d3376bed by 杨炀

1.省级-月结缴费

2.去除三级协会显示
1 parent be737fae
...@@ -1163,4 +1163,26 @@ export function getMyCertStage() { ...@@ -1163,4 +1163,26 @@ export function getMyCertStage() {
1163 url: `/member/certified/getMyCertStage`, 1163 url: `/member/certified/getMyCertStage`,
1164 method: 'get' 1164 method: 'get'
1165 }) 1165 })
1166 }
1167 // 月结列表
1168 export function mentDocList(data) {
1169 return request({
1170 url: '/person/paymentDocYj/list',
1171 method: 'get',
1172 params: data
1173 })
1174 }
1175 // 个人会员月结缴费单
1176 export function downJiaoYJFei(arr) {
1177 return request({
1178 url: `/person/paymentDocYj/downJiaoFei/${arr}`,
1179 method: 'post'
1180 })
1181 }
1182
1183 export function queryProcess(id) {
1184 return request({
1185 url: `/system/fileInfo/queryProcess/${id}`,
1186 method: 'get'
1187 })
1166 } 1188 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -4,12 +4,12 @@ ...@@ -4,12 +4,12 @@
4 4
5 // staging 会员系统 5 // staging 会员系统
6 // const baseUrl_api = "http://22yidpjzjifv.ngrok.xiaomiqiu123.top/stage-api/"; 6 // const baseUrl_api = "http://22yidpjzjifv.ngrok.xiaomiqiu123.top/stage-api/";
7 // const baseUrl_api = "http://123.60.96.243/stage-api/"; 7 // const baseUrl_api = "http://36.153.235.222:7899/stage-api";
8 // const baseUrl_api = 'http://192.168.1.130:8787' 8 // const baseUrl_api = 'http://192.168.1.130:8787'
9 // const baseUrl_api = 'https://ztx.itechtop.cn/stage-api' 9 // const baseUrl_api = 'https://ztx.itechtop.cn/stage-api'
10 // const baseUrl_api = 'https://tkcn.19wk.cn:8443/stage-api' 10 const baseUrl_api = 'https://tkcn.19wk.cn:8443/stage-api'
11 11
12 const baseUrl_api = 'https://system.taekwondo.org.cn/stage-api' 12 // const baseUrl_api = 'https://system.taekwondo.org.cn/stage-api'
13 export default { 13 export default {
14 baseUrl_api 14 baseUrl_api
15 } 15 }
......
...@@ -64,7 +64,8 @@ ...@@ -64,7 +64,8 @@
64 dType: 4, 64 dType: 4,
65 status: 2 65 status: 2
66 }) 66 })
67 const navs = ref(['道馆', '三级协会', '二级协会', '一级协会']) 67 const navs = ref(['道馆', '二级协会', '一级协会'])
68 // const navs = ref(['道馆', '三级协会', '二级协会', '一级协会'])
68 const list = ref([]) 69 const list = ref([])
69 const paging = ref(null) 70 const paging = ref(null)
70 const forms = ref({}) 71 const forms = ref({})
...@@ -79,9 +80,11 @@ ...@@ -79,9 +80,11 @@
79 deptType.value = app.globalData.deptType 80 deptType.value = app.globalData.deptType
80 // 部门类型 1:中跆协 2:省 3:直属 4:市 5:区 6: 团体 81 // 部门类型 1:中跆协 2:省 3:直属 4:市 5:区 6: 团体
81 if (deptType.value == 2 || deptType.value == 3) { 82 if (deptType.value == 2 || deptType.value == 3) {
82 navs.value = ['道馆', '三级协会', '二级协会'] 83 // navs.value = ['道馆', '三级协会', '二级协会']
84 navs.value = ['道馆', '二级协会']
83 } else if (deptType.value == 4) { 85 } else if (deptType.value == 4) {
84 navs.value = ['道馆', '三级协会'] 86 // navs.value = ['道馆', '三级协会']
87 navs.value = ['道馆']
85 } 88 }
86 getList() 89 getList()
87 getGroupInfo() 90 getGroupInfo()
......
...@@ -354,6 +354,30 @@ ...@@ -354,6 +354,30 @@
354 "navigationBarTitleText" : "合并审核", 354 "navigationBarTitleText" : "合并审核",
355 "enablePullDownRefresh" : false 355 "enablePullDownRefresh" : false
356 } 356 }
357 },
358 {
359 "path" : "monthFee",
360 "style" :
361 {
362 "navigationBarTitleText" : "月结缴费",
363 "enablePullDownRefresh" : false
364 }
365 },
366 {
367 "path" : "webview/webview",
368 "style" :
369 {
370 "navigationBarTitleText" : "下载",
371 "enablePullDownRefresh" : false
372 }
373 },
374 {
375 "path" : "monthFeeDetail",
376 "style" :
377 {
378 "navigationBarTitleText" : "月结详情",
379 "enablePullDownRefresh" : false
380 }
357 }] 381 }]
358 }, { 382 }, {
359 "root": "group", 383 "root": "group",
......
...@@ -80,7 +80,11 @@ ...@@ -80,7 +80,11 @@
80 </view> 80 </view>
81 <view @click="goPath('/personalVip/feeBill')"> 81 <view @click="goPath('/personalVip/feeBill')">
82 <image :src="config.baseUrl_api+'/fs/static/icon/6.png'" /> 82 <image :src="config.baseUrl_api+'/fs/static/icon/6.png'" />
83 会员缴费单 83 缴费单
84 </view>
85 <view @click="goPath('/personalVip/monthFee')">
86 <image :src="config.baseUrl_api+'/fs/static/icon/30.png'" />
87 月结缴费
84 </view> 88 </view>
85 <view @click="goPath('/personalVip/changeVip')"> 89 <view @click="goPath('/personalVip/changeVip')">
86 <image :src="config.baseUrl_api+'/fs/static/icon/25.png'" /> 90 <image :src="config.baseUrl_api+'/fs/static/icon/25.png'" />
......
...@@ -494,22 +494,22 @@ ...@@ -494,22 +494,22 @@
494 if(baseFormData.value.idcType=='4'){ 494 if(baseFormData.value.idcType=='4'){
495 baseFormData.value.idcType='0' 495 baseFormData.value.idcType='0'
496 } 496 }
497 api.addPersonToMyDept(baseFormData.value).then(res => { 497 api.addPersonToMyDept(baseFormData.value).then(Response => {
498 if (res.data == 0) { 498 if (Response.data == 0) {
499 let msg = '该成员,实名认证未通过,注册失败!' 499 let msg = '该成员,实名认证未通过,注册失败!'
500 uni.showModal({ 500 uni.showModal({
501 content: msg, 501 content: msg,
502 title: '提示', 502 title: '提示',
503 success: function(res) {} 503 success: function() {}
504 }) 504 })
505 return 505 return
506 } 506 }
507 if (res.data * 1 < 0) { 507 if (Response.data * 1 < 0) {
508 // 会员调入弹出 508 // 会员调入弹出
509 uni.showModal({ 509 uni.showModal({
510 content: '该会员已存在其他道馆,如需添加,请发起会员调动', 510 content: '该会员已存在其他道馆,如需添加,请发起会员调动',
511 title: '提示', 511 title: '提示',
512 success: function(res) {} 512 success: function() {}
513 }) 513 })
514 return 514 return
515 } 515 }
......
1 <template>
2 <view>
3 <!-- 月结 -->
4 <view class="appList">
5 <view class="appItem" v-for="(item,index) in list" :key="index">
6 <view class="status" @click="goDetail(item)">
7 <text v-if="item.settleFlag == 0" class="text-warning">已结算</text>
8 <text v-if="item.settleFlag == 1 && item.payFlag == 0" class="text-success">已上传</text>
9 <text v-if="item.settleFlag == 1 && item.payFlag == 1" class="text-danger">未上传</text>
10 </view>
11 <view class="date" @click="goDetail(item)">
12 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
13 <text v-if="item.yjTime">下发日期 {{item.yjTime?.slice(0,10)}}</text>
14 </view>
15 <view class="text-primary" @click="goDetail(item)">{{item.yjCode}}</view>
16 <view class="name mt0" @click="goDetail(item)">{{item.yjName}}</view>
17
18 <view class="flexbox" style="margin-bottom: 20rpx;" @click="goDetail(item)">
19 <view>
20 缴费凭证
21 <view>
22 <text v-if="item.payFlag == 0" class="text-success">已上传</text>
23 <text v-else class="text-danger">未上传</text>
24 </view>
25 </view>
26 <view>
27 结算单数量
28 <view>{{item.recordCount}}</view>
29 </view>
30 <view>
31 费用合计
32 <view> <text>¥{{item.recordTotalFee}}</text></view>
33 </view>
34
35 </view>
36 <view class="pp">
37 结算单日期范围:{{item.timeRange}}
38 </view>
39 <view class="pp">
40 <text v-if="item.payTime">结算日期:{{item.payTime?.slice(0,10)}}</text>
41 </view>
42 <view class="func">
43 <button
44 @click="handleUpdate(item)" v-if="item.settleFlag != 0">上传凭证
45 </button>
46 <button @click="handleDownload(item)" >下载缴费通知单</button>
47 </view>
48 </view>
49 </view>
50 <view class="nodata" v-if="list.length==0">
51 <image mode="aspectFit" src="/static/nodata.png"></image>
52 <text>暂无数据</text>
53 </view>
54 <view style="height:200rpx;"></view>
55 <!-- 上传凭证 -->
56 <uni-popup ref="UpPop" type="bottom" background-color="#fff" animation>
57 <view class="popBody">
58 <uni-forms v-model="form">
59 <uni-forms-item label="缴费日期" required>
60 <uni-datetime-picker v-model="form.payTime"></uni-datetime-picker>
61 </uni-forms-item>
62 <uni-forms-item label="缴费凭证" required>
63
64 <uni-file-picker limit="1" file-mediatype="all" file-extname="png,jpg,jpeg,pdf,zip"
65 @select="selectFile"
66 @progress="fileProgress" @delete="delSupplementFile(index)"></uni-file-picker>
67 </uni-forms-item>
68 <uni-forms-item label="备注">
69 <uni-easyinput v-model="form.remark" type="textarea"></uni-easyinput>
70 </uni-forms-item>
71 </uni-forms>
72
73 <button class="btn-red" @click="uploadSure">确定</button>
74 </view>
75 </uni-popup>
76 </view>
77 </template>
78
79 <script setup>
80 import * as api from '@/common/api.js'
81 import config from '@/config.js'
82 import {
83 onMounted,
84 ref
85 } from 'vue'
86 import {
87 onShow
88 } from '@dcloudio/uni-app'
89 const app = getApp();
90 const list = ref([])
91 const deptType = ref('')
92 const UpPop = ref(null)
93 const form = ref({
94 docId:'',
95 payTime:'',
96 url:'',
97 remark:''
98 })
99 onShow(() => {
100 if (app.globalData.isLogin) {
101 init()
102 } else {
103 app.firstLoadCallback = () => {
104 init()
105 };
106 }
107 })
108
109 function init() {
110 getList()
111 }
112
113 function getList() {
114 api.mentDocList().then(res => {
115 list.value = res.rows
116 })
117 }
118
119 function handleUpdate(item) {
120 form.value.yjId = item.yjId
121 UpPop.value.open()
122 }
123 let selectFileValue = {}
124 function selectFile(e) {
125 let file = e.tempFiles[0]
126 if(!file){
127 return
128 }
129 api.uploadFile(e).then(data => {
130 selectFileValue = {
131 url: data.msg,
132 name: file.name,
133 extname: file.extname
134 }
135
136 form.value.url=JSON.stringify([selectFileValue])
137 });
138 }
139 function fileProgress(e) {
140 console.log('progress:'+ e)
141 }
142 function delSupplementFile(index) {
143 selectFileValue = {}
144 }
145 function uploadSure(){
146 console.log(form.value)
147 api.commitPaymentVoucher(form.value).then(res=>{
148 UpPop.value.close()
149 form.value = {}
150 uni.showToast({
151 icon:'none',
152 title:'操作成功'
153 })
154 getList()
155 })
156 }
157 function goDetail(item) {
158 //详情
159 console.log(item.yjId)
160 // let path = `/personalVip/feeBillDetail?docId=${item.docId}`
161 let path = `/personalVip/monthFeeDetail?id=${item.yjId}`
162 uni.navigateTo({
163 url: path
164 });
165 }
166 function handleDownload(item){
167 // let url = `/download?arr=${item.yjId}&type=batchMemberYJFeeBill`
168 uni.showLoading({
169 title:'加载中'
170 })
171 api.downJiaoYJFei(item.yjId).then(res=>{
172 circulation(res.data)
173 })
174 }
175 function circulation(id) {
176 api.queryProcess(id).then(res=>{
177 if (res.data.url) {
178 uni.hideLoading()
179 goWebView(config.baseUrl_api + res.data.url)
180 } else {
181 circulation(id)
182 }
183 })
184 }
185 function goWebView(url) {
186 url = url.replace("http://", "https://")
187 uni.showLoading({
188 title: '下载中'
189 });
190 uni.downloadFile({
191 url: url,
192 success: function(res) {
193 uni.hideLoading();
194 var filePath = res.tempFilePath;
195 uni.showLoading({
196 title: '正在打开'
197 });
198 uni.openDocument({
199 filePath: filePath,
200 showMenu: true,
201 success: function(res) {
202 uni.hideLoading();
203 },
204 fail: function(err) {
205 uni.hideLoading();
206 uni.showToast({
207 title: err,
208 icon: 'none',
209 duration: 2000
210 });
211 }
212 });
213 },
214 fail: function(error) {
215 uni.hideLoading();
216 uni.showToast({
217 title: `下载失败`,
218 icon: 'none',
219 duration: 2000
220 });
221 }
222 });
223 }
224 </script>
225
226 <style scoped lang="scss">
227 .popBody {
228 font-size: 28rpx;
229 line-height: 1.5;
230 overflow: auto;
231 padding: 30rpx;
232
233 .btn-red {
234 margin: 50rpx 0 30rpx;
235 }
236 }
237 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view>
3 <view class="appList">
4 <view class="appItem" v-for="(item,index) in list" :key="index">
5 <view class="status" @click="goDetail(item)">
6 <text v-if="item.record.auditStatus==0" class="text-primary">审核中</text>
7 <text v-if="item.record.auditStatus==1" class="text-success"> 审核通过</text>
8 <text v-if="item.record.auditStatus==2" class="text-danger"> 审核拒绝</text>
9 <text v-if="item.record.auditStatus==3" class="text-warning">已撤回</text>
10 </view>
11 <view class="date" @click="goDetail(item)">
12 <text v-if="item.record?.overDate">{{item.record?.overDate?.slice(0,10)}} 审核</text>
13 </view>
14 <view class="text-primary" @click="goDetail(item)">{{item.wfCode}}</view>
15 <view class="name mt0" @click="goDetail(item)">{{item.finalDocName}}</view>
16 <view class="flexbox" @click="goDetail(item)">
17 <view v-if="item.payNoticeSendTime">
18 下发日期
19 <view>{{item.payNoticeSendTime?.slice(0,10)}}</view>
20 </view>
21 <view>
22 人数
23 <view>{{item.personCount}}</view>
24 </view>
25 <view>
26 年限合计
27 <view>{{item.yearCount}}</view>
28 </view>
29 <view>
30 费用合计
31 <view>¥{{item.allPrice}}</view>
32 </view>
33
34 </view>
35 </view>
36 </view>
37 <view class="nodata" v-if="list.length==0">
38 <image mode="aspectFit" src="/static/nodata.png"></image>
39 <text>暂无数据</text>
40 </view>
41 <view style="height:200rpx;"></view>
42 </view>
43 </template>
44
45 <script setup>
46 import * as api from '@/common/api.js'
47 import config from '@/config.js'
48 import {ref} from 'vue'
49 import { onLoad } from '@dcloudio/uni-app'
50 const app = getApp()
51 const list = ref([])
52 const queryParams = ref({
53 yjId:''
54 })
55 const statistical = ref({})
56 onLoad((option) => {
57 if (app.globalData.isLogin) {
58 queryParams.value.yjId = option.id
59 init()
60 } else {
61 app.firstLoadCallback = () => {
62 queryParams.value.yjId = option.id
63 init()
64 };
65 }
66
67 })
68 function init(){
69 uni.showLoading({
70 title:"加载中"
71 })
72 api.getFeeBillList(queryParams.value).then(res=>{
73 list.value = res.rows
74 list.value.forEach(item => {
75 item.payEvidence = JSON.parse(item.payEvidence)
76 try {
77 item.record.content = JSON.parse(item.record.content)
78 } catch (e) {
79 console.log(e)
80 }
81 uni.hideLoading()
82 })
83 })
84 }
85 function goDetail(item) {
86 //详情
87 console.log(item.docId)
88 let path = `/personalVip/feeBillDetail?docId=${item.docId}`
89 uni.navigateTo({
90 url: path
91 });
92 }
93 </script>
94
95 <style lang="scss" scoped>
96
97 </style>
1 <template>
2 <view>
3 <web-view :src="config.baseUrl_api + downloadUrl"></web-view>
4 </view>
5 </template>
6
7 <script setup>
8 import {ref} from 'vue'
9 import {onLoad} from '@dcloudio/uni-app'
10 import config from '@/config.js'
11 const downloadUrl = ref('')
12 onLoad(option => {
13 downloadUrl.value = option.downloadUrl
14 })
15 </script>
16
17 <style scoped lang="scss">
18
19 </style>
...\ No newline at end of file ...\ 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!