132ee8c8 by 张猛

ztx个人审核

1 parent 6c6dcc02
...@@ -43,32 +43,36 @@ ...@@ -43,32 +43,36 @@
43 </view> 43 </view>
44 <view class="date" @click="goDetail(item)"> 44 <view class="date" @click="goDetail(item)">
45 <uni-icons color="#AD181F" size="16" type="calendar-filled"></uni-icons> 45 <uni-icons color="#AD181F" size="16" type="calendar-filled"></uni-icons>
46 {{ item.content?.commitTime }} 提交 46 {{ item.commitTime }} 提交
47 </view> 47 </view>
48 <view v-if="item?.wfCode" class="text-primary" @click="goDetail(item)">{{ item?.wfCode }} 48 <view v-if="item?.wfCode" class="text-primary" @click="goDetail(item)">{{ item.wfCode }}
49 </view> 49 </view>
50 <view class="name" @click="goDetail(item)">{{ item.name }}</view> 50 <view class="name" @click="goDetail(item)">{{ item.memName }}</view>
51 <view class="flexbox" @click="goDetail(item)"> 51 <view class="flexbox" @click="goDetail(item)">
52 <view> 52 <view>
53 人数合计 53 人数合计
54 <view>{{ item.personCount }}</view> 54 <view>{{ item.allCount }}</view>
55 </view> 55 </view>
56 <view> 56 <view>
57 年限合计 57 年限合计
58 <view>{{ item.totalYear }}</view> 58 <view>{{ item.yearCount }}</view>
59 </view> 59 </view>
60 <view> 60 <view>
61 提交单位 61 新会员
62 <view>{{ item.memberName }}</view> 62 <view>{{ item.newCount }}</view>
63 </view>
64 <view>
65 费用
66 <view>{{ (item.price * 1).toFixed(2) }}</view>
63 </view> 67 </view>
64 </view> 68 </view>
65 <view v-if="item.auditStatus==0" class="func"> 69 <view v-if="item.auditStatus==0" class="func">
66 <button @click="audit(item.recordId,'0')">拒绝</button> 70 <button @click="audit(item.recordId,'0')">拒绝</button>
67 <button @click="audit(item.recordId,'1')">同意</button> 71 <button @click="audit(item.recordId,'1')">同意</button>
68 </view> 72 </view>
69 <view v-if="item.auditStatus==1 && item.isView == 1" class="func"> 73 <!-- <view v-if="item.auditStatus==1 && item.isView == 1" class="func">-->
70 <button @click="handleDelete(item)">撤回</button> 74 <!-- <button @click="handleDelete(item)">撤回</button>-->
71 </view> 75 <!-- </view>-->
72 </view> 76 </view>
73 </view> 77 </view>
74 78
...@@ -143,7 +147,6 @@ async function getList() { ...@@ -143,7 +147,6 @@ async function getList() {
143 const res = await api.auditList(queryParams.value) 147 const res = await api.auditList(queryParams.value)
144 list.value = res.rows 148 list.value = res.rows
145 total.value = res.total 149 total.value = res.total
146
147 statistical.value = { 150 statistical.value = {
148 totalCost: 0, 151 totalCost: 0,
149 personCount: 0, 152 personCount: 0,
...@@ -151,14 +154,12 @@ async function getList() { ...@@ -151,14 +154,12 @@ async function getList() {
151 oldPersonCount: 0, 154 oldPersonCount: 0,
152 totalYear: 0 155 totalYear: 0
153 } 156 }
154 for (const item of list.value) { 157 for (const val of list.value) {
155 item.content = JSON.parse(item.content) 158 statistical.value.totalCost += val.price * 1
156 item.doc = JSON.parse(item.doc) 159 statistical.value.personCount += val.allCount * 1
157 statistical.value.totalCost += (item.content.allFee * 1) 160 statistical.value.newPersonCount += val.newCount * 1
158 statistical.value.personCount += (item.content.personCount * 1) 161 statistical.value.oldPersonCount += val.oldCount * 1
159 statistical.value.newPersonCount += (item.content.newPersonCount * 1) 162 statistical.value.totalYear += val.yearCount * 1
160 statistical.value.oldPersonCount += (item.content.oldPersonCount * 1)
161 statistical.value.totalYear += (item.content.totalYear * 1)
162 } 163 }
163 uni.hideLoading() 164 uni.hideLoading()
164 165
...@@ -244,8 +245,14 @@ function goDetail(item) { ...@@ -244,8 +245,14 @@ function goDetail(item) {
244 const form = encodeURIComponent(JSON.stringify(item)) 245 const form = encodeURIComponent(JSON.stringify(item))
245 // console.log(userType.value) 246 // console.log(userType.value)
246 247
248 // let path =
249 // `/personalVip/auditDetail?form=${form}`
250 // uni.navigateTo({
251 // url: path
252 // });
253
247 let path = 254 let path =
248 `/personalVip/auditDetail?form=${form}` 255 `/personalVip/paymentDetail?form=${form}`
249 uni.navigateTo({ 256 uni.navigateTo({
250 url: path 257 url: path
251 }); 258 });
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <view class="wBox"> 3 <view class="wBox">
4 <view class="tt">{{form.paymentName}}</view> 4 <view class="tt">{{ form.memName }}</view>
5 <view class="info"> 5 <view class="info" style="flex-wrap: wrap;">
6 <view><text>{{list.length}}</text></view> 6 <view class="w45">
7 </view> 7 <text class="text-danger"> {{ form?.allCount }}</text>
8 <view class="userlist"> 8
9 <view class="item" v-for="(n,index) in list" :key="index"> 9 </view>
10 <view> 10 <view class="w45">新会员
11 <view class="name">{{n.perName}}<text v-if="n.memberInfoName">({{n.memberInfoName || ''}})</text></view> 11 <text class="text-primary"> {{ form?.newCount }}</text>
12 <view class="date">原有效期至 {{n.originValidityDate ? n.originValidityDate.slice(0,10) : '--'}}</view> 12
13 </view> 13 </view>
14 <view class="nian"> 14 <view class="w45">续费合计
15 {{n.payYear}} 15 <text class="text-primary"> {{ form?.oldCount }}</text>
16 </view> 16
17 </view> 17 </view>
18 </view> 18 <view class="w45">费用合计
19 </view> 19 <text class="text-danger">{{ form?.price }}</text>
20 20
21 <view class="h3-padding" v-if="feelList.length>0">审核流程</view> 21 </view>
22 <view class="wBox" v-if="feelList.length>0"> 22 </view>
23 <view class="stepItem" v-for="(n,index) in feelList" :key="index"> 23 </view>
24 <view class="time">{{n.auditTime || '待审批'}}</view> 24
25 <view class="content"> 25
26 <view class="status"> 26 <view class="wBox">
27 <text v-if="n.auditResult==0" class="text-primary"> 审核中</text> 27 <!-- <view class="tt">{{ // form.paymentName }}</view>-->
28 <text v-if="n.auditResult==1" class="text-success">审核通过</text> 28 <view class="info">
29 <text v-if="n.auditResult==2" class="text-danger"> 审核拒绝</text> 29 <view>
30 <text v-if="n.auditResult==3" class="text-warning"> 已撤回</text> 30 <text>{{ list.length }}</text>
31 </view> 31
32 <view class="name">{{index+1}}</view> 32 </view>
33 <view class="deptName">{{n.auditDeptName || n.auditBy}}</view> 33 </view>
34 <view>备注:{{n.auditMsg || '/' }}</view> 34 <view class="userlist">
35 </view> 35 <view v-for="(n,index) in list" :key="index" class="item">
36 </view> 36 <view>
37 </view> 37 <view class="name">{{ n.perName }}
38 </view> 38 <text v-if="n.memberInfoName">({{ n.memberInfoName || '' }})</text>
39 </view>
40 <view class="date">原有效期至 {{ n.originValidityDate ? n.originValidityDate.slice(0, 10) : '--' }}</view>
41 </view>
42 <view class="nian">
43 {{ n.payYear }}
44 </view>
45 </view>
46 </view>
47 </view>
48
49 <view v-if="feelList.length>0" class="h3-padding">审核流程</view>
50 <view v-if="feelList.length>0" class="wBox">
51 <view v-for="(n,index) in feelList" :key="index" class="stepItem">
52 <view class="time">{{ n.auditTime || '待审批' }}</view>
53 <view class="content">
54 <view class="status">
55 <text v-if="n.auditResult==0" class="text-primary"> 审核中</text>
56 <text v-if="n.auditResult==1" class="text-success">审核通过</text>
57 <text v-if="n.auditResult==2" class="text-danger"> 审核拒绝</text>
58 <text v-if="n.auditResult==3" class="text-warning"> 已撤回</text>
59 </view>
60 <view class="name">{{ index + 1 }}</view>
61 <view class="deptName">{{ n.auditDeptName || n.auditBy }}</view>
62 <view>备注:{{ n.auditMsg || '/' }}</view>
63 </view>
64 </view>
65 </view>
66 </view>
39 </template> 67 </template>
40 68
41 <script setup> 69 <script setup>
42 import * as api from '@/common/api.js' 70 import * as api from '@/common/api.js'
43 import { ref } from 'vue' 71 import {ref} from 'vue'
44 import { onLoad } from '@dcloudio/uni-app' 72 import {onLoad} from '@dcloudio/uni-app'
45 73
46 // 查询参数(和PC保持一致) 74 // 查询参数(和PC保持一致)
47 const queryParams = ref({ 75 const queryParams = ref({
48 rangeId: '', 76 rangeId: '',
49 pageNum: 1, 77 pageNum: 1,
50 pageSize: 999 78 pageSize: 999
51 }) 79 })
52 80
53 const form = ref({}) 81 const form = ref({})
54 const list = ref([]) 82 const list = ref([])
55 const feelList = ref([]) 83 const feelList = ref([])
56 84
57 onLoad((option) => { 85 onLoad((option) => {
58 if (option.form) { 86 if (option.form) {
59 form.value = JSON.parse(decodeURIComponent(option.form)) 87 form.value = JSON.parse(decodeURIComponent(option.form))
60 queryParams.value.rangeId = form.value.rangId || form.value.rangeId 88 queryParams.value.rangeId = form.value.rangId || form.value.rangeId
61 89 getList()
62 getList() 90 getAuditLogs()
63 getAuditLogs() 91 }
64 } 92
65 }) 93 console.log(form.value)
66 94 })
67 async function getList() { 95
68 try { 96 async function getList() {
69 const res = await api.listAPI(queryParams.value) 97 try {
70 list.value = res.rows || [] 98 const res = await api.listAPI(queryParams.value)
71 } catch (e) { 99 list.value = res.rows || []
72 list.value = [] 100 } catch (e) {
73 console.error('获取成员失败', e) 101 list.value = []
74 } 102 console.error('获取成员失败', e)
75 } 103 }
76 104 }
77 function getAuditLogs() { 105
78 if (form.value.auditLogs) { 106 function getAuditLogs() {
79 try { 107 if (form.value.auditLogs) {
80 feelList.value = JSON.parse(form.value.auditLogs) 108 try {
81 } catch (e) { 109 feelList.value = JSON.parse(form.value.auditLogs)
82 feelList.value = [] 110 } catch (e) {
83 } 111 feelList.value = []
84 } 112 }
85 } 113 }
114 }
86 </script> 115 </script>
87 116
88 <style scoped lang="scss">
89 .wBox {
90 width: 700rpx;
91 padding: 30rpx;
92 margin: 20rpx auto 0;
93 background: #FFFFFF;
94 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
95 border-radius: 15rpx;
96
97 .tt {
98 color: #0A1629;
99 font-size: 30rpx;
100 }
101 }
102
103 .userlist {
104 .item {
105 border-bottom: 1px dashed #e5e5e5;
106 position: relative;
107 padding: 20rpx 0;
108
109 .date {
110 margin-top: 10rpx;
111 font-size: 24rpx;
112 color: #999;
113 }
114
115 .name {
116 font-size: 30rpx;
117 text {
118 margin-left: 1em;
119 color: #4C5359;
120 font-size: 26rpx;
121 }
122 }
123
124 .nian {
125 position: absolute;
126 right: 0;
127 top: 30rpx;
128 font-size: 30rpx;
129 color: #AD181F;
130 }
131 }
132 }
133
134 .info {
135 display: flex;
136 margin: 30rpx 0 20rpx;
137 font-size: 28rpx;
138
139 view {
140 color: #7D8592;
141 margin-right: 20rpx;
142 text {
143 color: #AD181F;
144 }
145 }
146 }
147
148 .h3-padding {
149 padding: 20rpx 30rpx 0;
150 font-size: 30rpx;
151 font-weight: 500;
152 }
153
154 .stepItem {
155 border-left: 2rpx solid #E60012;
156 padding-left: 20rpx;
157 position: relative;
158 margin-bottom: 30rpx;
159
160 &:before {
161 content: '';
162 width: 12rpx;
163 height: 12rpx;
164 background: #E60012;
165 border-radius: 50%;
166 position: absolute;
167 left: -7rpx;
168 top: 0;
169 }
170
171 .time {
172 font-size: 24rpx;
173 color: #999;
174 }
175
176 .content {
177 margin-top: 10rpx;
178 font-size: 28rpx;
179
180 .status {
181 margin-bottom: 8rpx;
182 }
183
184 .name {
185 font-weight: 500;
186 }
187
188 .deptName {
189 margin: 6rpx 0;
190 color: #666;
191 }
192 }
193 }
194 </style>
...\ No newline at end of file ...\ No newline at end of file
117 <style lang="scss" scoped>
118 .wBox {
119 width: 700rpx;
120 padding: 30rpx;
121 margin: 20rpx auto 0;
122 background: #FFFFFF;
123 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
124 border-radius: 15rpx;
125
126 .tt {
127 color: #0A1629;
128 font-size: 30rpx;
129 }
130 }
131
132 .userlist {
133 .item {
134 border-bottom: 1px dashed #e5e5e5;
135 position: relative;
136 padding: 20rpx 0;
137
138 .date {
139 margin-top: 10rpx;
140 font-size: 24rpx;
141 color: #999;
142 }
143
144 .name {
145 font-size: 30rpx;
146
147 text {
148 margin-left: 1em;
149 color: #4C5359;
150 font-size: 26rpx;
151 }
152 }
153
154 .nian {
155 position: absolute;
156 right: 0;
157 top: 30rpx;
158 font-size: 30rpx;
159 color: #AD181F;
160 }
161 }
162 }
163
164 .info {
165 display: flex;
166 margin: 30rpx 0 20rpx;
167 font-size: 28rpx;
168
169 view {
170 color: #7D8592;
171 margin-right: 20rpx;
172
173 text {
174 color: #AD181F;
175 }
176 }
177 }
178
179 .h3-padding {
180 padding: 20rpx 30rpx 0;
181 font-size: 30rpx;
182 font-weight: 500;
183 }
184
185 .stepItem {
186 border-left: 2rpx solid #E60012;
187 padding-left: 20rpx;
188 position: relative;
189 margin-bottom: 30rpx;
190
191 &:before {
192 content: '';
193 width: 12rpx;
194 height: 12rpx;
195 background: #E60012;
196 border-radius: 50%;
197 position: absolute;
198 left: -7rpx;
199 top: 0;
200 }
201
202 .time {
203 font-size: 24rpx;
204 color: #999;
205 }
206
207 .content {
208 margin-top: 10rpx;
209 font-size: 28rpx;
210
211 .status {
212 margin-bottom: 8rpx;
213 }
214
215 .name {
216 font-weight: 500;
217 }
218
219 .deptName {
220 margin: 6rpx 0;
221 color: #666;
222 }
223 }
224 }
225 </style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!