3a51a1cd by 张猛

团体支付考点

1 parent dbdf4c4c
......@@ -3,130 +3,143 @@ import config from '@/config.js'
// 激活
export function active(data) {
return request({
url: `/member/info/active/${data.memId}`,
method: 'post',
params: data
})
return request({
url: `/member/info/active/${data.memId}`,
method: 'post',
params: data
})
}
export function getBlack() {
return request({
url: '/member/info/check',
method: 'get'
})
return request({
url: '/member/info/check',
method: 'get'
})
}
export function commitPaymentVoucherYJ(data) {
return request({
url: '/person/paymentDocYj/commitPaymentVoucher',
method: 'post',
params: data
})
return request({
url: '/person/paymentDocYj/commitPaymentVoucher',
method: 'post',
params: data
})
}
export function editMyMemberCertifiedInfo(data) {
return request({
url: '/system/dept/editMyMemberCertifiedInfo',
method: 'post',
params: data
})
return request({
url: '/system/dept/editMyMemberCertifiedInfo',
method: 'post',
params: data
})
}
export function addMergeToRange(params) {
return request({
url: `/person/infoMerge/addMergeToRange/${params.perIds}?perId=${params.perIds}&rangeIdStr=${params.rangeIdStr}`,
method: 'post',
params: params
})
return request({
url: `/person/infoMerge/addMergeToRange/${params.perIds}?perId=${params.perIds}&rangeIdStr=${params.rangeIdStr}`,
method: 'post',
params: params
})
}
export function mergerVipAudit(params) {
console.log(params)
return request({
url: `/person/infoMergeRange/audit/${params.ids}?flag=${params.flag}&reason=${params.reason}`,
method: 'post',
params: params
})
console.log(params)
return request({
url: `/person/infoMergeRange/audit/${params.ids}?flag=${params.flag}&reason=${params.reason}`,
method: 'post',
params: params
})
}
export function infoMergeRangeList(params) {
return request({
url: `/person/infoMergeRange/list`,
method: 'get',
params: params
})
return request({
url: `/person/infoMergeRange/list`,
method: 'get',
params: params
})
}
export function infoMergeMod(id) {
return request({
url: `/person/infoMerge/${id}`,
method: 'delete'
})
return request({
url: `/person/infoMerge/${id}`,
method: 'delete'
})
}
export function commitMergeVip(ids) {
return request({
url: `/person/infoMergeRange/commit/${ids}`,
method: 'post'
})
return request({
url: `/person/infoMergeRange/commit/${ids}`,
method: 'post'
})
}
export function delPersonalMerge(ids) {
return request({
url: `/person/infoMergeRange/${ids}`,
method: 'delete'
})
return request({
url: `/person/infoMergeRange/${ids}`,
method: 'delete'
})
}
export function infoMergeList(params) {
return request({
url: `/person/infoMerge/list`,
method: 'get',
params: params
})
return request({
url: `/person/infoMerge/list`,
method: 'get',
params: params
})
}
export function editMergeByOldIdc(params) {
return request({
url: `/person/infoMerge/editMergeByOldIdc/${params.mergeId}?mergeId=${params.mergeId}&idcCode=${params.idcCode}`,
method: 'post',
params: params
})
return request({
url: `/person/infoMerge/editMergeByOldIdc/${params.mergeId}?mergeId=${params.mergeId}&idcCode=${params.idcCode}`,
method: 'post',
params: params
})
}
export function editMergeByFile(params) {
return request({
url: `/person/infoMerge/editMergeByFile/${params.mergeId}?mergeId=${params.mergeId}&fileUrl=${encodeURIComponent(params.fileUrl)}`,
method: 'post',
params: params
})
return request({
url: `/person/infoMerge/editMergeByFile/${params.mergeId}?mergeId=${params.mergeId}&fileUrl=${encodeURIComponent(params.fileUrl)}`,
method: 'post',
params: params
})
}
// 通知公告
export function notice(query) {
return request({
url: '/system/note/notice',
method: 'get',
params: query
})
return request({
url: '/system/note/notice',
method: 'get',
params: query
})
}
export function getNewsById(noteId) {
return request({
url: `/system/note/${noteId}`,
method: 'get'
})
return request({
url: `/system/note/${noteId}`,
method: 'get'
})
}
// 协会树
export function certifiedDeptTree(params) {
return request({
url: '/system/user/certifiedDeptTreeWithNoDaoguan',
method: 'get',
params: params
})
return request({
url: '/system/user/certifiedDeptTreeWithNoDaoguan',
method: 'get',
params: params
})
}
// 查询部门下拉树结构
export function deptTreeSelect(params) {
return request({
url: '/system/user/certifiedDeptTree',
method: 'get',
params: params
}).then((res) => {
setIdToString(res.data)
return res
})
return request({
url: '/system/user/certifiedDeptTree',
method: 'get',
params: params
}).then((res) => {
setIdToString(res.data)
return res
})
}
// 注册选择协会树
export function certifiedDeptTreeRegister(params) {
return request({
......@@ -135,204 +148,216 @@ export function certifiedDeptTreeRegister(params) {
params
})
}
const setIdToString = (list) => {
for (var l of list) {
l.id += ''
l.parentId += ''
if (l.children && l.children.length > 0) {
setIdToString(l.children)
}
}
for (var l of list) {
l.id += ''
l.parentId += ''
if (l.children && l.children.length > 0) {
setIdToString(l.children)
}
}
}
// 会员认证
export function centerCommit(data) {
return request({
url: `/member/certified/commit`,
method: 'post',
params: data
})
return request({
url: `/member/certified/commit`,
method: 'post',
params: data
})
}
export function updateUserProfile(data) {
return request({
url: '/system/user/profile',
method: 'put',
params: data
})
return request({
url: '/system/user/profile',
method: 'put',
params: data
})
}
export function createMyMember(data) {
return request({
url: '/member/info/createMyMember',
method: 'post',
params: data
})
return request({
url: '/member/info/createMyMember',
method: 'post',
params: data
})
}
export function updateUserPwd(data) {
return request({
url: `/system/user/profile/updatePwd?oldPassword=${encodeURIComponent(data.oldPassword)}&newPassword=${encodeURIComponent(data.newPassword)}`,
method: 'put',
params: data
})
return request({
url: `/system/user/profile/updatePwd?oldPassword=${encodeURIComponent(data.oldPassword)}&newPassword=${encodeURIComponent(data.newPassword)}`,
method: 'put',
params: data
})
}
export function getMessage(params) {
return request({
url: '/common/home/getMessage',
method: 'get',
params: params
})
return request({
url: '/common/home/getMessage',
method: 'get',
params: params
})
}
export function reader(query) {
return request({
url: '/common/home/readMessage',
method: 'get',
params: query
})
return request({
url: '/common/home/readMessage',
method: 'get',
params: query
})
}
export function regionsList(params) {
return request({
url: '/common/region/regionsList',
method: 'get',
params
})
return request({
url: '/common/region/regionsList',
method: 'get',
params
})
}
// 添加会员自动录入 上传图片
export function carUrl(data, type) {
return uni.uploadFile({
url: `${config.baseUrl_api}/person/info/getPersonInfoFromCert/${type}`,
// header: {
// 'Authorization': uni.getStorageSync('token'),
// 'Content-Language': 'zh_CN',
// 'Accept-Language': 'zh-CN,zh',
// },
name: 'pic',
filePath: data
}).then(res => {
return JSON.parse(res.data)
})
// return request({
// url: `/person/info/getPersonInfoFromCert/${type}`,
// method: 'post',
// params: data
// })
return uni.uploadFile({
url: `${config.baseUrl_api}/person/info/getPersonInfoFromCert/${type}`,
// header: {
// 'Authorization': uni.getStorageSync('token'),
// 'Content-Language': 'zh_CN',
// 'Accept-Language': 'zh-CN,zh',
// },
name: 'pic',
filePath: data
}).then(res => {
return JSON.parse(res.data)
})
// return request({
// url: `/person/info/getPersonInfoFromCert/${type}`,
// method: 'post',
// params: data
// })
}
// 添加会员信息
export function addPersonToMyDept(data) {
return request({
url: '/person/info/addPersonToMyDept',
method: 'post',
params: data
})
return request({
url: '/person/info/addPersonToMyDept',
method: 'post',
params: data
})
}
export function insertSinglePay(data) {
return request({
url: '/person/paymentNew/insertSinglePay',
method: 'post',
params: data
})
return request({
url: '/person/paymentNew/insertSinglePay',
method: 'post',
params: data
})
}
// 提交人工审核
export function addPersonCommit(data) {
return request({
url: `/system/input/commit?fileUrl=${data.fileUrl}`,
method: 'post',
params: data
})
return request({
url: `/system/input/commit?fileUrl=${data.fileUrl}`,
method: 'post',
params: data
})
}
export function getZtxFeeConfig() {
return request({
url: '/system/config/getZtxFeeConfig',
method: 'get'
})
return request({
url: '/system/config/getZtxFeeConfig',
method: 'get'
})
}
// 图片上传
export function uploadImg(e) {
const tempFilePaths = e.tempFilePaths;
const imgUrl = tempFilePaths[0]
uni.showLoading({
title: '加载中'
});
return uni.uploadFile({
url: config.baseUrl_api + '/upload/uploadImgToLocalServer',
header: {
'Authorization': uni.getStorageSync('token'),
},
filePath: imgUrl,
name: 'image'
}).then(res => {
let data = JSON.parse(res.data);
return data
}).finally(() => {
uni.hideLoading();
});
const tempFilePaths = e.tempFilePaths;
const imgUrl = tempFilePaths[0]
uni.showLoading({
title: '加载中'
});
return uni.uploadFile({
url: config.baseUrl_api + '/upload/uploadImgToLocalServer',
header: {
'Authorization': uni.getStorageSync('token'),
},
filePath: imgUrl,
name: 'image'
}).then(res => {
let data = JSON.parse(res.data);
return data
}).finally(() => {
uni.hideLoading();
});
}
// corp
export function uploadImgCorp(tempFilePath) {
const imgUrl = tempFilePath
uni.showLoading({
title: '加载中'
});
return uni.uploadFile({
url: config.baseUrl_api + '/upload/uploadImgToLocalServer',
header: {
'Authorization': uni.getStorageSync('token'),
},
filePath: imgUrl,
name: 'image'
}).then(res => {
let data = JSON.parse(res.data);
return data
}).finally(() => {
uni.hideLoading();
});
const imgUrl = tempFilePath
uni.showLoading({
title: '加载中'
});
return uni.uploadFile({
url: config.baseUrl_api + '/upload/uploadImgToLocalServer',
header: {
'Authorization': uni.getStorageSync('token'),
},
filePath: imgUrl,
name: 'image'
}).then(res => {
let data = JSON.parse(res.data);
return data
}).finally(() => {
uni.hideLoading();
});
}
//only for addVip photoUp
export function uploadImgCorpPhoto(tempFilePath) {
const imgUrl = tempFilePath
uni.showLoading({
title: '加载中'
});
return uni.uploadFile({
url: config.baseUrl_api + '/upload/uploadImgToLocalServerCaiJian',
header: {
'Authorization': uni.getStorageSync('token'),
},
filePath: imgUrl,
name: 'image'
}).then(res => {
let data = JSON.parse(res.data);
return data
}).finally(() => {
uni.hideLoading();
});
const imgUrl = tempFilePath
uni.showLoading({
title: '加载中'
});
return uni.uploadFile({
url: config.baseUrl_api + '/upload/uploadImgToLocalServerCaiJian',
header: {
'Authorization': uni.getStorageSync('token'),
},
filePath: imgUrl,
name: 'image'
}).then(res => {
let data = JSON.parse(res.data);
return data
}).finally(() => {
uni.hideLoading();
});
}
export function getInfo(perId) {
return request({
url: '/person/info/' + perId,
method: 'get'
})
return request({
url: '/person/info/' + perId,
method: 'get'
})
}
// 查询个人会员信息列表
export function selectPageList(query) {
return request({
url: '/person/info/selectPageList',
method: 'get',
params: query
})
return request({
url: '/person/info/selectPageList',
method: 'get',
params: query
})
}
export function delInfo(perId) {
return request({
// url: '/person/info/' + perId,
url: '/person/info/clearOwner/' + perId,
method: 'POST'
})
return request({
// url: '/person/info/' + perId,
url: '/person/info/clearOwner/' + perId,
method: 'POST'
})
}
// 查询个人个人会员缴费列表
// export function getPaymentList(query) {
// return request({
......@@ -342,19 +367,20 @@ export function delInfo(perId) {
// })
// }
export function getPaymentList(query) {
return request({
url: '/person/paymentRangeNew/list',
method: 'get',
params: query
})
return request({
url: '/person/paymentRangeNew/list',
method: 'get',
params: query
})
}
// 查询添加个人个人会员缴费列表
export function addSelectPageList(query) {
return request({
url: '/person/payment/selectPageList',
method: 'get',
params: query
})
return request({
url: '/person/payment/selectPageList',
method: 'get',
params: query
})
}
// 获取个人技术认证详情
......@@ -366,1101 +392,1217 @@ export function getPersonTecDetails(type, personId) {
}
export function fillAuditLog(ids) {
return request({
url: `/person/paymentRange/fillAuditLog/${ids}`,
method: 'get'
})
return request({
url: `/person/paymentRange/fillAuditLog/${ids}`,
method: 'get'
})
}
// 审核列表
export function getVerifyList(params) {
return request({
url: '/person/paymentRange/verifyList',
method: 'get',
params: params
})
return request({
url: '/person/paymentRange/verifyList',
method: 'get',
params: params
})
}
// 审核
export function audit(data) {
return request({
url: '/person/paymentRange/audit',
method: 'post',
params: data
})
return request({
url: '/person/paymentRange/audit',
method: 'post',
params: data
})
}
// 审核详情
export function getHistoryByRelateId(rId) {
return request({
url: `/person/paymentRange/getHistoryByRelateId/${rId}`,
method: 'get',
})
return request({
url: `/person/paymentRange/getHistoryByRelateId/${rId}`,
method: 'get',
})
}
// 查询单位会员信息列表
export function getGroupVipList(query) {
return request({
url: '/member/info/selectPageList',
method: 'get',
params: query
})
return request({
url: '/member/info/selectPageList',
method: 'get',
params: query
})
}
// 查询单位会员 全部会员数,有效会员数
export function getMemberCountInfo(query) {
return request({
url: '/member/info/getMemberCountInfo',
method: 'get',
params: query
})
return request({
url: '/member/info/getMemberCountInfo',
method: 'get',
params: query
})
}
export function getFeeBillList(query) {
return request({
url: '/person/paymentDoc/list',
method: 'get',
params: query
})
return request({
url: '/person/paymentDoc/list',
method: 'get',
params: query
})
}
export function commitPaymentVoucher(data) {
return request({
url: '/person/paymentDoc/commitPaymentVoucher',
method: 'post',
params: data
})
return request({
url: '/person/paymentDoc/commitPaymentVoucher',
method: 'post',
params: data
})
}
export function getFeeBillDetail(payId) {
return request({
url: `/person/paymentDoc/${payId}`,
method: 'get'
})
return request({
url: `/person/paymentDoc/${payId}`,
method: 'get'
})
}
// 获取自己团队成员信息
export function getMyOwnMemberInfo() {
return request({
url: '/member/info/getMyOwnMemberInfo',
method: 'get'
})
return request({
url: '/member/info/getMyOwnMemberInfo',
method: 'get'
})
}
// 会员调入
export function getMobilizelist(params) {
return request({
url: '/person/transferRange/list',
method: 'get',
params
})
return request({
url: '/person/transferRange/list',
method: 'get',
params
})
}
// 调动会员成员
export function getTransferList(data) {
return request({
url: `/person/transfer/list`,
method: 'get',
params: data
})
return request({
url: `/person/transfer/list`,
method: 'get',
params: data
})
}
// 查询单位会员信息列表
export function getGroupList(params) {
return request({
url: `/member/certified/verifyList`,
method: 'get',
params: params
})
return request({
url: `/member/certified/verifyList`,
method: 'get',
params: params
})
}
// 查询
export function pickUp(data) {
return request({
url: `/person/info/pickUp`,
method: 'get',
params: data
})
return request({
url: `/person/info/pickUp`,
method: 'get',
params: data
})
}
// 添加调入会员
export function addTransferToRange(data) {
return request({
url: `/person/transfer/addTransferToRange`,
method: 'post',
params: data
})
return request({
url: `/person/transfer/addTransferToRange`,
method: 'post',
params: data
})
}
export function deltransferRange(rids) {
return request({
url: `/person/transfer/${rids}`,
method: 'delete'
})
return request({
url: `/person/transfer/${rids}`,
method: 'delete'
})
}
export function commit(rangeIds) {
return request({
url: `/person/transferRange/commit/${rangeIds}`,
method: 'post'
})
return request({
url: `/person/transferRange/commit/${rangeIds}`,
method: 'post'
})
}
// 调动审批
export function mobilizeAudit(data) {
return request({
url: `/person/transferRange/audit/${data.rangeIds}?flag=${data.flag}&reason=${data.reason}`,
method: 'post',
params: data
})
return request({
url: `/person/transferRange/audit/${data.rangeIds}?flag=${data.flag}&reason=${data.reason}`,
method: 'post',
params: data
})
}
export function delMobilize(rids) {
return request({
url: `/person/transferRange/${rids}`,
method: 'delete'
})
return request({
url: `/person/transferRange/${rids}`,
method: 'delete'
})
}
//文件上传
export function uploadFile(e) {
const fileUrl = e.tempFilePaths[0]
uni.showLoading({
title: '加载中'
});
return uni.uploadFile({
url: config.baseUrl_api + '/upload/uploadFileToLocalServer',
filePath: fileUrl,
name: 'file',
header: {
'Authorization': uni.getStorageSync('token')
}
}).then(res => {
let data = JSON.parse(res.data);
return data
}).finally(() => {
uni.hideLoading();
});
const fileUrl = e.tempFilePaths[0]
uni.showLoading({
title: '加载中'
});
return uni.uploadFile({
url: config.baseUrl_api + '/upload/uploadFileToLocalServer',
filePath: fileUrl,
name: 'file',
header: {
'Authorization': uni.getStorageSync('token')
}
}).then(res => {
let data = JSON.parse(res.data);
return data
}).finally(() => {
uni.hideLoading();
});
}
// muit
export 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();
});
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();
});
}
// 查询考级信息列表
export function getLevelList(query) {
return request({
url: '/exam/info/list',
method: 'get',
params: query
})
return request({
url: '/exam/info/list',
method: 'get',
params: query
})
}
// 查询考级信息详细
export function getLevelApplyInfo(examId) {
return request({
url: `/exam/info/${examId}`,
method: 'get'
})
return request({
url: `/exam/info/${examId}`,
method: 'get'
})
}
export function getStudentList(query) {
return request({
url: '/exam/person/studentList',
method: 'get',
params: query
})
return request({
url: '/exam/person/studentList',
method: 'get',
params: query
})
}
export function getApprovalRecord(examId) {
return request({
url: '/exam/info/verity/steps',
method: 'get',
params: {
examId: examId
}
})
return request({
url: '/exam/info/verity/steps',
method: 'get',
params: {
examId: examId
}
})
}
export function submitVerity(examId) {
return request({
url: '/exam/info/submitVerity',
method: 'put',
params: {
id: examId
}
})
return request({
url: '/exam/info/submitVerity',
method: 'put',
params: {
id: examId
}
})
}
export function getCoachList(params) {
return request({
url: '/person/info/coachList',
method: 'get',
params: params
})
}
return request({
url: '/person/info/coachList',
method: 'get',
params: params
})
}
// 修改考级信息
export function updateLevelInfo(data) {
return request({
url: '/exam/info',
method: 'put',
params: data
})
return request({
url: '/exam/info',
method: 'put',
params: data
})
}
// 新增考级信息
export function addLevelInfo(data) {
return request({
url: '/exam/info',
method: 'post',
params: data
})
return request({
url: '/exam/info',
method: 'post',
params: data
})
}
export function chooseStudentsList(query) {
return request({
url: '/person/info/chooseStudentsList',
method: 'get',
params: query
})
return request({
url: '/person/info/chooseStudentsList',
method: 'get',
params: query
})
}
export function batchChoose(data) {
return request({
url: '/exam/person/batch/choose',
method: 'post',
params: data
})
return request({
url: '/exam/person/batch/choose',
method: 'post',
params: data
})
}
export function editLevel(data) {
return request({
url: '/exam/person/editLevel',
method: 'put',
params: data
})
return request({
url: '/exam/person/editLevel',
method: 'put',
params: data
})
}
export function getVerityList(params) {
return request({
url: '/exam/info/verityList',
method: 'get',
params: params
})
return request({
url: '/exam/info/verityList',
method: 'get',
params: params
})
}
export function getPerVerityList(params) {
return request({
url: '/person/paymentRange/verifyList',
method: 'get',
params: params
})
return request({
url: '/person/paymentRange/verifyList',
method: 'get',
params: params
})
}
export function getGroupHistoryByRelateId(id) {
return request({
url: `/member/certified/getHistoryByRelateId/${id}`,
method: 'get'
})
return request({
url: `/member/certified/getHistoryByRelateId/${id}`,
method: 'get'
})
}
export function doVerity(data) {
return request({
url: `/exam/info/verity`,
method: 'put',
params: data
})
return request({
url: `/exam/info/verity`,
method: 'put',
params: data
})
}
export function mergeRecords(data) {
return request({
url: '/exam/info/mergeRecords',
method: 'post',
params: data
})
return request({
url: '/exam/info/mergeRecords',
method: 'post',
params: data
})
}
export function groupAudit(data) {
return request({
url: '/member/certified/audit',
method: 'post',
params: data
})
return request({
url: '/member/certified/audit',
method: 'post',
params: data
})
}
export function groupMergeApi(data) {
return request({
url: `/member/certified/merge`,
method: 'post',
params: data
})
return request({
url: `/member/certified/merge`,
method: 'post',
params: data
})
}
export function getDetailList(data) {
return request({
url: `/member/certified/getDetailList`,
method: 'get',
params: data
})
return request({
url: `/member/certified/getDetailList`,
method: 'get',
params: data
})
}
export function getPayList(data) {
return request({
url: `/member/certifiedRange/list`,
method: 'get',
params: data
})
return request({
url: `/member/certifiedRange/list`,
method: 'get',
params: data
})
}
export function getFillAuditLog(rangeId) {
return request({
url: `/member/certifiedRange/fillAuditLog/${rangeId}`,
method: 'get'
})
return request({
url: `/member/certifiedRange/fillAuditLog/${rangeId}`,
method: 'get'
})
}
export function commitGroupPay(rangeId) {
return request({
url: `/member/certifiedRange/commit/${rangeId}`,
method: 'post'
})
return request({
url: `/member/certifiedRange/commit/${rangeId}`,
method: 'post'
})
}
export function getGroupFeeBill(query) {
return request({
url: '/member/certifiedDoc/list',
method: 'get',
params: query
})
return request({
url: '/member/certifiedDoc/list',
method: 'get',
params: query
})
}
export function groupCommitPaymentVoucher(data) {
return request({
url: '/member/certifiedDoc/commitPaymentVoucher',
method: 'post',
params: data
})
return request({
url: '/member/certifiedDoc/commitPaymentVoucher',
method: 'post',
params: data
})
}
export function submitPayment(data) {
return request({
url: '/exam/payment',
method: 'put',
params: data
})
return request({
url: '/exam/payment',
method: 'put',
params: data
})
}
export function getFeeBillById(id) {
return request({
url: `/member/certifiedDoc/${id}`,
method: 'get'
})
return request({
url: `/member/certifiedDoc/${id}`,
method: 'get'
})
}
export function personalCommit(id) {
return request({
url: `/person/paymentRange/commit/${id}`,
method: 'post',
params: id
})
return request({
url: `/person/paymentRange/commit/${id}`,
method: 'post',
params: id
})
}
export function getNewCountByRangeId(rangeId) {
return request({
url: `/person/paymentNew/getNewCountByRangeId/${rangeId}`,
method: 'get',
})
return request({
url: `/person/paymentNew/getNewCountByRangeId/${rangeId}`,
method: 'get',
})
}
export function delPayment(payIds) {
return request({
url: `/person/payment/${payIds}`,
method: 'DELETE'
})
return request({
url: `/person/payment/${payIds}`,
method: 'DELETE'
})
}
export function paymentDel(payIds) {
return request({
url: `/person/paymentRangeNew/${payIds}`,
method: 'DELETE'
})
return request({
url: `/person/paymentRangeNew/${payIds}`,
method: 'DELETE'
})
}
export function delcertified(ids) {
return request({
url: `/member/certified/${ids}`,
method: 'delete'
})
return request({
url: `/member/certified/${ids}`,
method: 'delete'
})
}
export function editYear(data) {
return request({
url: `/person/paymentNew/editYear/${data.payId}?payId=${data.payId}&year=${data.year}`,
method: 'post',
params: data
})
return request({
url: `/person/paymentNew/editYear/${data.payId}?payId=${data.payId}&year=${data.year}`,
method: 'post',
params: data
})
}
export function editGroupYear(data) {
return request({
url: `/member/certified/editCertRenewYear/${data.certId}/${data.renewYear}`,
method: 'post',
params: data
})
return request({
url: `/member/certified/editCertRenewYear/${data.certId}/${data.renewYear}`,
method: 'post',
params: data
})
}
export function addPersonPaymentGroup(data) {
return request({
url: `/person/payment/addPersonPaymentGroup`,
method: 'post',
params: data
})
return request({
url: `/person/payment/addPersonPaymentGroup`,
method: 'post',
params: data
})
}
export function commitRenew(id) {
return request({
url: `/person/paymentRange/commit/${id}`,
method: 'post'
})
return request({
url: `/person/paymentRange/commit/${id}`,
method: 'post'
})
}
export function getVerityMergeList(params) {
return request({
url: '/exam/info/verityMergeList',
method: 'get',
params: params
})
return request({
url: '/exam/info/verityMergeList',
method: 'get',
params: params
})
}
export function doMergeFlows(params) {
return request({
url: `/exam/info/submit/mergeFlows`,
method: 'post',
params: params
})
return request({
url: `/exam/info/submit/mergeFlows`,
method: 'post',
params: params
})
}
export function getMergePaymentInfo(mergeId) {
return request({
url: '/exam/info/mergeDetail/list',
method: 'get',
params: {
mergeId: mergeId
}
})
return request({
url: '/exam/info/mergeDetail/list',
method: 'get',
params: {
mergeId: mergeId
}
})
}
// 一键下发
export function submitCert(data) {
return request({
url: `/exam/payment/submitCerts/nesting`,
method: 'put',
params: data
})
return request({
url: `/exam/payment/submitCerts/nesting`,
method: 'put',
params: data
})
}
export function submitCert2(data) {
return request({
url: `/exam/payment/submitCerts/updateCerts`,
method: 'put',
params: data
})
return request({
url: `/exam/payment/submitCerts/updateCerts`,
method: 'put',
params: data
})
}
export function getCertsLList(query) {
return request({
url: '/exam/payment/certsList',
method: 'get',
params: query
})
return request({
url: '/exam/payment/certsList',
method: 'get',
params: query
})
}
export function getExamListByPayId(params) {
return request({
url: `/exam/payment/examList/${params.payId}`,
method: 'get',
params: params
})
return request({
url: `/exam/payment/examList/${params.payId}`,
method: 'get',
params: params
})
}
export function certStudentList(query) {
return request({
url: '/exam/person/cert/studentList',
method: 'get',
params: query
})
return request({
url: '/exam/person/cert/studentList',
method: 'get',
params: query
})
}
export function paymentList(query) {
return request({
url: '/exam/payment/list',
method: 'get',
params: query
})
return request({
url: '/exam/payment/list',
method: 'get',
params: query
})
}
export function getPaymentDetailsByPayId(payId) {
return request({
url: '/exam/payment/paymentDetailsByPayId',
method: 'get',
params: {
payId: payId
}
})
return request({
url: '/exam/payment/paymentDetailsByPayId',
method: 'get',
params: {
payId: payId
}
})
}
export function getMySonList(data) {
return request({
url: '/member/info/getMySonList',
method: 'get',
params: data
})
return request({
url: '/member/info/getMySonList',
method: 'get',
params: data
})
}
export function getGroupMemberInfoById(memId) {
return request({
url: '/member/info/' + memId,
method: 'get'
})
return request({
url: '/member/info/' + memId,
method: 'get'
})
}
export function addGroupPaymentGroup(data) {
return request({
url: `/member/certifiedRange/addRangeMulti/${data.memIds}/${data.rangeId}`,
method: 'post',
params: data
})
return request({
url: `/member/certifiedRange/addRangeMulti/${data.memIds}/${data.rangeId}`,
method: 'post',
params: data
})
}
export function getDetailPersonList(data) {
return request({
url: `/person/paymentRange/getDetailList`,
method: 'get',
params: data
})
return request({
url: `/person/paymentRange/getDetailList`,
method: 'get',
params: data
})
}
export function withDraw(data) {
return request({
url: `/person/paymentRange/withDraw`,
method: 'post',
params: data
})
return request({
url: `/person/paymentRange/withDraw`,
method: 'post',
params: data
})
}
export function groupWithDraw(data) {
return request({
url: `/member/paymentRange/withDraw`,
method: 'post',
params: data
})
return request({
url: `/member/paymentRange/withDraw`,
method: 'post',
params: data
})
}
export function certifiedwithDraw(data) {
return request({
url: `/member/certified/withDraw`,
method: 'post',
params: data
})
return request({
url: `/member/certified/withDraw`,
method: 'post',
params: data
})
}
// 省合并缴费通知单
export function mergePayMentApi(data) {
return request({
url: `/person/paymentRange/merge`,
method: 'post',
params: data
})
return request({
url: `/person/paymentRange/merge`,
method: 'post',
params: data
})
}
export function getpaymentVerityMergeList(params) {
return request({
url: '/person/paymentRange/verifyList',
method: 'get',
params: params
})
return request({
url: '/person/paymentRange/verifyList',
method: 'get',
params: params
})
}
export function doMergeFlowsPer(data) {
return request({
url: '/person/paymentRange/audit',
method: 'post',
params: data
})
return request({
url: '/person/paymentRange/audit',
method: 'post',
params: data
})
}
// 省缴费单拆分
export function unMerge(recordId) {
return request({
url: `/person/paymentRange/unMerge/${recordId}`,
method: 'post'
})
return request({
url: `/person/paymentRange/unMerge/${recordId}`,
method: 'post'
})
}
export function certifiedunMerge(recordId) {
return request({
url: `/member/certified/unMerge/${recordId}`,
method: 'post'
})
return request({
url: `/member/certified/unMerge/${recordId}`,
method: 'post'
})
}
export function dellevelPerson(examId) {
return request({
url: '/exam/person/' + examId,
method: 'delete'
})
return request({
url: '/exam/person/' + examId,
method: 'delete'
})
}
export function getExamPersonNum(data) {
return request({
url: `/exam/person/getExamPersonNum`,
method: 'get',
params: data
})
return request({
url: `/exam/person/getExamPersonNum`,
method: 'get',
params: data
})
}
export function doVerityBack(data) {
return request({
url: `/exam/info/verity/back`,
method: 'put',
params: data
})
return request({
url: `/exam/info/verity/back`,
method: 'put',
params: data
})
}
export function delRange(ids) {
return request({
url: `/member/certifiedRange/${ids}`,
method: 'delete'
})
return request({
url: `/member/certifiedRange/${ids}`,
method: 'delete'
})
}
export function delLevel(examId) {
return request({
url: '/exam/info/' + examId,
method: 'delete'
})
return request({
url: '/exam/info/' + examId,
method: 'delete'
})
}
export function cancelMerge(id) {
return request({
url: '/exam/info/cancelMerge/' + id,
method: 'post'
})
return request({
url: '/exam/info/cancelMerge/' + id,
method: 'post'
})
}
export function getInfoModRange(params) {
return request({
url: `/person/infoModRange/list`,
method: 'get',
params: params
})
return request({
url: `/person/infoModRange/list`,
method: 'get',
params: params
})
}
export function addInfoModeList(data) {
return request({
url: `/person/infoMod/list`,
method: 'get',
params: data
})
return request({
url: `/person/infoMod/list`,
method: 'get',
params: data
})
}
export function infoMod(ids) {
return request({
url: `/person/infoMod/${ids}`,
method: 'delete'
})
return request({
url: `/person/infoMod/${ids}`,
method: 'delete'
})
}
export function commitPersonalChange(ids) {
return request({
url: `/person/infoModRange/commit/${ids}`,
method: 'post'
})
return request({
url: `/person/infoModRange/commit/${ids}`,
method: 'post'
})
}
export function delPersonalChange(ids) {
return request({
url: `/person/infoModRange/${ids}`,
method: 'delete'
})
return request({
url: `/person/infoModRange/${ids}`,
method: 'delete'
})
}
export function addInfoModeToRange(data) {
return request({
url: `/person/infoMod/addInfoModeToRange/${data.perIds}?rangeIdStr=${data.rangeIdStr}`,
method: 'post'
})
return request({
url: `/person/infoMod/addInfoModeToRange/${data.perIds}?rangeIdStr=${data.rangeIdStr}`,
method: 'post'
})
}
export function addGroupInfoModeToRange(data) {
return request({
url: `/member/infoMod/addInfoModeToRange/${data.memId}?rangeIdStr=${data.rangeIdStr}`,
method: 'post'
})
return request({
url: `/member/infoMod/addInfoModeToRange/${data.memId}?rangeIdStr=${data.rangeIdStr}`,
method: 'post'
})
}
export function personChangeEditMod(data) {
return request({
url: `/person/infoMod/editMod`,
method: 'post',
params: data
})
return request({
url: `/person/infoMod/editMod`,
method: 'post',
params: data
})
}
export function groupChangeEditMod(data) {
return request({
url: `/member/infoMod/editMod`,
method: 'post',
params: data
})
return request({
url: `/member/infoMod/editMod`,
method: 'post',
params: data
})
}
export function personChangeWithDraw(ids) {
return request({
url: `/person/infoModRange/withDraw/${ids}`,
method: 'post'
})
return request({
url: `/person/infoModRange/withDraw/${ids}`,
method: 'post'
})
}
export function personChangeAudit(data) {
return request({
url: `/person/infoModRange/audit/${data.ids}?flag=${data.flag}&reason=${data.reason}`,
method: 'post'
})
return request({
url: `/person/infoModRange/audit/${data.ids}?flag=${data.flag}&reason=${data.reason}`,
method: 'post'
})
}
export function groupChangeAudit(data) {
return request({
url: `/member/infoModRange/audit/${data.ids}?flag=${data.flag}&reason=${data.reason}`,
method: 'post'
})
return request({
url: `/member/infoModRange/audit/${data.ids}?flag=${data.flag}&reason=${data.reason}`,
method: 'post'
})
}
export function pickUpByPersonInfo(form) {
return request({
url: `/person/technology/getPersonTecDetailsByIdc/${form.idcType}/${form.idcCode}`,
method: 'get'
})
return request({
url: `/person/technology/getPersonTecDetailsByIdc/${form.idcType}/${form.idcCode}`,
method: 'get'
})
}
export function getLevelChangeAddList(params) {
return request({
url: `/person/levelMod/list`,
method: 'get',
params: params
})
return request({
url: `/person/levelMod/list`,
method: 'get',
params: params
})
}
export function getChangelevelList(params) {
return request({
url: `/person/levelModRange/list`,
method: 'get',
params: params
})
return request({
url: `/person/levelModRange/list`,
method: 'get',
params: params
})
}
export function addLevelList(data) {
return request({
url: `/person/levelMod/addLevelModToRange`,
method: 'post',
params: data
})
return request({
url: `/person/levelMod/addLevelModToRange`,
method: 'post',
params: data
})
}
export function addLevelModToRange(data) {
return request({
url: `/person/levelMod/editModInfo/${data.modId}?reason=${data.reason}&modId=${data.modId}`,
method: 'post'
})
return request({
url: `/person/levelMod/editModInfo/${data.modId}?reason=${data.reason}&modId=${data.modId}`,
method: 'post'
})
}
export function addLevelModToRangeFile(data) {
return request({
url: `/person/levelMod/editModInfo/${data.modId}?modId=${data.modId}&fileUrl=${encodeURIComponent(data.fileUrl)}`,
method: 'post'
})
return request({
url: `/person/levelMod/editModInfo/${data.modId}?modId=${data.modId}&fileUrl=${encodeURIComponent(data.fileUrl)}`,
method: 'post'
})
}
export function levelModRangeDelete(ids) {
return request({
url: `/person/levelModRange/${ids}`,
method: 'delete'
})
return request({
url: `/person/levelModRange/${ids}`,
method: 'delete'
})
}
export function commitLevelChange(ids) {
return request({
url: `/person/levelModRange/commit/${ids}`,
method: 'post'
})
return request({
url: `/person/levelModRange/commit/${ids}`,
method: 'post'
})
}
export function editNewJi(data) {
return request({
url: `/person/levelMod/editNewJi/${data.modId}?newJi=${data.NewJi}`,
method: 'post'
})
return request({
url: `/person/levelMod/editNewJi/${data.modId}?newJi=${data.NewJi}`,
method: 'post'
})
}
export function delLevelChangePer(data) {
return request({
url: `/person/levelMod/${data}`,
method: 'delete'
})
return request({
url: `/person/levelMod/${data}`,
method: 'delete'
})
}
export function levelModCommit(ids) {
return request({
url: `/person/levelModRange/commit/${ids}`,
method: 'post'
})
return request({
url: `/person/levelModRange/commit/${ids}`,
method: 'post'
})
}
export function changeLevelAudit(data) {
return request({
url: `/person/levelModRange/audit/${data.ids}?flag=${data.flag}&reason=${data.reason}`,
method: 'post'
})
return request({
url: `/person/levelModRange/audit/${data.ids}?flag=${data.flag}&reason=${data.reason}`,
method: 'post'
})
}
export function changeLevelWithDraw(data) {
return request({
url: `/person/levelModRange/withDraw/${data}`,
method: 'post'
})
return request({
url: `/person/levelModRange/withDraw/${data}`,
method: 'post'
})
}
export function getMemberInfoModRange(data) {
return request({
url: `/member/infoModRange/list`,
method: 'get',
params: data
})
return request({
url: `/member/infoModRange/list`,
method: 'get',
params: data
})
}
export function commitGroupChange(ids) {
return request({
url: `/member/infoModRange/commit/${ids}`,
method: 'post'
})
return request({
url: `/member/infoModRange/commit/${ids}`,
method: 'post'
})
}
export function delGroupChange(ids) {
return request({
url: `/member/infoModRange/${ids}`,
method: 'delete'
})
return request({
url: `/member/infoModRange/${ids}`,
method: 'delete'
})
}
export function getChangeGroupByRangeId(data) {
return request({
url: `/member/infoMod/list`,
method: 'get',
params: data
})
return request({
url: `/member/infoMod/list`,
method: 'get',
params: data
})
}
export function groupInfoMod(ids) {
return request({
url: `/member/infoMod/${ids}`,
method: 'delete'
})
return request({
url: `/member/infoMod/${ids}`,
method: 'delete'
})
}
export function extractInfoFromChinaIdCard(data) {
return request({
url: '/person/info/extractInfo',
method: 'post',
params: data
})
return request({
url: '/person/info/extractInfo',
method: 'post',
params: data
})
}
export function getRemindCount(params) {
return request({
url: '/system/remindCount/getCounts',
method: 'get',
params: params
})
return request({
url: '/system/remindCount/getCounts',
method: 'get',
params: params
})
}
export function jiDropDownBox(params) {
return request({
url: '/person/technology/jiDropDownBox',
method: 'get',
params: params
})
return request({
url: '/person/technology/jiDropDownBox',
method: 'get',
params: params
})
}
export function getUserProfile() {
return request({
url: '/system/user/profile',
method: 'get'
})
return request({
url: '/system/user/profile',
method: 'get'
})
}
export function getMyCertStage() {
return request({
url: `/member/certified/getMyCertStage`,
method: 'get'
})
return request({
url: `/member/certified/getMyCertStage`,
method: 'get'
})
}
// 月结列表
export function mentDocList(data) {
return request({
url: '/person/paymentDocYj/list',
method: 'get',
params: data
})
return request({
url: '/person/paymentDocYj/list',
method: 'get',
params: data
})
}
export function wdBack(yjIds) {
return request({
url: `/person/paymentDocYj/wd/${yjIds}`,
method: 'get'
})
return request({
url: `/person/paymentDocYj/wd/${yjIds}`,
method: 'get'
})
}
// 个人会员月结缴费单
export function downJiaoYJFei(arr) {
return request({
url: `/person/paymentDocYj/downJiaoFei/${arr}`,
method: 'post'
})
return request({
url: `/person/paymentDocYj/downJiaoFei/${arr}`,
method: 'post'
})
}
export function queryProcess(id) {
return request({
url: `/system/fileInfo/queryProcess/${id}`,
method: 'get'
})
return request({
url: `/system/fileInfo/queryProcess/${id}`,
method: 'get'
})
}
export function checkPersonByPayIds(payIds) {
return request({
url: `/exam/person/checkPersonByPayIds/${payIds}`,
method: 'get'
})
return request({
url: `/exam/person/checkPersonByPayIds/${payIds}`,
method: 'get'
})
}
export function checkPersonByExamIds(examIds) {
return request({
url: `/exam/person/checkPersonByExamIds/${examIds}`,
method: 'get'
})
return request({
url: `/exam/person/checkPersonByExamIds/${examIds}`,
method: 'get'
})
}
export function checkPersonByPersonId(perId) {
return request({
url: `/exam/person/checkPersonByPersonId/${perId}`,
method: 'get'
})
return request({
url: `/exam/person/checkPersonByPersonId/${perId}`,
method: 'get'
})
}
// 获取单位会员优惠政策
export function canUseDiscount(params) {
return request({
url: `/system/certifiedNew/canUseDiscount`,
method: 'get',
params
})
return request({
url: `/system/certifiedNew/canUseDiscount`,
method: 'get',
params
})
}
// 获取单位会员一年缴费价格
export function getMyMemberCertUnitFee(params) {
return request({
url: `/system/certifiedNew/getMyMemberCertUnitFee`,
method: 'get',
params
})
return request({
url: `/system/certifiedNew/getMyMemberCertUnitFee`,
method: 'get',
params
})
}
export function checkBusinessLicense(data) {
return request({
url: `/member/info/checkBusinessLicense`,
method: 'post',
params: data
})
return request({
url: `/member/info/checkBusinessLicense`,
method: 'post',
params: data
})
}
// 生成单位订单renewYear
export function certifiedNew(renewYear) {
return request({
url: `/system/certifiedNew/commit?renewYear=${renewYear}`,
method: 'post'
})
return request({
url: `/system/certifiedNew/commit?renewYear=${renewYear}`,
method: 'post'
})
}
// 模拟回调
export function callBack2(orderId) {
return request({
url: `/system/certifiedNew/callBack2/${orderId}`,
method: 'get',
})
return request({
url: `/system/certifiedNew/callBack2/${orderId}`,
method: 'get',
})
}
export function pcallBack2(orderId) {
return request({
url: `/person/paymentRangeNew/callBack2/${orderId}`,
method: 'get',
})
return request({
url: `/person/paymentRangeNew/callBack2/${orderId}`,
method: 'get',
})
}
// 优惠政策回显
export function getZtxDiscountPolicy(params) {
return request({
url: '/system/config/getZtxDiscountPolicy',
method: 'get',
params
})
return request({
url: '/system/config/getZtxDiscountPolicy',
method: 'get',
params
})
}
// 考官列表
export function listApi(params) {
return request({
url: `/member/examiner/list`,
method: 'get',
params
})
return request({
url: `/member/examiner/list`,
method: 'get',
params
})
}
// 获取省级信息
export function getShenMemberInfo() {
return request({
url: `/member/info/getShenMemberInfo`,
method: 'get',
})
}
// 考官列表
export function examinerDel(id) {
return request({
url: `/member/examiner/${id}`,
method: 'delete'
})
return request({
url: `/member/examiner/${id}`,
method: 'delete'
})
}
// 添加考官
export function otherAdd(memId, ids) {
return request({
url: `/member/examiner/otherAdd/${memId}/${ids}`,
method: 'post'
})
return request({
url: `/member/examiner/otherAdd/${memId}/${ids}`,
method: 'post'
})
}
// 添加考官
export function selfAdd(memId, ids) {
return request({
url: `/member/examiner/selfAdd/${ids}`,
method: 'post'
})
}
export function commitExamPointApply(params) {
return request({
url: `/member/examPointApply/commit?selfSelect=${params.selfSelect}`,
method: 'post',
params
})
return request({
url: `/member/examPointApply/commit?selfSelect=${params.selfSelect}`,
method: 'post',
params
})
}
export function getMyStatus() {
return request({
url: `/member/examPointApply/getMyStatus`
})
return request({
url: `/member/examPointApply/getMyStatus`,
method: 'get',
})
}
// 个人会员缴费支付
export function goPay(id) {
return request({
url: `/person/paymentRangeNew/pay/${id}`,
method: 'post'
})
return request({
url: `/person/paymentRangeNew/pay/${id}`,
method: 'post'
})
}
// 缴费单列表学员
export function listAPI(params) {
return request({
url: `/person/paymentNew/list`,
method: 'get',
params
})
return request({
url: `/person/paymentNew/list`,
method: 'get',
params
})
}
// 删除学员
export function paymentNewDel(id) {
return request({
url: `/person/paymentNew/${id}`,
method: 'delete'
})
return request({
url: `/person/paymentNew/${id}`,
method: 'delete'
})
}
// 缴费单列表
export function memberInsertPersons(data) {
return request({
url: `/person/paymentNew/memberInsertPersons/${data.rangeId}/${data.year}/${data.idcCode}`,
method: 'post',
data
})
return request({
url: `/person/paymentNew/memberInsertPersons/${data.rangeId}/${data.year}/${data.idcCode}`,
method: 'post',
data
})
}
export function createMemberPayRange(data) {
return request({
url: `/person/paymentRangeNew/createMemberPayRange`,
method: 'post',
data
})
return request({
url: `/person/paymentRangeNew/createMemberPayRange`,
method: 'post',
data
})
}
// 获取最近认证记录
// 获取最近认证记录 团体会员
export function getMyRecent() {
return request({
url: '/system/certifiedNew/getMyRecent',
method: 'get'
})
return request({
url: '/system/certifiedNew/getMyRecent',
method: 'get'
})
}
// 获取最近认证记录 考点
export function getMyRecentExam() {
return request({
url: '/member/examPointApply/getMyRecent',
method: 'get'
})
}
// 获取订单详情
export function getOrderInfo(orderId) {
return request({
url: `/common/order/${orderId}`,
method: 'get'
})
return request({
url: `/common/order/${orderId}`,
method: 'get'
})
}
// 绑定学员
export function bindUser(data) {
return request({
url: `/person/info/bindUser`,
method: 'post',
params: data
})
return request({
url: `/person/info/bindUser`,
method: 'post',
params: data
})
}
export function unbindUser() {
return request({
url: `/person/info/unBindUser`,
method: 'post'
})
return request({
url: `/person/info/unBindUser`,
method: 'post'
})
}
/**
* 订单列表
* @param params
......@@ -1485,6 +1627,7 @@ export function deleteOrder(id) {
method: 'delete'
})
}
/**
* 取消订单
* @param params
......@@ -1511,6 +1654,7 @@ export function getAssoPers(perId) {
method: 'get'
})
}
export function checkMember(data) {
return request({
url: '/member/info/checkMember',
......@@ -1526,17 +1670,19 @@ export function getBusinessLicense(data) {
data: data
})
}
export function getLogs(examId, type) {
return request({
url: `/exam/info/getLogs/${examId}`,
method: 'get',
params: { type } // 1 级位 2 段位 3 段位成绩 4 越段 5 越段成绩
params: {type} // 1 级位 2 段位 3 段位成绩 4 越段 5 越段成绩
})
}
export function newGetLogs(id) {
return request({
url: `/person/paymentRangeNew/getLogs/${id}`,
method: 'get',
method: 'get',
})
}
......@@ -1547,10 +1693,11 @@ export function certifiedNewList(params) {
params
})
}
export function certifiedNewGetLogs(id) {
return request({
url: `/system/certifiedNew/getLogs/${id}`,
method: 'get',
method: 'get',
})
}
......@@ -1668,7 +1815,7 @@ export function setDefault(id) {
export function getDefaultAddress() {
return request({
url: `/member/postAddress/getDefaultAddress`,
method: 'get',
method: 'get',
})
}
......@@ -1684,6 +1831,7 @@ export function editAddressOrder(examId, addressId) {
method: 'put'
})
}
/**
* 查询证书列表
* @param query
......
......@@ -50,6 +50,7 @@ export function submitCert(data) {
params: data
})
}
/**
* 段位考试成绩列表
* @param params
......@@ -165,6 +166,19 @@ export function ztxAudit(params) {
}
/**
* 考点审核
* @param params
* @returns {*}
*/
export function shenAuditExamPointApply(params) {
return request({
url: `/member/examPointApply/shenAudit/${params.ids}`,
method: 'post',
params
})
}
/**
* 获取机构资料
* @param memId
* @returns {*}
......
import {
useUserStore
useUserStore
} from '../store/modules/user'
import request from './request'
function pcLogin(data) {
return request({
url: '/login',
method: 'post',
params: data
}).then((res) => {
uni.setStorageSync('token', 'Bearer ' + res.data.token)
}).then(getInfo)
return request({
url: '/login',
method: 'post',
params: data
}).then((res) => {
uni.setStorageSync('token', 'Bearer ' + res.data.token)
pcLoginOpenId()
}).then(getInfo)
}
function h5Login(userName) {
return request({
url: `/h5Login`,
method: 'post',
params: {
username: userName
}
}).then((res) => {
uni.setStorageSync('token', 'Bearer ' + res.data.token)
}).then(getInfo)
return request({
url: `/h5Login`,
method: 'post',
params: {
username: userName
}
}).then((res) => {
uni.setStorageSync('token', 'Bearer ' + res.data.token)
}).then(getInfo)
}
function h5LoginAuto() {
const userName = uni.getStorageSync('userName')
if (userName) {
return h5Login(userName)
} else {
uni.redirectTo({
url: '/login/login'
})
}
const userName = uni.getStorageSync('userName')
if (userName) {
return h5Login(userName)
} else {
uni.redirectTo({
url: '/login/login'
})
}
}
function logout() {
return request({
url: '/logout',
method: 'post'
}).then(() => {
const userStore = useUserStore()
const app = getApp()
uni.removeStorageSync('token')
uni.removeStorageSync('userName')
uni.removeStorageSync('webUserName')
uni.removeStorageSync('openId')
userStore.setUser(null)
app.globalData.isLogin = false
})
return request({
url: '/logout',
method: 'post'
}).then(() => {
const userStore = useUserStore()
const app = getApp()
uni.removeStorageSync('token')
uni.removeStorageSync('userName')
uni.removeStorageSync('webUserName')
uni.removeStorageSync('openId')
userStore.setUser(null)
app.globalData.isLogin = false
})
}
function getCodeImg() {
return request({
url: '/captchaImage',
method: 'get'
})
return request({
url: '/captchaImage',
method: 'get'
})
}
// 代退图形认证的获取手机验证码
function getSmsCode(data) {
return request({
// url: '/captchaSmsWithCaptchaImage',
url: '/captchaSmsWithCaptchaImageForMiniApp',
method: 'post',
params: data
})
return request({
// url: '/captchaSmsWithCaptchaImage',
url: '/captchaSmsWithCaptchaImageForMiniApp',
method: 'post',
params: data
})
}
function loginByPhone(phonenumber, code) {
const data = {
phonenumber,
code
}
return request({
url: '/userLoginByPhone',
method: 'post',
params: data
}).then((res) => {
uni.showToast({
title: res.msg,
icon: 'none'
})
uni.setStorageSync('token', 'Bearer ' + res.data.token)
}).then(getInfo)
const data = {
phonenumber,
code
}
return request({
url: '/userLoginByPhone',
method: 'post',
params: data
}).then((res) => {
uni.showToast({
title: res.msg,
icon: 'none'
})
uni.setStorageSync('token', 'Bearer ' + res.data.token)
}).then(getInfo)
}
// 获取用户详细信息
function getInfo() {
return request({
url: '/getInfo',
method: 'get'
}).then(res => {
const userStore = useUserStore()
const app = getApp()
const user = res.data.user
uni.setStorageSync('userName', user.userName)
uni.removeStorageSync('webUserName')
userStore.setUser(user)
app.globalData.deptType = user.dept.deptType
app.globalData.genFlag = user.dept.genFlag
app.globalData.changePassFlag = user.changePassFlag
switch (user.dept.deptType) {
case '1': // 中跆协
app.globalData.userType = '1'
break
case '2': // 省
case '3':
app.globalData.userType = '2'
break
case '6': // 道馆
app.globalData.userType = '4'
break
default: // 市、区
app.globalData.userType = '3'
break
}
})
return request({
url: '/getInfo',
method: 'get'
}).then(res => {
const userStore = useUserStore()
const app = getApp()
const user = res.data.user
uni.setStorageSync('userName', user.userName)
uni.removeStorageSync('webUserName')
userStore.setUser(user)
app.globalData.deptType = user.dept.deptType
app.globalData.genFlag = user.dept.genFlag
app.globalData.changePassFlag = user.changePassFlag
switch (user.dept.deptType) {
case '1': // 中跆协
app.globalData.userType = '1'
break
case '2': // 省
case '3':
app.globalData.userType = '2'
break
case '6': // 道馆
app.globalData.userType = '4'
break
default: // 市、区
app.globalData.userType = '3'
break
}
})
}
function getWebInfo() {
return request({
url: '/person/info/getInfo',
method: 'get'
}).then(res => {
const userStore = useUserStore()
const user = res.data.user
delete res.data.user
const perInfo = res.data
uni.setStorageSync('webUserName', user.userName)
uni.removeStorageSync('userName')
userStore.setUser(user)
userStore.setPerInfo(perInfo)
})
return request({
url: '/person/info/getInfo',
method: 'get'
}).then(res => {
const userStore = useUserStore()
const user = res.data.user
delete res.data.user
const perInfo = res.data
uni.setStorageSync('webUserName', user.userName)
uni.removeStorageSync('userName')
userStore.setUser(user)
userStore.setPerInfo(perInfo)
})
}
// 团队会员用户注册接口
function groupMemberRegister(data) {
return request({
url: '/groupMemberRegister',
method: 'post',
params: data
})
return request({
url: '/groupMemberRegister',
method: 'post',
params: data
})
}
// 获取道馆信息
function getMyOwnMemberInfo() {
return request({
url: '/member/info/getMyOwnMemberInfo',
method: 'get'
}).then(res => {
const app = getApp()
app.globalData.authenticationStatus = res.data.authenticationStatus
app.globalData.memberInfo = res.data.memberInfo
app.globalData.isExam = res.data?.memberInfo?.isPoints
})
return request({
url: '/member/info/getMyOwnMemberInfo',
method: 'get'
}).then(res => {
const app = getApp()
app.globalData.authenticationStatus = res.data.authenticationStatus
app.globalData.memberInfo = res.data.memberInfo
app.globalData.isExam = res.data?.memberInfo?.isPoints
})
}
function pcLoginOpenId() {
uni.login({
provider: 'weixin',
success: (res) => {
if (res.code) {
pcBindOpenId(res.code)
}
},
fail: (res) => {
uni.showToast({
title: '获取用户信息失败',
icon: 'none',
duration: 2000
})
}
})
}
function wxLogin() {
const openId = uni.getStorageSync('openId')
if (openId) {
return pcLoginByOpenId(openId)
} else {
return new Promise((resolve, reject) => {
uni.login({
provider: 'weixin',
success: (res) => {
resolve(res)
},
fail: (res) => {
uni.showToast({
title: '获取用户信息失败',
icon: 'none',
duration: 2000
})
reject(res)
}
})
}).then(res => {
return pcLoginByCode(res.code)
})
}
const openId = uni.getStorageSync('openId')
if (openId) {
return pcLoginByOpenId(openId)
} else {
return new Promise((resolve, reject) => {
uni.login({
provider: 'weixin',
success: (res) => {
resolve(res)
},
fail: (res) => {
uni.showToast({
title: '获取用户信息失败',
icon: 'none',
duration: 2000
})
reject(res)
}
})
}).then(res => {
return pcLoginByCode(res.code)
})
}
}
function pcLoginByCode(code) {
return request({
url: `/loginByJsCode?jsCode=${code}`,
method: "POST"
}).then((res) => {
uni.setStorageSync('token', 'Bearer ' + res.data.token);
uni.setStorageSync('openId', res.data.openId);
})
return request({
url: `/loginByJsCode?jsCode=${code}`,
method: "POST"
}).then((res) => {
uni.setStorageSync('token', 'Bearer ' + res.data.token);
uni.setStorageSync('openId', res.data.openId);
})
}
function pcLoginByOpenId(openId) {
return request({
url: `/loginByOpenId?openId=${openId}`,
method: "POST"
}).then((res) => {
uni.setStorageSync('token', 'Bearer ' + res.data.token);
})
return request({
url: `/loginByOpenId?openId=${openId}`,
method: "POST"
}).then((res) => {
uni.setStorageSync('token', 'Bearer ' + res.data.token);
})
}
function pcBindOpenId(code) {
return request({
url: `/bindOpenId?jsCode=${code}`,
method: "POST",
}).then((res) => {
uni.setStorageSync('openId', res.data.openId);
})
}
export {
pcLogin,
getCodeImg,
getSmsCode,
h5Login,
h5LoginAuto,
loginByPhone,
groupMemberRegister,
getMyOwnMemberInfo,
logout,
getInfo,
getWebInfo,
wxLogin
}
\ No newline at end of file
pcLogin,
getCodeImg,
getSmsCode,
h5Login,
h5LoginAuto,
loginByPhone,
groupMemberRegister,
getMyOwnMemberInfo,
logout,
getInfo,
getWebInfo,
wxLogin
}
......
......@@ -66,6 +66,7 @@ async function minShengPay(orderId, encryptedData) {
}))
if (decryptErr || !decryptResult?.data) {
handlePaymentError(new Error(ERROR_MESSAGES.DECRYPT_FAILED), orderId)
}
......@@ -85,14 +86,14 @@ async function minShengPay(orderId, encryptedData) {
uni.hideLoading()
// 8. 调起微信支付
const [payErr, paySuccess] = await to(invokeWechatPayment(payParams, orderId))
const [payErr] = await to(invokeWechatPayment(payParams, orderId))
if (payErr) {
handlePaymentError(payErr, orderId)
}
if (paySuccess) {
return paySuccess
}
// if (paySuccess) {
// return paySuccess
// }
}
/**
......@@ -194,7 +195,6 @@ function parsePayInfo(payInfoStr) {
* @returns {Promise<Object>} 支付结果
*/
function invokeWechatPayment(payParams, orderId) {
debugger
return new Promise((resolve, reject) => {
// 参数校验
const requiredFields = ['appId', 'nonceStr', 'prepayId', 'timeStamp', 'signType', 'paySign']
......
......@@ -30,7 +30,7 @@ function getHeaders() {
return header
}
const request = function(req) {
const request = function (req) {
req.method = req.method.toUpperCase()
if (!['GET', 'POST', 'PUT', 'DELETE'].includes(req.method)) {
uni.showToast({
......@@ -39,7 +39,7 @@ const request = function(req) {
})
return
}
// if (req.method === 'GET') {
// if (!req.params) {
// req.params = {}
......@@ -47,13 +47,13 @@ const request = function(req) {
// req.params.pageNum = req.params.pageNum || 1
// req.params.pageSize = req.params.pageSize || 50
// }
// if (req.method == 'POST' && !req.hideLoding) {
// uni.showLoading({
// title: '提交中...'
// })
// }
return new Promise((resolve, reject) => {
uni.request({
url: config.baseUrl_api + req.url,
......@@ -74,7 +74,7 @@ const request = function(req) {
// uni.showModal({
// content: data.msg,
// success: function(res) {
// }
// })
uni.showToast({
......@@ -84,9 +84,9 @@ const request = function(req) {
})
// }
// uni.hideLoading()
// }
// 登录超时
// if (data.code === 60002 || data.code === 60001) {
// uni.redirectTo({
......@@ -108,7 +108,7 @@ const request = function(req) {
// })
// })
// }
reject(res)
}
break
......@@ -119,7 +119,7 @@ const request = function(req) {
reject(res)
}).finally(() => {
// if (req.method == 'POST' && !req.hideLoading) {
uni.hideLoading()
uni.hideLoading()
// }
})
})
......
// 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'
// prod
......@@ -8,6 +9,8 @@ const payUrl = 'https://wxpay.cmbc.com.cn/mobilePlatform/appserver/lcbpPay.do'
// const payUrl = 'https://epay.cmbc.com.cn/appweb/appserver/lcbpPay.do'
export default {
baseUrl_api,
payUrl
baseUrl_api,
payUrl,
loginImage_api
}
......
......@@ -2,61 +2,80 @@
<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>
<uni-icons color="#13B5B1" size="18" type="info"></uni-icons>
<text v-if="type === 'batch'" class="tips-text">批量审核 {{ ids.split(',').length }} 条记录</text>
<text v-else class="tips-text">单个审核</text>
</view>
<!-- 审核表单 -->
<view class="form-section">
<view class="section-header">
<uni-icons type="edit" size="18" color="#AD181F"></uni-icons>
<uni-icons color="#AD181F" size="18" type="edit"></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' }"
class="radio-item"
@click="form.flag = '1'"
>
<view class="radio-circle">
<uni-icons v-if="form.flag === '1'" type="checkmark" size="10" color="#fff"></uni-icons>
<uni-icons v-if="form.flag === '1'" color="#fff" size="10" type="checkmark"></uni-icons>
</view>
<text>审批通过</text>
</view>
<view
class="radio-item"
:class="{ selected: form.flag === '0' }"
class="radio-item"
@click="form.flag = '0'"
>
<view class="radio-circle">
<uni-icons v-if="form.flag === '0'" type="checkmark" size="10" color="#fff"></uni-icons>
<uni-icons v-if="form.flag === '0'" color="#fff" size="10" type="checkmark"></uni-icons>
</view>
<text>审批拒绝</text>
</view>
</view>
</view>
<view class="form-item">
<text class="form-label">备注</text>
<textarea
v-model="form.reason"
:maxlength="500"
class="textarea"
placeholder="请输入备注信息(拒绝时必填)"
:maxlength="500"
/>
</view>
</view>
</view>
<view v-if="userType==2&&selfSelect==0" class="section">
<view class="section examiner-section">
<button class="add-btn" @click="handelAddExamine">+ 添加考官</button>
</view>
<view class="examiner-list">
<view v-for="(item, index) in list" :key="item.id" class="examiner-item">
<view class="info">
<text class="name">{{ item.perName }} {{ item.perCode }}</text>
<text class="idc">证件号码:{{ item.perIdcCode }}</text>
<text class="reg">注册地:{{ item.memName }}</text>
</view>
<button class="del-btn" @click="handleDel(item)">删除</button>
</view>
</view>
</view>
<!-- 提交按钮 -->
<view class="submit-wrap">
<button class="btn-cancel" @click="goBack">取消</button>
<button class="btn-submit" @click="doSubmit" :disabled="submitting">
<button :disabled="submitting" class="btn-submit" @click="doSubmit">
<text v-if="!submitting">确认提交</text>
<text v-else>提交中...</text>
</button>
......@@ -66,32 +85,63 @@
<script setup>
import * as api from '@/common/api_exam.js'
import { ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import {ref} from 'vue'
import {onLoad} from '@dcloudio/uni-app'
import {listApi} from "@/common/api.js";
const type = ref('single') // single 或 batch
const ids = ref('')
const submitting = ref(false)
const selfSelect = ref('1')
const userType = ref('')
const list = ref([])
const memId = ref('')
const app = getApp();
const form = ref({
flag: '1',
reason: ''
reason: '',
selfSelect: "1"
})
onLoad((options) => {
console.log(options)
if (options.type) {
type.value = options.type
}
if (options.ids) {
ids.value = options.ids
}
if (options.selfSelect) {
selfSelect.value = options.selfSelect
}
if (options.memId) {
memId.value = options.memId
getExaminer()
}
userType.value = app.globalData.userType
console.log(userType.value)
})
function goBack() {
uni.navigateBack()
}
function handelAddExamine() {
const chosenStr = JSON.stringify(list.value)
uni.navigateTo({
url: `/myCenter/chooseExaminer?memId=${memId.value}&isValidity=0&chosen=${chosenStr}&selfSelect=0`
})
}
async function getExaminer() {
const res = await listApi({memId: memId.value})
list.value = res.rows
}
function doSubmit() {
if (form.value.flag === '0' && !form.value.reason) {
uni.showToast({
......@@ -100,32 +150,51 @@ function doSubmit() {
})
return
}
if (submitting.value) return
submitting.value = true
const params = {
ids: ids.value,
flag: form.value.flag,
reason: form.value.reason || ''
reason: form.value.reason || '',
selfSelect: selfSelect.value
}
api.ztxAudit(params).then(res => {
uni.showToast({
title: '操作成功',
icon: 'success'
if (userType.value == '1') {
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
})
setTimeout(() => {
uni.navigateBack()
}, 1500)
}).catch(err => {
console.error('审核失败', err)
uni.showToast({
title: '操作失败',
icon: 'none'
} else {
api.shenAuditExamPointApply(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
})
submitting.value = false
})
}
}
</script>
......@@ -145,7 +214,7 @@ function doSubmit() {
display: flex;
align-items: center;
gap: 12rpx;
.tips-text {
font-size: 26rpx;
color: #13B5B1;
......@@ -163,7 +232,7 @@ function doSubmit() {
display: flex;
align-items: center;
margin-bottom: 30rpx;
.section-title {
font-size: 30rpx;
font-weight: 600;
......@@ -175,11 +244,11 @@ function doSubmit() {
.form-card {
.form-item {
margin-bottom: 30rpx;
&:last-child {
margin-bottom: 0;
}
.form-label {
display: block;
font-size: 28rpx;
......@@ -187,19 +256,19 @@ function doSubmit() {
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;
......@@ -209,7 +278,7 @@ function doSubmit() {
align-items: center;
justify-content: center;
}
&.selected {
.radio-circle {
background-color: #13B5B1;
......@@ -217,7 +286,7 @@ function doSubmit() {
}
}
}
.textarea {
width: 100%;
height: 200rpx;
......@@ -245,7 +314,7 @@ function doSubmit() {
gap: 30rpx;
padding: 0 30rpx;
box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.05);
button {
flex: 1;
height: 80rpx;
......@@ -254,19 +323,176 @@ function doSubmit() {
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;
}
}
}
.section {
padding: 15rpx 20rpx;
}
/* 考官区域 */
.examiner-section {
background: #fff;
padding: 15rpx;
margin-bottom: 20rpx;
border: none;
border-radius: 0;
}
.add-btn {
background: #fff;
color: #C4121B;
border: 1rpx solid #C4121B;
border-radius: 10rpx;
padding: 10rpx 0;
width: 100%;
font-size: 14px;
}
.examiner-list {
padding: 0 10rpx;
background-color: #fff;
margin-bottom: 20rpx;
overflow-y: auto;
margin-bottom: 70px;
}
examiner-item {
display: flex;
justify-content: space-between;
align-items: flex-start;
padding: 20rpx;
border-bottom: 1rpx solid #eee;
align-items: center;
}
.info {
flex: 1;
}
.name {
font-size: 14px;
font-weight: 500;
color: #333;
display: block;
margin-bottom: 5rpx;
}
.idc, .reg {
font-size: 12px;
color: #666;
display: block;
margin: 10rpx 0;
}
.del-btn {
color: #C4121B;
font-size: 12px;
border: 1rpx solid #C4121B;
border-radius: 50rpx;
padding: 10rpx 25rpx;
line-height: 1.2;
background: #fff;
}
/* 提交按钮 */
.submit-area {
padding: 20rpx 0;
background-color: #fff;
width: 100%;
position: fixed;
bottom: 0;
}
.submit-btn {
width: 80%;
height: 88rpx;
border-radius: 44rpx;
margin: 0 auto;
line-height: 88rpx;
background: #C4121B;
color: #fff;
text-align: center;
font-size: 16px;
border: none;
}
/* 自定义弹窗样式(核心) */
.custom-modal {
width: 600rpx;
background: #fff;
border-radius: 20rpx;
padding: 40rpx 30rpx;
box-sizing: border-box;
text-align: center;
}
.modal-title {
font-size: 36rpx;
font-weight: 600;
color: #333;
margin-bottom: 30rpx;
}
.modal-content {
font-size: 30rpx;
color: #666;
line-height: 1.6;
margin-bottom: 30rpx;
}
.modal-tip {
font-size: 28rpx;
color: #FF7A00;
margin-top: 20rpx;
}
.modal-btns {
display: flex;
justify-content: space-between;
gap: 20rpx;
}
.btn-cancel {
flex: 1;
height: 80rpx;
line-height: 80rpx;
background: #f5f5f5;
color: #999;
border-radius: 40rpx;
font-size: 32rpx;
border: none;
}
.btn-confirm {
flex: 1;
height: 80rpx;
line-height: 80rpx;
background: #C4121B;
color: #fff;
border-radius: 40rpx;
font-size: 32rpx;
border: none;
}
.single-btn {
flex: 1;
}
.btn-cancel::after, .btn-confirm::after {
border: none;
}
</style>
......
......@@ -3,7 +3,7 @@
<!-- 基本信息 -->
<view class="section">
<view class="section-header">
<uni-icons type="paperclip" size="18" color="#AD181F"></uni-icons>
<uni-icons color="#AD181F" size="18" type="paperclip"></uni-icons>
<text class="section-title">基本信息</text>
</view>
<view class="info-card">
......@@ -17,7 +17,7 @@
</view>
<view class="info-row">
<text class="label">审核状态</text>
<text class="value" :class="getStatusClass(form.auditStatus)">
<text :class="getStatusClass(form.auditStatus)" class="value">
{{ getStatusText(form.auditStatus) }}
</text>
</view>
......@@ -43,16 +43,16 @@
</view>
</view>
</view>
<!-- 审核记录 -->
<view class="section" v-if="auditList.length > 0">
<view v-if="auditList.length > 0" class="section">
<view class="section-header">
<uni-icons type="checkmark-circle" size="18" color="#AD181F"></uni-icons>
<uni-icons color="#AD181F" size="18" type="checkmark-circle"></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 v-for="(item, index) in auditList" :key="index" class="audit-item">
<view :class="item.auditResult == 2 ? 'pass' : 'fail'" class="audit-dot"></view>
<view class="audit-content">
<view class="audit-row">
<text class="audit-label">审核协会</text>
......@@ -64,11 +64,11 @@
</view>
<view class="audit-row">
<text class="audit-label">审核状态</text>
<text class="audit-value" :class="item.auditResult == 2 ? 'text-success' : 'text-danger'">
<text :class="item.auditResult == 2 ? 'text-success' : 'text-danger'" class="audit-value">
{{ item.auditResult == 2 ? '通过' : '拒绝' }}
</text>
</view>
<view class="audit-row" v-if="item.auditMsg">
<view v-if="item.auditMsg" class="audit-row">
<text class="audit-label">备注</text>
<text class="audit-value">{{ item.auditMsg }}</text>
</view>
......@@ -76,44 +76,44 @@
</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>
<!-- &lt;!&ndash; 考官信息 &ndash;&gt;-->
<!-- <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'
import {ref} from 'vue'
import {onLoad} from '@dcloudio/uni-app'
const form = ref({})
const auditList = ref([])
const examinerList = ref([])
const auditStatusMap = { 1: '审核中', 2: '审核通过', 3: '审核拒绝' }
const auditStatusMap = {1: '审核中', 2: '审核通过', 3: '审核拒绝'}
onLoad((options) => {
if (options.item) {
......@@ -133,7 +133,7 @@ onLoad((options) => {
})
function getExaminerList(memId) {
api.listInfo({ memId: memId }).then(res => {
api.listInfo({memId: memId}).then(res => {
if (res.rows) {
examinerList.value = res.rows
}
......@@ -189,7 +189,7 @@ function formatDateTime(dateStr) {
display: flex;
align-items: center;
margin-bottom: 24rpx;
.section-title {
font-size: 30rpx;
font-weight: 600;
......@@ -204,31 +204,31 @@ function formatDateTime(dateStr) {
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;
}
......@@ -242,11 +242,11 @@ function formatDateTime(dateStr) {
display: flex;
padding: 20rpx 0;
border-bottom: 1px dashed #eee;
&:last-child {
border-bottom: none;
}
.audit-dot {
width: 14rpx;
height: 14rpx;
......@@ -254,43 +254,43 @@ function formatDateTime(dateStr) {
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;
}
......@@ -305,11 +305,11 @@ function formatDateTime(dateStr) {
border: 1px solid #eee;
border-radius: 12rpx;
overflow: hidden;
.table-header {
display: flex;
background-color: #f5f5f5;
.th {
padding: 20rpx 0;
text-align: center;
......@@ -318,20 +318,28 @@ function formatDateTime(dateStr) {
font-weight: 500;
}
}
.th-name { width: 25%; }
.th-code { width: 30%; }
.th-idcard { width: 45%; }
.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;
......@@ -342,10 +350,18 @@ function formatDateTime(dateStr) {
white-space: nowrap;
}
}
.td-name { width: 25%; }
.td-code { width: 30%; }
.td-idcard { width: 45%; }
.td-name {
width: 25%;
}
.td-code {
width: 30%;
}
.td-idcard {
width: 45%;
}
}
}
......
......@@ -34,41 +34,41 @@
<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 }"
class="tab-item"
@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>
<view v-if="selectedList.length > 0 && currentTab === 0" class="batch-btn-wrap">
<button :disabled="selectedList.length === 0" class="btn-batch" @click="goBatchAudit">
<uni-icons color="#fff" size="16" type="checkmark-circle"></uni-icons>
批量审核 ({{ selectedList.length }})
</button>
</view>
<!-- 列表区域(保留原字段+截图样式+所有按钮) -->
<scroll-view
:lower-threshold="100"
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) }"
class="appItem"
>
<!-- 选择框(保留原逻辑+适配截图样式) -->
<!-- <view class="checkbox-wrap" v-if="item.auditStatus == 1" @click="toggleSelect(item)">
......@@ -76,21 +76,21 @@
<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-content" @click="goDetail(item)">
<!-- 状态标签+提交时间(截图风格顶部) -->
<view class="item-top">
<text class="submit-time">{{ formatDate(item.commitTime) }} 提交</text>
<text class="status-tag" :class="getStatusClass(item.auditStatus)">
<text :class="getStatusClass(item.auditStatus)" class="status-tag">
{{ getStatusText(item.auditStatus) }}
</text>
</view>
<!-- 缴费单位名称(原name字段,截图风格标题) -->
<view class="mem-name">{{ item.shenMemName }}</view>
<!-- 第一行信息:所属协会/会员有效期/是否需要(原flexbox1,截图风格) -->
<view class="info-row">
<view class="info-item">
......@@ -106,7 +106,7 @@
<text class="info-value">{{ item.selfSelect == 1 ? '否' : '是' }}</text>
</view> -->
</view>
<!-- 第二行信息:申请日期/审核日期(原flexbox2,截图风格) -->
<!-- <view class="info-row">
<view class="info-item two-col">
......@@ -119,7 +119,7 @@
</view>
</view> -->
</view>
<!-- 操作按钮区(保留原所有按钮:查看/审核/机构资料,截图风格) -->
<view class="func">
<!-- <button class="btn-info" >查看</button> -->
......@@ -127,21 +127,22 @@
v-if="item.auditStatus == 1"
class="btn-info"
@click.stop="goAudit(item)"
>审核</button>
>审核
</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 v-if="infoList.length > 0" class="loading-more">
<uni-load-more :contentText="loadMoreText" :status="loadMoreStatus"></uni-load-more>
</view>
</scroll-view>
<!-- 空数据(保留原逻辑+适配截图样式) -->
<view class="nodata" v-if="infoList.length == 0 && !loading">
<image mode="aspectFit" :src="config.baseUrl_api + '/fs/static/nodata.png'"></image>
<view v-if="infoList.length == 0 && !loading" class="nodata">
<image :src="config.baseUrl_api + '/fs/static/nodata.png'" mode="aspectFit"></image>
<text>暂无数据</text>
</view>
</view>
......@@ -151,8 +152,8 @@
// 完全保留你原代码的所有JS逻辑、方法、字段,未做任何修改
import * as api from '@/common/api_exam.js'
import config from '@/config.js'
import { ref } from 'vue'
import { onLoad, onShow } from '@dcloudio/uni-app'
import {ref} from 'vue'
import {onLoad, onShow} from '@dcloudio/uni-app'
const app = getApp()
const loading = ref(false)
......@@ -179,12 +180,14 @@ const selectedList = ref([])
// 新增Tab配置(匹配截图,关联原审核状态)
const tabList = ref([
{ name: '全部', auditStatus: '' },
{ name: '审核中', auditStatus: '1' },
{ name: '审核通过', auditStatus: '2' },
{ name: '审核拒绝', auditStatus: '3' }
{name: '全部', auditStatus: ''},
{name: '审核中', auditStatus: '1'},
{name: '审核通过', auditStatus: '2'},
{name: '审核拒绝', auditStatus: '3'}
])
const currentTab = ref(0)
const userType = ref('')
onLoad(() => {
init()
......@@ -198,6 +201,9 @@ onShow(() => {
// init()
}
}
userType.value = app.globalData.userType
init()
})
function init() {
......@@ -208,18 +214,26 @@ function init() {
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 = []
if (userType.value == 1) {
// 同步原审核状态查询参数
queryParams.value.auditStatus = Number(tabList.value[index].auditStatus)
}
if (userType.value == 2) {
// 同步原审核状态查询参数
queryParams.value.shenAuditStatus = tabList.value[index].auditStatus
}
getList()
}
function getList(isLoadMore = false) {
if (loading.value) return
if (!isLoadMore) {
loading.value = true
queryParams.value.pageNum = 1
......@@ -228,17 +242,17 @@ function getList(isLoadMore = false) {
if (loadMoreStatus.value === 'noMore') return
loadMoreStatus.value = 'loading'
}
uni.showLoading({ title: '加载中' })
const params = { ...queryParams.value }
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) {
......@@ -327,15 +341,17 @@ function goDetail(item) {
}
function goAudit(item) {
const itemStr = encodeURIComponent(JSON.stringify(item))
// const itemStr = encodeURIComponent(JSON.stringify(item))
uni.navigateTo({
url: `/level/ztx/examinationAudit?item=${itemStr}&type=single`
url: `/level/ztx/examinationAudit?ids=${item.id}&type=single&selfSelect=${item.selfSelect}&memId=${item.memId}`
})
}
function goBatchAudit() {
if (selectedList.value.length === 0) return
const ids = selectedList.value.map(s => s.id).join(',')
const arr = selectedList.value.filter(s => s.selfSelect == 1)
const ids = arr.map(s => s.id).join(',')
uni.navigateTo({
url: `/level/ztx/examinationAudit?ids=${ids}&type=batch`
})
......@@ -348,7 +364,7 @@ function goInstitution(item) {
}
function getStatusText(status) {
const statusMap = { 1: '审核中', 2: '审核通过', 3: '审核拒绝' }
const statusMap = {1: '审核中', 2: '审核通过', 3: '审核拒绝'}
return statusMap[status] || '-'
}
......@@ -382,7 +398,7 @@ function formatDate(dateStr) {
border-bottom: 1px solid #eee;
width: 100%;
box-sizing: border-box;
.tab-item {
flex: 1;
height: 88rpx;
......@@ -392,11 +408,11 @@ function formatDate(dateStr) {
color: #666;
position: relative;
transition: all 0.2s;
&.active {
color: #C4121B;
font-weight: 600;
&::after {
content: '';
position: absolute;
......@@ -416,7 +432,7 @@ function formatDate(dateStr) {
.batch-btn-wrap {
padding: 0 20rpx;
margin: 20rpx 0;
.btn-batch {
width: 100%;
height: 80rpx;
......@@ -430,7 +446,7 @@ function formatDate(dateStr) {
justify-content: center;
gap: 10rpx;
border: none;
&[disabled] {
background: #ccc;
}
......@@ -466,19 +482,19 @@ function formatDate(dateStr) {
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;
......@@ -489,14 +505,14 @@ function formatDate(dateStr) {
justify-content: center;
background: #fff;
transition: all 0.2s;
&.selected {
background: #13B5B1;
border-color: #13B5B1;
}
}
}
/* 主内容区 */
.item-content {
width: 100%;
......@@ -504,41 +520,41 @@ function formatDate(dateStr) {
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;
......@@ -547,7 +563,7 @@ function formatDate(dateStr) {
padding-bottom: 8rpx;
// border-bottom: 1px dashed #eee;
}
/* 信息行(截图风格:浅灰背景+圆角+均匀分布) */
.info-row {
display: flex;
......@@ -558,24 +574,24 @@ function formatDate(dateStr) {
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;
......@@ -584,7 +600,7 @@ function formatDate(dateStr) {
}
}
}
/* 操作按钮区(保留原三个按钮+截图风格优化) */
.func {
display: flex;
......@@ -592,7 +608,7 @@ function formatDate(dateStr) {
width: 100%;
box-sizing: border-box;
justify-content: flex-end;
button {
// flex: 1;
width: 100px;
......@@ -603,17 +619,17 @@ function formatDate(dateStr) {
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);
......@@ -638,12 +654,12 @@ function formatDate(dateStr) {
justify-content: center;
padding: 100rpx 0;
gap: 20rpx;
image {
width: 300rpx;
height: 300rpx;
}
text {
font-size: 28rpx;
color: #999;
......@@ -656,28 +672,31 @@ function formatDate(dateStr) {
padding: 30rpx;
margin: 20rpx;
border-radius: 16rpx;
box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.05);
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;
......@@ -688,6 +707,7 @@ function formatDate(dateStr) {
background-color: #fafafa;
box-sizing: border-box;
}
.picker-value {
width: 100%;
height: 70rpx;
......@@ -702,26 +722,29 @@ function formatDate(dateStr) {
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;
......@@ -730,13 +753,15 @@ function formatDate(dateStr) {
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
</style>
......
<template>
<view class="role-entry-page">
<!-- 全屏背景图 -->
<image class="page-bg" :src="config.baseUrl_api + '/fs/static/bg.png'" mode="aspectFill"></image>
<image :src="config.loginImage_api + '/fs/static/bg.png'" class="page-bg" mode="aspectFill"></image>
<!-- 顶部 Logo 区域 -->
<view class="header-wrapper">
<view class="logo-box">
<image class="logo" :src="config.baseUrl_api + '/fs/static/wx_logo.png'" mode="aspectFit"></image>
<image :src="config.loginImage_api + '/fs/static/wx_logo.png'" class="logo" mode="aspectFit"></image>
</view>
</view>
<!-- 功能按钮区域 -->
<view class="btn-container">
<view @click="goToPage('/personal/addVip_per')">
<image :src="config.baseUrl_api + '/fs/static/btn01.png'" class="btn-item"></image>
<image :src="config.loginImage_api + '/fs/static/btn01.png'" class="btn-item"></image>
</view>
<view @click="goToPage('/personal/home')">
<image :src="config.baseUrl_api + '/fs/static/btn02.png'" class="btn-item"></image>
<image :src="config.loginImage_api + '/fs/static/btn02.png'" class="btn-item"></image>
</view>
<view @click="goToPage('/login/loginC')">
<image :src="config.baseUrl_api + '/fs/static/btn03.png'" class="btn-item"></image>
<image :src="config.loginImage_api + '/fs/static/btn03.png'" class="btn-item"></image>
</view>
</view>
</view>
</template>
<script setup>
import { ref } from 'vue'
import {ref} from 'vue'
import {onShow} from '@dcloudio/uni-app'
import config from '@/config.js'
onShow(() => {
uni.hideLoading();
uni.hideLoading();
})
const goToPage = (url) => {
......@@ -46,7 +45,7 @@ const goToPage = (url) => {
.role-entry-page {
width: 100%;
min-height: 100vh;
position: relative;
position: relative;
padding: 20rpx;
box-sizing: border-box;
}
......@@ -57,7 +56,7 @@ const goToPage = (url) => {
left: 0;
width: 100%;
height: 100%;
z-index: -1;
z-index: -1;
}
.header-wrapper {
......@@ -71,6 +70,7 @@ const goToPage = (url) => {
display: flex;
justify-content: space-between;
padding: 0 40rpx;
img, image {
width: 90px;
}
......@@ -93,4 +93,4 @@ const goToPage = (url) => {
color: white;
font-size: 28rpx;
}
</style>
\ No newline at end of file
</style>
......
This diff could not be displayed because it is too large.
......@@ -23,15 +23,23 @@
style="margin: 0 20rpx 0 0;" @click="payTheFees">激活
</button>
<view v-else>
<button :disabled="auditStatus==1||auditStatus==2||form.isPoints==0" class="btn-red" size="mini"
<button v-if="form.deptType==6"
:disabled="auditStatus==1||auditStatus==2||form.isPoints==0" class="btn-red"
size="mini"
style="margin: 0 20rpx 0 0;"
@click="showApplyDialog">考点申请
</button>
<button v-if="form.deptType==6"
class="btn-red-kx"
size="mini"
style="margin: 0 20rpx 0 0;"
@click="auditEditFN(2)">考点详情
</button>
<button :disabled="btn" class="btn-red" size="mini" style="margin: 0 20rpx 0 0;"
@click="payTheFees">去缴费
</button>
<button v-if="form.deptType!=1" class="btn-red-kx" size="mini" style="margin: 0 20rpx 0 0;"
@click="auditEditFN">审核详情
@click="auditEditFN(1)">审核详情
</button>
</view>
</view>
......@@ -167,12 +175,15 @@ const applyPopup = ref(null)
const popupShow = ref(false)
// 考点审核状态 0 未提交 1 审核中 2 审核成功 3 审核失败
const auditStatus = ref(0)
const openId = uni.getStorageSync('openId')
onShow(() => {
console.log(openId)
init()
if (form.value.deptType != 1) { // 修复:原代码deptType未定义,改为form.value.deptType
getMyStatusAPI()
}
console.log()
})
// 页面卸载时恢复滚动(防止异常锁死)
......@@ -339,9 +350,9 @@ function goToApplyPage() {
})
}
function auditEditFN() {
function auditEditFN(type) {
uni.navigateTo({
url: `/myCenter/reviewList`
url: `/myCenter/reviewList?type=${type}`
})
}
......@@ -599,4 +610,9 @@ function payTheFees() {
:deep(.uni-popup__mask) {
touch-action: none !important;
}
.btn-red, .btn-red-kx {
padding: 0 !important;
width: 140rpx;
}
</style>
......
......@@ -4,35 +4,35 @@
<view class="search-area">
<view class="search-item">
<text>考官姓名:</text>
<input v-model="queryParams.name" placeholder="请输入考官姓名" class="search-input" />
<input v-model="queryParams.name" class="search-input" placeholder="请输入考官姓名"/>
</view>
<view class="search-item">
<text>考官编号:</text>
<input v-model="queryParams.certCode" placeholder="请输入考官编号" class="search-input" />
<input v-model="queryParams.certCode" class="search-input" placeholder="请输入考官编号"/>
</view>
<view class="search-buttons">
<button class="search-btn" @click="handleQuery">查询</button>
<button class="reset-btn" @click="resetQuery">重置</button>
</view>
</view>
<view class="list-item" v-for="(item, index) in infoList" :key="item.perId">
<view v-for="(item, index) in infoList" :key="item.perId" class="list-item">
<view class="info">
<view class="name">{{ item.name }} {{ item.perCode }}</view>
<view class="idc">证件号码:{{ item.idcCode }}</view>
<view class="reg">注册地:{{ item.memName }}</view>
</view>
<button
class="choose-btn"
:class="{ disabled: checkChosen(item) }"
@click="handleChoose(item)"
:disabled="checkChosen(item)"
class="choose-btn"
@click="handleChoose(item)"
>
{{ checkChosen(item) ? '已选择' : '选择' }}
</button>
</view>
<uni-popup ref="expirePopup" type="center" background-color="rgba(0,0,0,0.5)">
<uni-popup ref="expirePopup" background-color="rgba(0,0,0,0.5)" type="center">
<view class="custom-modal">
<view class="modal-title">提示</view>
<view class="modal-content">该考官资质已过期,是否继续添加?</view>
......@@ -46,8 +46,8 @@
</template>
<script setup>
import { ref, reactive, toRefs } from 'vue'
import { onLoad } from '@dcloudio/uni-app';
import {ref, reactive, toRefs} from 'vue'
import {onLoad} from '@dcloudio/uni-app';
import * as api from '@/common/api.js'
import _ from 'lodash'
......@@ -63,13 +63,10 @@ const memId = ref('')
const chosen = ref([])
const expirePopup = ref(null)
const currentExpireItem = ref(null)
onLoad((option) => {
isValidity.value = option.isValidity
memId.value = option.memId
chosen.value = JSON.parse(option.chosen)
})
const infoList = ref([])
const loading = ref(false)
const total = ref(0)
const selfSelect = ref('0')
const data = reactive({
queryParams: {
pageNum: 1,
......@@ -80,18 +77,23 @@ const data = reactive({
shenMemId: ''
}
})
const { queryParams } = toRefs(data)
const {queryParams} = toRefs(data)
onLoad((option) => {
console.log(option)
isValidity.value = option.isValidity
memId.value = option.memId
chosen.value = JSON.parse(option.chosen)
selfSelect.value = option.selfSelect ?? '1'
})
const infoList = ref([])
const loading = ref(false)
const total = ref(0)
// 获取考官列表
async function getList() {
if (!queryParams.value.name)
return uni.showToast({ title: '请输入考官姓名', icon: 'none' })
if (queryParams.value.type == 1 && !queryParams.value.certCode)
return uni.showToast({ title: '请输入考官编号', icon: 'none' })
if (!queryParams.value.name)
return uni.showToast({title: '请输入考官姓名', icon: 'none'})
if (queryParams.value.type == 1 && !queryParams.value.certCode)
return uni.showToast({title: '请输入考官编号', icon: 'none'})
loading.value = true
const res = await api.getCoachList(queryParams.value)
......@@ -100,7 +102,7 @@ async function getList() {
loading.value = false
if (infoList.value.length === 0) {
uni.showToast({ title: '请核实考官编号、有效期及归属地!', icon: 'none' })
uni.showToast({title: '请核实考官编号、有效期及归属地!', icon: 'none'})
}
}
......@@ -126,8 +128,9 @@ function resetQuery() {
}
async function handleChoose(row) {
debugger
if (checkChosen(row)) {
return uni.showToast({ title: '已选择该考官', icon: 'none' })
return uni.showToast({title: '已选择该考官', icon: 'none'})
}
// 资质过期逻辑
......@@ -150,11 +153,19 @@ async function confirmAddExpireExaminer() {
if (!currentExpireItem.value) return
try {
if (selfSelect.value == 1) {
// 自己添加
await api.selfAdd(currentExpireItem.value.perId)
} else {
// 省级添加
await api.otherAdd(memId.value, currentExpireItem.value.perId)
}
await api.otherAdd(memId.value, currentExpireItem.value.perId)
uni.showToast({ title: '添加成功', icon: 'success' })
uni.navigateBack({ delta: 1 })
uni.showToast({title: '添加成功', icon: 'success'})
uni.navigateBack({delta: 1})
} catch (err) {
uni.showToast({ title: '添加失败', icon: 'none' })
uni.showToast({title: '添加失败', icon: 'none'})
} finally {
expirePopup.value.close()
currentExpireItem.value = null
......@@ -184,6 +195,7 @@ async function confirmAddExpireExaminer() {
align-items: center;
margin-bottom: 20rpx;
}
.search-input {
flex: 1;
border: 1rpx solid #ddd;
......@@ -198,6 +210,7 @@ async function confirmAddExpireExaminer() {
margin-top: 30rpx;
margin-left: 80px;
}
.search-btn, .reset-btn {
width: 220rpx;
height: 70rpx;
......@@ -206,10 +219,12 @@ async function confirmAddExpireExaminer() {
text-align: center;
font-size: 28rpx;
}
.search-btn {
background: #C4121B;
color: #fff;
}
.reset-btn {
background: #f7f7f7;
color: #333;
......@@ -230,19 +245,23 @@ async function confirmAddExpireExaminer() {
border-bottom: 1rpx solid #eee;
background-color: #fff;
}
.info {
flex: 1;
}
.name {
font-size: 30rpx;
font-weight: bold;
color: #333;
}
.idc, .reg {
font-size: 26rpx;
color: #666;
margin: 20rpx 0;
}
.choose-btn {
color: #C4121B;
font-size: 26rpx;
......@@ -252,6 +271,7 @@ async function confirmAddExpireExaminer() {
background-color: #fff;
margin: 10rpx auto;
}
.choose-btn.disabled {
color: #ccc;
border-color: #ccc;
......@@ -266,23 +286,27 @@ async function confirmAddExpireExaminer() {
box-sizing: border-box;
text-align: center;
}
.modal-title {
font-size: 36rpx;
font-weight: 600;
color: #333;
margin-bottom: 30rpx;
}
.modal-content {
font-size: 30rpx;
color: #666;
line-height: 1.6;
margin-bottom: 30rpx;
}
.modal-btns {
display: flex;
justify-content: space-between;
gap: 20rpx;
}
.btn-cancel {
flex: 1;
height: 80rpx;
......@@ -293,6 +317,7 @@ async function confirmAddExpireExaminer() {
font-size: 32rpx;
border: none;
}
.btn-confirm {
flex: 1;
height: 80rpx;
......@@ -303,8 +328,9 @@ async function confirmAddExpireExaminer() {
font-size: 32rpx;
border: none;
}
/* 去除button默认边框 */
.btn-cancel::after, .btn-confirm::after {
border: none;
}
</style>
\ No newline at end of file
</style>
......
......@@ -2,25 +2,32 @@
<view class="container">
<!-- 考官选择类型 -->
<view class="radio-section">
<radio-group @change="onSelfSelectChange" class="radio-group">
<radio-group class="radio-group" @change="onSelfSelectChange">
<label class="radio-item">
<radio value="1" :checked="form.selfSelect == '1'" class="custom-radio" />
<radio :checked="form.selfSelect == '1'" class="custom-radio" value="1"/>
<text class="radio-text">自行录入考官(级位考官)</text>
</label>
<label class="radio-item">
<radio value="0" :checked="form.selfSelect == '0'" class="custom-radio" />
<label v-if="shenForm.memberEpAudit==1" class="radio-item">
<radio :checked="form.selfSelect == '0'" class="custom-radio" value="0"/>
<text class="radio-text">省跆协指派考官</text>
</label>
</radio-group>
</view>
<view class="section">
<!-- 自行录入考官区域 -->
<view class="section examiner-section" v-if="showExamine">
<view v-if="form.selfSelect==0" class="section examiner-section">
<view class="modal-title">温馨提示</view>
<view class="modal-content"> 关于考官指派,请联系{{ shenForm.baseName }},联系电话:{{ shenForm.phone }}
</view>
</view>
<!-- 温馨提示 -->
<view v-if="showExamine" class="section examiner-section">
<button class="add-btn" @click="handelAddExamine">+ 添加考官</button>
</view>
<view class="examiner-list" v-if="showExamine">
<view class="examiner-item" v-for="(item, index) in list" :key="item.id">
<view v-if="showExamine" class="examiner-list">
<view v-for="(item, index) in list" :key="item.id" class="examiner-item">
<view class="info">
<text class="name">{{ item.perName }} {{ item.perCode }}</text>
<text class="idc">证件号码:{{ item.perIdcCode }}</text>
......@@ -34,9 +41,9 @@
<view class="submit-area">
<button class="submit-btn" @click="handelSubmit">确定提交</button>
</view>
<!-- 自定义考点申请弹窗(替换原uni.showModal) -->
<uni-popup ref="applyPopup" type="center" background-color="rgba(0,0,0,0.5)">
<uni-popup ref="applyPopup" background-color="rgba(0,0,0,0.5)" type="center">
<view class="custom-modal">
<view class="modal-title">考点申请</view>
<view class="modal-btns">
......@@ -46,9 +53,9 @@
<view class="modal-tip">友情提示:非考点无法申请级位考试</view>
</view>
</uni-popup>
<!-- 自定义删除确认弹窗 -->
<uni-popup ref="delPopup" type="center" background-color="rgba(0,0,0,0.5)">
<uni-popup ref="delPopup" background-color="rgba(0,0,0,0.5)" type="center">
<view class="custom-modal">
<view class="modal-title">提示</view>
<view class="modal-content">确定删除该考官吗?</view>
......@@ -58,20 +65,21 @@
</view>
</view>
</uni-popup>
<!-- 自定义省跆协指派提示弹窗 -->
<uni-popup ref="assignPopup" type="center" background-color="rgba(0,0,0,0.5)">
<uni-popup ref="assignPopup" background-color="rgba(0,0,0,0.5)" type="center">
<view class="custom-modal">
<view class="modal-title">温馨提示</view>
<view class="modal-content">关于考官指派,请联系河北省跆协,联系电话:XXXX</view>
<view class="modal-content"> 关于考官指派,请联系{{ shenForm.baseName }},联系电话:{{ shenForm.phone }}
</view>
<view class="modal-btns">
<button class="btn-confirm single-btn" @click="closeAssignPopup()">我知道了</button>
</view>
</view>
</uni-popup>
<!-- 自定义提交成功弹窗 -->
<uni-popup ref="successPopup" type="center" background-color="rgba(0,0,0,0.5)">
<uni-popup ref="successPopup" background-color="rgba(0,0,0,0.5)" type="center">
<view class="custom-modal">
<view class="modal-title">成功</view>
<view class="modal-content">提交成功,请等待审核</view>
......@@ -84,9 +92,10 @@
</template>
<script setup>
import { ref, } from 'vue'
import { onLoad,onShow } from '@dcloudio/uni-app'
import {ref,} from 'vue'
import {onLoad, onShow} from '@dcloudio/uni-app'
import * as api from '@/common/api.js'
import {getShenMemberInfo} from "@/common/api.js";
const form = ref({
selfSelect: '1' // 1:自行录入 0:省跆协指派
......@@ -95,6 +104,7 @@ const showExamine = ref(true)
const loading = ref(false)
const list = ref([])
const memId = ref(null)
const shenForm = ref({})
// 弹窗引用
const applyPopup = ref(null)
......@@ -112,27 +122,35 @@ onShow(() => {
if (memId.value) {
getExaminer()
}
getShenMemberInfoFn()
})
async function getExaminer() {
loading.value = true
const res = await api.listApi({ memId: memId.value })
const res = await api.listApi({memId: memId.value})
list.value = res.rows
loading.value = false
}
async function getShenMemberInfoFn() {
const res = await api.getShenMemberInfo()
shenForm.value = res.data ?? {}
}
// 删除考官:打开自定义弹窗
function handleDel(row) {
currentDelItem.value = row
delPopup.value.open()
}
// 确认删除
async function confirmDel() {
await api.examinerDel(currentDelItem.value.id)
uni.showToast({ title: '删除成功', icon: 'success' })
getExaminer()
uni.showToast({title: '删除成功', icon: 'success'})
await getExaminer()
closeDelPopup()
}
function closeDelPopup() {
delPopup.value.close()
}
......@@ -141,10 +159,11 @@ function closeDelPopup() {
function onSelfSelectChange(e) {
form.value.selfSelect = e.detail.value
showExamine.value = e.detail.value == '1'
if (e.detail.value == '2') {
if (e.detail.value == '0') {
assignPopup.value.open()
}
}
function closeAssignPopup() {
assignPopup.value.close()
}
......@@ -159,19 +178,20 @@ function handelAddExamine() {
// 提交申请:打开自定义成功弹窗
async function handelSubmit() {
if (!form.value.selfSelect) {
return uni.showToast({ title: '请选择考官类型', icon: 'none' })
return uni.showToast({title: '请选择考官类型', icon: 'none'})
}
if (form.value.selfSelect == '1' && list.value.length == 0) {
return uni.showToast({ title: '请添加考官', icon: 'none' })
return uni.showToast({title: '请添加考官', icon: 'none'})
}
try {
await api.commitExamPointApply(form.value)
successPopup.value.open()
} catch (err) {
uni.showToast({ title: err.data.msg, icon: 'none' })
uni.showToast({title: err.data.msg, icon: 'none'})
}
}
function confirmSuccess() {
successPopup.value.close()
uni.navigateBack()
......@@ -181,9 +201,11 @@ function confirmSuccess() {
function openApplyPopup() {
applyPopup.value.open()
}
function closeApplyPopup() {
applyPopup.value.close()
}
function confirmApply() {
applyPopup.value.close()
// 此处添加考点申请逻辑
......@@ -195,9 +217,11 @@ function confirmApply() {
.container {
min-height: 100vh;
}
.section{
padding:15rpx 20rpx;
.section {
padding: 15rpx 20rpx;
}
/* 单选框区域 */
.radio-section {
background: #fff;
......@@ -332,28 +356,33 @@ function confirmApply() {
box-sizing: border-box;
text-align: center;
}
.modal-title {
font-size: 36rpx;
font-weight: 600;
color: #333;
margin-bottom: 30rpx;
}
.modal-content {
font-size: 30rpx;
color: #666;
line-height: 1.6;
margin-bottom: 30rpx;
}
.modal-tip {
font-size: 28rpx;
color: #FF7A00;
margin-top: 20rpx;
}
.modal-btns {
display: flex;
justify-content: space-between;
gap: 20rpx;
}
.btn-cancel {
flex: 1;
height: 80rpx;
......@@ -364,6 +393,7 @@ function confirmApply() {
font-size: 32rpx;
border: none;
}
.btn-confirm {
flex: 1;
height: 80rpx;
......@@ -374,10 +404,12 @@ function confirmApply() {
font-size: 32rpx;
border: none;
}
.single-btn {
flex: 1;
}
.btn-cancel::after, .btn-confirm::after {
border: none;
}
</style>
\ No newline at end of file
</style>
......
<template>
<view>
<view class="wBox">
<view class="tt">
审核信息
</view>
<view>
<view class="stepItem" v-for="(n,index) in recordList" :key="index">
<view class="time">{{n.auditTime||'待审批'}}</view>
<view class="content">
<view class="status">
<text v-if="n.auditResult==1" class="text-success">审核通过</text>
<text v-if="n.auditResult==0" class="text-danger"> 审核拒绝</text>
</view>
<!-- <view class="name">{{index+1}}</view> -->
<view class="deptName">{{n.auditDeptName}}</view>
<view v-if="n.auditResult==0">
备注:{{n.auditMsg||'/' }}
</view>
</view>
</view>
</view>
</view>
</view>
<view>
<view class="wBox">
<view class="tt">
审核信息
</view>
<view>
<view v-for="(n,index) in recordList" :key="index" class="stepItem">
<view class="time">{{ n.auditTime || '待审批' }}</view>
<view class="content">
<view class="status">
<text v-if="n.auditResult==1" class="text-success">审核通过</text>
<text v-if="n.auditResult==0" class="text-danger"> 审核拒绝</text>
</view>
<!-- <view class="name">{{index+1}}</view> -->
<view class="deptName">{{ n.auditDeptName }}</view>
<view v-if="n.auditResult==0">
备注:{{ n.auditMsg || '/' }}
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api.js'
import config from '@/config.js'
import _ from 'underscore'
import to from 'await-to-js'
import {
onMounted,
ref
} from 'vue'
import {
onLoad,
onShow
} from '@dcloudio/uni-app'
const app = getApp();
const userType = ref('')
const recordList = ref([])
onLoad(async (option) => {
await getMyRecentFN()
})
import * as api from '@/common/api.js'
import config from '@/config.js'
import _ from 'underscore'
import to from 'await-to-js'
import {
onMounted,
ref
} from 'vue'
import {
onLoad,
onShow
} from '@dcloudio/uni-app'
async function getMyRecentFN() {
const [err, res] = await to(api.getMyRecent())
if (!err && res.data && res.data.auditLogs) {
recordList.value = JSON.parse(res.data.auditLogs)
}
}
</script>
const app = getApp();
const userType = ref('')
const recordList = ref([])
<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;
onLoad(async (option) => {
console.log(option)
if (option.type == 1) await getMyRecentFN()
if (option.type == 2) await getMyRecentExamFn()
})
.tt {
color: #0A1629;
margin: 0 0 30rpx;
font-size: 30rpx;
}
async function getMyRecentFN() {
const [err, res] = await to(api.getMyRecent())
if (!err && res.data && res.data.auditLogs) {
recordList.value = JSON.parse(res.data.auditLogs)
}
}
.ddd {
font-size: 28rpx;
color: #333;
margin: 0 0 10rpx;
async function getMyRecentExamFn() {
const [err, res] = await to(api.getMyRecentExam())
if (!err && res.data && res.data.auditLogs) {
recordList.value = JSON.parse(res.data.auditLogs)
}
}
</script>
.lab {
color: #999;
display: inline-block;
text-align: justify;
}
}
}
</style>
\ No newline at end of file
<style lang="scss" scoped>
.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;
margin: 0 0 10rpx;
.lab {
color: #999;
display: inline-block;
text-align: justify;
}
}
}
</style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!