81c73ed4 by 杨炀

no message

1 parent e0673ad0
......@@ -257,6 +257,25 @@ function uploadFile(e) {
}).finally(() => {
uni.hideLoading();
});
}
// muit
function uploadFileList(path) {
uni.showLoading({
title: '加载中'
});
return uni.uploadFile({
url: config.baseUrl_api + '/upload/uploadFileToLocalServer',
filePath: path,
name: 'file',
header: {
'Authorization': uni.getStorageSync('token')
}
}).then(res => {
let data = JSON.parse(res.data);
return data.msg
}).finally(() => {
uni.hideLoading();
});
}
// 查询考级信息列表
function getLevelList(query) {
......@@ -450,6 +469,13 @@ function delPayment(payIds) {
method: 'DELETE'
})
}
function delcertified(ids) {
return request({
url: `/member/certified/${ids}`,
method: 'delete'
})
}
function editYear(id, year) {
return request({
url: `/person/payment/editYear/${id}`,
......@@ -457,6 +483,14 @@ function editYear(id, year) {
params: { year: year }
})
}
function editGroupYear(data) {
return request({
url: `/member/certified/editCertRenewYear/${data.certId}/${data.renewYear}`,
method: 'post',
params:data
})
}
function addPersonPaymentGroup(data) {
return request({
url: `/person/payment/addPersonPaymentGroup`,
......@@ -529,6 +563,30 @@ function paymentList(query) {
params: query
})
}
function getPaymentDetailsByPayId(payId) {
return request({
url: '/exam/payment/paymentDetailsByPayId',
method: 'get',
params: {
payId: payId
}
})
}
function getMySonList(data) {
return request({
url: '/member/info/getMySonList',
method: 'get',
params: data
})
}
function addGroupPaymentGroup(data) {
return request({
url: `/member/certifiedRange/addRangeMulti/${data.memIds}/${data.rangeId}`,
method: 'post',
params: data
})
}
export {
......@@ -575,8 +633,11 @@ export {
getFillAuditLog,commitGroupPay,getGroupFeeBill,
groupCommitPaymentVoucher,getFeeBillById,
personalCommit,
delPayment,editYear,addPersonPaymentGroup,
delPayment,editYear,editGroupYear,addPersonPaymentGroup,
commitRenew,getVerityMergeList,doMergeFlows,getMergePaymentInfo,
submitCert,getCertsLList,getExamListByPayId,
certStudentList,paymentList
certStudentList,paymentList,
getPaymentDetailsByPayId,getMySonList,
addGroupPaymentGroup,
delcertified,uploadFileList,editLevel
}
\ No newline at end of file
......
......@@ -50,3 +50,15 @@ export function submitCert(data) {
params: data
})
}
/**
* 段位考试成绩列表
* @param params
* @returns {*}
*/
export function getRankScoreList(params) {
return request({
url: '/exam/info/rank/scoreList',
method: 'get',
params: params
})
}
......
import request from './request.js'
import config from '@/config.js'
function getTrainList(venueId) {
return request({
url: `/train/info/list`,
method: 'get'
})
}
function getActivityDetail(id) {
return request({
url: `/logex/activity/${id}`,
method: 'get',
params: id
})
}
function getActivityHotelList(params) {
return request({
url: `/logex/activityHotel/list`,
method: 'get',
params: params
})
}
function getHotelById(id) {
return request({
url: `/logex/hotel/${id}`,
method: 'get',
params: id
})
}
function getHotelRooms(id) {
return request({
url: `/logex/activityRoom/list?hotelId=${id}`,
method: 'get',
params: id
})
}
function getbilllist(userId,venueId) {
return request({
url: `/logex/order/list?createById=${userId}&venueId=${venueId}`,
method: 'get',
params: userId
})
}
function newbilllist(userId,venueId) {
return request({
url: `/logex/norder/list?createById=${userId}&venueId=${venueId}`,
method: 'get',
params: userId
})
}
function getCanInvoiceBills(params) {
return request({
url: `/logex/norder/list?activeId=${params.activeId}&createById=${params.userId}&invoiced=1&venueId=${params.venueId}`,
method: 'get'
})
}
function getbilldetailbyId(orderId) {
return request({
// url: `/logex/order/${orderId}`,
url: `/logex/norder/${orderId}`,
method: 'get',
params: orderId
})
}
function getFoodBilldetailbyId(orderId) {
return request({
url: `/logex/orderFood/getFoodOrderInfoByOrder?orderId=${orderId}`,
method: 'get'
})
}
function getRoomBilldetailbyId(orderId) {
return request({
url: `/logex/orderRoom/getRoomOrderInfoByOrderId?orderId=${orderId}`,
method: 'get'
})
}
function getCarBilldetailbyId(orderId) {
return request({
url: `/logex/norder/getOrderByOrderId?orderId=${orderId}`,
method: 'get'
})
}
function getInvoiceByActiveId(activeId,userId,venueId) {
return request({
url: `/logex/invoice/list?activeId=${activeId}&createById=${userId}&venueId=${venueId}`,
method: 'get'
})
}
function getInvoiceByUserId(userId,venueId) {
return request({
url: `/logex/invoice/list?createById=${userId}&venueId=${venueId}`,
method: 'get'
})
}
function getInvoiceDetailBills(invoiceId) {
return request({
url: `/logex/norder/list?invoiceId=${invoiceId}`,
method: 'get'
})
}
function getInvoiceDetail(invoiceId) {
return request({
url: `/logex/invoice/${invoiceId}`,
method: 'get'
})
}
function submitOrder(data) {
return request({
url: `/logex/order/submitOrder`,
method: 'post',
params: data
})
}
// 退款
function cancelOrder(orderId) {
return request({
// url: `/logex/norder/unSubscribeOrderBack/${orderId}`,
url: `/logex/norder/applyOrderBack/${orderId}`,
method: 'post',
params: orderId
})
}
// 取消
function cancelOrder2(orderId) {
return request({
url: `/logex/norder/cancelOrderBack//${orderId}`,
method: 'post',
params: orderId
})
}
function payForOrder(orderId) {
const nowOpenId = uni.getStorageSync('nowOpenId');
return request({
// url: `/logex/order/payForOrder?orderId=${orderId}&openId=${nowOpenId}`,
url: `/logex/norder/payForOrder?orderId=${orderId}&openId=${nowOpenId}`,
method: 'post',
params: orderId
})
}
function submitInvoice(form) {
return request({
url: `/logex/invoice`,
method: 'post',
params: form
})
}
function editInvoice(form) {
return request({
url: `/logex/invoice`,
method: 'put',
params: form
})
}
function addAddress(form) {
return request({
url: `/logex/invoiceInfo`,
method: 'post',
params: form
})
}
function checkResidueRoom(form) {
return request({
url: `/logex/orderRoom/checkResidueRoom`,
method: 'post',
params: form
})
}
function delAddress(ids) {
return request({
url: `/logex/invoiceInfo/${ids}`,
method: 'delete'
})
}
function regionsList() {
return request({
url: `/systemj/region/regionsList`,
method: 'get'
})
}
function addressList() {
const currUser = uni.getStorageSync('currUser');
return request({
url: `/logex/invoiceInfo/list?createById=${currUser.userId}`,
method: 'get'
})
}
function getActivityRestaurantList(params) {
return request({
url: `/logex/activityRestaurant/list`,
method: 'get',
params: params
})
}
function getActivityCarList(params) {
return request({
url: `/logex/activityVehicle/wxList`,
method: 'get',
params: params
})
}
function getMenuById(id) {
return request({
url: `/logex/activityFood/list?larId=${id}`,
method: 'get'
})
}
function submitOrderFood(form) {
return request({
url: `/logex/norder/submitOrderFood`,
method: 'post',
params: form
})
}
function submitOrderCar(form) {
return request({
url: `/logex/norder/submitOrderCar`,
method: 'post',
params: form
})
}
function newsSubmitOrderHotel(form) {
return request({
url: `/logex/norder/submitOrderRoom`,
method: 'post',
params: form
})
}
export {getTrainList,getActivityHotelList,getActivityDetail,getHotelById,getHotelRooms,submitOrder,getbilllist,getbilldetailbyId,
payForOrder,cancelOrder,getCanInvoiceBills,submitInvoice,getInvoiceByActiveId,getInvoiceDetailBills,
getInvoiceDetail,getInvoiceByUserId,editInvoice,addAddress,regionsList,addressList,delAddress,
checkResidueRoom,getActivityRestaurantList,getMenuById,
submitOrderFood,getActivityCarList,submitOrderCar,newsSubmitOrderHotel,newbilllist,
getFoodBilldetailbyId,getRoomBilldetailbyId,getCarBilldetailbyId,
cancelOrder2
}
\ No newline at end of file
......@@ -3,12 +3,18 @@ page {
overflow: auto;
background: #f5f7f9;
}
.h3 {font-weight: bold;line-height: 2;}
.text-center{text-align: center;}
.w50{width: 50%;}
.w45{width: 45%;}
.w100{width: 100%;}
.must{color: #AD181F;font-size: 24rpx;}
.vipData .w50{width: 45%;}
.esp{text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}
.flex{display: flex;}
.flexbox{display: flex;}
.mt30{margin-top: 30rpx;}
.mb30{margin-bottom: 30rpx;}
.mtb30{margin: 30rpx 0;}
.mt40{margin-top: 40rpx;}
.mt50{margin-top: 50rpx;}
......@@ -347,18 +353,18 @@ color: #7D8592;}
.bgbg{padding:0 0 60rpx;color: #fff;background:url('/static/top_bg.png') #C40F18 no-repeat top;
background-size: cover;
position: relative;}
.girdBox{display: flex;flex-wrap: wrap;padding: 0 0 40rpx;
.girdBox{display: flex;flex-wrap: wrap;padding:30rpx 0;
background: #FFFFFF;position: relative;top: -30rpx;
border-radius: 20rpx 20rpx 0rpx 0rpx;
view{width: 25%;text-align: center;
view{width: 25%;text-align: center; padding: 2% 0;
font-size: 24rpx;
color: #434343;
image{width: 20vw;height: 20vw;display: block;margin: auto;}
image{width: 80rpx;height: 80rpx;display: block;margin: auto;}
}
}
.block-btn-box{padding: 30rpx;
.btn-red-kx{line-height: 2;font-size: 30rpx;}
}
.block-btn-box{padding: 30rpx;
.btn-red-kx{line-height: 2;font-size: 30rpx;}
}
......
import request from './request.js'
const accountInfo = uni.getAccountInfoSync()
const appId = accountInfo.miniProgram.appId;
// 获取培训列表
function tainList(params) {
return request({
url: `/systemj/information/applets/trainsList`,
method: 'get',
params: params
})
}
// 查看培训项目
function trainParticulars(params) {
return request({
url: '/systemj/information/getTrainDetails',
method: 'get',
params: params
})
}
// 查看培训项目
function trainProjectList(params) {
return request({
url: '/systemj/information/projectList',
method: 'get',
params: params
})
}
// 查看报名费用(未支付前)
function searchTrainCost(params) {
return request({
url: '/systemj/signer/getEnrollBill',
method: 'get',
params: params
})
}
// 提交 用户资料
function trainNext(params) {
return request({
url: `/systemj/signer/signUp`,
method: 'post',
params,
})
}
// 生成订单
function createOrder(params) {
return request({
url: `/systemj/order/saveOrder`,
method: 'post',
params,
})
}
//会员支付
function pay(params) {
return request({
url: `/systemj/order/pay`,
method: 'post',
params,
})
}
// 线下支付银行信息
function bankSlip(params) {
return request({
url: `/systemj/order/bankInfo`,
method: 'get',
params,
})
}
function trainOrder(params) {
return request({
url: `/systemj/order/getMyOrders`,
method: 'get',
params,
})
}
// 修改报名
function trainUpdata(params) {
return request({
url: `/systemj/signer/updateSign`,
method: 'put',
params,
})
}
// 取消订单
function cancelOrder(params) {
return request({
url: `/systemj/order/cancelOrder`,
method: 'put',
params,
})
}
// 报项列表
function signList(params) {
return request({
url: `/systemj/signer/applets/signList`,
method: 'get',
params,
})
}
// 报项详情
function signDetail(params) {
return request({
url: `/systemj/signer/applets/signDetail`,
method: 'get',
params,
})
}
// 订单列表
function orderList(params) {
return request({
url: `/systemj/order/applets/orderList`,
method: 'get',
params,
})
}
// 订单详情
function getOrderDetail(params) {
return request({
url: `/systemj/order/getOrderDetail`,
method: 'get',
params,
})
}
export {
getOrderDetail,
orderList,
signDetail,
signList,
tainList,
trainParticulars,
trainProjectList,
searchTrainCost,
trainNext,
createOrder,
pay,
bankSlip,
trainOrder,
trainUpdata,
cancelOrder
}
\ No newline at end of file
......@@ -5,8 +5,7 @@
// staging
// const baseUrl_api = "http://22yidpjzjifv.ngrok.xiaomiqiu123.top/stage-api/";
const baseUrl_api = "http://192.168.1.95:8787";
const fileUrl_api = "http://192.168.1.11:8787";
export default {
baseUrl_api,fileUrl_api
baseUrl_api
}
\ No newline at end of file
......
......@@ -137,7 +137,12 @@
"navigationBarTitleText": "会员列表",
"enablePullDownRefresh": false
}
}, {
"path": "pages/group/vipList",
"style": {
"navigationBarTitleText": "会员列表",
"enablePullDownRefresh": false
}
}, {
"path": "pages/personalVip/list",
"style": {
......@@ -460,6 +465,42 @@
}
}
,{
"path" : "pages/exam/score",
"style" :
{
"navigationBarTitleText": "成绩录入",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/group/addGroupMemberPay",
"style" :
{
"navigationBarTitleText": "添加缴费",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/exam/scoreModify",
"style" :
{
"navigationBarTitleText": "成绩维护",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/index/more",
"style" :
{
"navigationBarTitleText": "菜单",
"enablePullDownRefresh": false
}
}
],
"globalStyle": {
"navigationStyle": "custom",
......
......@@ -2,7 +2,7 @@
<view>
<!-- 级/段/越段考试缴费单 -->
<view class="appList">
<view class="vipData" v-show="totalCost>0">
<view class="vipData mb30" v-show="totalCost>0">
<view>费用合计:<text>{{ totalCost.toFixed(2) }}</text></view>
</view>
<view class="appItem" v-for="item in list">
......@@ -12,15 +12,13 @@
<text v-if="item.verityStatus==2" class="text-danger"> 审核拒绝</text>
<text v-if="item.verityStatus==3" class="text-warning">已退回</text>
</view>
<view class="date" @click="goDetail(item)" v-if="item.payTime">
<view class="date" @click="goDetail(item)" v-if="item.submitTime">
<uni-icons type="calendar" size="16" color="#7D8592"></uni-icons>
<text>{{item.payTime}} 缴费</text>
<text>{{item.submitTime}} 创建</text>
</view>
<view class="name" @click="goDetail(item)">{{item.name}}</view>
<view v-if="deptType==1" class="date">
<text>{{item.payNoticeSendTime}} 下发</text>
</view>
<view class="flexbox" @click="goDetail(item)">
<view>
缴费状态
......@@ -191,9 +189,9 @@
}
function goDetail(item) {
//详情
console.log(item.docId)
let path = `/pages/group/feeBillDetail?docId=${item.docId}`
//详情
const form = encodeURIComponent(JSON.stringify(item))
let path = `/pages/exam/paymentDetail?form=${form}&type=${queryParams.value.type}`
uni.navigateTo({
url: path
});
......
<template>
<view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
</style>
<template>
<view>
<view class="wBox">
<view class="tt">基本信息</view>
<view class="ddd">
<text class="lab">结算编号:</text>{{ form.flowCode }}
</view>
<view class="ddd">
<text class="lab">{{ type=='1'?'考级名称':'考段名称' }}</text>{{form.mergeName}}
</view>
<view class="ddd">
<text class="lab">申请单位:</text>{{ form.memName }}
</view>
<view class="ddd" v-if="form.mergeTime">
<text class="lab">申请日期:</text>{{form.mergeTime?.slice(0,10)}}
</view>
<view class="ddd">
<text class="lab">{{ type=='1'?'考级人数':'考段人数' }}</text>{{form.totalNum}}
</view>
<view class="ddd">
<text class="lab">总金额:</text>¥{{ (form.totalAmount*1).toFixed(2) }}
</view>
</view>
<view class="wBox">
<view class="tt">
考试信息
</view>
<view class="userlist">
<view class="item" v-for="n in infoList" @click="goDetail(n)" style="background-color: #fffafa;">
<view class="w100">
<view class="name">{{n.name}}</view>
<!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> -->
<view class="flexbox">
<view>
上报单位
<text>{{n.memberName}}</text>
</view>
<view>
{{type=='1'?'考级考生数':'考段考生数'}}
<text>
{{n.totalNum}}
</text>
</view>
<view>
金额
<text class="text-danger">¥{{ (n.totalAmount*1).toFixed(2) }}</text>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api.js'
import config from '@/config.js'
import _ from 'lodash'
import {
onMounted,
ref
} from 'vue'
import {
onLoad
} from '@dcloudio/uni-app'
const app = getApp();
const queryParams = ref({
recordId: ''
})
const payId = ref('')
const list = ref([])
const form = ref({})
const infoList = ref([])
const deptType = ref()
const type = ref(null)
let rangeId = ''
onLoad((option) => {
type.value = option.type
if ('form' in option) {
var obj = JSON.parse(decodeURIComponent(option.form))
form.value.flowCode = obj.payCode
form.value.mergeName = obj.name
form.value.memName = obj.memberName
form.value.mergeTime = obj.submitTime
form.value.totalNum = Math.floor(obj.totalNum)
form.value.totalAmount = Math.floor(obj.totalAmount)
payId.value = obj.payId
}
if (app.globalData.isLogin) {
init()
} else {
app.firstLoadCallback = () => {
init()
};
}
})
function init() {
deptType.value = app.globalData.deptType
getForm()
}
function getForm() {
uni.showLoading({
title: '加载中'
})
api.getPaymentDetailsByPayId(payId.value).then(res => {
infoList.value = res.data
uni.hideLoading()
})
}
function goDetail(item) {
// examId
if(type.value = '1'){
let path = `/pages/level/applyDetail?examId=${item.examId}`
uni.navigateTo({
url: path
});
} else {
let path = `/pages/rank/applyDetail?examId=${item.examId}`
uni.navigateTo({
url: path
});
}
}
</script>
<style scoped lang="scss">
.wBox {
width: 700rpx;
padding: 30rpx;
margin: 20rpx auto;
background: #FFFFFF;
box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
border-radius: 15rpx;
.tt {
color: #0A1629;
margin: 0 0 30rpx;
font-size: 30rpx;
}
.ddd {
font-size: 28rpx;
color: #333;
.lab {
color: #999;
display: inline-block;
text-align: justify;
text {
word-break: break-all;
}
}
}
}
</style>
\ No newline at end of file
......
<template>
<view>
<!-- <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
styleType="text" activeColor="#AD181F"></uni-segmented-control> -->
<!-- 成绩录入 -->
<view class="appList">
<view class="appItem" v-for="item in infoList" :key="item.recordId" >
<view @click="goDetail(item)">
<view class="status" >
<text :class="{
'text-primary':item.scoreStatus=='0',
'text-success':item.scoreStatus=='2',
'text-danger':item.scoreStatus=='3',
'text-warning':item.scoreStatus=='4'
}">{{ item.scoreStatusStr }}</text>
</view>
<view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
<view class="name mt0" >{{item.name}}</view>
<view class="pp esp">考段日期:{{item.startTime?.substring(0,16)}}{{item.endTime?.substring(0,16)}}</view>
<view class="flexbox" >
<view>
申请日期
<view>{{item.applyTime?.substring(0, 10)}}</view>
</view>
<view>
考段考生数
<view>{{item.totalNum||'--'}}</view>
</view>
<view>
总金额
<view><text class="text-danger">¥{{(item.totalAmount*1).toFixed(2)}}</text></view>
</view>
</view>
</view>
<!-- <view class="func" v-if="(item.scoreStatus=='0'||item.scoreStatus=='3' || item.scoreStatus=='4')&& item.rankStatus == '1'">
<button @click="scoreEdit(item)">成绩维护</button>
</view> -->
</view>
</view>
<view class="nodata" v-if="infoList.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
</view>
</template>
<script setup>
import * as examApi from '@/common/api_exam.js'
import _ from 'lodash'
import { ref } from 'vue'
import { onLoad,onShow } from '@dcloudio/uni-app'
const app = getApp();
const queryParams = ref({
status: '0',
rankStatus:'1'
})
const current = ref()
const navs = ref(['审核中', '审核通过', '审核拒绝'])
const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
const deptType = ref('')
const infoList = ref([])
const total = ref(0)
onLoad((options)=>{
queryParams.value.type=options.type
})
onShow(() => {
if (app.globalData.isLogin) {
init()
} else {
app.firstLoadCallback = () => {
init()
};
}
})
function init(){
uni.showLoading({
title: '加载中'
})
deptType.value = app.globalData.deptType
getList()
}
function onClickItem(e) {
uni.showLoading({
title: '加载中'
})
queryParams.value.status = e.currentIndex
getList()
}
function getList() {
examApi.getRankScoreList(queryParams.value).then(res => {
infoList.value = res.rows
total.value = res.total
uni.hideLoading()
})
}
function scoreEdit(item) {
console.log(item.sourceData)
var obj = {
flag: flag,
reason: null,
id: item.recordId
}
if (flag == '2') {
// 拒绝
// 弹出框填写理由
uni.showModal({
title: '请输入拒绝理由',
editable: true,
success: function(res) {
if (res.confirm) {
if (!res.content) {
uni.showToast({
title: '请输入拒绝理由',
icon: 'none'
})
} else {
obj.reason = res.content
doApproval(obj)
}
}
}
})
} else if (flag == '1') {
// 二次确认
uni.showModal({
title: '提示',
content: `确定审批通过吗`,
success: function(res) {
if (res.confirm) {
doApproval(obj)
}
}
})
}
}
function doApproval(obj) {
examApi.doMergeFlows(obj).then((res) => {
uni.showToast({
title: '操作成功',
icon: 'none'
})
getList()
})
}
function goDetail(item) {
let path = `/pages/rank/applyDetail?examId=${item.examId}`
uni.navigateTo({
url: path
});
}
</script>
<style lang="scss" scoped>
</style>
<template>
<view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
</style>
<template>
<view class="hasfixedbottom">
<view class="searchbar" style="justify-content: center;">
<view class="invertedbtn-red" @click="gochose">+ 在线选择</view>
</view>
<uni-swipe-action>
<uni-swipe-action-item class="personitem" v-for="n in list">
<view class="content-box">
<view style="width: 70%;">
<view>{{n.memberName}}
<view class="date">
团体类型:
<text v-if="n.deptType == 2">一级协会</text>
<text v-if="n.deptType == 3">直属协会</text>
<text v-if="n.deptType == 4">二级协会</text>
<text v-if="n.deptType == 5">三级协会</text>
<text v-if="n.deptType == 6">职业性团体会员</text>
</view>
<view class="date">原有效期:<text>{{n.validityTime?.slice(0,10)}}</text></view>
</view>
<view class="flexbox">
<view>
单价 <view>¥{{n.unitPrice}}</view>
</view>
<view>
总价 <view>
<text class="text-danger">¥{{n.allPrice}}</text>
</view>
</view>
</view>
</view>
<view class="flex" @click="changeYear(n)">
<view class="text-danger">({{yearlist[n.renewYear-1].text}})</view>
<uni-icons type="forward" size="18" color="#999"></uni-icons>
</view>
</view>
<template v-slot:right>
<view class="slot-button">
<view @click="handleDelete(n)">
<uni-icons type="trash-filled" color="#fff" size="20"></uni-icons>
<text class="slot-button-text">删除</text>
</view>
</view>
</template>
</uni-swipe-action-item>
</uni-swipe-action>
<view class="nodata" v-if="list.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<button class="btn-red" @click="gochose">+ 在线选择</button>
</view>
<view class="fixedBottom">
<button class="btn-red" :disabled="list?.length <= 0" @click="commitFN">保存并提交</button>
</view>
<uni-popup ref="pickView" type="bottom">
<view class="pickViewBox">
<view v-for="n in yearlist" @click="bindyear(n)">
{{n.text}}<uni-icons v-show="n.value == (nowYear)" type="checkmarkempty" size="20"
color="green"></uni-icons>
</view>
</view>
</uni-popup>
</view>
</template>
<script setup>
import {
ref
} from 'vue'
import {
onShow,
onLoad
} from '@dcloudio/uni-app'
import * as api from '@/common/api.js'
import config from '@/config.js'
const app = getApp()
const queryParams = ref({
rangeId: 0
})
const formData = ref({})
const list = ref({})
const total = ref(0)
const nowYear = ref(1)
const nowItem = ref({})
const pickView = ref(null)
const visible = ref(true)
const yearlist = ref([{
text: '一年',
value: 1
}, {
text: '二年',
value: 2
}, {
text: '三年',
value: 3
}, {
text: '四年',
value: 4
}, {
text: '五年',
value: 5
}])
onLoad((option) => {
if (option.rangeId) {
queryParams.value.rangeId = option.rangeId
}
})
onShow(() => {
if (app.globalData.isLogin) {
init()
} else {
app.firstLoadCallback = () => {
init()
};
}
})
function init() {
getList()
}
function getList() {
api.getPayList(queryParams.value).then(res => {
list.value = []
res.rows.forEach(item => {
if (item.rangeId == queryParams.value.rangeId) {
list.value = item.certList
formData.value = item
return
}
})
})
}
function gochose() {
let path = `/pages/group/vipList?rangeId=${queryParams.value.rangeId}`
uni.redirectTo({
url: path
});
}
function changeYear(e) {
nowItem.value = e
nowYear.value = e.renewYear
pickView.value.open()
}
function bindyear(n) {
nowYear.value = n.value
pickView.value.close()
nowItem.value.renewYear = n.value
api.editGroupYear({certId:nowItem.value.certId, renewYear:nowItem.value.renewYear}).then(res => {
for (var nn of list.value) {
if (nn.perId == nowItem.value.perId) {
nn.renewYear = nowItem.value.renewYear
}
}
getList()
})
}
function handleDelete(row) {
uni.showModal({
title: '提示',
content: `确定删除${row.memberName}吗`,
success: function(res) {
if (res.confirm) {
api.delcertified([row.certId]).then(res => {
uni.showToast({
title: '删除成功'
})
if (list.value.length == 1) {
queryParams.value.rangeId = 0
}
getList()
})
}
}
})
}
function commitFN() {
if (queryParams.value.rangeId == 0) return
api.commitGroupPay(queryParams.value.rangeId).then(res => {
uni.showToast({
title: '提交成功'
})
uni.navigateBack()
})
}
</script>
<style scoped lang="scss">
.pickViewBox {
background-color: #fff;
text-align: center;
view {
line-height: 3;
}
}
.searchbar {
display: flex;
align-items: center;
padding: 25rpx;
box-sizing: border-box;
.invertedbtn-red {
margin-left: 15rpx;
font-size: 30rpx;
width: 100%;
padding: 16rpx 20rpx;
text-align: center;
box-sizing: border-box;
background-color: #fff;
}
:deep(.uni-easyinput .uni-easyinput__content) {
border-radius: 35rpx;
border: none;
height: 70rpx;
}
:deep(.uni-easyinput__content-input) {
font-size: 26rpx;
}
}
.slot-button {
display: flex;
align-items: center;
padding: 0 20px;
text-align: center;
background-color: #E60012;
}
.slot-button-text {
color: #ffffff;
display: block;
font-size: 14px;
}
.personitem {
background: #fff;
box-sizing: border-box;
margin-bottom: 30rpx;
.content-box {
display: flex;
align-items: center;
padding: 16rpx;
border-radius: 15rpx;
justify-content: space-between;
.noborder {
border: none;
:deep(.uni-select) {
border: none;
text-align: right;
}
}
}
.flexbox {
align-items: center;
font-size: 28rpx;
color: #91929E;
view {
font-size: 26rpx;
width: 40%;
display: inline-block;
margin-top: 10rpx;
view {
color: #0A1629;
font-size: 28rpx;
}
}
}
&:nth-child(3n) .colorful {
background: #014A9F;
}
&:nth-child(3n+1) .colorful {
background: #AD181F;
}
&:nth-child(3n+2) .colorful {
background: #D3B267;
}
}
.colorful {
width: 100rpx;
margin-right: 14rpx;
height: 100rpx;
line-height: 100rpx;
font-size: 44rpx;
color: #fff;
text-align: center;
border-radius: 50%;
}
</style>
\ No newline at end of file
<template>
<view>
<!-- 会员认证 -->
<!-- <view class="searchbar">
<view class="searchbar">
<uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
v-model="queryParams.rangeName" placeholder="缴费名称" @blur="getList" @clear="getList">
</uni-easyinput>
<view class="invertedbtn-red" @click="goAddPay">+ 新建缴费</view>
</view> -->
<view class="invertedbtn-red" v-if="userType=='2'" @click="goAddPay">+ 新建缴费</view>
</view>
<view class="appList">
<view class="appItem" v-for="item in list">
<view class="status" @click="goDetail(item)">
......@@ -32,10 +32,9 @@
<view>{{item.totalRenewYear}}</view>
</view>
</view>
<view class="func" v-if="item?.content?.status == 0">
<button
@click="commitFN(item)">提交审核</button>
<view class="func" v-if="item.content?.status==0||item.content?.status==3||item.content?.status==4">
<button @click="handleUpdate(item)">编辑</button>
<button v-if="item.content?.status==0" @click="commitFN(item)">提交审核</button>
</view>
</view>
</view>
......@@ -54,12 +53,12 @@
ref
} from 'vue'
import {
onLoad
onLoad,onShow
} from '@dcloudio/uni-app'
const app = getApp();
const list = ref([])
const queryParams = ref({})
const deptType = ref('')
const userType = ref('')
const UpPop = ref(null)
const form = ref({
docId:'',
......@@ -67,7 +66,7 @@
url:'',
remark:''
})
onLoad(() => {
onShow(() => {
if (app.globalData.isLogin) {
init()
} else {
......@@ -79,7 +78,7 @@
})
function init() {
deptType.value = app.globalData.deptType
userType.value = app.globalData.userType
getList()
}
......@@ -111,7 +110,21 @@
uni.navigateTo({
url: path
});
}
}
function goAddPay(){
let path = `/pages/group/addGroupMemberPay`
uni.navigateTo({
url: path
});
}
function handleUpdate(row){
let path = `/pages/group/addGroupMemberPay?rangeId=${row.rangeId}`
uni.navigateTo({
url: path
});
}
</script>
<style scoped lang="scss">
......
<template>
<view class="hasfixedbottom">
<view class="hasfixedbottom">
<view class="h3-padding">成员信息</view>
<view class="wBox">
<!-- 成员 -->
<view class="userlist">
<view class="item" v-for="n in list">
<view style="width: 100%">
......
<template>
<view class="hasfixedbottom">
<view class="searchbar">
<uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
v-model="queryParams.name" placeholder="团体会员名称" @blur="getList()" @clear="getList()">
</uni-easyinput>
</view>
<view class="indexboxre">
<view class="tt">会员列表</view>
<!-- <uni-indexed-list :options="list" :showSelect="true" @click="bindClick"></uni-indexed-list> -->
<view class="userlist">
<view class="item" v-for="n in list">
<view @click="checkThis(n)" v-if="n.canCommit">
<image class="icon" v-if="n.checked" src="@/static/member/dx_dwn.png" />
<image class="icon" v-else src="@/static/member/dx.png" />
</view>
<!-- <view class="photobox">
<image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image>
<view class="colorful" v-else>{{n.name.slice(0,1)}}</view>
</view> -->
<view>
<view class="name">{{n.name}}
</view>
<view class="name">
<text v-if="n.deptType == 2">一级协会</text>
<text v-if="n.deptType == 3">直属协会</text>
<text v-if="n.deptType == 4">二级协会</text>
<text v-if="n.deptType == 5">三级协会</text>
<text v-if="n.deptType == 6">职业性团体会员</text>
</view>
<view class="date">到期时间:{{n.validityDate?.slice(0,10)}}</view>
</view>
</view>
</view>
</view>
<view class="fixedBottom">
<button class="btn-red" @click="handleImport">导 入</button>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api.js'
import config from '@/config.js'
import {
ref,
getCurrentInstance
} from 'vue'
import {
onLoad
} from '@dcloudio/uni-app'
const {
proxy
} = getCurrentInstance()
const app = getApp();
const queryParams = ref({
showMyPersonFlag: 1,
checkPaymentCommit: 1,
queryParams: 1
})
const list = ref([])
const total = ref(0)
const userType = ref('')
onLoad((option) => {
userType.value = app.globalData.userType
queryParams.value.paymentRangeId = option.rangeId
getList()
})
function getList() {
api.getMySonList(queryParams.value).then(res => {
list.value = res.data
total.value = res.data.length
})
}
function checkThis(n){
if(n.checked){
n.checked = false
}else{
n.checked = true
}
}
function handleImport(){
var arr=[]
for(var n of list.value){
if(n.checked){
arr.push(n.memId)
}
}
if(arr.length==0){
uni.showToast({
title:"请选择团体",
icon:"none"
})
return
}
api.addGroupPaymentGroup({ rangeId: queryParams.value.paymentRangeId, memIds: arr.join(',') }).then(res=>{
let path = `/pages/group/addGroupMemberPay?rangeId=${res.data}`
uni.redirectTo({
url: path
});
})
}
</script>
<style scoped lang="scss">
.indexboxre {
padding: 0 30rpx;
.tt {
font-size: 30rpx;
margin: 0 0 30rpx;
color: #4C5359;
}
position: relative;
height: calc(100vh - 280rpx);overflow: auto;
}
.searchbar {
display: flex;
align-items: center;
padding: 25rpx;
box-sizing: border-box;
:deep(.uni-easyinput .uni-easyinput__content) {
border-radius: 35rpx;
border: none;
height: 70rpx;
}
:deep(.uni-easyinput__content-input) {
font-size: 26rpx;
}
}
</style>
\ No newline at end of file
<template>
<view class="page">
<view class="bgbg">
<view class="loginOutIcon" @click="loginOut">
<image src="@/static/switch.png"></image>
<view class="bgbg">
<view class="loginOutIcon" @click="loginOut">
<image src="@/static/switch.png"></image>
</view>
<view class="welcome">您好!
{{memberInfo.name}}
......@@ -11,94 +11,103 @@
<view class="flexbox">
<!-- userType 1:中跆协 2:省 3:市区 4:道馆-->
<!-- 4 -->
<view v-if="userType=='4'" @click="goAddVip">
<image src="@/static/btn01.png"/>
添加会员</view>
<view v-if="userType=='4'" @click="goPath('/pages/personalVip/payment')">
<image src="@/static/btn02.png"/>
会员缴费</view>
<view v-if="userType=='4'" @click="goAddVip">
<image src="@/static/btn01.png" />
添加会员
</view>
<view v-if="userType=='4'" @click="goPath('/pages/personalVip/payment')">
<image src="@/static/btn02.png" />
会员缴费
</view>
<!-- 3 2 1-->
<view v-if="userType!='4'" @click="goPath('/pages/personalVip/audit')">
<image src="@/static/btn03.png"/>
缴费审核</view>
<view v-if="userType!='4'" @click="goPath('/pages/personalVip/audit')">
<image src="@/static/btn03.png" />
缴费审核
</view>
<!-- 都有 -->
<view @click="goPath('/pages/personalVip/list')">
<image src="@/static/btn04.png"/>
会员查询</view>
<view v-if="userType!='4'" @click="goPath('/pages/group/list')">
<image src="@/static/btn05.png"/>团体会员
</view>
<view @click="goPath('/pages/personalVip/list')">
<image src="@/static/btn04.png" />
会员查询
</view>
<view v-if="userType!='4'" @click="goPath('/pages/group/list')">
<image src="@/static/btn05.png" />团体会员
</view>
</view>
</view>
<view class="girdBox">
<view v-if="userType!='3'" @click="goPath('/pages/personalVip/mobilize')">
<image />
<view v-if="userType=='4'" class="girdBox">
<view @click="goPath('/pages/personalVip/mobilize')">
<image src="@/static/icon/1.png" />
会员调动
</view>
<view v-if="userType=='2'" @click="goPath('/pages/personalVip/feeBill')">
<image />会员缴费单</view>
<view v-if="userType!='4'" @click="goPath('/pages/group/apply/applyList')">
<image />团体会员审核
<view @click="goPath('/pages/level/apply')">
<image src="@/static/icon/3.png" />级位考试申请
</view>
<view v-if="userType=='2'" @click="goPath('/pages/group/pay')">
<image />团体会员认证
</view>
<view v-if="userType=='3'" class="girdBox">
<view @click="goPath('/pages/group/apply/applyList')">
<image src="@/static/icon/4.png" />团体会员审核
</view>
<view v-if="userType=='2'" @click="goPath('/pages/group/feeBill')">
<image />团体会员缴费单
<view @click="goPath('/pages/level/approval')">
<image src="@/static/icon/3.png" />级位考试审核
</view>
<view v-if="userType=='4'" @click="goPath('/pages/level/apply')">
<image />级位考试申请
</view>
<view v-if="userType=='2'" class="girdBox">
<view @click="goPath('/pages/personalVip/mobilize')">
<image src="@/static/icon/2.png" />
会员调动审核
</view>
<view v-if="userType!='4'&&userType!='1'" @click="goPath('/pages/level/approval')">
<image />级位考试审核
<view @click="goPath('/pages/personalVip/feeBill')">
<image src="@/static/icon/6.png" />会员缴费单
</view>
<view v-if="userType=='2'" @click="goPath('/pages/level/apply')">
<image />段位考试申请
<view @click="goPath('/pages/group/apply/applyList')">
<image src="@/static/icon/4.png" />团体会员审核
</view>
<view v-if="userType=='2'" @click="goPath('/pages/exam/payment?type=1')">
<image />级位考试缴费单
<view @click="goPath('/pages/group/pay')">
<image src="@/static/icon/9.png" />团体会员认证
</view>
<view v-if="userType=='2'" @click="goPath('/pages/exam/payment?type=2')">
<image />段位考试缴费单
<view @click="goPath('/pages/group/feeBill')">
<image src="@/static/icon/17.png" />团体会员缴费单
</view>
<view v-if="userType=='2'" @click="goPath('/pages/exam/payment?type=3')">
<image />越段考试缴费单
<view @click="goPath('/pages/level/approval')">
<image src="@/static/icon/3.png" />级位考试审核
</view>
<view @click="goPath('/pages/exam/payment?type=1')">
<image src="@/static/icon/10.png" />级位考试缴费单
</view>
<view @click="goPath('/pages/index/more')">
<image src="@/static/icon/m.png" />更多
</view>
</view>
<view v-if="userType=='1'" class="girdBox">
<view @click="goPath('/pages/level/ztx/approval')">
<image />级位考试审核
<view v-if="userType=='1'" class="girdBox">
<view @click="goPath('/pages/personalVip/mobilize')">
<image src="@/static/icon/2.png" />
会员调动审核
</view>
<view @click="goPath('/pages/level/ztx/cert?type=1')">
<image />级位证书发布
<view @click="goPath('/pages/group/apply/applyList')">
<image src="@/static/icon/4.png" />团体会员审核
</view>
<view @click="goPath('/pages/level/ztx/approval')">
<image src="@/static/icon/2.png" />级位考试审核
</view>
<view @click="goPath('/pages/level/ztx/cert?type=1')">
<image src="@/static/icon/18.png" />级位证书发布
</view>
<view @click="goPath('/pages/rank/approval?type=2')">
<image />段位考试审核
<image src="@/static/icon/19.png" />段位考试审核
</view>
<view @click="goPath('/pages/rank/scoreApproval?type=2')">
<image />考段成绩审核
<image src="@/static/icon/19.png" />考段成绩审核
</view>
<view @click="goPath('/pages/level/ztx/cert?type=2')">
<image />考段证书发布
</view>
<view @click="goPath('/pages/rank/approval?type=3')">
<image />越段考试审核
</view>
<view @click="goPath('/pages/rank/scoreApproval?type=3')">
<image />越段成绩审核
</view>
<view @click="goPath('/pages/level/ztx/cert?type=3')">
<image />越段证书发布
<image src="@/static/icon/20.png" />考段证书发布
</view>
<view @click="goPath(`/pages/index/more?userType=${userType}`)">
<image src="@/static/icon/m.png" />更多
</view>
</view>
<uni-section title="待办提醒" padding>
......@@ -162,12 +171,23 @@
proId = option.proId;
}
});
function loginOut(){
let path = '/pages/index/login';
uni.reLaunch({
url: path
});
function loginOut() {
uni.showModal({
content: `确认退出吗?`,
success: function(res) {
if (res.confirm) {
let path = '/pages/index/login';
uni.reLaunch({
url: path
});
}
}
})
}
function goPath(path) {
uni.navigateTo({
url: path
......@@ -228,6 +248,9 @@
}
function getMes() {
uni.showLoading({
title: '加载中'
});
api.getMessage({
pageNum: 1,
pageSize: 10
......@@ -273,11 +296,12 @@
break
case 50001:
d.name = '你有一条新的个人会员申请,点击去处理!'
d.path = '/pages/personalVip/approvalList'
d.path = '/pages/personalVip/list'
break
}
}
messageList.value = res.rows
uni.hideLoading();
})
}
......@@ -316,10 +340,18 @@
}
</script>
<style scope lang="scss">
.loginOutIcon{position: absolute;right: 30rpx;top: 30rpx;
image{width: 50rpx;height: 50rpx;}
<style scope lang="scss">
.loginOutIcon {
position: absolute;
right: 30rpx;
top: 30rpx;
image {
width: 50rpx;
height: 50rpx;
}
}
.welcome {
padding: 55rpx;
line-height: 55rpx;
......@@ -328,8 +360,15 @@
.flexbox {
display: flex;
justify-content: space-around;text-align: center;
image{width: 90rpx;height: 90rpx;display: block;margin: auto;}
justify-content: space-around;
text-align: center;
image {
width: 90rpx;
height: 90rpx;
display: block;
margin: auto;
}
}
.image {
......@@ -372,7 +411,11 @@
}
:deep(.uni-section .uni-section-header__content) {
font-size: 36rpx;
font-size: 44rpx;
font-weight: bold;
color: #29343C;
}
:deep(.uni-section .uni-section-header){
padding: 0 30rpx;
}
</style>
\ No newline at end of file
......
<template>
<view>
<view v-if="userType=='1'" class="girdBox f3">
<view @click="goPath('/pages/rank/approval?type=3')">
<image src="@/static/icon/21.png" />越段考试审核
</view>
<view @click="goPath('/pages/rank/scoreApproval?type=3')">
<image src="@/static/icon/22.png" />越段成绩审核
</view>
<view @click="goPath('/pages/level/ztx/cert?type=3')">
<image src="@/static/icon/23.png" />越段证书发布
</view>
</view>
<view class="girdBox" v-if="userType=='2'">
<view @click="goPath('/pages/rank/apply?type=2')">
<image src="@/static/icon/11.png" />段位考试申请
</view>
<view @click="goPath('/pages/exam/payment?type=2')">
<image src="@/static/icon/13.png" />段位考试<br />缴费单
</view>
<view @click="goPath('/pages/exam/score?type=2')">
<image src="@/static/icon/12.png" />段位考试<br />成绩录入
</view>
<view @click="goPath('/pages/rank/apply?type=3')">
<image src="@/static/icon/14.png" />越位考试<br />申请
</view>
<view @click="goPath('/pages/exam/payment?type=3')">
<image src="@/static/icon/16.png" />越段考试<br />缴费单
</view>
<view @click="goPath('/pages/exam/score?type=3')">
<image src="@/static/icon/15.png" />越段考试<br />成绩录入
</view>
</view>
</view>
</template>
<script setup>
import {
onShow,onLoad
} from '@dcloudio/uni-app'
import {
ref
} from 'vue'
const app = getApp()
const userType = ref()
onLoad((option)=>{
userType.value = option.userType
})
function goPath(path) {
uni.navigateTo({
url: path
});
}
</script>
<style scoped lang="scss">
.girdBox {
display: flex;
flex-wrap: wrap;
padding: 30rpx 0;
background: #FFFFFF;
margin: 50rpx;
border-radius: 20rpx;
view {
width: 25%;
text-align: center;
padding: 2% 0;
font-size: 24rpx;
color: #434343;
image {
width: 80rpx;
height: 80rpx;
display: block;
margin: auto;
}
}
}
.f3{
view {
width:33%;}
}
</style>
\ No newline at end of file
<template>
<view>
<view class="searchbar">
<uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
v-model="queryParams.name" placeholder="搜索考级名称" @blur="getList" @clear="getList">
</uni-easyinput>
<view class="invertedbtn-red" @click="goAdd">+ 添加级位考试</view>
</view>
<view class="appList">
<view class="appItem" v-for="item in list">
<view class="status" @click="goDetail(item)">
<text :class="{
'text-primary':item.status=='1',
'text-success':item.status=='2',
'text-danger':item.status=='3',
'text-warning':item.status=='4'
}">{{ item.statusStr }}</text>
</view>
<view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
<view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
<view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
<view class="flexbox" @click="goDetail(item)">
<view>
申请日期
<view>{{item.applyTime.substring(0, 10)}}</view>
</view>
<view>
申请单位
<view>{{item.memberName}}</view>
</view>
<view>
通过人数
<view>{{item.pass}}</view>
</view>
</view>
<view class="func" v-if="item.status=='0'||item.status=='3'||item.status=='4'">
<button @click="editThis(item)">编辑</button>
<button @click="handleSubmit(item)">提交审核</button>
</view>
</view>
</view>
<view class="nodata" v-if="list.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
</view>
</template>
<template>
<view>
<view class="searchbar">
<uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
v-model="queryParams.name" placeholder="搜索考级名称" @blur="getList" @clear="getList">
</uni-easyinput>
<view class="invertedbtn-red" @click="goAdd">+ 添加级位考试</view>
</view>
<view class="appList">
<view class="appItem" v-for="item in list">
<view class="status" @click="goDetail(item)">
<text v-if="item.status=='0'" class="text-primary">{{ item.statusStr }}</text>
<text v-if="item.status=='1'" class="text-primary">{{ item.statusStr }}</text>
<text v-if="item.status=='2'" class="text-success">{{ item.statusStr }}</text>
<text v-if="item.status=='3'" class="text-danger">{{ item.statusStr }}</text>
<text v-if="item.status=='4'" class="text-warning">{{ item.statusStr }}</text>
</view>
<view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
<view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
<view class="pp esp">申请单位:{{item.memberName}}</view>
<view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
<view class="flexbox" @click="goDetail(item)">
<view>
申请日期
<view>{{item.applyTime.substring(0, 10)}}</view>
</view>
<view>
考官
<view>{{item.examinerNames}}</view>
</view>
<view>
通过人数
<view>{{item.pass}}</view>
</view>
</view>
<view class="func" v-if="item.status=='0'||item.status=='3'||item.status=='4'">
<button @click="editThis(item)">编辑</button>
<button @click="handleSubmit(item)">提交审核</button>
</view>
</view>
</view>
<view class="nodata" v-if="list.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api.js'
import config from '@/config.js'
......@@ -64,8 +63,8 @@
const app = getApp();
const queryParams = ref({
// pageNum: 1,
// pageSize: 10
type: '1',
// pageSize: 10
type: '1',
rankStatus: '0'
})
const navs = ref(['未提交', '审核中', '审核通过', '审核拒绝'])
......@@ -117,45 +116,48 @@
url: path
});
}
function handleSubmit(item){
uni.showModal({
title: '提示',
content: `确定提交${item.name}进行审核吗`,
success: function(res) {
if (res.confirm) {
uni.showLoading({
title:`提交中`
})
upApply(item.examId)
}
}
})
function handleSubmit(item) {
uni.showModal({
title: '提示',
content: `确定提交${item.name}进行审核吗`,
success: function(res) {
if (res.confirm) {
uni.showLoading({
title: `提交中`
})
upApply(item.examId)
}
}
})
}
function upApply(id){
api.submitVerity(id).then(res=>{
uni.hideLoading()
getList()
uni.showToast({
title:`提交成功`
})
})
function upApply(id) {
api.submitVerity(id).then(res => {
uni.hideLoading()
getList()
uni.showToast({
title: `提交成功`
})
})
}
function goDetail(item) {
if(item.status!='0'){
let path = `/pages/level/applyDetail?examId=${item.examId}`
uni.navigateTo({
url: path
});
} else {
return
function goDetail(item) {
if (item.status != '0') {
let path = `/pages/level/applyDetail?examId=${item.examId}`
uni.navigateTo({
url: path
});
} else {
// 去编辑
editThis(item)
}
}
</script>
<style scoped>
.searchbar {
display: flex;
......@@ -190,4 +192,4 @@
width: 80%;
word-break: break-all;
}
</style>
</style>
\ No newline at end of file
......
......@@ -14,7 +14,7 @@
</view>
<view>
<view class="name">{{n.name}}</view>
<view class="date">会员号:{{n.perCode}}</view>
<view class="date">会员号:{{n.perCode||'-'}}</view>
</view>
<view class="status">
<text v-if="checkChosen(n)">选择</text>
......
......@@ -18,7 +18,7 @@
<text class="lab">{{ type=='1'?'考级人数':'考段人数' }}</text>{{form.totalNum}}
</view>
<view class="ddd">
<text class="lab">总金额:</text>{{ (form.totalAmount*1).toFixed(2) }}
<text class="lab">总金额:</text>¥{{ (form.totalAmount*1).toFixed(2) }}
</view>
</view>
<view class="wBox">
......@@ -41,12 +41,7 @@
{{n.totalNum}}
</text>
</view>
<view v-if="app.globalData.showPrice">
金额
<text>
{{ (n.examFee * 1).toFixed(2) }}
</text>
</view>
<view>
金额
<text class="text-danger">¥{{ (n.totalAmount*1).toFixed(2) }}</text>
......
<template>
<view class="mainbox">
<view class="photobox">
<image class="photo" v-if="form.photo" :src="config.fileUrl_api + form.photo" mode='widthFix'></image>
<image class="photo" v-if="form.photo" :src="config.baseUrl_api + form.photo" mode='widthFix'></image>
<view class="colorful" v-else>{{form.name?.slice(0,1)}}</view>
</view>
<uni-list>
<uni-list-item title="姓名" :rightText="form.name"/>
......@@ -14,11 +13,12 @@
<uni-list-item title="所属一级协会" :rightText="form.topAssName"/>
<uni-list-item title="所属地区协会" :rightText="form.areaAssName"/>
<uni-list-item title="注册团体会员" :rightText="form.memName"/>
<uni-list-item title="缴费日期" :rightText="form.payDate"/>
<uni-list-item title="缴费日期" :rightText="form.payDate||'--'"/>
<uni-list-item title="出生日期" :rightText="form.birth?.slice(0,10)"/>
<uni-list-item title="手机号码" :rightText="form.phone"/>
<uni-list-item title="所在地区" :rightText="form.cityId"/>
<uni-list-item title="详细地址" :rightText="form.address"/>
<uni-list-item title="所在地区" :rightText="form.cityStr"/>
<uni-list-item title="详细地址" :rightText="form.address||'--'"/>
</uni-list>
</view>
......@@ -46,10 +46,25 @@
form.value.topAssName = form.value?.ancestorNameList?.[0]
form.value.areaAssName = form.value?.ancestorNameList?.[1]
form.value.memName = res.data.memName
if(form.value.cityId){
getRegionsList(form.value.cityId)
}
})
})
function getRegionsList(cityId){
api.regionsList().then(res=>{
for(var m of res.data){
for(var n of m.children){
for(var o of n.children){
if(o.value == cityId){
form.value.cityStr = m.text + n.text + o.text
}
}
}
}
})
}
</script>
<style scoped lang="scss">
......
......@@ -20,7 +20,7 @@
</view>
</view>
<view class="flexbox">
<text v-if="n.certStage==0" class="text-green">
<text v-if="n.certStage==0" class="text-primary">
新会员
</text>
<text v-if="n.certStage==1" class="text-warning">
......@@ -29,7 +29,7 @@
<text v-if="n.certStage==2" class="text-red">
缴费中
</text>
<text v-if="n.certStage==3">
<text v-if="n.certStage==3" class="text-success">
正常
</text>
<text v-if="n.certStage==4" class="text-gray">
......@@ -97,12 +97,6 @@
query.value.showMyPersonFlag = 1
}
api.selectPageList(query.value).then(res => {
for (var p of res.rows) {
if (p.photo) {
p.photo = config.fileUrl_api + p.photo
console.log(p.photo)
}
}
list.value = res.rows
total.value = res.total
})
......
......@@ -2,9 +2,9 @@
<view>
<view class="searchbar">
<uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
v-model="queryParams.name" placeholder="搜索考名称" @blur="getList" @clear="getList">
v-model="queryParams.name" placeholder="搜索考名称" @blur="getList" @clear="getList">
</uni-easyinput>
<view class="invertedbtn-red" @click="goAdd">+ 添加级位考试</view>
<!-- <view class="invertedbtn-red" @click="goAdd">+ 添加段位考试</view> -->
</view>
<view class="appList">
<view class="appItem" v-for="item in list">
......@@ -30,8 +30,8 @@
<view>{{item.memberName}}</view>
</view>
<view>
通过人
<view>{{item.pass}}</view>
考生
<view>{{item.totalNum||0}}</view>
</view>
</view>
<view class="func" v-if="item.status=='0'||item.status=='3'||item.status=='4'">
......@@ -73,8 +73,8 @@
const list = ref([])
const total = ref(0)
const deptType = ref('')
onLoad(() => {
onLoad((option) => {
queryParams.value.type = option.type
})
onShow(() => {
if (app.globalData.isLogin) {
......@@ -144,7 +144,7 @@
function goDetail(item) {
if(item.status!='0'){
let path = `/pages/level/applyDetail?examId=${item.examId}`
let path = `/pages/rank/applyDetail?examId=${item.examId}&type=${queryParams.value.type}`
uni.navigateTo({
url: path
});
......
......@@ -49,7 +49,7 @@
<text v-else>--</text>
</view>
<view>
考试级别
考试段位
<text v-if="n.levelNew">{{ szToHz(n.levelNew) }}段/品</text>
<text v-else>--</text>
</view>
......@@ -88,7 +88,7 @@
</view>
<!-- <view class="name">{{index+1}}</view> -->
<view class="deptName">{{n.deptName}}</view>
<view v-if="n.auditStatus==2">
<view v-if="n.reason">
备注:{{n.reason||'' }}
</view>
</view>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!