ztx个人审核
Showing
2 changed files
with
98 additions
and
60 deletions
| ... | @@ -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" style="flex-wrap: wrap;"> | ||
| 6 | <view class="w45">共 | ||
| 7 | <text class="text-danger"> {{ form?.allCount }}</text> | ||
| 8 | 人 | ||
| 9 | </view> | ||
| 10 | <view class="w45">新会员 | ||
| 11 | <text class="text-primary"> {{ form?.newCount }}</text> | ||
| 12 | 人 | ||
| 13 | </view> | ||
| 14 | <view class="w45">续费合计 | ||
| 15 | <text class="text-primary"> {{ form?.oldCount }}</text> | ||
| 16 | 人 | ||
| 17 | </view> | ||
| 18 | <view class="w45">费用合计 | ||
| 19 | <text class="text-danger">{{ form?.price }}</text> | ||
| 20 | 元 | ||
| 21 | </view> | ||
| 22 | </view> | ||
| 23 | </view> | ||
| 24 | |||
| 25 | |||
| 26 | <view class="wBox"> | ||
| 27 | <!-- <view class="tt">{{ // form.paymentName }}</view>--> | ||
| 5 | <view class="info"> | 28 | <view class="info"> |
| 6 | <view>共<text>{{list.length}}</text>人</view> | 29 | <view>共 |
| 30 | <text>{{ list.length }}</text> | ||
| 31 | 人 | ||
| 32 | </view> | ||
| 7 | </view> | 33 | </view> |
| 8 | <view class="userlist"> | 34 | <view class="userlist"> |
| 9 | <view class="item" v-for="(n,index) in list" :key="index"> | 35 | <view v-for="(n,index) in list" :key="index" class="item"> |
| 10 | <view> | 36 | <view> |
| 11 | <view class="name">{{n.perName}}<text v-if="n.memberInfoName">({{n.memberInfoName || ''}})</text></view> | 37 | <view class="name">{{ n.perName }} |
| 12 | <view class="date">原有效期至 {{n.originValidityDate ? n.originValidityDate.slice(0,10) : '--'}}</view> | 38 | <text v-if="n.memberInfoName">({{ n.memberInfoName || '' }})</text> |
| 39 | </view> | ||
| 40 | <view class="date">原有效期至 {{ n.originValidityDate ? n.originValidityDate.slice(0, 10) : '--' }}</view> | ||
| 13 | </view> | 41 | </view> |
| 14 | <view class="nian"> | 42 | <view class="nian"> |
| 15 | {{n.payYear}}年 | 43 | {{ n.payYear }}年 |
| 16 | </view> | 44 | </view> |
| 17 | </view> | 45 | </view> |
| 18 | </view> | 46 | </view> |
| 19 | </view> | 47 | </view> |
| 20 | 48 | ||
| 21 | <view class="h3-padding" v-if="feelList.length>0">审核流程</view> | 49 | <view v-if="feelList.length>0" class="h3-padding">审核流程</view> |
| 22 | <view class="wBox" v-if="feelList.length>0"> | 50 | <view v-if="feelList.length>0" class="wBox"> |
| 23 | <view class="stepItem" v-for="(n,index) in feelList" :key="index"> | 51 | <view v-for="(n,index) in feelList" :key="index" class="stepItem"> |
| 24 | <view class="time">{{n.auditTime || '待审批'}}</view> | 52 | <view class="time">{{ n.auditTime || '待审批' }}</view> |
| 25 | <view class="content"> | 53 | <view class="content"> |
| 26 | <view class="status"> | 54 | <view class="status"> |
| 27 | <text v-if="n.auditResult==0" class="text-primary"> 审核中</text> | 55 | <text v-if="n.auditResult==0" class="text-primary"> 审核中</text> |
| ... | @@ -29,9 +57,9 @@ | ... | @@ -29,9 +57,9 @@ |
| 29 | <text v-if="n.auditResult==2" class="text-danger"> 审核拒绝</text> | 57 | <text v-if="n.auditResult==2" class="text-danger"> 审核拒绝</text> |
| 30 | <text v-if="n.auditResult==3" class="text-warning"> 已撤回</text> | 58 | <text v-if="n.auditResult==3" class="text-warning"> 已撤回</text> |
| 31 | </view> | 59 | </view> |
| 32 | <view class="name">第 {{index+1}} 步</view> | 60 | <view class="name">第 {{ index + 1 }} 步</view> |
| 33 | <view class="deptName">{{n.auditDeptName || n.auditBy}}</view> | 61 | <view class="deptName">{{ n.auditDeptName || n.auditBy }}</view> |
| 34 | <view>备注:{{n.auditMsg || '/' }}</view> | 62 | <view>备注:{{ n.auditMsg || '/' }}</view> |
| 35 | </view> | 63 | </view> |
| 36 | </view> | 64 | </view> |
| 37 | </view> | 65 | </view> |
| ... | @@ -39,32 +67,33 @@ | ... | @@ -39,32 +67,33 @@ |
| 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 | |||
| 62 | getList() | 89 | getList() |
| 63 | getAuditLogs() | 90 | getAuditLogs() |
| 64 | } | 91 | } |
| 65 | }) | ||
| 66 | 92 | ||
| 67 | async function getList() { | 93 | console.log(form.value) |
| 94 | }) | ||
| 95 | |||
| 96 | async function getList() { | ||
| 68 | try { | 97 | try { |
| 69 | const res = await api.listAPI(queryParams.value) | 98 | const res = await api.listAPI(queryParams.value) |
| 70 | list.value = res.rows || [] | 99 | list.value = res.rows || [] |
| ... | @@ -72,9 +101,9 @@ | ... | @@ -72,9 +101,9 @@ |
| 72 | list.value = [] | 101 | list.value = [] |
| 73 | console.error('获取成员失败', e) | 102 | console.error('获取成员失败', e) |
| 74 | } | 103 | } |
| 75 | } | 104 | } |
| 76 | 105 | ||
| 77 | function getAuditLogs() { | 106 | function getAuditLogs() { |
| 78 | if (form.value.auditLogs) { | 107 | if (form.value.auditLogs) { |
| 79 | try { | 108 | try { |
| 80 | feelList.value = JSON.parse(form.value.auditLogs) | 109 | feelList.value = JSON.parse(form.value.auditLogs) |
| ... | @@ -82,11 +111,11 @@ | ... | @@ -82,11 +111,11 @@ |
| 82 | feelList.value = [] | 111 | feelList.value = [] |
| 83 | } | 112 | } |
| 84 | } | 113 | } |
| 85 | } | 114 | } |
| 86 | </script> | 115 | </script> |
| 87 | 116 | ||
| 88 | <style scoped lang="scss"> | 117 | <style lang="scss" scoped> |
| 89 | .wBox { | 118 | .wBox { |
| 90 | width: 700rpx; | 119 | width: 700rpx; |
| 91 | padding: 30rpx; | 120 | padding: 30rpx; |
| 92 | margin: 20rpx auto 0; | 121 | margin: 20rpx auto 0; |
| ... | @@ -98,9 +127,9 @@ | ... | @@ -98,9 +127,9 @@ |
| 98 | color: #0A1629; | 127 | color: #0A1629; |
| 99 | font-size: 30rpx; | 128 | font-size: 30rpx; |
| 100 | } | 129 | } |
| 101 | } | 130 | } |
| 102 | 131 | ||
| 103 | .userlist { | 132 | .userlist { |
| 104 | .item { | 133 | .item { |
| 105 | border-bottom: 1px dashed #e5e5e5; | 134 | border-bottom: 1px dashed #e5e5e5; |
| 106 | position: relative; | 135 | position: relative; |
| ... | @@ -114,6 +143,7 @@ | ... | @@ -114,6 +143,7 @@ |
| 114 | 143 | ||
| 115 | .name { | 144 | .name { |
| 116 | font-size: 30rpx; | 145 | font-size: 30rpx; |
| 146 | |||
| 117 | text { | 147 | text { |
| 118 | margin-left: 1em; | 148 | margin-left: 1em; |
| 119 | color: #4C5359; | 149 | color: #4C5359; |
| ... | @@ -129,9 +159,9 @@ | ... | @@ -129,9 +159,9 @@ |
| 129 | color: #AD181F; | 159 | color: #AD181F; |
| 130 | } | 160 | } |
| 131 | } | 161 | } |
| 132 | } | 162 | } |
| 133 | 163 | ||
| 134 | .info { | 164 | .info { |
| 135 | display: flex; | 165 | display: flex; |
| 136 | margin: 30rpx 0 20rpx; | 166 | margin: 30rpx 0 20rpx; |
| 137 | font-size: 28rpx; | 167 | font-size: 28rpx; |
| ... | @@ -139,19 +169,20 @@ | ... | @@ -139,19 +169,20 @@ |
| 139 | view { | 169 | view { |
| 140 | color: #7D8592; | 170 | color: #7D8592; |
| 141 | margin-right: 20rpx; | 171 | margin-right: 20rpx; |
| 172 | |||
| 142 | text { | 173 | text { |
| 143 | color: #AD181F; | 174 | color: #AD181F; |
| 144 | } | 175 | } |
| 145 | } | 176 | } |
| 146 | } | 177 | } |
| 147 | 178 | ||
| 148 | .h3-padding { | 179 | .h3-padding { |
| 149 | padding: 20rpx 30rpx 0; | 180 | padding: 20rpx 30rpx 0; |
| 150 | font-size: 30rpx; | 181 | font-size: 30rpx; |
| 151 | font-weight: 500; | 182 | font-weight: 500; |
| 152 | } | 183 | } |
| 153 | 184 | ||
| 154 | .stepItem { | 185 | .stepItem { |
| 155 | border-left: 2rpx solid #E60012; | 186 | border-left: 2rpx solid #E60012; |
| 156 | padding-left: 20rpx; | 187 | padding-left: 20rpx; |
| 157 | position: relative; | 188 | position: relative; |
| ... | @@ -190,5 +221,5 @@ | ... | @@ -190,5 +221,5 @@ |
| 190 | color: #666; | 221 | color: #666; |
| 191 | } | 222 | } |
| 192 | } | 223 | } |
| 193 | } | 224 | } |
| 194 | </style> | 225 | </style> | ... | ... |
-
Please register or sign in to post a comment