团体审核
Showing
5 changed files
with
524 additions
and
599 deletions
| ... | @@ -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> | ... | ... |
-
Please register or sign in to post a comment