6f6c7894 by lttnew
2 parents 796774f2 4ffcd319
// dev
// const baseUrl_api = 'http://192.168.1.125:8787'
const baseUrl_api = 'https://tk001.wxjylt.com/stage-api/'
const loginImage_api = 'http://tk001.wxjylt.com/stage-api'
const loginImage_api = 'https://tk001.wxjylt.com/stage-api'
const payUrl = 'https://wxpay.cmbc.com.cn/mobilePlatform/appserver/lcbpPay.do'
// prod
......
<template>
<view class="container">
<!-- 自定义弹窗 -->
<custom-modal ref="customModalRef" :title="modalConfig.title" :content="modalConfig.content" :showCancel="modalConfig.showCancel" :cancelText="modalConfig.cancelText" :confirmText="modalConfig.confirmText" @confirm="onModalConfirm" />
<custom-modal ref="customModalRef" :cancelText="modalConfig.cancelText" :confirmText="modalConfig.confirmText"
:content="modalConfig.content" :showCancel="modalConfig.showCancel"
:title="modalConfig.title" @confirm="onModalConfirm"/>
<!-- 考官选择类型 -->
<!-- <view class="radio-section">
<radio-group class="radio-group" @change="onSelfSelectChange">
......@@ -16,23 +18,28 @@
</label>
</radio-group>
</view> -->
<!-- 温馨提示 -->
<view v-if="form.selfSelect == '1'" class="tip-box">
<text class="tip-text">温馨提示: 您可以自行录入考官信息,如果暂时没有合适的考官,也可以选择由省跆协指派(支持多选)进行考点申报,同时请尽快完成考点考官的认证。</text>
<text class="tip-text">温馨提示:
您可以自行录入考官信息,如果暂时没有合适的考官,也可以选择由省跆协指派(支持多选)进行考点申报,同时请尽快完成考点考官的认证。
</text>
</view>
<!-- 省跆协指派提示 -->
<view v-if="form.selfSelect == '0'" class="tip-box">
<text class="tip-text">温馨提示:关于考官指派,请联系{{ shenForm.baseName || '' }},联系电话:{{ shenForm.phone || '' }}</text>
<text class="tip-text">温馨提示:关于考官指派,请联系{{ shenForm.baseName || '' }},联系电话:{{
shenForm.phone || ''
}}
</text>
</view>
<view class="section">
<!-- 自行录入考官区域 -->
<view v-if="form.selfSelect == '1'" class="section examiner-section">
<button class="add-btn" @click="handelAddExamine">+ 添加考官</button>
</view>
<view v-if="form.selfSelect == '1'" class="examiner-list">
<view v-for="(item, index) in list" :key="item.id" class="examiner-item">
<view class="info">
......@@ -56,6 +63,7 @@ import {ref} from 'vue'
import {onLoad, onShow} from '@dcloudio/uni-app'
import * as api from '@/common/api.js'
import customModal from '@/components/custom-modal.vue'
const app = getApp();
const form = ref({
selfSelect: '1' // 1:自行录入 0:省跆协指派
......@@ -85,7 +93,7 @@ onLoad((option) => {
onShow(() => {
// if (memId.value) {
getExaminer()
getExaminer()
// }
getShenMemberInfoFn()
})
......@@ -147,7 +155,7 @@ async function handelSubmit() {
if (form.value.selfSelect == '1' && list.value.length == 0) {
return uni.showToast({title: '请添加考官', icon: 'none'})
}
modalAction = 'success'
modalConfig.value = {
title: '提示',
......@@ -187,7 +195,7 @@ async function onModalConfirm() {
} else if (modalAction === 'submitSuccess') {
uni.navigateBack()
}
modalAction = ''
// modalAction = ''
}
function confirmApply() {
......
<template>
<view class="exam-point-list">
<!-- 顶部申请按钮 -->
<view class="apply-btn-box">
<button class="apply-btn" :disabled="memberInfo.isPoints==0||formInfo.auditStatus==2||formInfo.auditStatus==1" @click="goApply">申请考点</button>
</view>
<!-- 列表 -->
<view class="list-content">
<view v-if="list.length === 0 && !loading" class="empty-tip">
<text>暂无申请记录</text>
</view>
<view
v-for="(item, index) in list"
:key="index"
class="list-item"
:class="{ 'success-row': item.shenAuditStatus == 2 }"
>
<view class="item-row">
<text class="item-label">审核协会</text>
<text class="item-value">{{ item.auditDeptName || '-' }}</text>
</view>
<view class="item-row">
<text class="item-label">审核日期</text>
<text class="item-value">{{ formatDate(item.auditTime) }}</text>
</view>
<view class="item-row">
<text class="item-label">审核状态</text>
<text class="item-status" :class="getStatusClass(item.auditResult)">
{{ item.auditResult == 0 ? '审核未通过' : '审核通过' }}
</text>
</view>
<view class="item-row">
<text class="item-label">理由</text>
<text class="item-value">{{ item.auditMsg ? item.auditMsg : '/' }}</text>
</view>
</view>
<view v-if="loading" class="loading-tip">
<text>加载中...</text>
</view>
<view v-if="noMore && list.length > 0" class="no-more-tip">
<text>没有更多了</text>
</view>
</view>
</view>
<view class="exam-point-list">
<!-- 顶部申请按钮 -->
<view class="apply-btn-box">
<button :disabled="memberInfo.isPoints==0||formInfo.auditStatus==2||formInfo.auditStatus==1" class="apply-btn"
@click="goApply">申请考点
</button>
</view>
<!-- 列表 -->
<view class="list-content">
<view v-if="list.length === 0 && !loading" class="empty-tip">
<text>暂无申请记录</text>
</view>
<view
v-for="(item, index) in list"
:key="index"
:class="{ 'success-row': item.shenAuditStatus == 2 }"
class="list-item"
>
<view class="item-row">
<text class="item-label">审核协会</text>
<text class="item-value">{{ item.auditDeptName || '-' }}</text>
</view>
<view class="item-row">
<text class="item-label">审核日期</text>
<text class="item-value">{{ formatDate(item.auditTime) }}</text>
</view>
<view class="item-row">
<text class="item-label">审核状态</text>
<text :class="getStatusClass(item.auditResult)" class="item-status">
{{ item.auditResult == 1 ? '审核通过' : item.auditResult == 0 ? '审核拒绝' : '待审核' }}
</text>
</view>
<view class="item-row">
<text class="item-label">理由</text>
<text class="item-value">{{ item.auditMsg ? item.auditMsg : '/' }}</text>
</view>
</view>
<view v-if="loading" class="loading-tip">
<text>加载中...</text>
</view>
<view v-if="noMore && list.length > 0" class="no-more-tip">
<text>没有更多了</text>
</view>
</view>
</view>
</template>
<script setup>
import { ref } from 'vue'
import { onLoad, onReachBottom } from '@dcloudio/uni-app'
import { getMyRecentExam } from '@/common/api'
import {ref} from 'vue'
import {onLoad, onReachBottom} from '@dcloudio/uni-app'
import {getMyRecentExam} from '@/common/api'
import {onShow} from "@/unpackage/dist/dev/mp-weixin/common/vendor";
const app = getApp()
const list = ref([])
const loading = ref(false)
......@@ -60,155 +64,161 @@ const pageNum = ref(1)
const pageSize = ref(10)
const memberInfo = app.globalData.memberInfo
const formInfo = ref({})
onShow(() => {
loadData()
})
onLoad(() => {
loadData()
loadData()
})
function loadData() {
if (loading.value) return
loading.value = true
getMyRecentExam().then(res => {
formInfo.value = res.data
if (res.data && res.data.auditLogs) {
try {
list.value = JSON.parse(res.data.auditLogs)
} catch (e) {
list.value = []
}
} else {
list.value = []
}
}).finally(() => {
loading.value = false
})
if (loading.value) return
loading.value = true
getMyRecentExam().then(res => {
formInfo.value = res.data
if (res.data && res.data.auditLogs) {
try {
list.value = JSON.parse(res.data.auditLogs)
} catch (e) {
list.value = []
}
} else {
list.value = []
}
}).finally(() => {
loading.value = false
})
}
onReachBottom(() => {
if (!noMore.value) {
pageNum.value++
loadData()
}
if (!noMore.value) {
pageNum.value++
loadData()
}
})
function goApply() {
uni.navigateTo({
url: '/pages/index/notice-examPointApply'
})
uni.navigateTo({
url: '/pages/index/notice-examPointApply'
})
}
function getStatusClass(status) {
return {
'status-1': status == 0,
'status-2': status != 0,
}
return {
'status-2': status == 1,
'status-1': status == 0,
}
}
function formatDate(dateStr) {
if (!dateStr) return '-'
const date = new Date(dateStr)
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0')
const day = String(date.getDate()).padStart(2, '0')
return `${year}-${month}-${day}`
if (!dateStr) return '-'
const date = new Date(dateStr)
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0')
const day = String(date.getDate()).padStart(2, '0')
return `${year}-${month}-${day}`
}
</script>
<style lang="scss" scoped>
.exam-point-list {
min-height: 100vh;
background: #f5f5f5;
min-height: 100vh;
background: #f5f5f5;
}
.apply-btn-box {
padding: 20rpx 30rpx;
padding: 20rpx 30rpx;
}
.apply-btn {
width: 100%;
height: 80rpx;
line-height: 80rpx;
background: #C4121B;
color: #fff;
font-size: 28rpx;
border-radius: 44rpx;
border: none;
&::after {
border: none;
}
&[disabled] {
background: #f3d4d5 !important;
color: #b7b5b5 !important;
border: 2rpx solid #e0e0e0 !important;
opacity: 1;
}
width: 100%;
height: 80rpx;
line-height: 80rpx;
background: #C4121B;
color: #fff;
font-size: 28rpx;
border-radius: 44rpx;
border: none;
&::after {
border: none;
}
&[disabled] {
background: #f3d4d5 !important;
color: #b7b5b5 !important;
border: 2rpx solid #e0e0e0 !important;
opacity: 1;
}
}
.list-content {
padding: 0 20rpx 20rpx;
padding: 0 20rpx 20rpx;
}
.empty-tip,
.loading-tip,
.no-more-tip {
text-align: center;
padding: 60rpx 0;
color: #999;
font-size: 26rpx;
text-align: center;
padding: 60rpx 0;
color: #999;
font-size: 26rpx;
}
.list-item {
background: #fff;
border-radius: 16rpx;
padding: 24rpx;
margin-bottom: 20rpx;
background: #fff;
border-radius: 16rpx;
padding: 24rpx;
margin-bottom: 20rpx;
}
.list-item.success-row {
border-left: 6rpx solid #19be6b;
border-left: 6rpx solid #19be6b;
}
.item-row {
display: flex;
margin-bottom: 16rpx;
&:last-child {
margin-bottom: 0;
}
display: flex;
margin-bottom: 16rpx;
&:last-child {
margin-bottom: 0;
}
}
.item-label {
width: 140rpx;
font-size: 26rpx;
color: #999;
width: 140rpx;
font-size: 26rpx;
color: #999;
}
.item-value {
flex: 1;
font-size: 26rpx;
color: #333;
flex: 1;
font-size: 26rpx;
color: #333;
}
.item-status {
font-size: 26rpx;
padding: 4rpx 16rpx;
border-radius: 20rpx;
font-size: 26rpx;
padding: 4rpx 16rpx;
border-radius: 20rpx;
}
.status-1 {
background: #fff7e6;
color: #fa8c16;
background: #fff7e6;
color: #fa8c16;
}
.status-2 {
background: #e6fff7;
color: #52c41a;
background: #e6fff7;
color: #52c41a;
}
.status-3 {
background: #fff1f0;
color: #ff4d4f;
background: #fff1f0;
color: #ff4d4f;
}
</style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!