33f3f307 by 张猛

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	pages/index/home.vue
2 parents 5d5e4447 7f5a246b
......@@ -1684,3 +1684,65 @@ export function editAddressOrder(examId, addressId) {
method: 'put'
})
}
/**
* 查询证书列表
* @param query
* @returns {*}
*/
export function certsLList(query) {
return request({
url: '/exam/payment/certsList',
method: 'get',
params: query
})
}
/**
* 段位考试成绩列表
* @param params
* @returns {*}
*/
export function getRankScoreList(params) {
return request({
url: '/exam/info/rank/scoreList',
method: 'get',
params: params
})
}
/**
* 证书邮寄
* @param ids
* @returns {*}
*/
export function postCert(ids) {
return request({
url: `/exam/payment/postCert/${ids}`,
method: 'post'
})
}
/**
* 查看物流信息
* @param id
* @returns {*}
*/
export function queryTrace(id) {
return request({
url: `/exam/payment/queryTrace/${id}`,
method: 'get'
})
}
/**
* 获取考试详情
* @param examId
* @returns {*}
*/
export function getExamInfo(examId) {
return request({
url: `/exam/info/${examId}`,
method: 'get'
})
}
......
......@@ -62,3 +62,242 @@ export function getRankScoreList(params) {
params: params
})
}
/**
* 证书邮寄
* @param ids
* @returns {*}
*/
export function postCert(ids) {
return request({
url: `/exam/payment/postCert/${ids}`,
method: 'post'
})
}
/**
* 查看物流信息
* @param id
* @returns {*}
*/
export function queryTrace(id) {
return request({
url: `/exam/payment/queryTrace/${id}`,
method: 'get'
})
}
/**
* 获取考试详情
* @param examId
* @returns {*}
*/
export function getExamInfo(examId) {
return request({
url: `/exam/info/${examId}`,
method: 'get'
})
}
/**
* 获取考生列表
* @param params
* @returns {*}
*/
export function getStudentList(params) {
return request({
url: '/exam/person/list',
method: 'get',
params: params
})
}
/**
* 缴费单列表
* @param query
* @returns {*}
*/
export function paymentList(query) {
return request({
url: '/exam/payment/list',
method: 'get',
params: query
})
}
/**
* 获取审核记录
* @param examId
* @param type
* @returns {*}
*/
export function getLogs(examId, type) {
return request({
url: `/exam/info/getLogs/${examId}/${type}`,
method: 'get'
})
}
/**
* 考点审核列表
* @param query
* @returns {*}
*/
export function listInfo(query) {
return request({
url: '/member/examPointApply/list',
method: 'get',
params: query
})
}
/**
* 考点审核
* @param params
* @returns {*}
*/
export function ztxAudit(params) {
return request({
url: `/member/examPointApply/audit/${params.ids}`,
method: 'post',
params
})
}
/**
* 获取机构资料
* @param memId
* @returns {*}
*/
export function getInstitutionInfo(memId) {
return request({
url: `/groupMember/authentication/info/${memId}`,
method: 'get'
})
}
/**
* 会员审核列表
* @param params
* @returns {*}
*/
export function certifiedNewList(params) {
return request({
url: `/system/certifiedNew/list`,
method: 'get',
params
})
}
/**
* 会员审核
* @param params
* @returns {*}
*/
export function shenAudit(params) {
return request({
url: `/system/certifiedNew/shenAudit/${params.ids}`,
method: 'post',
params
})
}
/**
* 获取审核日志
* @param id
* @returns {*}
*/
export function getAuditLogs(id) {
return request({
url: `/system/config/getLogs/${id}`,
method: 'get'
})
}
/**
* 获取会员审核日志
* @param id
* @returns {*}
*/
export function certifiedNewGetLogs(id) {
return request({
url: `/system/certifiedNew/getLogs/${id}`,
method: 'get'
})
}
/**
* 结算列表
* @param params
* @returns {*}
*/
export function settlementList(params) {
return request({
url: `/exam/paymentSubmit/list`,
method: 'get',
params
})
}
/**
* 结算详情
* @param id
* @returns {*}
*/
export function settlementInfo(id) {
return request({
url: `/exam/paymentSubmit/info/${id}`,
method: 'get'
})
}
/**
* 结算审核
* @param params
* @returns {*}
*/
export function settlementAudit(params) {
return request({
url: `/exam/paymentSubmit/audit/${params.ids}`,
method: 'post',
params
})
}
/**
* 结算申请列表(用于新建结算申请)
* @param params
* @returns {*}
*/
export function settlementApplyList(params) {
return request({
url: `/exam/payment/list`,
method: 'get',
params
})
}
/**
* 提交结算申请
* @param data
* @returns {*}
*/
export function settlementCommit(data) {
return request({
url: `/exam/paymentSubmit/commit`,
method: 'post',
params: data
})
}
/**
* 结算确认 - 获取费用明细
* @param ids
* @returns {*}
*/
export function settlementConfirm(ids) {
return request({
url: `/exam/paymentSubmit/confirm/${ids}`,
method: 'post'
})
}
......
......@@ -119,7 +119,7 @@ page {
.pd30{padding: 30rpx;box-sizing: border-box;}
.appList{width: 700rpx;margin:30rpx auto;
.appItem{background: #FFFFFF;padding: 20rpx 30rpx 30rpx;margin-bottom: 30rpx;
.appItem{background: #eb7c7c;padding: 20rpx 30rpx 30rpx;margin-bottom: 30rpx;
box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196,203,214,0.1);
border-radius: 15rpx;position: relative;
.iconbox{position: absolute;left: 20rpx;}
......
<template>
<view class="cert-detail-page">
<!-- 考级基本信息 -->
<view class="section">
<view class="section-header">
<uni-icons type="paperclip" size="18" color="#AD181F"></uni-icons>
<text class="section-title">考级基本信息</text>
</view>
<view class="info-card">
<view class="info-row">
<text class="label">考级名称</text>
<text class="value">{{ form.name || '-' }}</text>
</view>
<view class="info-row">
<text class="label">申请日期</text>
<text class="value">{{ formatDate(form.applyTime) }}</text>
</view>
<view class="info-row">
<text class="label">申请单位</text>
<text class="value">{{ form.memberName || '-' }}</text>
</view>
<view class="info-row">
<text class="label">考官</text>
<text class="value">{{ form.examinerNames || '-' }}</text>
</view>
<view class="info-row">
<text class="label">考试时间</text>
<text class="value">{{ form.startTime ? formatDateTime(form.startTime) : '-' }}</text>
</view>
<view class="info-row">
<text class="label">考级地点</text>
<text class="value">{{ form.address || '-' }}</text>
</view>
<view class="info-row" v-if="form.totalAmount">
<text class="label">总金额</text>
<text class="value text-red">¥{{ (form.totalAmount * 1).toFixed(2) }}</text>
</view>
</view>
</view>
<!-- 收货地址 -->
<view class="section">
<view class="section-header">
<uni-icons type="location-filled" size="18" color="#AD181F"></uni-icons>
<text class="section-title">收货地址</text>
</view>
<view class="info-card">
<view class="info-row">
<text class="label">姓名</text>
<text class="value">{{ addressForm.name || '-' }}</text>
</view>
<view class="info-row">
<text class="label">联系方式</text>
<text class="value">{{ addressForm.phone || '-' }}</text>
</view>
<view class="info-row">
<text class="label">收件地址</text>
<text class="value">{{ addressForm.address || '-' }}</text>
</view>
</view>
</view>
<!-- 考生信息 -->
<view class="section">
<view class="section-header">
<uni-icons type="person" size="18" color="#AD181F"></uni-icons>
<text class="section-title">考生信息</text>
<view class="person-summary">
{{ personSummary.total }}
</view>
</view>
<view class="person-stats" v-if="personSummary.levelArr && personSummary.levelArr.length > 0">
<view class="stat-item" v-for="item in personSummary.levelArr" :key="item.level">
{{ levelToChinese(item.level) }}级:{{ item.num }}
</view>
</view>
<view class="person-table">
<view class="table-header">
<view class="th th-name">姓名</view>
<!-- <view class="th th-idtype">证件类型</view> -->
<view class="th th-idcard">证件号码</view>
<view class="th th-level">级别</view>
</view>
<scroll-view scroll-y class="table-body-wrapper">
<view class="table-body">
<view class="table-row" v-for="(person, idx) in infoList" :key="idx">
<view class="td td-name">{{ person.realName }}</view>
<view class="td td-idtype">{{ person.idcTypeStr || '-' }}</view>
<view class="td td-idcard">{{ person.idcCode || '-' }}</view>
<view class="td td-level">
{{ levelToChinese(person.levelNew) }}
<text class="level-old" v-if="person.levelOld">({{ levelToChinese(person.levelOld) }}级)</text>
</view>
</view>
</view>
</scroll-view>
<view class="no-data" v-if="infoList.length == 0">
<text>暂无考生信息</text>
</view>
</view>
<view class="pagination-wrap" v-if="total > pageSize">
<view class="page-btn" @click="prevPage" :class="{ disabled: pageNum <= 1 }">
<uni-icons type="left" size="14" color="#666"></uni-icons>
</view>
<view class="page-num">{{ pageNum }}/{{ totalPage }}</view>
<view class="page-btn" @click="nextPage" :class="{ disabled: pageNum >= totalPage }">
<uni-icons type="right" size="14" color="#666"></uni-icons>
</view>
</view>
</view>
<!-- 审核信息 -->
<view class="section" v-if="recordList.length > 0">
<view class="section-header">
<uni-icons type="checkmark-circle" size="18" color="#AD181F"></uni-icons>
<text class="section-title">审核信息</text>
</view>
<view class="audit-table">
<view class="table-header">
<view class="th th-dept">审核协会</view>
<view class="th th-time">审核时间</view>
<view class="th th-status">审核状态</view>
<view class="th th-remark">备注</view>
</view>
<view class="table-body">
<view class="table-row" v-for="(record, idx) in recordList" :key="idx">
<view class="td td-dept">{{ record.auditDeptName || '-' }}</view>
<view class="td td-time">{{ formatDateTime(record.auditTime) }}</view>
<view class="td td-status">
<text :class="record.auditResult == '1' ? 'text-success' : 'text-danger'">
{{ record.auditResult == '1' ? '通过' : '未通过' }}
</text>
</view>
<view class="td td-remark">{{ record.auditMsg || '-' }}</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api.js'
import { ref, computed } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
const loading = ref(false)
const examId = ref('')
const pageNum = ref(1)
const pageSize = ref(50)
const form = ref({})
const addressForm = ref({})
const infoList = ref([])
const personSummary = ref({ total: 0, levelArr: [] })
const total = ref(0)
const totalPage = computed(() => Math.ceil(total.value / pageSize.value))
const recordList = ref([])
onLoad((options) => {
if (options.examId) {
examId.value = options.examId
getExamInfo()
getStudentList()
getAuditRecords()
}
})
function getExamInfo() {
uni.showLoading({ title: '加载中' })
api.getExamInfo(examId.value).then(res => {
uni.hideLoading()
if (res.data) {
form.value = res.data
addressForm.value = res.data.postAddress || {}
}
}).catch(err => {
uni.hideLoading()
console.error('获取考试详情失败', err)
uni.showToast({ title: '获取详情失败', icon: 'none' })
})
}
function getStudentList() {
uni.showLoading({ title: '加载中' })
api.getStudentList({
examId: examId.value,
pageNum: pageNum.value,
pageSize: pageSize.value
}).then(res => {
uni.hideLoading()
if (res.rows) {
infoList.value = res.rows
total.value = res.total || 0
// 统计各级别人数
const levelMap = {}
res.rows.forEach(person => {
const level = person.levelNew
if (level) {
levelMap[level] = (levelMap[level] || 0) + 1
}
})
const levelArr = Object.keys(levelMap).map(key => ({
level: key,
num: levelMap[key]
})).sort((a, b) => b.level - a.level)
personSummary.value = {
total: total.value,
levelArr: levelArr
}
} else {
uni.hideLoading()
}
}).catch(err => {
uni.hideLoading()
console.error('获取考生列表失败', err)
})
}
function prevPage() {
if (pageNum.value > 1) {
pageNum.value--
getStudentList()
}
}
function nextPage() {
if (pageNum.value < totalPage.value) {
pageNum.value++
getStudentList()
}
}
function getAuditRecords() {
api.getLogs(examId.value, 1).then(res => {
recordList.value = res.data || []
}).catch(err => {
console.error('获取审核记录失败', err)
})
}
function formatDate(dateStr) {
if (!dateStr) return '-'
return dateStr.substring(0, 10)
}
function formatDateTime(dateStr) {
if (!dateStr) return '-'
return dateStr.replace('T', ' ').substring(0, 19)
}
function levelToChinese(level) {
if (!level) return '-'
const levelMap = {
'1': '一', '2': '二', '3': '三', '4': '四', '5': '五',
'6': '六', '7': '七', '8': '八', '9': '九', '10': '十'
}
return levelMap[String(level)] || level
}
</script>
<style lang="scss" scoped>
.cert-detail-page {
min-height: 100vh;
background-color: #f5f5f5;
padding: 20rpx;
padding-bottom: 40rpx;
}
.section {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
}
.section-header {
display: flex;
align-items: center;
margin-bottom: 24rpx;
.section-title {
font-size: 30rpx;
font-weight: 600;
color: #333;
margin-left: 10rpx;
}
.person-summary {
margin-left: auto;
font-size: 26rpx;
color: #AD181F;
}
}
.info-card {
.info-row {
display: flex;
justify-content: space-between;
padding: 16rpx 0;
border-bottom: 1px solid #f0f0f0;
&:last-child {
border-bottom: none;
}
.label {
font-size: 26rpx;
color: #999;
flex-shrink: 0;
}
.value {
font-size: 26rpx;
color: #333;
text-align: right;
margin-left: 20rpx;
&.text-red {
color: #AD181F;
font-weight: 600;
}
}
}
}
.person-stats {
display: flex;
flex-wrap: wrap;
gap: 16rpx;
margin-bottom: 24rpx;
padding: 20rpx;
background-color: #fafafa;
border-radius: 12rpx;
.stat-item {
font-size: 24rpx;
color: #666;
padding: 8rpx 16rpx;
background-color: #fff;
border-radius: 20rpx;
}
}
.person-table {
border: 1px solid #eee;
border-radius: 12rpx;
overflow: hidden;
}
.table-header {
display: flex;
background-color: #f5f5f5;
.th {
padding: 20rpx 0;
text-align: center;
font-size: 24rpx;
color: #666;
font-weight: 500;
}
}
.table-body-wrapper {
max-height: 600rpx;
}
.table-body {
.table-row {
display: flex;
border-bottom: 1px solid #eee;
&:last-child {
border-bottom: none;
}
.td {
padding: 20rpx 0;
text-align: center;
font-size: 24rpx;
color: #333;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
.th-name, .td-name { width: 20%; }
// .th-idtype, .td-idtype { width: 18%; }
.th-idcard, .td-idcard { width: 60%; }
.th-level, .td-level { width: 20%; }
.level-old {
color: #999;
font-size: 20rpx;
margin-left: 4rpx;
}
.no-data {
padding: 60rpx 0;
text-align: center;
color: #999;
font-size: 26rpx;
}
.pagination-wrap {
display: flex;
justify-content: center;
align-items: center;
gap: 30rpx;
margin-top: 30rpx;
padding-top: 30rpx;
border-top: 1px solid #f0f0f0;
.page-btn {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
background-color: #f5f5f5;
display: flex;
align-items: center;
justify-content: center;
&.disabled {
opacity: 0.4;
}
}
.page-num {
font-size: 28rpx;
color: #333;
min-width: 120rpx;
text-align: center;
}
}
/* 审核信息表格 */
.audit-table {
border: 1px solid #eee;
border-radius: 12rpx;
overflow: hidden;
.table-header {
display: flex;
background-color: #f5f5f5;
.th {
padding: 20rpx 0;
text-align: center;
font-size: 24rpx;
color: #666;
font-weight: 500;
}
}
.table-body {
.table-row {
display: flex;
border-bottom: 1px solid #eee;
&:last-child {
border-bottom: none;
}
.td {
padding: 16rpx 0;
text-align: center;
font-size: 22rpx;
color: #333;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
.th-dept, .td-dept { width: 25%; }
.th-time, .td-time { width: 25%; }
.th-status, .td-status { width: 15%; }
.th-remark, .td-remark { width: 35%; }
.text-success {
color: #4caf50;
}
.text-danger {
color: #f56c6c;
}
}
</style>
<template>
<view class="logistics-page">
<!-- 物流信息卡片 -->
<view class="logistics-info-card">
<view class="info-header">
<uni-icons type=" truck" size="20" color="#AD181F"></uni-icons>
<text class="header-title">物流信息</text>
</view>
<view class="info-content">
<view class="info-row">
<text class="label">运单号</text>
<text class="value tracking-number" @click="copyTracking">{{ currentItem.postCode || '-' }}
<text class="copy-btn">复制</text>
</text>
</view>
<view class="info-row">
<text class="label">当前状态</text>
<text class="value status-sended" v-if="currentItem.postStatus == 1">已邮寄</text>
<text class="value status-pending" v-else>未邮寄</text>
</view>
<view class="info-row">
<text class="label">邮寄时间</text>
<text class="value">{{ currentItem.submitTime ? formatDateTime(currentItem.submitTime) : '-' }}</text>
</view>
</view>
</view>
<!-- 物流时间线 -->
<view class="timeline-section">
<view class="section-header">
<uni-icons type="location-filled" size="18" color="#AD181F"></uni-icons>
<text class="section-title">运输轨迹</text>
</view>
<view class="loading-wrap" v-if="loading">
<uni-load-more status="loading"></uni-load-more>
</view>
<view class="timeline-wrap" v-else>
<view class="timeline-list" v-if="trackingNodes.length > 0">
<view
class="timeline-item"
:class="{ first: idx === 0 }"
v-for="(node, idx) in trackingNodes"
:key="idx"
>
<view class="timeline-left">
<view class="timeline-dot">
<uni-icons v-if="idx === 0" type="check" size="12" color="#fff"></uni-icons>
</view>
<view class="timeline-line" v-if="idx < trackingNodes.length - 1"></view>
</view>
<view class="timeline-right">
<view class="timeline-content">
<view class="timeline-title">{{ node.categoryName }}</view>
<view class="timeline-time">{{ node.operationTime }}</view>
<view class="timeline-desc">{{ node.operationRemark }}</view>
</view>
</view>
</view>
</view>
<view class="no-logistics" v-else>
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无物流信息</text>
</view>
</view>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api.js'
import { ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
const loading = ref(false)
const payId = ref('')
const currentItem = ref({})
const trackingNodes = ref([])
onLoad((options) => {
if (options.payId) {
payId.value = options.payId
if (options.postCode) currentItem.value.postCode = options.postCode
if (options.postStatus) currentItem.value.postStatus = parseInt(options.postStatus)
if (options.submitTime) currentItem.value.submitTime = options.submitTime
getLogisticsInfo()
}
})
function getLogisticsInfo() {
if (!payId.value) return
loading.value = true
api.queryTrace(payId.value).then(res => {
loading.value = false
trackingNodes.value = res.data || []
}).catch(err => {
loading.value = false
console.error('获取物流信息失败', err)
uni.showToast({ title: '获取物流信息失败', icon: 'none' })
})
}
function copyTracking() {
if (!currentItem.value.postCode) return
uni.setClipboardData({
data: currentItem.value.postCode,
success: () => {
uni.showToast({ title: '已复制', icon: 'success' })
}
})
}
function formatDateTime(dateStr) {
if (!dateStr) return '-'
return dateStr.replace('T', ' ').substring(0, 19)
}
</script>
<style lang="scss" scoped>
.logistics-page {
min-height: 100vh;
background-color: #f5f5f5;
padding: 20rpx;
padding-bottom: 40rpx;
}
/* 物流信息卡片 */
.logistics-info-card {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
}
.info-header {
display: flex;
align-items: center;
margin-bottom: 24rpx;
.header-title {
font-size: 30rpx;
font-weight: 600;
color: #333;
margin-left: 10rpx;
}
}
.info-content {
.info-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 16rpx 0;
border-bottom: 1px solid #f0f0f0;
&:last-child {
border-bottom: none;
}
.label {
font-size: 26rpx;
color: #999;
}
.value {
font-size: 26rpx;
color: #333;
&.status-sended {
color: #4caf50;
}
&.status-pending {
color: #ff9800;
}
&.tracking-number {
display: flex;
align-items: center;
gap: 10rpx;
}
}
.copy-btn {
font-size: 22rpx;
color: #AD181F;
background-color: #fef0f0;
padding: 4rpx 12rpx;
border-radius: 16rpx;
}
}
}
/* 时间线 */
.timeline-section {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
}
.section-header {
display: flex;
align-items: center;
margin-bottom: 30rpx;
.section-title {
font-size: 30rpx;
font-weight: 600;
color: #333;
margin-left: 10rpx;
}
}
.loading-wrap {
padding: 60rpx 0;
text-align: center;
}
.timeline-wrap {
.timeline-list {
padding-left: 10rpx;
}
.timeline-item {
display: flex;
position: relative;
&.first {
.timeline-dot {
background-color: #AD181F;
border-color: #AD181F;
}
.timeline-title {
color: #AD181F;
}
}
}
.timeline-left {
display: flex;
flex-direction: column;
align-items: center;
margin-right: 20rpx;
}
.timeline-dot {
width: 28rpx;
height: 28rpx;
border-radius: 50%;
border: 2px solid #ccc;
background-color: #fff;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
z-index: 1;
}
.timeline-line {
width: 2rpx;
flex: 1;
background-color: #e0e0e0;
margin: 8rpx 0;
min-height: 60rpx;
}
.timeline-right {
flex: 1;
padding-bottom: 40rpx;
}
.timeline-content {
.timeline-title {
font-size: 28rpx;
color: #333;
font-weight: 500;
}
.timeline-time {
font-size: 24rpx;
color: #999;
margin-top: 8rpx;
}
.timeline-desc {
font-size: 26rpx;
color: #666;
margin-top: 12rpx;
line-height: 1.6;
background-color: #fafafa;
padding: 16rpx;
border-radius: 8rpx;
}
}
.no-logistics {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 80rpx 0;
image {
width: 200rpx;
height: 200rpx;
}
text {
font-size: 28rpx;
color: #999;
margin-top: 20rpx;
}
}
}
</style>
<template>
<view class="cost-settlement-page">
<!-- 顶部标签栏 -->
<view class="tab-bar">
<view
v-for="tab in tabs"
:key="tab.value"
class="tab-item"
:class="{ active: currentTab === tab.value }"
@click="onTabChange(tab.value)"
>
<text class="tab-text">{{ tab.label }}</text>
<view class="tab-indicator" v-if="currentTab === tab.value"></view>
</view>
</view>
<!-- 新建按钮 -->
<view class="action-bar">
<view class="btn-add" @click="goAdd">
<uni-icons type="plus" size="16" color="#fff"></uni-icons>
<text>新建结算申请</text>
</view>
</view>
<!-- 列表内容 -->
<scroll-view
scroll-y
class="list-content"
@scrolltolower="onLoadMore"
>
<view class="loading-wrap" v-if="loading && list.length === 0">
<uni-load-more status="loading"></uni-load-more>
</view>
<view class="empty-wrap" v-else-if="!loading && list.length === 0">
<view class="nodata">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
</view>
<view class="appList" v-else>
<view class="appItem" v-for="(item, index) in list" :key="index">
<view @click="goDetail(item)">
<view class="status">
<text :class="getStatusClass(item.status)">
{{ getStatusText(item.status) }}
</text>
</view>
<view class="date">
<view class="text-primary" v-if="item.code">{{ item.code }}</view>
</view>
<view class="name mt0">{{ item.name || '-' }}</view>
<view class="flexbox">
<view>
结算单位
<view>{{ item.memName || '-' }}</view>
</view>
<view>
结算金额
<view class="text-red">¥{{ Number(item.price || 0).toFixed(2) }}</view>
</view>
</view>
<view class="flex f-j-s">
<view class="info-time" v-if="item.commitTime">
提交时间:{{ formatDate(item.commitTime) }}
</view>
</view>
</view>
</view>
</view>
<view class="loading" v-if="list.length > 0">
<uni-load-more :status="loadStatus" :contentText="loadMoreText"></uni-load-more>
</view>
</scroll-view>
</view>
</template>
<script setup>
import * as api from '@/common/api_exam.js'
import { ref } from 'vue'
import { onLoad, onShow } from '@dcloudio/uni-app'
const app = getApp()
const tabs = [
{ label: '全部', value: '' },
{ label: '待结算', value: '1' },
{ label: '结算通过', value: '2' },
{ label: '结算拒绝', value: '3' }
]
const currentTab = ref('1')
const list = ref([])
const loading = ref(false)
const loadStatus = ref('more')
const loadMoreText = {
contentdown: '上拉加载更多',
contentrefresh: '正在加载...',
contentnomore: '没有更多了'
}
const queryParams = ref({
pageNum: 1,
pageSize: 10
})
onLoad(() => {
if (app.globalData.isLogin) {
init()
} else {
app.firstLoadCallback = () => {
init()
}
}
})
onShow(() => {
if (app.globalData.isLogin && list.value.length > 0) {
refreshList()
}
})
function init() {
list.value = []
queryParams.value.pageNum = 1
loadStatus.value = 'more'
getList()
}
function refreshList() {
list.value = []
queryParams.value.pageNum = 1
loadStatus.value = 'more'
getList()
}
function onTabChange(value) {
currentTab.value = value
init()
}
function getList() {
if (loadStatus.value === 'nomore') return
if (loading.value && list.value.length > 0) return
loading.value = true
if (list.value.length === 0) {
loadStatus.value = 'loading'
}
const params = {
...queryParams.value,
status: currentTab.value
}
api.settlementList(params).then(res => {
const data = res.rows || []
const totalData = res.total || 0
if (queryParams.value.pageNum === 1) {
list.value = data
} else {
list.value = [...list.value, ...data]
}
if (list.value.length >= totalData) {
loadStatus.value = 'nomore'
} else {
loadStatus.value = 'more'
}
}).catch(() => {
loadStatus.value = 'more'
}).finally(() => {
loading.value = false
})
}
function onLoadMore() {
if (loadStatus.value !== 'more' || loading.value) return
queryParams.value.pageNum++
getList()
}
function getStatusText(status) {
const map = { 1: '待结算', 2: '结算通过', 3: '结算拒绝' }
return map[status] || '未知'
}
function getStatusClass(status) {
const map = {
1: 'text-warning',
2: 'text-success',
3: 'text-danger'
}
return map[status] || ''
}
function formatDate(dateStr) {
if (!dateStr) return '-'
if (typeof dateStr === 'string' && dateStr.indexOf('T') > -1) {
return dateStr.slice(0, 10)
}
return dateStr
}
function goDetail(item) {
const itemStr = encodeURIComponent(JSON.stringify(item))
uni.navigateTo({
url: `/level/ztx/costSettlementDetail?item=${itemStr}`
})
}
function goAdd() {
uni.navigateTo({
url: `/level/ztx/costSettlementAdd`
})
}
</script>
<style lang="scss" scoped>
.cost-settlement-page {
min-height: 100vh;
background-color: #f5f5f5;
}
.tab-bar {
display: flex;
background-color: #fff;
padding: 0 20rpx;
position: sticky;
top: 0;
z-index: 100;
.tab-item {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
padding: 24rpx 0;
position: relative;
.tab-text {
font-size: 28rpx;
color: #666;
}
.tab-indicator {
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 80rpx;
height: 6rpx;
background-color: #AD181F;
border-radius: 3rpx;
}
&.active {
.tab-text {
color: #AD181F;
font-weight: 600;
}
}
}
}
.action-bar {
padding: 20rpx;
background-color: #f5f5f5;
.btn-add {
display: flex;
align-items: center;
justify-content: center;
gap: 8rpx;
background-color: #AD181F;
color: #fff;
padding: 20rpx 0;
border-radius: 12rpx;
font-size: 28rpx;
&:active {
opacity: 0.8;
}
}
}
.list-content {
height: calc(100vh - 200rpx);
// padding: 0 20rpx 20rpx;
}
.loading-wrap,
.empty-wrap {
padding: 100rpx 0;
text-align: center;
}
/* 列表样式 */
.appList {
padding: 0;
margin:0rpx auto;
}
.appItem {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.05);
.status {
display: inline-block;
padding: 6rpx 20rpx;
border-radius: 20rpx;
font-size: 24rpx;
margin-bottom: 16rpx;
.text-success {
color: #4caf50;
}
.text-warning {
color: #ff9800;
}
.text-danger {
color: #f5222d;
}
}
.date {
font-size: 24rpx;
color: #999;
}
.text-primary {
font-size: 28rpx;
color: #AD181F;
}
.name {
font-size: 28rpx;
font-weight: 600;
color: #333;
margin-bottom: 20rpx;
margin-top: 10rpx;
&.mt0 {
margin-top: 0;
}
}
.flexbox {
display: flex;
justify-content: space-between;
background-color: #fafafa;
border-radius: 12rpx;
padding: 20rpx;
margin: 20rpx 0;
view {
flex: 1;
text-align: center;
font-size: 24rpx;
color: #999;
view {
font-size: 28rpx;
color: #333;
font-weight: 500;
margin-top: 8rpx;
}
}
.text-red {
color: #AD181F;
}
}
.flex {
display: flex;
&.f-j-s {
justify-content: space-between;
}
}
.info-time {
font-size: 24rpx;
color: #666;
margin-top: 16rpx;
}
}
.nodata {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 100rpx 0;
image {
width: 300rpx;
height: 300rpx;
}
text {
font-size: 28rpx;
color: #999;
margin-top: 20rpx;
}
}
.loading {
padding: 30rpx 0;
text-align: center;
}
</style>
<template>
<view class="cost-settlement-add-page">
<!-- 列表内容 -->
<scroll-view
scroll-y
class="list-content"
@scrolltolower="onLoadMore"
>
<view class="loading-wrap" v-if="loading && list.length === 0">
<uni-load-more status="loading"></uni-load-more>
</view>
<view class="empty-wrap" v-else-if="!loading && list.length === 0">
<view class="nodata">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无可结算的缴费单</text>
</view>
</view>
<view class="appList" v-else>
<view class="appItem" v-for="(item, index) in list" :key="item.payId || index" @click="toggleSelect(item)">
<view class="select-indicator" :class="{ selected: isSelected(item) }">
<uni-icons v-if="isSelected(item)" type="checkmark" size="14" color="#fff"></uni-icons>
</view>
<view class="item-content">
<view class="status">
<text :class="getStatusClass(item.verityStatus)">
{{ item.verityStatusStr || '审核中' }}
</text>
</view>
<view class="date">
<view class="text-primary" v-if="item.payCode">{{ item.payCode }}</view>
</view>
<view class="name mt0">{{ item.name || '-' }}</view>
<view class="flexbox">
<view>
缴费单位
<view>{{ item.applyMemberName || '-' }}</view>
</view>
<view>
考试人数
<view>{{ item.totalNum || 0 }}</view>
</view>
<view>
总金额
<view class="text-red">¥{{ Number(item.totalAmount || 0).toFixed(2) }}</view>
</view>
</view>
<view class="flex f-j-s">
<view class="info-time" v-if="item.submitTime">
提交时间:{{ formatDate(item.submitTime) }}
</view>
</view>
</view>
</view>
</view>
<view class="loading" v-if="list.length > 0">
<uni-load-more :status="loadStatus" :contentText="loadMoreText"></uni-load-more>
</view>
</scroll-view>
<!-- 底部提交按钮 -->
<view class="bottom-bar" v-if="selectedIds.size > 0">
<view class="summary-info">
<view class="summary-item">
<text class="summary-label">费用合计:</text>
<text class="summary-value text-red">¥{{ totalAmount.toFixed(2) }}</text>
</view>
<view class="summary-item">
<text class="summary-label">人数合计:</text>
<text class="summary-value">{{ totalNum }}</text>
</view>
</view>
<view class="submit-btn" @click="handleSettlement">
结算申请
</view>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api_exam.js'
import { ref, computed } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
const loading = ref(false)
const list = ref([])
const selectedIds = ref(new Set())
const loadStatus = ref('more')
const loadMoreText = {
contentdown: '上拉加载更多',
contentrefresh: '正在加载...',
contentnomore: '没有更多了'
}
const queryParams = ref({
pageNum: 1,
pageSize: 10,
type: 1,
submitFlag: '0'
})
// 选中的费用合计
const totalAmount = computed(() => {
return list.value
.filter(item => selectedIds.value.has(item.payId))
.reduce((sum, item) => sum + (Number(item.totalAmount) || 0), 0)
})
// 选中的人数合计
const totalNum = computed(() => {
return list.value
.filter(item => selectedIds.value.has(item.payId))
.reduce((sum, item) => sum + (Number(item.totalNum) || 0), 0)
})
onLoad(() => {
getList()
})
function getList() {
if (loadStatus.value === 'nomore') return
if (loading.value && list.value.length > 0) return
loading.value = true
if (list.value.length === 0) {
loadStatus.value = 'loading'
}
api.settlementApplyList(queryParams.value).then(res => {
const data = res.rows || []
const totalData = res.total || 0
if (queryParams.value.pageNum === 1) {
list.value = data
} else {
list.value = [...list.value, ...data]
}
if (list.value.length >= totalData) {
loadStatus.value = 'nomore'
} else {
loadStatus.value = 'more'
}
}).catch(() => {
loadStatus.value = 'more'
}).finally(() => {
loading.value = false
})
}
function onLoadMore() {
if (loadStatus.value !== 'more' || loading.value) return
queryParams.value.pageNum++
getList()
}
function getStatusClass(status) {
const map = {
1: 'text-success',
2: 'text-danger',
3: 'text-warning'
}
return map[status] || 'text-warning'
}
function formatDate(dateStr) {
if (!dateStr) return '-'
if (typeof dateStr === 'string' && dateStr.indexOf('T') > -1) {
return dateStr.slice(0, 10)
}
return dateStr
}
function toggleSelect(item) {
if (selectedIds.value.has(item.payId)) {
selectedIds.value.delete(item.payId)
} else {
selectedIds.value.add(item.payId)
}
selectedIds.value = new Set(selectedIds.value)
}
// 修复:这里传 item 而不是 payId
function isSelected(item) {
return selectedIds.value.has(item.payId)
}
function handleSettlement() {
if (selectedIds.value.size === 0) {
uni.showToast({ title: '请选择要结算的缴费单', icon: 'none' })
return
}
const ids = Array.from(selectedIds.value).join(',')
uni.navigateTo({
url: `/level/ztx/costSettlementConfirm?ids=${ids}`
})
}
</script>
<style lang="scss" scoped>
.cost-settlement-add-page {
min-height: 100vh;
background-color: #f5f5f5;
padding-bottom: 120rpx;
}
.list-content {
height: calc(100vh - 120rpx);
padding: 20rpx;
box-sizing: border-box;
}
.loading-wrap,
.empty-wrap {
padding: 100rpx 0;
text-align: center;
}
.appList {
padding: 0;
}
.appItem {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.05);
display: flex;
align-items: center;
position: relative;
// 选择框 - 修复样式
.select-indicator {
width: 36rpx;
height: 36rpx;
border-radius: 50%;
border: 2rpx solid #ddd;
display: flex;
align-items: center;
justify-content: center;
margin-right: 20rpx;
flex-shrink: 0;
transition: all 0.2s;
&.selected {
background-color: #AD181F;
border-color: #AD181F;
}
}
.item-content {
flex: 1;
min-width: 0;
}
.status {
display: inline-block;
padding: 6rpx 20rpx;
border-radius: 20rpx;
font-size: 24rpx;
margin-bottom: 16rpx;
.text-success {
color: #4caf50;
}
.text-warning {
color: #ff9800;
}
.text-danger {
color: #f5222d;
}
}
.date {
font-size: 24rpx;
color: #999;
}
.text-primary {
font-size: 28rpx;
color: #AD181F;
}
.name {
font-size: 28rpx;
font-weight: 600;
color: #333;
margin-bottom: 20rpx;
margin-top: 10rpx;
&.mt0 {
margin-top: 0;
}
}
.flexbox {
display: flex;
justify-content: space-between;
background-color: #fafafa;
border-radius: 12rpx;
padding: 20rpx;
margin: 20rpx 0;
view {
flex: 1;
text-align: center;
font-size: 24rpx;
color: #999;
view {
font-size: 28rpx;
color: #333;
font-weight: 500;
margin-top: 8rpx;
}
}
.text-red {
color: #AD181F;
}
}
.flex {
display: flex;
&.f-j-s {
justify-content: space-between;
}
}
.info-time {
font-size: 24rpx;
color: #666;
margin-top: 16rpx;
}
}
.nodata {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 100rpx 0;
image {
width: 300rpx;
height: 300rpx;
}
text {
font-size: 28rpx;
color: #999;
margin-top: 20rpx;
}
}
.loading {
padding: 30rpx 0;
text-align: center;
}
.bottom-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background-color: #fff;
display: flex;
align-items: center;
justify-content: space-between;
padding: 20rpx 30rpx;
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.05);
z-index: 99;
.summary-info {
display: flex;
flex-direction: column;
gap: 8rpx;
.summary-item {
display: flex;
align-items: center;
.summary-label {
font-size: 24rpx;
color: #666;
}
.summary-value {
font-size: 28rpx;
color: #333;
font-weight: 600;
}
.text-red {
color: #AD181F;
}
}
}
.submit-btn {
background-color: #AD181F;
color: #fff;
padding: 20rpx 50rpx;
border-radius: 40rpx;
font-size: 28rpx;
&:active {
opacity: 0.8;
}
}
}
</style>
\ No newline at end of file
<template>
<view class="settlement-confirm-page">
<!-- 统计卡片区 -->
<view class="stats-grid">
<view class="stat-card">
<view class="stat-label">考试总人数</view>
<view class="stat-value">{{ form.personCount || 0 }}<text class="stat-unit"></text></view>
</view>
<view class="stat-card">
<view class="stat-label">费用合计</view>
<view class="stat-value">{{ form.allFee || '0.00' }}<text class="stat-unit"></text></view>
</view>
<view class="stat-card">
<view class="stat-label">结算费用</view>
<view class="stat-value text-red">{{ form.fee || '0.00' }}<text class="stat-unit"></text></view>
</view>
</view>
<!-- 级别分布明细 -->
<view class="level-section">
<view class="section-title">级别分布明细</view>
<view class="level-tags">
<view v-for="(val, inx) in form.count" :key="inx" class="level-tag" :class="`level-${inx % 3 + 1}`">
{{ szToHz(inx) }}级:{{ val }}
</view>
</view>
</view>
<view class="divider"></view>
<!-- 发票上传区域 -->
<view class="upload-section">
<view class="section-title">发票上传</view>
<view class="upload-area">
<view class="upload-tip">支持格式:jpg、png、pdf,大小不超过10MB</view>
<uni-file-picker
v-model="fileList"
file-mediatype="image"
file-extname="jpg,jpeg,png,pdf"
:limit="1"
@select="selectFile"
@progress="fileProgress"
@success="fileSuccess"
@delete="fileDelete"
>
<view class="upload-btn" v-if="!fileList.length">
<uni-icons type="plus" size="24" color="#AD181F"></uni-icons>
<!-- <text>上传发票</text> -->
</view>
<view v-else class="file-item">
<uni-icons type="paperclip" size="16" color="#AD181F"></uni-icons>
<text class="file-name">{{ fileList[0].name }}</text>
</view>
</uni-file-picker>
</view>
</view>
<!-- 底部操作按钮 -->
<view class="bottom-bar">
<view class="cancel-btn" @click="handleCancel">取消</view>
<view class="submit-btn" @click="handleSubmit">提交结算申请</view>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api_exam.js'
import { uploadFileList } from '@/common/api.js'
import { ref, } from 'vue';
import { onLoad } from '@dcloudio/uni-app'
const form = ref({})
const fileList = ref([])
const loading = ref(false)
const ids = ref('')
const uploadedUrl = ref('') // 上传后的文件路径
onLoad((options) => {
const { ids: optIds } = options
if (optIds) {
ids.value = optIds
getConfirm(optIds)
}
})
// 数字转汉字
function szToHz(num) {
const arr = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十']
return arr[num] || num + 1
}
async function getConfirm(ids) {
loading.value = true
try {
const res = await api.settlementConfirm(ids)
form.value = res.data || {}
} catch (err) {
console.error('获取结算明细失败', err)
uni.showToast({ title: '获取数据失败', icon: 'none' })
} finally {
loading.value = false
}
}
function selectFile(e) {
const file = e.tempFiles[0]
if (!file) return
uni.showLoading({ title: '上传中' })
uploadFileList(e.tempFilePaths[0]).then(data => {
uploadedUrl.value = data
uni.hideLoading()
uni.showToast({ title: '上传成功', icon: 'success' })
}).catch(err => {
uni.hideLoading()
uni.showToast({ title: '上传失败', icon: 'none' })
})
}
function fileProgress(e) {
console.log('上传进度:', e)
}
function fileSuccess(e) {
console.log('上传成功:', e)
}
function fileDelete(e) {
fileList.value = []
uploadedUrl.value = ''
}
function handleCancel() {
uni.navigateBack()
}
async function handleSubmit() {
if (!uploadedUrl.value) {
uni.showToast({ title: '请上传发票', icon: 'none' })
return
}
// 使用上传后的真实路径
const url = JSON.stringify([{ url: uploadedUrl.value, name: fileList.value[0]?.name || 'invoice' }])
try {
uni.showLoading({ title: '提交中...' })
await api.settlementCommit({ ids: ids.value, url })
uni.hideLoading()
uni.showToast({ title: '提交成功', icon: 'success' })
setTimeout(() => {
uni.navigateBack({
delta: 2 // 返回两级页面
})
}, 1500)
} catch (err) {
uni.hideLoading()
console.error('提交失败', err)
uni.showToast({ title: '提交失败', icon: 'none' })
}
}
</script>
<style lang="scss" scoped>
.settlement-confirm-page {
min-height: 100vh;
background-color: #f5f5f5;
padding: 20rpx;
padding-bottom: 140rpx;
}
.stats-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20rpx;
margin-bottom: 20rpx;
}
.stat-card {
background: #fff;
border-radius: 16rpx;
padding: 30rpx 20rpx;
text-align: center;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.05);
.stat-label {
font-size: 24rpx;
color: #999;
margin-bottom: 12rpx;
}
.stat-value {
font-size: 36rpx;
font-weight: 700;
color: #333;
line-height: 1.2;
}
.stat-unit {
font-size: 24rpx;
font-weight: 400;
color: #999;
margin-left: 4rpx;
}
.text-red {
color: #AD181F;
}
}
.level-section {
background: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.05);
border-left: 8rpx solid #27a9e7;
.section-title {
font-size: 28rpx;
font-weight: 600;
color: #333;
margin-bottom: 24rpx;
}
.level-tags {
display: flex;
flex-wrap: wrap;
gap: 20rpx;
.level-tag {
padding: 12rpx 24rpx;
border-radius: 30rpx;
font-size: 24rpx;
font-weight: 500;
background: #fff;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
}
.level-1 {
background: linear-gradient(135deg, #fef2e8, #ffe4d6);
color: #c2410c;
}
.level-2 {
background: linear-gradient(135deg, #eef2ff, #e0e7ff);
color: #1e40af;
}
.level-3 {
background: linear-gradient(135deg, #ecfdf5, #d1fae5);
color: #065f46;
}
}
}
.divider {
height: 1rpx;
background-color: #eee;
margin: 20rpx 0;
}
.upload-section {
background: #fff;
border-radius: 16rpx;
padding: 30rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.05);
.section-title {
font-size: 28rpx;
font-weight: 600;
color: #333;
margin-bottom: 24rpx;
}
.upload-area {
background: #fafcff;
padding: 24rpx;
border-radius: 12rpx;
border: 2rpx dashed #cbd5e1;
display: flex;
flex-direction: column;
align-items: center;
gap: 20rpx;
.upload-tip {
font-size: 24rpx;
color: #999;
text-align: center;
}
.upload-btn {
display: flex;
flex-direction: column;
align-items: center;
gap: 12rpx;
padding: 30rpx 60rpx;
border-radius: 16rpx;
color: #AD181F;
font-size: 28rpx;
}
.file-item {
display: flex;
align-items: center;
gap: 12rpx;
padding: 20rpx 30rpx;
background: #fff;
border-radius: 12rpx;
border: 1rpx solid #eee;
.file-name {
font-size: 26rpx;
color: #333;
max-width: 400rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
}
.bottom-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background-color: #fff;
display: flex;
align-items: center;
justify-content: space-between;
padding: 20rpx 30rpx;
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.05);
z-index: 99;
.cancel-btn {
flex: 1;
text-align: center;
padding: 24rpx 0;
border-radius: 40rpx;
font-size: 28rpx;
background-color: #f5f5f5;
color: #666;
margin-right: 20rpx;
}
.submit-btn {
flex: 2;
text-align: center;
padding: 24rpx 0;
border-radius: 40rpx;
font-size: 28rpx;
background-color: #AD181F;
color: #fff;
}
}
</style>
<template>
<view class="detail-page">
<!-- 基本信息卡片 -->
<view class="section">
<view class="section-header">
<uni-icons type="paperclip" size="18" color="#AD181F"></uni-icons>
<text class="section-title">结算信息</text>
</view>
<view class="info-grid">
<view class="info-item">
<text class="label">结算编号</text>
<text class="value">{{ form.code || '-' }}</text>
</view>
<view class="info-item">
<text class="label">缴费名称</text>
<text class="value">{{ form.name || '-' }}</text>
</view>
<view class="info-item">
<text class="label">缴费单位</text>
<text class="value">{{ form.memName || '-' }}</text>
</view>
<view class="info-item">
<text class="label">考试人数</text>
<text class="value">{{ form.personCount }}</text>
</view>
<view class="info-item">
<text class="label">费用合计</text>
<text class="value">{{ form.originPrice }}</text>
</view>
<view class="info-item">
<text class="label">结算金额</text>
<text class="value"> {{ form.price }}</text>
</view>
<view class="info-item">
<text class="label">支付方式</text>
<text class="value"> 民生付</text>
</view>
<view class="info-item">
<text class="label">提交日期</text>
<text class="value"> {{form.commitTime}}</text>
</view>
<view class="info-item">
<text class="label">结算日期</text>
<text class="value"> {{ form.auditTime }}</text>
</view>
<view class="info-item">
<text class="label">下载发票</text>
<text class="value link" @click="handelInvoice(form.fileUrl)"> 下载发票</text>
</view>
</view>
</view>
<!-- 结算状态 Tab -->
<view class="tab-section">
<view class="tab-bar">
<view
class="tab-item"
:class="{ active: submitFlag === '' }"
@click="handleTabChange('')"
>全部</view>
<view
class="tab-item"
:class="{ active: submitFlag === '1' }"
@click="handleTabChange('1')"
>已结算</view>
<view
class="tab-item"
:class="{ active: submitFlag === '0' }"
@click="handleTabChange('0')"
>未结算</view>
</view>
</view>
<!-- 统计卡片 -->
<view class="stats-grid">
<view class="stat-card">
<view class="stat-label">费用合计</view>
<view class="stat-value text-red">¥{{ statistical.totalCost?.toFixed(2) || '0.00' }}</view>
</view>
<view class="stat-card">
<view class="stat-label">人数合计</view>
<view class="stat-value">{{ statistical.totalNum || 0 }}<text class="stat-unit"></text></view>
</view>
</view>
<!-- 加载状态 -->
<view class="loading-wrap" v-if="loading">
<uni-load-more status="loading"></uni-load-more>
</view>
<!-- 列表区域 -->
<view class="list-section" v-else>
<view class="list-item" v-for="(item, index) in infoList" :key="index">
<view class="item-row">
<text class="item-label">缴费编号</text>
<text class="item-value">{{ item.payCode || '-' }}</text>
</view>
<view class="item-row">
<text class="item-label">缴费名称</text>
<text class="item-value">{{ item.name || '-' }}</text>
</view>
<view class="item-row">
<text class="item-label">缴费单位</text>
<text class="item-value">{{ item.memberName || '-' }}</text>
</view>
<view class="item-row">
<text class="item-label">考试人数</text>
<text class="item-value">{{ item.totalNum || 0 }}</text>
</view>
<view class="item-row">
<text class="item-label">总金额</text>
<text class="item-value text-red">¥{{ Number(item.totalAmount || 0).toFixed(2) }}</text>
</view>
<view class="item-row">
<text class="item-label">支付方式</text>
<text class="item-value">民生付</text>
</view>
<view class="item-row">
<text class="item-label">审核状态</text>
<text class="item-value" :class="getVerityStatusClass(item.verityStatus)">
{{ item.verityStatusStr || '-' }}
</text>
</view>
<view class="item-row">
<text class="item-label">结算状态</text>
<text class="item-value" :class="item.submitId ? 'text-success' : 'text-warning'">
{{ item.submitId ? '已结算' : '未结算' }}
</text>
</view>
<view class="item-row">
<text class="item-label">提交日期</text>
<text class="item-value">{{ formatDate(item.submitTime) }}</text>
</view>
<view class="item-row" v-if="item.verityDate">
<text class="item-label">审核日期</text>
<text class="item-value">{{ formatDate(item.verityDate) }}</text>
</view>
</view>
<!-- 无数据 -->
<view class="empty-tip" v-if="infoList.length === 0">
<text>暂无数据</text>
</view>
</view>
<!-- 加载更多 -->
<view class="load-more" v-if="total > 0">
<uni-load-more :status="noMore ? 'noMore' : (loadingMore ? 'loading' : 'more')"></uni-load-more>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api_exam.js'
import config from '@/config.js'
import { ref, reactive, computed } from 'vue'
import { onLoad, onReachBottom } from '@dcloudio/uni-app'
const loading = ref(false)
const form = ref({})
const infoList = ref([])
const total = ref(0)
const statistical = ref({
totalCost: 0,
totalNum: 0
})
const submitFlag = ref('')
const loadingMore = ref(false)
const queryParams = reactive({
pageNum: 1,
pageSize: 10,
payIds: '',
submitFlag: '',
type: 1
})
let settlementId = ''
onLoad((options) => {
if (options.item) {
try {
const item = JSON.parse(decodeURIComponent(options.item))
settlementId = item.id
// 结算信息从列表带过来
form.value = item
queryParams.payIds = item.payids || ''
getList()
} catch (e) {
console.error('解析结算信息失败', e)
uni.showToast({ title: '参数错误', icon: 'none' })
setTimeout(() => uni.navigateBack(), 1500)
}
} else {
uni.showToast({ title: '参数错误', icon: 'none' })
setTimeout(() => uni.navigateBack(), 1500)
}
})
// 上拉加载下一页
onReachBottom(() => {
if (!loadingMore.value && infoList.value.length < total.value) {
queryParams.pageNum++
getList(true)
}
})
async function getList(isLoadMore = false) {
if (isLoadMore) {
loadingMore.value = true
} else {
loading.value = true
queryParams.pageNum = 1
// 重置合计
statistical.value = { totalCost: 0, totalNum: 0 }
}
try {
const res = await api.paymentList(queryParams)
if (isLoadMore) {
infoList.value = [...infoList.value, ...(res.rows || [])]
} else {
infoList.value = res.rows || []
}
total.value = res.total || 0
// 计算合计
if (!isLoadMore) {
infoList.value.forEach(info => {
statistical.value.totalCost += (info.totalAmount * 1)
statistical.value.totalNum += (info.totalNum * 1)
})
}
} catch (err) {
console.error('获取列表失败', err)
uni.showToast({ title: '获取数据失败', icon: 'none' })
} finally {
loading.value = false
loadingMore.value = false
}
}
function handleTabChange(val) {
submitFlag.value = val
queryParams.submitFlag = val
getList()
}
const noMore = computed(() => infoList.value.length >= total.value && total.value > 0)
function formatDate(dateStr) {
if (!dateStr) return '-'
if (typeof dateStr === 'string' && dateStr.indexOf('T') > -1) {
return dateStr.slice(0, 10)
}
return dateStr
}
function getVerityStatusClass(status) {
const map = {
'1': 'text-success',
'2': 'text-danger',
'3': 'text-warning'
}
return map[status] || ''
}
function handelInvoice(fileUrl) {
console.log('fileUrl', fileUrl)
if (!fileUrl) {
uni.showToast({ title: '暂无发票', icon: 'none' })
return
}
try {
const invoice = JSON.parse(fileUrl)
if (invoice && invoice.length > 0) {
let url = invoice[0].url
const fileName = invoice[0].name || ''
// 避免使用可选链操作符,确保兼容性
let ext = ''
if (fileName) {
const parts = fileName.split('.')
if (parts.length > 1) {
ext = parts[parts.length - 1].toLowerCase()
}
}
console.log('发票信息:', { url, fileName, ext })
// 判断是否需要拼接 baseUrl
if (url.indexOf('http') === -1) {
url = config.baseUrl_api + url
}
console.log('完整下载地址:', url)
uni.showLoading({ title: '下载中' })
uni.downloadFile({
url: url,
success: (res) => {
console.log('下载成功:', res)
uni.hideLoading()
if (res.statusCode === 200) {
// 图片类型用 previewImage 预览
if (['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'].includes(ext)) {
uni.previewImage({
urls: [res.tempFilePath],
success: () => {
console.log('预览成功')
},
fail: (err) => {
console.error('预览失败:', err)
uni.showToast({ title: '预览失败', icon: 'none' })
}
})
} else {
// PDF 等文档用 openDocument 打开
uni.openDocument({
filePath: res.tempFilePath,
showMenu: true,
success: () => {
console.log('打开文档成功')
},
fail: (err) => {
console.error('打开失败:', err)
uni.showToast({ title: '打开失败', icon: 'none' })
}
})
}
} else {
uni.showToast({ title: '下载失败: ' + res.statusCode, icon: 'none' })
}
},
fail: (err) => {
console.error('下载失败:', err)
uni.hideLoading()
uni.showToast({ title: '下载失败', icon: 'none' })
}
})
} else {
uni.showToast({ title: '暂无发票', icon: 'none' })
}
} catch (e) {
console.error('发票信息解析失败:', e)
uni.showToast({ title: '发票信息解析失败', icon: 'none' })
}
}
</script>
<style lang="scss" scoped>
.detail-page {
min-height: 100vh;
background-color: #f5f5f5;
padding: 20rpx;
}
.section {
background: #fff;
border-radius: 16rpx;
margin-bottom: 20rpx;
overflow: hidden;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
}
.section-header {
display: flex;
align-items: center;
padding: 24rpx 24rpx 20rpx;
border-bottom: 1rpx solid #eee;
.section-title {
font-size: 30rpx;
font-weight: 600;
color: #333;
margin-left: 10rpx;
}
}
.info-grid {
display: grid;
grid-template-columns: repeat(1, 1fr);
padding: 8rpx 24rpx 24rpx;
}
.info-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 18rpx 0;
border-bottom: 1rpx solid #f5f5f5;
.label {
font-size: 26rpx;
color: #999;
flex-shrink: 0;
}
.value {
font-size: 26rpx;
color: #333;
text-align: right;
flex: 1;
margin-left: 20rpx;
word-break: break-all;
&.link {
color: #1890ff;
}
}
}
/* Tab 页 */
.tab-section {
background: #fff;
border-radius: 16rpx;
margin-bottom: 20rpx;
overflow: hidden;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
}
.tab-bar {
display: flex;
padding: 0 24rpx;
}
.tab-item {
flex: 1;
text-align: center;
padding: 24rpx 0;
font-size: 28rpx;
color: #666;
position: relative;
&.active {
color: #AD181F;
font-weight: 600;
&::after {
content: '';
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 60rpx;
height: 4rpx;
background: #AD181F;
border-radius: 2rpx;
}
}
}
/* 统计卡片 */
.stats-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 20rpx;
margin-bottom: 20rpx;
}
.stat-card {
background: #fff;
border-radius: 16rpx;
padding: 30rpx 20rpx;
text-align: center;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.05);
.stat-label {
font-size: 24rpx;
color: #999;
margin-bottom: 12rpx;
}
.stat-value {
font-size: 36rpx;
font-weight: 700;
color: #333;
}
.stat-unit {
font-size: 24rpx;
font-weight: 400;
color: #999;
}
.text-red {
color: #AD181F;
}
}
/* 加载 */
.loading-wrap {
padding: 100rpx 0;
text-align: center;
}
/* 列表 */
.list-section {
margin-bottom: 20rpx;
}
.list-item {
background: #fff;
border-radius: 16rpx;
margin-bottom: 20rpx;
overflow: hidden;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
}
.item-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20rpx 24rpx;
border-bottom: 1rpx solid #f5f5f5;
&:last-child {
border-bottom: none;
}
.item-label {
font-size: 26rpx;
color: #999;
flex-shrink: 0;
}
.item-value {
font-size: 26rpx;
color: #333;
text-align: right;
flex: 1;
margin-left: 20rpx;
word-break: break-all;
}
.text-red {
color: #AD181F;
}
.text-success {
color: #52c41a;
}
.text-warning {
color: #fa8c16;
}
.text-danger {
color: #f5222d;
}
}
.empty-tip {
text-align: center;
padding: 60rpx 0;
color: #999;
font-size: 28rpx;
}
/* 加载更多 */
.load-more {
padding: 20rpx 0;
background: #fff;
border-radius: 16rpx;
margin-bottom: 20rpx;
}
</style>
<template>
<view class="audit-page">
<!-- 提示信息 -->
<view class="tips-box">
<uni-icons type="info" size="18" color="#13B5B1"></uni-icons>
<text class="tips-text" v-if="type === 'batch'">批量审核 {{ ids.split(',').length }} 条记录</text>
<text class="tips-text" v-else>单个审核</text>
</view>
<!-- 审核表单 -->
<view class="form-section">
<view class="section-header">
<uni-icons type="edit" size="18" color="#AD181F"></uni-icons>
<text class="section-title">审核信息</text>
</view>
<view class="form-card">
<view class="form-item">
<text class="form-label">审批结果</text>
<view class="radio-group">
<view
class="radio-item"
:class="{ selected: form.flag === '1' }"
@click="form.flag = '1'"
>
<view class="radio-circle">
<uni-icons v-if="form.flag === '1'" type="checkmark" size="10" color="#fff"></uni-icons>
</view>
<text>审批通过</text>
</view>
<view
class="radio-item"
:class="{ selected: form.flag === '0' }"
@click="form.flag = '0'"
>
<view class="radio-circle">
<uni-icons v-if="form.flag === '0'" type="checkmark" size="10" color="#fff"></uni-icons>
</view>
<text>审批拒绝</text>
</view>
</view>
</view>
<view class="form-item">
<text class="form-label">备注</text>
<textarea
v-model="form.reason"
class="textarea"
placeholder="请输入备注信息(拒绝时必填)"
:maxlength="500"
/>
</view>
</view>
</view>
<!-- 提交按钮 -->
<view class="submit-wrap">
<button class="btn-cancel" @click="goBack">取消</button>
<button class="btn-submit" @click="doSubmit" :disabled="submitting">
<text v-if="!submitting">确认提交</text>
<text v-else>提交中...</text>
</button>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api_exam.js'
import { ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
const type = ref('single') // single 或 batch
const ids = ref('')
const submitting = ref(false)
const form = ref({
flag: '1',
reason: ''
})
onLoad((options) => {
if (options.type) {
type.value = options.type
}
if (options.ids) {
ids.value = options.ids
}
})
function goBack() {
uni.navigateBack()
}
function doSubmit() {
if (form.value.flag === '0' && !form.value.reason) {
uni.showToast({
title: '请输入拒绝理由',
icon: 'none'
})
return
}
if (submitting.value) return
submitting.value = true
const params = {
ids: ids.value,
flag: form.value.flag,
reason: form.value.reason || ''
}
api.ztxAudit(params).then(res => {
uni.showToast({
title: '操作成功',
icon: 'success'
})
setTimeout(() => {
uni.navigateBack()
}, 1500)
}).catch(err => {
console.error('审核失败', err)
uni.showToast({
title: '操作失败',
icon: 'none'
})
submitting.value = false
})
}
</script>
<style lang="scss" scoped>
.audit-page {
min-height: 100vh;
background-color: #f5f5f5;
padding: 20rpx;
padding-bottom: 120rpx;
}
.tips-box {
background-color: #e8f8f7;
border-radius: 12rpx;
padding: 24rpx;
margin-bottom: 20rpx;
display: flex;
align-items: center;
gap: 12rpx;
.tips-text {
font-size: 26rpx;
color: #13B5B1;
}
}
.form-section {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
}
.section-header {
display: flex;
align-items: center;
margin-bottom: 30rpx;
.section-title {
font-size: 30rpx;
font-weight: 600;
color: #333;
margin-left: 10rpx;
}
}
.form-card {
.form-item {
margin-bottom: 30rpx;
&:last-child {
margin-bottom: 0;
}
.form-label {
display: block;
font-size: 28rpx;
color: #333;
margin-bottom: 16rpx;
font-weight: 500;
}
.radio-group {
display: flex;
gap: 40rpx;
}
.radio-item {
display: flex;
align-items: center;
gap: 12rpx;
font-size: 28rpx;
color: #333;
.radio-circle {
width: 36rpx;
height: 36rpx;
border-radius: 50%;
border: 2rpx solid #ddd;
display: flex;
align-items: center;
justify-content: center;
}
&.selected {
.radio-circle {
background-color: #13B5B1;
border-color: #13B5B1;
}
}
}
.textarea {
width: 100%;
height: 200rpx;
border: 1px solid #eee;
border-radius: 12rpx;
padding: 20rpx;
font-size: 28rpx;
color: #333;
background-color: #fafafa;
box-sizing: border-box;
}
}
}
.submit-wrap {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 110rpx;
background-color: #fff;
display: flex;
align-items: center;
justify-content: center;
gap: 30rpx;
padding: 0 30rpx;
box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.05);
button {
flex: 1;
height: 80rpx;
line-height: 80rpx;
font-size: 28rpx;
border-radius: 40rpx;
border: none;
}
.btn-cancel {
background-color: #f5f5f5;
color: #666;
}
.btn-submit {
background: linear-gradient(135deg, #13B5B1, #15c5c1);
color: #fff;
&[disabled] {
background: #ccc;
}
}
}
</style>
<template>
<view class="detail-page">
<!-- 基本信息 -->
<view class="section">
<view class="section-header">
<uni-icons type="paperclip" size="18" color="#AD181F"></uni-icons>
<text class="section-title">基本信息</text>
</view>
<view class="info-card">
<view class="info-row">
<text class="label">申请单位</text>
<text class="value">{{ form.memName || '-' }}</text>
</view>
<view class="info-row">
<text class="label">所属协会</text>
<text class="value">{{ form.shenMemName || '-' }}</text>
</view>
<view class="info-row">
<text class="label">审核状态</text>
<text class="value" :class="getStatusClass(form.auditStatus)">
{{ getStatusText(form.auditStatus) }}
</text>
</view>
<view class="info-row">
<text class="label">是否需要</text>
<text class="value">{{ form.selfSelect == 1 ? '否' : '是' }}</text>
</view>
<view class="info-row">
<text class="label">会员有效期</text>
<text class="value">{{ formatDate(form.memValidDate) }}</text>
</view>
<view class="info-row">
<text class="label">申请日期</text>
<text class="value">{{ formatDate(form.commitTime) }}</text>
</view>
<view class="info-row">
<text class="label">审核日期</text>
<text class="value">{{ formatDate(form.auditTime) }}</text>
</view>
<view class="info-row">
<text class="label">考官</text>
<text class="value">{{ form.examiners || '-' }}</text>
</view>
</view>
</view>
<!-- 审核记录 -->
<view class="section" v-if="auditList.length > 0">
<view class="section-header">
<uni-icons type="checkmark-circle" size="18" color="#AD181F"></uni-icons>
<text class="section-title">审核记录</text>
</view>
<view class="audit-list">
<view class="audit-item" v-for="(item, index) in auditList" :key="index">
<view class="audit-dot" :class="item.auditResult == 2 ? 'pass' : 'fail'"></view>
<view class="audit-content">
<view class="audit-row">
<text class="audit-label">审核协会</text>
<text class="audit-value">{{ item.auditDeptName || '-' }}</text>
</view>
<view class="audit-row">
<text class="audit-label">审核时间</text>
<text class="audit-value">{{ formatDateTime(item.auditTime) }}</text>
</view>
<view class="audit-row">
<text class="audit-label">审核状态</text>
<text class="audit-value" :class="item.auditResult == 2 ? 'text-success' : 'text-danger'">
{{ item.auditResult == 2 ? '通过' : '拒绝' }}
</text>
</view>
<view class="audit-row" v-if="item.auditMsg">
<text class="audit-label">备注</text>
<text class="audit-value">{{ item.auditMsg }}</text>
</view>
</view>
</view>
</view>
</view>
<!-- 考官信息 -->
<view class="section" v-if="examinerList.length > 0">
<view class="section-header">
<uni-icons type="person" size="18" color="#AD181F"></uni-icons>
<text class="section-title">考官信息</text>
</view>
<view class="examiner-table" v-if="examinerList.length > 0">
<view class="table-header">
<view class="th th-name">姓名</view>
<view class="th th-code">会员号</view>
<view class="th th-idcard">证件号码</view>
</view>
<view class="table-body">
<view class="table-row" v-for="(item, index) in examinerList" :key="index">
<view class="td td-name">{{ item.perName }}</view>
<view class="td td-code">{{ item.perCode || '-' }}</view>
<view class="td td-idcard">{{ item.perIdcCode || '-' }}</view>
</view>
</view>
</view>
<view class="no-data" v-else>
<text>暂无考官信息</text>
</view>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api_exam.js'
import { ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
const form = ref({})
const auditList = ref([])
const examinerList = ref([])
const auditStatusMap = { 1: '审核中', 2: '审核通过', 3: '审核拒绝' }
onLoad((options) => {
if (options.item) {
try {
const itemData = JSON.parse(decodeURIComponent(options.item))
form.value = itemData
if (itemData.auditList) {
auditList.value = itemData.auditList
}
if (itemData.memId) {
getExaminerList(itemData.memId)
}
} catch (e) {
console.error('解析数据失败', e)
}
}
})
function getExaminerList(memId) {
api.listInfo({ memId: memId }).then(res => {
if (res.rows) {
examinerList.value = res.rows
}
}).catch(err => {
console.error('获取考官列表失败', err)
})
}
function getStatusText(status) {
return auditStatusMap[status] || '-'
}
function getStatusClass(status) {
const classMap = {
1: 'text-warning',
2: 'text-success',
3: 'text-danger'
}
return classMap[status] || ''
}
function formatDate(dateStr) {
if (!dateStr) return '-'
return dateStr.substring(0, 10)
}
function formatDateTime(dateStr) {
if (!dateStr) return '-'
if (typeof dateStr === 'string' && dateStr.indexOf('T') > -1) {
const [date, time] = dateStr.split('T')
return `${date} ${time?.slice(0, 5) || ''}`
}
return dateStr
}
</script>
<style lang="scss" scoped>
.detail-page {
min-height: 100vh;
background-color: #f5f5f5;
padding: 20rpx;
padding-bottom: 40rpx;
}
.section {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
}
.section-header {
display: flex;
align-items: center;
margin-bottom: 24rpx;
.section-title {
font-size: 30rpx;
font-weight: 600;
color: #333;
margin-left: 10rpx;
}
}
.info-card {
.info-row {
display: flex;
justify-content: space-between;
padding: 16rpx 0;
border-bottom: 1px solid #f0f0f0;
&:last-child {
border-bottom: none;
}
.label {
font-size: 26rpx;
color: #999;
flex-shrink: 0;
}
.value {
font-size: 26rpx;
color: #333;
text-align: right;
margin-left: 20rpx;
&.text-success {
color: #4caf50;
}
&.text-warning {
color: #ff9800;
}
&.text-danger {
color: #f44336;
}
}
}
}
/* 审核记录 */
.audit-list {
.audit-item {
display: flex;
padding: 20rpx 0;
border-bottom: 1px dashed #eee;
&:last-child {
border-bottom: none;
}
.audit-dot {
width: 14rpx;
height: 14rpx;
border-radius: 50%;
margin-top: 8rpx;
margin-right: 20rpx;
flex-shrink: 0;
&.pass {
background-color: #4caf50;
}
&.fail {
background-color: #f44336;
}
}
.audit-content {
flex: 1;
.audit-row {
display: flex;
margin-bottom: 10rpx;
&:last-child {
margin-bottom: 0;
}
.audit-label {
font-size: 24rpx;
color: #999;
width: 140rpx;
flex-shrink: 0;
}
.audit-value {
font-size: 26rpx;
color: #333;
flex: 1;
&.text-success {
color: #4caf50;
}
&.text-danger {
color: #f44336;
}
}
}
}
}
}
/* 考官表格 */
.examiner-table {
border: 1px solid #eee;
border-radius: 12rpx;
overflow: hidden;
.table-header {
display: flex;
background-color: #f5f5f5;
.th {
padding: 20rpx 0;
text-align: center;
font-size: 24rpx;
color: #666;
font-weight: 500;
}
}
.th-name { width: 25%; }
.th-code { width: 30%; }
.th-idcard { width: 45%; }
.table-body {
.table-row {
display: flex;
border-bottom: 1px solid #eee;
&:last-child {
border-bottom: none;
}
.td {
padding: 20rpx 0;
text-align: center;
font-size: 24rpx;
color: #333;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.td-name { width: 25%; }
.td-code { width: 30%; }
.td-idcard { width: 45%; }
}
}
.no-data {
padding: 60rpx 0;
text-align: center;
color: #999;
font-size: 26rpx;
}
</style>
<template>
<view class="exam-verification-page">
<!-- 搜索区域(保留原代码,解开注释即可用) -->
<!-- <view class="search-box">
<view class="search-form">
<view class="form-item">
<text class="label">缴费单位</text>
<input v-model="queryParams.memName" placeholder="请输入缴费单位" />
</view>
<view class="form-item">
<text class="label">审核状态</text>
<picker :value="auditStatusIndex" :range="auditStatusOptions" @change="onAuditStatusChange">
<view class="picker-value">
{{ auditStatusOptions[auditStatusIndex] }}
<uni-icons type="bottom" size="12" color="#999"></uni-icons>
</view>
</picker>
</view>
<view class="form-item full-width">
<text class="label">提交日期</text>
<view class="date-range">
<picker mode="date" :value="commitTimeStart" @change="onCommitTimeStartChange">
<view class="picker-value">{{ commitTimeStart || '开始时间' }}</view>
</picker>
<text class="date-separator"></text>
<picker mode="date" :value="commitTimeEnd" @change="onCommitTimeEndChange">
<view class="picker-value">{{ commitTimeEnd || '结束时间' }}</view>
</picker>
</view>
</view>
</view>
<view class="search-btns">
<button class="btn-search" @click="handleQuery">搜索</button>
<button class="btn-reset" @click="resetQuery">重置</button>
</view>
</view> -->
<!-- 顶部Tab栏(截图风格) -->
<view class="tab-bar">
<view
class="tab-item"
v-for="(tab, index) in tabList"
:key="index"
:class="{ active: currentTab === index }"
@click="switchTab(index)"
>
{{ tab.name }}
</view>
</view>
<!-- 批量审核按钮(保留原逻辑,仅优化样式) -->
<view class="batch-btn-wrap" v-if="selectedList.length > 0 && currentTab === 0">
<button class="btn-batch" :disabled="selectedList.length === 0" @click="goBatchAudit">
<uni-icons type="checkmark-circle" size="16" color="#fff"></uni-icons>
批量审核 ({{ selectedList.length }})
</button>
</view>
<!-- 列表区域(保留原字段+截图样式+所有按钮) -->
<scroll-view
class="scroll-list"
scroll-y
@scrolltolower="loadMore"
:lower-threshold="100"
>
<view class="appList">
<view
class="appItem"
v-for="(item, index) in infoList"
:key="index"
:class="{ 'item-checked': isSelected(item) }"
>
<!-- 选择框(保留原逻辑+适配截图样式) -->
<!-- <view class="checkbox-wrap" v-if="item.auditStatus == 1" @click="toggleSelect(item)">
<view class="checkbox" :class="{ selected: isSelected(item) }">
<uni-icons v-if="isSelected(item)" type="checkmark" size="12" color="#fff"></uni-icons>
</view>
</view> -->
<!-- 主内容区(点击跳详情,保留原所有字段) -->
<view @click="goDetail(item)" class="item-content">
<!-- 状态标签+提交时间(截图风格顶部) -->
<view class="item-top">
<text class="submit-time">{{ formatDate(item.commitTime) }} 提交</text>
<text class="status-tag" :class="getStatusClass(item.auditStatus)">
{{ getStatusText(item.auditStatus) }}
</text>
</view>
<!-- 缴费单位名称(原name字段,截图风格标题) -->
<view class="mem-name">{{ item.shenMemName }}</view>
<!-- 第一行信息:所属协会/会员有效期/是否需要(原flexbox1,截图风格) -->
<view class="info-row">
<view class="info-item">
<text class="info-label">申请单位</text>
<text class="info-value">{{ item.memName || '-' }}</text>
</view>
<view class="info-item">
<text class="info-label">会员有效期</text>
<text class="info-value">{{ formatDate(item.memValidDate) }}</text>
</view>
<!-- <view class="info-item">
<text class="info-label">是否需要</text>
<text class="info-value">{{ item.selfSelect == 1 ? '否' : '是' }}</text>
</view> -->
</view>
<!-- 第二行信息:申请日期/审核日期(原flexbox2,截图风格) -->
<!-- <view class="info-row">
<view class="info-item two-col">
<text class="info-label">申请日期</text>
<text class="info-value">{{ formatDate(item.commitTime) }}</text>
</view>
<view class="info-item two-col">
<text class="info-label">审核日期</text>
<text class="info-value">{{ formatDate(item.auditTime) }}</text>
</view>
</view> -->
</view>
<!-- 操作按钮区(保留原所有按钮:查看/审核/机构资料,截图风格) -->
<view class="func">
<!-- <button class="btn-info" >查看</button> -->
<button
v-if="item.auditStatus == 1"
class="btn-info"
@click.stop="goAudit(item)"
>审核</button>
<button class="btn-info" @click.stop="goInstitution(item)">机构资料</button>
</view>
</view>
</view>
<!-- 加载更多(保留原逻辑) -->
<view class="loading-more" v-if="infoList.length > 0">
<uni-load-more :status="loadMoreStatus" :contentText="loadMoreText"></uni-load-more>
</view>
</scroll-view>
<!-- 空数据(保留原逻辑+适配截图样式) -->
<view class="nodata" v-if="infoList.length == 0 && !loading">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
</view>
</template>
<script setup>
// 完全保留你原代码的所有JS逻辑、方法、字段,未做任何修改
import * as api from '@/common/api_exam.js'
import { ref } from 'vue'
import { onLoad, onShow } from '@dcloudio/uni-app'
const app = getApp()
const loading = ref(false)
const loadMoreStatus = ref('more')
const loadMoreText = {
contentdown: '上拉加载更多',
contentrefresh: '正在加载...',
contentnomore: '没有更多了'
}
const queryParams = ref({
pageNum: 1,
pageSize: 10
})
const auditStatusOptions = ['全部', '审核中', '审核通过', '审核拒绝']
const auditStatusIndex = ref(0)
const commitTimeStart = ref('')
const commitTimeEnd = ref('')
const infoList = ref([])
const total = ref(0)
const selectedList = ref([])
// 新增Tab配置(匹配截图,关联原审核状态)
const tabList = ref([
{ name: '全部', auditStatus: '' },
{ name: '审核中', auditStatus: '1' },
{ name: '审核通过', auditStatus: '2' },
{ name: '审核拒绝', auditStatus: '3' }
])
const currentTab = ref(0)
onLoad(() => {
init()
})
onShow(() => {
if (app.globalData.isLogin) {
// init()
} else {
app.firstLoadCallback = () => {
// init()
}
}
})
function init() {
getList()
}
// 新增Tab切换方法(关联原查询参数)
function switchTab(index) {
if (currentTab.value === index) return
currentTab.value = index
// 同步原审核状态查询参数
queryParams.value.auditStatus = Number(tabList.value[index].auditStatus)
// 重置列表和选择状态
queryParams.value.pageNum = 1
loadMoreStatus.value = 'more'
selectedList.value = []
getList()
}
function getList(isLoadMore = false) {
if (loading.value) return
if (!isLoadMore) {
loading.value = true
queryParams.value.pageNum = 1
loadMoreStatus.value = 'loading'
} else {
if (loadMoreStatus.value === 'noMore') return
loadMoreStatus.value = 'loading'
}
uni.showLoading({ title: '加载中' })
const params = { ...queryParams.value }
if (commitTimeStart.value) {
params.commitTimeStart = commitTimeStart.value + ' 00:00:00'
}
if (commitTimeEnd.value) {
params.commitTimeEnd = commitTimeEnd + ' 23:59:59'
}
api.listInfo(params).then(res => {
uni.hideLoading()
if (res.rows) {
if (isLoadMore) {
infoList.value = [...infoList.value, ...res.rows]
} else {
infoList.value = res.rows
}
total.value = res.total || 0
if (infoList.value.length >= total.value) {
loadMoreStatus.value = 'noMore'
} else {
loadMoreStatus.value = 'more'
}
} else {
infoList.value = []
total.value = 0
loadMoreStatus.value = 'noMore'
}
loading.value = false
}).catch(err => {
uni.hideLoading()
console.error('获取列表失败', err)
loading.value = false
loadMoreStatus.value = 'more'
})
}
function loadMore() {
if (loadMoreStatus.value === 'noMore' || loading.value) return
queryParams.value.pageNum++
getList(true)
}
function handleQuery() {
queryParams.value.pageNum = 1
loadMoreStatus.value = 'more'
selectedList.value = []
getList()
}
function resetQuery() {
queryParams.value = {
pageNum: 1,
pageSize: 10
}
auditStatusIndex.value = 0
commitTimeStart.value = ''
commitTimeEnd.value = ''
loadMoreStatus.value = 'more'
selectedList.value = []
getList()
}
function onAuditStatusChange(e) {
auditStatusIndex.value = e.detail.value
queryParams.value.auditStatus = e.detail.value === 0 ? '' : String(e.detail.value)
}
function onCommitTimeStartChange(e) {
commitTimeStart.value = e.detail.value
}
function onCommitTimeEndChange(e) {
commitTimeEnd.value = e.detail.value
}
function isSelected(item) {
return selectedList.value.some(s => s.id === item.id)
}
function toggleSelect(item) {
const index = selectedList.value.findIndex(s => s.id === item.id)
if (index > -1) {
selectedList.value.splice(index, 1)
} else {
selectedList.value.push(item)
}
}
function goDetail(item) {
const itemStr = encodeURIComponent(JSON.stringify(item))
uni.navigateTo({
url: `/level/ztx/examinationDetail?item=${itemStr}`
})
}
function goAudit(item) {
const itemStr = encodeURIComponent(JSON.stringify(item))
uni.navigateTo({
url: `/level/ztx/examinationAudit?item=${itemStr}&type=single`
})
}
function goBatchAudit() {
if (selectedList.value.length === 0) return
const ids = selectedList.value.map(s => s.id).join(',')
uni.navigateTo({
url: `/level/ztx/examinationAudit?ids=${ids}&type=batch`
})
}
function goInstitution(item) {
uni.navigateTo({
url: `/level/ztx/institutionInfo?memId=${item.memId}`
})
}
function getStatusText(status) {
const statusMap = { 1: '审核中', 2: '审核通过', 3: '审核拒绝' }
return statusMap[status] || '-'
}
function getStatusClass(status) {
const classMap = {
1: 'text-warning',
2: 'text-success',
3: 'text-danger'
}
return classMap[status] || ''
}
function formatDate(dateStr) {
if (!dateStr) return '-'
return dateStr.substring(0, 10)
}
</script>
<style lang="scss" scoped>
.exam-verification-page {
min-height: 100vh;
background-color: #f5f5f5;
display: flex;
flex-direction: column;
}
/* 顶部Tab栏(截图风格:红色主色+下划线) */
.tab-bar {
display: flex;
background-color: #fff;
border-bottom: 1px solid #eee;
width: 100%;
box-sizing: border-box;
.tab-item {
flex: 1;
height: 88rpx;
line-height: 88rpx;
text-align: center;
font-size: 32rpx;
color: #666;
position: relative;
transition: all 0.2s;
&.active {
color: #C4121B;
font-weight: 600;
&::after {
content: '';
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 120rpx;
height: 6rpx;
background-color: #C4121B;
border-radius: 3rpx;
}
}
}
}
/* 批量审核按钮(保留原样式+适配Tab布局) */
.batch-btn-wrap {
padding: 0 20rpx;
margin: 20rpx 0;
.btn-batch {
width: 100%;
height: 80rpx;
line-height: 80rpx;
background: linear-gradient(135deg, #13B5B1, #15c5c1);
color: #fff;
font-size: 28rpx;
border-radius: 40rpx;
display: flex;
align-items: center;
justify-content: center;
gap: 10rpx;
border: none;
&[disabled] {
background: #ccc;
}
}
}
/* 列表滚动区(适配Tab+批量按钮高度) */
.scroll-list {
flex: 1;
width: 100%;
box-sizing: border-box;
padding-bottom: 20rpx;
}
/* 列表容器 */
.appList {
padding: 0 20rpx;
width: 100%;
box-sizing: border-box;
}
/* 列表项(截图风格:白色卡片+圆角+阴影+红色顶边) */
.appItem {
background-color: #fff;
// border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
position: relative;
border-top: 4rpx solid #C4121B;
display: flex;
flex-direction: column;
gap: 24rpx;
width: 100%;
box-sizing: border-box;
&.item-checked {
// border: 2rpx solid #13B5B1;
border-top: 4rpx solid #C4121B;
}
/* 选择框(保留原位置+适配截图样式) */
.checkbox-wrap {
position: absolute;
top: 20rpx;
right: 20rpx;
z-index: 10;
.checkbox {
width: 36rpx;
height: 36rpx;
border: 2rpx solid #ddd;
border-radius: 8rpx;
display: flex;
align-items: center;
justify-content: center;
background: #fff;
transition: all 0.2s;
&.selected {
background: #13B5B1;
border-color: #13B5B1;
}
}
}
/* 主内容区 */
.item-content {
width: 100%;
display: flex;
flex-direction: column;
gap: 16rpx;
}
/* 状态+提交时间(截图风格顶部) */
.item-top {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
.status-tag {
padding: 6rpx 20rpx;
border-radius: 20rpx;
font-size: 24rpx;
.text-warning {
background-color: #fff3e0;
color: #ff9800;
}
.text-success {
background-color: #e8f5e9;
color: #4caf50;
}
.text-danger {
background-color: #ffebee;
color: #f44336;
}
}
.submit-time {
font-size: 24rpx;
color: #999;
}
}
/* 缴费单位名称(截图风格标题) */
.mem-name {
font-size: 28rpx;
font-weight: 600;
color: #333;
padding-bottom: 8rpx;
// border-bottom: 1px dashed #eee;
}
/* 信息行(截图风格:浅灰背景+圆角+均匀分布) */
.info-row {
display: flex;
justify-content: space-between;
background-color: #f8f9fa;
border-radius: 12rpx;
padding: 20rpx;
gap: 16rpx;
width: 100%;
box-sizing: border-box;
.info-item {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
gap: 8rpx;
&.two-col {
flex: 1;
max-width: 48%;
}
.info-label {
font-size: 24rpx;
color: #999;
}
.info-value {
font-size: 28rpx;
color: #333;
font-weight: 500;
text-align: center;
}
}
}
/* 操作按钮区(保留原三个按钮+截图风格优化) */
.func {
display: flex;
gap: 20rpx;
width: 100%;
box-sizing: border-box;
justify-content: flex-end;
button {
// flex: 1;
width: 100px;
height: 72rpx;
line-height: 72rpx;
font-size: 28rpx;
border-radius: 36rpx;
border: none;
transition: all 0.2s;
}
.btn-view {
background-color: #f5f5f5;
color: #666;
}
.btn-audit {
background: linear-gradient(135deg, #13B5B1, #15c5c1);
color: #fff;
}
.btn-info {
border: 2rpx solid #C4121B;
// background: linear-gradient(135deg, #ff9800, #ffb74d);
color: #C4121B;
}
}
}
/* 加载更多(适配截图样式) */
.loading-more {
padding: 30rpx 0;
text-align: center;
font-size: 26rpx;
color: #999;
}
/* 空数据(适配截图样式) */
.nodata {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 100rpx 0;
gap: 20rpx;
image {
width: 300rpx;
height: 300rpx;
}
text {
font-size: 28rpx;
color: #999;
}
}
/* 搜索区样式(保留原代码,解开注释即可用) */
.search-box {
background-color: #fff;
padding: 30rpx;
margin: 20rpx;
border-radius: 16rpx;
box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.05);
}
.search-form {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
gap: 24rpx;
}
.form-item {
width: 48%;
display: flex;
flex-direction: column;
gap: 10rpx;
&.full-width {
width: 100%;
}
.label {
font-size: 26rpx;
color: #666;
}
input {
width: 100%;
height: 70rpx;
border: 1px solid #eee;
border-radius: 8rpx;
padding: 0 20rpx;
font-size: 26rpx;
background-color: #fafafa;
box-sizing: border-box;
}
.picker-value {
width: 100%;
height: 70rpx;
border: 1px solid #eee;
border-radius: 8rpx;
padding: 0 20rpx;
font-size: 26rpx;
background-color: #fafafa;
display: flex;
align-items: center;
justify-content: space-between;
line-height: 70rpx;
box-sizing: border-box;
}
.date-range {
display: flex;
align-items: center;
gap: 10rpx;
width: 100%;
.picker-value {
flex: 1;
}
.date-separator {
color: #999;
}
}
}
.search-btns {
display: flex;
justify-content: center;
gap: 30rpx;
margin-top: 20rpx;
button {
width: 200rpx;
height: 70rpx;
line-height: 70rpx;
font-size: 28rpx;
border-radius: 35rpx;
border: none;
}
.btn-search {
background: linear-gradient(135deg, #13B5B1, #15c5c1);
color: #fff;
}
.btn-reset {
background-color: #f5f5f5;
color: #666;
}
}
</style>
\ No newline at end of file
<template>
<view class="institution-page">
<view class="loading-wrap" v-if="loading">
<uni-load-more status="loading"></uni-load-more>
</view>
<view v-else>
<!-- 基本信息 -->
<view class="section">
<view class="section-header">
<uni-icons type="office" size="18" color="#AD181F"></uni-icons>
<text class="section-title">基本信息</text>
</view>
<view class="info-card">
<view class="info-row">
<text class="label">所属协会</text>
<text class="value">{{ form.parentDeptName || '-' }}</text>
</view>
<!-- <view class="info-row">
<text class="label">会员编号</text>
<text class="value">{{ form.menCode || '-' }}</text>
</view> -->
<view class="info-row">
<text class="label">机构名称</text>
<text class="value">{{ form.name || '-' }}</text>
</view>
<view class="info-row">
<text class="label">认证地址</text>
<text class="value">{{ form.provinceStr + form.cityStr + form.regionStr || '-' }}</text>
</view>
<view class="info-row">
<text class="label">详细地址</text>
<text class="value">{{ form.adress || '-' }}</text>
</view>
<view class="info-row">
<text class="label">联系人</text>
<text class="value">{{ form.siteContact || '-' }}</text>
</view>
<view class="info-row">
<text class="label">联系方式</text>
<text class="value">{{ form.siteTel || '-' }}</text>
</view>
<view class="info-row" v-if="form.applyPoints !== undefined">
<text class="label">是否为考点</text>
<text class="value">{{ form.applyPoints == 1 ? '是' : '否' }}</text>
</view>
</view>
</view>
<!-- 营业执照 -->
<view class="section" v-if="form.businessLicense">
<view class="section-header">
<uni-icons type="document" size="18" color="#AD181F"></uni-icons>
<text class="section-title">营业执照</text>
</view>
<view class="info-card">
<view class="info-row">
<text class="label">营业执照名称</text>
<text class="value">{{ form.companyName || '-' }}</text>
</view>
<view class="info-row">
<text class="label">社会信用代码</text>
<text class="value">{{ form.creditCode || '-' }}</text>
</view>
<view class="info-row" v-if="form.validityDate">
<text class="label">有效期</text>
<text class="value">{{ form.validityDate }}</text>
</view>
<view class="info-row">
<text class="label">营业执照</text>
<view>
<template v-slot:footer>
<view style="width: 50vw;word-break: break-all;text-align: right;" @click="download(form.businessLicense[0]?.url)" v-if="form.businessLicense&&form.businessLicense?.length>0">
<text class="text-primary">{{form.businessLicense[0]?.name}}</text>
</view>
</template>
</view>
</view>
</view>
</view>
<!-- 法人信息 -->
<view class="section">
<view class="section-header">
<uni-icons type="person" size="18" color="#AD181F"></uni-icons>
<text class="section-title">法人信息</text>
</view>
<view class="info-card">
<view class="info-row">
<text class="label">法人姓名</text>
<text class="value">{{ form.legal || '-' }}</text>
</view>
<view class="info-row">
<text class="label">法人证件号</text>
<text class="value">{{ form.legalIdcCode || '-' }}</text>
</view>
</view>
</view>
<!-- 证件照片 -->
<view class="section" v-if="form.legalIdcPhoto && form.legalIdcPhoto.length > 0">
<view class="section-header">
<uni-icons type="photo" size="18" color="#AD181F"></uni-icons>
<text class="section-title">法人证件照</text>
</view>
<view class="image-list">
<image
v-for="(img, index) in form.legalIdcPhoto"
:key="index"
class="preview-image"
:src="getImageUrl(img)"
mode="aspectFit"
@click="previewImage(form.legalIdcPhoto, index)"
/>
</view>
</view>
<!-- 机构照片 -->
<view class="section" v-if="form.pictures && form.pictures.length > 0">
<view class="section-header">
<uni-icons type="image" size="18" color="#AD181F"></uni-icons>
<text class="section-title">机构照片</text>
</view>
<view class="image-list">
<image
v-for="(img, index) in form.pictures"
:key="index"
class="preview-image"
:src="getImageUrl(img)"
mode="aspectFit"
@click="previewImage(form.pictures, index)"
/>
</view>
</view>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api.js'
import { ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
// const config = require('@/config.js')
import config from '@/config.js'
const loading = ref(false)
const form = ref({})
onLoad((options) => {
if (options.memId) {
getInstitutionInfo(options.memId)
}
})
function download(url) {
console.log(url)
if (url.indexOf('.png') > -1 || url.indexOf('.jpg') > -1) {
if(url.indexOf('http')>-1){
uni.previewImage({
urls: [url],
success: function(res) {
console.log(res,[url],'111')
}
})
} else {
uni.previewImage({
urls: [config.baseUrl_api + url],
success: function(res) {
console.log(url,'222')
}
})
}
} else {
if(url.indexOf('http')>-1){
goWebView(url)
} else {
goWebView(config.baseUrl_api + url)
}
}
}
function goWebView(url) {
url = url.replace("http://", "https://")
uni.showLoading({
title: '下载中'
});
uni.downloadFile({
url: url,
success: function(res) {
uni.hideLoading();
var filePath = res.tempFilePath;
uni.showLoading({
title: '正在打开'
});
uni.openDocument({
filePath: filePath,
showMenu: true,
success: function(res) {
uni.hideLoading();
},
fail: function(err) {
uni.hideLoading();
uni.showToast({
title: err,
icon: 'none',
duration: 2000
});
}
});
},
fail: function(error) {
uni.hideLoading();
uni.showToast({
title:`下载失败`,
icon: 'none',
duration: 2000
});
}
});
}
function getInstitutionInfo(memId) {
loading.value = true
api.getGroupMemberInfoById(memId).then(res => {
loading.value = false
if (res.data) {
form.value = res.data
form.value.businessLicense = JSON.parse((form.value.businessLicense))
// 处理图片字段
if (form.value.pictures && typeof form.value.pictures === 'string') {
form.value.pictures = form.value.pictures.split(',').filter(Boolean)
}
if (form.value.legalIdcPhoto && typeof form.value.legalIdcPhoto === 'string') {
form.value.legalIdcPhoto = form.value.legalIdcPhoto.split(',').filter(Boolean)
}
}
}).catch(err => {
loading.value = false
console.error('获取机构资料失败', err)
uni.showToast({
title: '获取机构资料失败',
icon: 'none'
})
})
}
function getImageUrl(path) {
if (!path) return ''
if (path.startsWith('http')) return path
return config.baseUrl_api + path
}
function previewImage(images, currentIndex) {
const urls = images.map(img => getImageUrl(img))
uni.previewImage({
urls: urls,
current: currentIndex
})
}
</script>
<style lang="scss" scoped>
.institution-page {
min-height: 100vh;
background-color: #f5f5f5;
padding: 20rpx;
padding-bottom: 40rpx;
}
.loading-wrap {
padding: 100rpx 0;
text-align: center;
}
.section {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
}
.section-header {
display: flex;
align-items: center;
margin-bottom: 24rpx;
.section-title {
font-size: 30rpx;
font-weight: 600;
color: #333;
margin-left: 10rpx;
}
}
.info-card {
.info-row {
display: flex;
justify-content: space-between;
padding: 16rpx 0;
border-bottom: 1px solid #f0f0f0;
&:last-child {
border-bottom: none;
}
.label {
font-size: 26rpx;
color: #999;
flex-shrink: 0;
}
.value {
font-size: 26rpx;
color: #333;
text-align: right;
margin-left: 20rpx;
flex: 1;
word-break: break-all;
}
}
}
.image-list {
display: flex;
flex-wrap: wrap;
gap: 20rpx;
.preview-image {
width: 200rpx;
height: 200rpx;
border-radius: 12rpx;
background-color: #f5f5f5;
}
}
</style>
<template>
<view class="cert-mail-page">
<!-- 列表区域 -->
<view class="appList">
<view class="appItem" v-for="(item, index) in infoList" :key="index">
<view @click="handleView(item)">
<view class="status">
<text :class="item.postStatus == 1 ? 'text-success' : 'text-warning'">
{{ item.postStatus == 1 ? '已邮寄' : '未邮寄' }}
</text>
</view>
<view class="date" v-if="item.submitTime">
<view class="text-primary" v-if="item.payCode">{{ item.payCode }}</view>
</view>
<view class="name mt0">{{ item.name }}</view>
<view class="flexbox">
<view>
缴费单位
<view>{{ item.memberName }}</view>
</view>
<view>
证书人数
<view>{{ item.totalNum }}</view>
</view>
</view>
<view class="flex f-j-s">
<view class="mail-time" v-if="item.submitTime">
邮寄时间:{{ formatDate(item.submitTime) }}
</view>
<view class="mail-time" v-if="item.postCode ">
<view>物流编号{{ item.postCode || '-' }}</view>
</view>
</view>
</view>
<view class="func">
<button
v-if="deptType == '1' && item.postStatus != 1"
class="btn-mail"
@click.stop="handleMail(item)"
>邮寄证书</button>
<button class="btn-logistics" @click.stop="handleLogistics(item)">物流跟踪</button>
</view>
</view>
</view>
<!-- 空数据 -->
<view class="nodata" v-if="infoList.length == 0 && !loading">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
<!-- 上拉加载 -->
<view class="loading">
<uni-load-more :status="loadStatus" :contentText="loadMoreText"></uni-load-more>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api.js'
import { ref, computed } from 'vue'
import { onLoad, onShow, onReachBottom } from '@dcloudio/uni-app'
const app = getApp()
const loading = ref(false)
// 加载状态
const loadStatus = ref('more') // more / loading / nomore
const loadMoreText = {
contentdown: '上拉加载更多',
contentrefresh: '正在加载...',
contentnomore: '没有更多了'
}
// 请求参数
const queryParams = ref({
pageNum: 1,
pageSize: 10,
type: '1'
})
// 列表数据
const infoList = ref([])
const total = ref(0)
const deptType = ref('')
onLoad((options) => {
if (options.type) {
queryParams.value.type = options.type
}
})
onShow(() => {
if (app.globalData.isLogin) {
init()
} else {
app.firstLoadCallback = () => {
init()
}
}
})
// 初始化(刷新)
function init() {
deptType.value = app.globalData.deptType
// 重置列表和页码
infoList.value = []
queryParams.value.pageNum = 1
loadStatus.value = 'more'
getList()
}
// 获取列表
function getList() {
// 没有更多数据直接返回
if (loadStatus.value === 'nomore') return
loading.value = true
loadStatus.value = 'loading'
uni.showLoading({ title: '加载中' })
api.paymentList({ ...queryParams.value }).then(res => {
const data = res.rows || []
const totalData = res.total || 0
// 拼接数据
infoList.value = [...infoList.value, ...data]
total.value = totalData
// 判断是否还有更多
if (infoList.value.length >= totalData) {
loadStatus.value = 'nomore'
} else {
loadStatus.value = 'more'
}
loading.value = false
uni.hideLoading()
}).catch(() => {
loading.value = false
uni.hideLoading()
loadStatus.value = 'more'
})
}
// 上拉加载下一页
onReachBottom(() => {
if (loadStatus.value !== 'more' || loading.value) return
queryParams.value.pageNum++
getList()
})
// 查看详情
function handleView(item) {
uni.navigateTo({
url: `/level/ztx/certDetail?examId=${item.examId}`
})
}
// 邮寄证书
async function handleMail(item) {
const res = await uni.showModal({
title: '提示',
content: '是否确认寄送快递?',
confirmText: '确认',
cancelText: '取消'
})
if (res.confirm) {
uni.showLoading({ title: '操作中' })
api.postCert(item.payId).then(() => {
uni.hideLoading()
uni.showToast({ title: '操作成功', icon: 'success' })
// 操作成功后刷新列表
init()
}).catch(() => {
uni.hideLoading()
})
}
}
// 物流跟踪
function handleLogistics(item) {
if (item.postStatus != 1 || !item.postCode) {
uni.showToast({ title: '暂无物流信息', icon: 'none' })
return
}
uni.navigateTo({
url: `/level/ztx/certLogistics?payId=${item.payId}&postCode=${item.postCode}&postStatus=${item.postStatus}&submitTime=${item.submitTime || ''}`
})
}
// 时间格式化
function formatDate(dateStr) {
if (!dateStr) return '-'
return dateStr.substring(0, 10)
}
// 等级转中文
function levelToChinese(level) {
const levelMap = {
'1': '一', '2': '二', '3': '三', '4': '四', '5': '五',
'6': '六', '7': '七', '8': '八', '9': '九', '10': '十'
}
return levelMap[String(level)] || level
}
</script>
<style lang="scss" scoped>
.cert-mail-page {
min-height: 100vh;
background-color: #f5f5f5;
padding-bottom: 20rpx;
}
/* 列表区域 */
.appList {
padding: 0 20rpx;
}
.appItem {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.05);
.status {
display: inline-block;
padding: 6rpx 20rpx;
border-radius: 20rpx;
font-size: 24rpx;
margin-bottom: 16rpx;
.text-success {
color: #4caf50;
}
.text-warning {
color: #ff9800;
}
}
.date {
font-size: 24rpx;
color: #999;
}
.text-primary {
font-size: 28rpx;
color: #AD181F;
}
.name {
font-size: 28rpx;
font-weight: 600;
color: #333;
margin-bottom: 20rpx;
margin-top: 10rpx;
&.mt0 {
margin-top: 0;
}
}
.flexbox {
display: flex;
justify-content: space-between;
background-color: #fafafa;
border-radius: 12rpx;
padding: 20rpx;
margin: 20rpx 0;
view {
flex: 1;
text-align: center;
font-size: 24rpx;
color: #999;
view {
font-size: 28rpx;
color: #333;
font-weight: 500;
margin-top: 8rpx;
}
}
}
.mail-time {
font-size: 24rpx;
color: #666;
margin-top: 16rpx;
}
.func {
display: flex;
gap: 20rpx;
margin-top: 24rpx;
padding-top: 24rpx;
border-top: 1px solid #f0f0f0;
justify-content: flex-end;
button {
height: 64rpx;
line-height: 64rpx;
font-size: 26rpx;
border-radius: 32rpx;
border: none;
}
.btn-mail {
width: 100px;
background: linear-gradient(135deg, #4caf50, #66bb6a);
color: #fff;
}
.btn-logistics {
width: 100px;
background: linear-gradient(135deg, #2196f3, #42a5f5);
color: #fff;
}
}
}
.nodata {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 100rpx 0;
image {
width: 300rpx;
height: 300rpx;
}
text {
font-size: 28rpx;
color: #999;
margin-top: 20rpx;
}
}
.loading {
padding: 30rpx 0;
text-align: center;
}
</style>
\ No newline at end of file
<template>
<view class="audit-page">
<!-- 顶部标签栏 -->
<view class="tab-bar">
<view
v-for="tab in tabs"
:key="tab.value"
class="tab-item"
:class="{ active: currentTab === tab.value }"
@click="onTabChange(tab.value)"
>
<text class="tab-text">{{ tab.label }}</text>
<view class="tab-indicator" v-if="currentTab === tab.value"></view>
</view>
</view>
<!-- 列表内容 -->
<scroll-view
scroll-y
class="list-content"
@scrolltolower="onLoadMore"
>
<view class="loading-wrap" v-if="loading && list.length === 0">
<uni-load-more status="loading"></uni-load-more>
</view>
<view class="empty-wrap" v-else-if="!loading && list.length === 0">
<uni-load-more status="noMore"></uni-load-more>
</view>
<view class="card-list" v-else>
<view
class="card-item"
v-for="item in list"
:key="item.recordId || item.id"
@click="goDetail(item)"
>
<view class="card-header">
<text class="company-name">{{ item.memName || '-' }}</text>
<text class="status-badge" :class="getStatusClass(item.shenAuditStatus)">
{{ getStatusText(item.shenAuditStatus) }}
</text>
</view>
<view class="card-body">
<view class="info-row">
<text class="label">所属协会</text>
<text class="value">{{ item.shenMemName || '-' }}</text>
</view>
<view class="info-row">
<text class="label">会员编号</text>
<text class="value">{{ item.wfCode || '-' }}</text>
</view>
<view class="info-row">
<text class="label">认证年限</text>
<text class="value">{{ item.renewYear ? item.renewYear + '年' : '-' }}</text>
</view>
<view class="info-row">
<text class="label">付款费用</text>
<text class="value text-red">¥{{ Number(item.finalPrice || 0).toFixed(2) }}</text>
</view>
<view class="info-row">
<text class="label">提交日期</text>
<text class="value">{{ formatDate(item.commitTime) }}</text>
</view>
</view>
<view class="card-footer">
<view class="tag-row">
<view class="tag" :class="item.isNew == 1 ? 'tag-new' : 'tag-renew'">
{{ item.isNew == 1 ? '新会员' : '续费' }}
</view>
</view>
<view class="btn-row">
<view class="btn btn-default" @click.stop="goInstitutionInfo(item)">机构资料</view>
<view class="btn btn-primary" @click.stop="goAudit(item)" v-if="item.shenAuditStatus == 1">审核</view>
</view>
</view>
</view>
</view>
<view class="load-more-wrap" v-if="list.length > 0">
<uni-load-more :status="loadStatus"></uni-load-more>
</view>
</scroll-view>
</view>
</template>
<script setup>
import * as api from '@/common/api_exam.js'
import { ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
const tabs = [
{ label: '全部', value: '' },
{ label: '审核中', value: '1' },
{ label: '审核通过', value: '2' },
{ label: '审核拒绝', value: '3' }
]
const currentTab = ref('')
const list = ref([])
const loading = ref(false)
const loadStatus = ref('more')
const queryParams = ref({
pageNum: 1,
pageSize: 10,
auditFlag:'1',
})
onLoad(() => {
getList()
})
function onTabChange(value) {
currentTab.value = value
list.value = []
queryParams.value.pageNum = 1
getList()
}
function getList() {
if (loading.value) return
loading.value = true
loadStatus.value = 'loading'
const params = {
...queryParams.value,
shenAuditStatus: currentTab.value
}
api.certifiedNewList(params).then(res => {
if (res.rows) {
if (queryParams.value.pageNum === 1) {
list.value = res.rows
} else {
list.value = [...list.value, ...res.rows]
}
loadStatus.value = res.rows.length >= queryParams.value.pageSize ? 'more' : 'noMore'
} else {
list.value = []
loadStatus.value = 'noMore'
}
}).catch(err => {
console.error('获取会员审核列表失败', err)
loadStatus.value = 'noMore'
}).finally(() => {
loading.value = false
})
}
function onLoadMore() {
if (loadStatus.value === 'noMore' || loading.value) return
queryParams.value.pageNum++
getList()
}
function getStatusText(status) {
const map = { 1: '审核中', 2: '审核通过', 3: '审核拒绝', 4: '已撤回' }
return map[status] || '-'
}
function getStatusClass(status) {
const map = {
1: 'status-warning',
2: 'status-success',
3: 'status-danger',
4: 'status-gray'
}
return map[status] || ''
}
function formatDate(dateStr) {
if (!dateStr) return '-'
if (typeof dateStr === 'string' && dateStr.indexOf('T') > -1) {
return dateStr.slice(0, 10)
}
return dateStr
}
function goDetail(item) {
uni.navigateTo({
url: `/group/groupOrderDetail?form=${encodeURIComponent(JSON.stringify(item))}`
})
}
function goInstitutionInfo(item) {
uni.navigateTo({
url: `/level/ztx/institutionInfo?memId=${item.memId}`
})
}
function goAudit(item) {
uni.navigateTo({
url: `/level/ztx/memberAuditPage?type=single&ids=${item.recordId || item.id}`
})
}
</script>
<style lang="scss" scoped>
.audit-page {
min-height: 100vh;
background-color: #f5f5f5;
}
.tab-bar {
display: flex;
background-color: #fff;
padding: 0 20rpx;
position: sticky;
top: 0;
z-index: 100;
.tab-item {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
padding: 24rpx 0;
position: relative;
.tab-text {
font-size: 28rpx;
color: #666;
}
.tab-indicator {
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 80rpx;
height: 6rpx;
background-color: #AD181F;
border-radius: 3rpx;
}
&.active {
.tab-text {
color: #AD181F;
font-weight: 600;
}
}
}
}
.list-content {
height: calc(100vh - 100rpx);
padding: 20rpx;
box-sizing: border-box;
}
.loading-wrap,
.empty-wrap {
padding: 100rpx 0;
text-align: center;
}
.card-list {
.card-item {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
.card-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 24rpx;
padding-bottom: 20rpx;
border-bottom: 1rpx solid #f0f0f0;
.company-name {
font-size: 32rpx;
font-weight: 600;
color: #333;
flex: 1;
margin-right: 20rpx;
}
.status-badge {
font-size: 24rpx;
padding: 6rpx 16rpx;
border-radius: 20rpx;
flex-shrink: 0;
&.status-warning {
background-color: #fff7e6;
color: #fa8c16;
}
&.status-success {
background-color: #f6ffed;
color: #52c41a;
}
&.status-danger {
background-color: #fff1f0;
color: #f5222d;
}
&.status-gray {
background-color: #f5f5f5;
color: #999;
}
}
}
.card-body {
.info-row {
display: flex;
justify-content: space-between;
padding: 12rpx 0;
.label {
font-size: 26rpx;
color: #999;
flex-shrink: 0;
}
.value {
font-size: 26rpx;
color: #333;
text-align: right;
flex: 1;
margin-left: 20rpx;
}
.text-red {
color: #AD181F;
}
}
}
.card-footer {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 20rpx;
padding-top: 20rpx;
border-top: 1rpx solid #f0f0f0;
.tag-row {
display: flex;
gap: 12rpx;
.tag {
font-size: 24rpx;
padding: 6rpx 16rpx;
border-radius: 20rpx;
font-weight: 500;
&.tag-new {
background-color: rgba(#AD181F, 0.1);
color: #AD181F;
}
&.tag-renew {
background-color: rgba(#999, 0.1);
color: #666;
}
}
}
.btn-row {
display: flex;
gap: 16rpx;
.btn {
font-size: 26rpx;
padding: 12rpx 24rpx;
border-radius: 8rpx;
}
.btn-default {
background-color: #f5f5f5;
color: #666;
}
.btn-primary {
background-color: #AD181F;
color: #fff;
}
}
}
}
}
.load-more-wrap {
padding: 20rpx 0;
text-align: center;
}
</style>
<template>
<view class="audit-page">
<!-- 提示信息 -->
<!-- <view class="tips-box">
<uni-icons type="info" size="18" color="#C4121B"></uni-icons>
<text class="tips-text" v-if="type === 'batch'">批量审核 {{ ids.split(',').length }} 条记录</text>
<text class="tips-text" v-else>单个审核</text>
</view> -->
<!-- 审核表单 -->
<view class="form-section">
<view class="section-header">
<uni-icons type="edit" size="18" color="#AD181F"></uni-icons>
<text class="section-title">审核信息</text>
</view>
<view class="form-card">
<view class="form-item">
<text class="form-label">审批结果</text>
<view class="radio-group">
<view
class="radio-item"
:class="{ selected: form.flag === '1' }"
@click="form.flag = '1'"
>
<view class="radio-circle">
<uni-icons v-if="form.flag === '1'" type="checkmark" size="10" color="#fff"></uni-icons>
</view>
<text>审批通过</text>
</view>
<view
class="radio-item"
:class="{ selected: form.flag === '0' }"
@click="form.flag = '0'"
>
<view class="radio-circle">
<uni-icons v-if="form.flag === '0'" type="checkmark" size="10" color="#fff"></uni-icons>
</view>
<text>审批拒绝</text>
</view>
</view>
</view>
<view class="form-item">
<text class="form-label">备注</text>
<textarea
v-model="form.reason"
class="textarea"
placeholder="请输入备注信息(拒绝时必填)"
:maxlength="500"
/>
</view>
</view>
</view>
<!-- 提交按钮 -->
<view class="submit-wrap">
<button class="btn-cancel" @click="goBack">取消</button>
<button class="btn-submit" @click="doSubmit" :disabled="submitting">
<text v-if="!submitting">确认提交</text>
<text v-else>提交中...</text>
</button>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api_exam.js'
import { ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
const type = ref('single') // single 或 batch
const ids = ref('')
const submitting = ref(false)
const form = ref({
flag: '1',
reason: ''
})
onLoad((options) => {
if (options.type) {
type.value = options.type
}
if (options.ids) {
ids.value = options.ids
}
})
function goBack() {
uni.navigateBack()
}
function doSubmit() {
if (form.value.flag === '0' && !form.value.reason) {
uni.showToast({
title: '请输入拒绝理由',
icon: 'none'
})
return
}
if (submitting.value) return
submitting.value = true
const params = {
ids: ids.value,
flag: form.value.flag,
reason: form.value.reason || ''
}
api.shenAudit(params).then(res => {
uni.showToast({
title: '操作成功',
icon: 'success'
})
setTimeout(() => {
uni.navigateBack()
}, 1500)
}).catch(err => {
console.error('审核失败', err)
uni.showToast({
title: '操作失败',
icon: 'none'
})
submitting.value = false
})
}
</script>
<style lang="scss" scoped>
.audit-page {
min-height: 100vh;
background-color: #f5f5f5;
padding: 20rpx;
// padding-bottom: 120rpx;
box-sizing: border-box;
}
.tips-box {
background-color: #e8f8f7;
border-radius: 12rpx;
padding: 24rpx;
margin-bottom: 20rpx;
display: flex;
align-items: center;
gap: 12rpx;
.tips-text {
font-size: 26rpx;
color: #C4121B;
}
}
.form-section {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
}
.section-header {
display: flex;
align-items: center;
margin-bottom: 30rpx;
.section-title {
font-size: 30rpx;
font-weight: 600;
color: #333;
margin-left: 10rpx;
}
}
.form-card {
.form-item {
margin-bottom: 30rpx;
&:last-child {
margin-bottom: 0;
}
.form-label {
display: block;
font-size: 28rpx;
color: #333;
margin-bottom: 16rpx;
font-weight: 500;
}
.radio-group {
display: flex;
gap: 40rpx;
}
.radio-item {
display: flex;
align-items: center;
gap: 12rpx;
font-size: 28rpx;
color: #333;
.radio-circle {
width: 36rpx;
height: 36rpx;
border-radius: 50%;
border: 2rpx solid #ddd;
display: flex;
align-items: center;
justify-content: center;
}
&.selected {
.radio-circle {
background-color: #C4121B;
border-color: #C4121B;
}
}
}
.textarea {
width: 100%;
height: 200rpx;
border: 1rpx solid #eee;
border-radius: 12rpx;
padding: 20rpx;
font-size: 28rpx;
color: #333;
background-color: #fafafa;
box-sizing: border-box;
}
}
}
.submit-wrap {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 110rpx;
background-color: #fff;
display: flex;
align-items: center;
justify-content: center;
gap: 30rpx;
padding: 0 30rpx;
box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.05);
button {
flex: 1;
height: 80rpx;
line-height: 80rpx;
font-size: 28rpx;
border-radius: 40rpx;
border: none;
}
.btn-cancel {
background-color: #f5f5f5;
color: #666;
}
.btn-submit {
background: #C4121B;
// background: linear-gradient(135deg, #C4121B, #15c5c1);
color: #fff;
&[disabled] {
background: #ccc;
}
}
}
</style>
......@@ -38,7 +38,7 @@
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
"appid" : "wx523ee37fff4fea9d",
"appid" : "wx5d51e8ed31bbdbb7",
"setting" : {
"urlCheck" : false,
"minified" : false,
......
......@@ -738,6 +738,110 @@
},
{
"path": "ztx/mail",
"style": {
"navigationBarTitleText": "证书邮寄",
"enablePullDownRefresh": false
}
},
{
"path": "ztx/certDetail",
"style": {
"navigationBarTitleText": "考试详情",
"enablePullDownRefresh": false
}
},
{
"path": "ztx/certLogistics",
"style": {
"navigationBarTitleText": "物流跟踪",
"enablePullDownRefresh": false
}
},
{
"path": "ztx/examinationVerification",
"style": {
"navigationBarTitleText": "考点审核",
"enablePullDownRefresh": false
}
},
{
"path": "ztx/examinationDetail",
"style": {
"navigationBarTitleText": "查看详情",
"enablePullDownRefresh": false
}
},
{
"path": "ztx/examinationAudit",
"style": {
"navigationBarTitleText": "单位会员认证审核",
"enablePullDownRefresh": false
}
},
{
"path": "ztx/institutionInfo",
"style": {
"navigationBarTitleText": "机构资料",
"enablePullDownRefresh": false
}
},
{
"path": "ztx/memberAudit",
"style": {
"navigationBarTitleText": "会员审核",
"enablePullDownRefresh": false
}
},
{
"path": "ztx/memberAuditPage",
"style": {
"navigationBarTitleText": "审核",
"enablePullDownRefresh": false
}
},
{
"path": "ztx/costSettlement",
"style": {
"navigationBarTitleText": "费用结算",
"enablePullDownRefresh": false
}
},
{
"path": "ztx/costSettlementDetail",
"style": {
"navigationBarTitleText": "结算详情",
"enablePullDownRefresh": false
}
},
{
"path": "ztx/costSettlementAdd",
"style": {
"navigationBarTitleText": "新建结算申请",
"enablePullDownRefresh": false
}
},
{
"path": "ztx/costSettlementConfirm",
"style": {
"navigationBarTitleText": "结算申请确认",
"enablePullDownRefresh": false
}
},
{
"path": "examStudentList",
"style": {
"navigationBarTitleText": "考生信息",
......
......@@ -22,12 +22,16 @@
会员缴费
</view>
<!-- 3 2 1 审核-->
<view v-if="userType!='4'" @click="goPath('/personalVip/audit')">
<!-- <view v-if="userType!='4'" @click="goPath('/level/ztx/memberAudit')">
<image
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAC0CAYAAAA9zQYyAAAAAXNSR0IArs4c6QAAIABJREFUeF7svfmTXNd1JniXt+RSC4DCvlahsBFLASBAEiTFRZLlUViype62Wp5oj9vR3TG/zd/Q6n9hfpuIGc94ojtGrfZ0hB0x0d1ht01R4r5IFLhIJAAuAIiNAGrNzLfcdyfOuffcd9/LzKoCQIAADdhU1pKVy8vvfe8739k4e/jv4RH4Gh0B/jV6Lw/fysMjwB4C+iEIvlZH4CGgv1Yf58M38xDQDzHwtToCDwH9tfo4H76Zh4B+iIGv1RF4COiv1cf58M08BPRDDHytjsBDQH+tPs6Hb+YhoC0GNHvoyd+N04Ezpu/G4w57zIeAfgjou4q3h4C+S4f3IQPfpQN7hw/7ZQP+Hw1DrxbQ/+4nRnr825/c3qWS/v4OP+ev/M/v9P2v9u8fAnqVH3UdwKsF2sH37kxLv3/o+a8FSRx874U70r7vH1odIdSBf6cA/1ocfB/jw5i4DmgALhx0AjABccvnC3d0TC7d7N7R36/yfL3rd9uytnlHgL60dRT/nk4MOtZ1oA9j8tsF9tfi4MOBW4mR68xbBzABcd3mFI/JjYX8to7N2Nrb+7u7jtBbfIL5m8FtAXrdqPm7G5cjvKUTow5wejkrAfxWgX1bH9otHpt7cncC9CAmhhcAAPbZdxiAAZDzS5t4eyyrHJulztcDqF/2h9FuVYG/NB/qsfYVTSfEMIDD6wCQ+wzuvzZi7n90gF4NkPFAvXdVwI3PwARe+DkAGEDb7CnebSveSIoKoHutMfw+TtTXhgTuBNxJLJGBG535CpP3YqGbS1J3G1ID2AHgcD8CeR3g7NDGoi5N7gTYD/SH48sMn5mNPjaM7DMxyAiSBMDCLOgKH8AAWgKsFhmeAPQvzQzAo9jcplnrgT52twvmKOwgQNNE4G0Umlv6x4sQAQqAB7D7AGd5swBgw++BwQHcvjQhxvZliK+xV8PWD+SHMgjIvkb2wQyMTEBWcp3wWZjJEQEABvACYAGsDqgirwCaCYXfB7nGY5aHDbwNst5tac3bBdRX9Xf195sH3LzvQiKA3b8iwO8B+AB6ADyAHBldLRY+e0t1o/CBDXrblyHwOATu1QL7gQZ0nZXNAXieg7zwgUyauLiRCB1kQsu2SNKCM5kJALHuNkQWFbwCWhEhgHMLYPqdDAyg/7H/U3kV0IEDeFr4YA9ToXmzVyCjq7CII6G5Wip4HhZiXVz4mtsx9qGNxSBtvRpd/UB9OIP08iDbLYnnBLoU0YQgWeGArBLJREOEuQEwApnHgiVKwPcAWKXgZwbQEr6Gf6Kw3z8ENBwOJQnQAhlZSSs9dFpIKTQCHtg7lgXTSQHAhu+zAG57RSxjRcAGvQ1yhKXXCwB1nIwXg2w/IpHlgP3AAtr3kesSIw96Ali5mS9KCPBAWkRZTzKRi1RFEtmWxyJQBc+LXDIO30ci4kqoQnPGQyGV5nmgOdziB+Z97bOzKoKBx1DKBxP4Slmg1i5BUuR90gpALS1Tw9dBzjUCXWeFFFynGsCcFkzLIhCBygH0OikA2JFMFSuCIg0bykmRYESBxg7yRgHa2pcgvo/9tQB0Pzs/L+CyVAn+2h0BQR9oZZAX3bGmZAuZAGnBgiAAIAdFiAA2QI6E1HCLQk8w+C+TgnEtCJAAcFFoXsgAb+lzLuTyGUX/vg+SPCnEYEDTexCqzADCfYXKNdwCgPHEhxNC84KFqmBaFFyLAgCueKAA3ABsAHguMoUMnuc5SBE2GhbN+a4CGULami21iiqoIQv7Al4RhoH6gWHoQYCGNwZOhi8xwH5zYO50ApAXwMxMBgHIChnlUhWBjPIsANZNMy0YS/H/8R8vhCoYR+lRWNDyQkj7dWEZWawA6MID/4MEaLECoAsLaGEZWwmmAbgSbt3ZzhHM+G1k/icKeQFsngZhLkWuVBoolCMqz4GpQYawVisnUKPdN0CCPPCArgO5opmtt8zaHUF6uZH3JNhvIDF0EgRZI5PAylpkAQAZGFkLGbA8DwotpShSXkgDXllornQhpQw4U1ooobnUjANLSwtgAqoQd1bz8SCB3H+tRWGAS8BXAHDJC1lwrTgwNdNK5VpyoRQyN9NCcV2ISAuuFAuCnBcqB8YGYPMizIGtw16oeJznIEHQ7gsainQ1MDW+hgHBYp2p73uGXhHQHpiZTEWcNwG8AsCsgzTIixCwGMowl0oriYycpsjE8ciauD2yZqTRHhsJw9aI4LIpw6DJtYi4EAHjXGrNMRjk2sgNzs1twcV9f+zuxkkjdIGA1tpIDM25FlprLZgqVKE00zljKity1Su06ma9zmKvN7+4tDi7mCzOJsjckWVsLpXKAjgnskBkiudRDqBGmy/oKqaiogLqBx3Qw1wN0s0gNSAARH856UgAc6ISGRaRzJoiZFkaMCEDkBd5JMIiURAQBixjTIRRuHbT9rFtO45s3bBtz9aR0Y1bwrg5ETWa66QMW1wETcaZ5AwBvXrw6q+JLc1X/5bh/GZFobQuUqWKpFBZJ8t6c1nSvb44d/XSF5+fvXjhk99cunn9wnyRpRkL0b/ORSxVkBYZyBBWqJyFUR52iywTqQIXBEDdjlsKNDUEiuR+mNiplDg+S9/Sq74bZ/xyjzmInQeBGTRzEUcBgRmZmYlQah5KBg5dwgsNYJbB2PiG0UZ73fjYmg2b1m+a3rxt99GdGzbv2Toyvn5zGDcmori1hnHZYgwP+8N/t3YE4GxOtFLdLO3NZWnnxuLctctXL525+PnZ35z/4trZy/Oz1670lm7Mzc9dWwAQCy5VIGKtWJEprrOAFRkwNYFaJGlOgeIwUD8QgF4JzOAzt9ePSWBmsOVYpxP4zOzAzFiY5YuCKRmMrd/Y3rn75PZtk4f3TmzcfXB03eZda9Zt2hC3xttBGAOIY0j+3dpn+PDeQ45ADuDOs6STdOaWZm9cubZw4/Kn169+/MHnn/7mo/Mfv3lh9uq1RSZVHgYjRcAY2B4Iap+pIVAEWw+YeumLeeX71D5Te6C+Pz+QQYC+ufaEgNoMzAIm4xJ95rGmpACwzswp7wmVFjIMgsb4xPaJrZOHd0wfePbgjqmjB9ds3H4giJub+wBslOHwg3KrkmKl+6/0+y/r41lJQqz0+/rrWPb+fJBIy/Oke3n22oXfnT/3znvnPvjFBxc/Pf3Z3PUL17M878lIqEg3ijpTU6AI7kc3GFHr4jlFHvXam28V9dT4fSs5fEBTsZGf0nbs3IkDFoIn1wshAGQBiyLFopxlYVGknMkoWrdu54a9M88cnNr/1LHN2x85PDK+cZsMwzWQCKx8ThbMNuoZDKU6AOvf1z/owpY6DDvS90pyr/T8olq6wlZ6X0MAzd3PB4JaqSybW5y/evHK+Q/ePfe7l3/10W9+8f6NG59dYypNhYh0wMIslSxlOUshUMxZI2Nw00pyn6WxqMkGiQDqB4yhnzdHG2w662oQO4PUgKRJAFpZ8zBSSZQqFSiWhzKMQwDz1CNP7j94/Duntk4ePdZoj+0id1QT2AZBd7XMOQzg9oPVKz0O/f5uAZuAvAIDOyDS66nff7UMvsz9eHnSpL2l+U8//+SdX7//q7999eMPXvkdgFplSSZZkEVS5qmM04DrLGdFhskX61EDS4M/jVaeLT0Fb/q+BfRyUgPATJlANb8YFGEUpFqEkDSROsEgMOcsLnoJV3ker9+yZ8O+o986tO/wc49t2XXk0ebImu1WJyOEK4BeLfAs+Mu715A47HFWAuxKz3+70mMlIA5j7r6/M3fs//EKF3nvDzxAw0Ml3cXZC5c+Pf32h+/+/I0P3/n79764dOaaDIJENGIdaAZ1kJnicQbJl4gXmcjSXI6N5PVMoi897jvJsRKgIYEC7Ayuhg66QaplyNIgAKkhWRqqjMUikLI9Oj62c/rUviOn/ujZndMnTzbbY5NVZiaE2UMwFFD2fg6Q5ouSeWuHcCigV0D0VwboIRDoQ655/RVJgT+gM22lxymPt8/U3aX5Tz47++abp1/9mxc/O/vqh0sLc/NFrpQMWaJYlIH0YBEAWmU8b+bgevgsDanxBxLQ5DnPJ2MSs4EsCElqQBaQKRaluQqkkM2xsXXt7bsf3bnv8PMnJx956pvjE1v3QnOFAWIB/2P+q9jLBNwq0DUFiCtpZ3osJyHs45D0MPmI/n+Eg7sN6GFPT/mhutRwgK794RApwt2xrL7vvmMMf8854yZfBf96c9c//+iTD17+hw/ffeHNC+fe/mx+/saSKlQ3CmTOJEsxm2ilR4PlGWQRx+J5RTbeAw3obK4doOesecgCSAeCdhah4DrOFheZlEFz864D246c+uHJfUee/8aa9TuPBWG8BnCpC2UOIYBolUzqmLjG0H1GSB9gqj8YqqVXDeRhDL/Ki+yKQdwQpq0/fJ2R7fclc9vHGSZ14OeEeSHxs8izZHb2i89+/eFv/uGl06/99RuXP/3tRaXybjgywgrNk4AXWc5BS8d5zHUGLB2OL+UPJKAZe15AMDi2fV5i21Q8F7BOHISch5gNzLtQDxoqxmLVXdJhPDIydeCJIyef/xff3XPomaeCsLGRachcF4z5jgPhwzGT+SBsZrckljqz1oHdp6lrPyAADHM7hjxencqH4X4liezeSB2Y9LwUqLkLU/WO/Y9PCK69Qsf0ljNq3zvxjWRi/xYKYoCpOdN51rt69vQvX3njxX//Xz7+7Wuns2RxUTbbXDKQHkXGgmaKWUStM3A8WDKeY5/ihTFlgkNThbfK03vw1fJu/HRgVR0BOhmTLIoCTKIwGWZMhKSddaEbImjItWs2rd996NlTM4//8A+37p45BnU0WoHHP9heLpmzrpWrwOwD+ooSZJj27oNq9QdDpfYtMnTfJzsMqHWA1v5wmNvhWNZRdPV91Ji8j8E99HGJuazi0se/eeed1/7mb86998KrN2evfFHkPcUF75GWDlmRZUxlmGxJ0xxkxwMFaPCfIZmC5aE2kVIJBnMeSa5j1VNSSN1sr9s+tnv/Y7v3HHn26cm9T3x7ZM3GnXik8qw82A6IFAxan9jhj76oBYt9FFnV3CXR0ic9hLr7ToQVAD7sCrDClb2Pq/qkwxDg1pi6xCV9NeTvCPi2nNppavdnpJnrGpsxEZgqg8XZa+c/+eiNvztz+h9eOnf2jXNLVy/MF4p3ZUMqpXnCAp3Wg0NItECNB+no+5qh64AGuREVQYhloSQ3eByr7jxnUdDauOXw1pnH/+DY9OFnnprYNHUyDOIJuNRB3Yv7VwOUY+hhQZu9f58Grgd/LnikZxrM+Kv2pe/08rda35meZ4g2LiXLYCZ2zDvs+az0WE5jQ2Ej6JA8T6/fuPrpm2fe/fkr77z5//3q6oV3P2dp3pHNMa10kpDswOyhyDOQHfctoAdPPjL6GfxnyAyC90zuBst5BHLDBYOBbG/b89j0Y8/86NnpQ889OTK2fp/WRRMFGgSDAECIRwi4dXfB9S4bIDrcO+DWMn41QPf50isFkQ73QzVGBdLDToSBl/JBJ8PQIK2G6D6pULsU0OM4JrfMa39ePo19ICLm2t9h9S08BjgeEBxCoMNld3H+2kcfvffzV97+5c9evPDRm2dUrpYoOEQLL9ApJFrA7QBPGuo7yiTLC9VhKndKCnfy9ysBmrVakNQu9bPQcSRZBImUXndJSynbu/ecOvTYc//iu3sOP3sqbo5t0XkGNc3oGZduRQ1AdQYukWx1d01a1IJJbpm53w2hP68/321q6FuNClfQ0PXoqZ9Bzeukn2s/pe0nWJzUqEkSB/BhGtv8HB4fn0NrxoMwTzoLl8+89/NXXnvhP/y3T86++q5SaqnRbHNItKSKpWHBE19Hs04nv+8BDeMJhulnsOugbkMHPALvWRdBI0vmChkE7akDTz966tv/8ofTh557QobRmIJCfuPRATVb5h2ikWt+c5//XJcY7vthwLVMX1MgdAKUEuir0dCaEN0XE9aDxxogHW7rP7cAdY87GOCMNLY7EajcXEPZDVNZOn/2vZ+/9srf/uVff/LhS2+pPF8K43HBRd5DTzrXKdR3kH1HBUuko+8bDV0fHjNIP4NdB4VILGSRTIoYJIcuikavM6+iOB7Zve/U40/+/r/+4+lDzz7OpQxVAoAGYAFDD4muhjE0ngCoUbzbAVKkBljviarSZUWJUb0S9F3thn1SQ82PIUGcUxh14NalRw3pNclSEjYAEj49/7ak8KEauyJR4Lk4k3EE/Vvp2fdefOOVv/s//+rcb19+PU2SxUZrTHIheiA5VCySun3n6+j7EtBwaP/Tj5jActH0uiT9TLUbWIjEdAxVdTooGr3uvGK8MbLn0NNPPf17//rH0wefOQG9JnmvRyguvU8H4DrAye2oS4wa0GonRl8K3F4JysTLYIkzVJ6tOtGygsBbyaAeUqvhpIjL5JnX3wfMGlP3/57uMERjO4bGR8fnCBoN6H3RZ9978e1X/vtf/PTDd3/5CtO9xUZzTPJc9KAKL2A8gayhX9sBOnpLNKHA6XjgAK0zHumQRToHMPNIMh0joEU0tu+Rp5966vf+zZ/sPvzsMSYsoGvSwEmPekq7T1KYyND82AMl3c8Gl/3B2gpM+2UB9k4CFoPQwY9Q08oloVOQN0gTgw62j7lqSUJAt8/AOQGanXv3xV+//Hf/x08//OAXL7MinQdAK8YTkBtKC2vflcVKDxygoSCpwW6G6HBEPAKHAwJCrXikddHoJIt5JKOx3Qefffqp7/yrP5k+9MwMArrb8ZiZtC7ZGTXg1QFKQK7cekVJq7Xt3IVgBTejXktxp4Bd5eP1uyR9otq8klrwVzKyZVj8s7IG2v2eMoZ9QWUd0IwFzRYwNDv73ou/eflv/+Kn595/8aVUpfOteCTgXPS4hKk1POEZS3moU6q+eyABzVoqwtpnD9DgcLBCNnrdG0qyeHTv4eeeQkAffGYGJUdnybvy1wFcDxJ9CQJB5AoMPYTh++y7FbVzqYruFMMD/75OxPR9LYFS/i25DyVzVgDdF/QZIFcZ2hQgmb+j84EYvipB6H7w26DVZkxpdvb9XyCgP3r35y8rlixA3zITqgdOx30P6GErJOoaeikXYaQWQywXtRlCwVistWwk3UUlQzE6feAbT536zr/5kz0HnznCpGBZZ9F6naWxjDUd8I/86LqfPOTnFOw59wMfxAIfbqsJxwHFT7eope8KupeRGjWguvPADHGwwCzPjjITOMTtqDMzAdwlWjxgox/NWNgagdFL7Mz7vzz96t/+7z89+9tfvqyyYiFujkjOVa+Aug6bMWSpTikFDtbdfaOhVwNo8KBjLUNX/7wSoB/5xhEmJQJaI9LIregHcl+m0AHaMvjQ8tEqoKvnhXFWKv+G1H6sLq3yJaK77la4h64C00gGSHYYB8Lg3W+rqjGwOyEsUAnQ9UxhDdjGHUGOLwH9wdcM0GZMblllRyWjAOgig8YzHslUx1qChpaNbrpQSCZG9xx69qknv/2vfrwHAR2wtLvg/GfHsATYZRma6qUtaPHG+soOmPCBQm21uXWTv/D33t+7Szz93GkQw/H3HtE1KWC+JV+atC9UwcFLM3jEirjS0x/kelQYHrJ/g5nbPuCA3wsWNUcZUzk7894vT7/yD3/xH8+89+LLihULzWhUAENzpVMVmeBQhEUKBf8JV9l9z9CDAN3lQRi1EpmyVoztVhbQSshmtrRQyCAa3f3IU08++c0/B9vuCFRwIaBRDnhuRQ3IZYavbttZ4DmAkub2FQvUpRo4kBvSV71n4dKfqaQT5Csymura1r7dkpGBM20WD8oHLLOWOKUHqGti90D2xLEMXM8o4gOR9oYvDaChMvLs+y89eIBeef2areNY2wyoBhq7u0UR5wBoHsda6UiIotkFQIcA6KeffOqbf/7jPQefPsyhhwcZ2rIlAQ8BTUEfFkBbirIAqxcZ1QDt/pz+riJJtKsVIQC7R63XhKykIu42c9fsNdLEPkMDy8L3hr0pWDRsLeoAJd/aKZE6Q1uWt0xvGNyTMEKwmAD9wS9Pv/T3/9fPPvntyy+rPF0I26NCFqpLDI19hhlLIVt43zD0rQKaqux0xCICtGBFrFTRzNJFZOjJ/U+fAkBPH3jysKgB2l3aS0TaSz7Ihn5p4SSwkxpGi5sWLtvKZdkXbgq8X2EBXWYmDbC9WpLygWsaeyWE36XfU8bOARZABoX3YFRIlAYG7FVAE5O7Vip3gtQY2oK2vJ99LKet7f0toKEy8tzvXjr90t//5YMB6NXuE/TroKlsFDq8IUsISRWog865jpkuGgBoLqIRZOjn/+zH0weeOgwlicDQrrqu7mb4WncAoOupcnJHEKCu2Mn2JwKU8UQpbBHUAKamE4OKmerAvvdi2gRjNujjoJNRM9uePwSyYNDQioDGzhbbC4h3IclQDyYHA9r6el7G0WdsOIcMQztA/8P/XQE0y3kv0FlCGprqOb5yhr5VQCdxK/DLRgnQOiwakCVUuY6Joaf2gYb+s3++e9+Th6UMWQ8kh6o5DsSYvlTw7jJI6xq8A0iJyZVjYuRtqLm2MZOx9UpGrjM0KYnS/rOeFbyuipyuao6qXXgbbG0fzj0FuQsOmAAwC2tYYgBvVtlqOHyPAG4ANJR6Wm2NwK4NqOmrsrPk3pdYsTN+6OeSs0ZzlKkiZx//7uXTL93vgB62T5A+mvquFDdUxpaNggetkzBwae9QN6DaTnAWdzsmKNxz4KknTz33Zz+aAkCLAAFNDO2q3CpM6WtpPwj0xxRY+eBY2WNiDe6GAbmZh26GJ5tyVYC4BTYMtbdSx10oiKkrLoixyqwWqqD2ywe0z7CGeZGNgYxhBjyAVYO/AT8zADa/J6am7u2q1hhY01EqFitfTBBoLhE2aIQPEhha5+zs714+/coLoKFfcxp6OYb2W7HuWYi9mgWZlRUT6XWJQ8y9pliYXeeXjQqWhwVnyNBchmPT+5469cSzf/rHU/ueQoZ2QSF2yRJOarZaSZmeIvb8anIwAKRkx8GAenROCqZgunGvx/JOB29hID0MsDFNBVZTa8vo+L2RKQhwfEzL+uZMuHeAtrrYEKQFNwA2kCxot5lcM87kyAiTYeTALlBbeycC1TIbsWIOMGljOh37gkerxftsPeEY+tyHr5x+5ef3KaBXA2R477S2eNAwxnpTLFbZSR3pgsEOqzjrQFAoRncBoJ/70z+GQn8pDUNzqr8lQNf9ZzrwjjrtOU7109YRqUgHzNMUaDFBej2/dp2lly6z7MZNVnR7UAIJbcz2VqG3qhVcwu0t7HXIlbETEdhWi1uwl3NDSpK+Y9OjLjkMPdJlyX0tGjELt2xi0b5pFk/tZOG6CSaiiAm7g8NnaFec7z9Wze1wqW2bqHEpcdDkqLYI4FZDFzk7++Erp1994S9/9smH9yFDr7SKjba99q0spoEyqimpBhoGmFNREoPipIJFWutG2ltSMghHJ/c9+cTj3/gf/9nk3icOSWEYmgBNV3JeXvPdpd2oWIIMAdpndJIgNugT0KdYsKKzxNKr11h6/gJLz3/OsusA6A7TwNJpZkCd5bDsEMGNtwBkuoW9OgB0BDIAnBjdT+zchl4e9CfLnRFewMzjmAWbNrDo4D7WOnqINQ7sZeG6daaRNVeGrS1TDwZ07cmdpq751Y6hrfLgZVB49sPXTr/64n0G6JWATKxMjEyr2GjnNk5HIjAHSYA9hEIGsF4C/GcAtKnlKBpZAvXQ0cjuvU8+/tizP/6nk9OPH0RA9xZLoNoFVuWOJ3uxd8xVAzRxVyVDaAEtJSuUYvn166x35hxLPz3P8us3mOr0WJEkBrBpaoAN/2UA6JwxADcCW5nvcwC0ATL9h1cCK0e+JCgv+zAU8Brlo7G/j0cRk1s2suaJGTb67JMs3rObiTBkLMlWBnT92fqCRJImTpMYfvddDmDoX/x7ZOhMJ4smU8h7PM97g1yOe6KhhwEa7Dh4A05a2P3b/tpiWJJZAbOdXUerJSgYBIZmQjayzoISMmzv2nvisZNP/8kPJ6cfOxiAy9FbKo0D+4LKkVXUnGWA3B9MmJ+U5OUFg4EBdPb5JdY5/QFLPzvPik7XBIQWvABow8Q5KzxmLgENUuSrB3QFf/ZkAtnEGzFrHj/Cxv/of2DNY0eYiELGumk/oAcULlUe07l6NaPa1XRQJpGZoLDI2bkPXz396i/+w/0B6GFLfuBN+muL4Xu3H6WTc1j400gKDmuLK0t/YJgMMbPIcYYdK1jEoXRUsIgzFvc6XSWkaE/ueezEySf/+I927T75CAA66XVKjWYJ2GW4bLwNxO2Dufx6EKCtaxEOAHS3a7LsKC+M5ABAGzAblgYNDezsgIxMTQxttHRFU9+xcL5FjrceOwI6iljz0ZnhgLZpayQIF1gu83xuxxIlaOyR9oJDZ9sBoH8JDP3GV8/QK22t6lsmTyslFjIRNRR3215hhrnVzCyXgRZ5oBgPAcwi4KHKWRwI0NAs6qWLSoiwPbnn0UcffeyPv79z6tEDAOjUBzRE5JRIQBR739ufoxVcY5QqQ1tAW4auSA4ICDsdViSpCQZRcsB+J9DSAGgAuAkQndSA32NwaAJEADQmaFyQWAKkViR3i0gdfneqQXGSQ0rYPM+CTRtZ68RRNvIcSI5pJoKAsdSTHFSH4d0u/6Jq10AvGDSXSLDtRgxDn3nt9GtfNaCXBfKABZmwg9tfw2ZWFue4bxvG44JWZhI2Q8PcOh4ywQPBVIjOBnR+WzADS/e6S0qEYXvn1LGjxx/9J3+wc+r4/gCKk5Ku8U/x//wiGZsYEMK6TKVRWq9RcK5emTpEawqCOdXpsOzqVZZcuIhBobp+gxXdLisQqCWgUXpgcOhp59zoacfQkACqM7SbFXIL+F3RiPVo331J8YRmIo6Z3LSBxY/sZ82jh1jzwF4WTKyDiyTjNiikxWBU1I9PeYtXk0EdLY2GTaycfe30ay+7QlA5AAAgAElEQVSB5PgKGXoYoP29KCQxYGuVv0wel/00MolL5O0qNgz+RB7AEHMAtNAcwQwAZoUKYCG3+ZpFSdZRUorWtl3HZ44f/6Pvbp88thcAnaUE6GpCAFO6UHQjBZPwqUBmjFK+gzJdWMNkPWOMKk1NBzAv2HbZFzdYdukKUzduMAWNuUphChdAD/cxwIVbq5mddgbbzrAzui/obRND10Fyi4ihoLZ2LvSNUfByOQBKsO2CLZtZtG+Pse0AzKG17SBoxOGKtr7DSo3bAXRZbUqXRMHihmXos6+ffv3lrxDQwzZW4bF876oAmeHvE6wvkw9g77aUAezfhkmiuOkVtLLgAVMqMFrZyA36umBFyDgPmGZRnnWV4EFz665DR44c/d7v7dh1dA9IjhwB7dtM8LW0mS+J9QkAaKgmw6SBrS4jTWgwbg64215hbRLMBhYmsVKkCVNLXaaTLgaLICEKrJXWxpaz9y1vTW7R1YQAULAJwasMrDHtiiPECLi1mpB6htG8fKt7MTFCJ469jsFyD0isrF2DCRYeAm9w40O7VLdNrngP1VeKstraFI9A4oYNCs+8YQB95iti6JVWsPnMjMMWBWyhi2RYZDKLQ1lfkOmzMuxKYUoEGjacqyIE2VEAexcaAc1ZEWYqKQQPmzt2zRw+fOwPvrVj55FpAHSW9ZjAijEDapPpgnWF8BHRz42eNoAu07xUq+smB1G3lUUA5g3tnmCoFTY4KVPdNgleNgZQ4wzZgHRimOxCxY0ZZLuUg29WkB+3A2grylz9M1yxcGyrQSyWJ9GxQekGv6+6Q3cKaHhCYGi4kp1Dhv7pVwPo5cAM1pyb6xx0BXjLOFsD9DIMKy9CCaWgkZC4KJPlPDD+sgoLzcKSlYsA2BlZWReQiw10wUPGYZM8D9Okp0QQNLbuOHTw0OHff3bb9oNTMohg+B8T8EEI6YANVXjwMwA6/g4zWwbM5ntb1+CYwwDIFLhTobtNUQPIseBBsMKyHQEPyklRzVBymzKVJAXIEPeTdZbxBkO26puvqKrrCLPf+7almaQPj1S2QZF8gOIkDsVJePWwKW97DBDQ7vHoDVUl0aqvKPbP4Xl9yfHGK//x/gK0v7GqEgDCXhQVSayas6skKPATsL1V8MiwchGoIhNFXoRBFEdR3GrHcXskDCNYW9wQkLoqiqAolOh15pJMJWLDxOSe6QPPPLV5y/7JIIxhWy+TAGYEcWBAC8/sAA2XUWJmy+AIfviZaUsqi8SQs0zHlYE4MrvpWSyLmVxhvx9EenLY/d6NxLKPNjiv04fbOk6HxoBDAF0+INln9iyiBBMF0VQ+SrUb7rJh/s40aFXeWOW13iqg4Y8R0CpnH597/fRXAuih2tnTzbAThdwMWF0Me1FgaxVM3kdm5ixGiZFr9JV1wSEDGAIbawWBIo9a7TUj4+t2rFuzdvNEe2TdeBQ22lIGkeZaZmlSzM9dWVxavJE149Gtm7cdPLZuYuf2IIiQHQMEcgAS3QAZbwnkcGukBzK2BTdD9gY2BkPDVp7hBwuAdp+8/TxLh6D6+dL97O/deeBSk+YnNYa+1dBvqJ3nHsg+QX2iU+0PXceKK+Q3sDUuUXkO05fup17a3J7ZlTO0NFJWfmcAaKVy9sm5N06/9ur/87PPzrx1b33o5QBN+wSxWk6OCNr2SkvlcXIo7OO2Nc1aQjkosHIaSNGIWu2x0WZrbLzZHF8/Nr5x3bqJqQ1r1m5Z226vHYviRlOIMNSs4HnWKxbmbywuLn2RcCbG2u11k3FjZB2wM5ztAEhgZwA4gNkAG9d+488NgxOwzS12bIDhL0BbQ/BITG1rKtHlMB9zhbF9Y8J+0IUbAE6EVvtgCViO8EibLu+/OUInk8BhzjKv/b6+zMcxp4sG7f2pNKDCs9RTWKZM6VW58xAD2WXGQtRP5L5rTvkDA+jMAvqn9xbQy9l0NHEfpAbpZhhSTquLqcAI/WVdNADMggWxyrroWrTG1o1s3bx/68atByc3bNg1PTq+YVO7vXZNGLXiKIgjLiWEdQIYGCqS8zTJ0rQH3lhQMN3KsjTqduZZ0ltC2QHMHMgIwSwDTDwyKC+F28ABOmQcPBZILFimNoxtAF3aTIZW3fROB6QaE9PPy+KRCqOXH2MduHXtsYIWqQDa6Hx8hRQD1C8BfYaxsTl4eWZWIU1P7y4s9SuOPYtt6WvZIVRrOqbjsYz7QYD+9Oybp1977T4ANKW2aUA5+M20QgKK82knCpV/Kpx8VDR0oSKVg+0hGyMjG9dv2bpv667JR/du3XFwemL9zl2NxsiEFCHoZa/9qbz0oyxAkGmW5T2s4eh0ZllnaQ5BDWc9aGUAcQDbWeA/AjQyNYAbAB0goOEEAFBLuEW7yge0CaDKeclGaJQuh68jyqCQMg8lbkgKrHQpHgRoL19PgPb99IGApjvSpWDIiVNTRDRAp5QahpH7OntqDQyY/cRDs/pgsQT066dfe+1nXx1D0y5uKAWt7xMEV4NWSPjjB2CeBtQyw7IfVXQCoWVzfO3W9ZPTJ/dP7j75yObNe/eOjm3Y2IhHRjgg1q5lK6hAnuwu642CVICDDC08kD5N8wTroRcXb7Jed55lWYKaMAgB0DECG9K5wNwoPRDg8B9oavMfAJpL0zRabxItAV2lMLoCl7Kz9nvHqFay1DcKOH4cBvQqA1frjUFemcn4NBfDMa9lbAdjB7TBQK82RFS0lBuTZvBqH7E+HqIOaKe1Cef9789JjjOvn37jjfsA0BVnI54L4rwpYTiMz85hUTSwllnrBgSCmusmyIx2e+3aHZNHpg8ceP7Ejl1HD46MTGyFcWeQPQOAuhFewy5ZFLygZpaobfM8YZ3OPFtYuM6WOrNMgY0HMiMEQEdY44u3sEzLMjaA3ASKJogEQFNRu99LVwd01Z7z0hk137mO16GtVcPsDHId3Pu1mU4s8rGAdj1/1LFNVw0AUVVjl2ZF9cTrA7RtdDDJn5J5+z4X+3u3dtpKkbJscRlAxyNMFRn75F4DeqVg0O1DUU0J+wRRO3OY58yjnAOadIPD+IE8CaWUrfbI+jXbth+emp5+7MjOyeOPrlmzdVsgoxB8ZEgNYwLDzcFwYsx8UYnWvd43cCkYZJ1TtrQ0x+bmr7Jeb4EBwxvpEWF7EQFbAlNLkCIBEwEFjbRHj24pw1Y1J8xnaLUlfoAmreJfcr1mq+rPy+jKvh/7d/UlRmXVlNPI/iAYPOls5tOMIfB7/sA3to9b19Z0wrlX7KLTmmQYIDWwbbI6zZXGPJhiK2/cwxA3xLf3YgL02TdOvwGS49w9cjlWC2iUGzDPOZCBVqqB/YDA0Fo3OBfNLO9KqJLbtOnArsMz3z65e/fjx9as2TwlRNCEMxq3VzniqF+ihgRL7oOHz9cEdGnaY4uL19nC0g2WJEt4mUSWDhtVpgbGdoAObbrX6GkDGE9LUyyEBGnqGzB7Df9nM4YYbjnAGHKsr7owmtqmvc0ZYFm0/n4t8r1ZcZTwQGDDA0ESBOpCrIamND9cTUzWb8Dgcnp9fb51KZrciem0s5eit3NKXIxA398WoNvOtrtngB7evT14Fh1NC40g+LOz6ADQmhUtVRRBozW6ZnLyxJGZo999fueuY4fisNnOs5RpbCylITDuQu19MQTQdA/XpcxxCEyadtj80nU2v/AFpsSBnaOoiXoasoqGqa2WDqC0BAAdoPNB9SA+oE2Dq+kIR/mBeDONs8DPCGSgRTv6AAfReImYcppp7RLcJ6nK4LcEpJkdZwBNXjEkqOEpwWr0u7jt4BgD5/5J/CskYPqWIfkSghjYkyCGse37xy9Xx9Rwvzi2gP74zXvH0KsFNMyic72AkEQpogbIDhjdlWOBvmpHst1at37Hlt27T5w4sP+55zZs2L0LWBWq5Oq7SgZBevmflTOKIcADh2SxO8tuzl1m3d48aukwbDIZGT0NoAb3A7U0AZsA7Vb4lgyNxUlgG9p2K7XUweIkKBMtoBIPi5IK7D0s65zhL+yKOXuy0klb0aKVyLJ64pLjgrdQcwFJoThisj3C5JoxJkfHmIxjA3Q8h8yQGPx+NYCuZQCHAtpJLGgfq/vQNHDH/hwDekS93wJUlTT3C6BpnsagSUfoPUdmfYQQqgn9fywQrTyBVRl8ZHzN5vW7dh3fNz39xInt2w6egMAQ3iUw9PBL72qhbcGnGZNS4uHv9BbY7MJV1unNIWsjM6P0AJY2zgdqaUxmGscDfenKPAqj2wG0UFlXLC2xHMtHL5vyUWjFwsJ+0xhrykehcwW6vuGqUy0jxaJ/V41ngUA9hQMC4LJDxJYAQvA60mLR9i2mU3vfHhaunzBXFlV4qX3w10uGdvXIww5nTfO6l1J+YQFpAF2dUFVOlDIdOFSuOGC9nvc8hqEhsQIM/Z/ujYZeVUKFNr56+1CAmcGqA6mRZR0pZDi6acP0zgOPPP/o1O6TR9eu2bo3lFEbK9fI8lktdle4H7p+nLEk6bCFzg221JtjqcoZl2DjxSxygDbywwEa3A608cp6aqy8hGIkrRiwcn71Khb3p+cvYqNsAUwNYKYmWexUgTU30BwL3Su2SRbWNduvTbe3aZRFAODXq+j8huMEr7HRYOGOzaxx7DBrPfUYi3ZPMdlqMWHrl82QGB/QNF9jmQO3akB7o9FIelDHDcUQ7uflwB2vWdMx9X0D6HpCxY3ususjYA4d7BM07gZvZ/kCQGl0y/aDe44e+e7TU1Mnj460127VWodUPO8OdS26H94aUUtUeOxGgAYvutOdZYu9edbLewhykBthBMGhkR4AcLDz8D+bJi8Z2gZW0IKlFc7jSLyub2iULXo903IFrVh2nIEBNHSswFgDaMOyzG2L/6HwHwHcB+ghLStUygrAgYAUsqFjIyw+tJ+1v/k0axw9zML1602VIZyQ2FV9i4B2MWEtOHVBpL1DTVNTTbdxO8qTkmYCojypAx7DD9LQhqHf/CoZejlAS8ZimOWco3NRNHQgWlm3KwMhx7buPHjg+JHvPTe1++RMqzG2vtDKJFD89Gwd0MOqcYbYQiaQMjv0sjxjvWSBLfbmWDddwiJ8A+imczxg+aNhaRsU2uIlf4YbrP4ETZ5dvMS6777H0k/OM4VNstqwsz/GwGuWNa1YxNC56SWEhoBBgCYwDJAddV7VcFVgjEXTk6z1rW+w5hOPsnjbViai2AAacW9svWFDFody9ZCgsSpBatrYTpUyfrVXjYjSw+uZ9BMz9yugaYUxzKKDafsQCMIsZ8FVE0bfai1aqujCzKmxXTsOHzw28/1vTU2dnGnEI2sgy2e9grJb+zYB7admqUAHKrmSdIkt9mZZJ11geaEsoFssiKzbEdoAEdqOIB2OqW87XpZIKYQSFA/Qn57HjhUEtJUVGpwalB5GctDAGeg3rA6asV3fNHCGZnTUT9Dl1IEH6Oa3nmatxx5l0XYf0Hbehhvl5dl3OFX0Fv4NkyIumKRWspps8scQe3LK/5ziqOU09Juv/9VXp6F9hl4O0ABmzVQrSXoiEMHYtu2HDz567Pvfnpp6fKYRt8cgS+QATRPe6YD3SY/ah1A/0NgzZQ5uCWjF0qzDlnqzbDGZY3mRYzAYRSWgKdkCt0MBHQQIaAgGk7NncdBMdu26mc2R9JCF+wGd4aAZbNFCFrfjDEB2EIh9UA8DNMkNcgywcFsxMTrC4oP7WfO5J1nj6CGUHKaqUFq3wwS3YOmZljN7/OpXPPpFLRHjjvYtAdpLvDzogGa9IqIVxjjLWaim4LIJgM56XQwKAdDHj33vW1OTj800mqPjkOKuANpjlPqevD5O6TvQ9tLmARrAlKRdBPRCb5blOmMSgkIP0MbxsLKD0t8uKLQ5DyEQ0NT1nZ2/yNLPLjL1Bbgc3igwAK4NCt0tdoTTSDArObyg0MgPy25WW/rvtVS02kgVcGKaMZPbtrDG0YOs+cQJFu+eZLLdMlLDje3yWs4GJVjoSeoAX6XEK5UJJV28pl94bGrKpFqcmqQCpsagME/Zp6Ch7zeGXg2gt+84dODo4T94ftfUYzPt9vgEAhpT1tDWRJPkbUnkLTG01z2NHdUmiwYNrWnaRckB/+U6t4BusiBqWBsPwAygNhratHCZXkQ7pNOcdBrqrcHpANvuOss+v4yAhiEt2PHt23YWxOXQRrDv/MlJpj/RNNWWJ2LFt60U3mNkYEAiJYI32LaZRXt3s3jvNAvWw9iBkHFlZ9HRCTlIQ7u62Cpju6LWoR0EpL+sRq7ErxbUWLJgM5/kQ9srp3F1qCbERE0kORDQ91tQWMQiIg2NSRWhIJ3dANmBKW8ZjG7femD/zOHvfmNy6uRMe2TdRrCMIQNWAtor3aQahCEHuFLOSClaHIBoJAd2aOc5WncA5qV0nimtSkDHBtDmPwNomDFdB7RJVRvQgcWGXnSvh340ghkcDVt/YlwLC1z8AGmsLpxwVAprV1zY2g2XgHC1HPXESjk9HzN/ICOikMmRNpNjYywYHWMwcBGbgm1AjJV3fn0Hng+DF2CWVYU1STIM2MS8lRIQYmlyOuD4U2LFGydMAaK9LsdRG/tAAdBv3c+ArgeFBOhtm/ZNHzrynVNTkydnRkY3bONSRPABufoGYhT8QGplk30Smo6od6mzbACXXgzi8owlPetyZMblEFEDU+BU10EZQ3A5qLvFpb5Ncq7MeOGsDnM18G8xzU1DzwH4oB9pHrSdCU29iC41XCluqpVr4nst37+pO6IaE9smhvUcpkfbpL7tfhQHZK9gCR/OFVKbI+nS9+WsOfdz//51rbesX13Kj0qmkJi7ZuEBQ+cqY1Dg/9a9Kk5adWGSZWjaKQi2nUmu8JZKuwGXweiGDVM79u175vjU9Mmja9fu2B3GjTaM2igAgfABQl+KrRrrAzR9IM4X9QBN0/ZBY0IIZAENRUpL3Vm21JtnKfjQkpcMHVrJUUmsQD+i7TWkemJXPmxB6xcp2VJ/8mDdLVxb7eXVgN9ehfxUcB3Q9SIlapGywDP2G4HXFjeBZtaaCRx1Vo5lMDUcpriq3HK1PKD7B8E4EdIXvlgNZn4+yKd2o80oU1iTJDabGMfG5QBAv3k/AhoKk8CHNtNCZRNqoNG2072Iaz46umbzhsmdx/fvnnrs+NYdh460R9atgcwX2nfY01eTHJWJ8a7u0h5HLxghyUFTibCarWC97iKbW7zGlrpzKDcwIxg3WAg5H1t5R4X/vg9dTq4v0zpYnGpPHJQeFMUjeEtWNgCmIK9/O1a1ZqX8vXumWl6DfGRLq2bJD7kXlo3N67UTjtyVjSoCl2kQMBmYkrH96tz6LpW69l6OqYcCmoqYjOy6p4BebhL/sMRKyGSYCY1d3cDOsCRTa9XSKo8lC0aiuD26dv3ObbunTx7bu/cbp9ZvmNoGqeYMWqZ8QKMYHLLAsY+hbW0B/NxqVvzQlcIifyhOWurO4wkDgWAQmyxhSO6GX8tBSRWaS+Fd+m2Bgh3dVdt65QHarXtzGTUisrJYx5SZkpQhAjRIruc1yhoMD5g4KKemk/1udSpSojLXAS5HuRsFmLxEsimC8oFeI+i6th7kNtEbqSdcUJoZBwRdDutD3xPJcVuAhpl1QscsMMVJrJANBoDWrCE0axeMxa3W2MTk1MnDh2d+/xvbdh7ZG0StKC/MHGLcXeMkR5Vx+qVcNRAxqVZrFxWaqazHFhavI6B7aQfZOYxbjpkh/Y36mQBt095mrZlf++BfGWwUTztTaB9LH6C9S62VFiANXDrYB65jZAK0T9Fe97mL2YwLZIZM1mb0mcJoK4WNRKl87//eMa4BdGX5j39ldACuSRZ3HnrSr5YJdHGF085UXuoBOr9HGvpWAL0EI3I7cUCbX6HaDtawYXE/Ey3OiybTvJWlvVAGjbGt2w7sPnjk9x6bnH7s0Oj4xg1cBiEWAMFuKcs8drBarUPFg7Xva2IgZt0NmBKa9Vh3aY7NL15ji0s3sc1HRg0Wov/cwJLR0GYKweFAuw7mn9J4A2/1JHV7G1elPInoe1NcZDs1vM1Z+HOI2jwGQzeHFgc526sKiMGCtRokmpjNA3TfgBzqMawF19ScYCZwWFvSm0PikYkPcOx+qS/9GRIsVqvwyJK0jQ+0U8YG1uByqCxln5594+67HCuumHjvqqBubx/QkFzBoTK2Hpox1YJuFQC2yjoRBIdjYxs27Jh8dN/U3lOHt++a2T8ytmENSA/I5JnPqewIqbZc1QFNZ7xhP7DrwEbrLc2yudnL2LWSZj3c9AT1G1iUZLUzZAYrCRXbLGuW5ZhZbigNLJOZRZsmvPPH4Jr69tIHd0B3QK7VNvibsIzIsJrEvreahq7jpsKk+Mu6NLOS2G2n8pjVl3KmjNAe71K+UD015VtNYwE8jW0cXiHxsiygvQImIznuAaCXAzK8L9DP9W5vN/cZxn6xVgyARuuOFTGUj2qQHky1lNYNwYsRpoPW+PiGDTt2P7p//+FvHd+y49CuuDnSxEALfely0eNKgEYgW7bGtRFQMjp3ld28cZF1O3Po2wZxywLa1EKbAn+osIOiJNMFbobPmLkcwwFd2Oeiss9SWpg6YFW2YN1VQHuT2t0cDgKuPQUGAdpNV7XMXVnbZhpuMS+AYx3sjG0YvnMLgK42x3oyy409KHfKRGGTKZQcb5x++8v2oQnIxAj/7iflRKj6kkwf0LArxZ/HAYCm8QXQIIvBIS+aQokmk1jbMZJnsIw+HJnYuGvbngPfODy554l967dMb4mbYw1gaijV7GeiGld5wSFySFGwtLvIFuausbnZS2xx4TqmVaEIKYxHsFsliCL8vizst6D2AW0/SJq2aSYmlQxstLAPaL8FyUgf8qgNAfsMXe8l7GfolWbE1SVt2b5bs9lIS/sTc3xA2+SLW41Mtp/NlBoisROl7LRW27xoLwH0fPa2Xotig96yjNRc4fB769HfFUDfCpDhnfhr2frG5gbdALOFMPIL2q8Yi8HpgI5vwQV0sLQKwds6S2PFdCuK4tGJid1bJ/c/sX/foW8e3Lh17yYZxhzM9nJ00RBVSZdm8GFBf6ucLc5eYVcvn2Xzs5fxzAcWRqkBDA1SA0pFHUNDQGhnc9i5HG4aKS2VdEEOfQhk0dnUtR2xW35QFtD+FlrflXGS2r348s3V3ZthYro2mcmbLln7i2oQRwTh3JFKNtGOH7arkKERgqQHzP0zfrbtYRyUoPGfmYBNmVAXe5AbZftGYbdI1GQq+5IZerngj14n2nT2H7HzjYWc4+ZXu2rCBYWsFw4DdMGLJi94WzPe0rpoZ2knCKPm6M7pk9PHnvgnJ3btfWIqbo6GuUpNMGjLAgZ+th6gsYcw77GbVz9jn194ny3OXWVCRripFIPAEGw6C2hqkrXVdaY51o7gtYvbzTBy85YNY5aLMuF7y7m2eZsY2tpRSMrYNlsGkTgbjxiKtLJ1NfwyTPhVjWhLST1MXNekRu0Bqle6akMt+dnwEvA8wVsYdm6HwWMXPbWk2ZER9PjDgsSvCtArAbkOYjjW9R2DDsxyRMD2V5g0CmNzYQY0aGjYL2iyhboBLgeHITMAZgZfF+1ub0lwzds7po9NHT/1oxO7Dzw13RxZ24Q6ZkyJY4fGkIwVFcHYecZ51mU3rn7KLp1/ny3OX8P6jEZrDANB+NoEhGUgiJ0qOJcDAG1aljBBYR0ON8sO9Xk5lR8BbZMnmP+z9Qnm0mp2gaMkcYCmUhBzYpQ+s7EZzWR/T3rUldUwpqafu8MzRHLUGBUA7oa92yIs07doh57TYHic3Apa2oDazNGmzKMZbIn/Vu1LU/a03GSAPjS6HG+efvtOM4Ur2XL+6mJ43fVtVv7eFJrQj0PNNQBahIJrkzEEQNug0LgdRatgoilY0Up6nUDKcGTb9PHdxx//Z49OHjg12WyNNaFKDoMT+PT7PrC6KwCDxiXL0x67+cV5duXCB6ijwXeGlQdGMwM7l93eZoKSab1y00nJf64A2s9G2n3fec5UmpheQqyFtk2w6EVTMRKNZLCAx5XIpVwxqLY1KARo+lkN2yuYHiXc68Cq+NE+81uWth41NOtDoZNYt8bchrGpNoQyVTuVCh0Ob0yE09a3BGhvwai1Wb8UQA9revXlha+TUVrAPysvmj3FcVFma4wzWM3WSqTuNgQuAbLbrCRLQ5zJATtSZNCA7m8ueNtU3/EW06oBTJ2pPGo22uM79zy+59gTP3h02+4TO8OoKfMs8QC9MkNDUTvYdXM3L7GrF36HGhqGv5hWqxLQ5TwOGglG43ZNlR3NRzZSwyDLTK43Hwa4KLrTxR3f+ZUrTN2cZQx2fVPNs90ai2WjWNAPA1Jt97dtvSJgI+ujh21tQAqWDG27f7cNaPsIg7q97R4kIzEaDRZs2ciC/dMsmtrJAliLHEdmkCVW95m6ahq+U6nk8wFd/5gGSQ+XO/ASK1nKPjnz5ulf3y5DDwM02XHDNr6CNQdzn+NEcWTkrOBMNATsTdFCibwIYdA5DNUKYUK/v5sbtr/yomgyAQNneKvIFU5SCoKwNTaxbePU/lP7Dsx8Z2bj1v2bgDWBbeta0l3a6rlhCAqlaZFanL/Orl85x+ZuXMThMvChgEVXGTAD2pmmkbrB6HZeNIMaaP8KYBgaQAHAhHJRZWuhcYwBABoK/LFjxXZ4YwuW+R5v7a5CM96g3IpVrke2zbIIaCq/XElnDPj9kPPeo3DvLLHvEUptGxGTm9az8JF9LD56kMX79+BaN2BuGItAA+IxN4BDjW1l3+0Eh3cD0D/5iQnhh1lxFOzRDm4CMrAxk5kAEMN+wTDX3AEZdg0KGbhVxjkgxW6AZTqmUWBmghJvqSIJIdEyNr5x7dZdM5OT+5/ct2P3iT2jazaNASOoPBmuneufJbocZhJp0llk87OfI6CXFm7gmCkEdNxkgrq8wXeGTU8wUhcB7Q1Ah9w7tdzZKHCBJbIAACAASURBVB13jsCcD2jBujHLMtjzfRHADIvrezArwQybwWbYHJdV4riCOqBJmth1b67r2wey3aDlM/SqoT0M0ETxg34P7xF0MtiZmzey+NHDrPnsKRbt2c0k7PpOIZbxxjqgrqbJTCZTeUtaugJoW+B/pww9END+SomlTRyCPSctVFPCxtfKokweiwCYmRdCFYGMuBKV7a+AlIJFWrBIwOoJCVKDNTgTMYMB5UlPwBTS9Vumtx448p1DU/ue3Ldu4+SmIG7EWNMBVXPDgsEBgDaOiEarrteZY7PXL7DZLy5gtR14zlGj7cZ/mYEypV3naqBdQsXWQnjuA4eeQlhef/kaSz86x/LPL7Oi1zVyAUCcKTu2oGyOdTM4aG+hkyC1rm8f0HfC0Cshf9DxpIRUN0GZER8/zNrf/w6Ljx3CCVMsSe04BDPhFVgax/daTW0aDmp+NH1b86WdH22DZ7ghDX1HksMHNC2Wxwn8dRvOrpUANgaNDBNFmYgE4yAvcimLQEqtZB5CEUQhGLCy3f5qtlYZhgYwwwYvKEyCMbqc82bS7YpA8uaWyWNTxx7/4Yld+07taY6sHSm04nh5Jwej8iENoxrr7VlpkGc9Nnfjc3bt0hm2NH8dA5uw0a6M/8L5G9auM10qdkY0BD7apFSM62rkrAgFTkIqrnxhAH35CnatYBk3MDFKDjvOAACc54zT+AK37xsY3I4MoyZZV/he2oLUALASPu/495YE4PkKC+jo+CE28r3vsGgIoM3CJcPKrqx1Welh4wEEsTmalcQK+NCQKTxjMoUXbmf66M9+xOT7h5gGyUHjvCBBMm+Z2UkMsOE8jewWZfpAhrVsXAuhldnKw0UAG62EXZpptr+CZQcr2liM32vdyFQaNBqjI7umH9s78/gPTm7f/ehkEDUwGCw7KW7xIyPpUSg2P3uVXf38Q7Zw8zJaaFi/ATJDxngphf2etFTIFSShbWenevrVdnCFlcJsiZ2dZzlMTLp0lanZOaZ7CeO91ALa7vhGxrb/0a5vO2zG7fz2ur3NB3yPAO0iTJs6h+d2u77Xs+j4Ydb6xikW7plkMK8ETlQzsIZW4JkmgrLc1KtKrAOb6ABj6rsMaHiuyigCL0GCQ8tFJnAKv3UuYB831DgDCkShpNLw6cPGVxEIXchCw69VAAszYaMVD+wWWF4ExMwAas3yEGSHDBqNifU7Nuza++S+fUe+ObNhy96NWBeNwWA5o25VkDaZaTxoAFJwETqLN9n1q5+g65ElS/iYsIgLdDQ1w+IYXfRh6ZYme9KQQ8qMWa8VPpNewoobN5m6+gXLr1xjxewC453EBYGmu9tIEAQ17MpGhjZz71hWY2jSzI6pyVUZUBi9qoNRMUiG/4UnB3izwcTG9Sw8MM2iw4+wxv5pExSGAePKm+9BAyAtQ7vUOAF5JV/azxxaqeMyhXfC0D/5yfMBvFOy5nBRpl3FBi4GJEjcLu4UWjzSoLIo0wIZVxjDZlctZaELGQgeaF4EGgBtGVrbVcaaFaHgLErSBARyNLZ205odkyd2Tu1/ct+2yWN7RtdsHAUWgGHlroNilR9g6W8VuMEKGDntddj87BU2e+MiW5y/guspAOwB2HjU3U31z24hZ9l6Be2mdEmlWgd0qMBPBlDPzpvF9XMLjPcyz72wrgYwrnU1wCnAxgO078qZdr5lZ4Y3krtSu73lCHEZu4O2AFAGFoi62WBy80YW7p1i4a4dLJhYa6aZ4kgxa9v5W3eRoaks1WPorxLQvs+cxK2AiotgryCB2W19VTzCXdywVkLxoGDKriiGza4Q/KmAw640VaCGLjQPOWOwgg3vJzTDTbDA0L1siUvNo4lN05v2H/7Wvsn9T+5Zu2Fycxg14L64imLVweAgtwMCSjs4vdeZZzevX2DXr33Cup1Z1MlQD41MbRdzmoWcxNAloE1GrFybbOrNzLAW7FcEvZykjKUpYziGgCr+aPSVKVCCnwuvWRY1ZKXclIo7vFasui15i4Am37n+MNQ4UdZRwwEU6Phw2PUNo3khsQLjxKjq0G0FM72MJrlid9D4HTP4ULeQOaTiJKuhP7tThiZA427BViuorzDGBEmUS8j0QYKkSHkoWB5mXAuWa1GwQkoANroZOoBd3Li2WAvcxa1hN7fRy6ABIsZ1wHkYc66DZnN8ZNvksZ37Z779yNbJYztb7XUjoMPJqbgTQLvHAPMhTdjC/BV2/crHbGHhGlbemfQ2JQusXQeAxiHnlBlDfjZakVYoM1NaipxFu8RRW2KcbzpH0O4jDV5+wJiYwc/aODFeCUoZJNHJCfcjpu6r6VhdisXtKXQlHn7PoH2duAfdVNOhe1G+C9vkUH+f9v4UDJLLYU98fPl9waF9U4Pcji8b0LDsB1LZEAxmc+2gvooNwAyaWSseKUhhF2Yfd24ZGVYUw0pjVmBQGDANzA2L5gHY5mdmTzd8DffTMgiiuNkcba3fODWxffrE5K69p/au3bBrIggiiU2yq7XpVpIiXiIk6c6j9FiYu8I6SzcZBJ1YmmrLIstlQWaenVuhbIFsAC0BzvZ3ZqknngASYmCK9r2d4baWu3QBzPWdPBOKkeht1GE6vHx0dYB250alzrSsL68ytQUqDFKnBgY/ALR7XHDoo7XoylUdZU21wXONoZe170yMEA9wOVSeLoTtUcFy3gt0lqiIJzzXac4aWcx1lnCVjcXzav7CmGKHNhYcNbTXbQKjcGkVG1hzuBclE+YWu7ehDJSHMooacTSyJorbG4MgXitFAEVHMFkciEtypgO81UIWEm6ZNHN+AOxahFEjao1MtCY2Tq3duHXfprUbd21qtNc04UBgYf+XCWh7aQdWTrtLrLt0k3Vg3wrtMLQa0pRE0ooH86GbAqVSQ+M+FWRWU6ONK5VRX5p1yrQxC08I233tL/ehzCN+vpatzI0Pce8sHYLboduzhpzgBDBy1V1voanWr8UI5nso7MdBNhQAEqCpMMlNZKKkyjLNzPR5DvSjv0RA/2//84nQ3/zKoijAQBA6thnsO2MRLMqEKaIFWHCcxXE01hgfX79+Yt3U9MTEjiPt1rpdgYzGdKHsO4PjYQUWNjpAEZ39h8v/OKSbRRg1g0Z7PI7b442o0W6IAOQ2KksLaLIsVqLhQb+3lIDVd2W7PEz/hB5DcFAUMDS4DnY2s5G5ZceL6XyxYMMPxFTWZSplWZHgKAR8e1i4YztcrBwxC3ssGKhmD4FgXmtJWIRYu9Bz1Rr51hi6v57cuEemss4wrmu2pcJ/Ku6vbDDwfOfKIHibJbSuVD9D1zVTOQaCXCliaKOh/wp96FtmaAI0BIOV5tZ6HTMP4iJNJBe6OT6+Zf227TMHtm89cnzThsmjjcb4DljD5ibv0wFxlyirQXEivp1TDOljePN2STyWG2O/Gl26ap/8rWK6Ik69+Q92GAvYeRzsMesBo6/sjfCi2opKZzZKWsWyImVJ3mWpSpnSpu/RBJOwrNMmZpxbYovlKYiyzaj2zPXe1RCGvtX3vdL9/SvfAEAbCWJSSS5hsiygjfbG8wG1tDlb3TztgX50tffzSwX0T350MKoEg7GIaFGmBGkBk0NBN+uikWVdaPNvb9q858CBfd98fueOY4+NtNZu5pxHJvKn1mWr0VxalAx4U4ZoilpgTAHHunnc2I3r0Ab1Di5jOy374Xl2FxKtHa1rAU3Ji6p9Zu00TGwYS60cYWWezIyNKVimU5ZkXdbLOghqYGjcSgsGEAabZU+iKbsspQw6ALZor3x3BOjam7rdt18/Nu5CQFcuCzwiEHvNMIAur0rUqeLcEDvmmKw6FxvYxZ/WAFodoEl22Y4emAJb5Cn77AzUQ6+eoVmnk2+JJtTam28V/H/9X/bEmOZutUBcBDA1NLDsDEvmc9zHDfM0dCNJFnUYhiNbtx05eezI936wY+vMcSkCCSvTKhNRKgxdjqXCYIKW8DimploAy9x0wIad2SsxkIuufP/WZ2hbzeaY2Qwcd/XJlLUDxAFr+3XJVPgOOp9r1kuX2FIyh2uYITjElRZoA4ZMVgBtwG00NQkOu8LYAXYIoFf7fld7v1psMlwaWEni23Fk03lXUVO7QUVJ9uqK5dLDhkHaF+pr6S8T0D/588kG1DY380UJ7kaR6ShrirDSqY11y7qRJj0tAzG6ffvRU8eP/+Cf7tg68wgckKS7aDe9lvUV5sy2HiVICQIyrUaw30P46HaY2FYfIzJJctQnzA/TjnWNZq8WLvCiHSZ2/jL4xSg5hgDapqDrgMZAEKr5BGPddJEtdG6yNO+iy4EjxTBBA5NLqWrPdpDbINGxn52dUeKLXv+XRckrILwedNcIpAJ0d+WkBArZkDYIJrmBn1t1hl6ffTeIcOqAPvvm6V/VGFoWqsuVTsHlUDzOWMZScjkqDE2AZvFcgH2AsY5YziOcdoQWnbf5NV3SMKh8+7ajjx89+r0f7tg28wiwTtqD7azVBTd0qTIC05McVoYQwFF3EZDdtNFyws9tux0+A+AIqhqg3dYp2zlCjO2vhHDzjUtwlIDmFtA3cBITZB6xrQtkB5Sh2lG8pizVSJDSaaCqtDJI7C/4Xi3l3ub9BgK6BGzp8hkGLgmKiMYmVuzIMTM75T4BNO3mdquMQ7NbUIe6QXIDOrSzNNGw7Gf7zpnHjs587wc7ts3shyAuhfqI/lSUrcMYDGgsgqkA2QDbDGkkG8mfN0Ef3DAGqzG3rdCrF/v0r0+zDO0A7RfWe5OO3NODqwFWu2Ho+aUvWIKAho5yAjRsorUZSBssol/t9eCZ7OP9Bmi/J7AalA8EtHVIXBBIg2u8Kae3y9DvvP5X//GTj95+WbF0oRmNCs5VjxgafGgRFinPmzn40H0MPQjQgkEwyGKRiyZ0Z0smWt20o81ulCMnjx79/h/u2HbkAOTRVgQ0fZCooQm4xMzVW2sZ9I3R7eOhuq/ZFwR5thAtqansA6TVDzWGdkXnXv+g/9ggOQjQCQD6GmppBDRNYYLAEMtRgZlpaE3J0pSUMMy30ol6mwy80p8NlRyexqcvKVHizek2L5zS3jSv2p4QBGjr7FQk5Colx5cOaF0UDX+OBnRpJ6rDAh6Mbd82c2Lm6Pf+EBnaSg4aoOKOI70Zsqus9HAMXNPUbgUFHbS6Fqt/QCsAuqyz9SbkY98eLbis3tJuk3IQSlWD++8LAA0faDddwPG8wwENrFx2wBjZUWbZqoC+x8CuX+j6gnByO8zrWp6hqaajBmjnoKyuGxwGzRR5xs6fg57C//en588Zho6DEQkMXTCWKM0TFuiUpTplrVbO0jRfFUMPAnSWdyC6G9u1Y+bEkZnvf39FQGMGjrSWGWDuAO20s8fYVDA+SIt5l/yB5FOTPH7huKteWw7QwOLkavjOxgAp5QCdAKCvsl5WZ2gah/AAAroSkHumogvyPQ3tGNrrVLH3o5T6qiSHnXfy1QL66B9+f/u2I/vBf4ag0DG0AwC8cauBPclRBoE1zewvhnQsXaZShx6YQZcw+Bll+Xy3wt82ZbODruu6b6yAfWB6Px6D+YCe7wO0ATOO5UXd/IAx9HKApt/R1Ra+t0MbXevVHQHa+NDnz731m1+9/rOffnruzZdlrhdEcwTq7XuBZknBeMIzlvJQpyJLczk2ki99Ma+cDw0ux8CgcDnJsWPmxMzM9/+wH9CDgiiKfq0f7aRH1d0goJuJ9JBwIR90BT9zCKCNdDArGkBm4OBxv9WJ0t0VIPtd1rU6ZKcZjYZGyZEssCqgob7a6OeHgK5nfOu2avX4wucVhVVAXzjz1ktM6fkgjgPORY9Lnd42oCEo1IVuwCw6sO4GBYXbtx85gC4H2HaYXSuHEVa0NGmpermhb9NVJvaTfVTTZkbNDQl3aplBv0AeUtoO0APGBHgdIm7oi9+ehE9bzk2GsQdwwhGgk8y6HBAUgk3nJjBRxpBKUx8ADX2LDG3Kamvd3rcaFDrJAYBGDf1r0NCffvzGy6xg841mQypg5lynSgvU0BEvslti6DqgoUvbt+1mjn7/B9u3H94PTaQloAcxNHWW+n6m9Zn7AE1+p1m07rqI8cuVEg+DAG1fj998SlKDAF5PoOBgcvuaa+4GFrSbwipM2yOgF66xxGnoJguwnJQ0dFVuPBBBoeMML4lCQaH7HGx2F89zzKpUC/pvG9AwrDHVn3381tu/ef0///TTs2+9wnSxCIDmueilMLqI8QSGRCwLaJyCVEusSF7EUFmnhMD9gjB1P0s7GnZ079x+9LGZYwBoYGjQ0Ium5sFNZB/QAzfM9aDEi5UYlYWbrnB8QJQ8zJbytTNN/XRNp2b0LY1vLQe5eHOLB/npxFr2BARAw+s0DH2NJYkXFKJd509gKm07KDGl2gds/6+8rXuUIRwWXPtPj1+XV8nS5UDRbBMo9PrLbLB7Q7cBaLgywog2lfbS8+feeuOdN/7zX1389J3XmU4WRTAmuRA9lrNUxSIJu0WWaZ2xVpKzZDxfF8+pOBkvsJajnikMOQ8h9S2TIqaVxjQYJkuXNBPh2M6dRx87evT7P9y+4+gjwNBJd8EC2iyTxH91YJBU8LUxBX/E1Hiye1p7ucn99c+fJEKlF69Ww0G7A2mDKcz7sCdAWUhfS9D4dpYDdOQAvbj4hbHtRGB8aAdo0/iOIxKgAR6CQ6/umIKo+8eH9hhiOUD3bckiL9rafLcZFALJQC1MlnTmz59967XTb/31X1/89FdvqTxfCuNxwUXeY5KlfnG/SNK8G4yoCqCpOKkp4pA6VWCmc1nQb9axwZBy1evB5XR0644jx44c+e4fbN9x7FjAgzhNOmWBj01MOIAMzCCSEU+BA/mc5eqxobaPUx41RA9qKvUX89DEeHtLM+T6AW0/WB/Irj7YSCFMrAgYkrTIFpeum0whAjp2gMYaaTOaxKW+qeLOrHe4Txm67kfb710V3kBAE0vfXuqbNv0KKfOkM3/5wsdvvXL67f/y365efO/dQvWWRLPNweFIFUvDgicZU5nvQbOlVgHdKoy9UHC/fBSq7SK1GEL5qLbpbzNxP4gFL5pJ2oWJBCPrN+7es+fAM09v33H8xFhr/TbBZQzLHrEe2l9OjkxNCYoqUEwwQT51aci7Sx1JkL51bu6aWRUdfhESNsZmZSCIL8PWaxLw/aGIlUeyDF0BtK2Sg2QQPJbguHiolyyybneO5cpU24UwFoEabmGqH3wNBf/UAOCtfKDg9r5j6OUAjYqjvseQSInmc9x6cRIBmnHW7S3c/OjTj9985YPf/O2LV8+/e0YJtRRGI6yAhErOUkyq5HneYHlGll0F0H7HSoPdDHsMZ8viXGeo5/DroaHDG9yOVnti/eZtB6a3bp85unHjnpmR1rodgQijsnKtX3r02dOoISEA8zWZl52qaO6yC29osZKr3bADx6mW2Z1QFqi0m7oyUb5EtEtADpAaUH8CjwL1z2nWxZR/lnfREoTaDfwPZulAob8PaJq77M9TfkAYuq+8tEZE5ZX09ouTcNwEzArM0+vzNy6+ef7jt14588GLv7p+7eznLM07sjmmlU4SFjRT0M88zvNUwJ7rqn6GgUmcAE0Nsl0YMxlCc38vpLXGOApXywYr8kgHoiVF1BgdXT+xbv3OqYn1ew+NjazbJQW0YBVA08JvxWK6MNdWNJaNcVEhxMolzNOvJaBJ0RHFl03JJVlDIyLX2D8FJkQcR1GrHcgIxiVUa5opCzhE6pvu57I80jgbhnWAaeEJYLxCphKW5wnaldhqBf4zBIPUuYJbtEByUHE/9B327zu83xn6XgAafHtotFhauHb+0vl3/+6zs2+/dPnzd88tLVyeLwrelUIqSnlHXGVQlDRIPyOg/SZZV+RvewpJdiCwmY5VrmPOZZMJFkkZtMK4Pd6KRzaFYWOtXdUWMK1DjRdlBqed6R5lXGjctuOa1yDhQcipWcv0cxNRa6E5B6xCVyJOsuUAXI7Pgd/A+DnQO1wWOcxwkkF7ZO3EmnXbtzdH1q0TMuDokTvwE5KrsatzH3y70AIQQInrGnByPW2EsrgnSWE1synsN10rZkwCTbunQS1kX1YV070rH63FHvXguiY5SkBXN8xWNvvaQND50attwbKHAEpuVZ4W1y5/9M6Z937+N599+vZrS/NXrxV5T3HBe4pFGciNkBWZr5/9bm/Qz8iXg7q+e6opwe3QkSkjhYHluMEK6qOlbqicwdTQhoZZHEURmVl1Rai5DnEAI44vMOMMGIMZHLDFB2ZtCJgyyhkMNaLph7XP1QC/IgHwe5xGAOAFsV7ANRzCMibgZwZlOlCF0pKLsD2+ceP6TdPTa9Zt2xY1R9vOxMZucnOZ6IOTBTLNp8CRBDgexO4YsSlsU7gfmuAPJYZtuaIgEH9vUt5u7geeGLZ7vM+uKy8zfS/qrvzgdgHtNcHiIaQTk7pUzPfGpVptx4rx9aUIdNJduHrh47dfef/X//W/Xr7wzukkTxcaMoQ5PgnMciW54dt1Y+0rmsYXDAS037mSwOw6u1ICQA2eNE5Lgu4VO0kUNLVWWYhgZjwsmA45TEbSOoDvOZwUXJtrbaEFF0ICYLH73y4tqQO4D2h0PzBu4TEAZ8YUAaaW+FBaS8201FppzmTYbI2Nr1m/fduaiZ07RsY3bg6jZhOXcGoYy+vrHlJB5gMqd4vYBAqNNPBm3iEDSwNoXzObvYbefkMcVEPsXHZVk1tQSo37BNDDmNm9vDqgKXPqaWcnEwfN5aidSDBFCva1MM3yPLs5f+Pzdy6ceeOlj3778zevXztzQRV5l4LBgBdZzouM5XEOXSogN8LxpTzIGwX5zyA3+hh6bG3OYa4dTE7yg0Na+iN0FqKWFmbgDMx65pB8KYpAFTmwpJBSNsyMOzNYpgCmtuyM/gAyqhYaFQOCctmMgmFlu8iV7muwJ1gBtGeYmjEt0WGB5xZR1GiPjY+v2bp1zcTOyfbYxAYYbENTcbEI0GNp5Bb8MMr5FPB7Sd/jrcn6OSDjYBlb7wwNsrbliiGozaQh00NoXipJGnPSDBo7cq8SK0MY+pYB7ecLqDSgZsM6JvcySObg4/GHmEMVebJw8/KHFz/7zQsXz771xpXLvz2/tHBzkeV5L5Iyx8EyRZhDdpDcjV7QUCA3hgLaX80GhUowzgCnjsImWC1DWPyDHSxWSwNDF1jrwbFNCyQGlzKUQRQFQdDgQoSFZiHHSaTAnnAqApitjmZMaA0zPGgtaf+1tQZ0+7ekewEqCq/jGAaC0obngIE/RQHjx7gM4qjVXjuxdmLXrrE1m7fFrbF1AqjVzpt22pAESIWhrdSgQTEOlAKbXyHYo0n/BujCpLzhbXrjCxygy9DByR3/+e+KsugXVdWfrFo79wfJBqdez6hhBBtU1Fcz25+7SxLG7XhfznnS7cx/duX8u2+e+eDFFy9deO93SXdunukcNk8nTMYpWnVRnteDQZZeL8Cu27K2qSFD6BjazIeurjeGcWDdsaaMsp5MtQjdajYc9c1iBDRIEKUCHsbNkZE1E2vX79w2Mr5xfRCGsQbJwbksCgUb6AUH50NwBCVIYXA+HGDdxPfa8bYUau6nzWQq+8/0eQBvYzCIu5M1KwQObCoKUZhZGSKM2q326Ib17dGJjXFzdJ2E2bkQaHqTmdzn6qQIfEHa2chzDAo1x3l4eZLicBoIC7DNys3As44Ggto/IcpBj/jy7QXpgQI0AnaA/zyoNMHaen3uCLWc4WAecDXyrNuZu3j10pm3zp959fXPzr3x7uzspWtM6bQRw34pADRLsSFWAaDLYiSpbhTzNwM9FNBwnP350FROSsEhzIWm9Ww0RQmn8bOMyUZzZOvOIwcPHP3285t3HnwkkJHM8gTG7hs3Qhc2RWIQ6RazmW/RUx/CUFUOcYsC8f52sIXTDbTaxwaQpgxUgAAK4igM46YMIlhvgZ+K/4RVQJuXRE2h1CoFl0ZwSrqLc2z++hXWXVrAe5WApmq6cvyXsfushqYm08HhqH37ww7DnfL3ECnjJAaxhI0nHJN6zIrneB3QNFzGZ3A70X+Q1LCxuzk3eJ50Fs9fu/ThO5/89qVXLn7ym/fn5y5eKzTOOc6laCr0nVWUUyIFMoPN+a6CVDexs8kOwr8Xin/7E6ehmYDp/X0Dz+O5wMkOFQEX4QLNSHFcdYxLgHReNEfWj08f/MbTJ5/5kx/v2HPiCDw8MFm5KbX+Qd2tD67kbweByp7t6nq04Vdk/4M1Yh1cedyqNfsF++Lzj9nCzS8wI2rqNuykUrvX0MgMmkRanZNHp8vga//dOi53CGjrWlQY2ncx6Arr1+DYQY7k4eOiIbyowvS1zlxnafbSzaufvH/xs1/9+vy5t9+dv37hCoA5DFuMK55CVR1IjUBkCoYyMrhpJXk7biko5l83GugblyMNgD743gsa5MZAQPtDz0l2uIHnMKsjSwMzuT8PYBJpwaVaO75pzd6j33zu+NM/+p8273xkfx0orqaDjmtf0dLqGGj1IVN5T3hu3OJKm1+Xe6qa7VBKAm42AbCCLd78gl0HQN+4iokAw9AUMNJQR2Jpy/QUBPq3eJkgAA97Z7cL8BWOVJ2ZHQ+UVyZ77TS/qQ3+MUkmTzP7UsTbtWLmRpvHhBhDF0WeZb3LC7NXPrz2+e/ev/jxrz+4cul3ny3NXblm9HKRCxlrrHnmOgNmDnuhwqxg2FDEzlCIBGCua+c+QJPsoADRn3UHyzQxOCxCiY5HEUgIEIMsVyMbtq7Zf+T3nj/+zD//lxu27j2wOng+mPeCNXHXP/+ELd64howtBcx4t4DGyN0OaHRuiXVT4HcYD3vuyv0KaDeo3H5GVMBPid5lAW2uQZZEVKFVovKskyaLS0vz164tzt/4ZPbGhd9ev3Tmw0uff3BhceHaomRFJkRbs0DnASsyKEBiYZRjiahIVSxjlQRd5bMzWHWXto5qYmd41gqg7jEREwAAC89JREFU4QeVPYUwXndtM4B1bjT83N+xIotcspBFigdqvL1ubM/Mc8+cePZP/nTLzkMnH0yoru5Vd+ZvsuuXPmVLs9dRU0PKlmw5NMgxmDRD1CmFDhyFcWA9GFyRgFe8w5AXvUqGrkrnctprncGpZ9D93DI0zuczLGyJ2EQ2hc5Uobp5nsxlKrmZdGYvz147f+HK5x98OvfFxUvdpRtXO5252V5vYbHIkkxwqQIRa0ieADMDqHPcNZXnPpghECSbbiiY4RXRWrfy6DwvUHqk12Ul0WLXU+A6NykDnWWBklw3GmPtbTtnDu87+ty3N247cEhrFjJwN8w/SFFT6Ocfafp69UpiOOb6HgvGPpon76sf8SIdvO4Pek32iktxJgQxUJ4CQeGsXrh5lfU6Cxqq9yDD9f+3d27ZjeNGGMaFlOzu0zPTzkMesoxsoDeR/STryYrymjOTycNkOn2xLYkEkPMVUBRESxbl9tjShPCDRAoEcfnrR6FQRrF/Kef0F7NfCS0kxhxp/BC4UxdP2jHb8vOdpwL4mDCOunh0str2ctQ1gyoxQv5OqAk5bFM2AmT/l0B1Ka1iH+/6sPrU9+tf1/effv71l3/++MtP//jp08d/f4rdpjMSeSwEb33g8JhN0/ZiOirMbK9XcXO3DFf+PoxtzmMw77Az1dgXGpkF4s1/fvQS3k03Wgi4ieoRFriSNejTxCj0drl88+7m/fc//OFPy+sfbowRQGN7djLWxrqIz0VkPsYfQ7wyZLXFpuFWhXt8g2XIN9qIwSooBWWHj1yuHE4d8+YNdj2esUTmkqCD2SVEfs+nWKt/SA2NUmBWwymBZeBmnbp+k0K3weOKJrL1KB5Z4lVSJDh7n1gJqFKqlUQCzjIVSI+PEDzE/9YX+1TWmSqh5QDZkKLpk4mbGOI62nAfNquvm83dl9uv//3a3d2vTNtH71uGJeJ0RCAIojqyALT9okdntrGNNtxG27dxbNVAzeC9anceVA09yfsQoIfNlvX3noMcB7t0WHjieXfLlrhr+V8yOjY5Vs50UYyzIUXvk/d85n0+9tHy9xgBl3fshET8Mkpy8eB/v0qO6HPecb4oYPXiO5/LJk6iLLNl55Lw1WVnUt6ft9yzXwk7mDwx+IhUg2gxldPtwrKsLGEgi/xEoo3K92SitSmImdziDJ7PROcm6yDux8ipkKytMuAj97kOY4Y+S7Q/qNRQf45fxaJl++SdxXNYPmlzcDa1tD30yTQ2ct499w1n5qMrd32Alb3rg+wCui7UC0ATvsbrW5/czTJi1RB/Z1KxapwM6PzAB0uoCsK8BX/j5DD0Ek0WllZQExK5x4VitTL8NakVIPsU8RNyAmpH4MLoo28sQYa4xusSztQe4/qUIcUSBIBdoscSvJGvZb+wlC9C460JbOtEQmQUQLu8wyhb8MW7oxIuwWUZMNm2kcEw0XjY2IbGc20BbnDkcyGGYIPxIUauPTGicaTdgpbrDOjzBrIDhI+kAdClHT7YFJxJ+dMm77oUepNM6wSEnu+LhfHeJt/bJOoFpxFgY176yKaJIXxlXEW1NQuQP7cJezMmOl0E5mplr7oxM2uV96ocNaA5DF19PIgqWwfiJAAnTC2gJmxK3zUaGtlHoJVc6iE0TjhXdk7OucbCrPjebQE9TeWoKi5Adux07zB4ZmkVEOcIOgC/F2+/mN1QxS018sl5vnJ+x45ASS7uC8PCwADSRWdikP8dKMwsFilnE5i2HkZmGsBjtU/CTCVxkoIw85kD+pjAqWAO7ZK298k2GcCBmQcCaDmGCnF30aQuYkAAyA0LvoSNjoDoPrL4M6GN5l0bMc0B5vFO4FZv/mCPAlorVqseutEy9vEgfmFqOpf8W4efBzG/JbqsXTqxURMmue19SI0nwiz8GAAcsCG2LAxaVA4UEPmuA159n8LUwsQAuTyHkMh1ERS9n4HsJfwcM0INdHlPiDlsTnFnBaw18FAfUBtUhWCQoutxUw3yXYErLG6jAkIHWQYYpiqqxpS2vWYere+4Dt7tZ24MAzAvn035BMCoH5vko7Bx8gLk3rtk0poogHHhNwFmxsasKgb6Mi6hWDPU1lwvAjMuq02UPSvpAVDHAI3F4+13nVVQc/QugexlkeiCw0ZdB7IXMrOt84F1UXShSZbvADyDmzPQM6AB+tRBrIUgM3MGst6Xfyko14MKYrwbAz2zctbjleXrOgDaXE7WpUV7T0H0QdjWWRcyM2d2UmbSga8HGpby/eZMF4VTe343H+3Lglp0aQGzE3CbRRcDnzAwakVax3bj5Loj9GpcRUxyw8LvyifTX8d9KsZ4Ecg7D6kbMqb7GDrf+5DXvdikSQTlLDHAr1fBskg0Xzonlo/ujR106iBqpgPEZkOowuAAt4C5WQio+yYDmO8C6HJ9Stfqs/qMzARVUqEBsgPAfbM7K1TgP/TuDFr06BDHwFXQAlgZ4MJMQ53KIMNSHnb6HSUBrDGmKcDuO5eaxqaBhTPbCJDFDLd2/D9IXC5cUiCrriyO+h+bNN7Spgi1ZhwDsnbto4DOOzF5caiBOT/f/tHC1LpIXK6DJYSycVcOxm57Jvng+vbKmjVgxgISnA9Lm1m6/I8hgC5APoWhteIPAN0sspAoE9rWIThjoRmuKwHQmWIf3mBeWDcDdqsTysqemSUC5l1m0kGmPAYalmq61UUDWsYTAJd29E0GtDCvMaarrmHhRXuXAPGihdvauF76NKgWVz69fdMk1ZUVyGxnq4qhYzE2z3FfPdP2jdeDqV5Vj7//xTgKqx2XalCziyhM/TbYwfrRRQuw2z7aDgdTVJE+WTqjCdH2fWbkps2gFuvIMyUVjoEdA54mWYjybJDfeUiIHgjIoSnV9QF2GkCLnkhbPMuLVZKBZqqtEoMuU+3vIAFUmiGMa4wBsHWzNiufYGEAfHX3Oa2WLmGCuy9qBWxM/h1GNsbUYN7HyseA/ICh9cY+u3Sm/i1TS9SsolPf3vUWYLNYXL35zooachXspoBbpFgBXl4Ci4tUA/pnSghOXdQhIRraiV5fAXMsXPVUWpcrHmCNTcpMCl4FrAw4ZqiSGOApTQQEU/KdSx5hXGMMoK3rVAMYFhbzmzGmViu4Fm85UnEB3acr8/Nj+vK+vtgLqDGoeRCm/vj+z+7nj/fyzA5bc6O5F111B9zGGFQS7q9lcy0nAM+ngP4b02K5Wwb6vBaJIOn3sfAgVDvT5B7h2k6nW7DVU6mA9V0bRe2qBphB1ffCTlOaKAx2gQnQ1tUGwApewcm7/LsCGCbW/LV6UbPyU4CsZT4KaDL97a954bjjvMQU8a8vVkIqw9ZI4Pv8SZKNmLvtNSDnvqgnSPU6A00Y/ZmTCtC42FqgVKiOsWfNmmNG2plKy8t0cJWVpF/KFPvMzXyx4uQ/Q05IhwAMeDOO8ta1pkNArgB60vsfBdTw3yV7gM0La8auKwl7K9AV7CwmNQ+LyhP66KSstSDVD6pQHSvsEFOOwfpgCv3S22GVfuwlF/R7zainVHsM4O16bNcLS1WKcdmPLfweq8dRYO1TP7KkZeYW3XpPgsH1NmrKGOT8ptJ8Skcdy1sLUp23nkEeK+MQI42ZR8sYD7gO5LF6XsrvY0adWu8x8x56bgzopwK5YvRpVazZmiceqiK7kqeAr0Ffg3zaW18+11RAqknz2BT68i143jceYtBDb1FcTH3uWwG8h9mndcAhQE95ugb3lPznnOepzHPObXrNur0aoMeNHgNcf1cJfc1O+i3fPZV5fss6XFLZzw3YY20/qkMfKmAG9LGunX+nBy4G0KcCfZz/XJj8pRn3pQf4/02snszQ3wroYx39UoCfAX1sJC7r92cH9NTmH1JZpj7/UvlmRn2pnn6e97waoI9V/1wAPwP62Eid1+9nC+jz6qa5NpfSAzOgL2Wk5npO6oEZ0JO6ac50KT0wA/pSRmqu56QemAE9qZvmTJfSAzOgL2Wk5npO6oEZ0JO6ac50KT0wA/pSRmqu56QemAE9qZvmTJfSAzOgL2Wk5npO6oH/ATntpnne8w7YAAAAAElFTkSuQmCC" />
会员审核
</view> -->
<view v-if="userType!='4'" @click="goPath('/level/ztx/memberAudit')" >
<image
src="data:image/png;base64,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" />
会员审核
</view>
<!-- 都有 -->
<view @click="goPath('/personalVip/list')">
<image
......@@ -78,14 +82,14 @@
<image :src="config.baseUrl_api+'/fs/static/icon/2.png'" />
会员调动
</view>
<view @click="goPath('/personalVip/feeBill')">
<!-- <view @click="goPath('/personalVip/feeBill')">
<image :src="config.baseUrl_api+'/fs/static/icon/6.png'" />
缴费单
</view>
<view @click="goPath('/personalVip/monthFee')">
<image :src="config.baseUrl_api+'/fs/static/icon/30.png'" />
月结缴费
</view>
</view> -->
<view @click="goPath('/personalVip/changeVip')">
<image :src="config.baseUrl_api+'/fs/static/icon/25.png'" />
会员变更
......@@ -97,19 +101,19 @@
</view>
<view class="ttt">单位会员</view>
<view class="girdBox">
<view @click="goPath('/group/pay')">
<!-- <view @click="goPath('/group/pay')">
<image :src="config.baseUrl_api+'/fs/static/icon/9.png'" />
会员缴费
</view>
<view @click="goPath('/group/apply/applyList')">
</view> -->
<view @click="goPath('/level/ztx/memberAudit')">
<uni-badge class="potag" :text="numData.memberJiaofeiCount" />
<image :src="config.baseUrl_api+'/fs/static/icon/4.png'" />
会员审核
</view>
<view @click="goPath('/group/feeBill')">
<!-- <view @click="goPath('/group/feeBill')">
<image :src="config.baseUrl_api+'/fs/static/icon/17.png'" />会员缴费单
</view>
</view> -->
<view @click="goPath('/group/changeGroupInfo')">
<image :src="config.baseUrl_api+'/fs/static/icon/27.png'" />
信息变更
......@@ -118,6 +122,10 @@
<image :src="config.baseUrl_api+'/fs/static/icon/27.png'" />
审核记录
</view>
<view @click="goPath('/level/ztx/examinationVerification')">
<image :src="config.baseUrl_api+'/fs/static/icon/9.png'" />
考点审核
</view>
</view>
<view class="ttt">级位管理</view>
<view class="girdBox">
......@@ -125,9 +133,9 @@
<uni-badge class="potag" :text="numData.jiCount" />
<image :src="config.baseUrl_api+'/fs/static/icon/3.png'" />考试审核
</view>
<view @click="goPath('/pages/exam/payment?type=1')">
<!-- <view @click="goPath('/pages/exam/payment?type=1')">
<image :src="config.baseUrl_api+'/fs/static/icon/10.png'" />考试缴费单
</view>
</view> -->
<view @click="goPath('/personalVip/changeLevel')">
<image :src="config.baseUrl_api+'/fs/static/icon/26.png'" />
级位变更
......@@ -136,6 +144,10 @@
<image :src="config.baseUrl_api+'/fs/static/icon/27.png'" />
审核记录
</view>
<view @click="goPath('/level/ztx/costSettlement')">
<image :src="config.baseUrl_api+'/fs/static/icon/27.png'" />
费用结算
</view>
</view>
<!-- <view class="ttt">段位管理</view>
......@@ -187,7 +199,7 @@
合并审核
</view>
<view @click="goPath('/personalVip/order?type=0')">
<image :src="config.baseUrl_api+'/fs/static/icon/28.png'" />
<image :src="config.baseUrl_api+'/fs/static/icon/6.png'" />
订单列表
</view>
</view>
......@@ -203,8 +215,12 @@
<image :src="config.baseUrl_api+'/fs/static/icon/27.png'" />
变更审核
</view>
<view @click="goPath('/level/ztx/examinationVerification')">
<image :src="config.baseUrl_api+'/fs/static/icon/9.png'" />
考点审核
</view>
<view @click="goPath('/personalVip/order?type=1')">
<image :src="config.baseUrl_api+'/fs/static/icon/28.png'" />
<image :src="config.baseUrl_api+'/fs/static/icon/6.png'" />
订单列表
</view>
</view>
......@@ -220,12 +236,16 @@
<image :src="config.baseUrl_api+'/fs/static/icon/18.png'" />
证书发布
</view>
<view @click="goPath('/level/ztx/mail')">
<image :src="config.baseUrl_api+'/fs/static/icon/18.png'" />
证书邮寄
</view>
<view @click="goPath('/personalVip/changeLevelAudit')">
<image :src="config.baseUrl_api+'/fs/static/icon/26.png'" />
变更审核
</view>
<view @click="goPath('/personalVip/order?type=2')">
<image :src="config.baseUrl_api+'/fs/static/icon/28.png'" />
<image :src="config.baseUrl_api+'/fs/static/icon/6.png'" />
订单列表
</view>
</view>
......@@ -244,7 +264,7 @@
<image :src="config.baseUrl_api+'/fs/static/icon/20.png'" />证书发布
</view>
<view @click="goPath('/personalVip/order?type=3')">
<image :src="config.baseUrl_api+'/fs/static/icon/28.png'" />
<image :src="config.baseUrl_api+'/fs/static/icon/6.png'" />
订单列表
</view>
</view>
......@@ -263,7 +283,7 @@
<image :src="config.baseUrl_api+'/fs/static/icon/23.png'" />证书发布
</view>
<view @click="goPath('/personalVip/order?type=4')">
<image :src="config.baseUrl_api+'/fs/static/icon/28.png'" />
<image :src="config.baseUrl_api+'/fs/static/icon/6.png'" />
订单列表
</view>
</view>
......@@ -643,3 +663,4 @@
}
}
</style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!