个人信息修改、密码修改
@ -269,9 +269,9 @@ const request = function(req) {
|
||||
}
|
||||
},
|
||||
fail: function(res) {
|
||||
console.warn('--- request fail >>>');
|
||||
console.warn(res);
|
||||
console.warn('<<< request fail ---');
|
||||
// console.warn('--- request fail >>>');
|
||||
// console.warn(res);
|
||||
// console.warn('<<< request fail ---');
|
||||
uni.showToast({
|
||||
title: '网络异常~',
|
||||
icon: 'none'
|
||||
@ -285,10 +285,10 @@ const request = function(req) {
|
||||
if (res.code == '1000') {
|
||||
login();
|
||||
}
|
||||
console.log('--- request http error >>>');
|
||||
console.log(res.statusCode);
|
||||
console.log(res.data);
|
||||
console.log('<<< request http error ---');
|
||||
// console.log('--- request http error >>>');
|
||||
// console.log(res.statusCode);
|
||||
// console.log(res.data);
|
||||
// console.log('<<< request http error ---');
|
||||
}
|
||||
if (req.complete) {
|
||||
req.complete(res);
|
||||
|
@ -23,7 +23,7 @@
|
||||
<!-- 左图 -->
|
||||
<view class="info" v-if='"key_2" == item.typesettingCode'>
|
||||
<view class="photo">
|
||||
<image :src="imgUrl+item.newsContentCoverList[0].contentCoverId" mode="aspectFill"></image>
|
||||
<image :src="imgUrl+item.newsContentCoverList[0].contentCoverId" mode="scaleToFill"></image>
|
||||
</view>
|
||||
<view class="text-left">
|
||||
<view class="title">{{ item.newsContentTitle }}</view>
|
||||
@ -53,7 +53,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="photo">
|
||||
<image :src="imgUrl+item.newsContentCoverList[0].contentCoverId" mode="aspectFill"></image>
|
||||
<image :src="imgUrl+item.newsContentCoverList[0].contentCoverId" mode="scaleToFill"></image>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@ -63,7 +63,7 @@
|
||||
<view class="title">{{ item.newsContentTitle }}</view>
|
||||
</view>
|
||||
<view class="photo">
|
||||
<image :src="imgUrl+item.newsContentCoverList[0].contentCoverId" mode="aspectFill"></image>
|
||||
<image :src="imgUrl+item.newsContentCoverList[0].contentCoverId" mode="scaleToFill"></image>
|
||||
</view>
|
||||
<view class="other">
|
||||
<view class="items">{{ item.newsContentAuthor }}</view>
|
||||
@ -89,7 +89,7 @@
|
||||
</view>
|
||||
<view class="photo">
|
||||
<image class="icon" src="../../static/images/ic_play_item.png" mode="aspectFill"></image>
|
||||
<image class="cover" :src="imgUrl+item.newsContentCoverList[0].contentCoverId" mode="aspectFill">
|
||||
<image class="cover" :src="imgUrl+item.newsContentCoverList[0].contentCoverId" mode="scaleToFill">
|
||||
</image>
|
||||
|
||||
</view>
|
||||
@ -142,12 +142,15 @@
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
$title_size:32rpx;
|
||||
$desc_size:24rpx;
|
||||
|
||||
/*文章列表*/
|
||||
.list {
|
||||
margin-top: 2rpx;
|
||||
margin-top: 20rpx;
|
||||
|
||||
.item {
|
||||
padding: 40rpx 24rpx 0 24rpx;
|
||||
padding: 10rpx 24rpx 0 24rpx;
|
||||
|
||||
.info {
|
||||
display: flex;
|
||||
@ -163,9 +166,7 @@
|
||||
margin-right: 40rpx;
|
||||
|
||||
.title {
|
||||
flex-grow: 1;
|
||||
flex-shrink: 1;
|
||||
font-size: 34rpx;
|
||||
font-size: $title_size;
|
||||
line-height: 1.5;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
@ -173,7 +174,6 @@
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
height: 72rpx;
|
||||
margin-bottom: 8rpx;
|
||||
}
|
||||
|
||||
@ -182,7 +182,7 @@
|
||||
flex-shrink: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 28rpx;
|
||||
font-size: $desc_size;
|
||||
color: #999;
|
||||
line-height: normal;
|
||||
|
||||
@ -247,9 +247,7 @@
|
||||
margin-left: 40rpx;
|
||||
|
||||
.title {
|
||||
flex-grow: 1;
|
||||
flex-shrink: 1;
|
||||
font-size: 34rpx;
|
||||
font-size: $title_size;
|
||||
line-height: 1.5;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
@ -257,7 +255,6 @@
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
height: 72rpx;
|
||||
margin-bottom: 8rpx;
|
||||
}
|
||||
|
||||
@ -266,7 +263,7 @@
|
||||
flex-shrink: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 28rpx;
|
||||
font-size: $desc_size;
|
||||
color: #999;
|
||||
line-height: normal;
|
||||
|
||||
@ -323,7 +320,7 @@
|
||||
|
||||
.photo {
|
||||
image {
|
||||
height: 170rpx;
|
||||
height: 130rpx;
|
||||
width: 222rpx;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
@ -335,7 +332,7 @@
|
||||
width: 100%;
|
||||
height: 1rpx;
|
||||
margin-top: 22rpx;
|
||||
background: #e8e8e8;
|
||||
background: #f6f6f6;
|
||||
}
|
||||
|
||||
.info-bottom {
|
||||
@ -350,7 +347,7 @@
|
||||
margin-right: 40rpx;
|
||||
|
||||
.title {
|
||||
font-size: 34rpx;
|
||||
font-size: $title_size;
|
||||
line-height: 1.5;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
@ -366,7 +363,7 @@
|
||||
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
font-size: 28rpx;
|
||||
font-size: $desc_size;
|
||||
color: #999;
|
||||
|
||||
.items:nth-child(n+2) {
|
||||
@ -380,7 +377,7 @@
|
||||
padding: 10rpx;
|
||||
|
||||
image {
|
||||
height: 420rpx;
|
||||
height: 350rpx;
|
||||
width: 100%;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
@ -399,7 +396,7 @@
|
||||
margin-right: 40rpx;
|
||||
|
||||
.title {
|
||||
font-size: 34rpx;
|
||||
font-size: $title_size;
|
||||
line-height: 1.5;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
@ -415,7 +412,7 @@
|
||||
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
font-size: 28rpx;
|
||||
font-size: $desc_size;
|
||||
color: #999;
|
||||
|
||||
.items:nth-child(n+2) {
|
||||
@ -425,7 +422,7 @@
|
||||
|
||||
.photo {
|
||||
padding: 10rpx;
|
||||
height: 420rpx;
|
||||
height: 350rpx;
|
||||
position: relative;
|
||||
|
||||
.icon {
|
||||
@ -467,7 +464,7 @@
|
||||
margin-right: 40rpx;
|
||||
|
||||
.title {
|
||||
font-size: 34rpx;
|
||||
font-size: $title_size;
|
||||
line-height: 1.5;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
@ -488,7 +485,7 @@
|
||||
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
font-size: 28rpx;
|
||||
font-size: $desc_size;
|
||||
color: #999;
|
||||
|
||||
.items:nth-child(n+2) {
|
||||
@ -526,7 +523,7 @@
|
||||
margin-right: 40rpx;
|
||||
|
||||
.title {
|
||||
font-size: 34rpx;
|
||||
font-size: $title_size;
|
||||
line-height: 1.5;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
@ -545,7 +542,7 @@
|
||||
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
font-size: 28rpx;
|
||||
font-size: $desc_size;
|
||||
color: #999;
|
||||
|
||||
.items:nth-child(n+2) {
|
||||
@ -563,14 +560,13 @@
|
||||
|
||||
.photo {
|
||||
display: flex;
|
||||
padding: 10rpx;
|
||||
flex-direction: row;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
|
||||
image {
|
||||
height: 170rpx;
|
||||
height: 130rpx;
|
||||
width: 31%;
|
||||
margin: 5rpx;
|
||||
border-radius: 10rpx;
|
||||
|
607
components/cmd-progress/cmd-progress.vue
Executable file
@ -0,0 +1,607 @@
|
||||
<template>
|
||||
<view class="cmd-progress cmd-progress-default" :class="setStatusClass">
|
||||
<block v-if="type == 'circle' || type == 'dashboard'">
|
||||
<view class="cmd-progress cmd-progress-default" :class="setStatusClass">
|
||||
<view class="cmd-progress-inner" :style="setCircleStyle">
|
||||
<!-- 绘制圈 start -->
|
||||
<!-- #ifdef H5 -->
|
||||
<svg viewBox="0 0 100 100" class="cmd-progress-circle">
|
||||
<path :d="setCirclePath" stroke="#f3f3f3" :stroke-linecap="strokeShape" :stroke-width="strokeWidth"
|
||||
fill-opacity="0" class="cmd-progress-circle-trail" :style="setCircleTrailStyle"></path>
|
||||
<path :d="setCirclePath" :stroke-linecap="strokeShape" :stroke-width="strokeWidth" fill-opacity="0" class="cmd-progress-circle-path"
|
||||
:style="setCirclePathStyle"></path>
|
||||
</svg>
|
||||
<!-- #endif -->
|
||||
<!-- #ifndef H5 -->
|
||||
<text :style="setCircle"></text>
|
||||
<!-- #endif -->
|
||||
<!-- 绘制圈 end -->
|
||||
<!-- 状态文本 start -->
|
||||
<block v-if="showInfo && !custom">
|
||||
<text class="cmd-progress-text" :title="setFormat">
|
||||
<block v-if="status != 'success' && status != 'exception' && setProgress < 100">{{setFormat}}</block>
|
||||
<!-- #ifdef H5 -->
|
||||
<svg v-if="status == 'exception'" viewBox="64 64 896 896" data-icon="close" width="1em" height="1em" fill="currentColor"
|
||||
aria-hidden="true">
|
||||
<path d="M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 0 0 203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z"></path>
|
||||
</svg>
|
||||
<svg v-if="status == 'success' || setProgress == 100" viewBox="64 64 896 896" data-icon="check" width="1em"
|
||||
height="1em" fill="currentColor" aria-hidden="true" :style="{'color': strokeColor ? strokeColor : ''}">
|
||||
<path d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"></path>
|
||||
</svg>
|
||||
<!-- #endif -->
|
||||
<!-- #ifndef H5 -->
|
||||
<text v-if="status == 'exception' || status == 'success' || setProgress == 100" :style="setCircleIcon"></text>
|
||||
<!-- #endif -->
|
||||
</text>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="cmd-progress-custom">
|
||||
<slot></slot>
|
||||
</view>
|
||||
</block>
|
||||
<!-- 状态文本 end -->
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<block v-if="type == 'line'">
|
||||
<!-- 进度条 start -->
|
||||
<view class="cmd-progress-outer">
|
||||
<view class="cmd-progress-inner" :style="{'border-radius': strokeShape == 'square' ? 0 : '100px'}">
|
||||
<view class="cmd-progress-bg" :style="setLineStyle"></view>
|
||||
<view v-if="successPercent" class="cmd-progress-success-bg" :style="setLineSuccessStyle"></view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 进度条 end -->
|
||||
<!-- 进度条是否显示信息 start -->
|
||||
<block v-if="showInfo && !custom">
|
||||
<text class="cmd-progress-text" :title="setFormat">
|
||||
<block v-if="status != 'success' && status != 'exception' && setProgress < 100">{{setFormat}}</block>
|
||||
<!-- #ifdef H5 -->
|
||||
<svg v-if="status == 'exception'" viewBox="64 64 896 896" data-icon="close-circle" width="1em" height="1em"
|
||||
fill="currentColor" aria-hidden="true">
|
||||
<path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 0 1-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z"></path>
|
||||
</svg>
|
||||
<svg v-if="status == 'success' || setProgress == 100" viewBox="64 64 896 896" data-icon="check-circle" width="1em"
|
||||
height="1em" fill="currentColor" aria-hidden="true" :style="{'color': strokeColor ? strokeColor : ''}">
|
||||
<path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z"></path>
|
||||
</svg>
|
||||
<!-- #endif -->
|
||||
<!-- #ifndef H5 -->
|
||||
<text v-if="status == 'exception' || status == 'success' || setProgress == 100" :style="setLineStatusIcon"></text>
|
||||
<!-- #endif -->
|
||||
</text>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="cmd-progress-custom">
|
||||
<slot></slot>
|
||||
</view>
|
||||
</block>
|
||||
<!-- 进度条是否显示信息 end -->
|
||||
</block>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
/**
|
||||
* 进度条组件
|
||||
* @description 显示一个操作完成的百分比时,为用户显示该操作的当前进度和状态。
|
||||
* @tutorial https://ext.dcloud.net.cn/plugin?id=259
|
||||
* @property {String} type 进度类型 - 线型:line、圆圈形:circle、仪表盘:dashboard,默认线型:line
|
||||
* @property {Number} percent 进度百分比值 - 显示范围0-100 ,可能数比较大就需要自己转成百分比的值
|
||||
* @property {Number} success-percent 进度已完成的百分几 - 仅支持进度线型:line
|
||||
* @property {String} status 进度状态 - 涌动:active(仅支持线型:line)、正常:normal、完成:success、失败:exception,默认正常:normal
|
||||
* @property {Boolean} show-info 进度状态信息 - 是否显示进度数值或状态图标,默认true
|
||||
* @property {Number} stroke-width 进度线条的宽度 - 建议在条线的宽度范围:1-50,与进度条显示宽度有关,默认8
|
||||
* @property {String} stroke-color 进度线条的颜色 - 渐变色仅支持线型:line
|
||||
* @property {String} stroke-shape 进度线条两端的形状 - 圆:round、方块直角:square,默认圆:round
|
||||
* @property {Number} width 进度画布宽度 - 仅支持圆圈形:circle、仪表盘:dashboard,默认80
|
||||
* @property {String} gap-degree 进度圆形缺口角度 - 可取值 0 ~ 360,仅支持圆圈形:circle、仪表盘:dashboard
|
||||
* @property {String} gap-position 进度圆形缺口位置 - 可取值'top', 'bottom', 'left', 'right',仅支持圆圈形:circle、仪表盘:dashboard
|
||||
* @property {Boolean} custom 自定义文本格式插槽,条line:圈circle 仪表板dashboard
|
||||
* @example <cmd-progress :percent="30"></cmd-progress>
|
||||
*/
|
||||
export default {
|
||||
name: 'cmd-progress',
|
||||
|
||||
props: {
|
||||
/**
|
||||
* 类型默认:line,可选 line circle dashboard
|
||||
*/
|
||||
type: {
|
||||
validator: val => {
|
||||
return ['line', 'circle', 'dashboard'].includes(val);
|
||||
},
|
||||
default: 'line'
|
||||
},
|
||||
/**
|
||||
* 百分比
|
||||
*/
|
||||
percent: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
/**
|
||||
* 已完成的分段百分,仅支持类型line
|
||||
*/
|
||||
successPercent: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
/**
|
||||
* 是否显示进度数值或状态图标
|
||||
*/
|
||||
showInfo: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
/**
|
||||
* 自定义文本格式插槽,条line:圈circle 仪表板dashboard
|
||||
*/
|
||||
custom: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
/**
|
||||
* 进度状态,可选:normal success exception (active仅支持类型line
|
||||
*/
|
||||
status: {
|
||||
validator: val => {
|
||||
return ['normal', 'success', 'exception', 'active'].includes(val);
|
||||
},
|
||||
default: 'normal'
|
||||
},
|
||||
/**
|
||||
* 条线的宽度1-50,与width有关
|
||||
*/
|
||||
strokeWidth: {
|
||||
type: Number,
|
||||
default: 6
|
||||
},
|
||||
/**
|
||||
* 条线的颜色,渐变色仅支持类型line
|
||||
*/
|
||||
strokeColor: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
/**
|
||||
* 条线两端的形状 可选:'round', 'square'
|
||||
*/
|
||||
strokeShape: {
|
||||
validator: val => {
|
||||
return ['round', 'square'].includes(val);
|
||||
},
|
||||
default: 'round'
|
||||
},
|
||||
/**
|
||||
* 圆形进度条画布宽度,支持类型circle dashboard
|
||||
*/
|
||||
width: {
|
||||
type: Number,
|
||||
default: 80
|
||||
},
|
||||
/**
|
||||
* 圆形进度条缺口角度,可取值 0 ~ 360,支持类型circle dashboard
|
||||
*/
|
||||
gapDegree: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
/**
|
||||
* 圆形进度条缺口位置,可取值'top', 'bottom', 'left', 'right' ,支持类型circle dashboard
|
||||
*/
|
||||
gapPosition: {
|
||||
validator: val => {
|
||||
return ['top', 'bottom', 'left', 'right'].includes(val);
|
||||
},
|
||||
default: 'top'
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
/**
|
||||
* 百分比格式
|
||||
*/
|
||||
setFormat() {
|
||||
return `${this.setProgress}%`;
|
||||
},
|
||||
/**
|
||||
* 设置显示进度值,禁止小于0和超过100
|
||||
*/
|
||||
setProgress() {
|
||||
let percent = this.percent;
|
||||
if (!this.percent || this.percent < 0) {
|
||||
percent = 0;
|
||||
} else if (this.percent >= 100) {
|
||||
percent = 100;
|
||||
}
|
||||
return percent;
|
||||
},
|
||||
/**
|
||||
* 进度圈svg大小
|
||||
*/
|
||||
setCircleStyle() {
|
||||
return `width: ${this.width}px;
|
||||
height: ${this.width}px;
|
||||
fontSize: ${this.width * 0.15 + 6}px;`
|
||||
},
|
||||
/**
|
||||
* 圈底色
|
||||
*/
|
||||
setCircleTrailStyle() {
|
||||
const radius = 50 - this.strokeWidth / 2;
|
||||
const len = Math.PI * 2 * radius;
|
||||
const gapDeg = this.gapDegree || (this.type === 'dashboard' && 75);
|
||||
return `stroke-dasharray: ${len - (gapDeg||0)}px, ${len}px;
|
||||
stroke-dashoffset: -${(gapDeg||0) / 2}px;
|
||||
transition: stroke-dashoffset 0.3s ease 0s, stroke-dasharray 0.3s ease 0s, stroke 0.3s;`
|
||||
},
|
||||
/**
|
||||
* 圈进度
|
||||
*/
|
||||
setCirclePathStyle() {
|
||||
const radius = 50 - this.strokeWidth / 2;
|
||||
const len = Math.PI * 2 * radius;
|
||||
const gapDeg = this.gapDegree || (this.type === 'dashboard' && 75);
|
||||
return `stroke: ${this.strokeColor};
|
||||
stroke-dasharray: ${(this.setProgress / 100) * (len - (gapDeg||0))}px, ${len}px;
|
||||
stroke-dashoffset: -${(gapDeg||0) / 2}px;
|
||||
transition: stroke-dashoffset 0.3s ease 0s, stroke-dasharray 0.3s ease 0s, stroke 0.3s, stroke-width 0.06s ease 0.3s;`
|
||||
},
|
||||
/**
|
||||
* 绘制圈
|
||||
*/
|
||||
setCirclePath() {
|
||||
const radius = 50 - this.strokeWidth / 2;
|
||||
let beginPositionX = 0;
|
||||
let beginPositionY = -radius;
|
||||
let endPositionX = 0;
|
||||
let endPositionY = -2 * radius;
|
||||
const gapPos = (this.type === 'dashboard' && 'bottom') || this.gapPosition || 'top';
|
||||
switch (gapPos) {
|
||||
case 'left':
|
||||
beginPositionX = -radius;
|
||||
beginPositionY = 0;
|
||||
endPositionX = 2 * radius;
|
||||
endPositionY = 0;
|
||||
break;
|
||||
case 'right':
|
||||
beginPositionX = radius;
|
||||
beginPositionY = 0;
|
||||
endPositionX = -2 * radius;
|
||||
endPositionY = 0;
|
||||
break;
|
||||
case 'bottom':
|
||||
beginPositionY = radius;
|
||||
endPositionY = 2 * radius;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return `M 50,50 m ${beginPositionX},${beginPositionY} a ${radius},${radius} 0 1 1 ${endPositionX},${-endPositionY} a ${radius},${radius} 0 1 1 ${-endPositionX},${endPositionY}`;
|
||||
},
|
||||
// #ifndef H5
|
||||
/**
|
||||
* 非H5端,绘制进度圈svg转base URL
|
||||
*/
|
||||
setCircle() {
|
||||
const radius = 50 - this.strokeWidth / 2;
|
||||
const len = Math.PI * 2 * radius;
|
||||
const gapDeg = this.gapDegree || (this.type === 'dashboard' && 75);
|
||||
let currentColor = '#108ee9'
|
||||
// 异常进度
|
||||
if (this.status == 'exception') {
|
||||
currentColor = '#f5222d'
|
||||
}
|
||||
// 完成进度
|
||||
if (this.status == 'success' || this.setProgress >= 100 || this.strokeColor) {
|
||||
currentColor = this.strokeColor || '#52c41a'
|
||||
}
|
||||
let svgToBase =
|
||||
`data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' class='cmd-progress-circle'%3E%3Cpath d='${this.setCirclePath}' stroke='%23f3f3f3' stroke-linecap='${this.strokeShape}' stroke-width='${this.strokeWidth}' fill-opacity='0' class='cmd-progress-circle-trail' style='stroke-dasharray: ${len - (gapDeg||0)}px, ${len}px;stroke-dashoffset: -${(gapDeg||0) / 2}px;transition: stroke-dashoffset 0.3s ease 0s, stroke-dasharray 0.3s ease 0s, stroke 0.3s;'%3E%3C/path%3E%3Cpath d='${this.setCirclePath}' stroke-linecap='${this.strokeShape}' stroke-width='${this.strokeWidth}' fill-opacity='0' class='cmd-progress-circle-path' style='stroke: ${currentColor};stroke-dasharray: ${(this.setProgress / 100) * (len - (gapDeg||0))}px, ${len}px;stroke-dashoffset: -${(gapDeg||0) / 2}px;transition: stroke-dashoffset 0.3s ease 0s, stroke-dasharray 0.3s ease 0s, stroke 0.3s, stroke-width 0.06s ease 0.3s;'%3E%3C/path%3E%3C/svg%3E`
|
||||
return `background-image: url("${svgToBase}");
|
||||
background-size: cover;
|
||||
display: inline-block;
|
||||
${this.setCircleStyle}`;
|
||||
},
|
||||
/**
|
||||
* 设置进度圈状态图标
|
||||
*/
|
||||
setCircleIcon() {
|
||||
let currentColor = '#108ee9'
|
||||
let svgToBase = ''
|
||||
// 异常进度
|
||||
if (this.status == 'exception') {
|
||||
currentColor = '#f5222d'
|
||||
svgToBase =
|
||||
`data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='64 64 896 896' data-icon='close' width='1em' height='1em' fill='${currentColor}' aria-hidden='true'%3E %3Cpath d='M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 0 0 203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z'%3E%3C/path%3E %3C/svg%3E`;
|
||||
}
|
||||
// 完成进度
|
||||
if (this.status == 'success' || this.setProgress >= 100) {
|
||||
currentColor = this.strokeColor || '#52c41a'
|
||||
svgToBase =
|
||||
`data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='64 64 896 896' data-icon='check' width='1em' height='1em' fill='${currentColor}' aria-hidden='true'%3E %3Cpath d='M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z'%3E%3C/path%3E %3C/svg%3E`;
|
||||
}
|
||||
return `background-image: url("${svgToBase}");
|
||||
background-size: cover;
|
||||
display: inline-block;
|
||||
width: 1em;
|
||||
height: 1em;`;
|
||||
},
|
||||
// #endif
|
||||
/**
|
||||
* 设置进度条样式
|
||||
*/
|
||||
setLineStyle() {
|
||||
return `width: ${this.setProgress}%;
|
||||
height: ${this.strokeWidth}px;
|
||||
background: ${this.strokeColor};
|
||||
border-radius: ${this.strokeShape === 'square' ? 0 : '100px'};`;
|
||||
},
|
||||
/**
|
||||
* 设置已完成分段进度
|
||||
*/
|
||||
setLineSuccessStyle() {
|
||||
let successPercent = this.successPercent;
|
||||
if (!this.successPercent || this.successPercent < 0 || this.setProgress < this.successPercent) {
|
||||
successPercent = 0;
|
||||
} else if (this.successPercent >= 100) {
|
||||
successPercent = 100;
|
||||
}
|
||||
return `width: ${successPercent}%;
|
||||
height: ${this.strokeWidth}px;
|
||||
border-radius: ${this.strokeShape === 'square' ? 0 : '100px'};`;
|
||||
},
|
||||
// #ifndef H5
|
||||
/**
|
||||
* 设置进度条状态图标
|
||||
*/
|
||||
setLineStatusIcon() {
|
||||
let currentColor = '#108ee9'
|
||||
let svgToBase = ''
|
||||
// 异常进度
|
||||
if (this.status == 'exception') {
|
||||
currentColor = '#f5222d'
|
||||
svgToBase =
|
||||
`data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='64 64 896 896' data-icon='close-circle' width='1em' height='1em' fill='${currentColor}' aria-hidden='true'%3E %3Cpath d='M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 0 1-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z'%3E%3C/path%3E %3C/svg%3E`;
|
||||
}
|
||||
// 完成进度
|
||||
if (this.status == 'success' || this.setProgress >= 100) {
|
||||
currentColor = this.strokeColor || '#52c41a'
|
||||
svgToBase =
|
||||
`data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='64 64 896 896' data-icon='check-circle' width='1em' height='1em' fill='${currentColor}' aria-hidden='true'%3E %3Cpath d='M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z'%3E%3C/path%3E %3C/svg%3E`;
|
||||
}
|
||||
return `background-image: url("${svgToBase}");
|
||||
background-size: cover;
|
||||
display: inline-block;
|
||||
width: 1em;
|
||||
height: 1em;`;
|
||||
},
|
||||
// #endif
|
||||
/**
|
||||
* 状态样式
|
||||
*/
|
||||
setStatusClass() {
|
||||
let statusClass = [];
|
||||
// 异常进度
|
||||
if (this.status == 'exception') {
|
||||
statusClass.push('cmd-progress-status-exception')
|
||||
}
|
||||
// 完成进度
|
||||
if (this.status == 'success' || this.setProgress >= 100) {
|
||||
statusClass.push('cmd-progress-status-success')
|
||||
}
|
||||
// 活动进度条
|
||||
if (this.status == 'active') {
|
||||
statusClass.push('cmd-progress-status-active')
|
||||
}
|
||||
// 是否显示信息
|
||||
if (this.showInfo) {
|
||||
statusClass.push('cmd-progress-show-info')
|
||||
}
|
||||
// 进度条类型
|
||||
if (this.type === 'line') {
|
||||
statusClass.push('cmd-progress-line')
|
||||
}
|
||||
// 进度圈、仪表盘类型
|
||||
if (this.type === 'circle' || this.type === 'dashboard') {
|
||||
statusClass.push('cmd-progress-circle')
|
||||
}
|
||||
statusClass.push('cmd-progress-status-normal')
|
||||
return statusClass;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.cmd-progress {
|
||||
font-family: "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
font-size: 28upx;
|
||||
font-variant: tabular-nums;
|
||||
line-height: 1.5;
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
box-sizing: border-box;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.cmd-progress-line {
|
||||
width: 100%;
|
||||
font-size: 28upx;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.cmd-progress-outer {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
margin-right: 0;
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.cmd-progress-show-info .cmd-progress-outer {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.cmd-progress-inner {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 200upx;
|
||||
vertical-align: middle;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.cmd-progress-circle-trail {
|
||||
stroke: #f5f5f5;
|
||||
}
|
||||
|
||||
.cmd-progress-circle-path {
|
||||
stroke: #1890ff;
|
||||
animation: appear 0.3s;
|
||||
}
|
||||
|
||||
.cmd-progress-success-bg,
|
||||
.cmd-progress-bg {
|
||||
background-color: #1890ff;
|
||||
transition: all 0.4s cubic-bezier(0.08, 0.82, 0.17, 1) 0s;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.cmd-progress-success-bg {
|
||||
background-color: #52c41a;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.cmd-progress-custom {
|
||||
max-width: 50%;
|
||||
margin-left: 16upx;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
white-space: normal;
|
||||
word-wrap: break-word;
|
||||
word-break: break-all;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.cmd-progress-text {
|
||||
min-width: 60upx;
|
||||
text-align: left;
|
||||
margin-left: 16upx;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
white-space: normal;
|
||||
color: rgba(0, 0, 0, 0.45);
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.cmd-progress-status-active .cmd-progress-bg:before {
|
||||
content: "";
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: #fff;
|
||||
border-radius: 20upx;
|
||||
-webkit-animation: cmd-progress-active 2.4s cubic-bezier(0.23, 1, 0.32, 1) infinite;
|
||||
animation: cmd-progress-active 2.4s cubic-bezier(0.23, 1, 0.32, 1) infinite;
|
||||
}
|
||||
|
||||
.cmd-progress-status-exception .cmd-progress-bg {
|
||||
background-color: #f5222d;
|
||||
}
|
||||
|
||||
.cmd-progress-status-exception .cmd-progress-text {
|
||||
color: #f5222d;
|
||||
}
|
||||
|
||||
.cmd-progress-status-exception .cmd-progress-circle-path {
|
||||
stroke: #f5222d;
|
||||
}
|
||||
|
||||
.cmd-progress-status-success .cmd-progress-bg {
|
||||
background-color: #52c41a;
|
||||
}
|
||||
|
||||
.cmd-progress-status-success .cmd-progress-text {
|
||||
color: #52c41a;
|
||||
}
|
||||
|
||||
.cmd-progress-status-success .cmd-progress-circle-path {
|
||||
stroke: #52c41a;
|
||||
}
|
||||
|
||||
.cmd-progress-circle .cmd-progress-inner {
|
||||
position: relative;
|
||||
line-height: 1;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.cmd-progress-circle .cmd-progress-custom {
|
||||
display: block;
|
||||
position: absolute;
|
||||
line-height: 1;
|
||||
top: 50%;
|
||||
-webkit-transform: translateY(-50%);
|
||||
transform: translateY(-50%);
|
||||
left: 25%;
|
||||
right: 25%;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
white-space: normal;
|
||||
word-wrap: break-word;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.cmd-progress-circle .cmd-progress-text {
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
line-height: 1;
|
||||
top: 50%;
|
||||
-webkit-transform: translateY(-50%);
|
||||
transform: translateY(-50%);
|
||||
left: 0;
|
||||
margin: 0;
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.cmd-progress-circle .cmd-progress-status-exception .cmd-progress-text {
|
||||
color: #f5222d;
|
||||
}
|
||||
|
||||
.cmd-progress-circle .cmd-progress-status-success .cmd-progress-text {
|
||||
color: #52c41a;
|
||||
}
|
||||
|
||||
@keyframes cmd-progress-active {
|
||||
0% {
|
||||
opacity: 0.1;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
20% {
|
||||
opacity: 0.5;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 0;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
88
components/yomol-prompt/README.md
Executable file
@ -0,0 +1,88 @@
|
||||
## 说明
|
||||
|
||||
输入内容并返回内容的prompt组件
|
||||
|
||||
提示名称: title
|
||||
|
||||
输入类型:inputType
|
||||
|
||||
默认值:defaultValue
|
||||
|
||||
input逻辑处理方法名称: func
|
||||
|
||||
输入最大长度:maxlength
|
||||
|
||||
主色:themeColor
|
||||
|
||||
|
||||
## 用法
|
||||
|
||||
**父组件**
|
||||
|
||||
```html
|
||||
<template>
|
||||
<view>
|
||||
<yomol-prompt :title="promptTitle" :inputType="promptInputType" :maxlength="maxlength" :defaultValue="promptDefaultValue" :func="promptFunc" ref="yomolPrompt" @onConfirm="onPromptConfirm"></yomol-prompt>
|
||||
</view>
|
||||
</template>
|
||||
```
|
||||
|
||||
```js
|
||||
<script>
|
||||
import yomolPrompt from '@/components/yomol/yomol-prompt.vue'
|
||||
export default {
|
||||
components:{
|
||||
yomolPrompt
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
promptTitle: '提示',
|
||||
promptDefaultValue: '',
|
||||
promptInputType: 'text',
|
||||
promptFunc: "", //空值不执行
|
||||
maxlength: 18,
|
||||
}
|
||||
},
|
||||
onBackPress() {
|
||||
if(this.$refs.yomolPrompt.visible){
|
||||
this.$refs.yomolPrompt.hide()
|
||||
return true
|
||||
}
|
||||
},
|
||||
onLoad呢(e) {
|
||||
//自定义input处理事件监听
|
||||
uni.$on('update-prompt',(data)=>{
|
||||
// data.value input输入值
|
||||
// data.callback 处理后返回方法名
|
||||
let val = data.value
|
||||
//逻辑处理
|
||||
|
||||
uni.$emit(e.callback,val)
|
||||
})
|
||||
},
|
||||
onUnload呢() {
|
||||
/* 移除事件监听 */
|
||||
uni.$off('update-prompt')
|
||||
},
|
||||
methods: {
|
||||
/*
|
||||
* 打开提示框
|
||||
*/
|
||||
onOpenPromptClick() {
|
||||
this.promptTitle = '修改名称' //提示名称
|
||||
this.promptDefaultValue = 'yomol' //默认值
|
||||
this.promptInputType = 'text' //输入类型 同Input组件
|
||||
this.maxlength = 18 //最大长度
|
||||
this.promptFunc = "update-prompt" //将定义好的处理逻辑名传给组件回调
|
||||
this.$refs.yomolPrompt.show()
|
||||
},
|
||||
/*
|
||||
* 输入内容
|
||||
*/
|
||||
onPromptConfirm(e){
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
```
|
211
components/yomol-prompt/yomol-prompt.vue
Executable file
@ -0,0 +1,211 @@
|
||||
<template>
|
||||
<view v-if="visible" class="prompt" catchtouchmove="true">
|
||||
<view class="prompt-view">
|
||||
<view class="prompt-title">{{title}}</view>
|
||||
<input v-if="inputType == 'number'" class="prompt-input" auto-height focus type="number" :maxlength="maxlength"
|
||||
placeholder="请输入" v-model="value" :cursor="cursor" @input="onInput" />
|
||||
<input v-else-if="inputType == 'digit'" class="prompt-input" auto-height focus type="digit" :maxlength="maxlength"
|
||||
placeholder="请输入" v-model="value" :cursor="cursor" @input="onInput" />
|
||||
<input v-else-if="inputType == 'idcard'" class="prompt-input" auto-height focus type="idcard" :maxlength="maxlength"
|
||||
placeholder="请输入" v-model="value" :cursor="cursor" @input="onInput" />
|
||||
<textarea v-else class="prompt-input" auto-height focus type="text" :maxlength="maxlength" placeholder="请输入" v-model="value"
|
||||
:cursor="cursor" @input="onInput" />
|
||||
<view class="prompt-btns">
|
||||
<view class="prompt-cancel" hover-class="hover" hover-start-time="20" @click="onCancel()">{{cancelText}}</view>
|
||||
<view class="prompt-sure" :style="{'background-color':themeColor,'border-top': '1px solid ' + themeColor}" @click="onSure()">{{sureText}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data(){
|
||||
return {
|
||||
visible: false,
|
||||
value: '',
|
||||
cursor: 0
|
||||
}
|
||||
},
|
||||
props:{
|
||||
title: {
|
||||
type: String,
|
||||
default: '提示'
|
||||
},
|
||||
defaultValue: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
maxlength: {
|
||||
type: Number,
|
||||
default: 18
|
||||
},
|
||||
inputType: {
|
||||
type: String,
|
||||
default: 'text'
|
||||
},
|
||||
func: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
themeColor: {
|
||||
type: String,
|
||||
default: '#C40000'
|
||||
},
|
||||
cancelText: {
|
||||
type: String,
|
||||
default: '取消'
|
||||
},
|
||||
sureText: {
|
||||
type: String,
|
||||
default: '确定'
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
defaultValue() {
|
||||
this.init()
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
init(){
|
||||
this.value = this.defaultValue
|
||||
this.cursor = this.value == ''? 0:this.value.length
|
||||
uni.$on('yomol-prompt',(data)=>{
|
||||
setTimeout(()=>{
|
||||
this.value = data
|
||||
},0)
|
||||
})
|
||||
},
|
||||
show() {
|
||||
setTimeout(() => {
|
||||
this.init()
|
||||
this.visible = true
|
||||
}, 100);
|
||||
},
|
||||
hide(){
|
||||
setTimeout(() => {
|
||||
this.value = ''
|
||||
this.visible = false
|
||||
uni.$off('yomol-prompt')
|
||||
}, 100);
|
||||
},
|
||||
onInput(e){
|
||||
this.value = e.detail.value
|
||||
if(this.value.length == this.maxlength){
|
||||
uni.hideKeyboard()
|
||||
}
|
||||
if(this.func != "" || this.func != null){
|
||||
var data = {
|
||||
value: this.value,
|
||||
callback: 'yomol-prompt',
|
||||
}
|
||||
uni.$emit(this.func,data)
|
||||
}
|
||||
},
|
||||
onCancel(){
|
||||
this.hide()
|
||||
},
|
||||
onSure(){
|
||||
this.$emit('onConfirm', this.value);
|
||||
this.hide()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.prompt {
|
||||
position: fixed;
|
||||
z-index: 6000;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
@keyframes mask{
|
||||
from{
|
||||
background: rgba(0, 0, 0, 0);
|
||||
}
|
||||
to{
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
.prompt-view {
|
||||
position: absolute;
|
||||
top: 20vw;
|
||||
width: 80vw;
|
||||
margin-left: 10vw;
|
||||
background-color: white;
|
||||
border: 1px solid #D5D5D5;
|
||||
box-shadow: 2px 2px 2px #D5D5D5;
|
||||
border-radius: 15upx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
animation: view 0.3s;
|
||||
}
|
||||
|
||||
@keyframes view{
|
||||
from{
|
||||
opacity: 0;
|
||||
transform: scale(0.8);
|
||||
}
|
||||
to{
|
||||
opacity: 1;
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
.prompt-title {
|
||||
font-size: 35upx;
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
margin-top: 30upx;
|
||||
}
|
||||
|
||||
.prompt-input {
|
||||
width: 80%;
|
||||
margin-top: 20upx;
|
||||
font-size: 30upx;
|
||||
line-height: 20px;
|
||||
padding: 15upx 0 15upx 20upx;
|
||||
border-radius: 5upx;
|
||||
border: 1px solid #D5D5D5;
|
||||
}
|
||||
|
||||
.prompt-btns {
|
||||
align-self: flex-end;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
margin-top: 50upx;
|
||||
}
|
||||
|
||||
.prompt-cancel {
|
||||
width: 50%;
|
||||
padding: 15upx;
|
||||
color: #666;
|
||||
border-top: 1px solid #E5E5E5;
|
||||
border-bottom-left-radius: 15upx;
|
||||
}
|
||||
|
||||
.prompt-sure {
|
||||
width: 50%;
|
||||
padding: 15upx;
|
||||
background-color: #C40000;
|
||||
color: white;
|
||||
border-top: 1px solid #C40000;
|
||||
border-bottom-right-radius: 15upx;
|
||||
}
|
||||
|
||||
.hover{
|
||||
background-color: #E4E4E4
|
||||
}
|
||||
</style>
|
81
components/yomol-upgrade/README.md
Executable file
@ -0,0 +1,81 @@
|
||||
## 说明
|
||||
|
||||
检测版本更新,并自动下载安装的组件
|
||||
|
||||
后台逻辑用户自定义,我的是java
|
||||
|
||||
联系QQ: 1397551270
|
||||
|
||||
|
||||
## 用法
|
||||
|
||||
**父组件**
|
||||
|
||||
```html
|
||||
<template>
|
||||
<view>
|
||||
<yomol-upgrade :type="upgradeType" :url="upgradeUrl" title="发现新版本" :content="upgradeContent" ref="yomolUpgrade"></yomol-upgrade>
|
||||
</view>
|
||||
</template>
|
||||
```
|
||||
|
||||
```js
|
||||
<script>
|
||||
import yomolUpgrade from '@/components/yomol-upgrade/yomol-upgrade.vue'
|
||||
export default {
|
||||
components:{
|
||||
yomolUpgrade
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
upgradeType: 'pkg', //pkg 整包 wgt 升级包
|
||||
upgradeContent: '', //更新内容
|
||||
upgradeUrl: '', //更新地址
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/*
|
||||
* 检测版本升级
|
||||
*/
|
||||
checkVersionClick() {
|
||||
// 获取版本信息
|
||||
plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
|
||||
var platform = uni.getSystemInfoSync().platform
|
||||
//根据当前平台去后台检测版本号
|
||||
//这是我的逻辑,可自定义
|
||||
uni.request({
|
||||
url: 'https://www.cheshangji.cn/csj-web/app/check/' + platform,
|
||||
data: {
|
||||
version: widgetInfo.version,
|
||||
name: widgetInfo.name //没啥用
|
||||
},
|
||||
success: (res) => {
|
||||
console.log(res);
|
||||
if (res.data.status == 200 && res.data.data.update) {
|
||||
//我的后台会返回一个安装包地址(pkgUrl),升级包地址(wgtUrl)
|
||||
//判空来判断是非是整包升级还是资源包升级
|
||||
//content是版本更新内容 \n换行
|
||||
//ios用户pkgUrl是苹果市场App地址,android自定义下载地址
|
||||
if (res.data.data.pkgUrl != '' && res.data.data.wgtUrl == '') {
|
||||
this.upgradeType = 'pkg'
|
||||
this.upgradeContent = res.data.data.content
|
||||
this.upgradeUrl = res.data.data.pkgUrl
|
||||
this.$refs.yomolUpgrade.show()
|
||||
} else {
|
||||
this.upgradeType = 'wgt'
|
||||
this.upgradeContent = res.data.data.content
|
||||
this.upgradeUrl = res.data.data.wgtUrl
|
||||
this.$refs.yomolUpgrade.show()
|
||||
}
|
||||
}
|
||||
},
|
||||
fail: (error) => {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
```
|
200
components/yomol-upgrade/yomol-upgrade.vue
Executable file
@ -0,0 +1,200 @@
|
||||
<template>
|
||||
<view v-if="visible" class="mark">
|
||||
<view class="view">
|
||||
<text class="title">{{title}}</text>
|
||||
<view class="tip">新版更新内容</view>
|
||||
<scroll-view class="scroll" scroll-y>
|
||||
<view class="item" v-for="(item,index) in contents" :key="index">
|
||||
{{item}}
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view v-if="!downloading" class="btns">
|
||||
<image class="icon" src="../../static/ic_download.png"></image>
|
||||
<view class="sure" @click="onSureClick()">马上升级</view>
|
||||
</view>
|
||||
<cmd-progress v-else class="progress" type="line" stroke-color="#1ca52e" :percent="progress">
|
||||
</cmd-progress>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import cmdProgress from '@/components/cmd-progress/cmd-progress.vue'
|
||||
export default {
|
||||
components: {
|
||||
cmdProgress
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
progress: 0,
|
||||
contents: [],
|
||||
downloading: false,
|
||||
success: true
|
||||
}
|
||||
},
|
||||
props: {
|
||||
type: {
|
||||
type: String,
|
||||
default: 'pkg'
|
||||
},
|
||||
url: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '版本更新'
|
||||
},
|
||||
content: {
|
||||
type: String,
|
||||
default: ""
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
content() {
|
||||
var strs = this.content.split('\\n')
|
||||
for (var i = 0; i < strs.length; i++) {
|
||||
this.contents.push(strs[i])
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
show() {
|
||||
setTimeout(() => {
|
||||
if (this.success) {
|
||||
this.visible = true
|
||||
}
|
||||
}, 100);
|
||||
},
|
||||
hide() {
|
||||
setTimeout(() => {
|
||||
this.visible = false
|
||||
}, 100);
|
||||
},
|
||||
onCancelClick() {
|
||||
this.hide()
|
||||
},
|
||||
onSureClick() {
|
||||
var _self= this
|
||||
var platform = uni.getSystemInfoSync().platform
|
||||
if (platform == 'ios' && this.type == 'pkg') {
|
||||
plus.runtime.openURL(this.url);
|
||||
} else {
|
||||
_self.downloading = true
|
||||
var downloadTask = uni.downloadFile({
|
||||
url: this.url,
|
||||
success: (downloadResult) => {
|
||||
this.hide()
|
||||
if (downloadResult.statusCode === 200) {
|
||||
plus.runtime.install(downloadResult.tempFilePath, {
|
||||
force: false
|
||||
}, function() {
|
||||
plus.runtime.restart();
|
||||
}, (e) => {
|
||||
console.log(e);
|
||||
this.success = false
|
||||
uni.showToast({
|
||||
title: '安装升级包失败',
|
||||
icon: 'none'
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
downloadTask.onProgressUpdate((e) => {
|
||||
_self.progress = e.progress
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.mark {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.view {
|
||||
width: 80vw;
|
||||
height: 70vw;
|
||||
background-color: white;
|
||||
border-radius: 15rpx;
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
margin-top: 20rpx;
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
font-size: 38rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tip {
|
||||
margin-top: 20rpx;
|
||||
margin-left: 30rpx;
|
||||
align-self: flex-start;
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.scroll {
|
||||
width: 100%;
|
||||
height: 200rpx;
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
justify-content: flex-start;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.item {
|
||||
margin-left: 50rpx;
|
||||
text-align: left;
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.btns {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.icon {
|
||||
width: 45rpx;
|
||||
height: 45rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.sure {
|
||||
padding: 10rpx 0;
|
||||
text-align: center;
|
||||
color: #008B8B;
|
||||
font-size: 30rpx;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.progress {
|
||||
margin-bottom: 20rpx;
|
||||
width: 80%;
|
||||
|
||||
}
|
||||
</style>
|
@ -8,6 +8,7 @@ let api = {
|
||||
baseUrl: apiRoot + clinetDuty,
|
||||
getAppVersion: apiRoot + clinetDuty + "app/appversion/get-number/29605432-4eb4-4c19-a01c-89f05486fd9a",
|
||||
appDownloadUrl: apiRoot + clinetDuty + "app/appversion/download/29605432-4eb4-4c19-a01c-89f05486fd9a",
|
||||
doUploadImg: apiRoot + clinetDuty + "app/file/uploadimage",
|
||||
},
|
||||
news: {
|
||||
getMainFun: apiRoot + clinetNews + "app/newsdirectories/listnewsdirectoriesrelease",
|
||||
@ -46,8 +47,11 @@ let api = {
|
||||
doLogin: apiRoot + clinetUser + "app/sign/default", //post 登录
|
||||
doRegister: apiRoot + clinetUser + "app/register/saveregisteruser", //post 注册
|
||||
doChangePhone: apiRoot + clinetUser + "app/user/updatephoneusername", //修改手机号 put
|
||||
doChangePwd: apiRoot + clinetUser + "app/user/updateuserpassword", //put 修改密码
|
||||
getUserInfo: apiRoot + clinetUser + "app/user/getappuser", //获取用户基础信息
|
||||
doChangePwd: apiRoot + clinetUser + "app/user/update-password", //put 修改密码
|
||||
getUserInfo: apiRoot + clinetUser + "app/user/get-app-user", //获取用户基础信息
|
||||
doUpdateUserIcon: apiRoot + clinetDuty + "app/user/update-avatar", //更新用户头像
|
||||
doUpdateUserInfo: apiRoot + clinetDuty + "app/user/update-info", //更改用户信息
|
||||
|
||||
},
|
||||
wechat: {
|
||||
miniAppLogin: apiRoot + 'wechat/miniAppLogin',
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"name" : "tree_planting",
|
||||
"name" : "义务植树",
|
||||
"appid" : "__UNI__BAFB016",
|
||||
"description" : "",
|
||||
"versionName" : "1.0.0",
|
||||
@ -43,12 +43,53 @@
|
||||
]
|
||||
},
|
||||
/* ios打包配置 */
|
||||
"ios" : {},
|
||||
"ios" : {
|
||||
"dSYMs" : false
|
||||
},
|
||||
/* SDK配置 */
|
||||
"sdkConfigs" : {},
|
||||
"sdkConfigs" : {
|
||||
"ad" : {}
|
||||
},
|
||||
"splashscreen" : {
|
||||
"androidStyle" : "common",
|
||||
"useOriginalMsgbox" : false
|
||||
"androidStyle" : "default",
|
||||
"useOriginalMsgbox" : false,
|
||||
"android" : {
|
||||
"hdpi" : "/Users/adam/Downloads/splash_480.png",
|
||||
"xhdpi" : "/Users/adam/Downloads/splash_720.png",
|
||||
"xxhdpi" : "/Users/adam/Downloads/splash_1080.png"
|
||||
}
|
||||
},
|
||||
"icons" : {
|
||||
"android" : {
|
||||
"hdpi" : "unpackage/res/icons/72x72.png",
|
||||
"xhdpi" : "unpackage/res/icons/96x96.png",
|
||||
"xxhdpi" : "unpackage/res/icons/144x144.png",
|
||||
"xxxhdpi" : "unpackage/res/icons/192x192.png"
|
||||
},
|
||||
"ios" : {
|
||||
"appstore" : "unpackage/res/icons/1024x1024.png",
|
||||
"ipad" : {
|
||||
"app" : "unpackage/res/icons/76x76.png",
|
||||
"app@2x" : "unpackage/res/icons/152x152.png",
|
||||
"notification" : "unpackage/res/icons/20x20.png",
|
||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||
"proapp@2x" : "unpackage/res/icons/167x167.png",
|
||||
"settings" : "unpackage/res/icons/29x29.png",
|
||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||
"spotlight" : "unpackage/res/icons/40x40.png",
|
||||
"spotlight@2x" : "unpackage/res/icons/80x80.png"
|
||||
},
|
||||
"iphone" : {
|
||||
"app@2x" : "unpackage/res/icons/120x120.png",
|
||||
"app@3x" : "unpackage/res/icons/180x180.png",
|
||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||
"notification@3x" : "unpackage/res/icons/60x60.png",
|
||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||
"settings@3x" : "unpackage/res/icons/87x87.png",
|
||||
"spotlight@2x" : "unpackage/res/icons/80x80.png",
|
||||
"spotlight@3x" : "unpackage/res/icons/120x120.png"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
16
pages.json
@ -144,7 +144,23 @@
|
||||
"navigationBarTitleText": "尽责形式说明",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/changeMineInfo",
|
||||
"style": {
|
||||
"navigationBarBackgroundColor": "#FFFFFF",
|
||||
"navigationBarTextStyle": "black",
|
||||
"navigationBarTitleText": "个人信息",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
}, {
|
||||
"path": "pages/user/changePwdPage",
|
||||
"style": {
|
||||
|
||||
"navigationBarBackgroundColor": "#FFFFFF",
|
||||
"navigationBarTextStyle": "black",
|
||||
"navigationBarTitleText": "修改密码",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"globalStyle": {
|
||||
|
@ -156,6 +156,7 @@
|
||||
url: "/pages/user/login"
|
||||
})
|
||||
} else {
|
||||
console.log(this.list2)
|
||||
this.getData2()
|
||||
}
|
||||
}
|
||||
@ -259,8 +260,8 @@
|
||||
},
|
||||
|
||||
success: res => {
|
||||
console.log(res)
|
||||
if (res != undefined) {
|
||||
console.log(res.status)
|
||||
if (res != undefined && res.status == undefined) {
|
||||
for (var i = 0; i < res.length; i++) {
|
||||
if (res[i].activityDTO.photo) {
|
||||
var index = res[i].activityDTO.photo.indexOf(",")
|
||||
@ -271,7 +272,10 @@
|
||||
}
|
||||
}
|
||||
this.list2 = res
|
||||
} else {
|
||||
this.list2 = []
|
||||
}
|
||||
|
||||
},
|
||||
fail: res => {
|
||||
uni.showToast({
|
||||
|
@ -89,7 +89,7 @@
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
overflow: auto;
|
||||
height: 100%;
|
||||
background: #fff;
|
||||
}
|
||||
|
@ -2,9 +2,9 @@
|
||||
<view class="page">
|
||||
<view class="status-bar"></view>
|
||||
<view class="content">
|
||||
<!-- Banner -->
|
||||
<scroller @init="initScroller" @down="refreshData" @up="getData" :up="optUp"
|
||||
@scroll="navFloatShow(scroller)" :fixed="false">
|
||||
<!-- 搜索框 -->
|
||||
<view class="search">
|
||||
<view class="search-content">
|
||||
<image src="../../static/images/ic_search.png" class="icon" mode="scaleToFill"></image>
|
||||
@ -12,11 +12,12 @@
|
||||
</view>
|
||||
<view class="btn" @click="doSearch">搜索</view>
|
||||
</view>
|
||||
<!-- 轮播图 -->
|
||||
<swiper v-if="slider.length > 0" class="swiper" :indicator-dots="true" :autoplay="true"
|
||||
:circular="true">
|
||||
indicator-color="#E4E4E4" indicator-active-color="#009749" :circular="true">
|
||||
<swiper-item v-for="(item, index) in slider" :key="index">
|
||||
<navigator class="item" hover-class="none"
|
||||
:url="'/pages/news/newsdetail?url='+baseurl+item.templateRecordUrl">
|
||||
<navigator class="swiper-item" hover-class="none"
|
||||
:url="'/pages/news/newsdetail?url='+item.templateRecordUrl">
|
||||
<image :lazy-load="true" :src="item.imageUrl" mode="scaleToFill"></image>
|
||||
|
||||
</navigator>
|
||||
@ -27,6 +28,8 @@
|
||||
</scroller>
|
||||
</view>
|
||||
<pageLoading v-if="showPageLoading"></pageLoading>
|
||||
<yomol-upgrade :type="upgradeType" :url="upgradeUrl" title="发现新版本" :content="upgradeContent" ref="yomolUpgrade">
|
||||
</yomol-upgrade>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@ -35,13 +38,15 @@
|
||||
import articleList from '@/components/article/list.vue';
|
||||
import pageLoading from '@/components/loading/pageLoading.vue';
|
||||
import iconfont from '@/components/iconfont/iconfont.vue';
|
||||
import yomolUpgrade from '@/components/yomol-upgrade/yomol-upgrade.vue'
|
||||
import util from '@/common/util.js';
|
||||
export default {
|
||||
components: {
|
||||
articleList,
|
||||
pageLoading,
|
||||
scroller,
|
||||
iconfont
|
||||
iconfont,
|
||||
yomolUpgrade
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -72,6 +77,9 @@
|
||||
token: "",
|
||||
searchContent: "",
|
||||
baseurl: this.$api.common.baseUrl,
|
||||
upgradeType: 'pkg', //pkg 整包 wgt 升级包
|
||||
upgradeContent: '', //更新内容
|
||||
upgradeUrl: '', //更新地址
|
||||
|
||||
};
|
||||
},
|
||||
@ -96,6 +104,7 @@
|
||||
if (this.token && this.token != '' && userInfo.name == undefined) {
|
||||
this.getUserInfo()
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
onShareAppMessage() {
|
||||
@ -107,10 +116,10 @@
|
||||
},
|
||||
onLoad(e) {
|
||||
// #ifdef APP-PLUS
|
||||
// this.getAppVersion(plus.runtime.versionCode)
|
||||
this.startDownloadApk()
|
||||
this.getAppVersion()
|
||||
// #endif
|
||||
this.getBannerList();
|
||||
|
||||
},
|
||||
onPullDownRefresh() {
|
||||
uni.showLoading({
|
||||
@ -299,9 +308,9 @@
|
||||
},
|
||||
success: res => {
|
||||
if (res) {
|
||||
getApp().globalData.userInfo = res
|
||||
getApp().globalData.userInfo = res;
|
||||
uni.setStorageSync("userInfo", res);
|
||||
}
|
||||
console.log(getApp().globalData.userInfo)
|
||||
},
|
||||
complete: res => {
|
||||
|
||||
@ -309,60 +318,26 @@
|
||||
})
|
||||
},
|
||||
getAppVersion(version) {
|
||||
this.$app.request({
|
||||
url: this.$api.common.getAppVersion,
|
||||
method: "GET",
|
||||
success: res => {
|
||||
if (res) {
|
||||
if (res.data > version) {
|
||||
this.startDownloadApk()
|
||||
}
|
||||
}
|
||||
},
|
||||
complete: res => {
|
||||
var _self = this;
|
||||
var versionUrl = _self.$api.common.getAppVersion;
|
||||
var downloadUrl = _self.$api.common.appDownloadUrl
|
||||
uni.request({
|
||||
url: versionUrl,
|
||||
success(res) {
|
||||
plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
|
||||
var appId = wgtinfo.appid;
|
||||
var appVersion = wgtinfo.versionCode;
|
||||
|
||||
}
|
||||
if (res.data.data && res.data.data > appVersion) {
|
||||
_self.upgradeType = 'pkg'
|
||||
_self.upgradeContent = "新增部分更能,请更新;"
|
||||
_self.upgradeUrl = downloadUrl
|
||||
_self.$refs.yomolUpgrade.show()
|
||||
} else {}
|
||||
});
|
||||
},
|
||||
startDownloadApk() {
|
||||
//开始下载Apk
|
||||
console.log("开始下载Apk")
|
||||
// #ifdef APP-PLUS
|
||||
const dtask = plus.downloader.createDownload(this.$api.common.appDownloadUrl, {
|
||||
force: true
|
||||
}, function(d, status) {
|
||||
console.log(status)
|
||||
// 下载完成
|
||||
if (status == 200) {
|
||||
var path = (d.filename); //文件安装路径
|
||||
plus.runtime.install(path, {}, function() {
|
||||
plus.nativeUI.closeWaiting(); //关闭系统等待对话框
|
||||
if (name == 'wgt') {
|
||||
console.log("安装wgt文件成功!");
|
||||
} else {
|
||||
console.log("安装apk文件成功!")
|
||||
}
|
||||
|
||||
plus.nativeUI.alert("引用资源更新完成!", function() {
|
||||
plus.runtime.restart();
|
||||
fail(error) {}
|
||||
})
|
||||
}, function(e) {
|
||||
plus.nativeUI.closeWaiting(); //关闭系统等待对话框
|
||||
if (name == 'wgt') {
|
||||
console.log("安装wgt文件失败[" + e.code + "]:" + e.message);
|
||||
plus.nativeUI.alert("安装wgt文件失败[" + e.code + "]:" + e.message);
|
||||
} else {
|
||||
console.log("安装apk文件失败[" + e.code + "]:" + e.message);
|
||||
plus.nativeUI.alert("安装apk文件失败[" + e.code + "]:" + e.message);
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
} else {
|
||||
alert("Download failed:" + status);
|
||||
}
|
||||
})
|
||||
// #endif
|
||||
},
|
||||
doSearch() {
|
||||
uni.hideKeyboard()
|
||||
@ -568,11 +543,11 @@
|
||||
|
||||
/*幻灯片广告 */
|
||||
.swiper {
|
||||
height: 350rpx;
|
||||
height: 450rpx;
|
||||
margin: 14rpx 24rpx 0;
|
||||
|
||||
image {
|
||||
height: 350rpx;
|
||||
height: 410rpx;
|
||||
width: 100%;
|
||||
border-radius: 15rpx;
|
||||
//box-shadow: 0 0 12px #dddee1;
|
||||
@ -580,14 +555,21 @@
|
||||
|
||||
.current {
|
||||
width: 98%;
|
||||
height: 350rpx;
|
||||
height: 380rpx;
|
||||
margin: 1.0% 1.0%;
|
||||
transition: all 0.2s ease-in 0s;
|
||||
}
|
||||
|
||||
.item {
|
||||
.swiper-item {
|
||||
position: relative;
|
||||
|
||||
image {
|
||||
height: 410rpx;
|
||||
width: 100%;
|
||||
border-radius: 15rpx;
|
||||
//box-shadow: 0 0 12px #dddee1;
|
||||
}
|
||||
|
||||
.title {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
|
255
pages/user/changeMineInfo.vue
Executable file
@ -0,0 +1,255 @@
|
||||
<template>
|
||||
<view class="page">
|
||||
<view class="content">
|
||||
<view class="base-person">
|
||||
<view class="item">
|
||||
<view class="item-title">姓名</view>
|
||||
<input @input="inputBaseName" :value="name" placeholder="请输入您的姓名" />
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="item-title">联系电话</view>
|
||||
<input @input="inputBasePhone" :value="phone" placeholder="请输入常用手机号码" />
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="item-title">身份证号码</view>
|
||||
<input @input="inputBaseIdCard" :value="idcard" placeholder="请输入身份证号码" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="save-btn" @click="doSave">确认提交</view>
|
||||
</view>
|
||||
<pageLoading v-if="showPageLoading"></pageLoading>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import pageLoading from '@/components/loading/pageLoading.vue';
|
||||
export default {
|
||||
components: {
|
||||
pageLoading
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
token: '',
|
||||
name: "",
|
||||
phone: "",
|
||||
idcard: "",
|
||||
showPageLoading: true,
|
||||
userInfo: {}
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
inputBaseName(event) {
|
||||
this.name = event.target.value
|
||||
},
|
||||
inputBasePhone(event) {
|
||||
this.phone = event.target.value
|
||||
},
|
||||
inputBaseIdCard(event) {
|
||||
this.idcard = event.target.value
|
||||
},
|
||||
doSave() {
|
||||
var _self = this;
|
||||
if (this.checkParams()) {
|
||||
uni.showLoading({
|
||||
title: "保存中..."
|
||||
})
|
||||
_self.$app.request({
|
||||
url: _self.$api.user.doUpdateUserInfo,
|
||||
method: 'PUT',
|
||||
header: {
|
||||
token: getApp().globalData.token
|
||||
},
|
||||
data: {
|
||||
"avatar": _self.userInfo.avatar,
|
||||
"email": _self.userInfo.email,
|
||||
"name": _self.name,
|
||||
"phone": _self.phone
|
||||
},
|
||||
success: res => {
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
icon: "success",
|
||||
title: "保存成功"
|
||||
})
|
||||
let pages = getCurrentPages(); // 当前页面
|
||||
let beforePage = pages[pages.length - 2]; // 前一个页面
|
||||
beforePage.$vm.isRefresh = true;
|
||||
uni.navigateBack()
|
||||
},
|
||||
fail: res => {
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
icon: "error",
|
||||
title: "系统错误",
|
||||
duration: 2000
|
||||
})
|
||||
},
|
||||
complete: res => {
|
||||
uni.hideLoading()
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
checkParams() {
|
||||
var _self = this;
|
||||
if (_self.name == '') {
|
||||
uni.showToast({
|
||||
title: '请输入姓名'
|
||||
})
|
||||
return false;
|
||||
}
|
||||
if (_self.phone == '') {
|
||||
uni.showToast({
|
||||
title: '请输入电话'
|
||||
})
|
||||
return false;
|
||||
}
|
||||
if (_self.email == '') {
|
||||
uni.showToast({
|
||||
title: '请输入邮箱'
|
||||
})
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
getUserInfo() {
|
||||
var _self = this;
|
||||
_self.$app.request({
|
||||
url: _self.$api.user.getUserInfo,
|
||||
method: 'GET',
|
||||
header: {
|
||||
token: getApp().globalData.token
|
||||
},
|
||||
success: res => {
|
||||
if (res) {
|
||||
getApp().globalData.userInfo = res;
|
||||
_self.userInfo = res;
|
||||
_self.name = _self.userInfo.name;
|
||||
_self.phone = _self.userInfo.phone;
|
||||
}
|
||||
},
|
||||
complete: res => {
|
||||
_self.showPageLoading = false;
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
var _self = this;
|
||||
_self.token = getApp().globalData.token;
|
||||
_self.getUserInfo()
|
||||
},
|
||||
onUnload() {},
|
||||
onShow() {
|
||||
var _self = this;
|
||||
uni.getStorage({
|
||||
key: 'token',
|
||||
success: res => {
|
||||
_self.token = res.data;
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
|
||||
.page {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
overflow: auto;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.content {
|
||||
flex: 1;
|
||||
width: 100%;
|
||||
height: 100rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.base-person {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: flex-start;
|
||||
font-size: 32rpx;
|
||||
background: white;
|
||||
margin-bottom: 20rpx;
|
||||
margin-top: 30rpx;
|
||||
width: 100%;
|
||||
|
||||
.item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: 20rpx;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
width: 95%;
|
||||
|
||||
.item-title {
|
||||
font-size: 32rpx;
|
||||
width: 100%;
|
||||
background: #e4f3f2;
|
||||
padding: 10rpx;
|
||||
}
|
||||
|
||||
.item-title-box {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
background: #f2f2f2;
|
||||
padding: 10rpx;
|
||||
width: 100%;
|
||||
|
||||
.item-title-name {
|
||||
font-size: 20rpx;
|
||||
}
|
||||
|
||||
.item-title-del {
|
||||
color: darkgreen;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
input {
|
||||
margin-top: 20rpx;
|
||||
padding: 10rpx;
|
||||
width: 95%;
|
||||
font-size: 32rpx;
|
||||
border: 1rpx #d3d3d3 solid;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.add-person {
|
||||
color: green;
|
||||
border: 1rpx #c28127 solid;
|
||||
border-radius: 10rpx;
|
||||
text-align: center;
|
||||
align-self: flex-start;
|
||||
margin-top: 10rpx;
|
||||
border-radius: 10rpx;
|
||||
width: 25%;
|
||||
padding: 10rpx;
|
||||
}
|
||||
|
||||
.save-btn {
|
||||
color: white;
|
||||
background-color: green;
|
||||
border-radius: 10rpx;
|
||||
text-align: center;
|
||||
align-self: center;
|
||||
margin: 30rpx 40rpx;
|
||||
width: 500rpx;
|
||||
padding: 20rpx;
|
||||
font-size: 32rpx;
|
||||
}
|
||||
</style>
|
241
pages/user/changePwdPage.vue
Executable file
@ -0,0 +1,241 @@
|
||||
<template>
|
||||
<view class="page">
|
||||
<view class="content">
|
||||
<view class="base-person">
|
||||
<view class="item">
|
||||
<view class="item-title">原密码</view>
|
||||
<input @input="inputOrgPwd" :value="ypassword" placeholder="请输入原密码" />
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="item-title">新密码</view>
|
||||
<input @input="inputNewPwd" :value="npassword" placeholder="请输入新密码" />
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="item-title">确认密码</view>
|
||||
<input @input="inputConfirmPwd" :value="rnpassword" placeholder="请确认新密码" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="save-btn" @click="changePassword">确认提交</view>
|
||||
</view>
|
||||
<pageLoading v-if="showPageLoading"></pageLoading>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import pageLoading from '@/components/loading/pageLoading.vue';
|
||||
import md5 from "@/common/md5";
|
||||
export default {
|
||||
components: {
|
||||
pageLoading
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
token: '',
|
||||
ypassword: '',
|
||||
npassword: '',
|
||||
rnpassword: '',
|
||||
showPageLoading: true,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
inputOrgPwd(event) {
|
||||
this.ypassword = event.target.value
|
||||
},
|
||||
inputNewPwd(event) {
|
||||
this.npassword = event.target.value
|
||||
},
|
||||
inputConfirmPwd(event) {
|
||||
this.rnpassword = event.target.value
|
||||
},
|
||||
changePassword() {
|
||||
var _self = this
|
||||
if (_self.checkParams()) {
|
||||
uni.showLoading({
|
||||
title: '修改中...',
|
||||
})
|
||||
_self.$app.request({
|
||||
url: _self.$api.user.doChangePwd,
|
||||
method: 'PUT',
|
||||
data: {
|
||||
'newPassword': md5(md5(md5(_self.npassword))),
|
||||
'oldPassword': md5(md5(md5(_self.ypassword)))
|
||||
},
|
||||
success: (res) => {
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
icon: "success",
|
||||
title: '修改成功',
|
||||
success() {
|
||||
setTimeout(function() {
|
||||
let pages = getCurrentPages(); // 当前页面
|
||||
let beforePage = pages[pages.length - 2]; // 前一个页面
|
||||
beforePage.$vm.loginOut = true;
|
||||
uni.navigateBack()
|
||||
}, 1000);
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
fail(error) {
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title: '修改失败',
|
||||
duration: 1000
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
checkParams() {
|
||||
var _self = this;
|
||||
if (_self.ypassword == '') {
|
||||
uni.showToast({
|
||||
title: '请输入原密码',
|
||||
duration: 1000
|
||||
})
|
||||
return false;
|
||||
}
|
||||
if (_self.npassword == '') {
|
||||
uni.showToast({
|
||||
title: '请输入新密码',
|
||||
duration: 1000
|
||||
})
|
||||
return false;
|
||||
}
|
||||
if (_self.rnpassword == '') {
|
||||
uni.showToast({
|
||||
title: '请输入新密码',
|
||||
duration: 1000
|
||||
})
|
||||
return false;
|
||||
}
|
||||
if (_self.npassword != _self.rnpassword) {
|
||||
uni.showToast({
|
||||
title: '新密码不相同',
|
||||
duration: 1000
|
||||
})
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
var _self = this;
|
||||
_self.token = getApp().globalData.token
|
||||
|
||||
},
|
||||
onUnload() {},
|
||||
onShow() {
|
||||
var _self = this;
|
||||
uni.getStorage({
|
||||
key: 'token',
|
||||
success: res => {
|
||||
_self.token = res.data;
|
||||
}
|
||||
});
|
||||
_self.showPageLoading = false
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
|
||||
.page {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
overflow: auto;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.content {
|
||||
flex: 1;
|
||||
width: 100%;
|
||||
height: 100rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.base-person {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: flex-start;
|
||||
font-size: 32rpx;
|
||||
background: white;
|
||||
margin-bottom: 20rpx;
|
||||
margin-top: 30rpx;
|
||||
width: 100%;
|
||||
|
||||
.item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: 20rpx;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
width: 95%;
|
||||
|
||||
.item-title {
|
||||
font-size: 32rpx;
|
||||
width: 100%;
|
||||
background: #e4f3f2;
|
||||
padding: 10rpx;
|
||||
}
|
||||
|
||||
.item-title-box {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
background: #f2f2f2;
|
||||
padding: 10rpx;
|
||||
width: 100%;
|
||||
|
||||
.item-title-name {
|
||||
font-size: 20rpx;
|
||||
}
|
||||
|
||||
.item-title-del {
|
||||
color: darkgreen;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
input {
|
||||
margin-top: 20rpx;
|
||||
padding: 10rpx;
|
||||
width: 95%;
|
||||
font-size: 32rpx;
|
||||
border: 1rpx #d3d3d3 solid;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.add-person {
|
||||
color: green;
|
||||
border: 1rpx #c28127 solid;
|
||||
border-radius: 10rpx;
|
||||
text-align: center;
|
||||
align-self: flex-start;
|
||||
margin-top: 10rpx;
|
||||
border-radius: 10rpx;
|
||||
width: 25%;
|
||||
padding: 10rpx;
|
||||
}
|
||||
|
||||
.save-btn {
|
||||
color: white;
|
||||
background-color: green;
|
||||
border-radius: 10rpx;
|
||||
text-align: center;
|
||||
align-self: center;
|
||||
margin: 30rpx 40rpx;
|
||||
width: 500rpx;
|
||||
padding: 20rpx;
|
||||
font-size: 32rpx;
|
||||
}
|
||||
</style>
|
@ -3,11 +3,11 @@
|
||||
<view class="status-bar"></view>
|
||||
<!-- 头像与名称 -->
|
||||
<view class="avatar">
|
||||
<image :src="userIcon" mode="aspectFill" class="icon"></image>
|
||||
<image :src="userIcon" mode="aspectFill" class="icon" @click="choseImg"></image>
|
||||
<view class="text">
|
||||
<view class="name">{{userName}}</view>
|
||||
<view class="btn">
|
||||
<image src="../../static/images/ic_edit_icon.png"></image>
|
||||
<view class="btn" @click="changeInfo">
|
||||
<image src="/static/images/ic_edit_icon.png"></image>
|
||||
<text style="margin-left: 10rpx;">完善个人资料</text>
|
||||
</view>
|
||||
</view>
|
||||
@ -59,6 +59,14 @@
|
||||
<image src="../../static/images/ic_arrow_right.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
|
||||
<view class="item" @click="changePwd">
|
||||
<view class="item-content">
|
||||
<image src="../../static/images/ic_print_icon.png" mode="aspectFill"></image>
|
||||
<text>修改密码</text>
|
||||
</view>
|
||||
<image src="../../static/images/ic_arrow_right.png" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="login-btn" @click="doLoginOrOut">{{isLogin?'退出登录':'登录'}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
@ -67,15 +75,232 @@
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
userIcon: "../../static/images/ic_user_default.png",
|
||||
userName: "昵称"
|
||||
userIcon: "/static/images/ic_user_default.png",
|
||||
userName: "昵称",
|
||||
token: "",
|
||||
isLogin: false,
|
||||
imgUrl: this.$api.common.imgUrl,
|
||||
userInfo: {},
|
||||
isRefresh: false,
|
||||
loginOut: false
|
||||
}
|
||||
},
|
||||
onLoad(res) {
|
||||
this.token = getApp().globalData.token
|
||||
},
|
||||
onShow() {
|
||||
var _self = this
|
||||
this.token = getApp().globalData.token
|
||||
if (this.token != "") {
|
||||
if (!this.isLogin && JSON.stringify(this.userInfo) == "{}") {
|
||||
this.isLogin = true;
|
||||
this.getUserInfo()
|
||||
}
|
||||
if (_self.isRefresh) {
|
||||
_self.isRefresh = false;
|
||||
_self.getUserInfo();
|
||||
}
|
||||
if (_self.loginOut) {
|
||||
_self.loginOut = false
|
||||
uni.removeStorage({
|
||||
key: 'token',
|
||||
success() {
|
||||
getApp().globalData.token = "";
|
||||
_self.userName = "义务植树";
|
||||
_self.userIcon = "/static/images/ic_user_default.png";
|
||||
_self.token = "";
|
||||
_self.isLogin = false;
|
||||
}
|
||||
})
|
||||
_self.userInfo = {}
|
||||
uni.removeStorage({
|
||||
key: 'userInfo',
|
||||
success() {}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
methods: {
|
||||
openPage(url) {
|
||||
uni.navigateTo({
|
||||
url: url
|
||||
})
|
||||
},
|
||||
choseImg() {
|
||||
var _self = this
|
||||
if (_self.isLogin) {
|
||||
uni.chooseImage({
|
||||
count: 1, //默认9
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album'], //从相册选择
|
||||
success: function(res) {
|
||||
uni.showLoading({
|
||||
title: "头像上传中...",
|
||||
})
|
||||
var startIndex = res.tempFilePaths[0].lastIndexOf("/");
|
||||
var fileName = res.tempFilePaths[0].substring(startIndex + 1, res.tempFilePaths[0]
|
||||
.length);
|
||||
uni.uploadFile({
|
||||
url: _self.$api.common.doUploadImg,
|
||||
filePath: res.tempFilePaths[0],
|
||||
name: 'image',
|
||||
formData: {
|
||||
"image": fileName
|
||||
},
|
||||
header: {
|
||||
"token": _self.token
|
||||
},
|
||||
success: res => {
|
||||
if (res.statusCode == 200) {
|
||||
var imgData = res.data;
|
||||
var imgIdObj = JSON.parse(imgData);
|
||||
_self.userIcon = _self.imgUrl + imgIdObj.data
|
||||
_self.userInfo.avatar = imgIdObj.data
|
||||
uni.setStorageSync('userInfo', _self.userInfo);
|
||||
_self.changeUserInfo(_self.userInfo);
|
||||
|
||||
} else {
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title: "上传失败,请重试",
|
||||
duration: 1000
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
fail: (error) => {
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title: "上传失败,请重试",
|
||||
duration: 1000
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
uni.setStorageSync("loginOriginUrl", "/pages/user/index");
|
||||
uni.navigateTo({
|
||||
url: "/pages/user/login"
|
||||
})
|
||||
}
|
||||
},
|
||||
changeUserInfo(uStr) {
|
||||
var _self = this;
|
||||
uni.request({
|
||||
method: 'PUT',
|
||||
url: _self.$api.user.doUpdateUserIcon,
|
||||
data: {
|
||||
'email': uStr.email,
|
||||
'name': uStr.name,
|
||||
'phone': uStr.phone,
|
||||
'avatar': uStr.avatar
|
||||
},
|
||||
header: {
|
||||
'token': _self.token,
|
||||
},
|
||||
success(res) {
|
||||
uni.showToast({
|
||||
title: "上传成功",
|
||||
duration: 1000
|
||||
})
|
||||
},
|
||||
fail(error) {
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title: '上传失败,请重试',
|
||||
duration: 1000
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
changePwd() {
|
||||
if (this.isLogin) {
|
||||
uni.navigateTo({
|
||||
url: './changePwdPage'
|
||||
})
|
||||
} else {
|
||||
uni.setStorageSync("loginOriginUrl", "/pages/user/index");
|
||||
uni.navigateTo({
|
||||
url: "/pages/user/login"
|
||||
})
|
||||
}
|
||||
},
|
||||
changeInfo() {
|
||||
if (this.isLogin) {
|
||||
uni.navigateTo({
|
||||
url: './changeMineInfo'
|
||||
})
|
||||
} else {
|
||||
uni.setStorageSync("loginOriginUrl", "/pages/user/index");
|
||||
uni.navigateTo({
|
||||
url: "/pages/user/login"
|
||||
})
|
||||
}
|
||||
},
|
||||
getUserInfo() {
|
||||
var _self = this;
|
||||
_self.$app.request({
|
||||
url: _self.$api.user.getUserInfo,
|
||||
method: 'GET',
|
||||
header: {
|
||||
token: getApp().globalData.token
|
||||
},
|
||||
success: res => {
|
||||
if (res) {
|
||||
console.log(res)
|
||||
getApp().globalData.userInfo = res;
|
||||
_self.userInfo = res
|
||||
uni.setStorageSync("userInfo", res);
|
||||
_self.userName = _self.userInfo.name
|
||||
if (_self.userInfo.avatar != "") {
|
||||
_self.userIcon = _self.imgUrl + _self.userInfo.avatar
|
||||
}
|
||||
}
|
||||
},
|
||||
complete: res => {
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
doLoginOrOut() {
|
||||
if (this.isLogin) {
|
||||
this.logout()
|
||||
} else {
|
||||
uni.setStorageSync("loginOriginUrl", "/pages/user/index");
|
||||
uni.navigateTo({
|
||||
url: "/pages/user/login"
|
||||
})
|
||||
}
|
||||
},
|
||||
logout() {
|
||||
var _self = this;
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '确认退出吗?',
|
||||
showCancel: true,
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
uni.removeStorage({
|
||||
key: 'token',
|
||||
success() {
|
||||
getApp().globalData.token = "";
|
||||
_self.token = "";
|
||||
_self.isLogin = false;
|
||||
}
|
||||
})
|
||||
uni.removeStorage({
|
||||
key: 'userInfo',
|
||||
success() {
|
||||
uni.reLaunch({
|
||||
url: '/pages/news/index'
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -91,7 +316,7 @@
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
overflow: auto;
|
||||
height: 100%;
|
||||
background: #F2F2F2;
|
||||
}
|
||||
@ -208,4 +433,13 @@
|
||||
margin-top: 40rpx;
|
||||
background: #e8e8e8;
|
||||
}
|
||||
|
||||
.login-btn {
|
||||
text-align: center;
|
||||
padding: 20rpx;
|
||||
color: white;
|
||||
margin: 40rpx;
|
||||
background: #169602;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
</style>
|
||||
|
@ -67,6 +67,24 @@
|
||||
computed: mapState(['isLogin']),
|
||||
methods: {
|
||||
...mapMutations(['login']),
|
||||
getUserInfo() {
|
||||
this.$app.request({
|
||||
url: this.$api.user.getUserInfo,
|
||||
method: 'GET',
|
||||
header: {
|
||||
token: getApp().globalData.token
|
||||
},
|
||||
success: res => {
|
||||
if (res) {
|
||||
getApp().globalData.userInfo = res;
|
||||
uni.setStorageSync("userInfo", res);
|
||||
}
|
||||
},
|
||||
complete: res => {
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
bindLogin() {
|
||||
if (!validator.checkMobile(this.mobile)) {
|
||||
return;
|
||||
@ -91,8 +109,8 @@
|
||||
dataType: 'json',
|
||||
success: res => {
|
||||
uni.hideLoading();
|
||||
console.log(res)
|
||||
if (res != undefined) {
|
||||
console.log(res.msg != undefined)
|
||||
if (res != undefined && res.msg == undefined) {
|
||||
/*更新登录状态,保存用户数据*/
|
||||
this.hasLogin = true;
|
||||
this.login(res.data);
|
||||
|
BIN
static/ic_download.png
Executable file
After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 2.8 KiB |
1
unpackage/cache/apk/apkurl
vendored
Normal file
@ -0,0 +1 @@
|
||||
https://ide.dcloud.net.cn/build/download/ba83fba0-a75d-11ed-8f39-b9ce2c3ea2d2
|
1
unpackage/cache/apk/cmManifestCache.json
vendored
Normal file
3
unpackage/cache/certdata
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
andrCertfile=/Applications/HBuilderX.app/Contents/HBuilderX/plugins/app-safe-pack/Test.keystore
|
||||
andrCertAlias=android
|
||||
andrCertPass=ep/Tdjka4Y7WYqDB6/S7dw==
|
4
unpackage/cache/cloudcertificate/certini
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
[General]
|
||||
andrCertAlias=__UNI__BAFB016
|
||||
andrCertPass="r44U1vmTgJfQuuzzBEUcxA=="
|
||||
andrCertfile=package.keystore
|
BIN
unpackage/cache/cloudcertificate/package.keystore
vendored
Normal file
BIN
unpackage/cache/wgt/__UNI__BAFB016/.manifest/icon-android-hdpi.png
vendored
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/.manifest/icon-android-xhdpi.png
vendored
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/.manifest/icon-android-xxhdpi.png
vendored
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/.manifest/icon-android-xxxhdpi.png
vendored
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/.manifest/splash-android-hdpi.png
vendored
Normal file
After Width: | Height: | Size: 150 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/.manifest/splash-android-xhdpi.png
vendored
Normal file
After Width: | Height: | Size: 368 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/.manifest/splash-android-xxhdpi.png
vendored
Normal file
After Width: | Height: | Size: 788 KiB |
1
unpackage/cache/wgt/__UNI__BAFB016/__uniappchooselocation.js
vendored
Normal file
BIN
unpackage/cache/wgt/__UNI__BAFB016/__uniapperror.png
vendored
Normal file
After Width: | Height: | Size: 5.7 KiB |
1
unpackage/cache/wgt/__UNI__BAFB016/__uniappes6.js
vendored
Normal file
1
unpackage/cache/wgt/__UNI__BAFB016/__uniappopenlocation.js
vendored
Normal file
1
unpackage/cache/wgt/__UNI__BAFB016/__uniapppicker.js
vendored
Normal file
8
unpackage/cache/wgt/__UNI__BAFB016/__uniappquill.js
vendored
Normal file
1
unpackage/cache/wgt/__UNI__BAFB016/__uniappquillimageresize.js
vendored
Normal file
1
unpackage/cache/wgt/__UNI__BAFB016/__uniappscan.js
vendored
Normal file
BIN
unpackage/cache/wgt/__UNI__BAFB016/__uniappsuccess.png
vendored
Normal file
After Width: | Height: | Size: 2.0 KiB |
25
unpackage/cache/wgt/__UNI__BAFB016/__uniappview.html
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<script>
|
||||
var __UniViewStartTime__ = Date.now();
|
||||
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>View</title>
|
||||
<link rel="stylesheet" href="view.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script src="__uniappes6.js"></script>
|
||||
<script src="view.umd.min.js"></script>
|
||||
<script src="app-view.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
3
unpackage/cache/wgt/__UNI__BAFB016/androidPrivacy.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"prompt" : "none"
|
||||
}
|
8
unpackage/cache/wgt/__UNI__BAFB016/app-config-service.js
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
var isReady=false;var onReadyCallbacks=[];
|
||||
var isServiceReady=false;var onServiceReadyCallbacks=[];
|
||||
var __uniConfig = {"pages":["pages/news/index","pages/duty/index","pages/user/index","pages/user/login","pages/user/register","pages/news/newsdetail","pages/user/minejoin","pages/user/mine_honour_certif","pages/user/mine_duty_certif","pages/user/mine_certif_search","pages/duty/activitylist","pages/duty/activitydetail","pages/duty/activitysign","pages/duty/activityunsign","pages/duty/dutyexplain"],"window":{"navigationBarTextStyle":"white","navigationBarTitleText":"全民植树","navigationBarBackgroundColor":"#8cc7b5","backgroundColor":"#F8F8F8"},"tabBar":{"color":"#000000","selectedColor":"#000000","backgroundColor":"#FFFFFF","list":[{"pagePath":"pages/news/index","iconPath":"static/images/nav/icon_home.png","selectedIconPath":"static/images/nav/icon_home_hover.png","text":"新闻资讯"},{"pagePath":"pages/duty/index","iconPath":"static/images/nav/icon_favorite.png","selectedIconPath":"static/images/nav/icon_favorite_hover.png","text":"尽职尽责"},{"pagePath":"pages/user/index","iconPath":"static/images/nav/icon_user.png","selectedIconPath":"static/images/nav/icon_user_hover.png","text":"个人中心"}]},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"tree_planting","compilerVersion":"3.6.18","entryPagePath":"pages/news/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
|
||||
var __uniRoutes = [{"path":"/pages/news/index","meta":{"isQuit":true,"isTabBar":true},"window":{"titleNView":false,"navigationStyle":"custom","enablePullDownRefresh":false,"disableScroll":true,"navigationBarTitleText":"全民植树","navigationBarTextStyle":"black","bounce":"none"}},{"path":"/pages/duty/index","meta":{"isQuit":true,"isTabBar":true},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"尽职尽责","enablePullDownRefresh":false}},{"path":"/pages/user/index","meta":{"isQuit":true,"isTabBar":true},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"个人中心","enablePullDownRefresh":false}},{"path":"/pages/user/login","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"登录","enablePullDownRefresh":false}},{"path":"/pages/user/register","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"注册","enablePullDownRefresh":false}},{"path":"/pages/news/newsdetail","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"详情","enablePullDownRefresh":false}},{"path":"/pages/user/minejoin","meta":{},"window":{"navigationBarTitleText":"我的劳动参与","enablePullDownRefresh":false,"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black"}},{"path":"/pages/user/mine_honour_certif","meta":{},"window":{"navigationBarTitleText":"国土绿化荣誉证书","enablePullDownRefresh":false,"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black"}},{"path":"/pages/user/mine_duty_certif","meta":{},"window":{"navigationBarTitleText":"义务植树尽责证书","enablePullDownRefresh":false,"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black"}},{"path":"/pages/user/mine_certif_search","meta":{},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"证书查询","enablePullDownRefresh":false}},{"path":"/pages/duty/activitylist","meta":{},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"劳动参与活动","enablePullDownRefresh":false}},{"path":"/pages/duty/activitydetail","meta":{},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"white","navigationBarTitleText":"活动详情","enablePullDownRefresh":false}},{"path":"/pages/duty/activitysign","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"活动报名","enablePullDownRefresh":false}},{"path":"/pages/duty/activityunsign","meta":{},"window":{"navigationBarTitleText":"","enablePullDownRefresh":false}},{"path":"/pages/duty/dutyexplain","meta":{},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"尽责形式说明","enablePullDownRefresh":false}}];
|
||||
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});
|
1
unpackage/cache/wgt/__UNI__BAFB016/app-config.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
(function(e){function r(r){for(var n,l,i=r[0],p=r[1],a=r[2],c=0,s=[];c<i.length;c++)l=i[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in p)Object.prototype.hasOwnProperty.call(p,n)&&(e[n]=p[n]);f&&f(r);while(s.length)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var p=t[i];0!==o[p]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={"app-config":0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"===typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var i=this["webpackJsonp"]=this["webpackJsonp"]||[],p=i.push.bind(i);i.push=r,i=i.slice();for(var a=0;a<i.length;a++)r(i[a]);var f=p;t()})([]);
|
17
unpackage/cache/wgt/__UNI__BAFB016/app-service.js
vendored
Normal file
1
unpackage/cache/wgt/__UNI__BAFB016/app-view.js
vendored
Normal file
1
unpackage/cache/wgt/__UNI__BAFB016/manifest.json
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__BAFB016","name":"tree_planting","version":{"name":"1.0.0","code":1},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"autoclose":true,"delay":0,"target":"id:1","waiting":true},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#8cc7b5"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"splashscreen":{"androidStyle":"default","useOriginalMsgbox":false,"android":{"hdpi":"splash-android-hdpi.png","xhdpi":"splash-android-xhdpi.png","xxhdpi":"splash-android-xxhdpi.png"}},"icons":{"android":{"hdpi":"icon-android-hdpi.png","xhdpi":"icon-android-xhdpi.png","xxhdpi":"icon-android-xxhdpi.png","xxxhdpi":"icon-android-xxxhdpi.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"},"prerendered":"false"}},"google":{"permissions":["<uses-feature android:name=\"android.hardware.camera\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"],"packagename":"uni.UNIBAFB016","custompermissions":true},"apple":{"dSYMs":false,"devices":"universal"},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}},"orientation":"portrait-primary"},"uniStatistics":{"enable":false},"allowsInlineMediaPlayback":true,"safearea":{"background":"#FFFFFF","bottom":{"offset":"auto"}},"uni-app":{"compilerVersion":"3.6.18","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#000000","selectedColor":"#000000","backgroundColor":"#FFFFFF","list":[{"pagePath":"pages/news/index","iconPath":"static/images/nav/icon_home.png","selectedIconPath":"static/images/nav/icon_home_hover.png","text":"新闻资讯"},{"pagePath":"pages/duty/index","iconPath":"static/images/nav/icon_favorite.png","selectedIconPath":"static/images/nav/icon_favorite_hover.png","text":"尽职尽责"},{"pagePath":"pages/user/index","iconPath":"static/images/nav/icon_user.png","selectedIconPath":"static/images/nav/icon_user_hover.png","text":"个人中心"}],"borderStyle":"rgba(0,0,0,0.4)","height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html","adid":"129529280205"}}
|
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/ic_download.png
vendored
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_activity_bg.png
vendored
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_activity_title_bg.png
vendored
Normal file
After Width: | Height: | Size: 51 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_activitydetail_bg.png
vendored
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_arrow_left.png
vendored
Normal file
After Width: | Height: | Size: 425 B |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_arrow_left_black.png
vendored
Normal file
After Width: | Height: | Size: 234 B |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_arrow_right.png
vendored
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_certify_search_icon.png
vendored
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_certify_tab_1.png
vendored
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_certify_tab_2.png
vendored
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_certify_title_bg.png
vendored
Normal file
After Width: | Height: | Size: 74 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_circle_half.png
vendored
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_duty_answer_icon.png
vendored
Normal file
After Width: | Height: | Size: 9.9 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_duty_divider.png
vendored
Normal file
After Width: | Height: | Size: 438 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_edit_icon.png
vendored
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_explan_bg.png
vendored
Normal file
After Width: | Height: | Size: 268 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_explan_title_bg.png
vendored
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_from_icon.png
vendored
Normal file
After Width: | Height: | Size: 8.7 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_labour_pious_icon.png
vendored
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_notice_gree_icon.png
vendored
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_notify_icon.png
vendored
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_order_icon.png
vendored
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_play_item.png
vendored
Normal file
After Width: | Height: | Size: 500 B |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_print_icon.png
vendored
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_radius_bg.png
vendored
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_search.png
vendored
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_status_bg.png
vendored
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_table_icon.png
vendored
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_user_default.png
vendored
Normal file
After Width: | Height: | Size: 102 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/ic_voice_icon.png
vendored
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/icon_no_data_02.png
vendored
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/nav/icon_favorite.png
vendored
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/nav/icon_favorite_01.png
vendored
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/nav/icon_favorite_hover.png
vendored
Normal file
After Width: | Height: | Size: 9.5 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/nav/icon_favorite_hover_01.png
vendored
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/nav/icon_home.png
vendored
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/nav/icon_home_hover.png
vendored
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/nav/icon_rank.png
vendored
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/nav/icon_rank_hover.png
vendored
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/nav/icon_user.png
vendored
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/images/nav/icon_user_hover.png
vendored
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
unpackage/cache/wgt/__UNI__BAFB016/static/logo.png
vendored
Normal file
After Width: | Height: | Size: 3.9 KiB |
1
unpackage/cache/wgt/__UNI__BAFB016/view.css
vendored
Normal file
6
unpackage/cache/wgt/__UNI__BAFB016/view.umd.min.js
vendored
Normal file
@ -1,8 +1,8 @@
|
||||
|
||||
var isReady=false;var onReadyCallbacks=[];
|
||||
var isServiceReady=false;var onServiceReadyCallbacks=[];
|
||||
var __uniConfig = {"pages":["pages/news/index","pages/duty/index","pages/user/index","pages/user/login","pages/user/register","pages/news/newsdetail","pages/user/minejoin","pages/user/mine_honour_certif","pages/user/mine_duty_certif","pages/user/mine_certif_search","pages/duty/activitylist","pages/duty/activitydetail","pages/duty/activitysign","pages/duty/activityunsign","pages/duty/dutyexplain"],"window":{"navigationBarTextStyle":"white","navigationBarTitleText":"全民植树","navigationBarBackgroundColor":"#8cc7b5","backgroundColor":"#F8F8F8"},"tabBar":{"color":"#000000","selectedColor":"#000000","backgroundColor":"#FFFFFF","list":[{"pagePath":"pages/news/index","iconPath":"static/images/nav/icon_home.png","selectedIconPath":"static/images/nav/icon_home_hover.png","text":"新闻资讯"},{"pagePath":"pages/duty/index","iconPath":"static/images/nav/icon_favorite.png","selectedIconPath":"static/images/nav/icon_favorite_hover.png","text":"尽职尽责"},{"pagePath":"pages/user/index","iconPath":"static/images/nav/icon_user.png","selectedIconPath":"static/images/nav/icon_user_hover.png","text":"个人中心"}]},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"tree_planting","compilerVersion":"3.6.18","entryPagePath":"pages/news/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
|
||||
var __uniRoutes = [{"path":"/pages/news/index","meta":{"isQuit":true,"isTabBar":true},"window":{"titleNView":false,"navigationStyle":"custom","enablePullDownRefresh":false,"disableScroll":true,"navigationBarTitleText":"全民植树","navigationBarTextStyle":"black","bounce":"none"}},{"path":"/pages/duty/index","meta":{"isQuit":true,"isTabBar":true},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"尽职尽责","enablePullDownRefresh":false}},{"path":"/pages/user/index","meta":{"isQuit":true,"isTabBar":true},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"个人中心","enablePullDownRefresh":false}},{"path":"/pages/user/login","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"登录","enablePullDownRefresh":false}},{"path":"/pages/user/register","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"注册","enablePullDownRefresh":false}},{"path":"/pages/news/newsdetail","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"详情","enablePullDownRefresh":false}},{"path":"/pages/user/minejoin","meta":{},"window":{"navigationBarTitleText":"我的劳动参与","enablePullDownRefresh":false,"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black"}},{"path":"/pages/user/mine_honour_certif","meta":{},"window":{"navigationBarTitleText":"国土绿化荣誉证书","enablePullDownRefresh":false,"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black"}},{"path":"/pages/user/mine_duty_certif","meta":{},"window":{"navigationBarTitleText":"义务植树尽责证书","enablePullDownRefresh":false,"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black"}},{"path":"/pages/user/mine_certif_search","meta":{},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"证书查询","enablePullDownRefresh":false}},{"path":"/pages/duty/activitylist","meta":{},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"劳动参与活动","enablePullDownRefresh":false}},{"path":"/pages/duty/activitydetail","meta":{},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"white","navigationBarTitleText":"活动详情","enablePullDownRefresh":false}},{"path":"/pages/duty/activitysign","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"活动报名","enablePullDownRefresh":false}},{"path":"/pages/duty/activityunsign","meta":{},"window":{"navigationBarTitleText":"","enablePullDownRefresh":false}},{"path":"/pages/duty/dutyexplain","meta":{},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"尽责形式说明","enablePullDownRefresh":false}}];
|
||||
var __uniConfig = {"pages":["pages/news/index","pages/duty/index","pages/user/index","pages/user/login","pages/user/register","pages/news/newsdetail","pages/user/minejoin","pages/user/mine_honour_certif","pages/user/mine_duty_certif","pages/user/mine_certif_search","pages/duty/activitylist","pages/duty/activitydetail","pages/duty/activitysign","pages/duty/activityunsign","pages/duty/dutyexplain","pages/user/changeMineInfo","pages/user/changePwdPage"],"window":{"navigationBarTextStyle":"white","navigationBarTitleText":"全民植树","navigationBarBackgroundColor":"#8cc7b5","backgroundColor":"#F8F8F8"},"tabBar":{"color":"#000000","selectedColor":"#000000","backgroundColor":"#FFFFFF","list":[{"pagePath":"pages/news/index","iconPath":"static/images/nav/icon_home.png","selectedIconPath":"static/images/nav/icon_home_hover.png","text":"新闻资讯"},{"pagePath":"pages/duty/index","iconPath":"static/images/nav/icon_favorite.png","selectedIconPath":"static/images/nav/icon_favorite_hover.png","text":"尽职尽责"},{"pagePath":"pages/user/index","iconPath":"static/images/nav/icon_user.png","selectedIconPath":"static/images/nav/icon_user_hover.png","text":"个人中心"}]},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"义务植树","compilerVersion":"3.6.18","entryPagePath":"pages/news/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
|
||||
var __uniRoutes = [{"path":"/pages/news/index","meta":{"isQuit":true,"isTabBar":true},"window":{"titleNView":false,"navigationStyle":"custom","enablePullDownRefresh":false,"disableScroll":true,"navigationBarTitleText":"全民植树","navigationBarTextStyle":"black","bounce":"none"}},{"path":"/pages/duty/index","meta":{"isQuit":true,"isTabBar":true},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"尽职尽责","enablePullDownRefresh":false}},{"path":"/pages/user/index","meta":{"isQuit":true,"isTabBar":true},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"个人中心","enablePullDownRefresh":false}},{"path":"/pages/user/login","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"登录","enablePullDownRefresh":false}},{"path":"/pages/user/register","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"注册","enablePullDownRefresh":false}},{"path":"/pages/news/newsdetail","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"详情","enablePullDownRefresh":false}},{"path":"/pages/user/minejoin","meta":{},"window":{"navigationBarTitleText":"我的劳动参与","enablePullDownRefresh":false,"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black"}},{"path":"/pages/user/mine_honour_certif","meta":{},"window":{"navigationBarTitleText":"国土绿化荣誉证书","enablePullDownRefresh":false,"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black"}},{"path":"/pages/user/mine_duty_certif","meta":{},"window":{"navigationBarTitleText":"义务植树尽责证书","enablePullDownRefresh":false,"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black"}},{"path":"/pages/user/mine_certif_search","meta":{},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"证书查询","enablePullDownRefresh":false}},{"path":"/pages/duty/activitylist","meta":{},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"劳动参与活动","enablePullDownRefresh":false}},{"path":"/pages/duty/activitydetail","meta":{},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"white","navigationBarTitleText":"活动详情","enablePullDownRefresh":false}},{"path":"/pages/duty/activitysign","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"活动报名","enablePullDownRefresh":false}},{"path":"/pages/duty/activityunsign","meta":{},"window":{"navigationBarTitleText":"","enablePullDownRefresh":false}},{"path":"/pages/duty/dutyexplain","meta":{},"window":{"titleNView":false,"navigationStyle":"custom","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"尽责形式说明","enablePullDownRefresh":false}},{"path":"/pages/user/changeMineInfo","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"个人信息","enablePullDownRefresh":false}},{"path":"/pages/user/changePwdPage","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black","navigationBarTitleText":"修改密码","enablePullDownRefresh":false}}];
|
||||
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});
|
||||
|
1411
unpackage/dist/dev/app-plus/app-service.js
vendored
1906
unpackage/dist/dev/app-plus/app-view.js
vendored
2
unpackage/dist/dev/app-plus/manifest.json
vendored
@ -1 +1 @@
|
||||
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__BAFB016","name":"tree_planting","version":{"name":"1.0.0","code":1},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#8cc7b5"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"splashscreen":{"androidStyle":"common","useOriginalMsgbox":false},"google":{"permissions":["<uses-feature android:name=\"android.hardware.camera\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"]},"apple":{},"plugins":{"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"uniStatistics":{"enable":false},"allowsInlineMediaPlayback":true,"safearea":{"background":"#FFFFFF","bottom":{"offset":"auto"}},"uni-app":{"compilerVersion":"3.6.18","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#000000","selectedColor":"#000000","backgroundColor":"#FFFFFF","list":[{"pagePath":"pages/news/index","iconPath":"static/images/nav/icon_home.png","selectedIconPath":"static/images/nav/icon_home_hover.png","text":"新闻资讯"},{"pagePath":"pages/duty/index","iconPath":"static/images/nav/icon_favorite.png","selectedIconPath":"static/images/nav/icon_favorite_hover.png","text":"尽职尽责"},{"pagePath":"pages/user/index","iconPath":"static/images/nav/icon_user.png","selectedIconPath":"static/images/nav/icon_user_hover.png","text":"个人中心"}],"borderStyle":"rgba(0,0,0,0.4)","height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html"}}
|
||||
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__BAFB016","name":"义务植树","version":{"name":"1.0.0","code":1},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#8cc7b5"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"splashscreen":{"androidStyle":"default","useOriginalMsgbox":false,"android":{"hdpi":"/Users/adam/Downloads/splash_480.png","xhdpi":"/Users/adam/Downloads/splash_720.png","xxhdpi":"/Users/adam/Downloads/splash_1080.png"}},"icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"google":{"permissions":["<uses-feature android:name=\"android.hardware.camera\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"]},"apple":{"dSYMs":false},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"uniStatistics":{"enable":false},"allowsInlineMediaPlayback":true,"safearea":{"background":"#FFFFFF","bottom":{"offset":"auto"}},"uni-app":{"compilerVersion":"3.6.18","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#000000","selectedColor":"#000000","backgroundColor":"#FFFFFF","list":[{"pagePath":"pages/news/index","iconPath":"static/images/nav/icon_home.png","selectedIconPath":"static/images/nav/icon_home_hover.png","text":"新闻资讯"},{"pagePath":"pages/duty/index","iconPath":"static/images/nav/icon_favorite.png","selectedIconPath":"static/images/nav/icon_favorite_hover.png","text":"尽职尽责"},{"pagePath":"pages/user/index","iconPath":"static/images/nav/icon_user.png","selectedIconPath":"static/images/nav/icon_user_hover.png","text":"个人中心"}],"borderStyle":"rgba(0,0,0,0.4)","height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html"}}
|
BIN
unpackage/dist/dev/app-plus/static/ic_download.png
vendored
Normal file
After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 2.8 KiB |
BIN
unpackage/res/icons/1024x1024.png
Normal file
After Width: | Height: | Size: 128 KiB |
BIN
unpackage/res/icons/120x120.png
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
unpackage/res/icons/144x144.png
Normal file
After Width: | Height: | Size: 10 KiB |