bbc048f7 by lttnew
2 parents 322dceef b9272f18
......@@ -937,6 +937,7 @@ export function auditJi(data) {
params: data
})
}
export function auditDuanExam(data) {
// 基础 URL
let url = `/exam/info/auditDuanExam/${data.ids}?flag=${data.flag}&ids=${data.ids}`;
......@@ -952,6 +953,7 @@ export function auditDuanExam(data) {
params: data
})
}
export function auditDuanScore(data) {
// 基础 URL
let url = `/exam/info/auditDuanScore/${data.ids}?flag=${data.flag}&ids=${data.ids}`;
......@@ -1367,6 +1369,13 @@ export function changeLevelAudit(data) {
})
}
export function changeLevelShenAudit(data) {
return request({
url: `/person/levelModRange/shenAudit/${data.ids}?flag=${data.flag}&reason=${data.reason}`,
method: 'post'
})
}
export function changeLevelWithDraw(data) {
return request({
url: `/person/levelModRange/withDraw/${data}`,
......
// dev
const baseUrl_api = 'http://192.168.1.137:8787'
// const baseUrl_api = 'http://tk001.wxjylt.com/stage-api'
// const baseUrl_api = 'http://192.168.1.137:8787'
const baseUrl_api = 'http://tk001.wxjylt.com/stage-api'
const loginImage_api = 'http://tk001.wxjylt.com/stage-api'
const payUrl = 'https://wxpay.cmbc.com.cn/mobilePlatform/appserver/lcbpPay.do'
......
......@@ -94,11 +94,11 @@ onLoad((option) => {
})
}
})
onShow(() => {
if (app.globalData.isLogin) {
init()
} else {
app.firstLoadCallback = () => {
init()
};
......
......@@ -58,6 +58,10 @@
<image :src="config.baseUrl_api+'/fs/static/icon/3.png'"/>
级位考试申请
</view>
<view @click="goPath('/personalVip/changeLevel')">
<image :src="config.baseUrl_api+'/fs/static/icon/26.png'"/>
级位变更
</view>
</view>
<view v-if="userType=='3'" class="girdBox">
<view @click="goPath('/group/apply/applyList')">
......@@ -133,10 +137,16 @@
<!-- <view @click="goPath('/pages/exam/payment?type=1')">
<image :src="config.baseUrl_api+'/fs/static/icon/10.png'" />考试缴费单
</view> -->
<view @click="goPath('/personalVip/changeLevel')">
<!-- <view @click="goPath('/personalVip/changeLevel')">-->
<!-- <image :src="config.baseUrl_api+'/fs/static/icon/26.png'"/>-->
<!-- 级位变更-->
<!-- </view>-->
<view @click="goPath('/personalVip/changeLevelAudit')">
<image :src="config.baseUrl_api+'/fs/static/icon/26.png'"/>
级位变更
变更审核
</view>
<view @click="goPath('/level/auditRecord2')">
<image :src="config.baseUrl_api+'/fs/static/icon/17.png'"/>
审核记录
......
......@@ -22,7 +22,7 @@
<!-- <image v-if="item.payTime" :src="config.baseUrl_api + '/fs/static/calendar@2x.png'" mode="widthFix" -->
<!-- style="width:30rpx;height:30rpx;"/> -->
<!-- <text v-if="item.payTime" class="date-text">{{ item.payTime }}</text> -->
<text class="value text-primary" >{{ item.wfCode || '——' }}</text>
<text class="value text-primary">{{ item.wfCode || '——' }}</text>
</view>
<view
:class="{
......@@ -124,7 +124,7 @@
<script setup>
import {ref, reactive, onMounted, computed} from 'vue';
import {onReachBottom} from '@dcloudio/uni-app'
import {useUserStore} from "../store/modules/user";
import {useUserStore} from "@/store/modules/user";
import * as api from '@/common/api.js'
import config from '@/config.js'
......@@ -242,7 +242,7 @@ const confirmDel = async () => {
uni.showToast({title: '删除成功', icon: 'success'});
pageNum.value = 1;
list.value = [];
initData();
await initData();
closeDelPopup();
} catch (e) {
uni.showToast({title: '删除失败', icon: 'error'});
......@@ -288,7 +288,7 @@ const confirmCancel = async () => {
uni.showToast({title: '取消成功', icon: 'success'});
pageNum.value = 1;
list.value = [];
initData();
await initData();
closeCancelPopup();
} catch (e) {
uni.showToast({title: '取消失败', icon: 'error'});
......
......@@ -15,7 +15,7 @@
<view class="info-card">
<view class="info-item">
<text class="label">交易流水号</text>
<text class="value">{{ orderInfo.tradeNo||'--' }}</text>
<text class="value">{{ orderInfo.tradeNo || '--' }}</text>
</view>
<view class="info-item">
<text class="label">商户名称</text>
......@@ -35,29 +35,30 @@
</template>
<script setup>
import {
import {
ref
} from 'vue'
import {
} from 'vue'
import {
onLoad
} from '@dcloudio/uni-app'
import to from 'await-to-js'
import * as api from '@/common/api.js'
} from '@dcloudio/uni-app'
import to from 'await-to-js'
import * as api from '@/common/api.js'
const orderInfo = ref({
const orderInfo = ref({
id: '',
tradeNo: '',
merchantName: '中国跆拳道协会',
price: ''
})
})
const goBack = () => {
uni.reLaunch({
url: '/login/login'
const goBack = () => {
uni.redirectTo({
// url: '/login/login'
url: '/personal/order'
})
}
}
onLoad(async (option) => {
onLoad(async (option) => {
if (option.orderId) {
const [err, res] = await to(api.getOrderInfo(option.orderId))
if (!err && res.data) {
......@@ -66,12 +67,12 @@
orderInfo.value.id = option.orderId
}
}
})
})
</script>
<style scoped>
/* 全局容器 */
.success-container {
/* 全局容器 */
.success-container {
display: flex;
flex-direction: column;
align-items: center;
......@@ -79,16 +80,16 @@
min-height: 100vh;
background-color: #f8f9fa;
box-sizing: border-box;
}
}
/* 成功图标容器 */
.success-icon {
/* 成功图标容器 */
.success-icon {
margin-bottom: 40rpx;
animation: fadeIn 0.6s ease-out;
}
}
/* 渐变圆形背景 */
.icon-circle {
/* 渐变圆形背景 */
.icon-circle {
width: 180rpx;
height: 180rpx;
border-radius: 50%;
......@@ -100,34 +101,34 @@
box-shadow: 0 8rpx 30rpx rgba(6, 193, 174, 0.3);
/* 轻微上浮动效 */
animation: scaleIn 0.8s ease-out;
}
}
/* 对勾图标 */
.check-icon {
/* 对勾图标 */
.check-icon {
font-size: 90rpx;
color: #ffffff;
font-weight: bold;
}
}
/* 支付成功标题 */
.success-title {
/* 支付成功标题 */
.success-title {
font-size: 48rpx;
font-weight: 700;
color: #333333;
margin-bottom: 12rpx;
animation: slideUp 0.6s ease-out;
}
}
/* 副标题 */
.success-subtitle {
/* 副标题 */
.success-subtitle {
font-size: 28rpx;
color: #666666;
margin-bottom: 60rpx;
animation: slideUp 0.8s ease-out;
}
}
/* 订单信息卡片 */
.info-card {
/* 订单信息卡片 */
.info-card {
width: 100%;
background: #ffffff;
border-radius: 20rpx;
......@@ -135,55 +136,55 @@
box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.05);
margin-bottom: 80rpx;
animation: fadeIn 1s ease-out;
}
}
/* 单个信息项 */
.info-item {
/* 单个信息项 */
.info-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 24rpx 0;
border-bottom: 1rpx solid #f5f5f5;
}
}
/* 最后一项去掉下划线 */
.info-item:last-child {
/* 最后一项去掉下划线 */
.info-item:last-child {
border-bottom: none;
}
}
/* 标签样式 */
.label {
/* 标签样式 */
.label {
font-size: 32rpx;
color: #666666;
white-space: nowrap;
margin-right: 20rpx;
flex-shrink: 0;
}
}
/* 值样式 */
.value {
/* 值样式 */
.value {
font-size: 32rpx;
color: #333333;
text-align: right;
word-break: break-all;
word-wrap: break-word;
}
}
/* 金额特殊样式 */
.amount {
/* 金额特殊样式 */
.amount {
color: #cd1e27;
font-weight: 600;
}
}
/* 确定按钮区域 */
.confirm-btn-area {
/* 确定按钮区域 */
.confirm-btn-area {
width: 100%;
padding: 0 20rpx;
box-sizing: border-box;
}
}
/* 确定按钮(渐变+动效) */
.confirm-btn {
/* 确定按钮(渐变+动效) */
.confirm-btn {
width: 100%;
height: 90rpx;
line-height: 90rpx;
......@@ -198,20 +199,20 @@
/* 禁止默认样式 */
position: relative;
overflow: hidden;
}
}
/* 按钮点击反馈 */
.confirm-btn::after {
/* 按钮点击反馈 */
.confirm-btn::after {
border: none;
}
}
.confirm-btn:active {
.confirm-btn:active {
transform: scale(0.98);
box-shadow: 0 4rpx 10rpx rgba(6, 193, 174, 0.2);
}
}
/* 动画定义 */
@keyframes fadeIn {
/* 动画定义 */
@keyframes fadeIn {
0% {
opacity: 0;
}
......@@ -219,9 +220,9 @@
100% {
opacity: 1;
}
}
}
@keyframes scaleIn {
@keyframes scaleIn {
0% {
transform: scale(0);
}
......@@ -233,9 +234,9 @@
100% {
transform: scale(1);
}
}
}
@keyframes slideUp {
@keyframes slideUp {
0% {
opacity: 0;
transform: translateY(30rpx);
......@@ -245,5 +246,5 @@
opacity: 1;
transform: translateY(0);
}
}
}
</style>
......
<template>
<view>
<view class="searchbar">
<uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
v-model="queryParams.code" placeholder="搜索变更单号" @blur="getList" @clear="getList">
<uni-easyinput v-model="queryParams.code" :input-border="false" placeholder="搜索变更单号"
placeholderStyle="font-size:30rpx" prefixIcon="search" @blur="getList" @clear="getList">
</uni-easyinput>
</view>
<view class="vipData">
<view>级位变更人数合计: <text>{{statistical.personCount}}</text></view>
<view>级位变更人数合计:
<text>{{ statistical.personCount }}</text>
</view>
</view>
<view class="appList">
<view class="appItem" v-for="(item,index) in list" :key="index">
<view v-for="(item,index) in list" :key="index" class="appItem">
<view class="status" @click="goDetail(item)">
<view>
<text v-if="item.status == 0" class="text-warning">待提交</text>
<text v-if="item.status == 1" class="text-primary">审核中</text>
<text v-if="item.status == 2" class="text-success">审核通过</text>
<text v-if="item.status == 3" class="text-danger">审核拒绝</text>
<text v-if="item.status == 4" class="text-warning">已撤回</text>
<text v-if="userType==1?item.status == 1:item.shenAuditStatus==0" class="text-primary">审核中</text>
<text v-if="userType==1?item.status == 2:item.shenAuditStatus==1" class="text-success">审核通过</text>
<text v-if="userType==1?item.status == 3:item.shenAuditStatus==2" class="text-danger">审核拒绝</text>
<text v-if="userType==1?item.status == 4:item.shenAuditStatus==3" class="text-warning">已撤回</text>
</view>
</view>
<view class="name mt0" @click="goDetail(item)">
<text class="text-primary">{{item.code}}</text>-{{item.shenMemName}}
<text class="text-primary">{{ item.code }}</text>
-{{ item.shenMemName }}
</view>
<view class="flexbox" @click="goDetail(item)">
<view>
变更人数
<view>
<text class="text-danger">{{item.count}}</text>
<text class="text-danger">{{ item.count }}</text>
</view>
</view>
<view class="w50">
提交时间
<view>{{item.commitTime||'--'}}</view>
<view>{{ item.commitTime || '--' }}</view>
</view>
</view>
<view class="func" v-if="item.status==1">
<view v-if="userType==1?item.status == 1:item.shenAuditStatus==0 " class="func">
<button @click="audit(item.id,'0')">拒绝</button>
<button @click="audit(item.id,'1')">同意</button>
</view>
<view class="func" v-if="item.status==2">
<button @click="handleDelete(item)">撤回</button>
</view>
<!-- <view v-if="item.status==2" class="func">-->
<!-- <button @click="handleDelete(item)">撤回</button>-->
<!-- </view>-->
</view>
</view>
<view class="nodata" v-if="list.length==0">
<image mode="aspectFit" :src="config.baseUrl_api + '/fs/static/nodata.png'"></image>
<view v-if="list.length==0" class="nodata">
<image :src="config.baseUrl_api + '/fs/static/nodata.png'" mode="aspectFit"></image>
<text>暂无数据</text>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api.js'
import config from '@/config.js'
import {
import * as api from '@/common/api.js'
import config from '@/config.js'
import {
ref
} from 'vue'
import {
} from 'vue'
import {
onLoad,
onShow
} from '@dcloudio/uni-app'
const app = getApp();
const queryParams = ref({
} from '@dcloudio/uni-app'
import {changeLevelShenAudit} from "@/common/api.js";
const app = getApp();
const queryParams = ref({
code: '',
ztxList: 0
})
const list = ref([])
const statistical = ref({
// shenAuditStatus: 0
})
const list = ref([])
const statistical = ref({
personCount: 0
})
const total = ref(0)
onShow(() => {
})
const total = ref(0)
const userType = ref(2)
onShow(() => {
userType.value = app.globalData.userType
getList()
})
})
function getList() {
function getList() {
uni.showLoading({
title: '加载中'
})
......@@ -88,20 +97,20 @@
total.value = res.total
uni.hideLoading()
})
}
}
function goDetail(item) {
function goDetail(item) {
let path = `/personalVip/changeLevelDetail?rangeId=${item.id}`
uni.navigateTo({
url: path
});
}
}
function handleDelete(row) {
function handleDelete(row) {
uni.showModal({
title: '提示',
content: `确定撤回吗`,
success: function(res) {
success: function (res) {
if (res.confirm) {
api.changeLevelWithDraw([row.id]).then(Response => {
uni.showToast({
......@@ -113,16 +122,16 @@
}
}
})
}
}
function audit(id, flag) {
function audit(id, flag) {
if (flag == 0) {
// 拒绝
// 弹出框填写理由
uni.showModal({
title: '请输入拒绝理由',
editable: true,
success: function(res) {
success: function (res) {
if (res.confirm) {
if (!res.content) {
uni.showToast({
......@@ -140,17 +149,17 @@
uni.showModal({
title: '提示',
content: `确定审批通过吗`,
success: function(res) {
success: function (res) {
if (res.confirm) {
doApproval(id, flag)
}
}
})
}
}
}
function doApproval(id, flag, reason) {
var obj = {
async function doApproval(id, flag, reason) {
let obj = {
flag: flag,
reason: reason || '',
ids: [id]
......@@ -159,19 +168,23 @@
uni.showLoading({
title: '加载中'
})
api.changeLevelAudit(obj).then((res) => {
if (userType.value == 1) {
await api.changeLevelAudit(obj)
} else {
await api.changeLevelShenAudit(obj)
}
uni.hideLoading()
uni.showToast({
title: '操作成功',
icon: 'none'
})
getList()
})
}
}
</script>
<style lang='scss' scoped>
.searchbar {
.searchbar {
display: flex;
align-items: center;
padding: 25rpx;
......@@ -194,5 +207,5 @@
font-size: 30rpx;
padding: 10rpx 20rpx;
}
}
}
</style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!