78423ea5 by 杨炀

no message

1 parent 13130ef0
Showing 70 changed files with 3085 additions and 387 deletions
...@@ -85,6 +85,7 @@ function getInfo() { ...@@ -85,6 +85,7 @@ function getInfo() {
85 // const personInfo = res.data.personInfo 85 // const personInfo = res.data.personInfo
86 uni.setStorageSync('userName', user.userName) 86 uni.setStorageSync('userName', user.userName)
87 // uni.setStorageSync('perId', personInfo.perId||-1) 87 // uni.setStorageSync('perId', personInfo.perId||-1)
88 app.globalData.user = res.data.user
88 app.globalData.deptType = user.dept.deptType 89 app.globalData.deptType = user.dept.deptType
89 app.globalData.genFlag = user.dept.genFlag 90 app.globalData.genFlag = user.dept.genFlag
90 // user.dept.deptType = '3' 91 // user.dept.deptType = '3'
......
...@@ -6,15 +6,18 @@ page { ...@@ -6,15 +6,18 @@ page {
6 .wBox{box-sizing: border-box;} 6 .wBox{box-sizing: border-box;}
7 .h3 {font-weight: bold;line-height: 2;} 7 .h3 {font-weight: bold;line-height: 2;}
8 .text-center{text-align: center;} 8 .text-center{text-align: center;}
9 .underLine{text-decoration: underline;}
9 .fr{float:right} 10 .fr{float:right}
10 .w25{width: 25%;} 11 .w25{width: 25%;}
11 .w33{width: 33%;} 12 .w33{width: 33%;}
12 .w66{width: 66%;} 13 .w66{width: 66%;}
13 .w50{width: 50%;} 14 .w50{width: 50%;}
14 .w45{width: 45%;} 15 .w45{width: 45%;}
16 .w80{width: 80%!important;}
15 .w100{width: 100%!important;} 17 .w100{width: 100%!important;}
16 .mt0{margin-top: 0 !important;} 18 .mt0{margin-top: 0 !important;}
17 .mt10{margin-top: 10px !important;} 19 .mt10{margin-top: 10px !important;}
20 .mt20{margin-top: 20px !important;}
18 .must{color: #AD181F;font-size: 24rpx;} 21 .must{color: #AD181F;font-size: 24rpx;}
19 .vipData .w50{width: 45%;} 22 .vipData .w50{width: 45%;}
20 .esp{text-overflow: ellipsis;overflow: hidden;white-space: nowrap;} 23 .esp{text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}
...@@ -29,12 +32,12 @@ page { ...@@ -29,12 +32,12 @@ page {
29 .align-forms-item{line-height: 2.6;} 32 .align-forms-item{line-height: 2.6;}
30 .more{color: #929AA0;font-size: 24rpx;} 33 .more{color: #929AA0;font-size: 24rpx;}
31 .msglist{ 34 .msglist{
32 .msgitem{background: #FFFFFF;border-radius: 10rpx;margin-bottom: 25rpx;padding: 30rpx 20rpx 30rpx 50rpx; 35 .msgitem{background: #FFFFFF;border-radius: 10rpx;margin-bottom: 25rpx;padding: 20rpx;
33 position: relative; 36 position: relative;
34 .dot{width: 12rpx;display: block;position: absolute;left: 20rpx;top: 40rpx; 37 .dot{width: 12rpx;display: block;position: absolute;left: 20rpx;top: 40rpx;
35 height: 12rpx;background: #C40F18;border-radius: 50%;} 38 height: 12rpx;background: #C40F18;border-radius: 50%;}
36 .dot.done{background: #C7C7CD;} 39 .dot.done{background: #C7C7CD;}
37 .tt{font-size: 28rpx;color: #29343C;} 40 .tt{font-size: 28rpx;color: #000;}
38 .date{color: #929AA0;font-size: 24rpx; 41 .date{color: #929AA0;font-size: 24rpx;
39 .text-primary{text-decoration: underline;}} 42 .text-primary{text-decoration: underline;}}
40 } 43 }
...@@ -219,7 +222,7 @@ page { ...@@ -219,7 +222,7 @@ page {
219 padding:20rpx;position: relative; 222 padding:20rpx;position: relative;
220 .date{color: #999;font-size: 24rpx;} 223 .date{color: #999;font-size: 24rpx;}
221 .status{font-size: 28rpx;position: absolute;right: 30rpx;} 224 .status{font-size: 28rpx;position: absolute;right: 30rpx;}
222 .name{font-size: 30rpx;margin-bottom: 10rpx; 225 .name{font-size: 30rpx;margin-bottom: 10rpx;word-wrap: break-all;
223 text{font-size: 28rpx;color: #666;} 226 text{font-size: 28rpx;color: #666;}
224 } 227 }
225 .icon { 228 .icon {
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
2 <view> 2 <view>
3 <view class="text-center whitebg" v-if="userType=='2'"> 3 <view class="text-center whitebg" v-if="userType=='2'">
4 <view class="cardNav"> 4 <view class="cardNav">
5 <view class="active">会员审核</view> 5 <view class="active">审核</view>
6 <view @click="goMerge">审核合并</view> 6 <view @click="goMerge">合并</view>
7 <view @click="goMergeUp">合并提交</view> 7 <view @click="goMergeUp">提交</view>
8 </view> 8 </view>
9 </view> 9 </view>
10 <!-- 团队会员审核 --> 10 <!-- 团队会员审核 -->
...@@ -27,15 +27,11 @@ ...@@ -27,15 +27,11 @@
27 <view class="date"> 27 <view class="date">
28 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons> 28 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
29 {{item.content.commitTime}} 提交</view> 29 {{item.content.commitTime}} 提交</view>
30 30 <view class="text-primary" @click="goDetail(item)" v-if="item.content?.wfCode">{{item.content?.wfCode}}</view>
31 <view class="name w100" @click="goDetail(item)"> 31 <view class="name w100 mt0" @click="goDetail(item)">
32 <!-- <text class="dot"></text> --> 32 <!-- <text class="dot"></text> -->
33 {{item.content.certName}}</view> 33 {{item.content.certName}}</view>
34 <view class="flexbox" @click="goDetail(item)"> 34 <view class="flexbox" @click="goDetail(item)">
35 <!-- <view>
36 缴费单位
37 <view>{{ item.content.memberName }}</view>
38 </view> -->
39 <view v-if="userType == '3'"> 35 <view v-if="userType == '3'">
40 所属省份 36 所属省份
41 <view>{{item.content.province}}</view> 37 <view>{{item.content.province}}</view>
...@@ -62,27 +58,28 @@ ...@@ -62,27 +58,28 @@
62 <view> ¥{{ (item?.content?.allFee*1).toFixed(2) }}</view> 58 <view> ¥{{ (item?.content?.allFee*1).toFixed(2) }}</view>
63 </view> 59 </view>
64 </view> 60 </view>
65 <view class="func" v-if="(userType == '3'||userType == '2') && item.auditStatus == 0">
66 <button @click="audit(item.recordId,'0')">拒绝</button>
67 <button @click="audit(item.recordId,'1')">同意</button>
68 </view>
69 <view class="func" v-if="(userType == '1'&&item.auditStatus == 0)"> 61 <view class="func" v-if="(userType == '1'&&item.auditStatus == 0)">
70 <button @click="audit(item.recordId,'0')">拒绝</button> 62 <button @click="audit(item.recordId,'0')">拒绝</button>
71 <button @click="audit(item.recordId,'1')">同意</button> 63 <button @click="audit(item.recordId,'1')">同意</button>
72 </view> 64 </view>
73 <!-- 中协 --> 65 <!-- 中协 -->
74 <view class="func" v-if="(userType == '1'&&item.auditStatus == 1&&item.canTui==1)"> 66 <view class="func" v-if="(userType == '1'&&item.auditStatus == 1&&item.canTui==1)">
75 <button @click="sendBack(item)">撤回</button> 67 <button @click="sendBack(item)">撤回</button>
76 </view> 68 </view>
77 <!-- 市 --> 69 <!-- 市 -->
78 <view class="func" 70 <view class="func" v-if="userType == '3'">
79 v-if="(userType == '3'&&item.auditStatus == 1&&item.isView==1&&item.content.allCount > 0)"> 71 <button @click="goGroupInfo(item)">机构资料</button>
80 <button @click="sendBack(item)">撤回</button> 72 <button v-if="item.auditStatus == 1&&item.isView==1&&item.content.allCount > 0" @click="sendBack(item)">撤回</button>
81 </view> 73 <button v-if="item.auditStatus == 0" @click="audit(item.recordId,'0')">拒绝</button>
74 <button v-if="item.auditStatus == 0" @click="audit(item.recordId,'1')">同意</button>
75
76 </view>
82 <!-- 省 --> 77 <!-- 省 -->
83 <view class="func" 78 <view class="func" v-if="userType == '2'">
84 v-if="(userType == '2'&&item.auditStatus == 1)"> 79 <button @click="goGroupInfo(item)">机构资料</button>
85 <button @click="sendBack(item)">撤回</button> 80 <button v-if="item.auditStatus == 1" @click="sendBack(item)">撤回</button>
81 <button v-if="item.auditStatus == 0" @click="audit(item.recordId,'0')">拒绝</button>
82 <button v-if="item.auditStatus == 0" @click="audit(item.recordId,'1')">同意</button>
86 </view> 83 </view>
87 </view> 84 </view>
88 </view> 85 </view>
...@@ -259,7 +256,7 @@ function sendBack(row) { ...@@ -259,7 +256,7 @@ function sendBack(row) {
259 content: `确定撤回${row.content.certName}吗`, 256 content: `确定撤回${row.content.certName}吗`,
260 success: function(res) { 257 success: function(res) {
261 if (res.confirm) { 258 if (res.confirm) {
262 api.groupWithDraw({ 259 api.certifiedwithDraw({
263 recordId: row.recordId, 260 recordId: row.recordId,
264 reason: row.reason 261 reason: row.reason
265 }).then(res => { 262 }).then(res => {
...@@ -273,7 +270,13 @@ function sendBack(row) { ...@@ -273,7 +270,13 @@ function sendBack(row) {
273 } 270 }
274 } 271 }
275 }) 272 })
276 } 273 }
274
275 function goGroupInfo(row){
276 uni.navigateTo({
277 url: `/group/groupInfo?memId=${row.content?.memId}`
278 })
279 }
277 </script> 280 </script>
278 281
279 <style scoped> 282 <style scoped>
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
2 <view class="hasfixedbottom"> 2 <view class="hasfixedbottom">
3 <view class="text-center whitebg"> 3 <view class="text-center whitebg">
4 <view class="cardNav"> 4 <view class="cardNav">
5 <view @click="goApply">会员审核</view> 5 <view @click="goApply">审核</view>
6 <view class="active">审核合并</view> 6 <view class="active">合并</view>
7 <view @click="goMergeUp">合并提交</view> 7 <view @click="goMergeUp">提交</view>
8 </view> 8 </view>
9 </view> 9 </view>
10 <!-- 审批合并 --> 10 <!-- 审批合并 -->
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
22 </view> 22 </view>
23 23
24 <view class="date" v-if="item.content.commitTime">提交日期:{{item.content.commitTime}}</view> 24 <view class="date" v-if="item.content.commitTime">提交日期:{{item.content.commitTime}}</view>
25 <view class="text-primary" v-if="item.content?.wfCode">{{item.content?.wfCode}}</view>
25 <view class="name mt0" @click="goDetail(item)">{{item.content.certName}}</view> 26 <view class="name mt0" @click="goDetail(item)">{{item.content.certName}}</view>
26 <view class="flexbox" @click="goDetail(item)"> 27 <view class="flexbox" @click="goDetail(item)">
27 <view> 28 <view>
...@@ -30,7 +31,7 @@ ...@@ -30,7 +31,7 @@
30 </view> 31 </view>
31 <view v-if="item.content.validityTime"> 32 <view v-if="item.content.validityTime">
32 原有效期 33 原有效期
33 <view>{{item.content.validityTime}}</view> 34 <view>{{item.content?.validityTime.slice(0,10)}}</view>
34 </view> 35 </view>
35 <view> 36 <view>
36 年限 37 年限
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
2 <view> 2 <view>
3 <view class="text-center whitebg"> 3 <view class="text-center whitebg">
4 <view class="cardNav"> 4 <view class="cardNav">
5 <view @click="goApply">会员审核</view> 5 <view @click="goApply">审核</view>
6 <view @click="goMerge">审核合并</view> 6 <view @click="goMerge">合并</view>
7 <view class="active">合并提交</view> 7 <view class="active">提交</view>
8 </view> 8 </view>
9 </view> 9 </view>
10 <!-- 团队会员审核 --> 10 <!-- 团队会员审核 -->
...@@ -20,14 +20,15 @@ ...@@ -20,14 +20,15 @@
20 </view> 20 </view>
21 <view class="date">提交日期:{{item.content.commitTime}}</view> 21 <view class="date">提交日期:{{item.content.commitTime}}</view>
22 <view class="date" v-if="item.content.validityTime">原有效期:{{item.content.validityTime}}</view> 22 <view class="date" v-if="item.content.validityTime">原有效期:{{item.content.validityTime}}</view>
23 <view class="name" @click="goDetail(item)">{{item.content.certName}}</view> 23 <view class="text-primary" v-if="item.content?.wfCode">{{item.content?.wfCode}}</view>
24 <view class="name mt0" style="width: 100%;" @click="goDetail(item)">{{item.content?.certName}}</view>
24 <view class="flexbox" @click="goDetail(item)"> 25 <view class="flexbox" @click="goDetail(item)">
25 <view> 26 <view>
26 年限 27 年限
27 <view>{{item.content.renewYear}}</view> 28 <view>{{item.content.renewYear}}</view>
28 </view> 29 </view>
29 <view> 30 <view>
30 会员合计/新会员 31 会员/新会员
31 <view>{{item.content.allCount}}/<text class="text-danger">{{item.content.newCount}}</text></view> 32 <view>{{item.content.allCount}}/<text class="text-danger">{{item.content.newCount}}</text></view>
32 </view> 33 </view>
33 <view> 34 <view>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
7 </view> 7 </view>
8 <view class="date">提交单位:<text>{{ form.content?.memberName }}</text> </view> 8 <view class="date">提交单位:<text>{{ form.content?.memberName }}</text> </view>
9 </view> 9 </view>
10 <view class="vipData mt30" style="flex-wrap: wrap;"> 10 <view class="vipData mt30" style="flex-wrap: wrap;padding: 20rpx;">
11 <view class="w50"> 11 <view class="w50">
12 团队会员合计: 12 团队会员合计:
13 <text>{{ form.content?.allCount }}</text> 13 <text>{{ form.content?.allCount }}</text>
...@@ -28,9 +28,9 @@ ...@@ -28,9 +28,9 @@
28 28
29 <!-- 成员 --> 29 <!-- 成员 -->
30 <view class="userlist"> 30 <view class="userlist">
31 <view class="item" v-for="(n,index) in list" :key="n.index" @click="goGroupInfo(n)"> 31 <view class="item" style="padding: 20rpx 0 0;" v-for="(n,index) in list" :key="n.index" @click="goGroupInfo(n)">
32 <view style="width: 100%"> 32 <view style="width: 100%">
33 <view class="name">{{n.memberName}}</view> 33 <view class="name text-primary underLine">{{n.memberName}}</view>
34 <view class="date">单位类型: 34 <view class="date">单位类型:
35 <text v-if="n.deptType==2">一级协会</text> 35 <text v-if="n.deptType==2">一级协会</text>
36 <text v-if="n.deptType==3">直属协会</text> 36 <text v-if="n.deptType==3">直属协会</text>
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
38 <text v-if="n.deptType==5">三级协会</text> 38 <text v-if="n.deptType==5">三级协会</text>
39 <text v-if="n.deptType==6">职业性团体会员</text> 39 <text v-if="n.deptType==6">职业性团体会员</text>
40 </view> 40 </view>
41 <view class="flexbox"> 41 <view class="flexbox" style="background-color: rgba(244, 249, 253, 1);padding:10rpx;">
42 <view> 42 <view>
43 <view> 43 <view>
44 原有效期 44 原有效期
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
21 </view> 21 </view>
22 22
23 <view class="name mt0" @click="goDetail(item)"> 23 <view class="name mt0" @click="goDetail(item)">
24 {{item.code}}-{{item.shenMemName}} 24 <text class="text-primary">{{item.code}}</text>-{{item.shenMemName}}
25 </view> 25 </view>
26 <view class="flexbox" @click="goDetail(item)"> 26 <view class="flexbox" @click="goDetail(item)">
27 <view> 27 <view>
......
1 <template>
2 <view class="hasfixedbottom">
3
4 <view class="searchbar">
5 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
6 v-model="query.name" placeholder="搜索团体会员名称" @blur="getSonList" @clear="getSonList">
7 </uni-easyinput>
8 <view class="invertedbtn-red" @click="getSonList">搜索</view>
9 </view>
10 <view class="userlist">
11 <view class="item" v-for=" (n,index) in studentList" :key="index">
12 <view @click="checkThis(n)">
13 <image class="icon" v-if="n.checked"
14 :src="config.baseUrl_api+'/fs/static/member/dx_dwn.png'" />
15 <image class="icon" v-else :src="config.baseUrl_api+'/fs/static/member/dx.png'" />
16 </view>
17 <view class="w100">
18 <view class="name">{{n.name}} </view>
19 <view class="flexbox" style="padding: 0">
20 <view v-if="n.memCode">会员号
21 <text>{{n.memCode}}</text>
22 </view>
23 <view class="date" v-if="n.validityDate">到期时间
24 <text>{{n.validityDate?.slice(0,10)}}</text>
25 </view>
26 <view class="date">团体类型
27 <text v-if="n.deptType == 2">一级协会</text>
28 <text v-if="n.deptType == 3">直属协会</text>
29 <text v-if="n.deptType == 4">二级协会</text>
30 <text v-if="n.deptType == 5">三级协会</text>
31 <text v-if="n.deptType == 6">职业性团体会员</text>
32 </view>
33 </view>
34 </view>
35 </view>
36 <view class="nodata" v-if="studentList.length==0">
37 <image mode="aspectFit" src="/static/nodata.png"></image>
38 <text>无可变更会员</text>
39 </view>
40 </view>
41 <uni-load-more @clickLoadMore="clickLoadMore" :contentText="contentText" :status="status"></uni-load-more>
42
43 <view class="fixedBottom" v-if="studentList.length!=0">
44 <button class="btn-red" @click="handleImport">批量添加</button>
45 </view>
46 </view>
47 </template>
48
49 <script setup>
50 import {
51 ref
52 } from 'vue'
53 import {
54 onLoad,
55 onShow
56 } from '@dcloudio/uni-app'
57 import * as api from '@/common/api.js'
58 import _ from 'lodash'
59 import config from '/config.js'
60 const query = ref({
61 pageNum:1,
62 pageSize:10,
63 paymentRangeId:-1,
64 })
65 const total = ref(0)
66 const list = ref([])
67 const studentList = ref([])
68 const type = ref('')
69 const form = ref({})
70 const status = ref('no-more')
71 const contentText = ref({contentdown: "点击加载更多",contentrefresh: "正在加载...",contentnomore: "没有更多数据了"})
72
73 onLoad((option) => {
74 if (option.rangeId) {
75 query.value.paymentRangeId = option.rangeId
76 }
77 getList()
78 })
79 onShow(() => {})
80
81 function clickLoadMore(){
82 getList()
83 }
84 function getList() {
85 if(total.value>0&&total.value>studentList.value.length){
86 uni.showLoading({
87 title: '加载中',
88 icon: 'none'
89 })
90 status.value = 'loading'
91 query.value.pageNum += 1
92 api.getMySonList(query.value).then(res => {
93 studentList.value = _.concat(studentList.value,res.data.rows)
94 total.value = res.data.total
95 if(total.value>studentList.value.length){
96 status.value = 'more'
97 } else {
98 status.value = 'no-more'
99 }
100 uni.hideLoading()
101 })
102 }else if(total.value==0){
103 getSonList()
104 }
105 }
106 function getSonList(){
107 query.value.pageNum = 1
108 api.getMySonList(query.value).then(res => {
109 studentList.value = res.data.rows
110 total.value = res.data.total
111 if(total.value>studentList.value.length){
112 status.value = 'more'
113 } else {
114 status.value = 'no-more'
115 }
116 })
117 }
118
119 function checkThis(n) {
120 if (n.checked) {
121 n.checked = false
122 } else {
123 n.checked = true
124 }
125 }
126
127 function handleImport() {
128 var arr = []
129 for (var n of studentList.value) {
130 if (n.checked) {
131 arr.push(n.memId)
132 }
133 }
134 api.addGroupInfoModeToRange({
135 memId: arr,
136 rangeIdStr: query.value.paymentRangeId
137 }).then(res => {
138 var pages = getCurrentPages()
139 var prevPage = pages[pages.length - 2]
140 prevPage.onShow(res.data)
141 uni.navigateBack()
142 })
143 }
144
145 </script>
146 <style scoped lang="scss">
147 .searchbar {
148 display: flex;
149 align-items: center;
150 padding:25rpx;
151 box-sizing: border-box;
152
153 :deep(.uni-easyinput .uni-easyinput__content) {
154 border-radius: 35rpx;
155 height: 66rpx; border: 1px solid #AD181F!important;
156 }
157
158 :deep(.uni-easyinput__content-input) {
159 font-size: 26rpx;
160 }
161
162 .invertedbtn-red {
163 border-radius: 50px; margin-left: 20rpx;
164 background-color: #fff;
165
166 font-size: 30rpx;
167 padding: 10rpx 20rpx;
168 }
169 }
170 .userlist {padding: 0 25rpx;}
171 .flexbox {
172 padding: 30rpx 30rpx 0
173 }
174
175 .danger-button {
176 display: flex;
177 flex-direction: column;
178 align-items: center;
179 justify-content: center;
180 }
181
182 .collapseBody {
183 padding: 0 30rpx;
184 box-sizing: border-box;
185 font-size: 28rpx;
186
187 view {
188 margin: 0 0 20rpx;
189
190 label {
191 width: 7em;
192 color: #999;
193 display: inline-block;
194 text-align: right;
195 }
196 }
197 }
198
199 .popBody {
200 background: #fff;
201 padding: 30rpx;
202 }
203
204 .text-center .btn-red-kx {
205 border-radius: 50px;
206 font-size: 28rpx;
207 }
208 :deep(.file-picker__progress){opacity: 0;}
209 </style>
...\ No newline at end of file ...\ No newline at end of file
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
20 </view> 20 </view>
21 21
22 <view class="name mt0" @click="goDetail(item)"> 22 <view class="name mt0" @click="goDetail(item)">
23 {{item.code}}-{{item.shenMemName}} 23 <text class="text-primary">{{item.code}}</text>-{{item.shenMemName}}
24 </view> 24 </view>
25 <view class="flexbox" @click="goDetail(item)"> 25 <view class="flexbox" @click="goDetail(item)">
26 <view> 26 <view>
......
...@@ -16,8 +16,8 @@ ...@@ -16,8 +16,8 @@
16 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons> 16 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
17 <text>{{item.payTime}} 缴费</text> 17 <text>{{item.payTime}} 缴费</text>
18 </view> 18 </view>
19 19 <view class="text-primary" v-if="item.wfCode">{{item.wfCode}}</view>
20 <view class="name" @click="goDetail(item)">{{item.finalDocName}}</view> 20 <view class="name mt0" @click="goDetail(item)">{{item.finalDocName}}</view>
21 <view v-if="deptType==1" class="date"> 21 <view v-if="deptType==1" class="date">
22 <text>{{item.payNoticeSendTime}} 下发</text> 22 <text>{{item.payNoticeSendTime}} 下发</text>
23 </view> 23 </view>
...@@ -28,10 +28,10 @@ ...@@ -28,10 +28,10 @@
28 <text class="text-primary">已结算</text> 28 <text class="text-primary">已结算</text>
29 </view> 29 </view>
30 <view v-if="item.settleFlag == 1 && item?.payFlag == 0"> 30 <view v-if="item.settleFlag == 1 && item?.payFlag == 0">
31 <text class="text-success">已上传凭证</text> 31 <text class="text-success">已上传</text>
32 </view> 32 </view>
33 <view v-if="item.settleFlag == 1 && item?.payFlag == 1"> 33 <view v-if="item.settleFlag == 1 && item?.payFlag == 1">
34 <text class="text-danger">未上传凭证</text> 34 <text class="text-danger">未上传</text>
35 </view> 35 </view>
36 </view> 36 </view>
37 <view> 37 <view>
......
...@@ -148,7 +148,13 @@ onLoad((option) => { ...@@ -148,7 +148,13 @@ onLoad((option) => {
148 getList() 148 getList()
149 } 149 }
150 }) 150 })
151 onShow(() => {}) 151 onShow((option) => {
152 console.log(option)
153 if(option){
154 queryParams.value.rangeId = option
155 getList()
156 }
157 })
152 158
153 function getList() { 159 function getList() {
154 uni.showLoading({ 160 uni.showLoading({
...@@ -188,17 +194,19 @@ function handleDelete(row) { ...@@ -188,17 +194,19 @@ function handleDelete(row) {
188 } 194 }
189 195
190 function chooseOnline() { 196 function chooseOnline() {
191 uni.showLoading({ 197 // uni.showLoading({
192 title: '加载中', 198 // title: '加载中',
193 icon: 'none' 199 // icon: 'none'
194 }) 200 // })
195 query.value.paymentRangeId = queryParams.value.rangeId || '-1' 201 // query.value.paymentRangeId = queryParams.value.rangeId || '-1'
196 api.getMySonList(query.value).then(res => { 202 // api.getMySonList(query.value).then(res => {
197 studentList.value = res.data.rows 203 // studentList.value = res.data.rows
198 uni.hideLoading() 204 // uni.hideLoading()
199 choseStudent.value.open() 205 // choseStudent.value.open()
200 }) 206 // })
201 207 uni.navigateTo({
208 url:`/group/changeGroupChoseList?rangeId=${queryParams.value.rangeId || '-1'}`
209 })
202 } 210 }
203 function getSonList(){ 211 function getSonList(){
204 uni.showLoading({ 212 uni.showLoading({
......
...@@ -16,8 +16,9 @@ ...@@ -16,8 +16,9 @@
16 <text v-if="item?.content?.status==3" class="text-danger"> 审核拒绝</text> 16 <text v-if="item?.content?.status==3" class="text-danger"> 审核拒绝</text>
17 <text v-if="item?.content?.status==4" class="text-warning">已撤回</text> 17 <text v-if="item?.content?.status==4" class="text-warning">已撤回</text>
18 </view> 18 </view>
19 <view class="date">{{item?.content?.commitTime}} 提交</view> 19 <view class="date">{{item?.content?.commitTime}} 提交</view>
20 <view class="name" @click="goDetail(item)">{{item.rangeName}}</view> 20 <view class="text-primary" v-if="item.wfCode">{{item.wfCode}}</view>
21 <view class="name mt0" @click="goDetail(item)">{{item.rangeName}}</view>
21 <view class="flexbox" @click="goDetail(item)"> 22 <view class="flexbox" @click="goDetail(item)">
22 <view> 23 <view>
23 会员合计 24 会员合计
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
22 撤回 22 撤回
23 </view> 23 </view>
24 </view> 24 </view>
25 <view class="name">{{n.memberName}}</view> 25 <view class="name text-primary underLine">{{n.memberName}}</view>
26 <view class="date">提交日期:{{n.commitTime}} 26 <view class="date">提交日期:{{n.commitTime}}
27 </view> 27 </view>
28 <view class="flexbox"> 28 <view class="flexbox">
......
...@@ -57,10 +57,11 @@ ...@@ -57,10 +57,11 @@
57 <view class="w100"> 57 <view class="w100">
58 <view class="del" @click="handleDelete(n)">删除</view> 58 <view class="del" @click="handleDelete(n)">删除</view>
59 <view style="display: flex;"> 59 <view style="display: flex;">
60 <!--
60 <view class="photobox"> 61 <view class="photobox">
61 <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image> 62 <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image>
62 <view class="colorful" v-else>{{n.realName?.slice(0,1)}}</view> 63 <view class="colorful" v-else>{{n.realName?.slice(0,1)}}</view>
63 </view> 64 </view> -->
64 <view> 65 <view>
65 <view class="name">{{n.realName}} <text>{{n.perCode}}</text></view> 66 <view class="name">{{n.realName}} <text>{{n.perCode}}</text></view>
66 <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> 67 <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view>
...@@ -549,10 +550,12 @@ ...@@ -549,10 +550,12 @@
549 if (e !== nowRow.levelRecommend) { 550 if (e !== nowRow.levelRecommend) {
550 uni.showModal({ 551 uni.showModal({
551 title: '提示', 552 title: '提示',
552 content: `建议考试级别为 "${szToHz(nowRow.levelRecommend)}级" ,确定要修改吗?`, 553 content: `建议考试级别为 "${szToHz(nowRow.levelRecommend)}级" ,确定要修改${szToHz(e)}吗?`,
553 success: function(res) { 554 success: function(res) {
554 if (res.confirm) { 555 if (res.confirm) {
555 getTablePersonInfo() 556 getTablePersonInfo()
557 }else{
558 nowRow.levelNew = nowRow.levelRecommend
556 } 559 }
557 }, 560 },
558 fail: function(res) { 561 fail: function(res) {
...@@ -583,12 +586,18 @@ ...@@ -583,12 +586,18 @@
583 title: '提示', 586 title: '提示',
584 content: `确定提交审核?`, 587 content: `确定提交审核?`,
585 success: function(res) { 588 success: function(res) {
586 saveStep2(flag).then(res => { 589 if (res.confirm) {
587 uni.showToast({ 590 console.log('用户点击确定');
588 title: `操作成功` 591 saveStep2(flag).then(Response => {
592 uni.showToast({
593 title: `操作成功`
594 })
595 uni.navigateBack()
589 }) 596 })
590 uni.navigateBack() 597 } else if (res.cancel) {
591 }) 598 console.log('用户点击取消');
599 }
600
592 } 601 }
593 }) 602 })
594 } else { 603 } else {
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
16 <text v-if="item.status=='4'" class="text-warning">{{ item.statusStr }}</text> 16 <text v-if="item.status=='4'" class="text-warning">{{ item.statusStr }}</text>
17 </view> 17 </view>
18 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> 18 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
19 <view class="mt0" @click="goDetail(item)"><text class="text-primary">{{item.examCode}}</text></view>
19 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view> 20 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
20 <view class="pp esp">申请单位:{{item.memberName}}</view> 21 <view class="pp esp">申请单位:{{item.memberName}}</view>
21 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view> 22 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
......
...@@ -3,29 +3,29 @@ ...@@ -3,29 +3,29 @@
3 <view class="wBox"> 3 <view class="wBox">
4 <view class="tt">考级基本信息</view> 4 <view class="tt">考级基本信息</view>
5 <view class="ddd"> 5 <view class="ddd">
6 <text class="lab">考级名称:</text>{{ form.name }} 6 <text class="lab">考级名称:</text>{{ form?.name }}
7 </view> 7 </view>
8 <view class="ddd"> 8 <view class="ddd">
9 <text class="lab">申请日期:</text>{{form.applyTime}} 9 <text class="lab">申请日期:</text>{{form?.applyTime?.slice(0,10)}}
10 </view> 10 </view>
11 <view class="ddd"> 11 <view class="ddd">
12 <text class="lab">申请单位:</text>{{ form.memberName }} 12 <text class="lab">申请单位:</text>{{ form?.memberName }}
13 </view> 13 </view>
14 <view class="ddd"> 14 <view class="ddd">
15 <text class="lab">考官:</text>{{form.examinerNames?.split(',').join('/')}} 15 <text class="lab">考官:</text>{{form?.examinerNames?.split(',').join('/')}}
16 </view> 16 </view>
17 <view class="ddd"> 17 <view class="ddd">
18 <text class="lab">考试开始时间:</text>{{form.startTime}} 18 <text class="lab">考试开始时间:</text>{{form?.startTime}}
19 </view> 19 </view>
20 <view class="ddd"> 20 <view class="ddd">
21 <text class="lab">考试结束时间:</text>{{form.endTime}} 21 <text class="lab">考试结束时间:</text>{{form?.endTime}}
22 </view> 22 </view>
23 <view class="ddd"> 23 <view class="ddd">
24 <text class="lab">考级地点:</text>{{form.address}} 24 <text class="lab">考级地点:</text>{{form?.address}}
25 </view> 25 </view>
26 <view class="ddd" v-if="userType=='2'||userType=='1'"> 26 <view class="ddd" v-if="userType=='2'||userType=='1'">
27 <text class="lab">总金额:</text> 27 <text class="lab">总金额:</text>
28 <text class="text-danger">¥{{(form.totalAmount*1).toFixed(2) }}</text> 28 <text class="text-danger">¥{{(form?.totalAmount*1).toFixed(2) }}</text>
29 </view> 29 </view>
30 </view> 30 </view>
31 <view class="wBox"> 31 <view class="wBox">
...@@ -130,6 +130,7 @@ ...@@ -130,6 +130,7 @@
130 let recordId = '' 130 let recordId = ''
131 onLoad((option) => { 131 onLoad((option) => {
132 examId = option.examId 132 examId = option.examId
133 console.log(option)
133 if ('form' in option) { 134 if ('form' in option) {
134 form.value = JSON.parse(decodeURIComponent(option.form)) 135 form.value = JSON.parse(decodeURIComponent(option.form))
135 console.log('form',form.value) 136 console.log('form',form.value)
...@@ -165,6 +166,7 @@ ...@@ -165,6 +166,7 @@
165 api.getLevelApplyInfo(examId).then(res => { 166 api.getLevelApplyInfo(examId).then(res => {
166 uni.hideLoading() 167 uni.hideLoading()
167 form.value = res.data 168 form.value = res.data
169 console.log(form.value)
168 }) 170 })
169 } 171 }
170 172
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
2 <view> 2 <view>
3 <view class="text-center whitebg" v-if="userType=='2'"> 3 <view class="text-center whitebg" v-if="userType=='2'">
4 <view class="cardNav"> 4 <view class="cardNav">
5 <view class="active">会员审核</view> 5 <view class="active">审核</view>
6 <view @click="goMerge">审核合并</view> 6 <view @click="goMerge">合并</view>
7 <view @click="goMergeUp">合并提交</view> 7 <view @click="goMergeUp">提交</view>
8 </view> 8 </view>
9 </view> 9 </view>
10 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" 10 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
22 </view> 22 </view>
23 23
24 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> 24 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
25 <view class="text-primary" v-if="item.examCode">{{item.examCode}}</view>
25 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view> 26 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
26 <view class="pp esp">申请日期:{{item.applyTime.substring(0,10)}}</view> 27 <view class="pp esp">申请日期:{{item.applyTime.substring(0,10)}}</view>
27 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view> 28 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
...@@ -241,8 +242,12 @@ ...@@ -241,8 +242,12 @@
241 }) 242 })
242 } 243 }
243 function doApproval(obj) { 244 function doApproval(obj) {
245 uni.showLoading({
246 title: '加载中'
247 })
244 console.log(obj) 248 console.log(obj)
245 api.doVerity(obj).then((res) => { 249 api.doVerity(obj).then((res) => {
250 uni.hideLoading()
246 uni.showToast({ 251 uni.showToast({
247 title: '操作成功', 252 title: '操作成功',
248 icon: 'none' 253 icon: 'none'
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
2 <view class="hasfixedbottom"> 2 <view class="hasfixedbottom">
3 <view class="text-center whitebg"> 3 <view class="text-center whitebg">
4 <view class="cardNav"> 4 <view class="cardNav">
5 <view @click="goApproval">会员审核</view> 5 <view @click="goApproval">审核</view>
6 <view class="active">审核合并</view> 6 <view class="active">合并</view>
7 <view @click="goMergeUp">合并提交</view> 7 <view @click="goMergeUp">提交</view>
8 </view> 8 </view>
9 </view> 9 </view>
10 <view class="appList"> 10 <view class="appList">
...@@ -21,7 +21,8 @@ ...@@ -21,7 +21,8 @@
21 }">{{ item.statusStr }}</text> 21 }">{{ item.statusStr }}</text>
22 </view> 22 </view>
23 23
24 <view class="date" v-if="item.applyTime">上报日期:{{item.applyTime}}</view> 24 <view class="date" v-if="item.applyTime">上报日期:{{item.applyTime?.slice(0,10)}}</view>
25 <view class="text-primary" v-if="item.examCode">{{item.examCode}}</view>
25 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view> 26 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
26 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view> 27 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
27 <view class="flexbox" @click="goDetail(item)"> 28 <view class="flexbox" @click="goDetail(item)">
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
2 <view> 2 <view>
3 <view class="text-center whitebg"> 3 <view class="text-center whitebg">
4 <view class="cardNav"> 4 <view class="cardNav">
5 <view @click="goApproval">会员审核</view> 5 <view @click="goApproval">审核</view>
6 <view @click="goMerge">审核合并</view> 6 <view @click="goMerge">合并</view>
7 <view class="active">合并提交</view> 7 <view class="active">提交</view>
8 </view> 8 </view>
9 </view> 9 </view>
10 <!-- 级位合并提交 --> 10 <!-- 级位合并提交 -->
...@@ -25,8 +25,9 @@ ...@@ -25,8 +25,9 @@
25 {{ item.auditStatus=='100'?'待提交':statusArr[item.status] }} 25 {{ item.auditStatus=='100'?'待提交':statusArr[item.status] }}
26 </view> 26 </view>
27 </view> 27 </view>
28 <view class="date" v-if="item.handleDate">{{item.handleDate}}</view> 28 <view class="date" v-if="item.handleDate">{{item.handleDate}}</view>
29 <view class="name" @click="goDetail(item)">{{item.mergeName}}</view> 29 <view v-if="item.flowCode" class="text-primary">{{item.flowCode}}</view>
30 <view class="name mt0" @click="goDetail(item)">{{item.mergeName}}</view>
30 <view class="flexbox" @click="goDetail(item)"> 31 <view class="flexbox" @click="goDetail(item)">
31 <view> 32 <view>
32 考试人数 33 考试人数
...@@ -142,7 +143,7 @@ ...@@ -142,7 +143,7 @@
142 item.payStatus = r.payStatus 143 item.payStatus = r.payStatus
143 item.sourceData = r 144 item.sourceData = r
144 item.auditProcess = r.auditProcess 145 item.auditProcess = r.auditProcess
145 item.handleDate = r.handleDate 146 item.handleDate = r.handleDate
146 list.push(item) 147 list.push(item)
147 148
148 statistical.value.totalCost += (item.totalAmount * 1) 149 statistical.value.totalCost += (item.totalAmount * 1)
...@@ -150,7 +151,7 @@ ...@@ -150,7 +151,7 @@
150 151
151 }) 152 })
152 infoList.value = list 153 infoList.value = list
153 total.value = response.total 154 total.value = response.total
154 }) 155 })
155 } 156 }
156 function handleBack(row){ 157 function handleBack(row){
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
28 <view class="userlist"> 28 <view class="userlist">
29 <view class="item" v-for="(n,index) in infoList" :key="index" @click="goDetail(n)" style="background-color: #fffafa;"> 29 <view class="item" v-for="(n,index) in infoList" :key="index" @click="goDetail(n)" style="background-color: #fffafa;">
30 <view class="w100"> 30 <view class="w100">
31 <view class="text-primary">{{n.examCode}}</view>
31 <view class="name">{{n.name}}</view> 32 <view class="name">{{n.name}}</view>
32 <!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> --> 33 <!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> -->
33 <view class="flexbox"> 34 <view class="flexbox">
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
14 <text v-if="item.payTime">{{item.payTime}} 缴费</text> 14 <text v-if="item.payTime">{{item.payTime}} 缴费</text>
15 <text v-else>{{item.payNoticeSendTime}} 下发</text> 15 <text v-else>{{item.payNoticeSendTime}} 下发</text>
16 </view> 16 </view>
17 <view class="text-primary" v-if="item.payCode">{{item.payCode}}</view>
17 <view class="name" @click="goDetail(item)">{{item.finalDocName}}</view> 18 <view class="name" @click="goDetail(item)">{{item.finalDocName}}</view>
18 <view class="flexbox" @click="goDetail(item)"> 19 <view class="flexbox" @click="goDetail(item)">
19 <view> 20 <view>
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
20 </view> 20 </view>
21 21
22 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> 22 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
23 <view class="text-primary">{{item.flowCode}}</view>
23 <view class="name mt0" @click="goDetail(item)">{{item.mergeName}}</view> 24 <view class="name mt0" @click="goDetail(item)">{{item.mergeName}}</view>
24 <view class="pp esp">上报单位:{{item.memName}}</view> 25 <view class="pp esp">上报单位:{{item.memName}}</view>
25 <view class="flexbox" @click="goDetail(item)"> 26 <view class="flexbox" @click="goDetail(item)">
...@@ -32,8 +33,8 @@ ...@@ -32,8 +33,8 @@
32 缴费状态 33 缴费状态
33 <view> 34 <view>
34 <text :class="{ 35 <text :class="{
35 'text-success':item.examPayStatusStr=='已上传凭证', 36 'text-success':item.examPayStatusStr=='已上传',
36 'text-danger':item.examPayStatusStr=='未上传凭证', 37 'text-danger':item.examPayStatusStr=='未上传',
37 'text-warning':item.examPayStatusStr=='已结算' 38 'text-warning':item.examPayStatusStr=='已结算'
38 }">{{ item.examPayStatusStr||'--' }}</text> 39 }">{{ item.examPayStatusStr||'--' }}</text>
39 </view> 40 </view>
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
14 <view class="date"> 14 <view class="date">
15 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons> 15 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
16 {{item.submitTimeStr}} 提交</view> 16 {{item.submitTimeStr}} 提交</view>
17 <view class="text-primary" v-if="item.payCode" @click="goDetail(item)">{{item.payCode}}</view>
17 <view class="name mt0 w100" @click="goDetail(item)"><text class="dot"></text>{{item.name}}</view> 18 <view class="name mt0 w100" @click="goDetail(item)"><text class="dot"></text>{{item.name}}</view>
18 <view class="pp esp" v-if="item.certTimeStr">证书发送时间:{{item.certTimeStr}}</view> 19 <view class="pp esp" v-if="item.certTimeStr">证书发送时间:{{item.certTimeStr}}</view>
19 <view class="flexbox" @click="goDetail(item)"> 20 <view class="flexbox" @click="goDetail(item)">
......
1 <template>
2 <view class="page">
3 <view class="bgbg">
4 <view class="flex">
5 <view class="imgbox">
6 <image v-if="state.user.avatar" :src="state.user.avatar"/>
7 <image v-else src="@/static/nodata.png"/>
8 </view>
9 <text class="name">{{ state.user.userName }}</text>
10 </view>
11 </view>
12 <view class="rMainBox">
13 <uni-list :border="false" class="myList">
14 <uni-list-item thumb="/static/user_icon01.png" title="团体信息" showArrow clickable @click="goPath('/myCenter/teamInfo')">
15 </uni-list-item>
16
17 <uni-list-item thumb="/static/user_icon02.png" title="会员认证" showArrow clickable @click="goPath('/myCenter/auth')">
18 </uni-list-item>
19
20 <!-- <uni-list-item thumb="/static/user_icon03.png" v-show="userType==2" title="账户信息" showArrow clickable>
21 </uni-list-item> -->
22
23 <uni-list-item thumb="/static/user_icon03.png" title="账号安全" showArrow clickable @click="goPath('/myCenter/safe')">
24 </uni-list-item>
25
26 </uni-list>
27
28 </view>
29
30 <view class="fixedBottom" style="background: transparent;box-shadow: none;">
31 <button @click="loginOut" class="btn btn-red" style="border-radius: 50px;">退出登录</button>
32 </view>
33 </view>
34 </template>
35
36 <script setup>
37 import * as api from '@/common/api.js';
38 import * as loginServer from '@/common/login.js';
39 import config from '@/config.js'
40 import {
41 onLoad,
42 onShow,
43 onReady,
44 onPullDownRefresh
45 } from '@dcloudio/uni-app';
46 import {
47 ref,reactive,
48 getCurrentInstance
49 } from 'vue';
50
51
52 const {
53 proxy
54 } = getCurrentInstance()
55 const app = getApp();
56 const userType = ref('1')
57 const memberInfo = ref({})
58
59 let proId;
60 const svId = ref(null);
61 const numData = ref({});
62
63 const messageList = ref([])
64 const state = reactive({
65 user: {},
66 roleGroup: {},
67 postGroup: {}
68 })
69 onShow(() => {
70 if (app.globalData.isLogin) {
71 init()
72 } else {
73 app.firstLoadCallback = () => {
74 init()
75 };
76 }
77 })
78 onLoad(option => {
79 if (option.scene) {
80 proId = decodeURIComponent(option.scene);
81 } else {
82 proId = option.proId;
83 }
84 if(uni.showShareMenu){
85 uni.showShareMenu({
86 withShareTicket: true,
87 menus: ['shareAppMessage', 'shareTimeline']
88 });
89 }
90 });
91
92 function loginOut() {
93 uni.showModal({
94 content: `确认退出吗?`,
95 success: function(res) {
96 if (res.confirm) {
97 loginServer.logout().finally(() => {
98 let path = '/login/login';
99 uni.reLaunch({
100 url: path
101 });
102 })
103 }
104 }
105 })
106 }
107 function getUser() {
108 api.getUserProfile().then((response) => {
109 state.user = response.data.user
110 if(state.user.avatar&&state.user.avatar.indexOf('http')==-1){
111 state.user.avatar = config.baseUrl_api+state.user.avatar
112 }
113 state.roleGroup = response.data.roleGroup
114 state.postGroup = response.data.postGroup
115 uni.hideLoading();
116 })
117 }
118 function init() {
119 uni.showLoading({
120 title: '加载中'
121 });
122 getUser()
123 loginServer.getMyOwnMemberInfo().then(res => {
124 userType.value = app.globalData.userType
125 memberInfo.value = app.globalData.memberInfo
126 uni.hideLoading();
127 })
128 }
129 function goPath(url){
130 uni.navigateTo({
131 url:url
132 })
133 }
134
135 </script>
136 <style scope lang="scss">
137 .uni-list:after{display: none;}
138 .page {
139 width: 100vw;
140 overflow: hidden;
141 }
142 .bgbg{
143 .flex{align-items: center;}
144 height: 280rpx;padding:30rpx;
145 .name{margin-left: 20rpx;
146 font-size: 36rpx;}
147 .imgbox{width: 120rpx;
148 height: 120rpx;overflow: hidden;
149 background: #C7C7CD;
150 border: 4rpx solid #FFFFFF;
151 border-radius: 50%;
152 image{height: 120rpx;width: 120rpx;object-fit: cover;}
153 }
154 }
155 .loginOutIcon {
156 position: relative;
157 left: 60rpx;
158 // top: 180rpx;
159
160 image {
161 width: 50rpx;
162 height: 50rpx;
163 }
164 }
165
166 .flexbox {
167 display: flex;
168 justify-content: space-around;
169 text-align: center;
170
171 image {
172 width: 90rpx;
173 height: 90rpx;
174 display: block;
175 margin: auto;
176 }
177 }
178
179 .image {
180 width: 25px;
181 height: 25px;
182 }
183
184 :deep(.uni-section) {
185 background-color: transparent;
186 }
187
188 :deep(.uni-section .uni-section-header__content) {
189 font-size: 44rpx;
190 font-weight: bold;
191 color: #29343C;
192 }
193
194 :deep(.uni-section .uni-section-header) {
195 padding: 0 30rpx;
196 }
197
198 .potag {
199 position: absolute;
200 right: 60rpx;
201 top: 0;
202 }
203
204 .girdFather {
205 background: #fff;
206 position: relative;
207 top: -15rpx;
208 padding: 1rpx 0 0;
209 border-radius: 20rpx 20rpx 0rpx 0rpx;
210 box-sizing: border-box;
211
212 .girdBox {
213 top: 0;
214 padding: 0 0 15rpx;
215 border-bottom: 20rpx solid #ecf0f6
216 }
217
218 .ttt {
219 margin: 30rpx 0 20rpx;
220 padding: 0 20rpx 0;
221 }
222 }
223 .rMainBox {position: relative;top:-120rpx;
224 box-sizing: border-box;padding: 20rpx 20rpx;
225 background-color: #fff;
226 border-radius: 15rpx;
227 margin: 25rpx;overflow: hidden;
228 }
229 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view>
3 <view class="pd30" style="padding: 30rpx 30rpx 180rpx;">
4 <view class="wBox">
5 <uni-forms ref="baseForm" :modelValue="form" label-width="100">
6 <uni-forms-item label="所属协会" required>
7 <uni-data-picker style="width: 82%;" v-model="form.parentId"
8 :localdata="tree"
9 :readonly="type&&parentId!=-1&&parentId!=0"
10 :clear-icon="false" :map="{text:'label',value:'id'}"
11 popup-title="请选择" @change="onchange"
12 @nodeclick="onnodeclick"></uni-data-picker>
13 </uni-forms-item>
14 <uni-forms-item v-if="form.memCode" label="会员编号" required>
15 <uni-easyinput v-model="form.memCode" disabled />
16 </uni-forms-item>
17
18 <uni-forms-item label="机构名称" required>
19 <uni-easyinput v-model="form.name" :disabled="type" placeholder="机构名称" /></uni-forms-item>
20
21 <uni-forms-item label="所属省份" required>
22 <uni-data-select :clear="false" :disabled="type&&(belongProvinceId||belongProvinceId==0)"
23 v-model="form.belongProvinceId" :localdata="regionsList"></uni-data-select>
24 </uni-forms-item>
25 <uni-forms-item label="社会信用代码" required>
26 <uni-easyinput v-model="form.creditCode" :disabled="type&&!!creditCode&&newResult" />
27 </uni-forms-item>
28 <uni-forms-item label="联系人" required>
29 <uni-easyinput v-model="form.siteContact" />
30 </uni-forms-item>
31 <uni-forms-item label="联系方式" required>
32 <uni-easyinput v-model="form.siteTel" />
33 </uni-forms-item>
34 <uni-forms-item label="认证地址" required>
35 <uni-data-picker v-model="form.coordinates1"
36 :localdata="regionsList"></uni-data-picker>
37 </uni-forms-item>
38 <uni-forms-item label="详细地址" required>
39 <uni-easyinput v-model="form.adress" placeholder="请输入详细地址" type='textarea' /></uni-forms-item>
40 <uni-forms-item label="法人姓名" required>
41 <uni-easyinput v-model="form.legal" />
42 </uni-forms-item>
43
44 <uni-forms-item v-if="form.deptType==6&&activeStatus!= 0" label="是否申请考点" required>
45 <uni-data-checkbox v-model="form.applyPoints" :localdata="yesno" />
46 </uni-forms-item>
47
48 <uni-forms-item label="法人身份证" required>
49 <view class="imgArea">
50 <uni-file-picker v-model="imgfront" @delete="delimgFont" return-type="object" limit="1"
51 @select="upIdCardImgFront" :image-styles="imageStylesZJ">
52 <view>国徽面</view>
53 </uni-file-picker>
54 <uni-file-picker style="margin-top: 30px;" v-model="imgBack" @delete="delimgBack"
55 return-type="object" limit="1" @select="upIdCardImgBack" :image-styles="imageStylesZJ">
56 <view>头像面</view>
57 </uni-file-picker>
58 </view>
59 </uni-forms-item>
60 <uni-forms-item label="营业执照" required>
61 <uni-file-picker limit="1" v-model="form.businessLicense" file-extname="png,jpg,jpeg,pdf,zip"
62 file-mediatype="all" @select="selectFile(form,$event)"
63 @delete="delSupplementFile(form)"></uni-file-picker>
64
65 </uni-forms-item>
66 <uni-forms-item label="机构照片" required>
67 <uni-file-picker v-model="picArr" @delete="delpicArr" limit="3" @select="upPicArr">
68 </uni-file-picker>
69 </uni-forms-item>
70 </uni-forms>
71 <view class="fixedBottom">
72 <button class="btn-red" @click="submit()">确定</button>
73 </view>
74 </view>
75
76 </view>
77 </view>
78
79 <uni-popup ref="popup" type="bottom">
80 <view class="popBody">
81 <view class="tt">选择缴费年限</view>
82 <view class="pickitem" v-for="(item,index) in years" :key="index" @click="bindChange(item)">
83 {{item}}
84 <uni-icons v-if="form.renewYear == item" type="checkmarkempty" size="20"
85 color="green"></uni-icons>
86 <uni-icons v-else type="checkmarkempty" size="20"
87 color="white"></uni-icons>
88 </view>
89
90 <button class="btn-red" @click="submitForm">确定</button>
91 </view>
92
93 </uni-popup>
94 </template>
95
96 <script setup>
97 import {
98 ref
99 } from 'vue';
100 import * as api from '@/common/api.js';
101 import {
102 onLoad,
103 onShow
104 } from '@dcloudio/uni-app';
105 import config from '@/config.js'
106 const app = getApp();
107 const form = ref({
108 type: '1'
109 });
110 const typeList = ref([{
111 value: '1',
112 text: '企业'
113 }, {
114 value: '2',
115 text: '国家组织'
116 }, {
117 value: '3',
118 text: '社会组织'
119 }, {
120 value: '4',
121 text: '其他'
122 }])
123 const years = ref(['1', '2', '3', '4', '5'])
124 const yesno = ref([{
125 value: '0',
126 text: '否'
127 }, {
128 value: '1',
129 text: '是'
130 }, ])
131 const regionArr = ref();
132 const regionsList = ref([]);
133 const tree = ref([]);
134 const showDirectly = ref(true)
135 const directUnderFlag = ref(0)
136 const current = ref(0);
137 const groupId = ref(0);
138 const currIndex = ref(null);
139 const signType = ref();
140 const editIng = ref(true);
141 const isSign = ref(false);
142 const type = ref(false) // 第一次选择认证认证类型
143 const flag = ref(false)
144 const result = ref(false)
145 const query = ref({
146 type: 0
147 });
148 const activeStatus = ref(0)
149 const active = ref(0)
150 const memberInfo = ref({})
151 const authenticationStatus = ref()
152 const authenticationStatusa = ref()
153 const newResult = ref(false)
154 const popup = ref(null)
155 const belongProvinceId = ref()
156 const list1 = ref([{
157 title: '完善信息'
158 }, {
159 title: '会员认证'
160 }])
161 const imageStylesZJ = ref({
162 width: '400rpx',
163 height: '253rpx'
164 });
165 const indicatorStyle=ref(`height: 50px;`)
166 onLoad(option => {
167 if (app.globalData.isLogin) {
168 init()
169 } else {
170 app.firstLoadCallback = () => {
171 init()
172 };
173 }
174 });
175
176 function init() {
177 getRegionsList()
178 getTree()
179 getForm()
180 }
181
182 function getForm() {
183 api.getMyOwnMemberInfo().then(res => {
184 newResult.value = res.data.newResult //
185 result.value = res.data.result // 认证缴费状态
186 authenticationStatusa.value = res.data.authenticationStatus
187 showDirectly.value = !res.data.memberInfo.associateId
188 activeStatus.value = res.data.memberInfo.activeStatus
189 directUnderFlag.value = res.data.memberInfo.directUnderFlag
190 // 认证信息
191 if (authenticationStatusa.value == 0 || authenticationStatusa.value == 3) {
192 type.value = false
193 } else {
194 type.value = true
195 }
196 // 至少审核通过一次
197 if (authenticationStatusa.value != 0) {
198 if (newResult.value) {
199 // 至少认证过一次
200 flag.value = true
201 } else {
202 // 没有认证
203 flag.value = false
204 }
205 }
206 form.value = {
207 ...res.data.dept,
208 ...res.data.memberInfo
209 }
210 form.value.parentId = form.value.parentId.toString()
211 belongProvinceId.value = form.value.belongProvinceId
212 })
213 }
214
215 function getTree() {
216 if (authenticationStatusa.value == 0 || authenticationStatusa.value == 3 || authenticationStatusa.value == 1) {
217 var obj = {
218 selfDeptId: '-1',
219 webSiteShow: 1,
220 showDisabled: 1
221 }
222 api.certifiedDeptTree(obj).then(res => {
223 tree.value = res.data
224 })
225 } else {
226 var obj = {
227 selfDeptId: '-1',
228 showDisabled: 1,
229 showDirect: authenticationStatusa.value == 2 || authenticationStatusa.value == 5 ||
230 authenticationStatusa.value == 4 ? 1 : null
231 }
232 api.deptTreeSelect(obj).then(res => {
233 tree.value = res.data
234 })
235 }
236 }
237
238
239 function getRegionsList() {
240 api.regionsList().then(res => {
241 regionsList.value = res.data;
242 });
243 }
244
245 function submit() {
246 // 验证必填项
247 if (form.value.name == '') {
248 uni.showToast({
249 title: '请填写机构名称',
250 icon: 'none'
251 })
252 return
253 }
254
255 //
256 popup.value.open()
257 }
258 function submitForm(){
259 if(!form.value.renewYear){
260 uni.showToast({
261 title: '请选择缴费年限',
262 icon: 'none'
263 })
264 return
265 }
266 api.centerCommit({ renewYear: form.value.renewYear }).then(res=>{
267 uni.showModal({
268 content:`缴费等待审核中!`,
269 success:function(res){
270 if(res.confirm){
271 uni.navigateBack()
272 }
273 }
274 })
275 })
276 }
277
278 function upIdCardImgFront(e) {
279 let file = e.tempFiles[0]
280 if (!file) {
281 return
282 }
283 uni.showLoading({
284 title: '加载中'
285 });
286 }
287 function bindChange(e){
288 console.log(e)
289 form.value.renewYear = e
290 }
291 </script>
292
293 <style lang="scss" scoped>
294 .pickitem{height:40px;text-align: center;
295 line-height: 40px;}
296 .picker-view {
297 width: 750rpx;
298 height: 600rpx;
299 margin-top: 20rpx;
300 }
301 .item {
302 line-height: 100rpx;
303 text-align: center;
304 }
305 .popBody {
306 background: #fff;
307 padding: 30rpx;
308 }
309
310 :deep(.uni-data-tree) {
311 border: 1px solid #dcdfe6;
312 border-radius: 4px;
313
314 .selected-list {
315 justify-content: start;
316 }
317 }
318
319 :deep(.uni-select__input-placeholder) {
320 font-size: 30rpx;
321 }
322
323 :deep(.uni-easyinput__content-input) {
324 font-size: 30rpx;
325 }
326
327 :deep(.uni-easyinput__placeholder-class) {
328 font-size: 30rpx;
329 color: grey;
330 }
331
332 .wBox {
333 width: 700rpx;
334 padding: 30rpx;
335 margin: 20rpx auto 0;
336 background: #FFFFFF;
337 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
338 border-radius: 15rpx;
339 }
340
341 .imgArea {
342 padding: 1px;
343 display: flex;
344 flex-wrap: wrap;
345 flex-direction: column;
346 }
347 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view>
3 <view class="wBox">
4 <view class="tt">
5 审核信息
6 </view>
7 <view>
8 <view class="stepItem" v-for="(n,index) in recordList" :key="index">
9 <view class="time">{{n.auditTime||'待审批'}}</view>
10 <view class="content">
11 <view class="status">
12 <text v-if="n.auditResult==0"> 审核中</text>
13 <text v-if="n.auditResult==1" class="text-success">审核通过</text>
14 <text v-if="n.auditResult==2" class="text-danger"> 审核拒绝</text>
15 <text v-if="n.auditResult==3" class="text-warning"> 已撤回</text>
16 </view>
17 <!-- <view class="name">{{index+1}}</view> -->
18 <view class="deptName">{{n.auditDeptName}}</view>
19 <view v-if="n.auditStatus==2">
20 备注:{{n.auditMsg||'/' }}
21 </view>
22 </view>
23 </view>
24 </view>
25 </view>
26
27 </view>
28 </template>
29
30 <script setup>
31 import * as api from '@/common/api.js'
32 import config from '@/config.js'
33 import _ from 'lodash'
34 import {
35 onMounted,
36 ref
37 } from 'vue'
38 import {
39 onLoad,
40 onShow
41 } from '@dcloudio/uni-app'
42 const app = getApp();
43 const userType = ref('')
44 const recordList = ref([])
45 onLoad((option) => {
46 getMyCertStageFN()
47 })
48
49 function getMyCertStageFN() {
50 api.getMyCertStage().then(res => {
51 recordList.value = res.data
52 console.log(res)
53 })
54
55 }
56 </script>
57
58 <style scoped lang="scss">
59 .wBox {
60 width: 700rpx;
61 padding: 30rpx;
62 margin: 20rpx auto;
63 background: #FFFFFF;
64 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
65 border-radius: 15rpx;
66
67 .tt {
68 color: #0A1629;
69 margin: 0 0 30rpx;
70 font-size: 30rpx;
71 }
72
73 .ddd {
74 font-size: 28rpx;
75 color: #333;
76 margin: 0 0 10rpx;
77
78 .lab {
79 color: #999;
80 display: inline-block;
81 text-align: justify;
82 }
83 }
84 }
85 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view>
3 <uni-segmented-control :current="current" @clickItem="changeNav" activeColor="#AD181F" styleType="text" :values="items"></uni-segmented-control>
4
5 <view v-if="current==0" class="mainbox">
6 <uni-forms label-width="80">
7 <uni-forms-item label="用户昵称" required>
8 <uni-easyinput v-model="user.nickName" :disabled="!edit" />
9 </uni-forms-item>
10 <uni-forms-item label="手机号码" required>
11 <uni-easyinput v-model="user.phonenumber" :disabled="!edit" />
12 </uni-forms-item>
13 <uni-forms-item label="邮箱" required>
14 <uni-easyinput v-model="user.email" :disabled="!edit" />
15 </uni-forms-item>
16 <uni-forms-item label="性别" required>
17 <uni-data-checkbox :disabled="!edit" v-model="user.sex" @change="changeSex" :localdata="sexs" />
18 </uni-forms-item>
19 </uni-forms>
20
21
22 <view class="fixedBottom" v-if="edit">
23 <button class="btn-red-kx" @click="cancel">取消</button>
24 <button class="btn-red" style="width: 50%;" @click="submit">保存</button>
25 </view>
26 <view class="fixedBottom" v-else>
27 <button class="btn-red" @click="editForm">编辑</button>
28 </view>
29 </view>
30 <view v-if="current==1" class="mainbox">
31 <uni-forms label-width="80">
32 <uni-forms-item label="旧密码" name="oldPassword" required>
33 <uni-easyinput type="password" v-model="form.oldPassword" placeholder="请输入旧密码" />
34 </uni-forms-item>
35 <uni-forms-item label="新密码" name="newPassword" required>
36 <uni-easyinput type="password" v-model="form.newPassword" placeholder="请输入新密码" />
37 <view class="text-danger" v-show="form.newPassword?.length<8">不足8位</view>
38 <text class="text-warning">*注: 8~18位大小写字母加数字加特殊符号组合(!@#$%^&*()_+)</text>
39 </uni-forms-item>
40 <uni-forms-item label="确认密码" name="confirmPassword" required>
41 <uni-easyinput type="password" v-model="form.confirmPassword" placeholder="请确认新密码" />
42 <text class="text-danger" v-show="form.newPassword!==form.confirmPassword">与新密码不一致</text>
43 </uni-forms-item>
44
45 </uni-forms>
46
47 <view class="fixedBottom">
48 <button class="btn-red" @click="handleClick">修改密码</button>
49 </view>
50 </view>
51 </view>
52 </template>
53
54 <script setup>
55 import { ref } from 'vue'
56 import { onLoad } from '@dcloudio/uni-app'
57 import * as api from '@/common/api.js';
58 const items = ref(['基本资料','修改密码'])
59 const user = ref({
60 sex:'0'
61 })
62 const current = ref(0)
63 const form = ref({})
64 const edit = ref(false)
65 const sexs = ref([
66 {text:'男',value: '0'},{text:'女',value: '1'}
67 ])
68 onLoad((option)=>{
69 if(option.current){
70 current.value = 1
71 }
72 getUser()
73 })
74 function changeNav(e){
75 if (current.value != e.currentIndex) {
76 current.value = e.currentIndex
77 }
78 }
79 function getUser() {
80 api.getUserProfile().then((response) => {
81 user.value = response.data.user
82 if(!user.value.sex){
83 user.value.sex = '0'
84 }
85 })
86 }
87 function editForm(){
88 edit.value = true
89 }
90 function submit(){
91 if(!user.value.email){
92 uni.showToast({
93 icon:'none',
94 title:`请输入邮箱`
95 })
96 return
97 }
98 if(!user.value.nickName){
99 uni.showToast({
100 icon:'none',title:`请输入昵称`
101 })
102 return
103 }
104 if(!user.value.phoneNumber){
105 uni.showToast({
106 icon:'none',title:`请输入手机号码`
107 })
108 return
109 }
110 if(!user.value.sex){
111 uni.showToast({
112 icon:'none',title:`请选择性别`
113 })
114 return
115 }
116 api.updateUserProfile(user.value).then(res=>{
117 uni.showToast({
118 icon:'none',title:`修改成功`
119 })
120 })
121 }
122 function changeSex(e){
123 console.log(e)
124 }
125 function cancel(){
126 edit.value = false
127 getUser()
128 }
129 function validPassword(pwd) {
130 if (!pwd || pwd.length < 8 || pwd.length > 18) {
131 return false
132 }
133 const lowerRegex = /[a-z]+/
134 const upperRegex = /[A-Z]+/
135 const digitRegex = /[0-9]+/
136 const symbolRegex = /[\W_]+/
137 const specific = /.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/].*/
138 return (lowerRegex.test(pwd) && upperRegex.test(pwd) && digitRegex.test(pwd) && symbolRegex.test(pwd) && specific.test(pwd))
139 }
140
141 function handleClick() {
142 if(!form.value.oldPassword){
143 uni.showToast({
144 icon:'none',title:`请输入旧密码`
145 })
146 return
147 }
148 if(!form.value.newPassword){
149 uni.showToast({
150 icon:'none',title:`请输入新密码`
151 })
152 return
153 }
154 if(form.value.newPassword!==form.value.confirmPassword){
155 uni.showToast({
156 icon:'none',title:`新密码需与确认密码一致`
157 })
158 return
159 }
160
161 if (!validPassword(form.value.newPassword)) {
162 uni.showModal({
163 content:`密码需满足8~18位大小写字母加数字加特殊符号组合(!@#$%^&*()_+)`,
164 success:function(res){
165
166 }
167 })
168 return
169 }
170 api.updateUserPwd(form.oldPassword, form.newPassword).then(res=>{
171 uni.showModal({
172 title:"提示",
173 content:`修改成功,重新登录生效`,
174 success: function(res) {
175 if (res.confirm) {
176 //确定
177 }
178 }
179 })
180 })
181 }
182 </script>
183
184 <style scoped lang="scss">
185 .mainbox{background: #fff;padding: 30rpx;margin: 30rpx;}
186 </style>
1 <template>
2 <view class="hasfixedbottom">
3 <view class="mainbox">
4 <uni-forms>
5 <uni-forms-item label="单位名称">
6 <view class="lh35 noborder">{{form.baseName}}</view>
7 </uni-forms-item>
8 <uni-forms-item label="单位类型">
9 <uni-data-select v-if="!type&&edit" v-model="form.type" :localdata="range"></uni-data-select>
10 <view class="lh35 noborder" v-else>
11 <text v-if="form.type==1">企业 </text>
12 <text v-if="form.type==2">国家组织 </text>
13 <text v-if="form.type==3">社会组织 </text>
14 <text v-if="form.type==4">其他 </text>
15 </view>
16 </uni-forms-item>
17 <uni-forms-item label="联系人">
18 <uni-easyinput v-if="edit" v-model="form.contact"></uni-easyinput>
19 <view v-else class="lh35">{{form.contact}}</view>
20 </uni-forms-item>
21 <uni-forms-item label="联系电话">
22 <uni-easyinput v-if="edit" v-model="form.phone"></uni-easyinput>
23 <view v-else class="lh35">{{form.phone}}</view>
24 </uni-forms-item>
25
26 <uni-forms-item label="地址">
27 <uni-data-picker :readonly="!edit" :clear-icon="false" v-if="form.siteRegionId"
28 v-model="form.siteRegionId" :localdata="options" @change="onchangeRegionId">
29 </uni-data-picker>
30 <uni-data-picker :readonly="!edit" :clear-icon="false" v-else-if="form.siteCityId"
31 v-model="form.siteCityId" :localdata="options" @change="onchangeRegionId">
32 </uni-data-picker>
33 <uni-data-picker :readonly="!edit" :clear-icon="false" v-else-if="form.siteProvinceId"
34 v-model="form.siteProvinceId" :localdata="options" @change="onchangeRegionId">
35 </uni-data-picker>
36 </uni-forms-item>
37
38 <uni-forms-item label="详细地址">
39 <uni-easyinput v-if="edit" type="textarea" v-model="form.siteAddress"></uni-easyinput>
40 <view v-else class="lh35">{{form.siteAddress}}</view>
41 </uni-forms-item>
42
43 <uni-forms-item label="机构介绍">
44 <uni-easyinput v-if="edit" type="textarea" v-model="form.introduce"></uni-easyinput>
45 <view v-else class="lh35">{{form.introduce}}</view>
46 </uni-forms-item>
47
48
49 </uni-forms>
50 </view>
51 <view class="height1"></view>
52
53 <view class="fixedBottom" v-if="edit">
54 <button class="btn-red-kx" @click="cancel">取消</button>
55 <button class="btn-red" style="width: 50%;" @click="save">保存</button>
56 </view>
57 <view class="fixedBottom" v-else>
58 <button class="btn-red" @click="edit=true">编辑</button>
59 </view>
60
61 </view>
62 </template>
63
64 <script setup>
65 import * as api from '@/common/api.js'
66 import config from '@/config.js'
67 import _ from 'lodash'
68 import {
69 onMounted,
70 ref
71 } from 'vue'
72 import {
73 onLoad
74 } from '@dcloudio/uni-app'
75 const app = getApp()
76 const form = ref({
77 })
78 const options = ref([])
79 const range = ref([{
80 text: '企业',
81 value: '1'
82 }, {
83 text: '国家组织',
84 value: '2'
85 }, {
86 text: '社会组织',
87 value: '3'
88 }, {
89 text: '其他',
90 value: '4'
91 }])
92 const edit = ref(false)
93 const type = ref()
94 const authenticationStatusa = ref()
95 onLoad(option => {
96 console.log(option)
97 init()
98 })
99
100 function init() {
101 api.getMyOwnMemberInfo().then(res => {
102 form.value = res.data.memberInfo
103 authenticationStatusa.value = res.data.authenticationStatus
104 if (res.data.authenticationStatus != 0 && res.data.authenticationStatus != 3) {
105 type.value = true
106 } else {
107 type.value = false
108 }
109 })
110 getRegionsList()
111 }
112 function cancel(){
113 edit.value = false
114 init()
115 }
116 function save() {
117 api.createMyMember(form.value).then(res=>{
118 uni.showToast({
119 icon:'none',title:`保存成功`
120 })
121 edit.value = false
122 })
123 }
124
125 function getRegionsList() {
126 api.regionsList().then(res => {
127 options.value = res.data;
128 });
129 }
130
131 function onchangeRegionId(e) {
132 form.value.regionId = regionArr.value
133 }
134 </script>
135
136 <style scoped lang="scss">
137 .lh35 {
138 line-height: 35px; min-height: 35px;
139 border: 1px solid #dcdfe6;
140 border-radius: 4px;
141 padding: 0 30rpx;
142
143 &.noborder {
144 border: none;
145 }
146 }
147
148 :deep(.uni-data-tree) {
149 border: 1px solid #dcdfe6;
150 border-radius: 4px;
151
152 .selected-list {
153 justify-content: start;
154 font-size: 28rpx;
155 }
156 }
157
158 .height1 {
159 height: 1rpx
160 }
161
162 .ylImage {
163 width: 300rpx;
164 height: 200rpx;
165 display: block;
166 box-shadow: 0 0 10rpx #ddd;
167 border-radius: 8rpx;
168 }
169
170 .mainbox {
171 margin: 30rpx 25rpx 60rpx;
172 padding: 20rpx;
173 background: #FFFFFF;
174 border-radius: 15rpx;
175
176 :deep(.uni-forms-item__content-title) {
177 color: #4C5359;
178 font-size: 30rpx;
179 font-weight: 300;
180 }
181
182 :deep(.uni-forms-item__extra-text) {
183 color: #000;
184 font-size: 30rpx;
185 }
186 }
187
188 .photobox {
189 position: relative;
190 margin: 30rpx auto;
191
192 .photo {
193 width: 210rpx;
194 height: 280rpx;
195 background-color: #f4f4f4;
196 display: block;
197 margin: auto;
198 }
199 }
200
201 .colorful {
202 background-color: #007BDA;
203 width: 200rpx;
204 margin: auto;
205 height: 200rpx;
206 line-height: 200rpx;
207 font-size: 44rpx;
208 color: #fff;
209 text-align: center;
210 border-radius: 50%;
211 }
212
213 :deep(.uni-forms-item__extra) {
214 width: 60%;
215 }
216
217 .photoBook {
218 position: relative;
219 border-radius: 10rpx;
220 overflow: hidden;
221
222 &::after {
223 content: '';
224 position: absolute;
225 width: 100%;
226 height: 100%;
227 top: 0;
228 left: 0;
229 background: linear-gradient(180deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.7));
230 }
231
232 text {
233 position: absolute;
234 z-index: 1;
235 font-size: 24rpx;
236 color: #fff;
237 bottom: 4rpx;
238 right: 8rpx;
239 }
240 }
241 </style>
...\ No newline at end of file ...\ No newline at end of file
...@@ -92,6 +92,14 @@ ...@@ -92,6 +92,14 @@
92 "enablePullDownRefresh": false 92 "enablePullDownRefresh": false
93 } 93 }
94 94
95 },
96 {
97 "path" : "pages/index/newsDetail",
98 "style" :
99 {
100 "navigationBarTitleText" : "通知详情",
101 "enablePullDownRefresh" : false
102 }
95 } 103 }
96 ], 104 ],
97 "globalStyle": { 105 "globalStyle": {
...@@ -213,19 +221,19 @@ ...@@ -213,19 +221,19 @@
213 }, { 221 }, {
214 "path": "sheng/merge", 222 "path": "sheng/merge",
215 "style": { 223 "style": {
216 "navigationBarTitleText": "审核合并", 224 "navigationBarTitleText": "合并",
217 "enablePullDownRefresh": false 225 "enablePullDownRefresh": false
218 } 226 }
219 }, { 227 }, {
220 "path": "sheng/mergeUp", 228 "path": "sheng/mergeUp",
221 "style": { 229 "style": {
222 "navigationBarTitleText": "合并提交", 230 "navigationBarTitleText": "提交",
223 "enablePullDownRefresh": false 231 "enablePullDownRefresh": false
224 } 232 }
225 }, { 233 }, {
226 "path": "sheng/mergeUpDetail", 234 "path": "sheng/mergeUpDetail",
227 "style": { 235 "style": {
228 "navigationBarTitleText": "合并提交详情", 236 "navigationBarTitleText": "提交详情",
229 "enablePullDownRefresh": false 237 "enablePullDownRefresh": false
230 } 238 }
231 }, { 239 }, {
...@@ -298,6 +306,54 @@ ...@@ -298,6 +306,54 @@
298 "navigationBarTitleText" : "级位变更审批", 306 "navigationBarTitleText" : "级位变更审批",
299 "enablePullDownRefresh" : false 307 "enablePullDownRefresh" : false
300 } 308 }
309 },
310 {
311 "path" : "changeVipChoseList",
312 "style" :
313 {
314 "navigationBarTitleText" : "在线选择",
315 "enablePullDownRefresh" : false
316 }
317 },
318 {
319 "path" : "mergeVip",
320 "style" :
321 {
322 "navigationBarTitleText" : "信息合并",
323 "enablePullDownRefresh" : false
324 }
325 },
326 {
327 "path" : "addMerge",
328 "style" :
329 {
330 "navigationBarTitleText" : "新建信息合并",
331 "enablePullDownRefresh" : false
332 }
333 },
334 {
335 "path" : "mergeVipDetail",
336 "style" :
337 {
338 "navigationBarTitleText" : "合并信息详情",
339 "enablePullDownRefresh" : false
340 }
341 },
342 {
343 "path" : "mergeVipChoseList",
344 "style" :
345 {
346 "navigationBarTitleText" : "在线选择",
347 "enablePullDownRefresh" : false
348 }
349 },
350 {
351 "path" : "mergeVipAudit",
352 "style" :
353 {
354 "navigationBarTitleText" : "合并审核",
355 "enablePullDownRefresh" : false
356 }
301 }] 357 }]
302 }, { 358 }, {
303 "root": "group", 359 "root": "group",
...@@ -330,14 +386,14 @@ ...@@ -330,14 +386,14 @@
330 }, { 386 }, {
331 "path": "apply/merge", 387 "path": "apply/merge",
332 "style": { 388 "style": {
333 "navigationBarTitleText": "审核合并", 389 "navigationBarTitleText": "合并",
334 "enablePullDownRefresh": false 390 "enablePullDownRefresh": false
335 } 391 }
336 392
337 }, { 393 }, {
338 "path": "apply/mergeUp", 394 "path": "apply/mergeUp",
339 "style": { 395 "style": {
340 "navigationBarTitleText": "审核合并提交", 396 "navigationBarTitleText": "提交",
341 "enablePullDownRefresh": false 397 "enablePullDownRefresh": false
342 } 398 }
343 399
...@@ -435,6 +491,14 @@ ...@@ -435,6 +491,14 @@
435 "navigationBarTitleText" : "机构资料", 491 "navigationBarTitleText" : "机构资料",
436 "enablePullDownRefresh" : false 492 "enablePullDownRefresh" : false
437 } 493 }
494 },
495 {
496 "path" : "changeGroupChoseList",
497 "style" :
498 {
499 "navigationBarTitleText" : "在线选择",
500 "enablePullDownRefresh" : false
501 }
438 }] 502 }]
439 },{ 503 },{
440 "root": "level", 504 "root": "level",
...@@ -490,14 +554,14 @@ ...@@ -490,14 +554,14 @@
490 }, { 554 }, {
491 "path": "merge", 555 "path": "merge",
492 "style": { 556 "style": {
493 "navigationBarTitleText": "审核合并", 557 "navigationBarTitleText": "合并",
494 "enablePullDownRefresh": false 558 "enablePullDownRefresh": false
495 } 559 }
496 560
497 }, { 561 }, {
498 "path": "mergeUp", 562 "path": "mergeUp",
499 "style": { 563 "style": {
500 "navigationBarTitleText": "合并提交", 564 "navigationBarTitleText": "提交",
501 "enablePullDownRefresh": false 565 "enablePullDownRefresh": false
502 } 566 }
503 567
...@@ -537,11 +601,63 @@ ...@@ -537,11 +601,63 @@
537 "enablePullDownRefresh": false 601 "enablePullDownRefresh": false
538 } 602 }
539 }] 603 }]
604 },{
605 "root": "myCenter",
606 "pages": [
607 {
608 "path" : "index",
609 "style" :
610 {
611 "navigationBarTitleText" : "个人中心",
612 "enablePullDownRefresh" : false
613 }
614 },
615 {
616 "path" : "teamInfo",
617 "style" :
618 {
619 "navigationBarTitleText" : "团体信息",
620 "enablePullDownRefresh" : false
621 }
622 },
623 {
624 "path" : "auth",
625 "style" :
626 {
627 "navigationBarTitleText" : "会员认证",
628 "enablePullDownRefresh" : false
629 }
630 },
631 {
632 "path" : "safe",
633 "style" :
634 {
635 "navigationBarTitleText" : "账号与安全",
636 "enablePullDownRefresh" : false
637 }
638 },
639 {
640 "path" : "reviewList",
641 "style" :
642 {
643 "navigationBarTitleText" : "审核详情",
644 "enablePullDownRefresh" : false
645 }
646 },
647 {
648 "path" : "perfect",
649 "style" :
650 {
651 "navigationBarTitleText" : "团体会员缴费",
652 "enablePullDownRefresh" : false
653 }
654 }
655 ]
540 }], 656 }],
541 "preloadRule": { 657 "preloadRule": {
542 "pages/index/index": { 658 "pages/index/index": {
543 "network": "all", 659 "network": "all",
544 "packages": ["login","personalVip", "group","level"] 660 "packages": ["login","personalVip", "group","level","myCenter"]
545 } 661 }
546 } 662 }
547 } 663 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -16,16 +16,16 @@ ...@@ -16,16 +16,16 @@
16 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons> 16 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
17 <text>{{item.submitTime}} 创建</text> 17 <text>{{item.submitTime}} 创建</text>
18 </view> 18 </view>
19 19 <view class="text-primary" v-if="item.payCode">{{item.payCode}}</view>
20 <view class="name" @click="goDetail(item)">{{item.name}}</view> 20 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
21 21
22 <view class="flexbox" @click="goDetail(item)"> 22 <view class="flexbox" @click="goDetail(item)">
23 <view> 23 <view>
24 缴费状态 24 缴费状态
25 <view> 25 <view>
26 <text :class="{ 26 <text :class="{
27 'text-success':item.payStatusStr=='已上传凭证', 27 'text-success':item.payStatusStr=='已上传',
28 'text-danger':item.payStatusStr=='未上传凭证', 28 'text-danger':item.payStatusStr=='未上传',
29 'text-warning':item.payStatusStr=='已结算' 29 'text-warning':item.payStatusStr=='已结算'
30 }">{{item.payStatusStr}}</text> 30 }">{{item.payStatusStr}}</text>
31 </view> 31 </view>
......
...@@ -18,7 +18,8 @@ ...@@ -18,7 +18,8 @@
18 <text class="lab">{{ type=='1'?'考级人数':'考段人数' }}</text>{{form.totalNum}} 18 <text class="lab">{{ type=='1'?'考级人数':'考段人数' }}</text>{{form.totalNum}}
19 </view> 19 </view>
20 <view class="ddd"> 20 <view class="ddd">
21 <text class="lab">总金额:</text>¥{{ (form.totalAmount*1).toFixed(2) }} 21 <text class="lab">总金额:</text>
22 <text class="text-danger">¥{{ (form.totalAmount*1).toFixed(2) }}</text>
22 </view> 23 </view>
23 </view> 24 </view>
24 <view class="wBox"> 25 <view class="wBox">
...@@ -28,20 +29,21 @@ ...@@ -28,20 +29,21 @@
28 <view class="userlist"> 29 <view class="userlist">
29 <view class="item" v-for="n in infoList" @click="goDetail(n)" style="background-color: #fffafa;"> 30 <view class="item" v-for="n in infoList" @click="goDetail(n)" style="background-color: #fffafa;">
30 <view class="w100"> 31 <view class="w100">
32 <view class="text-primary">{{n.examCode}}</view>
31 <view class="name">{{n.name}}</view> 33 <view class="name">{{n.name}}</view>
32 <!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> --> 34 <!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> -->
33 <view class="flexbox"> 35 <view class="flexbox">
34 <view> 36 <!-- <view>
35 上报单位 37 上报单位
36 <text>{{n.memberName}}</text> 38 <text>{{n.memberName}}</text>
37 </view> 39 </view> -->
38 <view> 40 <view>
39 {{type=='1'?'考级考生数':'考段考生数'}} 41 {{type=='1'?'考级考生数':'考段考生数'}}
40 <text> 42 <text>
41 {{n.totalNum}} 43 {{n.totalNum}}
42 </text> 44 </text>
43 </view> 45 </view>
44 <view> 46 <view class="w50">
45 金额 47 金额
46 <text class="text-danger">¥{{ (n.totalAmount*1).toFixed(2) }}</text> 48 <text class="text-danger">¥{{ (n.totalAmount*1).toFixed(2) }}</text>
47 </view> 49 </view>
...@@ -117,7 +119,8 @@ ...@@ -117,7 +119,8 @@
117 function goDetail(item) { 119 function goDetail(item) {
118 // examId 120 // examId
119 if(type.value == '1'){ 121 if(type.value == '1'){
120 let path = `/level/applyDetail?examId=${item.examId}` 122 const form = encodeURIComponent(JSON.stringify(item))
123 let path = `/level/applyDetail?examId=${item.examId}&form=${form}`
121 uni.navigateTo({ 124 uni.navigateTo({
122 url: path 125 url: path
123 }); 126 });
......
This diff could not be displayed because it is too large.
...@@ -3,12 +3,12 @@ ...@@ -3,12 +3,12 @@
3 <z-paging ref="paging" v-model="dataList" @query="queryList" emptyViewImg="/static/nodata.png"> 3 <z-paging ref="paging" v-model="dataList" @query="queryList" emptyViewImg="/static/nodata.png">
4 <!-- z-paging默认铺满全屏,此时页面所有view都应放在z-paging标签内,否则会被盖住 --> 4 <!-- z-paging默认铺满全屏,此时页面所有view都应放在z-paging标签内,否则会被盖住 -->
5 <!-- 需要固定在页面顶部的view请通过slot="top"插入,包括自定义的导航栏 --> 5 <!-- 需要固定在页面顶部的view请通过slot="top"插入,包括自定义的导航栏 -->
6 <uni-section title="待办提醒" padding> 6 <uni-section title="通知公告" padding>
7 <view class="msglist"> 7 <view class="msglist">
8 <view class="msgitem" v-for="n in dataList" :key="n.id" @click="readMessage(n)"> 8 <view class="msgitem" v-for="n in dataList" :key="n.id" @click="goDetail(n)">
9 <text class="dot" :class="{'done':n.readFlag=='1'}"></text> 9 <!-- <text class="dot" :class="{'done':n.readFlag=='1'}"></text> -->
10 <view class="tt esp">{{n.name}}</view> 10 <view class="tt esp">{{n.name}}</view>
11 <view class="date">{{ n.createTime }}</view> 11 <view class="date">{{ n.belongTime }}</view>
12 </view> 12 </view>
13 </view> 13 </view>
14 </uni-section> 14 </uni-section>
...@@ -20,65 +20,28 @@ ...@@ -20,65 +20,28 @@
20 import { 20 import {
21 ref 21 ref
22 } from 'vue' 22 } from 'vue'
23 import * as api from '@/common/api.js'; 23 import * as api from '@/common/api.js';
24 import {
25 onLoad
26 } from '@dcloudio/uni-app';
24 const dataList = ref([]) 27 const dataList = ref([])
25 const paging = ref(null) 28 const paging = ref(null)
26 const current = ref(2) 29 const current = ref(2)
27 30
28 function queryList(pageNum, pageSize) { 31 function queryList(pageNum, pageSize) {
29 api.getMessage({ 32 api.notice({
30 pageNum, 33 pageNum,
31 pageSize 34 pageSize
32 }).then(res => { 35 }).then(res => {
33 for (var d of res.rows) {
34 switch (d.type) {
35 case 30001:
36 d.name = '你有一条会员缴费等待审批,点击去处理!'
37 d.path = '/personalVip/audit'
38 break
39 case 30002:
40 d.name = '你有一条级位考试等待审批,点击去处理!'
41 d.path = '/level/approval'
42 break
43 case 30003:
44 d.name = '你有一条段位考试等待审批,点击去处理!'
45 d.path = '/pages/rank/approval'
46 break
47 case 30004:
48 d.name = '你有一条会员调动等待审批,点击去处理!'
49 d.path = '/personalVip/mobillize'
50 break
51 case 30005:
52 d.name = '你有一条团体会员认证等待审批,点击去处理!'
53 d.path = '/group/apply/applyList'
54 break
55 case 30006:
56 d.name = '你有一条段位成绩等待审批,点击去处理!'
57 d.path = '/pages/rank/scoreApproval'
58 break
59 case 40001:
60 d.name = '你有一条级位申请待提交,点击去处理!'
61 d.path = `/level/apply?id=${d.eventId}`
62 break
63 case 40002:
64 d.name = '你有一条段位申请待提交,点击去处理!'
65 d.path = `/pages/rank/apply?id=${d.eventId}`
66 break
67 case 40003:
68 d.name = '你有一条成绩维护的数据待提交,点击去处理!'
69 d.path = `/pages/rank/score/modify?id=${d.eventId}`
70 break
71 case 50001:
72 d.name = '你有一条新的个人会员申请,点击去处理!'
73 d.path = '/personalVip/list'
74 break
75 }
76 }
77 paging.value.complete(res.rows); 36 paging.value.complete(res.rows);
78 }) 37 })
79 38
80 } 39 }
81 40 function goDetail(n){
41 uni.navigateTo({
42 url: `/pages/index/newsDetail?noteId=${n.noteId}`
43 });
44 }
82 function readMessage(item) { 45 function readMessage(item) {
83 uni.navigateTo({ 46 uni.navigateTo({
84 url: item.path 47 url: item.path
......
1 <template>
2 <view class="mainbox">
3 <view class="title">{{form.name}}</view>
4 <view class="infos">
5 <text>{{ form.source }}</text>
6 <text>{{ form.belongTime }}</text>
7 </view>
8 <view class="content">
9
10 <view v-html="form.content"></view>
11
12 <view v-if="attachmentMp4.length>0">
13 <video v-for="(f,index) in attachmentMp4" :key="index" controls :src="config.baseUrl_api + f.url"></video>
14 </view>
15 <view v-if="attachmentFile.length>0" class="mt20">
16 <!-- 附件-->
17 <view class="fwb mt20">附件下载:</view>
18 <view v-for="(f,index) in attachmentFile" :key="index" class="text-primary underLine"
19 @click="downLoad(f.url)">
20 {{ index + 1 }}{{ f.name }}
21 </view>
22
23 </view>
24 <view>
25 <text v-if=" form.author">发布人:{{ form.author }}</text>
26 </view>
27 </view>
28 </view>
29 </template>
30
31 <script setup>
32 import {
33 ref
34 } from 'vue'
35 import * as api from '@/common/api.js';
36 import {
37 onLoad
38 } from '@dcloudio/uni-app';
39 import _ from 'lodash'
40 import config from '@/config.js'
41 const form = ref({})
42 const attachmentFile = ref([])
43 const attachmentMp4 = ref([])
44
45 onLoad((option) => {
46 getData(option.noteId)
47 })
48
49 function getData(noteId) {
50 api.getNewsById(noteId).then(res => {
51 form.value = res.data
52 var html = res.data.content.replace(/<img([\s\w"-=\/\.:;]+)((?:(height="[^"]+")))/ig, '<img$1')
53 .replace(/<img([\s\w"-=\/\.:;]+)((?:(width="[^"]+")))/ig, '<img$1')
54 .replace(/<img([\s\w"-=\/\.:;]+)((?:(style="[^"]+")))/ig, '<img$1')
55 .replace(/<img([\s\w"-=\/\.:;]+)((?:(alt="[^"]+")))/ig, '<img$1')
56 .replace(/<img([\s\w"-=\/\.:;]+)/ig, '<img style="width: 100%;" $1');
57
58
59 if (form.value.attacthJson) {
60 const attachment = JSON.parse(form.value.attacthJson)
61 attachmentFile.value = _.filter(attachment, (a) => a.url.toLowerCase().indexOf('.mp4') === -1) || []
62 attachmentMp4.value = _.filter(attachment, (a) => a.url.toLowerCase().indexOf('.mp4') !== -1) || []
63 }
64 })
65 }
66 function downLoad(url){
67 console.log(url)
68 var str = config.baseUrl_api + url
69 if (url.indexOf('png') > -1 ||url.indexOf('jpg') > -1 ||url.indexOf('jpeg') > -1) {
70 uni.previewImage({
71 urls: [str],
72 success: function(res) {
73 console.log('success', res)
74 },
75 fail: function(res) {
76 console.log('fail', res)
77 },
78 complete: function(res) {
79 console.log('complete', res)
80 }
81 })
82 } else {
83 goWebView(str)
84 }
85 }
86 function goWebView(url) {
87 url = url.replace("http://", "https://")
88 uni.showLoading({
89 title: '下载中'
90 });
91 uni.downloadFile({
92 url: url,
93 success: function(res) {
94 console.log('111')
95 uni.hideLoading();
96 var filePath = res.tempFilePath;
97 uni.showLoading({
98 title: '正在打开'
99 });
100 uni.openDocument({
101 filePath: filePath,
102 showMenu: true,
103 success: function(res) {
104 console.log('222')
105 uni.hideLoading();
106 },
107 fail: function(err) {
108 console.log(err.errMsg)
109 uni.hideLoading();
110 let msg
111 if(err.errMsg.indexOf('not supported')>-1){
112 msg = '不支持该文件类型'
113 } else {
114 msg = err.errMsg
115 }
116 uni.showToast({
117 title: msg,
118 icon: 'none',
119 duration: 2000
120 });
121 }
122 });
123 },
124 fail: function(error) {
125 uni.hideLoading();
126 uni.showToast({
127 title: `下载失败`,
128 icon: 'none',
129 duration: 2000
130 });
131 }
132 });
133 }
134 </script>
135
136 <style scoped lang="scss">
137 .mainbox {
138 box-sizing: border-box;
139 padding: 50rpx 25rpx 160rpx;
140 background: #fff;
141 min-height: 100vh;
142 }
143 .title {
144 font-size: 36rpx;
145 font-weight: 500;
146 color: #29343C;
147 margin-bottom: 34rpx;
148 }
149
150 .infos {
151 border-bottom: 1px solid #DCDCDC;
152 padding-bottom: 40rpx;
153 overflow: hidden;
154 }
155
156 .infos>text {
157 margin-right: 18rpx;
158 color: #7B7F83;
159 font-size: 22rpx;
160 }
161 .content {
162 line-height: 1.6;
163 color: #4C5359;
164 font-size: 30rpx;
165 padding-top: 40rpx;
166 width: 100%;
167 word-wrap: break-word !important;
168 white-space: normal !important;
169 }
170
171 .content rich-text {
172 word-wrap: break-word !important;
173 white-space: normal !important;
174 }
175
176 .content span,
177 .content p {
178 word-wrap: break-word !important;
179 white-space: normal !important;
180 }
181 .content rich-text img{max-width: 100%;}
182
183 image {
184 max-width: 100%;
185 }
186
187 audio {
188 width: 100%;
189 }
190
191 video {
192 width: 100%;
193 }
194 </style>
...\ No newline at end of file ...\ No newline at end of file
...@@ -17,7 +17,8 @@ ...@@ -17,7 +17,8 @@
17 </view> 17 </view>
18 18
19 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> 19 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
20 <view class="name mt0" >{{item.name}}</view> 20 <view class="text-primary">{{item.examCode}}</view>
21 <view class="name mt0" >{{item.name}}</view>
21 <view class="pp esp">申请单位:{{item.memberName}}</view> 22 <view class="pp esp">申请单位:{{item.memberName}}</view>
22 <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view> 23 <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
23 <view class="flexbox" > 24 <view class="flexbox" >
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
20 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons> 20 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
21 提交时间:{{item.submitTime}} 21 提交时间:{{item.submitTime}}
22 </view> 22 </view>
23 <view class="text-primary">{{item.examCode}}</view>
23 <view class="name mt10"><text class="dot"></text>{{item.name}}</view> 24 <view class="name mt10"><text class="dot"></text>{{item.name}}</view>
24 <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}} 25 <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}
25 </view> 26 </view>
......
...@@ -235,7 +235,13 @@ onLoad((option) => { ...@@ -235,7 +235,13 @@ onLoad((option) => {
235 getList() 235 getList()
236 } 236 }
237 }) 237 })
238 onShow(() => {}) 238 onShow((option) => {
239 console.log(option)
240 if(option){
241 queryParams.value.rangeId = option
242 getList()
243 }
244 })
239 245
240 function getList() { 246 function getList() {
241 uni.showLoading({ 247 uni.showLoading({
...@@ -266,7 +272,10 @@ function handleDelete(row) { ...@@ -266,7 +272,10 @@ function handleDelete(row) {
266 api.infoMod([row.id]).then(Response => { 272 api.infoMod([row.id]).then(Response => {
267 uni.showToast({ 273 uni.showToast({
268 title: '操作成功' 274 title: '操作成功'
269 }) 275 })
276 if(list.value.length==1){
277 queryParams.value.rangeId = ''
278 }
270 getList() 279 getList()
271 }) 280 })
272 } 281 }
...@@ -275,20 +284,24 @@ function handleDelete(row) { ...@@ -275,20 +284,24 @@ function handleDelete(row) {
275 } 284 }
276 285
277 function chooseOnline() { 286 function chooseOnline() {
278 uni.showLoading({ 287 // uni.showLoading({
279 title: '加载中', 288 // title: '加载中',
280 icon: 'none' 289 // icon: 'none'
281 }) 290 // })
282 var obj = { 291 // var obj = {
283 paymentRangeId: queryParams.value.rangeId || '-1', 292 // paymentRangeId: queryParams.value.rangeId || '-1',
284 multiDeptFlag: 1, 293 // multiDeptFlag: 1,
285 perType: 1 294 // perType: 1
286 } 295 // }
287 api.selectPageList(obj).then(res => { 296 // api.selectPageList(obj).then(res => {
288 studentList.value = res.rows 297 // studentList.value = res.rows
289 uni.hideLoading() 298 // uni.hideLoading()
290 choseStudent.value.open() 299 // choseStudent.value.open()
291 }) 300 // })
301 uni.navigateTo({
302 url:`/personalVip/changeVipChoseList?rangeId=${queryParams.value.rangeId || '-1'}`
303 })
304
292 } 305 }
293 306
294 function checkThis(n) { 307 function checkThis(n) {
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
12 </uni-forms-item> 12 </uni-forms-item>
13 <uni-forms-item label="证件类型" required name="idcType"> 13 <uni-forms-item label="证件类型" required name="idcType">
14 <uni-data-select v-model="baseFormData.idcType" style="width: 300rpx;" 14 <uni-data-select v-model="baseFormData.idcType" style="width: 300rpx;"
15 @change="changeIdcType" :clearable="false" :disabled="current === 0" 15 @change="changeIdcType" :clear="false" :disabled="current === 0"
16 :localdata="idcTypeList"></uni-data-select> 16 :localdata="idcTypeList"></uni-data-select>
17 </uni-forms-item> 17 </uni-forms-item>
18 <uni-forms-item label="证件照" required v-show="current === 1"> 18 <uni-forms-item label="证件照" required v-show="current === 1">
...@@ -143,7 +143,7 @@ ...@@ -143,7 +143,7 @@
143 const photoArr = ref({}) 143 const photoArr = ref({})
144 const regionsList = ref([]) 144 const regionsList = ref([])
145 const cardObj = ref({}) 145 const cardObj = ref({})
146 const disabledName = ref(false) 146 const disabledName = ref(true)
147 const baseFormData = ref({ 147 const baseFormData = ref({
148 photo: '', 148 photo: '',
149 sex: '', 149 sex: '',
...@@ -329,7 +329,14 @@ ...@@ -329,7 +329,14 @@
329 } 329 }
330 330
331 331
332 function getExtractInfo(obj) { 332 function getExtractInfo(obj) {
333 photoArr.value = {}
334 // baseFormData.value = {
335 // photo: '',
336 // idcType: baseFormData.value.idcType,
337 // idcCode: baseFormData.value.idcCode,
338 // perType: '1'
339 // };
333 //如果老会员 340 //如果老会员
334 uni.showLoading({ 341 uni.showLoading({
335 title: '加载中' 342 title: '加载中'
...@@ -345,7 +352,6 @@ ...@@ -345,7 +352,6 @@
345 baseFormData.value.phone = res.data.phone 352 baseFormData.value.phone = res.data.phone
346 baseFormData.value.cityId = res.data.cityId 353 baseFormData.value.cityId = res.data.cityId
347 baseFormData.value.address = res.data.address 354 baseFormData.value.address = res.data.address
348 photoArr.value = {}
349 if (res.data.photo) { 355 if (res.data.photo) {
350 console.log(res.data.photo) 356 console.log(res.data.photo)
351 if (res.data.photo.indexOf('http') == -1) { 357 if (res.data.photo.indexOf('http') == -1) {
...@@ -367,17 +373,17 @@ ...@@ -367,17 +373,17 @@
367 } 373 }
368 374
369 } 375 }
370 baseFormData.value.name = res.data.name 376 // baseFormData.value.name = res.data.name
371 baseFormData.value.perId = res.data.perId 377 baseFormData.value.perId = res.data.perId
372 console.log(res.data.photo, baseFormData.value.photo) 378 console.log(res.data.photo, baseFormData.value.photo)
373 uni.hideLoading() 379 uni.hideLoading()
374 } else { 380 } else {
375 uni.hideLoading() 381 uni.hideLoading()
376 // 新会员 382 // 新会员
377 if (res.data.sex) { 383 // if (res.data.sex) {
378 baseFormData.value.sex = res.data.sex 384 // baseFormData.value.sex = res.data.sex
379 baseFormData.value.birth = res.data.birth 385 // baseFormData.value.birth = res.data.birth
380 } 386 // }
381 if (baseFormData.value.idcType != 3 && current.value == 1) { 387 if (baseFormData.value.idcType != 3 && current.value == 1) {
382 disabledName.value = true 388 disabledName.value = true
383 } else { 389 } else {
...@@ -399,29 +405,6 @@ ...@@ -399,29 +405,6 @@
399 icon: 'none' 405 icon: 'none'
400 }) 406 })
401 } else { 407 } else {
402 // let tmpStr = "";
403 // if (baseFormData.value.idcCode.length == 15) {
404 // tmpStr = baseFormData.value.idcCode.substring(6, 12);
405 // tmpStr = "19" + tmpStr;
406 // tmpStr = tmpStr.substring(0, 4) + "-" + tmpStr.substring(4, 6) + "-" + tmpStr.substring(6)
407
408 // } else {
409 // tmpStr = baseFormData.value.idcCode.substring(6, 14);
410 // tmpStr = tmpStr.substring(0, 4) + "-" + tmpStr.substring(4, 6) + "-" + tmpStr.substring(6)
411
412 // }
413
414 // baseFormData.value.birth = tmpStr
415
416 // const sse = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/
417 // if (sse.test(baseFormData.value.idcCode)) {
418 // const genderCode = baseFormData.value.idcCode.charAt(16)
419 // if (parseInt(genderCode) % 2 == 0) {
420 // baseFormData.value.sex = '1'
421 // } else {
422 // baseFormData.value.sex = '0'
423 // }
424 // }
425 getExtractInfo({ 408 getExtractInfo({
426 idcCode: baseFormData.value.idcCode, 409 idcCode: baseFormData.value.idcCode,
427 idcType: baseFormData.value.idcType, 410 idcType: baseFormData.value.idcType,
...@@ -429,19 +412,19 @@ ...@@ -429,19 +412,19 @@
429 }) 412 })
430 } 413 }
431 } 414 }
432 if (baseFormData.value.idcType == 1 || baseFormData.value.idcType == 3 || baseFormData.value.idcType == 4) { 415 // if (baseFormData.value.idcType == 1 || baseFormData.value.idcType == 3) {
433 //转换为大写并判断位数12 416 // //转换为大写并判断位数12
434 baseFormData.value.idcCode = baseFormData.value.idcCode.toUpperCase() 417 // baseFormData.value.idcCode = baseFormData.value.idcCode.toUpperCase()
435 // var regex = /^[a-zA-Z]/ 418 // // var regex = /^[a-zA-Z]/
436 if (baseFormData.value.idcCode.length > 12) { 419 // if (baseFormData.value.idcCode.length > 12) {
437 uni.showToast({ 420 // uni.showToast({
438 icon: 'none', 421 // icon: 'none',
439 title: '请输入正确的证件号', 422 // title: '请输入正确的证件号',
440 duration: 2000 423 // duration: 2000
441 }) 424 // })
442 return 425 // return
443 } 426 // }
444 } 427 // }
445 } 428 }
446 429
447 430
...@@ -502,28 +485,22 @@ ...@@ -502,28 +485,22 @@
502 }) 485 })
503 return 486 return
504 } 487 }
505 if (baseFormData.value.idcType == 3) {
506 //转换为大写并判断位数12
507 baseFormData.value.idcCode = baseFormData.value.idcCode.toUpperCase()
508 // var regex = /^[a-zA-Z]/
509 if (baseFormData.value.idcCode.length > 12) {
510 uni.showToast({
511 icon: 'none',
512 title: '请输入正确的证件号',
513 duration: 2000
514 })
515 return
516 }
517 }
518 //信息确认弹出 488 //信息确认弹出
519 uni.showModal({ 489 uni.showModal({
520 content: '请确认信息正确', 490 content: '请确认信息正确',
521 success: function(res) { 491 success: function(res) {
522 if (res.confirm) { 492 if (res.confirm) {
493 if(baseFormData.value.idcType=='4'){
494 baseFormData.value.idcType='0'
495 }
523 api.addPersonToMyDept(baseFormData.value).then(res => { 496 api.addPersonToMyDept(baseFormData.value).then(res => {
524 if (res.data == 0) { 497 if (res.data == 0) {
525 let msg = '该成员,实名认证未通过,注册失败!' 498 let msg = '该成员,实名认证未通过,注册失败!'
526 resultDialog.value = true 499 uni.showModal({
500 content: msg,
501 title: '提示',
502 success: function(res) {}
503 })
527 return 504 return
528 } 505 }
529 if (res.data * 1 < 0) { 506 if (res.data * 1 < 0) {
...@@ -535,14 +512,23 @@ ...@@ -535,14 +512,23 @@
535 }) 512 })
536 return 513 return
537 } 514 }
538 let msg = '保存成功' 515 // let msg = '保存成功'
539 uni.showToast({ 516 uni.showModal({
540 title: msg, 517 content: '保存成功',
541 icon: 'none' 518 title: '提示',
519 confirmText:'继续添加',
520 cancelColor:'返回首页',
521 success: function(res) {
522 uni.redirectTo({
523 url: `/personalVip/addVip?tab=${current.value}&idcType=${baseFormData.value.idcType}`
524 });
525 },
526 fail:function(){
527 uni.reLaunch({
528 url:`/pages/index/index`
529 })
530 }
542 }) 531 })
543 uni.redirectTo({
544 url: `/personalVip/addVip?tab=${current.value}&idcType=${baseFormData.value.idcType}`
545 });
546 532
547 }) 533 })
548 } 534 }
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <view class="text-center" v-if="userType=='2'"> 3 <view class="text-center whitebg" v-if="userType=='2'">
4 <view class="cardNav" v-if="userType=='2'"> 4 <view class="cardNav" v-if="userType=='2'">
5 <view class="active">会员审核</view> 5 <view class="active">审核</view>
6 <view @click="goMerge">审核合并</view> 6 <view @click="goMerge">合并</view>
7 <view @click="goMergeUp">合并提交</view> 7 <view @click="goMergeUp">提交</view>
8 </view> 8 </view>
9 </view> 9 </view>
10 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" 10 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
29 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons> 29 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
30 {{item.content.commitTime}} 提交 30 {{item.content.commitTime}} 提交
31 </view> 31 </view>
32 <view class="text-primary" v-if="item.content?.wfCode" @click="goDetail(item)">{{item.content?.wfCode}}</view>
32 <view class="name" @click="goDetail(item)">{{item.content.name}}</view> 33 <view class="name" @click="goDetail(item)">{{item.content.name}}</view>
33 <view class="flexbox" @click="goDetail(item)"> 34 <view class="flexbox" @click="goDetail(item)">
34 <view> 35 <view>
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
20 </view> 20 </view>
21 21
22 <view class="name mt0" @click="goDetail(item)"> 22 <view class="name mt0" @click="goDetail(item)">
23 {{item.code}}-{{item.shenMemName}} 23 <text class="text-primary">{{item.code}}</text>-{{item.shenMemName}}
24 </view> 24 </view>
25 <view class="flexbox" @click="goDetail(item)"> 25 <view class="flexbox" @click="goDetail(item)">
26 <view> 26 <view>
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
21 </view> 21 </view>
22 22
23 <view class="name mt0" @click="goDetail(item)"> 23 <view class="name mt0" @click="goDetail(item)">
24 {{item.code}}-{{item.shenMemName}} 24 <text class="text-primary">{{item.code}}</text>-{{item.shenMemName}}
25 </view> 25 </view>
26 <view class="flexbox" @click="goDetail(item)"> 26 <view class="flexbox" @click="goDetail(item)">
27 <view> 27 <view>
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
20 </view> 20 </view>
21 21
22 <view class="name mt0" @click="goDetail(item)"> 22 <view class="name mt0" @click="goDetail(item)">
23 {{item.code}}-{{item.shenMemName}} 23 <text class="text-primary">{{item.code}}</text>-{{item.shenMemName}}
24 </view> 24 </view>
25 <view class="flexbox" @click="goDetail(item)"> 25 <view class="flexbox" @click="goDetail(item)">
26 <view> 26 <view>
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
21 </view> 21 </view>
22 22
23 <view class="name mt0" @click="goDetail(item)"> 23 <view class="name mt0" @click="goDetail(item)">
24 {{item.code}}-{{item.shenMemName}} 24 <text class="text-primary">{{item.code}}</text>-{{item.shenMemName}}
25 </view> 25 </view>
26 <view class="flexbox" @click="goDetail(item)"> 26 <view class="flexbox" @click="goDetail(item)">
27 <view> 27 <view>
......
1 <template>
2 <view class="hasfixedbottom">
3
4 <view class="searchbar">
5 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
6 v-model="queryParams.name" placeholder="搜索姓名" @blur="search()" @clear="search()">
7 </uni-easyinput>
8 </view>
9 <view class="userlist">
10 <view class="item" v-for=" (n,index) in studentList" :key="index">
11 <view @click="checkThis(n)">
12 <image class="icon" v-if="n.checked"
13 :src="config.baseUrl_api+'/fs/static/member/dx_dwn.png'" />
14 <image class="icon" v-else :src="config.baseUrl_api+'/fs/static/member/dx.png'" />
15 </view>
16 <view>
17 <view class="name">{{n.name}} <text>{{n.perCode}}</text></view>
18 <view class="date">{{ cardType[n.idcType]?.text }}{{n.idcCode}}</view>
19 </view>
20 </view>
21 <view class="nodata" v-if="studentList.length==0">
22 <image mode="aspectFit" src="/static/nodata.png"></image>
23 <text>无可变更会员</text>
24 </view>
25 </view>
26 <uni-load-more @clickLoadMore="clickLoadMore" :contentText="contentText" :status="status"></uni-load-more>
27
28 <view class="fixedBottom" v-if="studentList.length!=0">
29 <button class="btn-red" @click="handleImport">批量添加</button>
30 </view>
31
32 </view>
33 </template>
34
35 <script setup>
36 import {
37 ref
38 } from 'vue'
39 import {
40 onLoad,
41 onShow
42 } from '@dcloudio/uni-app'
43 import * as api from '@/common/api.js'
44 import _ from 'lodash'
45 import config from '/config.js'
46 const queryParams = ref({
47 paymentRangeId:-1,
48 multiDeptFlag: 1,
49 perType: 1,
50 pageNum:1,
51 pageSize:10
52 })
53 const paging = ref(null)
54 const total = ref(0)
55 const status = ref('no-more')
56 const list = ref([])
57 const popup = ref(null)
58 const choseStudent = ref(null)
59 const studentList = ref([])
60 const type = ref('')
61 const form = ref({})
62 const contentText = ref({contentdown: "点击加载更多",contentrefresh: "正在加载...",contentnomore: "没有更多数据了"})
63 const cardType = ref([{
64 text: '身份证',
65 value: '0'
66 },
67 {
68 text: '港澳台通行证 ',
69 value: '1'
70 },
71 {
72 text: '中国护照',
73 value: '2'
74 },
75 {
76 text: '外国护照',
77 value: '3'
78 },
79 {
80 text: '其它',
81 value: '4'
82 },
83 {
84 text: '户口本',
85 value: '5'
86 }
87 ])
88 onLoad((option) => {
89 if (option.rangeId) {
90 queryParams.value.paymentRangeId = option.rangeId
91 }
92 getList()
93 })
94 onShow(() => {})
95 function clickLoadMore(){
96 getList()
97 }
98 function search(){
99 queryParams.value.pageNum = 1
100 api.selectPageList(queryParams.value).then(res => {
101 studentList.value = res.rows
102 total.value = res.total
103 if(total.value>studentList.value.length){
104 status.value = 'more'
105 } else {
106 status.value = 'no-more'
107 }
108 uni.hideLoading()
109 })
110 }
111 function getList() {
112 if(total.value>0&&total.value>studentList.value.length){
113 uni.showLoading({
114 title: '加载中',
115 icon: 'none'
116 })
117 status.value = 'loading'
118 queryParams.value.pageNum += 1
119 api.selectPageList(queryParams.value).then(res => {
120 studentList.value = _.concat(studentList.value,res.rows)
121 total.value = res.total
122 if(total.value>studentList.value.length){
123 status.value = 'more'
124 } else {
125 status.value = 'no-more'
126 }
127 uni.hideLoading()
128 })
129
130 }else if(total.value==0){
131 search()
132 }
133 }
134
135 function checkThis(n) {
136 if (n.checked) {
137 n.checked = false
138 } else {
139 n.checked = true
140 }
141 }
142
143 function handleImport() {
144 var arr = []
145 for (var n of studentList.value) {
146 if (n.checked) {
147 arr.push(n.perId)
148 }
149 }
150 api.addInfoModeToRange({
151 perIds: arr,
152 rangeIdStr: queryParams.value.paymentRangeId || '-1'
153 }).then(res => {
154 var pages = getCurrentPages()
155 var prevPage = pages[pages.length - 2]
156 prevPage.onShow(res.data)
157 uni.navigateBack()
158 })
159 }
160
161
162 </script>
163 <style scoped lang="scss">
164 .flexbox {
165 padding: 30rpx 30rpx 0
166 }
167
168 .danger-button {
169 display: flex;
170 flex-direction: column;
171 align-items: center;
172 justify-content: center;
173 }
174 .userlist{
175 padding: 0 25rpx;
176 }
177 .searchbar {
178 display: flex;
179 align-items: center;
180 padding: 25rpx;
181 box-sizing: border-box;
182
183 .invertedbtn-red {
184 margin-left: 15rpx;
185 font-size: 30rpx;
186 padding: 16rpx 20rpx;
187 box-sizing: border-box;
188 border-radius: 50rpx;
189 background-color: #fff;
190 }
191
192 :deep(.uni-easyinput .uni-easyinput__content) {
193 border-radius: 35rpx;
194 border: none;
195 height: 70rpx;
196 }
197
198 :deep(.uni-easyinput__content-input) {
199 font-size: 26rpx;
200 }
201 }
202
203 .popBody {
204 background: #fff;
205 padding: 30rpx;
206 }
207
208 .text-center .btn-red-kx {
209 border-radius: 50px;
210 font-size: 28rpx;
211 }
212 :deep(.file-picker__progress) {
213 opacity: 0;background-color: transparent;
214 }
215 </style>
...\ No newline at end of file ...\ No newline at end of file
...@@ -15,20 +15,30 @@ ...@@ -15,20 +15,30 @@
15 <text v-if="item.payTime">{{item.payTime}} 缴费</text> 15 <text v-if="item.payTime">{{item.payTime}} 缴费</text>
16 <text v-else>{{item.payNoticeSendTime}} 下发</text> 16 <text v-else>{{item.payNoticeSendTime}} 下发</text>
17 </view> 17 </view>
18 <view class="name" @click="goDetail(item)">{{item.finalDocName}}</view> 18 <view class="text-primary" @click="goDetail(item)">{{item.wfCode}}</view>
19 <view class="name mt0" @click="goDetail(item)">{{item.finalDocName}}</view>
19 <view class="flexbox" @click="goDetail(item)"> 20 <view class="flexbox" @click="goDetail(item)">
20 <view> 21 <view>
21 人数合计 22 缴费状态
22 <view>{{item.personCount}}</view> 23 <view>
23 </view> 24 <text v-if="item.settleFlag == 0" class="text-warning">已结算</text>
24 <view> 25 <text v-if="item.settleFlag == 1 && item.payFlag == 0" class="text-success">已上传</text>
25 年限合计 26 <text v-if="item.settleFlag == 1 && item.payFlag == 1" class="text-danger">未上传</text>
26 <view>{{item.yearCount}}</view> 27 </view>
27 </view>
28 <view>
29 费用合计
30 <view>¥{{item.allPrice}}</view>
31 </view> 28 </view>
29 <view>
30 人数合计
31 <view>{{item.personCount}}</view>
32 </view>
33 <view>
34 年限合计
35 <view>{{item.yearCount}}</view>
36 </view>
37 <view>
38 费用合计
39 <view>¥{{item.allPrice}}</view>
40 </view>
41
32 </view> 42 </view>
33 <view class="func"> 43 <view class="func">
34 <button 44 <button
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
21 <view class="name">{{n.personName}}<text>({{n.memberInfoName}})</text></view> 21 <view class="name">{{n.personName}}<text>({{n.memberInfoName}})</text></view>
22 <view class="date">原有效期至{{n.originValidityDate?.slice(0,10)||'--'}}</view> 22 <view class="date">原有效期至{{n.originValidityDate?.slice(0,10)||'--'}}</view>
23 </view> 23 </view>
24 <view class="nian"> 24 <view class="nian" style="bottom:28rpx">
25 ¥{{n.allPrice}} 25 ¥{{n.allPrice}}
26 </view> 26 </view>
27 </view> 27 </view>
......
...@@ -47,11 +47,7 @@ ...@@ -47,11 +47,7 @@
47 <uni-icons type="compose" color="#fff" size="20"></uni-icons> 47 <uni-icons type="compose" color="#fff" size="20"></uni-icons>
48 <text class="slot-button-text">编辑</text> 48 <text class="slot-button-text">编辑</text>
49 </view> --> 49 </view> -->
50 <view class="danger-button" v-if="n.certStage==0" @click="handleDelete(n)"> 50 <view class="danger-button" @click="handleDelete(n)">
51 <uni-icons type="trash" color="#fff" size="20"></uni-icons>
52 <text class="slot-button-text">删除</text>
53 </view>
54 <view class="danger-button" v-else @click="handleDelete(n)" style="opacity: 0.5;">
55 <uni-icons type="trash" color="#fff" size="20"></uni-icons> 51 <uni-icons type="trash" color="#fff" size="20"></uni-icons>
56 <text class="slot-button-text">删除</text> 52 <text class="slot-button-text">删除</text>
57 </view> 53 </view>
...@@ -141,10 +137,7 @@ ...@@ -141,10 +137,7 @@
141 }) 137 })
142 } 138 }
143 139
144 function handleDelete(item) { 140 function handleDelete(item) {
145 if(item.certStage!=0){
146 return
147 }
148 uni.showModal({ 141 uni.showModal({
149 content: `是否确认删除${item.name}`, 142 content: `是否确认删除${item.name}`,
150 success: function(res) { 143 success: function(res) {
......
1 <template>
2 <view>
3 <view class="searchbar">
4 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
5 v-model="queryParams.code" placeholder="搜索合并单号" @blur="getList" @clear="getList">
6 </uni-easyinput>
7 <view class="invertedbtn-red" @click="goAdd">+ 新建合并</view>
8 </view>
9
10 <view class="appList">
11 <view class="appItem" v-for="(item,index) in list" :key="index">
12 <view class="status" @click="goDetail(item)">
13 <view>
14 <text v-if="item.status == 0" class="text-warning">待提交</text>
15 <text v-if="item.status == 1" class="text-primary">审核中</text>
16 <text v-if="item.status == 2" class="text-success">审核通过</text>
17 <text v-if="item.status == 3" class="text-danger">审核拒绝</text>
18 <text v-if="item.status == 4" class="text-warning">已撤回</text>
19 </view>
20 </view>
21
22 <view class="name mt0" @click="goDetail(item)">
23 <text class="text-primary">{{item.code}}</text>-{{item.shenMemName}}
24 </view>
25 <view class="flexbox" @click="goDetail(item)">
26 <view>
27 合并人数
28 <view>
29 <text class="text-danger">{{item.count}}</text>
30 </view>
31
32 </view>
33
34 <view class="w50">
35 提交时间
36 <view>{{item.commitTime||'--'}}</view>
37 </view>
38 </view>
39 <view class="func" v-if="(item.status==0||item.status==3||item.status==4)">
40 <button v-if="item.status==0||item.status==4" @click="handleUpdate(item)">编辑</button>
41 <button v-if="item.status==0||item.status==4" @click="commitFN(item)">提交审核</button>
42 <button @click="handleDelete(item)">删除</button>
43 </view>
44
45 </view>
46 </view>
47
48
49
50 <view class="nodata" v-if="list.length==0">
51 <image mode="aspectFit" src="/static/nodata.png"></image>
52 <text>暂无数据</text>
53 </view>
54 </view>
55 </template>
56
57 <script setup>
58 import * as api from '@/common/api.js'
59 import config from '@/config.js'
60 import {
61 ref
62 } from 'vue'
63 import {
64 onLoad,
65 onShow
66 } from '@dcloudio/uni-app'
67 const app = getApp();
68 const queryParams = ref({
69 code:''
70 })
71 const list = ref([])
72 const total = ref(0)
73 onShow(()=>{
74 getList()
75 })
76 function goAdd(){
77 let path = `/personalVip/addMerge`
78 uni.navigateTo({
79 url: path
80 });
81 }
82 function getList(){
83 uni.showLoading({
84 title:'加载中'
85 })
86 api.infoMergeRangeList(queryParams.value).then(res=>{
87 list.value = res.rows
88 total.value = res.total
89 uni.hideLoading()
90 })
91 }
92 function goDetail(item){
93 let path = `/personalVip/mergeVipDetail?rangeId=${item.id}`
94 uni.navigateTo({
95 url: path
96 });
97 }
98 function handleUpdate(item){
99 // 编辑
100 let path = `/personalVip/addMerge?rangeId=${item.id}`
101 uni.navigateTo({
102 url: path
103 });
104 }
105 function commitFN(row){
106 uni.showModal({
107 title: '提示',
108 content: `确定提交吗`,
109 success: function(res) {
110 if (res.confirm) {
111 api.commitMergeVip(row.id).then(Response=>{
112 uni.showToast({
113 icon:"none",
114 title:'提交成功!'
115 })
116 getList()
117 })
118 }
119 }
120 })
121 }
122 function handleDelete(row){
123 uni.showModal({
124 title: '提示',
125 content: `确定删除吗`,
126 success: function(res) {
127 if (res.confirm) {
128 api.delPersonalMerge([row.id]).then(Response=>{
129 uni.showToast({
130 icon:"none",
131 title:'删除成功!'
132 })
133 getList()
134 })
135 }
136 }
137 })
138 }
139
140 </script>
141
142 <style lang='scss' scoped>
143 .searchbar {
144 display: flex;
145 align-items: center;
146 padding: 25rpx;
147 box-sizing: border-box;
148
149 :deep(.uni-easyinput .uni-easyinput__content) {
150 border-radius: 35rpx;
151 border: none;
152 height: 70rpx;
153 }
154
155 :deep(.uni-easyinput__content-input) {
156 font-size: 26rpx;
157 }
158
159 .invertedbtn-red {
160 border-radius: 50px;
161 background-color: #fff;
162
163 font-size: 30rpx;
164 padding: 10rpx 20rpx;
165 }
166 }
167
168 </style>
1 <template>
2 <view>
3 <view class="searchbar">
4 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
5 v-model="queryParams.code" placeholder="搜索单号" @blur="getList" @clear="getList">
6 </uni-easyinput>
7 </view>
8 <view class="vipData">
9 <view>合并人数合计: <text>{{count}}</text></view>
10 </view>
11 <view class="appList">
12 <view class="appItem" v-for="(item,index) in list" :key="index">
13 <view class="status" @click="goDetail(item)">
14 <view>
15 <text v-if="item.status == 0" class="text-warning">待提交</text>
16 <text v-if="item.status == 1" class="text-primary">审核中</text>
17 <text v-if="item.status == 2" class="text-success">审核通过</text>
18 <text v-if="item.status == 3" class="text-danger">审核拒绝</text>
19 <text v-if="item.status == 4" class="text-warning">已撤回</text>
20 </view>
21 </view>
22
23 <view class="name mt0" @click="goDetail(item)">
24 <text class="text-primary">{{item.code}}</text>-{{item.shenMemName}}
25 </view>
26 <view class="flexbox" @click="goDetail(item)">
27 <view>
28 合并人数
29 <view>
30 <text class="text-danger">{{item.count}}</text>
31 </view>
32 </view>
33 <view class="w50">
34 提交时间
35 <view>{{item.commitTime?.slice(0,10)||'--'}}</view>
36 </view>
37 </view>
38 <view class="func" v-if="item.status==1">
39 <button @click="audit(item.id,0)">拒绝</button>
40 <button @click="audit(item.id,1)">同意</button>
41 </view>
42 <!-- <view class="func" v-if="item.status==2">
43 <button @click="handleDelete(item)">撤回</button>
44 </view> -->
45 </view>
46 </view>
47 <view class="nodata" v-if="list.length==0">
48 <image mode="aspectFit" src="/static/nodata.png"></image>
49 <text>暂无数据</text>
50 </view>
51 </view>
52 </template>
53
54 <script setup>
55 import * as api from '@/common/api.js'
56 import config from '@/config.js'
57 import {
58 ref
59 } from 'vue'
60 import {
61 onLoad,
62 onShow
63 } from '@dcloudio/uni-app'
64 const app = getApp();
65 const queryParams = ref({
66 code:'',
67 ztxList: '0'
68 })
69 const list = ref([])
70 const count = ref(0)
71 const total = ref(0)
72 onShow(()=>{
73 getList()
74 })
75 function getList(){
76 uni.showLoading({
77 title:'加载中'
78 })
79 api.infoMergeRangeList(queryParams.value).then(res=>{
80 list.value = res.rows
81 list.value.forEach(item => {
82 count.value += item.count
83 })
84 total.value = res.total
85 uni.hideLoading()
86 })
87 }
88 function goDetail(item){
89 let path = `/personalVip/mergeVipDetail?rangeId=${item.id}`
90 uni.navigateTo({
91 url: path
92 });
93 }
94 function handleDelete(row){
95 uni.showModal({
96 title: '提示',
97 content: `确定撤回吗`,
98 success: function(res) {
99 if (res.confirm) {
100 api.personChangeWithDraw([row.id]).then(Response=>{
101 uni.showToast({
102 icon:"none",
103 title:'撤回成功!'
104 })
105 getList()
106 })
107 }
108 }
109 })
110 }
111 function audit(id, flag) {
112 if (flag == 0) {
113 // 拒绝
114 // 弹出框填写理由
115 uni.showModal({
116 title: '请输入拒绝理由',
117 editable: true,
118 success: function(res) {
119 if (res.confirm) {
120 if (!res.content) {
121 uni.showToast({
122 title: '请输入拒绝理由',
123 icon: 'none'
124 })
125 } else {
126 doApproval(id, flag, res.content)
127 }
128 }
129 }
130 })
131 } else if (flag == 1) {
132 // 二次确认
133 uni.showModal({
134 title: '提示',
135 content: `确定审批通过吗`,
136 success: function(res) {
137 if (res.confirm) {
138 doApproval(id, flag)
139 }
140 }
141 })
142 }
143 }
144
145 function doApproval(id, flag, reason) {
146 var obj = {
147 flag: flag,
148 reason: reason || '',
149 ids: [id]
150 }
151 console.log(obj)
152 api.mergerVipAudit(obj).then((res) => {
153 uni.showToast({
154 title: '操作成功',
155 icon: 'none'
156 })
157 getList()
158 })
159 }
160
161 </script>
162
163 <style lang='scss' scoped>
164 .searchbar {
165 display: flex;
166 align-items: center;
167 padding: 25rpx;
168 box-sizing: border-box;
169
170 :deep(.uni-easyinput .uni-easyinput__content) {
171 border-radius: 35rpx;
172 border: none;
173 height: 70rpx;
174 }
175
176 :deep(.uni-easyinput__content-input) {
177 font-size: 26rpx;
178 }
179
180 .invertedbtn-red {
181 border-radius: 50px;
182 background-color: #fff;
183
184 font-size: 30rpx;
185 padding: 10rpx 20rpx;
186 }
187 }
188
189 </style>
1 <template>
2 <view class="hasfixedbottom">
3
4 <view class="searchbar">
5 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
6 v-model="queryParams.name" placeholder="搜索姓名" @blur="search()" @clear="search()">
7 </uni-easyinput>
8 </view>
9 <view class="userlist">
10 <view class="item" v-for=" (n,index) in studentList" :key="index">
11 <view @click="checkThis(n)">
12 <image class="icon" v-if="n.checked"
13 :src="config.baseUrl_api+'/fs/static/member/dx_dwn.png'" />
14 <image class="icon" v-else :src="config.baseUrl_api+'/fs/static/member/dx.png'" />
15 </view>
16 <view>
17 <view class="name">{{n.name}} <text>{{n.perCode}}</text></view>
18 <view class="date">{{ cardType[n.idcType]?.text }}{{n.idcCode}}</view>
19 </view>
20 </view>
21 <view class="nodata" v-if="studentList.length==0">
22 <image mode="aspectFit" src="/static/nodata.png"></image>
23 <text>无可变更会员</text>
24 </view>
25 </view>
26 <uni-load-more @clickLoadMore="clickLoadMore" :contentText="contentText" :status="status"></uni-load-more>
27
28 <view class="fixedBottom" v-if="studentList.length!=0">
29 <button class="btn-red" @click="handleImport">批量添加</button>
30 </view>
31
32 </view>
33 </template>
34
35 <script setup>
36 import {
37 ref
38 } from 'vue'
39 import {
40 onLoad,
41 onShow
42 } from '@dcloudio/uni-app'
43 import * as api from '@/common/api.js'
44 import _ from 'lodash'
45 import config from '/config.js'
46 const queryParams = ref({
47 paymentRangeId:-1,
48 multiDeptFlag: 1,
49 perType: 1,
50 pageNum:1,
51 pageSize:10
52 })
53 const paging = ref(null)
54 const total = ref(0)
55 const status = ref('no-more')
56 const list = ref([])
57 const popup = ref(null)
58 const choseStudent = ref(null)
59 const studentList = ref([])
60 const type = ref('')
61 const form = ref({})
62 const contentText = ref({contentdown: "点击加载更多",contentrefresh: "正在加载...",contentnomore: "没有更多数据了"})
63 const cardType = ref([{
64 text: '身份证',
65 value: '0'
66 },
67 {
68 text: '港澳台通行证 ',
69 value: '1'
70 },
71 {
72 text: '中国护照',
73 value: '2'
74 },
75 {
76 text: '外国护照',
77 value: '3'
78 },
79 {
80 text: '其它',
81 value: '4'
82 },
83 {
84 text: '户口本',
85 value: '5'
86 }
87 ])
88 onLoad((option) => {
89 if (option.rangeId) {
90 queryParams.value.paymentRangeId = option.rangeId
91 }
92 console.log(option.rangeId)
93 getList()
94 })
95 onShow(() => {})
96 function clickLoadMore(){
97 getList()
98 }
99 function search(){
100 queryParams.value.pageNum = 1
101 api.selectPageList(queryParams.value).then(res => {
102 studentList.value = res.rows
103 total.value = res.total
104 if(total.value>studentList.value.length){
105 status.value = 'more'
106 } else {
107 status.value = 'no-more'
108 }
109 uni.hideLoading()
110 })
111 }
112 function getList() {
113 if(total.value>0&&total.value>studentList.value.length){
114 uni.showLoading({
115 title: '加载中',
116 icon: 'none'
117 })
118 status.value = 'loading'
119 queryParams.value.pageNum += 1
120 api.selectPageList(queryParams.value).then(res => {
121 studentList.value = _.concat(studentList.value,res.rows)
122 total.value = res.total
123 if(total.value>studentList.value.length){
124 status.value = 'more'
125 } else {
126 status.value = 'no-more'
127 }
128 uni.hideLoading()
129 })
130
131 }else if(total.value==0){
132 search()
133 }
134 }
135
136 function checkThis(n) {
137 if (n.checked) {
138 n.checked = false
139 } else {
140 n.checked = true
141 }
142 }
143
144 function handleImport() {
145 var arr = []
146 for (var n of studentList.value) {
147 if (n.checked) {
148 arr.push(n.perId)
149 }
150 }
151 api.addMergeToRange({
152 perIds: arr,
153 rangeIdStr: queryParams.value.paymentRangeId || '-1'
154 }).then(res => {
155 var pages = getCurrentPages()
156 var prevPage = pages[pages.length - 2]
157 prevPage.onShow(res.data)
158 uni.navigateBack()
159 })
160 }
161
162
163 </script>
164 <style scoped lang="scss">
165 .flexbox {
166 padding: 30rpx 30rpx 0
167 }
168
169 .danger-button {
170 display: flex;
171 flex-direction: column;
172 align-items: center;
173 justify-content: center;
174 }
175 .userlist{
176 padding: 0 25rpx;
177 }
178 .searchbar {
179 display: flex;
180 align-items: center;
181 padding: 25rpx;
182 box-sizing: border-box;
183
184 .invertedbtn-red {
185 margin-left: 15rpx;
186 font-size: 30rpx;
187 padding: 16rpx 20rpx;
188 box-sizing: border-box;
189 border-radius: 50rpx;
190 background-color: #fff;
191 }
192
193 :deep(.uni-easyinput .uni-easyinput__content) {
194 border-radius: 35rpx;
195 border: none;
196 height: 70rpx;
197 }
198
199 :deep(.uni-easyinput__content-input) {
200 font-size: 26rpx;
201 }
202 }
203
204 .popBody {
205 background: #fff;
206 padding: 30rpx;
207 }
208
209 .text-center .btn-red-kx {
210 border-radius: 50px;
211 font-size: 28rpx;
212 }
213 :deep(.file-picker__progress) {
214 opacity: 0;background-color: transparent;
215 }
216 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view>
3 <uni-collapse>
4 <uni-collapse-item :title="n.personInfo?.name" open v-for="n in list" :key="n.id">
5 <view class="collapseBody">
6 <!-- n.oldIdcCode -->
7 <view>
8 <label>姓名:</label>
9 {{n.personInfo?.name}}
10
11 <text class="text-danger">{{ n.oldPersonInfo?.name }}</text>
12 </view>
13 <view>
14 <label>会员编号:</label>
15 {{n.personInfo?.perCode}}
16
17 <text class="text-danger">{{ n.oldPersonInfo?.perCode }}</text>
18 </view>
19 <view style="display: flex;">
20 <label>有效期:</label>
21 <view>
22 <view v-if="n.personInfo?.valiDateTime">
23 <text v-if="n.personInfo?.beginTime">{{n.personInfo?.beginTime?.slice(0,10)}}</text>
24 <text v-if="n.personInfo?.beginTime"></text>
25 <text>{{n.personInfo?.valiDateTime?.slice(0,10)}}</text>
26 </view>
27 <view class="text-danger" v-if="n.oldPersonInfo?.valiDateTime">
28 <text v-if="n.oldPersonInfo?.beginTime">{{ n.oldPersonInfo?.beginTime?.slice(0,10)}}</text>
29 <text v-if="n.oldPersonInfo?.beginTime"></text>
30 <text v-if="n.oldPersonInfo?.valiDateTime">{{n.oldPersonInfo?.valiDateTime?.slice(0,10)}}</text>
31 </view>
32 <view class="text-danger" v-else>--</view>
33 </view>
34 </view>
35 <view style="display: flex;">
36 <label>证件号:</label>
37 <view>
38 {{ n.originIdcCode }}
39 <view class="text-danger">{{ n.oldIdcCode }}</view>
40 </view>
41 </view>
42 <view>
43 <label>级位详情:</label>
44 <view v-if="n.personInfo?.jiList.length>0" class="mt10">
45 <uni-table border stripe>
46 <uni-tr>
47 <uni-th width="50">序号</uni-th>
48 <uni-th >级位</uni-th>
49 <uni-th>证书编号</uni-th>
50 </uni-tr>
51 <uni-tr v-for="(tr,index) in n.personInfo.jiList" :key="index">
52 <uni-td>{{index+1}}</uni-td>
53 <uni-td>{{szToHz(tr.level)}}</uni-td>
54 <uni-td>{{tr.certCode}}</uni-td>
55 </uni-tr>
56 </uni-table>
57 </view>
58 <text v-else class="text-primary">无级位记录</text>
59 <view v-if="n.oldPersonInfo?.jiList.length>0" class="mt10">
60 <uni-table border stripe>
61 <uni-tr>
62 <uni-th width="50"><text class="text-danger">序号</text></uni-th>
63 <uni-th><text class="text-danger">级位</text></uni-th>
64 <uni-th><text class="text-danger">证书编号</text></uni-th>
65 </uni-tr>
66 <uni-tr v-for="(tr,index) in n.oldPersonInfo.jiList" :key="index">
67 <uni-td>{{index+1}}</uni-td>
68 <uni-td>{{szToHz(tr.level)}}</uni-td>
69 <uni-td>{{tr.certCode}}</uni-td>
70 </uni-tr>
71 </uni-table>
72 </view>
73 <text v-else class="text-danger">无级位记录</text>
74
75 </view>
76 <view>
77 <label>段位详情:</label>
78 <view v-if="n.personInfo?.duanList.length>0" class="mt10">
79 <uni-table border stripe>
80 <uni-tr>
81 <uni-th width="50">序号</uni-th>
82 <uni-th>段位</uni-th>
83 <uni-th>证书编号</uni-th>
84 </uni-tr>
85 <uni-tr v-for="(tr,index) in n.personInfo.duanList" :key="index">
86 <uni-td>{{index+1}}</uni-td>
87 <uni-td>{{szToHz(tr.level)}}</uni-td>
88 <uni-td>{{tr.certCode}}</uni-td>
89 </uni-tr>
90 </uni-table>
91 </view>
92 <text v-else class="text-primary">无段位记录</text>
93 <view v-if="n.oldPersonInfo?.duanList.length>0" class="mt10">
94 <uni-table border stripe>
95 <uni-tr>
96 <uni-th width="50"><text class="text-danger">序号</text></uni-th>
97 <uni-th><text class="text-danger">段位</text></uni-th>
98 <uni-th><text class="text-danger">证书编号</text></uni-th>
99 </uni-tr>
100 <uni-tr v-for="(tr,index) in n.oldPersonInfo.duanList" :key="index">
101 <uni-td>{{index+1}}</uni-td>
102 <uni-td>{{szToHz(tr.level)}}</uni-td>
103 <uni-td>{{tr.certCode}}</uni-td>
104 </uni-tr>
105 </uni-table>
106 </view>
107 <text v-else class="text-danger">无段位记录</text>
108 </view>
109 <view v-if="n.fileUrl">
110 <label>证明材料:</label>
111 <text class="text-primary" @click="showImg(n)">
112 下载
113 </text>
114 </view>
115 </view>
116
117 </uni-collapse-item>
118 </uni-collapse>
119
120 </view>
121 </template>
122
123 <script setup>
124 import {
125 ref
126 } from 'vue'
127 import {
128 onLoad
129 } from '@dcloudio/uni-app'
130 import * as api from '@/common/api.js'
131 import {
132 szToHz
133 } from '@/common/utils.js'
134 import config from '@/config.js'
135 const queryParams = ref({})
136 const total = ref(0)
137 const list = ref([])
138 const popup = ref(null)
139 const type = ref('')
140 const form = ref({})
141 onLoad((option) => {
142 if (option.rangeId) {
143 queryParams.value.rangeId = option.rangeId
144 getList()
145 }
146 })
147
148 function getList() {
149 uni.showLoading({
150 title: '加载中'
151 })
152 api.infoMergeList(queryParams.value).then(res => {
153 list.value = res.rows
154 list.value.forEach(item => {
155 item.fileUrl = JSON.parse(item.fileUrl)
156 })
157 total.value = res.total
158 uni.hideLoading()
159 })
160 }
161
162 function handleChange(a, b) {
163 type.value = b
164 form.value = a
165 console.log(form.value.newName)
166 popup.value.open()
167 }
168
169 function handleDelete(row) {
170 uni.showModal({
171 content: `确认删除会员${row.newName}`,
172 success: function(res) {
173 if (res.confirm) {
174 api.infoMod([row.id]).then(res => {
175 uni.showToast({
176 title: '操作成功'
177 })
178 getList()
179 })
180 }
181 }
182 })
183 }
184
185 function showImg(n) {
186 var str = config.baseUrl_api + n.fileUrl[0]?.url
187 if (n.fileUrl[0]?.url.indexOf('png') > -1 || n.fileUrl[0]?.url.indexOf('jpg') > -1 || n.fileUrl[0]?.url.indexOf(
188 'jpeg') > -1) {
189 uni.previewImage({
190 urls: [str],
191 success: function(res) {
192 console.log('success', res)
193 },
194 fail: function(res) {
195 console.log('fail', res)
196 },
197 complete: function(res) {
198 console.log('complete', res)
199 }
200 })
201 } else {
202 goWebView(str)
203 }
204 }
205
206 function goWebView(url) {
207 url = url.replace("http://", "https://")
208 uni.showLoading({
209 title: '下载中'
210 });
211 uni.downloadFile({
212 url: url,
213 success: function(res) {
214 uni.hideLoading();
215 var filePath = res.tempFilePath;
216 uni.showLoading({
217 title: '正在打开'
218 });
219 uni.openDocument({
220 filePath: filePath,
221 showMenu: true,
222 success: function(res) {
223 uni.hideLoading();
224 },
225 fail: function(err) {
226 uni.hideLoading();
227 uni.showToast({
228 title: err,
229 icon: 'none',
230 duration: 2000
231 });
232 }
233 });
234 },
235 fail: function(error) {
236 uni.hideLoading();
237 uni.showToast({
238 title: `下载失败`,
239 icon: 'none',
240 duration: 2000
241 });
242 }
243 });
244 }
245 </script>
246 <style scoped lang="scss">
247 .flexbox {
248 padding: 30rpx 30rpx 0
249 }
250
251 .danger-button {
252 display: flex;
253 flex-direction: column;
254 align-items: center;
255 justify-content: center;
256 }
257
258 .collapseBody {
259 background: #fff;
260 padding:0 30rpx;
261 box-sizing: border-box;
262 font-size: 28rpx;
263
264 view {
265 margin: 0 0 20rpx;
266
267 label {
268 width: 5em;
269 color: #999;
270 display: inline-block;
271 text-align: right;
272 }
273 }
274 }
275
276 .popBody {
277 background: #fff;
278 padding: 30rpx;
279 }
280 </style>
...\ No newline at end of file ...\ No newline at end of file
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
22 </view> 22 </view>
23 23
24 <view v-if="deptType == 2 || deptType == 3"> 24 <view v-if="deptType == 2 || deptType == 3">
25 <text v-if="item.shenRes == 0">审核中</text> 25 <text v-if="item.shenRes == 0" class="text-primary">审核中</text>
26 <text v-if="item.shenRes == 1" class="text-success">审核通过</text> 26 <text v-if="item.shenRes == 1" class="text-success">审核通过</text>
27 <text v-if="item.shenRes == 2" class="text-danger">审核拒绝</text> 27 <text v-if="item.shenRes == 2" class="text-danger">审核拒绝</text>
28 <text v-if="item.shenRes == 3" class="text-warning">撤销申请</text> 28 <text v-if="item.shenRes == 3" class="text-warning">撤销申请</text>
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
30 30
31 <view v-if="deptType == 6"> 31 <view v-if="deptType == 6">
32 <text v-if="item.status == 0">待提交</text> 32 <text v-if="item.status == 0">待提交</text>
33 <text v-if="item.status == 1">审核中</text> 33 <text v-if="item.status == 1" class="text-primary">审核中</text>
34 <text v-if="item.status == 2" class="text-warning">审核拒绝</text> 34 <text v-if="item.status == 2" class="text-warning">审核拒绝</text>
35 <text v-if="item.status == 3" class="text-success">审核通过</text> 35 <text v-if="item.status == 3" class="text-success">审核通过</text>
36 <text v-if="item.status == 4" class="text-danger">已撤回</text> 36 <text v-if="item.status == 4" class="text-danger">已撤回</text>
...@@ -40,10 +40,12 @@ ...@@ -40,10 +40,12 @@
40 <view class="name mt0" @click="goDetail(item)"> 40 <view class="name mt0" @click="goDetail(item)">
41 {{item.name}} 41 {{item.name}}
42 </view> 42 </view>
43 <view class="pp" v-if="deptType == 1 || deptType == 2 || deptType == 3"> 43 <view class="flexbox" @click="goDetail(item)" v-if="deptType == 1 || deptType == 2 || deptType == 3">
44 申请调入单位: {{item.targetDeptName}} 44 <view class="w50">
45 </view> 45 申请调入单位
46 <view class="flexbox" @click="goDetail(item)"> 46 <view><text>{{item.targetDeptName}}</text></view>
47 </view>
48 <!--
47 <view> 49 <view>
48 调动类型 50 调动类型
49 <view v-if="item.type == 1"> 51 <view v-if="item.type == 1">
...@@ -52,13 +54,17 @@ ...@@ -52,13 +54,17 @@
52 <view v-else> 54 <view v-else>
53 <text class="text-primary">省内调动</text> 55 <text class="text-primary">省内调动</text>
54 </view> 56 </view>
55 </view> 57 </view> -->
56 58
57 <view class="w50"> 59 <view class="w50">
58 会员合计 60 会员合计
59 <view>{{item.personCount}}</view> 61 <view>{{item.personCount}}</view>
60 </view> 62 </view>
61 </view> 63 </view>
64 <view v-else class="pp">
65 会员合计:
66 <text class="text-primary">{{item.personCount}}</text>
67 </view>
62 <view class="func" 68 <view class="func"
63 v-if="(deptType == 1&&item.ztxRes == 0)||((deptType == 2 || deptType == 3)&&item.shenRes == 0)"> 69 v-if="(deptType == 1&&item.ztxRes == 0)||((deptType == 2 || deptType == 3)&&item.shenRes == 0)">
64 <button @click="audit(item.id,'2')">拒绝</button> 70 <button @click="audit(item.id,'2')">拒绝</button>
......
...@@ -23,7 +23,8 @@ ...@@ -23,7 +23,8 @@
23 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons> 23 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
24 {{item.commitTime}} 提交 24 {{item.commitTime}} 提交
25 </view> 25 </view>
26 <view class="name" @click="goDetail(item)">{{item.paymentName}}</view> 26 <view class="text-primary" v-if="item.wfCode">{{item.wfCode}}</view>
27 <view class="date" @click="goDetail(item)">{{item.paymentName}}</view>
27 <view class="flexbox" @click="goDetail(item)"> 28 <view class="flexbox" @click="goDetail(item)">
28 <view> 29 <view>
29 人数合计 30 人数合计
......
1 <template> 1 <template>
2 <view class="text-center"> 2 <view class="text-center whitebg">
3 <view class="cardNav"> 3 <view class="cardNav">
4 <view @click="goBack">会员审核</view> 4 <view @click="goBack">审核</view>
5 <view class="active">审核合并</view> 5 <view class="active">合并</view>
6 <view @click="goMergeUp">合并提交</view> 6 <view @click="goMergeUp">提交</view>
7 </view> 7 </view>
8 </view> 8 </view>
9 <view class="hasfixedbottom"> 9 <view class="hasfixedbottom">
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
35 </view> 35 </view>
36 36
37 <view class="date" v-if="item.content.commitTime">提交日期:{{item.content.commitTime}}</view> 37 <view class="date" v-if="item.content.commitTime">提交日期:{{item.content.commitTime}}</view>
38 <view class="text-primary" v-if="item.content?.wfCode" @click="goDetail(item)">{{item.content?.wfCode}}</view>
38 <view class="name" @click="goDetail(item)">{{item.content.name}}</view> 39 <view class="name" @click="goDetail(item)">{{item.content.name}}</view>
39 <view class="flexbox" @click="goDetail(item)"> 40 <view class="flexbox" @click="goDetail(item)">
40 <view> 41 <view>
...@@ -209,7 +210,7 @@ ...@@ -209,7 +210,7 @@
209 210
210 } 211 }
211 function goBack() { 212 function goBack() {
212 let path = `/personalVip/sheng/merge` 213 let path = `/personalVip/audit`
213 uni.redirectTo({ 214 uni.redirectTo({
214 url: path 215 url: path
215 }); 216 });
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <view class="text-center"> 3 <view class="text-center whitebg">
4 <view class="cardNav"> 4 <view class="cardNav">
5 <view @click="goAudit">会员审核</view> 5 <view @click="goAudit">审核</view>
6 <view @click="goMerge">审核合并</view> 6 <view @click="goMerge">合并</view>
7 <view class="active">合并提交</view> 7 <view class="active">提交</view>
8 </view> 8 </view>
9 </view> 9 </view>
10 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" 10 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
...@@ -28,8 +28,9 @@ ...@@ -28,8 +28,9 @@
28 {{ item.auditStatus=='100'?'待提交':statusArr[item.status] }} 28 {{ item.auditStatus=='100'?'待提交':statusArr[item.status] }}
29 </view> 29 </view>
30 </view> 30 </view>
31 <view class="date" v-if="item.content.commitTime">{{item.content.commitTime}}</view> 31 <view class="date" v-if="item.content?.commitTime">{{item.content.commitTime}}</view>
32 <view class="name" @click="goDetail(item)">{{item.content.name}}</view> 32 <view class="text-primary" v-if="item.content?.wfCode" @click="goDetail(item)">{{item.content?.wfCode}}</view>
33 <view class="name" style="width: 100%;" @click="goDetail(item)">{{item.content?.name}}</view>
33 <view class="flexbox" @click="goDetail(item)"> 34 <view class="flexbox" @click="goDetail(item)">
34 <view> 35 <view>
35 人数合计 36 人数合计
......
1 ## 1.0.6(2023-04-12)
2 - 修复 微信小程序点击时会改变背景颜色的 bug
1 ## 1.0.5(2023-02-03) 3 ## 1.0.5(2023-02-03)
2 - 修复 禁用时会显示清空按钮 4 - 修复 禁用时会显示清空按钮
3 ## 1.0.4(2023-02-02) 5 ## 1.0.4(2023-02-02)
......
1 { 1 {
2 "id": "uni-data-select", 2 "id": "uni-data-select",
3 "displayName": "uni-data-select 下拉框选择器", 3 "displayName": "uni-data-select 下拉框选择器",
4 "version": "1.0.5", 4 "version": "1.0.6",
5 "description": "通过数据驱动的下拉框选择器", 5 "description": "通过数据驱动的下拉框选择器",
6 "keywords": [ 6 "keywords": [
7 "uni-ui", 7 "uni-ui",
8 "select", 8 "select",
9 "uni-data-select", 9 "uni-data-select",
10 "下拉框", 10 "下拉框",
11 "下拉选" 11 "下拉选"
12 ], 12 ],
13 "repository": "https://github.com/dcloudio/uni-ui", 13 "repository": "https://github.com/dcloudio/uni-ui",
14 "engines": { 14 "engines": {
15 "HBuilderX": "^3.1.1" 15 "HBuilderX": "^3.1.1"
16 }, 16 },
17 "directories": { 17 "directories": {
18 "example": "../../temps/example_temps" 18 "example": "../../temps/example_temps"
19 }, 19 },
20 "dcloudext": { 20 "dcloudext": {
21 "sale": { 21 "sale": {
22 "regular": { 22 "regular": {
23 "price": "0.00" 23 "price": "0.00"
24 }, 24 },
25 "sourcecode": { 25 "sourcecode": {
26 "price": "0.00" 26 "price": "0.00"
27 } 27 }
28 }, 28 },
29 "contact": { 29 "contact": {
30 "qq": "" 30 "qq": ""
31 }, 31 },
32 "declaration": { 32 "declaration": {
33 "ads": "无", 33 "ads": "无",
34 "data": "无", 34 "data": "无",
35 "permissions": "无" 35 "permissions": "无"
36 }, 36 },
37 "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", 37 "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
38 "type": "component-vue" 38 "type": "component-vue"
39 }, 39 },
40 "uni_modules": { 40 "uni_modules": {
41 "dependencies": ["uni-load-more"], 41 "dependencies": ["uni-load-more"],
42 "encrypt": [], 42 "encrypt": [],
43 "platforms": { 43 "platforms": {
44 "cloud": { 44 "cloud": {
45 "tcb": "y", 45 "tcb": "y",
46 "aliyun": "y" 46 "aliyun": "y"
47 }, 47 },
48 "client": { 48 "client": {
49 "App": { 49 "App": {
50 "app-vue": "u", 50 "app-vue": "u",
51 "app-nvue": "n" 51 "app-nvue": "n"
52 }, 52 },
53 "H5-mobile": { 53 "H5-mobile": {
54 "Safari": "y", 54 "Safari": "y",
55 "Android Browser": "y", 55 "Android Browser": "y",
56 "微信浏览器(Android)": "y", 56 "微信浏览器(Android)": "y",
57 "QQ浏览器(Android)": "y" 57 "QQ浏览器(Android)": "y"
58 }, 58 },
59 "H5-pc": { 59 "H5-pc": {
60 "Chrome": "y", 60 "Chrome": "y",
61 "IE": "y", 61 "IE": "y",
62 "Edge": "y", 62 "Edge": "y",
63 "Firefox": "y", 63 "Firefox": "y",
64 "Safari": "y" 64 "Safari": "y"
65 }, 65 },
66 "小程序": { 66 "小程序": {
67 "微信": "y", 67 "微信": "y",
68 "阿里": "u", 68 "阿里": "u",
69 "百度": "u", 69 "百度": "u",
70 "字节跳动": "u", 70 "字节跳动": "u",
71 "QQ": "u", 71 "QQ": "u",
72 "京东": "u" 72 "京东": "u"
73 }, 73 },
74 "快应用": { 74 "快应用": {
75 "华为": "u", 75 "华为": "u",
76 "联盟": "u" 76 "联盟": "u"
77 }, 77 },
78 "Vue": { 78 "Vue": {
79 "vue2": "y", 79 "vue2": "y",
80 "vue3": "y" 80 "vue3": "y"
81 } 81 }
82 } 82 }
83 } 83 }
84 } 84 }
85 } 85 }
......
1 { 1 {
2 "uni-load-more.contentdown": "Pull up to show more", 2 "uni-load-more.contentdown": "Pull up to show more",
3 "uni-load-more.contentrefresh": "loading...", 3 "uni-load-more.contentrefresh": "loading...",
4 "uni-load-more.contentnomore": "No more data" 4 "uni-load-more.contentnomore": "No more data"
......
1 import en from './en.json' 1 import en from './en.json'
2 import zhHans from './zh-Hans.json' 2 import zhHans from './zh-Hans.json'
3 import zhHant from './zh-Hant.json' 3 import zhHant from './zh-Hant.json'
4 export default { 4 export default {
5 en, 5 en,
6 'zh-Hans': zhHans, 6 'zh-Hans': zhHans,
7 'zh-Hant': zhHant 7 'zh-Hant': zhHant
8 } 8 }
......
1 { 1 {
2 "uni-load-more.contentdown": "上拉显示更多", 2 "uni-load-more.contentdown": "上拉显示更多",
3 "uni-load-more.contentrefresh": "正在加载...", 3 "uni-load-more.contentrefresh": "正在加载...",
4 "uni-load-more.contentnomore": "没有更多数据了" 4 "uni-load-more.contentnomore": "没有更多数据了"
......
1 { 1 {
2 "uni-load-more.contentdown": "上拉顯示更多", 2 "uni-load-more.contentdown": "上拉顯示更多",
3 "uni-load-more.contentrefresh": "正在加載...", 3 "uni-load-more.contentrefresh": "正在加載...",
4 "uni-load-more.contentnomore": "沒有更多數據了" 4 "uni-load-more.contentnomore": "沒有更多數據了"
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!