Commit 9ec9808a authored by sjf1256754123's avatar sjf1256754123

初始化

parents
Pipeline #116 canceled with stages
unpackage/
unpackage/dist/dev/mp-weixin/project.config.json
unpackage/dist/dev/mp-weixin/personModule/screen/index.wxml
unpackage/dist/dev/mp-weixin/personModule/notice/index.wxml
<script>
import Vue from 'vue'
export default {
onLaunch: function() {
uni.getSystemInfo({
success: function(e) {
// #ifndef MP
Vue.prototype.StatusBar = e.statusBarHeight;
if (e.platform == 'android') {
Vue.prototype.CustomBar = e.statusBarHeight + 50;
} else {
Vue.prototype.CustomBar = e.statusBarHeight + 45;
};
// #endif
// #ifdef MP-WEIXIN
Vue.prototype.StatusBar = e.statusBarHeight;
let custom = wx.getMenuButtonBoundingClientRect();
Vue.prototype.Custom = custom;
Vue.prototype.CustomBar = custom.bottom + custom.top - e.statusBarHeight;
// #endif
// #ifdef MP-ALIPAY
Vue.prototype.StatusBar = e.statusBarHeight;
Vue.prototype.CustomBar = e.statusBarHeight + e.titleBarHeight;
// #endif
}
})
Vue.prototype.ColorList = [{
title: '嫣红',
name: 'red',
color: '#e54d42'
},
{
title: '桔橙',
name: 'orange',
color: '#f37b1d'
},
{
title: '明黄',
name: 'yellow',
color: '#fbbd08'
},
{
title: '橄榄',
name: 'olive',
color: '#8dc63f'
},
{
title: '森绿',
name: 'green',
color: '#39b54a'
},
{
title: '天青',
name: 'cyan',
color: '#1cbbb4'
},
{
title: '海蓝',
name: 'blue',
color: '#0081ff'
},
{
title: '姹紫',
name: 'purple',
color: '#6739b6'
},
{
title: '木槿',
name: 'mauve',
color: '#9c26b0'
},
{
title: '桃粉',
name: 'pink',
color: '#e03997'
},
{
title: '棕褐',
name: 'brown',
color: '#a5673f'
},
{
title: '玄灰',
name: 'grey',
color: '#8799a3'
},
{
title: '草灰',
name: 'gray',
color: '#aaaaaa'
},
{
title: '墨黑',
name: 'black',
color: '#333333'
},
{
title: '雅白',
name: 'white',
color: '#ffffff'
},
]
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
</script>
<style>
@import "colorui/main.css";
@import "colorui/icon.css";
page{
height: 100%;
}
.nav-list {
display: flex;
flex-wrap: wrap;
padding: 0px 40upx 0px;
justify-content: space-between;
}
.nav-li {
padding: 30upx;
border-radius: 12upx;
width: 45%;
margin: 0 2.5% 40upx;
background-image: url(https://cdn.nlark.com/yuque/0/2019/png/280374/1552996358352-assets/web-upload/cc3b1807-c684-4b83-8f80-80e5b8a6b975.png);
background-size: cover;
background-position: center;
position: relative;
z-index: 1;
}
.nav-li::after {
content: "";
position: absolute;
z-index: -1;
background-color: inherit;
width: 100%;
height: 100%;
left: 0;
bottom: -10%;
border-radius: 10upx;
opacity: 0.2;
transform: scale(0.9, 0.9);
}
.nav-li.cur {
color: #fff;
background: rgb(94, 185, 94);
box-shadow: 4upx 4upx 6upx rgba(94, 185, 94, 0.4);
}
.nav-title {
font-size: 32upx;
font-weight: 300;
}
.nav-title::first-letter {
font-size: 40upx;
margin-right: 4upx;
}
.nav-name {
font-size: 28upx;
text-transform: Capitalize;
margin-top: 20upx;
position: relative;
}
.nav-name::before {
content: "";
position: absolute;
display: block;
width: 40upx;
height: 6upx;
background: #fff;
bottom: 0;
right: 0;
opacity: 0.5;
}
.nav-name::after {
content: "";
position: absolute;
display: block;
width: 100upx;
height: 1px;
background: #fff;
bottom: 0;
right: 40upx;
opacity: 0.3;
}
.nav-name::first-letter {
font-weight: bold;
font-size: 36upx;
margin-right: 1px;
}
.nav-li text {
position: absolute;
right: 30upx;
top: 30upx;
font-size: 52upx;
width: 60upx;
height: 60upx;
text-align: center;
line-height: 60upx;
}
.text-light {
font-weight: 300;
}
@keyframes show {
0% {
transform: translateY(-50px);
}
60% {
transform: translateY(40upx);
}
100% {
transform: translateY(0px);
}
}
@-webkit-keyframes show {
0% {
transform: translateY(-50px);
}
60% {
transform: translateY(40upx);
}
100% {
transform: translateY(0px);
}
}
@font-face {
font-family: yticon;
font-weight: normal;
font-style: normal;
src: url('https://at.alicdn.com/t/font_1078604_w4kpxh0rafi.ttf') format('truetype');
}
.yticon {
font-family: "yticon" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-yiguoqi1:before {
content: "\e700";
}
.icon-iconfontshanchu1:before {
content: "\e619";
}
.icon-iconfontweixin:before {
content: "\e611";
}
.icon-alipay:before {
content: "\e636";
}
.icon-shang:before {
content: "\e624";
}
.icon-shouye:before {
content: "\e626";
}
.icon-shanchu4:before {
content: "\e622";
}
.icon-xiaoxi:before {
content: "\e618";
}
.icon-jiantour-copy:before {
content: "\e600";
}
.icon-fenxiang2:before {
content: "\e61e";
}
.icon-pingjia:before {
content: "\e67b";
}
.icon-daifukuan:before {
content: "\e68f";
}
.icon-pinglun-copy:before {
content: "\e612";
}
.icon-dianhua-copy:before {
content: "\e621";
}
.icon-shoucang:before {
content: "\e645";
}
.icon-xuanzhong2:before {
content: "\e62f";
}
.icon-gouwuche_:before {
content: "\e630";
}
.icon-icon-test:before {
content: "\e60c";
}
.icon-icon-test1:before {
content: "\e632";
}
.icon-bianji:before {
content: "\e646";
}
.icon-jiazailoading-A:before {
content: "\e8fc";
}
.icon-zuoshang:before {
content: "\e613";
}
.icon-jia2:before {
content: "\e60a";
}
.icon-huifu:before {
content: "\e68b";
}
.icon-sousuo:before {
content: "\e7ce";
}
.icon-arrow-fine-up:before {
content: "\e601";
}
.icon-hot:before {
content: "\e60e";
}
.icon-lishijilu:before {
content: "\e6b9";
}
.icon-zhengxinchaxun-zhifubaoceping-:before {
content: "\e616";
}
.icon-naozhong:before {
content: "\e64a";
}
.icon-xiatubiao--copy:before {
content: "\e608";
}
.icon-shoucang_xuanzhongzhuangtai:before {
content: "\e6a9";
}
.icon-jia1:before {
content: "\e61c";
}
.icon-bangzhu1:before {
content: "\e63d";
}
.icon-arrow-left-bottom:before {
content: "\e602";
}
.icon-arrow-right-bottom:before {
content: "\e603";
}
.icon-arrow-left-top:before {
content: "\e604";
}
.icon-icon--:before {
content: "\e744";
}
.icon-zuojiantou-up:before {
content: "\e605";
}
.icon-xia:before {
content: "\e62d";
}
.icon--jianhao:before {
content: "\e60b";
}
.icon-weixinzhifu:before {
content: "\e61a";
}
.icon-comment:before {
content: "\e64f";
}
.icon-weixin:before {
content: "\e61f";
}
.icon-fenlei1:before {
content: "\e620";
}
.icon-erjiye-yucunkuan:before {
content: "\e623";
}
.icon-Group-:before {
content: "\e688";
}
.icon-you:before {
content: "\e606";
}
.icon-forward:before {
content: "\e607";
}
.icon-tuijian:before {
content: "\e610";
}
.icon-bangzhu:before {
content: "\e679";
}
.icon-share:before {
content: "\e656";
}
.icon-yiguoqi:before {
content: "\e997";
}
.icon-shezhi1:before {
content: "\e61d";
}
.icon-fork:before {
content: "\e61b";
}
.icon-kafei:before {
content: "\e66a";
}
.icon-iLinkapp-:before {
content: "\e654";
}
.icon-saomiao:before {
content: "\e60d";
}
.icon-shezhi:before {
content: "\e60f";
}
.icon-shouhoutuikuan:before {
content: "\e631";
}
.icon-gouwuche:before {
content: "\e609";
}
.icon-dizhi:before {
content: "\e614";
}
.icon-fenlei:before {
content: "\e706";
}
.icon-xingxing:before {
content: "\e70b";
}
.icon-tuandui:before {
content: "\e633";
}
.icon-zuanshi:before {
content: "\e615";
}
.icon-zuo:before {
content: "\e63c";
}
.icon-shoucang2:before {
content: "\e62e";
}
.icon-shouhuodizhi:before {
content: "\e712";
}
.icon-yishouhuo:before {
content: "\e71a";
}
.icon-dianzan-ash:before {
content: "\e617";
}
</style>
/*
Animation 微动画
基于ColorUI组建库的动画模块 by 文晓港 2019年3月26日19:52:28
*/
/* css 滤镜 控制黑白底色gif的 */
.gif-black{
mix-blend-mode: screen;
}
.gif-white{
mix-blend-mode: multiply;
}
/* Animation css */
[class*=animation-] {
animation-duration: .5s;
animation-timing-function: ease-out;
animation-fill-mode: both
}
.animation-fade {
animation-name: fade;
animation-duration: .8s;
animation-timing-function: linear
}
.animation-scale-up {
animation-name: scale-up
}
.animation-scale-down {
animation-name: scale-down
}
.animation-slide-top {
animation-name: slide-top
}
.animation-slide-bottom {
animation-name: slide-bottom
}
.animation-slide-left {
animation-name: slide-left
}
.animation-slide-right {
animation-name: slide-right
}
.animation-shake {
animation-name: shake
}
.animation-reverse {
animation-direction: reverse
}
@keyframes fade {
0% {
opacity: 0
}
100% {
opacity: 1
}
}
@keyframes scale-up {
0% {
opacity: 0;
transform: scale(.2)
}
100% {
opacity: 1;
transform: scale(1)
}
}
@keyframes scale-down {
0% {
opacity: 0;
transform: scale(1.8)
}
100% {
opacity: 1;
transform: scale(1)
}
}
@keyframes slide-top {
0% {
opacity: 0;
transform: translateY(-100%)
}
100% {
opacity: 1;
transform: translateY(0)
}
}
@keyframes slide-bottom {
0% {
opacity: 0;
transform: translateY(100%)
}
100% {
opacity: 1;
transform: translateY(0)
}
}
@keyframes shake {
0%,
100% {
transform: translateX(0)
}
10% {
transform: translateX(-9px)
}
20% {
transform: translateX(8px)
}
30% {
transform: translateX(-7px)
}
40% {
transform: translateX(6px)
}
50% {
transform: translateX(-5px)
}
60% {
transform: translateX(4px)
}
70% {
transform: translateX(-3px)
}
80% {
transform: translateX(2px)
}
90% {
transform: translateX(-1px)
}
}
@keyframes slide-left {
0% {
opacity: 0;
transform: translateX(-100%)
}
100% {
opacity: 1;
transform: translateX(0)
}
}
@keyframes slide-right {
0% {
opacity: 0;
transform: translateX(100%)
}
100% {
opacity: 1;
transform: translateX(0)
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
<template>
<view class="content solid-bottom">
<view class="mix-list-cell" :class="border" @click="eventClick" hover-class="cell-hover" :hover-stay-time="50">
<text v-if="icon" class="cell-icon yticon" :style="[{color: iconColor,}]" :class="icon"></text>
<text v-if="cuIcon" class="cell-icon" :class="'cuIcon-' + cuIcon" :style="'color:'+color"></text>
<text class="cell-tit clamp margin-left-xs">{{title}}</text>
<text v-if="tips" class="cell-tip margin-right-xs">{{tips}}</text>
<text class="cell-more yticon" :class="typeList[navigateType]"></text>
</view>
</view>
</template>
<script>
/**
* 简单封装了下, 应用范围比较狭窄,可以在此基础上进行扩展使用
* 比如加入image, iconSize可控等
*/
export default {
data() {
return {
typeList: {
left: 'icon-zuo',
right: 'icon-you',
up: 'icon-shang',
down: 'icon-xia'
},
}
},
props: {
icon: {
type: String,
default: ''
},
cuIcon: {
type: String,
default: ''
},
color: {
type: String,
default: ''
},
title: {
type: String,
default: '标题'
},
tips: {
type: String,
default: ''
},
navigateType: {
type: String,
default: 'right'
},
border: {
type: String,
default: 'b-b'
},
hoverClass: {
type: String,
default: 'cell-hover'
},
iconColor: {
type: String,
default: '#333'
}
},
methods: {
eventClick(){
this.$emit('eventClick');
}
},
}
</script>
<style lang='scss'>
.icon .mix-list-cell.b-b:after{
left: 90upx;
}
.mix-list-cell{
display:flex;
align-items:baseline;
padding: 16upx 30upx;
line-height:60upx;
position:relative;
&.cell-hover{
background:#fafafa;
}
&.b-b:after{
left: 30upx;
}
.cell-icon{
align-self:center;
width:56upx;
max-height:60upx;
font-size:44upx;
}
.cell-more{
align-self: center;
font-size:30upx;
color: #606266;
/* margin-left:$uni-spacing-row-sm; */
}
.cell-tit{
flex: 1;
font-size: 32upx;
color: #303133;
margin-right:10upx;
}
.cell-tip{
font-size: 30upx;
color: #909399;
}
}
</style>
<template>
<div class="mix-load-more" @click="loading">
<image
ref="loadingIcon"
class="mix-load-more__icon"
src="/static/loading.gif"
v-if="status == 1"
>
</image>
<text class="mix-load-more__text" :class="{'mix-load-more__text--disabled': status===2}">{{text[status]}}</text>
</div>
</template>
<script>
export default {
name: "mix-load-more",
props: {
status: {
//0加载前,1加载中,2没有更多了
type: Number,
default: 0
},
text: {
type: Array,
default () {
return [
'上拉显示更多',
'正在加载..',
'我也是有底线的~'
];
}
}
},
methods: {
},
}
</script>
<style>
.mix-load-more {
flex-direction: row;
justify-content: center;
align-items: center;
height: 60upx;
}
.mix-load-more__icon {
width: 36upx;
height: 36upx;
margin-right: 12upx;
}
.mix-load-more__text {
font-size: 28upx;
color: #aaa;
}
.mix-load-more__text--disabled {
font-size: 24upx;
color: #bbb;
}
</style>
<template>
<view class="mix-load-more">
<image
class="mix-load-icon"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUJCRjNGOEQ1RDNBMTFFOUFERjY5MEU0MTg5MjY0NDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUJCRjNGOEU1RDNBMTFFOUFERjY5MEU0MTg5MjY0NDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QkJGM0Y4QjVEM0ExMUU5QURGNjkwRTQxODkyNjQ0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QkJGM0Y4QzVEM0ExMUU5QURGNjkwRTQxODkyNjQ0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pkf/QQsAAAHYSURBVHjavFfRcYJAEOVu8h87SFJBSAUJNGCsIKQCsQK1AkkHpAKwAaUE7YB0kFRg3prFcWAPTziyM+uJHPvuvV32TuVZ2na79TG8wWkc8Ui2g3/z+BkEwc4mnrIAXGCYMpiN0SISLGDZCRiArxhW8Huvm5XwGRaQSzd1C8usB6jHz2aINbdijIkp59KlpWD+bmTMTNtA13AK8IRAipy+82/rlucijt1kzDnNWgBjAJUXCpHkTeBjw5RJlfMT8GazKZVSd8JkKpDkGl2xgJgLs1FwiPVwkppkcAVKxs/MpIKrJD8CHw6HWJK3C2gNXMr79AhMHQlsb4UJsYNqlmKMCJMYRwa2ZV9UjiGxjjRk9oUbucN3uBGLMLWhB+8cAjdiUWo1Ph4FiZwBG2L52vsHg7Q/9WvK8d6w9zozqJrUrzXvnw0pXAJDbmoaAXz5dxksboBOOXiuzaW+nToGLzAU57uTBDDmhj+Yaaq6evLZVoMCS8mv5OZdZhCz2RZpH/4YhDGzNrFLwDxznXMlHH3mF/ou+b5vd+t72LM6Q1ufqy2YC69pUHTKsdBpJnjNvizjvHQuLgE8D8OQCmppeM/PrXAidcuftogPDiPaTmlB1ANYoavsV4ABAGz+xJ8bzHJJAAAAAElFTkSuQmCC"
v-show="status === 1"
>
</image>
<text class="mix-load-text">{{text[status]}}</text>
</view>
</template>
<script>
export default {
name: "mix-load-more",
props: {
status: {
//0加载前,1加载中,2没有更多了
type: Number,
default: 0
},
text: {
type: Array,
default () {
return [
'上拉显示更多',
'正在加载...',
'没有更多数据了'
];
}
}
}
}
</script>
<style>
.mix-load-more{
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
height: 90upx;
padding-top: 10upx;
}
.mix-load-icon{
display: block;
width: 36upx;
height: 36upx;
margin-right: 12upx;
animation: load 1.2s cubic-bezier(.37,1.08,.7,.74) infinite;
}
.mix-load-text{
font-size: 28upx;
color: #888;
}
@-webkit-keyframes load {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
</style>
\ No newline at end of file
<template>
<!-- loading 加载 -->
<view class="mix-loading-content">
<view class="mix-loading-wrapper">
<image
class="mix-loading-icon"
src="data:image/png;base64,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">
</image>
</view>
</view>
</template>
<script>
export default {
props: {
top: {
//距离顶部距离,单位upx
type: Number,
default: 0
},
},
data() {
return {
};
},
methods: {
}
}
</script>
<style>
.mix-loading-content{
display:flex;
justify-content: center;
align-items: center;
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-color: transparent;
}
.mix-loading-wrapper{
display: flex;
justify-content: center;
align-items: center;
animation: loading .5s ease-in infinite both alternate;
}
.mix-loading-icon{
width: 80upx;
height: 80upx;
transition: .3s;
}
@keyframes loading {
0% {
transform: translateY(-20upx) scaleX(1);
}
100% {
transform: translateY(4upx) scaleX(1.3);
}
}
</style>
<template>
<!-- #ifdef H5 -->
<view
class="mix-refresh-content"
:style="{
transform: 'translateY('+ pageDeviation +'px)',
transition: pageTransition + 's',
height: 'calc(100% - ' + pageTop + 'px)',
maxHeight: 'calc(100% - ' + pageTop + 'px)'
}"
@touchstart="pageTouchstart"
@touchmove="pageTouchmove"
@touchend="pageTouchend"
>
<!-- #endif -->
<!-- #ifndef H5 -->
<view
class="mix-refresh-content"
:style="{
transform: 'translateY('+ pageDeviation +'px)',
transition: pageTransition + 's',
height: 'calc(100vh - ' + pageTop + 'px)',
maxHeight: 'calc(100vh - ' + pageTop + 'px)'
}"
@touchstart="pageTouchstart"
@touchmove="pageTouchmove"
@touchend="pageTouchend"
>
<!-- #endif -->
<!-- 下拉刷新 -->
<view class="mix-loading-wrapper">
<image
class="mix-loading-icon"
:class="{active: refreshing, ready: refreshReady}"
src="data:image/png;base64,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">
</image>
</view>
<slot></slot>
</view>
</template>
<script>
let startY, moveY, windowHeight = 500, platform;
let timeDiff = 0;
let touchending;
export default {
props: {
top: {
//距离顶部距离,单位upx
type: Number,
default: 0
},
},
data() {
return {
pageDeviation: 0, //下偏移量
pageTransition: 0, //回弹过渡时间
refreshReady: false, //进入刷新准备状态
refreshing: false, // 进入刷新状态
};
},
computed: {
pageTop(){
return uni.upx2px(this.top);
}
},
created(){
uni.getSystemInfo({
success: function(e) {
platform = e.platform;
windowHeight = e.windowHeight;
}
})
},
methods: {
pageTouchstart(e){
touchending = false;
this.pageTransition = 0;
startY = e.touches[0].pageY;
},
pageTouchmove(e){
if(touchending){
return;
}
moveY = (e.touches[0].pageY - startY) * 0.4;
if(moveY >= 0){
this.pageDeviation = moveY;
this.$emit('setEnableScroll', false);
}
if(moveY >= 50 && this.refreshReady === false){
this.refreshReady = true;
}else if(moveY < 50 && this.refreshReady === true){
this.refreshReady = false;
}
if(platform === 'ios' && e.touches[0].pageY > windowHeight + 10){
this.pageTouchend();
}
},
pageTouchend(){
touchending = true;
if(moveY === 0){
return;
}
this.pageTransition = 0.3;
if(moveY >= 50){
this.startPulldownRefresh();
}else{
this.pageDeviation = 0;
}
if(this.refreshReady === true){
this.refreshReady = false;
}
//修复下拉一点回弹后页面无法滚动的bug
this.$emit('setEnableScroll', true);
startY = moveY = 0;
},
//开启下拉刷新
startPulldownRefresh(){
if(+new Date() - timeDiff < 100){
return;
}
timeDiff = +new Date();
this.refreshing = true;
this.pageDeviation = uni.upx2px(90);
this.$emit('refresh');
},
//结束下拉刷新
endPulldownRefresh(){
this.refreshing = false;
this.pageDeviation = uni.upx2px(0);
//this.$emit('setEnableScroll', true);
},
}
}
</script>
<style>
.mix-refresh-content{
display: flex;
flex-direction: column;
position: relative;
}
/* 下拉刷新部分 */
.mix-loading-wrapper{
position: absolute;
left: 0;
top: 0;
transform: translateY(-100%);
display: flex;
justify-content: center;
align-items: center;
width: 100%;
}
.mix-loading-icon{
width: 70upx;
height: 70upx;
transition: .3s;
}
.mix-loading-icon.ready{
transform: scaleX(1.3);
}
.mix-loading-icon.active{
animation: loading .5s ease-in infinite both alternate;
}
@keyframes loading {
0% {
transform: translateY(-20upx) scaleX(1);
}
100% {
transform: translateY(4upx) scaleX(1.3);
}
}
</style>
This diff is collapsed.
<template name="swiper-part">
<view>
<swiper class="screen-swiper" :class="dotStyle?'square-dot':'round-dot'" indicator-active-color="rgb(0,153,255)" :indicator-dots="true" :circular="true"
:autoplay="true" interval="5000" duration="500">
<swiper-item v-for="(item,index) in swiperList" :key="index">
<image :src="item.url" mode="aspectFill" v-if="item.type=='image'"></image>
<video :src="item.url" autoplay loop muted :show-play-btn="false" :controls="false" objectFit="cover" v-if="item.type=='video'"></video>
</swiper-item>
</swiper>
</view>
</template>
<script>
export default {
name:"swiper-part",
props:["swiperList"],
data() {
return {
cardCur: 0,
dotStyle: false,
towerStart: 0,
direction: ''
};
},
onLoad() {
this.TowerSwiper('swiperList');
// 初始化towerSwiper 传已有的数组名即可
},
methods: {
DotStyle(e) {
this.dotStyle = e.detail.value
},
// cardSwiper
cardSwiper(e) {
this.cardCur = e.detail.current
},
// towerSwiper
// 初始化towerSwiper
TowerSwiper(name) {
let list = this[name];
for (let i = 0; i < list.length; i++) {
list[i].zIndex = parseInt(list.length / 2) + 1 - Math.abs(i - parseInt(list.length / 2))
list[i].mLeft = i - parseInt(list.length / 2)
}
this.swiperList = list
},
// towerSwiper触摸开始
TowerStart(e) {
this.towerStart = e.touches[0].pageX
},
// towerSwiper计算方向
TowerMove(e) {
this.direction = e.touches[0].pageX - this.towerStart > 0 ? 'right' : 'left'
},
// towerSwiper计算滚动
TowerEnd(e) {
let direction = this.direction;
let list = this.swiperList;
if (direction == 'right') {
let mLeft = list[0].mLeft;
let zIndex = list[0].zIndex;
for (let i = 1; i < this.swiperList.length; i++) {
this.swiperList[i - 1].mLeft = this.swiperList[i].mLeft
this.swiperList[i - 1].zIndex = this.swiperList[i].zIndex
}
this.swiperList[list.length - 1].mLeft = mLeft;
this.swiperList[list.length - 1].zIndex = zIndex;
} else {
let mLeft = list[list.length - 1].mLeft;
let zIndex = list[list.length - 1].zIndex;
for (let i = this.swiperList.length - 1; i > 0; i--) {
this.swiperList[i].mLeft = this.swiperList[i - 1].mLeft
this.swiperList[i].zIndex = this.swiperList[i - 1].zIndex
}
this.swiperList[0].mLeft = mLeft;
this.swiperList[0].zIndex = zIndex;
}
this.direction = ""
this.swiperList = this.swiperList
},
}
}
</script>
<style>
.tower-swiper .tower-item {
transform: scale(calc(0.5 + var(--index) / 10));
margin-left: calc(var(--left) * 100upx - 150upx);
z-index: var(--index);
}
uni-swiper .uni-swiper-dot-active {
background-color: rgb(0,153,255) !important;
}
</style>
<template>
<view :class="{ 'uni-collapse-cell--disabled': disabled,'uni-collapse-cell--notdisabled': !disabled, 'uni-collapse-cell--open': isOpen,'uni-collapse-cell--hide':!isOpen }" class="uni-collapse-cell">
<view class="uni-collapse-cell__title" @click="onClick">
<image v-if="thumb" :src="thumb" class="uni-collapse-cell__title-img" />
<span v-if="required" style="color:red;display: inline-block; vertical-align:inherit;margin-right:4upx">*</span>
<text class="uni-collapse-cell__title-text">
{{ title }}
</text>
<!-- #ifdef MP-ALIPAY -->
<view :class="{ 'uni-collapse-cell__title-arrow-active': isOpen, 'uni-collapse-cell--animation': showAnimation === true }" class="uni-collapse-cell__title-arrow">
<uni-icons color="#bbb" size="20" type="arrowdown" />
</view>
<!-- #endif -->
<span v-show="tips">符合筛查标准</span>
<!-- #ifndef MP-ALIPAY -->
<uni-icons :class="{ 'uni-collapse-cell__title-arrow-active': isOpen, 'uni-collapse-cell--animation': showAnimation === true }" class="uni-collapse-cell__title-arrow" color="#bbb" size="20" type="arrowdown" />
<!-- #endif -->
</view>
<view :class="{'uni-collapse-cell__content--hide':!isOpen}" class="uni-collapse-cell__content">
<view :class="{ 'uni-collapse-cell--animation': showAnimation === true }" class="uni-collapse-cell__wrapper" :style="{'transform':isOpen?'translateY(0)':'translateY(-50%)','-webkit-transform':isOpen?'translateY(0)':'translateY(-50%)'}">
<slot />
</view>
</view>
</view>
</template>
<script>
import uniIcons from '../uni-icons/uni-icons.vue'
export default {
name: 'UniCollapseItem',
components: {
uniIcons
},
props: {
title: {
// 列表标题
type: String,
default: ''
},
name: {
// 唯一标识符
type: [Number, String],
default: 0
},
tips: {
type: Boolean,
default: false
},
disabled: {
// 是否禁用
type: Boolean,
default: false
},
showAnimation: {
// 是否显示动画
type: Boolean,
default: false
},
open: {
// 是否展开
type: Boolean,
default: false
},
required: {
// 是否必选
type: Boolean,
default: false
},
thumb: {
// 缩略图
type: String,
default: ''
}
},
data() {
return {
isOpen: false
}
},
watch: {
open(val) {
this.isOpen = val
}
},
inject: ['collapse'],
created() {
this.isOpen = this.open
this.nameSync = this.name ? this.name : this.collapse.childrens.length
this.collapse.childrens.push(this)
if (String(this.collapse.accordion) === 'true') {
if (this.isOpen) {
let lastEl = this.collapse.childrens[this.collapse.childrens.length - 2]
if (lastEl) {
this.collapse.childrens[this.collapse.childrens.length - 2].isOpen = false
}
}
}
},
methods: {
onClick() {
if (this.disabled) {
return
}
if (String(this.collapse.accordion) === 'true') {
this.collapse.childrens.forEach(vm => {
if (vm === this) {
return
}
vm.isOpen = false
})
}
this.isOpen = !this.isOpen
this.collapse.onChange && this.collapse.onChange()
this.$forceUpdate()
}
}
}
</script>
<style scoped>
.uni-collapse-cell {
flex-direction: column;
}
.uni-collapse-cell--hide{
background-color: #ffffff;
}
.uni-collapse-cell--hover {
background-color: #ffffff;
}
.uni-collapse-cell--open{
background-color: #ffffff;
}
.uni-collapse-cell--open .uni-collapse-cell__title{
font-weight: bold;
}
.uni-collapse-cell--disabled {
background-color: #ffffff;
/* opacity: 0.3; */
}
.uni-collapse-cell--animation {
/* transition: transform 0.3s ease;
*/
transition-property: transform;
transition-duration: 0.3s;
transition-timing-function: ease;
}
.uni-collapse-cell__title {
padding: 20upx 30upx;
position: relative;
display: flex;
width: 100%;
color: #000;
box-sizing: border-box;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.uni-collapse-cell__title:after {
content: "";
position: absolute;
bottom: 0;
left: 0;
right: 0;
border-bottom: 1px solid #ddd;
-webkit-transform: scaleY(.5);
-webkit-transform-origin: 0 100%;
}
.exclusion .uni-collapse-cell__title:after, .questionnaire .uni-collapse-cell__title:after{
border-bottom:0 !important;
}
/* .uni-collapse-cell__title:active {
background-color: #ffffff;
} */
.uni-collapse-cell__title-img {
height: 52rpx;
width: 52rpx;
margin-right: 10px;
}
.uni-collapse-cell__title-arrow {
width: 40upx;
height: 20px;
transform: rotate(0deg);
transform-origin: center center;
}
.uni-collapse-cell__title-arrow-active {
transform: rotate(180deg);
}
.uni-collapse-cell__title-text {
flex: 1;
font-size: 30rpx;
white-space: nowrap;
color: inherit;
overflow: hidden;
text-overflow: ellipsis;
}
.uni-collapse-cell__content {
overflow: hidden;
font-size: 28upx;
}
.uni-collapse-cell__wrapper {
display: flex;
flex-direction: column;
padding-bottom: 30upx;
}
.uni-collapse-cell__content--hide {
height: 0px;
line-height: 0px;
}
</style>
\ No newline at end of file
<template>
<view class="uni-collapse">
<slot />
</view>
</template>
<script>
export default {
name: 'UniCollapse',
props: {
accordion: {
// 是否开启手风琴效果
type: [Boolean, String],
default: true
}
},
data() {
return {}
},
provide() {
return {
collapse: this
}
},
created() {
this.childrens = []
},
methods: {
onChange() {
let activeItem = []
this.childrens.forEach((vm, index) => {
if (vm.isOpen) {
activeItem.push(vm.nameSync)
}
})
this.$emit('change', activeItem)
}
}
}
</script>
<style scoped>
.uni-collapse {
width: 100%;
display: flex;
flex-direction: column;
}
</style>
\ No newline at end of file
export default {
'contact': '\ue100',
'person': '\ue101',
'personadd': '\ue102',
'contact-filled': '\ue130',
'person-filled': '\ue131',
'personadd-filled': '\ue132',
'phone': '\ue200',
'email': '\ue201',
'chatbubble': '\ue202',
'chatboxes': '\ue203',
'phone-filled': '\ue230',
'email-filled': '\ue231',
'chatbubble-filled': '\ue232',
'chatboxes-filled': '\ue233',
'weibo': '\ue260',
'weixin': '\ue261',
'pengyouquan': '\ue262',
'chat': '\ue263',
'qq': '\ue264',
'videocam': '\ue300',
'camera': '\ue301',
'mic': '\ue302',
'location': '\ue303',
'mic-filled': '\ue332',
'speech': '\ue332',
'location-filled': '\ue333',
'micoff': '\ue360',
'image': '\ue363',
'map': '\ue364',
'compose': '\ue400',
'trash': '\ue401',
'upload': '\ue402',
'download': '\ue403',
'close': '\ue404',
'redo': '\ue405',
'undo': '\ue406',
'refresh': '\ue407',
'star': '\ue408',
'plus': '\ue409',
'minus': '\ue410',
'circle': '\ue411',
'checkbox': '\ue411',
'close-filled': '\ue434',
'clear': '\ue434',
'refresh-filled': '\ue437',
'star-filled': '\ue438',
'plus-filled': '\ue439',
'minus-filled': '\ue440',
'circle-filled': '\ue441',
'checkbox-filled': '\ue442',
'closeempty': '\ue460',
'refreshempty': '\ue461',
'reload': '\ue462',
'starhalf': '\ue463',
'spinner': '\ue464',
'spinner-cycle': '\ue465',
'search': '\ue466',
'plusempty': '\ue468',
'forward': '\ue470',
'back': '\ue471',
'left-nav': '\ue471',
'checkmarkempty': '\ue472',
'home': '\ue500',
'navigate': '\ue501',
'gear': '\ue502',
'paperplane': '\ue503',
'info': '\ue504',
'help': '\ue505',
'locked': '\ue506',
'more': '\ue507',
'flag': '\ue508',
'home-filled': '\ue530',
'gear-filled': '\ue532',
'info-filled': '\ue534',
'help-filled': '\ue535',
'more-filled': '\ue537',
'settings': '\ue560',
'list': '\ue562',
'bars': '\ue563',
'loop': '\ue565',
'paperclip': '\ue567',
'eye': '\ue568',
'arrowup': '\ue580',
'arrowdown': '\ue581',
'arrowleft': '\ue582',
'arrowright': '\ue583',
'arrowthinup': '\ue584',
'arrowthindown': '\ue585',
'arrowthinleft': '\ue586',
'arrowthinright': '\ue587',
'pulldown': '\ue588',
'closefill': '\ue589',
'sound': '\ue590',
'scan': '\ue612'
}
This diff is collapsed.
import Request from './request'
const test = new Request()
test.setConfig((config) => { /* 设置全局配置 */
config.baseUrl = 'http://www.aaa.cn'
config.header = {
...config.header,
a: 1,
b: 2
}
// config.custom = { auth: true }
return config
})
test.interceptor.request((config, cancel) => { /* 请求之前拦截器 */
config.header = {
...config.header,
a: 3
}
// if (config.custom.auth) {
// config.header.token = 'token'
// }
/*
if (!token) { // 如果token不存在,调用cancel 会取消本次请求,但是该函数的catch() 仍会执行
cancel('token 不存在') // 接收一个参数,会传给catch((err) => {}) err.errMsg === 'token 不存在'
}
*/
return config
})
/**
* 自定义验证器,如果返回true 则进入响应拦截器的响应成功函数(resolve),否则进入响应拦截器的响应错误函数(reject)
* @param { Number } statusCode - 请求响应体statusCode(只读)
* @return { Boolean } 如果为true,则 resolve, 否则 reject
*/
test.validateStatus = (statusCode) => {
return statusCode === 200
}
test.interceptor.response((response) => { /* 请求之后拦截器 */
return response
}, (response) => { // 请求错误做点什么
return response
})
const http = new Request()
http.setConfig((config) => { /* 设置全局配置 */
config.baseUrl = 'http://www.bbb.cn' /* 根域名不同 */
config.header = {
...config.header,
a: 1,
b: 2
}
return config
})
/**
* 自定义验证器,如果返回true 则进入响应拦截器的响应成功函数(resolve),否则进入响应拦截器的响应错误函数(reject)
* @param { Number } statusCode - 请求响应体statusCode(只读)
* @return { Boolean } 如果为true,则 resolve, 否则 reject
*/
http.validateStatus = (statusCode) => {
return statusCode === 200
}
http.interceptor.request((config, cancel) => { /* 请求之前拦截器 */
config.header = {
...config.header,
b: 1
}
/*
if (!token) { // 如果token不存在,调用cancel 会取消本次请求,但是该函数的catch() 仍会执行
cancel('token 不存在') // 接收一个参数,会传给catch((err) => {}) err.errMsg === 'token 不存在'
}
*/
return config
})
http.interceptor.response((response) => { /* 请求之后拦截器 */
// if (response.data.code !== 200) { // 服务端返回的状态码不等于200,则reject()
// return Promise.reject(response)
// }
// if (response.config.custom.verification) { // 演示自定义参数的作用
// return response.data
// }
return response
}, (response) => { // 请求错误做点什么
return response
})
export {
http,
test
}
import Request, { config, requestConfig, response } from './request'
const test = new Request()
test.setConfig((config: config) => { /* 设置全局配置 */
config.baseUrl = 'http://www.aaa.cn'
config.header = {
a: 1,
b: 2
}
return config
})
test.interceptor.request((config: requestConfig, cancel: Function) => { /* 请求之前拦截器 */
config.header = {
...config.header,
a: 1
}
/*
if (!token) { // 如果token不存在,调用cancel 会取消本次请求,但是该函数的catch() 仍会执行
cancel('token 不存在') // 接收一个参数,会传给catch((err) => {}) err.errMsg === 'token 不存在'
}
*/
return config
})
test.interceptor.response((response: response) => { /* 请求之后拦截器 */
return response
}, (response: response) => { /* 对响应错误做点什么 */
return response
})
const http = new Request()
http.setConfig((config: config) => { /* 设置全局配置 */
config.baseUrl = 'http://www.bbb.cn' /* 根域名不同 */
config.header = {
a: 1,
b: 2
}
return config
})
http.interceptor.request((config: requestConfig, cancel: Function) => { /* 请求之前拦截器 */
config.header = {
...config.header,
b: 1
}
/*
if (!token) { // 如果token不存在,调用cancel 会取消本次请求,但是该函数的catch() 仍会执行
cancel('token 不存在') // 接收一个参数,会传给catch((err) => {}) err.errMsg === 'token 不存在'
}
*/
return config
})
http.interceptor.response((response: response) => { /* 请求之后拦截器 */
return response
}, (response: response) => { /* 对响应错误做点什么 */
return response
})
export {
http,
test
}
This diff is collapsed.
/**
* Request 1.0.5
* @Class Request
* @description luch-request 1.0.4 http请求插件
* @Author lu-ch
* @Date 2019-12-12
* @Email webwork.s@qq.com
* http://ext.dcloud.net.cn/plugin?id=392
*/
interface header { // header 接口
'content-type'?: string,
[propName: string]: any
}
interface config { // init 全局config接口
baseUrl: string,
header: header,
method: string,
dataType: string,
// #ifndef MP-ALIPAY || APP-PLUS
responseType: string,
// #endif
custom: object,
// #ifdef APP-PLUS
sslVerify: boolean,
// #endif
// #ifdef MP-ALIPAY
timeout: number
// #endif
}
interface interceptor { // init 拦截器接口
request: Function,
response: Function
}
interface options { // request 方法配置参数(public)
url: string,
dataType?: string,
data?: object,
params?: object,
header?: header,
method?: string,
responseType?: string,
custom?: anyObj,
// #ifdef APP-PLUS
sslVerify?: boolean,
// #endif
// #ifdef MP-ALIPAY
timeout?: number
// #endif
}
interface handleOptions { // get/post 方法配置参数(public)
header?: header,
params?: object,
dataType?: string,
responseType?: string
}
interface newOptions { // 定义新的配置接口
baseUrl: string
url: string,
dataType: string,
data: object,
params: object,
header: header,
method: string,
complete?: Function,
responseType: string,
custom: anyObj,
// #ifdef APP-PLUS
sslVerify: boolean,
// #endif
// #ifdef MP-ALIPAY
timeout: number
// #endif
}
interface requestCb { // 请求拦截器回调
(x: object, y: Function): object
}
interface responseCb { // 相应拦截器回调
(x: object): object
}
interface response { // 响应体 (public)
statusCode?: number,
config: Object,
errMsg: string,
[propName: string]: any
}
interface requestConfig { // 请求之前参数配置项 (public)
readonly baseUrl: string
url: string,
dataType: string,
data: object,
params: object,
header: header,
method: string,
readonly complete: Function,
responseType: string
}
interface params {
[propName: string]: any
}
interface anyObj {
[propName: string]: any
}
export default class Request {
config: config = {
baseUrl: '',
header: {
'content-type': 'application/json;charset=UTF-8'
},
method: 'GET',
dataType: 'json',
// #ifndef MP-ALIPAY || APP-PLUS
responseType: 'text',
// #endif
custom: {},
// #ifdef APP-PLUS
sslVerify: true,
// #endif
// #ifdef MP-ALIPAY
timeout: 30000
// #endif
}
static posUrl (url: string): boolean { /* 判断url是否为绝对路径 */
return /(http|https):\/\/([\w.]+\/?)\S*/.test(url)
}
static addQueryString (params: params): string {
let paramsData = ''
Object.keys(params).forEach(function (key) {
paramsData += key + '=' + encodeURIComponent(params[key]) + '&'
})
return paramsData.substring(0, paramsData.length - 1)
}
interceptor: interceptor = {
request: (f: requestCb) => {
if (f) {
this.requestBeforeFun = f
}
},
response: (cb: responseCb, ecb: responseCb) => {
if (cb && ecb) {
this.requestComFun = cb
this.requestComFail = ecb
}
}
}
private requestBeforeFun (config: object, cancel?: Function): object {
return config
}
private requestComFun (response: object): object {
return response
}
private requestComFail (response: object): object {
return response
}
/**
* 自定义验证器,如果返回true 则进入响应拦截器的响应成功函数(resolve),否则进入响应拦截器的响应错误函数(reject)
* @param { Number } statusCode - 请求响应体statusCode(只读)
* @return { Boolean } 如果为true,则 resolve, 否则 reject
*/
validateStatus (statusCode: Number) {
return statusCode === 200
}
set setConfig (f: Function) {
this.config = f(this.config)
}
async request (options: options) {
const _options: newOptions = {
baseUrl: this.config.baseUrl,
dataType: options.dataType || this.config.dataType,
url: options.url || '',
data: options.data || {},
params: options.params || {},
header: options.header || this.config.header,
method: options.method || this.config.method,
custom: { ...this.config.custom, ...(options.custom || {}) },
// #ifndef MP-ALIPAY || APP-PLUS
responseType: options.responseType || this.config.responseType,
// #endif
// #ifdef MP-ALIPAY
timeout: options.timeout || this.config.timeout,
// #endif
// #ifdef APP-PLUS
sslVerify: options.sslVerify === undefined ? this.config.sslVerify : options.sslVerify
// #endif
}
// @ts-ignore
return new Promise((resolve: Function, reject: Function) => {
let next: boolean = true
let handleRe: anyObj = {}
_options.complete = (response: response) => {
response.config = handleRe
if (this.validateStatus(response.statusCode)) { // 成功
resolve(this.requestComFun(response))
} else {
reject(this.requestComFail(response))
}
}
const cancel = (t = 'handle cancel', config = _options): void => {
const err = {
errMsg: t,
config: config
}
reject(err)
next = false
}
handleRe = { ...this.requestBeforeFun(_options, cancel) }
const _config: anyObj = { ...handleRe }
if (!next) return
let mergeUrl = Request.posUrl(_config.url) ? _config.url : (_config.baseUrl + _config.url)
if (JSON.stringify(_config.params) !== '{}') {
const paramsH = Request.addQueryString(_config.params)
mergeUrl += mergeUrl.indexOf('?') === -1 ? `?${paramsH}` : `&${paramsH}`
}
_config.url = mergeUrl
uni.request(_config)
})
}
get (url: string, options: handleOptions = {}) {
return this.request({
url,
method: 'GET',
...options
})
}
post (url: string, data: object = {}, options: handleOptions = {}) {
return this.request({
url,
data,
method: 'POST',
...options
})
}
// #ifndef MP-ALIPAY
put (url: string, data: object = {}, options: handleOptions = {}) {
return this.request({
url,
data,
method: 'PUT',
...options
})
}
// #endif
// #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU
delete (url: string, data: object = {}, options: handleOptions = {}) {
return this.request({
url,
data,
method: 'DELETE',
...options
})
}
// #endif
// #ifdef APP-PLUS || H5 || MP-WEIXIN
connect (url: string, data: object = {}, options: handleOptions = {}) {
return this.request({
url,
data,
method: 'CONNECT',
...options
})
}
// #endif
// #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU
head (url: string, data: object = {}, options: handleOptions = {}) {
return this.request({
url,
data,
method: 'HEAD',
...options
})
}
// #endif
// #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU
options (url: string, data: object = {}, options: handleOptions = {}) {
return this.request({
url,
data,
method: 'OPTIONS',
...options
})
}
// #endif
// #ifdef APP-PLUS || H5 || MP-WEIXIN
trace (url: string, data: object = {}, options: handleOptions = {}) {
return this.request({
url,
data,
method: 'TRACE',
...options
})
}
// #endif
upload (url: string, {
// #ifdef APP-PLUS
files,
// #endif
// #ifdef MP-ALIPAY
fileType,
// #endif
filePath,
name,
header,
formData,
custom
}: {
// #ifdef APP-PLUS
files?: string[],
// #endif
// #ifdef MP-ALIPAY
fileType: 'image' | 'video' | 'audio',
// #endif
filePath: string,
name: string,
header?: header,
formData?: any,
custom?: anyObj
}) {
// @ts-ignore
return new Promise((resolve, reject) => {
let next = true
let handleRe = {}
const globalHeader = { ...this.config.header }
delete globalHeader['content-type']
const pubConfig = {
baseUrl: this.config.baseUrl,
url,
// #ifdef APP-PLUS
files,
// #endif
// #ifdef MP-ALIPAY
fileType,
// #endif
filePath,
method: 'UPLOAD',
name,
header: header || globalHeader,
formData,
custom: { ...this.config.custom, ...(custom || {}) },
complete: (response) => {
response.config = handleRe
if (response.statusCode === 200) { // 成功
response = this.requestComFun(response)
resolve(response)
} else {
response = this.requestComFail(response)
reject(response)
}
}
}
const cancel = (t = 'handle cancel', config = pubConfig) => {
const err = {
errMsg: t,
config: config
}
reject(err)
next = false
}
handleRe = { ...this.requestBeforeFun(pubConfig, cancel) }
const _config: anyObj = { ...handleRe }
if (!next) return
delete _config.custom
_config.url = Request.posUrl(_config.url) ? _config.url : (_config.baseUrl + _config.url)
uni.uploadFile(_config)
})
}
}
export {
options,
handleOptions,
config,
requestConfig,
response
}
This diff is collapsed.
/**
* Request 1.0.5
* @Class Request
* @description luch-request 1.0.4 http请求插件
* @Author lu-ch
* @Date 2019-12-12
* @Email webwork.s@qq.com
* http://ext.dcloud.net.cn/plugin?id=392
*/
export default class Request {
config = {
baseUrl: '',
header: {
'content-type': 'application/json;charset=UTF-8'
},
method: 'GET',
dataType: 'json',
// #ifndef MP-ALIPAY || APP-PLUS
responseType: 'text',
// #endif
custom: {},
// #ifdef MP-ALIPAY
timeout: 30000,
// #endif
// #ifdef APP-PLUS
sslVerify: true
// #endif
}
static posUrl (url) { /* 判断url是否为绝对路径 */
return /(http|https):\/\/([\w.]+\/?)\S*/.test(url)
}
static addQueryString (params) {
let paramsData = ''
Object.keys(params).forEach(function (key) {
paramsData += key + '=' + encodeURIComponent(params[key]) + '&'
})
return paramsData.substring(0, paramsData.length - 1)
}
/**
* @property {Function} request 请求拦截器
* @property {Function} response 响应拦截器
* @type {{request: Request.interceptor.request, response: Request.interceptor.response}}
*/
interceptor = {
/**
* @param {Request~requestCallback} cb - 请求之前拦截,接收一个函数(config, cancel)=> {return config}。第一个参数为全局config,第二个参数为函数,调用则取消本次请求。
*/
request: (cb) => {
if (cb) {
this.requestBeforeFun = cb
}
},
/**
* @param {Request~responseCallback} cb 响应拦截器,对响应数据做点什么
* @param {Request~responseErrCallback} ecb 响应拦截器,对响应错误做点什么
*/
response: (cb, ecb) => {
if (cb && ecb) {
this.requestComFun = cb
this.requestComFail = ecb
}
}
}
requestBeforeFun (config) {
return config
}
requestComFun (response) {
return response
}
requestComFail (response) {
return response
}
/**
* 自定义验证器,如果返回true 则进入响应拦截器的响应成功函数(resolve),否则进入响应拦截器的响应错误函数(reject)
* @param { Number } statusCode - 请求响应体statusCode(只读)
* @return { Boolean } 如果为true,则 resolve, 否则 reject
*/
validateStatus (statusCode) {
return statusCode === 200
}
/**
* @Function
* @param {Request~setConfigCallback} f - 设置全局默认配置
*/
setConfig (f) {
this.config = f(this.config)
}
/**
* @Function
* @param {Object} options - 请求配置项
* @prop {String} options.url - 请求路径
* @prop {Object} options.data - 请求参数
* @prop {Object} [options.responseType = config.responseType] [text|arraybuffer] - 响应的数据类型
* @prop {Object} [options.dataType = config.dataType] - 如果设为 json,会尝试对返回的数据做一次 JSON.parse
* @prop {Object} [options.header = config.header] - 请求header
* @prop {Object} [options.method = config.method] - 请求方法
* @returns {Promise<unknown>}
*/
async request (options = {}) {
options.baseUrl = this.config.baseUrl
options.dataType = options.dataType || this.config.dataType
// #ifndef MP-ALIPAY || APP-PLUS
options.responseType = options.responseType || this.config.responseType
// #endif
// #ifdef MP-ALIPAY
options.timeout = options.timeout || this.config.timeout
// #endif
options.url = options.url || ''
options.data = options.data || {}
options.params = options.params || {}
options.header = options.header || this.config.header
options.method = options.method || this.config.method
options.custom = { ...this.config.custom, ...(options.custom || {}) }
// #ifdef APP-PLUS
options.sslVerify = options.sslVerify === undefined ? this.config.sslVerify : options.sslVerify
// #endif
return new Promise((resolve, reject) => {
let next = true
let handleRe = {}
options.complete = (response) => {
response.config = handleRe
if (this.validateStatus(response.statusCode)) { // 成功
response = this.requestComFun(response)
resolve(response)
} else {
response = this.requestComFail(response)
reject(response)
}
}
const cancel = (t = 'handle cancel', config = options) => {
const err = {
errMsg: t,
config: config
}
reject(err)
next = false
}
handleRe = { ...this.requestBeforeFun(options, cancel) }
const _config = { ...handleRe }
if (!next) return
delete _config.custom
let mergeUrl = Request.posUrl(_config.url) ? _config.url : (_config.baseUrl + _config.url)
if (JSON.stringify(_config.params) !== '{}') {
const paramsH = Request.addQueryString(_config.params)
mergeUrl += mergeUrl.indexOf('?') === -1 ? `?${paramsH}` : `&${paramsH}`
}
_config.url = mergeUrl
uni.request(_config)
})
}
get (url, options = {}) {
return this.request({
url,
method: 'GET',
...options
})
}
post (url, data, options = {}) {
return this.request({
url,
data,
method: 'POST',
...options
})
}
// #ifndef MP-ALIPAY
put (url, data, options = {}) {
return this.request({
url,
data,
method: 'PUT',
...options
})
}
// #endif
// #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU
delete (url, data, options = {}) {
return this.request({
url,
data,
method: 'DELETE',
...options
})
}
// #endif
// #ifdef APP-PLUS || H5 || MP-WEIXIN
connect (url, data, options = {}) {
return this.request({
url,
data,
method: 'CONNECT',
...options
})
}
// #endif
// #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU
head (url, data, options = {}) {
return this.request({
url,
data,
method: 'HEAD',
...options
})
}
// #endif
// #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU
options (url, data, options = {}) {
return this.request({
url,
data,
method: 'OPTIONS',
...options
})
}
// #endif
// #ifdef APP-PLUS || H5 || MP-WEIXIN
trace (url, data, options = {}) {
return this.request({
url,
data,
method: 'TRACE',
...options
})
}
// #endif
upload (url, {
// #ifdef APP-PLUS
files,
// #endif
// #ifdef MP-ALIPAY
fileType,
// #endif
filePath,
name,
header,
formData,
custom
}) {
return new Promise((resolve, reject) => {
let next = true
let handleRe = {}
const globalHeader = { ...this.config.header }
delete globalHeader['content-type']
const pubConfig = {
baseUrl: this.config.baseUrl,
url,
// #ifdef APP-PLUS
files,
// #endif
// #ifdef MP-ALIPAY
fileType,
// #endif
filePath,
method: 'UPLOAD',
name,
header: header || globalHeader,
formData,
custom: { ...this.config.custom, ...(custom || {}) },
complete: (response) => {
response.config = handleRe
if (response.statusCode === 200) { // 成功
response = this.requestComFun(response)
resolve(response)
} else {
response = this.requestComFail(response)
reject(response)
}
}
}
const cancel = (t = 'handle cancel', config = pubConfig) => {
const err = {
errMsg: t,
config: config
}
reject(err)
next = false
}
handleRe = { ...this.requestBeforeFun(pubConfig, cancel) }
const _config = { ...handleRe }
if (!next) return
delete _config.custom
_config.url = Request.posUrl(_config.url) ? _config.url : (_config.baseUrl + _config.url)
uni.uploadFile(_config)
})
}
}
/**
* setConfig回调
* @return {Object} - 返回操作后的config
* @callback Request~setConfigCallback
* @param {Object} config - 全局默认config
*/
/**
* 请求拦截器回调
* @return {Object} - 返回操作后的config
* @callback Request~requestCallback
* @param {Object} config - 全局config
* @param {Function} [cancel] - 取消请求钩子,调用会取消本次请求
*/
/**
* 响应拦截器回调
* @return {Object} - 返回操作后的response
* @callback Request~responseCallback
* @param {Object} response - 请求结果 response
*/
/**
* 响应错误拦截器回调
* @return {Object} - 返回操作后的response
* @callback Request~responseErrCallback
* @param {Object} response - 请求结果 response
*/
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
import Vue from 'vue'
import App from './App'
import store from './store'
// import('../mock/index') // 引入设置好基础的mock, 用于拦截请求
import Request from '@/utils/request';
const http = new Request()
Vue.prototype.$store = store
Vue.config.productionTip = false
Vue.prototype.$http = http
App.mpType = 'app'
const app = new Vue({
...App,
store
})
app.$mount()
This diff is collapsed.
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../browserslist/cli.js" "$@"
ret=$?
else
node "$basedir/../browserslist/cli.js" "$@"
ret=$?
fi
exit $ret
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
module.exports={"0":"51","1":"52","2":"53","3":"54","4":"55","5":"56","6":"57","7":"58","8":"65","9":"60",A:"10",B:"11",C:"12",D:"9",E:"8",F:"7",G:"4",H:"15",I:"16",J:"17",K:"18",L:"13",M:"6",N:"46",O:"79",P:"11.1",Q:"68",R:"12.1",S:"14",T:"5",U:"19",V:"20",W:"21",X:"22",Y:"23",Z:"24",a:"25",b:"26",c:"27",d:"28",e:"29",f:"30",g:"31",h:"32",i:"33",j:"34",k:"35",l:"36",m:"37",n:"38",o:"39",p:"40",q:"41",r:"42",s:"43",t:"44",u:"45",v:"66",w:"47",x:"48",y:"49",z:"50",AB:"64",BB:"62",CB:"63",DB:"11.5",EB:"61",FB:"3",GB:"67",HB:"4.2-4.3",IB:"69",JB:"70",KB:"71",LB:"72",MB:"73",NB:"74",OB:"59",PB:"80",QB:"10.1",RB:"76",SB:"3.2",TB:"9.0-9.2",UB:"78",VB:"82",WB:"83",XB:"3.1",YB:"77",ZB:"5.1",aB:"6.1",bB:"7.1",cB:"9.1",dB:"75",eB:"3.6",fB:"5.5",gB:"TP",hB:"9.5-9.6",iB:"10.0-10.1",jB:"10.5",kB:"10.6",lB:"3.5",mB:"11.6",nB:"4.0-4.1",oB:"2",pB:"5.0-5.1",qB:"6.0-6.1",rB:"7.0-7.1",sB:"8.1-8.4",tB:"81",uB:"9.3",vB:"10.0-10.2",wB:"10.3",xB:"11.0-11.2",yB:"11.3-11.4",zB:"12.0-12.1","0B":"12.2-12.4","1B":"13.0-13.1","2B":"13.2","3B":"13.3","4B":"all","5B":"2.1","6B":"2.2","7B":"2.3","8B":"4.1","9B":"4.4",AC:"4.4.3-4.4.4",BC:"12.12",CC:"5.0-5.4",DC:"6.2-6.4",EC:"7.2-7.4",FC:"8.2",GC:"9.2",HC:"1.2",IC:"7.12",JC:"2.5"};
module.exports={A:"ie",B:"edge",C:"firefox",D:"chrome",E:"safari",F:"opera",G:"ios_saf",H:"op_mini",I:"android",J:"bb",K:"op_mob",L:"and_chr",M:"and_ff",N:"ie_mob",O:"and_uc",P:"samsung",Q:"and_qq",R:"baidu",S:"kaios"};
This diff is collapsed.
module.exports={A:{A:{"1":"D A B","2":"M F E fB"},B:{"1":"C L S H I J K O PB"},C:{"2":"oB FB G T M F E D A B C L S H I J K U V W lB eB","132":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z OB EB BB CB AB v GB Q IB JB KB LB MB NB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 C L S H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z OB EB BB CB AB v GB Q IB JB KB LB MB NB dB RB YB UB O PB tB VB WB","2":"G T M F E D","16":"A B"},E:{"1":"G T M F E D A B C L ZB aB bB cB QB P R gB","2":"XB SB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z BB CB AB v","2":"D B C hB iB jB kB P DB mB R"},G:{"1":"E nB HB pB qB rB sB TB uB vB wB xB yB zB 0B 1B 2B 3B","16":"SB"},H:{"2":"4B"},I:{"1":"FB G RB 8B HB 9B AC","2":"5B 6B 7B"},J:{"1":"A","2":"F"},K:{"1":"N","2":"A B C P DB R"},L:{"1":"O"},M:{"132":"Q"},N:{"1":"A","2":"B"},O:{"1":"BC"},P:{"1":"G CC DC EC FC GC QB"},Q:{"1":"HC"},R:{"1":"IC"},S:{"132":"JC"}},B:6,C:"AAC audio file format"};
module.exports={A:{A:{"2":"M F E D A B fB"},B:{"1":"I J K O PB","2":"C L S H"},C:{"1":"6 7 8 9 OB EB BB CB AB v GB Q IB JB KB LB MB NB","2":"0 1 2 3 4 5 oB FB G T M F E D A B C L S H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z lB eB"},D:{"1":"v GB Q IB JB KB LB MB NB dB RB YB UB O PB tB VB WB","2":"0 1 2 3 4 5 6 7 8 9 G T M F E D A B C L S H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z OB EB BB CB AB"},E:{"1":"L R gB","2":"G T M F E D A B XB SB ZB aB bB cB QB","130":"C P"},F:{"1":"2 3 4 5 6 7 8 9 BB CB AB v","2":"0 1 D B C H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z hB iB jB kB P DB mB R"},G:{"1":"yB zB 0B 1B 2B 3B","2":"E SB nB HB pB qB rB sB TB uB vB wB xB"},H:{"2":"4B"},I:{"1":"RB","2":"FB G 5B 6B 7B 8B HB 9B AC"},J:{"2":"F A"},K:{"2":"A B C N P DB R"},L:{"1":"O"},M:{"1":"Q"},N:{"2":"A B"},O:{"2":"BC"},P:{"1":"GC QB","2":"G CC DC EC FC"},Q:{"2":"HC"},R:{"2":"IC"},S:{"2":"JC"}},B:1,C:"AbortController & AbortSignal"};
module.exports={A:{A:{"2":"M F E D A B fB"},B:{"1":"C L S H I J K","2":"O PB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 oB FB G T M F E D A B C L S H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z OB EB BB CB AB v GB Q IB JB KB LB MB NB lB eB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 G T M F E D A B C L S H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z OB EB BB CB AB v GB Q IB JB KB LB MB NB dB RB YB UB O PB tB VB WB"},E:{"2":"G T M F E D A B C L XB SB ZB aB bB cB QB P R gB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 D B C H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z BB CB AB v hB iB jB kB P DB mB R"},G:{"2":"E SB nB HB pB qB rB sB","132":"TB uB vB wB xB yB zB 0B 1B 2B 3B"},H:{"2":"4B"},I:{"2":"FB G RB 5B 6B 7B 8B HB 9B AC"},J:{"2":"F","132":"A"},K:{"2":"A B C N P DB","132":"R"},L:{"2":"O"},M:{"2":"Q"},N:{"2":"A B"},O:{"132":"BC"},P:{"2":"G CC DC EC FC GC QB"},Q:{"2":"HC"},R:{"2":"IC"},S:{"2":"JC"}},B:6,C:"AC-3 (Dolby Digital) and EC-3 (Dolby Digital Plus) codecs"};
module.exports={A:{A:{"2":"M F E D A B fB"},B:{"1":"O PB","2":"C L S H I J K"},C:{"2":"0 1 2 3 4 5 6 7 8 9 oB FB G T M F E D A B C L S H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z OB EB BB CB AB v GB Q IB JB KB LB MB NB lB eB"},D:{"1":"GB Q IB JB KB LB MB NB dB RB YB UB O PB tB VB WB","2":"0 1 2 3 4 5 6 G T M F E D A B C L S H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z","194":"7 8 9 OB EB BB CB AB v"},E:{"2":"G T M F E D A B C L XB SB ZB aB bB cB QB P R gB"},F:{"1":"3 4 5 6 7 8 9 BB CB AB v","2":"0 1 2 D B C H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z hB iB jB kB P DB mB R"},G:{"2":"E SB nB HB pB qB rB sB TB uB vB wB xB yB zB 0B 1B 2B 3B"},H:{"2":"4B"},I:{"1":"RB","2":"FB G 5B 6B 7B 8B HB 9B AC"},J:{"2":"F A"},K:{"2":"A B C N P DB R"},L:{"1":"O"},M:{"2":"Q"},N:{"2":"A B"},O:{"2":"BC"},P:{"2":"G CC DC EC FC GC QB"},Q:{"2":"HC"},R:{"2":"IC"},S:{"2":"JC"}},B:4,C:"Accelerometer"};
module.exports={A:{A:{"1":"D A B","130":"M F E fB"},B:{"1":"C L S H I J K O PB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 F E D A B C L S H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z OB EB BB CB AB v GB Q IB JB KB LB MB NB","257":"oB FB G T M lB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G T M F E D A B C L S H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z OB EB BB CB AB v GB Q IB JB KB LB MB NB dB RB YB UB O PB tB VB WB"},E:{"1":"G T M F E D A B C L XB SB ZB aB bB cB QB P R gB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D B C H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z BB CB AB v hB iB jB kB P DB mB R"},G:{"1":"E SB nB HB pB qB rB sB TB uB vB wB xB yB zB 0B 1B 2B 3B"},H:{"1":"4B"},I:{"1":"FB G RB 5B 6B 7B 8B HB 9B AC"},J:{"1":"F A"},K:{"1":"A B C N P DB R"},L:{"1":"O"},M:{"1":"Q"},N:{"1":"A B"},O:{"1":"BC"},P:{"1":"G CC DC EC FC GC QB"},Q:{"1":"HC"},R:{"1":"IC"},S:{"1":"JC"}},B:1,C:"EventTarget.addEventListener()"};
module.exports={A:{A:{"1":"E D A B","2":"M F fB"},B:{"2":"C L S H I J K O PB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 oB FB G T M F E D A B C L S H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z OB EB BB CB AB v GB Q IB JB KB LB MB NB lB eB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 G T M F E D A B C L S H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z OB EB BB CB AB v GB Q IB JB KB LB MB NB dB RB YB UB O PB tB VB WB"},E:{"2":"G T M F E D A B C L XB SB ZB aB bB cB QB P R gB"},F:{"1":"D B C hB iB jB kB P DB mB R","16":"0 1 2 3 4 5 6 7 8 9 H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z BB CB AB v"},G:{"2":"E SB nB HB pB qB rB sB TB uB vB wB xB yB zB 0B 1B 2B 3B"},H:{"16":"4B"},I:{"2":"FB G RB 5B 6B 7B 8B HB 9B AC"},J:{"16":"F A"},K:{"16":"A B C N P DB R"},L:{"16":"O"},M:{"16":"Q"},N:{"16":"A B"},O:{"16":"BC"},P:{"16":"G CC DC EC FC GC QB"},Q:{"2":"HC"},R:{"16":"IC"},S:{"1":"JC"}},B:1,C:"Alternate stylesheet"};
module.exports={A:{A:{"2":"M F E D A B fB"},B:{"2":"C L","132":"S H I J K","322":"O PB"},C:{"2":"oB FB G T M F E D A B C L S H I J K U V W lB eB","132":"0 1 2 3 4 5 6 7 X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z OB","194":"8 9 EB BB CB AB v GB Q IB JB KB LB MB NB"},D:{"2":"0 1 2 3 4 5 6 G T M F E D A B C L S H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z","322":"7 8 9 OB EB BB CB AB v GB Q IB JB KB LB MB NB dB RB YB UB O PB tB VB WB"},E:{"2":"G T M F E D A B C L XB SB ZB aB bB cB QB P R gB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 D B C H I J K U V W X Y Z a b c d e f g h i j k l m n o p q r s t u N w x y z BB CB AB v hB iB jB kB P DB mB R"},G:{"2":"E SB nB HB pB qB rB sB TB uB vB wB xB yB zB 0B 1B 2B 3B"},H:{"2":"4B"},I:{"2":"FB G RB 5B 6B 7B 8B HB 9B AC"},J:{"2":"F A"},K:{"2":"A B C N P DB R"},L:{"2":"O"},M:{"1":"Q"},N:{"2":"A B"},O:{"2":"BC"},P:{"2":"G CC DC EC FC GC QB"},Q:{"2":"HC"},R:{"2":"IC"},S:{"132":"JC"}},B:4,C:"Ambient Light Sensor"};
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment