37a8c626 by 张猛

团体审核

1 parent 584ddc04
...@@ -500,6 +500,15 @@ export function getGroupList(params) { ...@@ -500,6 +500,15 @@ export function getGroupList(params) {
500 }) 500 })
501 } 501 }
502 502
503 // 会员审核列表
504 export function listNewAPI(params) {
505 return request({
506 url: `/system/certifiedNew/list`,
507 method: 'get',
508 params
509 })
510 }
511
503 // 查询 512 // 查询
504 export function pickUp(data) { 513 export function pickUp(data) {
505 return request({ 514 return request({
...@@ -733,6 +742,22 @@ export function groupAudit(data) { ...@@ -733,6 +742,22 @@ export function groupAudit(data) {
733 }) 742 })
734 } 743 }
735 744
745 export function ztxAudit(params) {
746 return request({
747 url: `/system/certifiedNew/audit/${params.ids}?flag=${params.flag}&reason=${params.reason}`,
748 method: 'post',
749 params
750 })
751 }
752
753 export function shenAudit(params) {
754 return request({
755 url: `/system/certifiedNew/shenAudit/${params.ids}?flag=${params.flag}&reason=${params.reason}`,
756 method: 'post',
757 params
758 })
759 }
760
736 export function groupMergeApi(data) { 761 export function groupMergeApi(data) {
737 return request({ 762 return request({
738 url: `/member/certified/merge`, 763 url: `/member/certified/merge`,
...@@ -1894,3 +1919,16 @@ export function getExamInfo(examId) { ...@@ -1894,3 +1919,16 @@ export function getExamInfo(examId) {
1894 }) 1919 })
1895 } 1920 }
1896 1921
1922
1923 /**
1924 * 团体考试记录
1925 * @param id
1926 * @returns {*}
1927 */
1928 export function GroupGetLogs(id) {
1929 return request({
1930 url: `/system/certifiedNew/getLogs/${id}`,
1931 method: 'get'
1932 })
1933 }
1934
......
1 // dev 1 // dev
2 // const baseUrl_api = 'http://192.168.1.137:8787' 2 const baseUrl_api = 'http://192.168.1.137:8787'
3 const baseUrl_api = 'http://tk001.wxjylt.com/stage-api' 3 // const baseUrl_api = 'http://tk001.wxjylt.com/stage-api'
4 const loginImage_api = 'http://tk001.wxjylt.com/stage-api' 4 const loginImage_api = 'http://tk001.wxjylt.com/stage-api'
5 const payUrl = 'https://wxpay.cmbc.com.cn/mobilePlatform/appserver/lcbpPay.do' 5 const payUrl = 'https://wxpay.cmbc.com.cn/mobilePlatform/appserver/lcbpPay.do'
6 6
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <view class="text-center whitebg" v-if="userType=='2'">
4 <view class="cardNav">
5 <view class="active">审核</view>
6 <view @click="goMerge">合并</view>
7 <view @click="goMergeUp">提交</view>
8 </view>
9 </view>
10 <!-- 团队会员审核 --> 3 <!-- 团队会员审核 -->
11 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" 4 <uni-segmented-control :current="current" :values="navs" activeColor="#AD181F" class="whitebg" styleType="text"
12 styleType="text" activeColor="#AD181F"></uni-segmented-control> 5 @clickItem="onClickItem"></uni-segmented-control>
13 <view class="appList"> 6 <view class="appList">
14 <view class="vipData" v-if="userType == '1'" v-show="totalCost>0"> 7 <view v-show="statistical.totalCost>0" class="vipData">
15 <view>费用合计: 8 <view>费用合计:
16 <text>¥{{ totalCost.toFixed(2) }}</text> 9 <text>¥{{ statistical.totalCost.toFixed(2) }}</text>
17 </view> 10 </view>
18 </view> 11 </view>
19 12
20 <view class="appItem" v-for="(item,index) in list" :key="index"> 13 <view v-for="(item,index) in list" :key="index" class="appItem">
21 <view class="status" @click="goDetail(item)"> 14 <view class="status" @click="goDetail(item)">
22 <text v-if="item.auditStatus == 0" class="text-primary">审核中</text> 15 <text v-if="item.auditStatus == 1" class="text-primary">审核中</text>
23 <text v-if="item.auditStatus == 1" class="text-success">审核通过</text> 16 <text v-if="item.auditStatus == 2" class="text-success">审核通过</text>
24 <text v-if="item.auditStatus == 2" class="text-danger">审核拒绝</text> 17 <text v-if="item.auditStatus == 3" class="text-danger">审核拒绝</text>
25 <text v-if="item.auditStatus == 3" class="text-warning">审核撤回</text>
26 </view> 18 </view>
27 <view class="date"> 19 <view class="date">
28 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons> 20 <uni-icons color="#AD181F" size="16" type="calendar-filled"></uni-icons>
29 {{item.content.commitTime}} 提交 21 {{ item.commitTime }} 提交
30 </view> 22 </view>
31 <view class="text-primary" @click="goDetail(item)" v-if="item.content?.wfCode">{{item.content?.wfCode}} 23 <view v-if="item.wfCode">{{ item?.wfCode }}
32 </view> 24 </view>
33 <view class="name w100 mt0" @click="goDetail(item)"> 25 <view class="name w100 mt0" @click="goDetail(item)">
34 <!-- <text class="dot"></text> --> 26 {{ item.memName }}
35 {{item.content.certName}}
36 </view>
37 <view class="flexbox" @click="goDetail(item)">
38 <view v-if="userType == '3'">
39 所属省份
40 <view>{{item.content.province}}</view>
41 </view> 27 </view>
42 <view v-if="userType == '2'"> 28 <view class="text" @click="goDetail(item)">
43 所属一级 29 {{ item.shenMemName }}
44 <view>{{item.content.firstDeptName}}</view>
45 </view> 30 </view>
46 <view v-if="userType == '2'"> 31 <view class="flexbox" @click="goDetail(item)">
47 所属二级 32 <view>
48 <view>{{item.content.secondDeptName}}</view> 33 新会员/年限
34 <view>{{ item.isNew == 1 ? '是' : "否" }}
35 /{{ item.renewYear }}
49 </view> 36 </view>
50
51 <view v-if="deptType == 1">
52 会员/新会员/年限
53 <view>{{item.content.allCount}}/<text
54 class="text-danger">{{item.content.newCount}}</text>/{{item.content.renewYear}}
55 </view> 37 </view>
38 <view>
39 费用合计
40 <view> {{ (item.allPrice * 1).toFixed(2) }}</view>
56 </view> 41 </view>
57 <view v-else> 42 <view>
58 年限 43 政策优惠
59 <view>{{item.content.renewYear}}</view> 44 <view>
45 <text class="text-danger"> {{ item.discount ? item.discount : '--' }}</text>
60 </view> 46 </view>
61 <view v-if="deptType == 1">
62 费用合计
63 <view> ¥{{ (item?.content?.allFee*1).toFixed(2) }}</view>
64 </view> 47 </view>
65 <view v-if="deptType == 1" @click.stop="viewSettleFile(item.doc)">
66 缴费状态
67 <view> 48 <view>
68 <text v-if="item.doc?.settleFlag==0" class="text-warning">已结算</text> 49 付款费用
69 <text v-if="item.doc?.settleFlag==1&&item.doc.payFlag==0" class="text-success">已上传</text> 50 <view>
70 <text v-if="item.doc?.settleFlag==1&&item.doc.payFlag==1" class="text-danger">未上传</text> 51 <text class="text-warning"> ¥{{ item.finalPrice }}</text>
71 </view> 52 </view>
72 </view> 53 </view>
54 <view>
55 协会信息
56 <view>
57 <text :class="{'text-danger':item.checkPass == 0 }"> {{ item.checkPass == 0 ? '异常' : '正常' }}</text>
73 </view> 58 </view>
74 <view class="func" v-if="(userType == '1'&&item.auditStatus == 0)">
75 <button @click="audit(item.recordId,'0')">拒绝</button>
76 <button @click="audit(item.recordId,'1')">同意</button>
77 </view> 59 </view>
78 <!-- 中跆协 -->
79 <view class="func" v-if="(userType == '1'&&item.auditStatus == 1&&item.canTui==1)">
80 <button @click="sendBack(item)">撤回</button>
81 </view> 60 </view>
82 <!-- 市 --> 61 <view class="func">
83 <view class="func" v-if="userType == '3'">
84 <button @click="goGroupInfo(item)">机构资料</button> 62 <button @click="goGroupInfo(item)">机构资料</button>
85 <button v-if="item.auditStatus == 1&&item.isView==1&&item.content.allCount > 0" 63 <button v-if="queryParams.auditStatus==1" @click="audit(item.id,'0')">拒绝</button>
86 @click="sendBack(item)">撤回</button> 64 <button v-if="queryParams.auditStatus==1" @click="audit(item.id,'1')">同意</button>
87 <button v-if="item.auditStatus == 0" @click="audit(item.recordId,'0')">拒绝</button>
88 <button v-if="item.auditStatus == 0" @click="audit(item.recordId,'1')">同意</button>
89
90 </view> 65 </view>
91 <!-- 省 --> 66 <!-- 省 -->
92 <view class="func" v-if="userType == '2'">
93 <button @click="goGroupInfo(item)">机构资料</button>
94 <button v-if="item.auditStatus == 1" @click="sendBack(item)">撤回</button>
95 <button v-if="item.auditStatus == 0" @click="audit(item.recordId,'0')">拒绝</button>
96 <button v-if="item.auditStatus == 0" @click="audit(item.recordId,'1')">同意</button>
97 </view>
98 </view> 67 </view>
99 </view> 68 </view>
100 69
101 <view class="nodata" v-if="list.length==0"> 70 <view v-if="list.length==0" class="nodata">
102 <image mode="aspectFit" :src="config.baseUrl_api + '/fs/static/nodata.png'"></image> 71 <image :src="config.baseUrl_api + '/fs/static/nodata.png'" mode="aspectFit"></image>
103 <text>暂无数据</text> 72 <text>暂无数据</text>
104 </view> 73 </view>
105 <!-- <view v-if="userType=='2'" class="block-btn-box"> 74 <!-- <view v-if="userType=='2'" class="block-btn-box">
...@@ -109,29 +78,29 @@ ...@@ -109,29 +78,29 @@
109 </template> 78 </template>
110 79
111 <script setup> 80 <script setup>
112 import * as api from '@/common/api.js' 81 import * as api from '@/common/api.js'
113 import config from '@/config.js' 82 import config from '@/config.js'
114 import { 83 import {
115 onMounted, 84 onMounted,
116 ref 85 ref
117 } from 'vue' 86 } from 'vue'
118 import { 87 import {
119 onLoad 88 onLoad
120 } from '@dcloudio/uni-app' 89 } from '@dcloudio/uni-app'
121 const app = getApp(); 90
122 const queryParams = ref({ 91 const app = getApp();
123 // pageNum: 1, 92 const queryParams = ref({
124 // pageSize: 10 93 auditStatus: '1'
125 auditStatus: '0' 94 })
126 }) 95 const navs = ref(['审核中', '审核通过', '审核拒绝'])
127 const navs = ref(['审核中', '审核通过', '审核拒绝', '撤回']) 96 const current = ref()
128 const current = ref() 97 const list = ref([])
129 const list = ref([]) 98 const total = ref(0)
130 const total = ref(0) 99 const deptType = ref('')
131 const deptType = ref('') 100 const userType = ref('')
132 const userType = ref('') 101 const totalCost = ref(0)
133 const totalCost = ref(0) 102 const statistical = ref({})
134 onLoad(() => { 103 onLoad(() => {
135 if (app.globalData.isLogin) { 104 if (app.globalData.isLogin) {
136 init() 105 init()
137 } else { 106 } else {
...@@ -140,57 +109,52 @@ ...@@ -140,57 +109,52 @@
140 init() 109 init()
141 }; 110 };
142 } 111 }
143 }) 112 })
144 113
145 function init() { 114 function init() {
146 deptType.value = app.globalData.deptType 115 deptType.value = app.globalData.deptType
147 userType.value = app.globalData.userType 116 userType.value = app.globalData.userType
148 // console.log(userType.value) 117 // console.log(userType.value)
149 getList() 118 getList()
150 } 119 }
151 120
152 function onClickItem(e) { 121 function onClickItem(e) {
153 console.log(e) 122 queryParams.value.auditStatus = e.currentIndex + 1
154 queryParams.value.auditStatus = e.currentIndex
155 getList() 123 getList()
156 } 124 }
157 125
158 function getList() { 126 async function getList() {
159 uni.showLoading({ 127 uni.showLoading({
160 title: '加载中', 128 title: '加载中',
161 mask: true 129 mask: true
162 }) 130 })
163 if (deptType.value == 2 || deptType.value == 3) { 131 statistical.value = {
164 // 省 132 allCount: 0,
165 queryParams.value.mergeFlag = 0 133 totalCost: 0,
166 } else if (deptType.value == 1) { 134 renewYear: 0,
167 queryParams.value.noEmpty = 1 135 newCount: 0
168 } else if (deptType.value == 4 || deptType.value == 5) {
169 queryParams.value.noEmpty = 1
170 } 136 }
171 totalCost.value = 0 137 const res = await api.listNewAPI(queryParams.value)
172 api.getGroupList(queryParams.value).then(res => {
173 uni.hideLoading()
174 list.value = res.rows 138 list.value = res.rows
175 list.value.forEach(item => { 139 for (const val of list.value) {
176 item.content = JSON.parse(item.content) 140 statistical.value.renewYear += val.renewYear
177 if(item.doc){ 141 statistical.value.totalCost += val.finalPrice * 1
178 item.doc = JSON.parse(item.doc) 142 if (val.isNew == 1) {
143 statistical.value.newCount += 1
179 } 144 }
180 totalCost.value = totalCost.value + (item.content.allFee * 1) 145 statistical.value.allCount += 1
181 })
182 total.value = res.total
183 })
184 } 146 }
147 total.value = res.total
148 }
185 149
186 function audit(recordId, flag) { 150 function audit(recordId, flag) {
187 if (flag == '0') { 151 if (flag == '0') {
188 // 拒绝 152 // 拒绝
189 // 弹出框填写理由 153 // 弹出框填写理由
190 uni.showModal({ 154 uni.showModal({
191 title: '请输入拒绝理由', 155 title: '请输入拒绝理由',
192 editable: true, 156 editable: true,
193 success: function(res) { 157 success: function (res) {
194 if (res.confirm) { 158 if (res.confirm) {
195 if (!res.content) { 159 if (!res.content) {
196 uni.showToast({ 160 uni.showToast({
...@@ -208,28 +172,28 @@ ...@@ -208,28 +172,28 @@
208 uni.showModal({ 172 uni.showModal({
209 title: '提示', 173 title: '提示',
210 content: `确定审批通过吗`, 174 content: `确定审批通过吗`,
211 success: function(res) { 175 success: function (res) {
212 if (res.confirm) { 176 if (res.confirm) {
213 doApproval(recordId, flag) 177 doApproval(recordId, flag)
214 } 178 }
215 } 179 }
216 }) 180 })
217 } 181 }
218 } 182 }
219 183
220 function doApproval(recordId, flag, reason) { 184 function doApproval(recordId, flag, reason) {
221 var obj = { 185 let obj = {
222 flag: flag, 186 flag: flag,
223 reason: reason || '', 187 reason: reason || '',
224 recordIds: [] 188 ids: []
225 } 189 }
226 obj.recordIds.push(recordId) 190 obj.ids.push(recordId)
227 console.log(obj) 191 console.log(obj)
228 uni.showLoading({ 192 uni.showLoading({
229 title: '加载中', 193 title: '加载中',
230 mask: true 194 mask: true
231 }) 195 })
232 api.groupAudit(obj).then((res) => { 196 api.ztxAudit(obj).then((res) => {
233 uni.hideLoading() 197 uni.hideLoading()
234 uni.showToast({ 198 uni.showToast({
235 title: '操作成功', 199 title: '操作成功',
...@@ -237,46 +201,46 @@ ...@@ -237,46 +201,46 @@
237 }) 201 })
238 getList() 202 getList()
239 }) 203 })
240 } 204 }
241 205
242 function goDetail(item) { 206 function goDetail(item) {
243 const auditLog = encodeURIComponent(JSON.stringify(item.auditLog))
244 const form = encodeURIComponent(JSON.stringify(item)) 207 const form = encodeURIComponent(JSON.stringify(item))
245
246 if (userType.value == '1') { 208 if (userType.value == '1') {
247 // 查看 209 // 查看
248 let path = `/group/apply/mergeUpDetail?form=${form}` 210 let path = `/group/apply/mergeUpDetail?form=${form}`
249 uni.navigateTo({ 211 uni.navigateTo({
250 url: path 212 url: path
251 }); 213 });
252 } else if (userType.value == '2' || userType.value == '3') { 214 }
215
216 if (userType.value == '2' || userType.value == '3') {
253 // 审核记录 217 // 审核记录
254 let path = `/group/apply/record?certId=${item.content.certId}` 218 let path = `/group/apply/record?certId=${item.content.certId}`
255 uni.navigateTo({ 219 uni.navigateTo({
256 url: path 220 url: path
257 }); 221 });
258 } 222 }
259 } 223 }
260 224
261 function goMerge() { 225 function goMerge() {
262 let path = `/group/apply/merge` 226 let path = `/group/apply/merge`
263 uni.redirectTo({ 227 uni.redirectTo({
264 url: path 228 url: path
265 }); 229 });
266 } 230 }
267 231
268 function goMergeUp() { 232 function goMergeUp() {
269 let path = `/group/apply/mergeUp` 233 let path = `/group/apply/mergeUp`
270 uni.redirectTo({ 234 uni.redirectTo({
271 url: path 235 url: path
272 }); 236 });
273 } 237 }
274 238
275 function sendBack(row) { 239 function sendBack(row) {
276 uni.showModal({ 240 uni.showModal({
277 title: '提示', 241 title: '提示',
278 content: `确定撤回${row.content.certName}吗`, 242 content: `确定撤回${row.content.certName}吗`,
279 success: function(res) { 243 success: function (res) {
280 if (res.confirm) { 244 if (res.confirm) {
281 api.certifiedwithDraw({ 245 api.certifiedwithDraw({
282 recordId: row.recordId, 246 recordId: row.recordId,
...@@ -292,25 +256,28 @@ ...@@ -292,25 +256,28 @@
292 } 256 }
293 } 257 }
294 }) 258 })
295 } 259 }
296 260
297 function goGroupInfo(row) { 261 function goGroupInfo(row) {
298 uni.navigateTo({ 262 uni.navigateTo({
299 url: `/group/groupInfo?memId=${row.content?.memId}` 263 url: `/group/groupInfo?memId=${row.memId}`
300 }) 264 })
301 } 265 }
302 266
303 function viewSettleFile(doc){ 267 function viewSettleFile(doc) {
304 let url 268 let url
305 if(doc.payEvidence){ 269 if (doc.payEvidence) {
306 url = JSON.parse(doc.payEvidence)[0].url || null 270 url = JSON.parse(doc.payEvidence)[0].url || null
307 console.log(url) 271 console.log(url)
308 if(url){showImg(url)} 272 if (url) {
273 showImg(url)
309 } 274 }
310 } 275 }
311 function showImg(n) { 276 }
277
278 function showImg(n) {
312 var str = '' 279 var str = ''
313 if(n.indexOf('http')==-1){ 280 if (n.indexOf('http') == -1) {
314 str = config.baseUrl_api + n 281 str = config.baseUrl_api + n
315 } else { 282 } else {
316 str = n 283 str = n
...@@ -320,28 +287,29 @@ ...@@ -320,28 +287,29 @@
320 'jpeg') > -1) { 287 'jpeg') > -1) {
321 uni.previewImage({ 288 uni.previewImage({
322 urls: [str], 289 urls: [str],
323 success: function(res) { 290 success: function (res) {
324 console.log('success', res) 291 console.log('success', res)
325 }, 292 },
326 fail: function(res) { 293 fail: function (res) {
327 console.log('fail', res) 294 console.log('fail', res)
328 }, 295 },
329 complete: function(res) { 296 complete: function (res) {
330 console.log('complete', res) 297 console.log('complete', res)
331 } 298 }
332 }) 299 })
333 } else { 300 } else {
334 goWebView(str) 301 goWebView(str)
335 } 302 }
336 } 303 }
337 function goWebView(url) { 304
305 function goWebView(url) {
338 url = url.replace("http://", "https://") 306 url = url.replace("http://", "https://")
339 uni.showLoading({ 307 uni.showLoading({
340 title: '下载中' 308 title: '下载中'
341 }); 309 });
342 uni.downloadFile({ 310 uni.downloadFile({
343 url: url, 311 url: url,
344 success: function(res) { 312 success: function (res) {
345 uni.hideLoading(); 313 uni.hideLoading();
346 var filePath = res.tempFilePath; 314 var filePath = res.tempFilePath;
347 uni.showLoading({ 315 uni.showLoading({
...@@ -350,10 +318,10 @@ ...@@ -350,10 +318,10 @@
350 uni.openDocument({ 318 uni.openDocument({
351 filePath: filePath, 319 filePath: filePath,
352 showMenu: true, 320 showMenu: true,
353 success: function(res) { 321 success: function (res) {
354 uni.hideLoading(); 322 uni.hideLoading();
355 }, 323 },
356 fail: function(err) { 324 fail: function (err) {
357 uni.hideLoading(); 325 uni.hideLoading();
358 uni.showToast({ 326 uni.showToast({
359 title: err, 327 title: err,
...@@ -363,7 +331,7 @@ ...@@ -363,7 +331,7 @@
363 } 331 }
364 }); 332 });
365 }, 333 },
366 fail: function(error) { 334 fail: function (error) {
367 uni.hideLoading(); 335 uni.hideLoading();
368 uni.showToast({ 336 uni.showToast({
369 title: `下载失败`, 337 title: `下载失败`,
...@@ -372,16 +340,26 @@ ...@@ -372,16 +340,26 @@
372 }); 340 });
373 } 341 }
374 }); 342 });
375 } 343 }
376 </script> 344 </script>
377 345
378 <style scoped> 346 <style scoped>
379 .mt0 { 347 .mt0 {
380 margin-top: 0 !important; 348 margin-top: 0 !important;
381 } 349 }
382 350
383 .appList .appItem .name { 351 .appList .appItem .name {
384 width: 80%; 352 width: 80%;
385 word-break: break-all; 353 word-break: break-all;
386 } 354 }
355
356 .name {
357 margin-bottom: 10rpx !important;
358 }
359
360 .text {
361 font-size: 26rpx;
362 color: #999;
363 margin-bottom: 10rpx;
364 }
387 </style> 365 </style>
......
1 <template> 1 <template>
2 <view class="hasfixedbottom"> 2 <view class="hasfixedbottom">
3 <view class="wBox"> 3 <view class="wBox">
4 <view class="tt">{{form.content?.certName}}</view> 4 <view class="tt">{{ form?.certName }}</view>
5 <view> 5 <view>
6 <view class="date" v-if="form.content?.commitTime">提交日期:<text>{{ form.content?.commitTime }}</text> 6 <view v-if="form.commitTime" class="date">提交日期:
7 <text>{{ form?.commitTime }}</text>
8 </view>
9 <view class="date">提交单位:
10 <text>{{ form?.memName }}</text>
7 </view> 11 </view>
8 <view class="date">提交单位:<text>{{ form.content?.memberName }}</text> </view>
9 </view> 12 </view>
10 <view class="vipData mt30" style="flex-wrap: wrap;padding: 20rpx;"> 13 <view class="vipData mt30" style="flex-wrap: wrap;padding: 20rpx;">
11 <view class="w50"> 14 <view class="w50">
12 团队会员合计: 15 年限合计:
13 <text>{{ form.content?.allCount }}</text> 16 <text>{{ form?.renewYear }}</text>
14 </view> 17 </view>
15 <view class="w50"> 18 <view class="w50">
16 新会员合计: 19 费用合计:
17 <text>{{ form.content?.newCount }}</text> 20 <text>{{ form?.allPrice }}</text>
18 </view> 21 </view>
19 <view class="w50"> 22 <view class="w50">
20 年限合计 23 政策优惠
21 <text>{{ form.content?.renewYear }}</text> 24 <text>{{ form?.discount }}</text>
22 </view> 25 </view>
23 <view class="w50"> 26 <view class="w50">
24 费用合计 27 付款费用
25 <text>{{ (form.content?.allFee*1).toFixed(2) }}</text> 28 <text>{{ (form?.finalPrice * 1).toFixed(2) }}</text>
26 </view> 29 </view>
27 </view> 30 </view>
28 31
29 <!-- 成员 --> 32 <!-- 成员 -->
30 <view class="userlist"> 33 <view class="userlist">
31 <view class="item" style="padding: 20rpx 0 0;" v-for="(n,index) in list" :key="index" @click="goGroupInfo(n)"> 34 <view v-for="(n,index) in list" :key="index" class="item" style="padding: 20rpx 0 0;" @click="goGroupInfo(n)">
32 <view style="width: 100%"> 35 <view style="width: 100%">
33 <view class="name text-primary underLine">{{n.memberName}}</view> 36 <view class="name text-primary underLine">{{ n.memberName }}</view>
34 <view class="date">单位类型: 37 <!-- <view class="date">单位类型:-->
35 <text v-if="n.deptType==2">一级协会</text> 38 <!-- <text v-if="n.deptType==2">一级协会</text>-->
36 <text v-if="n.deptType==3">直属协会</text> 39 <!-- <text v-if="n.deptType==3">直属协会</text>-->
37 <text v-if="n.deptType==4">二级协会</text> 40 <!-- <text v-if="n.deptType==4">二级协会</text>-->
38 <text v-if="n.deptType==5">三级协会</text> 41 <!-- <text v-if="n.deptType==5">三级协会</text>-->
39 <text v-if="n.deptType==6">职业性单位会员</text> 42 <!-- <text v-if="n.deptType==6">职业性单位会员</text>-->
40 </view> 43 <!-- </view>-->
41 <view class="flexbox" style="background-color: rgba(244, 249, 253, 1);padding:10rpx;"> 44 <view class="flexbox" style="background-color: rgba(244, 249, 253, 1);padding:10rpx;">
42 <view> 45 <view>
43 <view> 46 <view>
44 原有效期 47 原有效期
45 <text>{{n.validityTime?.slice(0,10)||'-'}}</text> 48 <text>{{ n.originValidityTime?.slice(0, 10) || '-' }}</text>
46 </view> 49 </view>
47 <view> 50 <view>
48 提交日期 51 提交日期
49 <text>{{n.commitTime?.slice(0,10)||'-'}}</text> 52 <text>{{ n.commitTime?.slice(0, 10) || '-' }}</text>
50 </view> 53 </view>
51 </view> 54 </view>
52 <view> 55 <view>
53 年限 56 年限
54 <text>{{n.renewYear}}</text> 57 <text>{{ n.renewYear }}</text>
55 <view v-if="deptType==1">
56 会员证
57 <text v-if="form.content?.sendJiaoFeiFlag==1" class="text-success">已下发</text>
58 <text v-else class="text-warning">未下发</text>
59 </view>
60 </view> 58 </view>
61 <view> 59 <view>
62 单价 60 费用
63 <text>¥{{n.unitPrice}}</text> 61 <text>¥{{ n.unitPrice }}</text>
64 <view>总价 62 <view>总价
65 <text>¥{{n.allFee}}</text> 63 <text>¥{{ n.finalPrice }}</text>
66 </view> 64 </view>
67 </view> 65 </view>
68 </view> 66 </view>
...@@ -74,90 +72,88 @@ ...@@ -74,90 +72,88 @@
74 72
75 <view class="h3-padding">审核记录</view> 73 <view class="h3-padding">审核记录</view>
76 <view class="wBox"> 74 <view class="wBox">
77 <view class="stepItem" v-for="(n,index) in auditList" :key="index"> 75 <view v-for="(n,index) in auditList" :key="index" class="stepItem">
78 <view class="time">{{n.handleDate||'待审批'}}</view> 76 <view class="time">{{ form.auditTime || '待审批' }}</view>
79 <view class="content"> 77 <view class="content">
80 <view class="status"> 78 <view class="status">
81 <text v-if="n.auditStatus==1" class="text-success">审核通过</text> 79 <text v-if="n.auditResult==1" class="text-success">审核通过</text>
82 <text v-if="n.auditStatus==2" class="text-danger"> 审核拒绝</text> 80 <text v-if="n.auditResult!=1" class="text-danger"> 审核拒绝</text>
83 <text v-if="n.auditStatus==0" class="text-primary"> 审核中</text>
84 <text v-if="n.auditStatus==3" class="text-warning">已撤回</text>
85 <text v-if="n.auditStatus==100" class="text-primary">审核中</text>
86
87 </view> 81 </view>
88 <!-- <view class="name">{{index+1}}</view> --> 82 <view class="name">{{ n.auditDeptName }}</view>
89 <view class="deptName">{{n.handlerDeptName}}</view> 83 <!-- <view class="name">{{ index + 1 }}</view>-->
90 <view v-if="n.reason"> 84 <view class="deptName">{{ n.index }}</view>
91 备注:{{n.reason||'/' }} 85 <view v-if="n.auditMsg">
86 备注:{{ n.auditMsg || '/' }}
92 </view> 87 </view>
93 </view> 88 </view>
94 </view> 89 </view>
95 </view> 90 </view>
96
97 <!-- <view class="fixedBottom" v-if="(deptType == 1)&&form.auditStatus == 0">
98 <button class="btn-red-kx" @click="audit(form.id,'2')">拒绝</button>
99 <button class="btn-red" @click="audit(form.id,'1')">同意</button>
100 </view>
101
102 <view class="fixedBottom" v-if="(deptType == 2 || deptType == 3)&&form.auditStatus == 0">
103 <button class="btn-red-kx" @click="audit(form.id,'2')">拒绝</button>
104 <button class="btn-red" @click="audit(form.id,'1')">同意</button>
105 </view> -->
106
107 </view> 91 </view>
108 </template> 92 </template>
109 93
110 <script setup> 94 <script setup>
111 import * as api from '@/common/api.js' 95 import * as api from '@/common/api.js'
112 import config from '@/config.js' 96 import {
113 import {
114 onMounted, 97 onMounted,
115 ref 98 ref
116 } from 'vue' 99 } from 'vue'
117 import { 100 import {
118 onLoad 101 onLoad
119 } from '@dcloudio/uni-app' 102 } from '@dcloudio/uni-app'
120 const app = getApp(); 103 import {GroupGetLogs} from "@/common/api.js";
121 const queryParams = ref({ 104
105 const app = getApp();
106 const queryParams = ref({
122 recordId: '' 107 recordId: ''
123 }) 108 })
124 109
125 const form = ref({}) 110 const form = ref({})
126 const list = ref([]) 111 const list = ref([])
127 const listArr = ref([]) 112 const listArr = ref([])
128 const id = ref() 113 const id = ref()
129 const auditList = ref([]) 114 const auditList = ref([])
130 115
131 const feelList = ref([]) 116 const feelList = ref([])
132 const total = ref(0) 117 const total = ref(0)
133 const totalYear = ref(0) 118 const totalYear = ref(0)
134 const deptType = ref() 119 const deptType = ref()
135 let rangeId = '' 120 let rangeId = ''
136 onLoad((option) => { 121 onLoad((option) => {
137 if ('form' in option) { 122 if ('form' in option) {
138 form.value = JSON.parse(decodeURIComponent(option.form)) 123 form.value = JSON.parse(decodeURIComponent(option.form))
124 list.value = [form.value]
125 GetLogs()
126
139 } 127 }
140 list.value = form.content?.certifiedSimpleList || [] 128
141 listArr.value = form.content?.certifiedSimpleList || []
142 queryParams.value.recordId = form.value.recordId
143 console.log(form.value) 129 console.log(form.value)
144 if (app.globalData.isLogin) { 130 //
145 init() 131 // list.value = form.content?.certifiedSimpleList || []
146 } else { 132 // listArr.value = form.content?.certifiedSimpleList || []
133 // queryParams.value.recordId = form.value.recordId
134 // console.log(form.value)
135 // if (app.globalData.isLogin) {
136 // init()
137 // } else {
138 //
139 // app.firstLoadCallback = () => {
140 // init()
141 // };
142 // }
147 143
148 app.firstLoadCallback = () => { 144 })
149 init()
150 };
151 }
152 145
153 }) 146 async function GetLogs() {
147 const res = await api.GroupGetLogs(form.value.id)
148 auditList.value = res.data
149 }
154 150
155 function init() { 151 function init() {
156 deptType.value = app.globalData.deptType 152 deptType.value = app.globalData.deptType
157 getForm() 153 getForm()
158 } 154 }
159 155
160 function getForm() { 156 function getForm() {
161 uni.showLoading({ 157 uni.showLoading({
162 title: '加载中' 158 title: '加载中'
163 }) 159 })
...@@ -169,22 +165,22 @@ ...@@ -169,22 +165,22 @@
169 auditFN() 165 auditFN()
170 } 166 }
171 }) 167 })
172 } 168 }
173 169
174 function auditFN() { 170 function auditFN() {
175 api.getGroupHistoryByRelateId(id.value).then(res => { 171 api.getGroupHistoryByRelateId(id.value).then(res => {
176 auditList.value = res.data 172 auditList.value = res.data
177 }) 173 })
178 } 174 }
179 175
180 function audit(rangeId, flag) { 176 function audit(rangeId, flag) {
181 if (flag == '2') { 177 if (flag == '2') {
182 // 拒绝 178 // 拒绝
183 // 弹出框填写理由 179 // 弹出框填写理由
184 uni.showModal({ 180 uni.showModal({
185 title: '请输入拒绝理由', 181 title: '请输入拒绝理由',
186 editable: true, 182 editable: true,
187 success: function(res) { 183 success: function (res) {
188 if (res.confirm) { 184 if (res.confirm) {
189 if (!res.content) { 185 if (!res.content) {
190 uni.showToast({ 186 uni.showToast({
...@@ -202,16 +198,16 @@ ...@@ -202,16 +198,16 @@
202 uni.showModal({ 198 uni.showModal({
203 title: '提示', 199 title: '提示',
204 content: `确定审批通过吗`, 200 content: `确定审批通过吗`,
205 success: function(res) { 201 success: function (res) {
206 if (res.confirm) { 202 if (res.confirm) {
207 doApproval(rangeId, flag) 203 doApproval(rangeId, flag)
208 } 204 }
209 } 205 }
210 }) 206 })
211 } 207 }
212 } 208 }
213 209
214 function doApproval(rangeId, flag, reason) { 210 function doApproval(rangeId, flag, reason) {
215 var obj = { 211 var obj = {
216 flag: flag, 212 flag: flag,
217 reason: reason || '', 213 reason: reason || '',
...@@ -229,22 +225,23 @@ ...@@ -229,22 +225,23 @@
229 }) 225 })
230 uni.navigateBack() 226 uni.navigateBack()
231 }) 227 })
232 } 228 }
233 function goGroupInfo(row){ 229
230 function goGroupInfo(row) {
234 uni.navigateTo({ 231 uni.navigateTo({
235 url: `/group/groupInfo?memId=${row.memId}` 232 url: `/group/groupInfo?memId=${row.memId}`
236 }) 233 })
237 } 234 }
238 </script> 235 </script>
239 236
240 <style scoped lang="scss"> 237 <style lang="scss" scoped>
241 .date { 238 .date {
242 margin-top: 10rpx; 239 margin-top: 10rpx;
243 font-size: 26rpx; 240 font-size: 26rpx;
244 color: #999; 241 color: #999;
245 } 242 }
246 243
247 .wBox { 244 .wBox {
248 width: 700rpx; 245 width: 700rpx;
249 padding: 30rpx; 246 padding: 30rpx;
250 margin: 20rpx auto 0; 247 margin: 20rpx auto 0;
...@@ -256,9 +253,9 @@ ...@@ -256,9 +253,9 @@
256 color: #0A1629; 253 color: #0A1629;
257 font-size: 30rpx; 254 font-size: 30rpx;
258 } 255 }
259 } 256 }
260 257
261 .userlist { 258 .userlist {
262 .item { 259 .item {
263 border-bottom: 1px dashed #e5e5e5; 260 border-bottom: 1px dashed #e5e5e5;
264 position: relative; 261 position: relative;
...@@ -282,9 +279,9 @@ ...@@ -282,9 +279,9 @@
282 color: #AD181F; 279 color: #AD181F;
283 } 280 }
284 } 281 }
285 } 282 }
286 283
287 .info { 284 .info {
288 display: flex; 285 display: flex;
289 margin: 30rpx 0 20rpx; 286 margin: 30rpx 0 20rpx;
290 font-size: 28rpx; 287 font-size: 28rpx;
...@@ -293,9 +290,9 @@ ...@@ -293,9 +290,9 @@
293 color: #7D8592; 290 color: #7D8592;
294 margin-right: 20rpx; 291 margin-right: 20rpx;
295 } 292 }
296 } 293 }
297 294
298 .fixedBottom { 295 .fixedBottom {
299 justify-content: center; 296 justify-content: center;
300 297
301 button { 298 button {
...@@ -306,5 +303,5 @@ ...@@ -306,5 +303,5 @@
306 .btn-red { 303 .btn-red {
307 width: 286rpx; 304 width: 286rpx;
308 } 305 }
309 } 306 }
310 </style> 307 </style>
......
1 <template> 1 <template>
2 <view class="audit-page"> 2 <view>
3 <!-- 顶部标签栏 --> 3 <!-- 团队会员审核 -->
4 <view class="tab-bar"> 4 <uni-segmented-control :current="current" :values="navs" activeColor="#AD181F" class="whitebg" styleType="text"
5 <view 5 @clickItem="onClickItem">
6 v-for="tab in tabs" 6
7 :key="tab.value" 7 </uni-segmented-control>
8 class="tab-item" 8 <view class="appList">
9 :class="{ active: currentTab === tab.value }" 9 <view v-show="statistical.totalCost>0" class="vipData">
10 @click="onTabChange(tab.value)" 10 <view>费用合计:
11 > 11 <text>¥{{ statistical.totalCost.toFixed(2) }}</text>
12 <text class="tab-text">{{ tab.label }}</text>
13 <view class="tab-indicator" v-if="currentTab === tab.value"></view>
14 </view> 12 </view>
15 </view> 13 </view>
16 14
17 <!-- 列表内容 --> 15 <view v-for="(item,index) in list" :key="index" class="appItem">
18 <scroll-view 16 <view class="status" @click="goDetail(item)">
19 scroll-y 17 <text v-if="item.shenAuditStatus == 1" class="text-primary">审核中</text>
20 class="list-content" 18 <text v-if="item.shenAuditStatus == 2" class="text-success">审核通过</text>
21 @scrolltolower="onLoadMore" 19 <text v-if="item.shenAuditStatus == 3" class="text-danger">审核拒绝</text>
22 >
23 <view class="loading-wrap" v-if="loading && list.length === 0">
24 <uni-load-more status="loading"></uni-load-more>
25 </view> 20 </view>
26 21 <view class="date">
27 <view class="empty-wrap" v-else-if="!loading && list.length === 0"> 22 <uni-icons color="#AD181F" size="16" type="calendar-filled"></uni-icons>
28 <uni-load-more status="noMore"></uni-load-more> 23 {{ item.commitTime }} 提交
29 </view> 24 </view>
30 25 <view v-if="item.wfCode">{{ item?.wfCode }}
31 <view class="card-list" v-else>
32 <view
33 class="card-item"
34 v-for="item in list"
35 :key="item.recordId || item.id"
36 @click="goDetail(item)"
37 >
38 <view class="card-header">
39 <text class="company-name">{{ item.memName || '-' }}</text>
40 <text class="status-badge" :class="getStatusClass(item.shenAuditStatus)">
41 {{ getStatusText(item.shenAuditStatus) }}
42 </text>
43 </view> 26 </view>
44 27 <view class="name w100 mt0" @click="goDetail(item)">
45 <view class="card-body"> 28 {{ item.memName }}
46 <view class="info-row">
47 <text class="label">所属协会</text>
48 <text class="value">{{ item.shenMemName || '-' }}</text>
49 </view> 29 </view>
50 <view class="info-row"> 30 <view class="text" @click="goDetail(item)">
51 <text class="label">会员编号</text> 31 {{ item.shenMemName }}
52 <text class="value">{{ item.wfCode || '-' }}</text>
53 </view> 32 </view>
54 <view class="info-row"> 33 <view class="flexbox" @click="goDetail(item)">
55 <text class="label">认证年限</text> 34 <view>
56 <text class="value">{{ item.renewYear ? item.renewYear + '年' : '-' }}</text> 35 新会员/年限
36 <view>{{ item.isNew == 1 ? '是' : "否" }}
37 /{{ item.renewYear }}
57 </view> 38 </view>
58 <view class="info-row">
59 <text class="label">付款费用</text>
60 <text class="value text-red">¥{{ Number(item.finalPrice || 0).toFixed(2) }}</text>
61 </view> 39 </view>
62 <view class="info-row"> 40 <view>
63 <text class="label">提交日期</text> 41 费用合计
64 <text class="value">{{ formatDate(item.commitTime) }}</text> 42 <view> {{ (item.allPrice * 1).toFixed(2) }}</view>
65 </view> 43 </view>
44 <view>
45 政策优惠
46 <view>
47 <text class="text-danger"> {{ item.discount ? item.discount : '--' }}</text>
66 </view> 48 </view>
67 49 </view>
68 <view class="card-footer"> 50 <view>
69 <view class="tag-row"> 51 付款费用
70 <view class="tag" :class="item.isNew == 1 ? 'tag-new' : 'tag-renew'"> 52 <view>
71 {{ item.isNew == 1 ? '新会员' : '续费' }} 53 <text class="text-warning"> ¥{{ item.finalPrice }}</text>
54 </view>
55 </view>
56 <view>
57 协会信息
58 <view>
59 <text :class="{'text-danger':item.checkPass == 0 }"> {{ item.checkPass == 0 ? '异常' : '正常' }}</text>
72 </view> 60 </view>
73 </view> 61 </view>
74 <view class="btn-row">
75 <view class="btn btn-default" @click.stop="goInstitutionInfo(item)">机构资料</view>
76 <view class="btn btn-primary" @click.stop="goAudit(item)" v-if="item.shenAuditStatus == 1">审核</view>
77 </view> 62 </view>
63 <view class="func">
64 <button @click="goGroupInfo(item)">机构资料</button>
65 <button v-if="queryParams.shenAuditStatus==1" @click="audit(item.id,'0')">拒绝</button>
66 <button v-if="queryParams.shenAuditStatus==1" @click="audit(item.id,'1')">同意</button>
78 </view> 67 </view>
79 </view> 68 </view>
80 </view> 69 </view>
81 70
82 <view class="load-more-wrap" v-if="list.length > 0"> 71 <view v-if="list.length==0" class="nodata">
83 <uni-load-more :status="loadStatus"></uni-load-more> 72 <image :src="config.baseUrl_api + '/fs/static/nodata.png'" mode="aspectFit"></image>
73 <text>暂无数据</text>
84 </view> 74 </view>
85 </scroll-view> 75 <!-- <view v-if="userType=='2'" class="block-btn-box">
76 <button @click="goMerge" class="btn-red-kx">前往合并 > </button>
77 </view> -->
86 </view> 78 </view>
87 </template> 79 </template>
88 80
89 <script setup> 81 <script setup>
90 import * as api from '@/common/api_exam.js' 82 import * as api from '@/common/api.js'
91 import { ref } from 'vue' 83 import config from '@/config.js'
92 import { onLoad } from '@dcloudio/uni-app' 84 import {
93 85 onMounted,
94 const tabs = [ 86 ref
95 { label: '全部', value: '' }, 87 } from 'vue'
96 { label: '审核中', value: '1' }, 88 import {
97 { label: '审核通过', value: '2' }, 89 onLoad
98 { label: '审核拒绝', value: '3' } 90 } from '@dcloudio/uni-app'
99 ] 91
100 92 const app = getApp();
101 const currentTab = ref('')
102 const list = ref([])
103 const loading = ref(false)
104 const loadStatus = ref('more')
105 const queryParams = ref({ 93 const queryParams = ref({
106 pageNum: 1, 94 shenAuditStatus: '1',
107 pageSize: 10, 95 mergeFlag: '0',
108 auditFlag:'1', 96 auditFlag: '1'
109
110 }) 97 })
111 98 const navs = ref(['审核中', '审核通过', '审核拒绝'])
99 const current = ref()
100 const list = ref([])
101 const total = ref(0)
102 const userType = ref('')
103 const totalCost = ref(0)
104 const statistical = ref({})
112 onLoad(() => { 105 onLoad(() => {
113 getList() 106 if (app.globalData.isLogin) {
107 init()
108 } else {
109
110 app.firstLoadCallback = () => {
111 init()
112 };
113 }
114 }) 114 })
115 115
116 function onTabChange(value) { 116 function init() {
117 currentTab.value = value 117 userType.value = app.globalData.userType
118 list.value = [] 118 // console.log(userType.value)
119 queryParams.value.pageNum = 1
120 getList() 119 getList()
121 } 120 }
122 121
123 function getList() { 122 function onClickItem(e) {
124 if (loading.value) return 123 queryParams.value.shenAuditStatus = e.currentIndex + 1
125 loading.value = true 124 getList()
126 loadStatus.value = 'loading' 125 }
127 126
128 const params = { 127 async function getList() {
129 ...queryParams.value, 128 uni.showLoading({
130 shenAuditStatus: currentTab.value 129 title: '加载中',
130 mask: true
131 })
132 statistical.value = {
133 allCount: 0,
134 totalCost: 0,
135 renewYear: 0,
136 newCount: 0
131 } 137 }
132 138 const res = await api.listNewAPI(queryParams.value)
133 api.certifiedNewList(params).then(res => {
134 if (res.rows) {
135 if (queryParams.value.pageNum === 1) {
136 list.value = res.rows 139 list.value = res.rows
137 } else { 140 for (const val of list.value) {
138 list.value = [...list.value, ...res.rows] 141 statistical.value.renewYear += val.renewYear
142 statistical.value.totalCost += val.finalPrice * 1
143 if (val.isNew == 1) {
144 statistical.value.newCount += 1
139 } 145 }
140 loadStatus.value = res.rows.length >= queryParams.value.pageSize ? 'more' : 'noMore' 146 statistical.value.allCount += 1
141 } else {
142 list.value = []
143 loadStatus.value = 'noMore'
144 } 147 }
145 }).catch(err => { 148 total.value = res.total
146 console.error('获取会员审核列表失败', err)
147 loadStatus.value = 'noMore'
148 }).finally(() => {
149 loading.value = false
150 })
151 }
152
153 function onLoadMore() {
154 if (loadStatus.value === 'noMore' || loading.value) return
155 queryParams.value.pageNum++
156 getList()
157 } 149 }
158 150
159 function getStatusText(status) { 151 function audit(recordId, flag) {
160 const map = { 1: '审核中', 2: '审核通过', 3: '审核拒绝', 4: '已撤回' } 152 if (flag == '0') {
161 return map[status] || '-' 153 // 拒绝
162 } 154 // 弹出框填写理由
163 155 uni.showModal({
164 function getStatusClass(status) { 156 title: '请输入拒绝理由',
165 const map = { 157 editable: true,
166 1: 'status-warning', 158 success: function (res) {
167 2: 'status-success', 159 if (res.confirm) {
168 3: 'status-danger', 160 if (!res.content) {
169 4: 'status-gray' 161 uni.showToast({
162 title: '请输入拒绝理由',
163 icon: 'none'
164 })
165 } else {
166 doApproval(recordId, flag, res.content)
167 }
170 } 168 }
171 return map[status] || ''
172 }
173
174 function formatDate(dateStr) {
175 if (!dateStr) return '-'
176 if (typeof dateStr === 'string' && dateStr.indexOf('T') > -1) {
177 return dateStr.slice(0, 10)
178 } 169 }
179 return dateStr 170 })
171 } else if (flag == '1') {
172 // 二次确认
173 uni.showModal({
174 title: '提示',
175 content: `确定审批通过吗`,
176 success: function (res) {
177 if (res.confirm) {
178 doApproval(recordId, flag)
179 }
180 }
181 })
182 }
180 } 183 }
181 184
182 function goDetail(item) { 185 function doApproval(recordId, flag, reason) {
183 uni.navigateTo({ 186 let obj = {
184 url: `/group/groupOrderDetail?form=${encodeURIComponent(JSON.stringify(item))}` 187 flag: flag,
188 reason: reason || '',
189 ids: []
190 }
191 obj.ids.push(recordId)
192 console.log(obj)
193 uni.showLoading({
194 title: '加载中',
195 mask: true
196 })
197 api.shenAudit(obj).then((res) => {
198 uni.hideLoading()
199 uni.showToast({
200 title: '操作成功',
201 icon: 'none'
202 })
203 getList()
185 }) 204 })
186 } 205 }
187 206
188 function goInstitutionInfo(item) { 207 function goDetail(item) {
208 const form = encodeURIComponent(JSON.stringify(item))
209 let path = `/group/apply/mergeUpDetail?form=${form}`
189 uni.navigateTo({ 210 uni.navigateTo({
190 url: `/level/ztx/institutionInfo?memId=${item.memId}` 211 url: path
191 }) 212 });
192 } 213 }
193 214
194 function goAudit(item) { 215 function goGroupInfo(row) {
195 uni.navigateTo({ 216 uni.navigateTo({
196 url: `/level/ztx/memberAuditPage?type=single&ids=${item.recordId || item.id}` 217 url: `/group/groupInfo?memId=${row.memId}`
197 }) 218 })
198 } 219 }
199 </script>
200 220
201 <style lang="scss" scoped> 221 function showImg(n) {
202 .audit-page { 222 var str = ''
203 min-height: 100vh; 223 if (n.indexOf('http') == -1) {
204 background-color: #f5f5f5; 224 str = config.baseUrl_api + n
205 } 225 } else {
206 226 str = n
207 .tab-bar { 227 }
208 display: flex; 228
209 background-color: #fff; 229 if (n.indexOf('png') > -1 || n.indexOf('jpg') > -1 || n.indexOf(
210 padding: 0 20rpx; 230 'jpeg') > -1) {
211 position: sticky; 231 uni.previewImage({
212 top: 0; 232 urls: [str],
213 z-index: 100; 233 success: function (res) {
214 234 console.log('success', res)
215 .tab-item { 235 },
216 flex: 1; 236 fail: function (res) {
217 display: flex; 237 console.log('fail', res)
218 flex-direction: column; 238 },
219 align-items: center; 239 complete: function (res) {
220 padding: 24rpx 0; 240 console.log('complete', res)
221 position: relative;
222
223 .tab-text {
224 font-size: 28rpx;
225 color: #666;
226 }
227
228 .tab-indicator {
229 position: absolute;
230 bottom: 0;
231 left: 50%;
232 transform: translateX(-50%);
233 width: 80rpx;
234 height: 6rpx;
235 background-color: #AD181F;
236 border-radius: 3rpx;
237 }
238
239 &.active {
240 .tab-text {
241 color: #AD181F;
242 font-weight: 600;
243 }
244 } 241 }
242 })
243 } else {
244 goWebView(str)
245 } 245 }
246 } 246 }
247 247
248 .list-content { 248 function goWebView(url) {
249 height: calc(100vh - 100rpx); 249 url = url.replace("http://", "https://")
250 padding: 20rpx; 250 uni.showLoading({
251 box-sizing: border-box; 251 title: '下载中'
252 });
253 uni.downloadFile({
254 url: url,
255 success: function (res) {
256 uni.hideLoading();
257 var filePath = res.tempFilePath;
258 uni.showLoading({
259 title: '正在打开'
260 });
261 uni.openDocument({
262 filePath: filePath,
263 showMenu: true,
264 success: function (res) {
265 uni.hideLoading();
266 },
267 fail: function (err) {
268 uni.hideLoading();
269 uni.showToast({
270 title: err,
271 icon: 'none',
272 duration: 2000
273 });
274 }
275 });
276 },
277 fail: function (error) {
278 uni.hideLoading();
279 uni.showToast({
280 title: `下载失败`,
281 icon: 'none',
282 duration: 2000
283 });
284 }
285 });
252 } 286 }
287 </script>
253 288
254 .loading-wrap, 289 <style scoped>
255 .empty-wrap { 290 .mt0 {
256 padding: 100rpx 0; 291 margin-top: 0 !important;
257 text-align: center;
258 } 292 }
259 293
260 .card-list { 294 .appList .appItem .name {
261 .card-item { 295 width: 80%;
262 background-color: #fff; 296 word-break: break-all;
263 border-radius: 16rpx; 297 }
264 padding: 30rpx;
265 margin-bottom: 20rpx;
266 box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
267
268 .card-header {
269 display: flex;
270 justify-content: space-between;
271 align-items: center;
272 margin-bottom: 24rpx;
273 padding-bottom: 20rpx;
274 border-bottom: 1rpx solid #f0f0f0;
275
276 .company-name {
277 font-size: 32rpx;
278 font-weight: 600;
279 color: #333;
280 flex: 1;
281 margin-right: 20rpx;
282 }
283
284 .status-badge {
285 font-size: 24rpx;
286 padding: 6rpx 16rpx;
287 border-radius: 20rpx;
288 flex-shrink: 0;
289
290 &.status-warning {
291 background-color: #fff7e6;
292 color: #fa8c16;
293 }
294
295 &.status-success {
296 background-color: #f6ffed;
297 color: #52c41a;
298 }
299
300 &.status-danger {
301 background-color: #fff1f0;
302 color: #f5222d;
303 }
304
305 &.status-gray {
306 background-color: #f5f5f5;
307 color: #999;
308 }
309 }
310 }
311 298
312 .card-body { 299 .name {
313 .info-row { 300 margin-bottom: 10rpx !important;
314 display: flex; 301 }
315 justify-content: space-between;
316 padding: 12rpx 0;
317 302
318 .label { 303 .text {
319 font-size: 26rpx; 304 font-size: 26rpx;
320 color: #999; 305 color: #999;
321 flex-shrink: 0; 306 margin-bottom: 10rpx;
322 }
323
324 .value {
325 font-size: 26rpx;
326 color: #333;
327 text-align: right;
328 flex: 1;
329 margin-left: 20rpx;
330 }
331
332 .text-red {
333 color: #AD181F;
334 }
335 }
336 }
337
338 .card-footer {
339 display: flex;
340 justify-content: space-between;
341 align-items: center;
342 margin-top: 20rpx;
343 padding-top: 20rpx;
344 border-top: 1rpx solid #f0f0f0;
345
346 .tag-row {
347 display: flex;
348 gap: 12rpx;
349
350 .tag {
351 font-size: 24rpx;
352 padding: 6rpx 16rpx;
353 border-radius: 20rpx;
354 font-weight: 500;
355
356 &.tag-new {
357 background-color: rgba(#AD181F, 0.1);
358 color: #AD181F;
359 }
360
361 &.tag-renew {
362 background-color: rgba(#999, 0.1);
363 color: #666;
364 }
365 }
366 }
367
368 .btn-row {
369 display: flex;
370 gap: 16rpx;
371
372 .btn {
373 font-size: 26rpx;
374 padding: 12rpx 24rpx;
375 border-radius: 8rpx;
376 }
377
378 .btn-default {
379 background-color: #f5f5f5;
380 color: #666;
381 }
382
383 .btn-primary {
384 background-color: #AD181F;
385 color: #fff;
386 }
387 }
388 }
389 }
390 }
391
392 .load-more-wrap {
393 padding: 20rpx 0;
394 text-align: center;
395 } 307 }
396 </style> 308 </style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!