d3376bed by 杨炀

1.省级-月结缴费

2.去除三级协会显示
1 parent be737fae
......@@ -1163,4 +1163,26 @@ export function getMyCertStage() {
url: `/member/certified/getMyCertStage`,
method: 'get'
})
}
// 月结列表
export function mentDocList(data) {
return request({
url: '/person/paymentDocYj/list',
method: 'get',
params: data
})
}
// 个人会员月结缴费单
export function downJiaoYJFei(arr) {
return request({
url: `/person/paymentDocYj/downJiaoFei/${arr}`,
method: 'post'
})
}
export function queryProcess(id) {
return request({
url: `/system/fileInfo/queryProcess/${id}`,
method: 'get'
})
}
\ No newline at end of file
......
......@@ -4,12 +4,12 @@
// staging 会员系统
// const baseUrl_api = "http://22yidpjzjifv.ngrok.xiaomiqiu123.top/stage-api/";
// const baseUrl_api = "http://123.60.96.243/stage-api/";
// const baseUrl_api = "http://36.153.235.222:7899/stage-api";
// const baseUrl_api = 'http://192.168.1.130:8787'
// const baseUrl_api = 'https://ztx.itechtop.cn/stage-api'
// const baseUrl_api = 'https://tkcn.19wk.cn:8443/stage-api'
const baseUrl_api = 'https://tkcn.19wk.cn:8443/stage-api'
const baseUrl_api = 'https://system.taekwondo.org.cn/stage-api'
// const baseUrl_api = 'https://system.taekwondo.org.cn/stage-api'
export default {
baseUrl_api
}
......
......@@ -64,7 +64,8 @@
dType: 4,
status: 2
})
const navs = ref(['道馆', '三级协会', '二级协会', '一级协会'])
const navs = ref(['道馆', '二级协会', '一级协会'])
// const navs = ref(['道馆', '三级协会', '二级协会', '一级协会'])
const list = ref([])
const paging = ref(null)
const forms = ref({})
......@@ -79,9 +80,11 @@
deptType.value = app.globalData.deptType
// 部门类型 1:中跆协 2:省 3:直属 4:市 5:区 6: 团体
if (deptType.value == 2 || deptType.value == 3) {
navs.value = ['道馆', '三级协会', '二级协会']
// navs.value = ['道馆', '三级协会', '二级协会']
navs.value = ['道馆', '二级协会']
} else if (deptType.value == 4) {
navs.value = ['道馆', '三级协会']
// navs.value = ['道馆', '三级协会']
navs.value = ['道馆']
}
getList()
getGroupInfo()
......
......@@ -354,6 +354,30 @@
"navigationBarTitleText" : "合并审核",
"enablePullDownRefresh" : false
}
},
{
"path" : "monthFee",
"style" :
{
"navigationBarTitleText" : "月结缴费",
"enablePullDownRefresh" : false
}
},
{
"path" : "webview/webview",
"style" :
{
"navigationBarTitleText" : "下载",
"enablePullDownRefresh" : false
}
},
{
"path" : "monthFeeDetail",
"style" :
{
"navigationBarTitleText" : "月结详情",
"enablePullDownRefresh" : false
}
}]
}, {
"root": "group",
......
......@@ -80,7 +80,11 @@
</view>
<view @click="goPath('/personalVip/feeBill')">
<image :src="config.baseUrl_api+'/fs/static/icon/6.png'" />
会员缴费单
缴费单
</view>
<view @click="goPath('/personalVip/monthFee')">
<image :src="config.baseUrl_api+'/fs/static/icon/30.png'" />
月结缴费
</view>
<view @click="goPath('/personalVip/changeVip')">
<image :src="config.baseUrl_api+'/fs/static/icon/25.png'" />
......
......@@ -494,22 +494,22 @@
if(baseFormData.value.idcType=='4'){
baseFormData.value.idcType='0'
}
api.addPersonToMyDept(baseFormData.value).then(res => {
if (res.data == 0) {
api.addPersonToMyDept(baseFormData.value).then(Response => {
if (Response.data == 0) {
let msg = '该成员,实名认证未通过,注册失败!'
uni.showModal({
content: msg,
title: '提示',
success: function(res) {}
success: function() {}
})
return
}
if (res.data * 1 < 0) {
if (Response.data * 1 < 0) {
// 会员调入弹出
uni.showModal({
content: '该会员已存在其他道馆,如需添加,请发起会员调动',
title: '提示',
success: function(res) {}
success: function() {}
})
return
}
......
<template>
<view>
<!-- 月结 -->
<view class="appList">
<view class="appItem" v-for="(item,index) in list" :key="index">
<view class="status" @click="goDetail(item)">
<text v-if="item.settleFlag == 0" class="text-warning">已结算</text>
<text v-if="item.settleFlag == 1 && item.payFlag == 0" class="text-success">已上传</text>
<text v-if="item.settleFlag == 1 && item.payFlag == 1" class="text-danger">未上传</text>
</view>
<view class="date" @click="goDetail(item)">
<uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
<text v-if="item.yjTime">下发日期 {{item.yjTime?.slice(0,10)}}</text>
</view>
<view class="text-primary" @click="goDetail(item)">{{item.yjCode}}</view>
<view class="name mt0" @click="goDetail(item)">{{item.yjName}}</view>
<view class="flexbox" style="margin-bottom: 20rpx;" @click="goDetail(item)">
<view>
缴费凭证
<view>
<text v-if="item.payFlag == 0" class="text-success">已上传</text>
<text v-else class="text-danger">未上传</text>
</view>
</view>
<view>
结算单数量
<view>{{item.recordCount}}</view>
</view>
<view>
费用合计
<view> <text>¥{{item.recordTotalFee}}</text></view>
</view>
</view>
<view class="pp">
结算单日期范围:{{item.timeRange}}
</view>
<view class="pp">
<text v-if="item.payTime">结算日期:{{item.payTime?.slice(0,10)}}</text>
</view>
<view class="func">
<button
@click="handleUpdate(item)" v-if="item.settleFlag != 0">上传凭证
</button>
<button @click="handleDownload(item)" >下载缴费通知单</button>
</view>
</view>
</view>
<view class="nodata" v-if="list.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
<view style="height:200rpx;"></view>
<!-- 上传凭证 -->
<uni-popup ref="UpPop" type="bottom" background-color="#fff" animation>
<view class="popBody">
<uni-forms v-model="form">
<uni-forms-item label="缴费日期" required>
<uni-datetime-picker v-model="form.payTime"></uni-datetime-picker>
</uni-forms-item>
<uni-forms-item label="缴费凭证" required>
<uni-file-picker limit="1" file-mediatype="all" file-extname="png,jpg,jpeg,pdf,zip"
@select="selectFile"
@progress="fileProgress" @delete="delSupplementFile(index)"></uni-file-picker>
</uni-forms-item>
<uni-forms-item label="备注">
<uni-easyinput v-model="form.remark" type="textarea"></uni-easyinput>
</uni-forms-item>
</uni-forms>
<button class="btn-red" @click="uploadSure">确定</button>
</view>
</uni-popup>
</view>
</template>
<script setup>
import * as api from '@/common/api.js'
import config from '@/config.js'
import {
onMounted,
ref
} from 'vue'
import {
onShow
} from '@dcloudio/uni-app'
const app = getApp();
const list = ref([])
const deptType = ref('')
const UpPop = ref(null)
const form = ref({
docId:'',
payTime:'',
url:'',
remark:''
})
onShow(() => {
if (app.globalData.isLogin) {
init()
} else {
app.firstLoadCallback = () => {
init()
};
}
})
function init() {
getList()
}
function getList() {
api.mentDocList().then(res => {
list.value = res.rows
})
}
function handleUpdate(item) {
form.value.yjId = item.yjId
UpPop.value.open()
}
let selectFileValue = {}
function selectFile(e) {
let file = e.tempFiles[0]
if(!file){
return
}
api.uploadFile(e).then(data => {
selectFileValue = {
url: data.msg,
name: file.name,
extname: file.extname
}
form.value.url=JSON.stringify([selectFileValue])
});
}
function fileProgress(e) {
console.log('progress:'+ e)
}
function delSupplementFile(index) {
selectFileValue = {}
}
function uploadSure(){
console.log(form.value)
api.commitPaymentVoucher(form.value).then(res=>{
UpPop.value.close()
form.value = {}
uni.showToast({
icon:'none',
title:'操作成功'
})
getList()
})
}
function goDetail(item) {
//详情
console.log(item.yjId)
// let path = `/personalVip/feeBillDetail?docId=${item.docId}`
let path = `/personalVip/monthFeeDetail?id=${item.yjId}`
uni.navigateTo({
url: path
});
}
function handleDownload(item){
// let url = `/download?arr=${item.yjId}&type=batchMemberYJFeeBill`
uni.showLoading({
title:'加载中'
})
api.downJiaoYJFei(item.yjId).then(res=>{
circulation(res.data)
})
}
function circulation(id) {
api.queryProcess(id).then(res=>{
if (res.data.url) {
uni.hideLoading()
goWebView(config.baseUrl_api + res.data.url)
} else {
circulation(id)
}
})
}
function goWebView(url) {
url = url.replace("http://", "https://")
uni.showLoading({
title: '下载中'
});
uni.downloadFile({
url: url,
success: function(res) {
uni.hideLoading();
var filePath = res.tempFilePath;
uni.showLoading({
title: '正在打开'
});
uni.openDocument({
filePath: filePath,
showMenu: true,
success: function(res) {
uni.hideLoading();
},
fail: function(err) {
uni.hideLoading();
uni.showToast({
title: err,
icon: 'none',
duration: 2000
});
}
});
},
fail: function(error) {
uni.hideLoading();
uni.showToast({
title: `下载失败`,
icon: 'none',
duration: 2000
});
}
});
}
</script>
<style scoped lang="scss">
.popBody {
font-size: 28rpx;
line-height: 1.5;
overflow: auto;
padding: 30rpx;
.btn-red {
margin: 50rpx 0 30rpx;
}
}
</style>
\ No newline at end of file
<template>
<view>
<view class="appList">
<view class="appItem" v-for="(item,index) in list" :key="index">
<view class="status" @click="goDetail(item)">
<text v-if="item.record.auditStatus==0" class="text-primary">审核中</text>
<text v-if="item.record.auditStatus==1" class="text-success"> 审核通过</text>
<text v-if="item.record.auditStatus==2" class="text-danger"> 审核拒绝</text>
<text v-if="item.record.auditStatus==3" class="text-warning">已撤回</text>
</view>
<view class="date" @click="goDetail(item)">
<text v-if="item.record?.overDate">{{item.record?.overDate?.slice(0,10)}} 审核</text>
</view>
<view class="text-primary" @click="goDetail(item)">{{item.wfCode}}</view>
<view class="name mt0" @click="goDetail(item)">{{item.finalDocName}}</view>
<view class="flexbox" @click="goDetail(item)">
<view v-if="item.payNoticeSendTime">
下发日期
<view>{{item.payNoticeSendTime?.slice(0,10)}}</view>
</view>
<view>
人数
<view>{{item.personCount}}</view>
</view>
<view>
年限合计
<view>{{item.yearCount}}</view>
</view>
<view>
费用合计
<view>¥{{item.allPrice}}</view>
</view>
</view>
</view>
</view>
<view class="nodata" v-if="list.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>暂无数据</text>
</view>
<view style="height:200rpx;"></view>
</view>
</template>
<script setup>
import * as api from '@/common/api.js'
import config from '@/config.js'
import {ref} from 'vue'
import { onLoad } from '@dcloudio/uni-app'
const app = getApp()
const list = ref([])
const queryParams = ref({
yjId:''
})
const statistical = ref({})
onLoad((option) => {
if (app.globalData.isLogin) {
queryParams.value.yjId = option.id
init()
} else {
app.firstLoadCallback = () => {
queryParams.value.yjId = option.id
init()
};
}
})
function init(){
uni.showLoading({
title:"加载中"
})
api.getFeeBillList(queryParams.value).then(res=>{
list.value = res.rows
list.value.forEach(item => {
item.payEvidence = JSON.parse(item.payEvidence)
try {
item.record.content = JSON.parse(item.record.content)
} catch (e) {
console.log(e)
}
uni.hideLoading()
})
})
}
function goDetail(item) {
//详情
console.log(item.docId)
let path = `/personalVip/feeBillDetail?docId=${item.docId}`
uni.navigateTo({
url: path
});
}
</script>
<style lang="scss" scoped>
</style>
<template>
<view>
<web-view :src="config.baseUrl_api + downloadUrl"></web-view>
</view>
</template>
<script setup>
import {ref} from 'vue'
import {onLoad} from '@dcloudio/uni-app'
import config from '@/config.js'
const downloadUrl = ref('')
onLoad(option => {
downloadUrl.value = option.downloadUrl
})
</script>
<style scoped lang="scss">
</style>
\ No newline at end of file
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!