个人信息修改、密码修改

This commit is contained in:
itgaojian163 2023-02-08 17:59:16 +08:00
parent 593e13b89c
commit bfde7147b2
114 changed files with 4887 additions and 742 deletions

View File

@ -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);

View File

@ -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;

View 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>

View 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>
```

View 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>

View 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>
```

View 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>

View File

@ -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',

View File

@ -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"
}
}
}
}
},

View File

@ -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": {

View File

@ -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({

View File

@ -89,7 +89,7 @@
display: flex;
flex: 1;
flex-direction: column;
overflow: hidden;
overflow: auto;
height: 100%;
background: #fff;
}

View File

@ -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
View 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
View 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>

View File

@ -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>

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

1
unpackage/cache/apk/apkurl vendored Normal file
View File

@ -0,0 +1 @@
https://ide.dcloud.net.cn/build/download/ba83fba0-a75d-11ed-8f39-b9ce2c3ea2d2

File diff suppressed because one or more lines are too long

3
unpackage/cache/certdata vendored Normal file
View File

@ -0,0 +1,3 @@
andrCertfile=/Applications/HBuilderX.app/Contents/HBuilderX/plugins/app-safe-pack/Test.keystore
andrCertAlias=android
andrCertPass=ep/Tdjka4Y7WYqDB6/S7dw==

View File

@ -0,0 +1,4 @@
[General]
andrCertAlias=__UNI__BAFB016
andrCertPass="r44U1vmTgJfQuuzzBEUcxA=="
andrCertfile=package.keystore

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 788 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View 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>

View File

@ -0,0 +1,3 @@
{
"prompt" : "none"
}

View 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}}}});

View 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()})([]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View 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"}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View 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}}}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -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"}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Some files were not shown because too many files have changed in this diff Show More