feat(personal): 实现个人中心页面及绑定/解绑学员功能
- 新增个人中心页面,包含会员卡展示、用户信息、功能入口 - 实现绑定学员弹框,支持输入姓名和证件号进行绑定 - 添加绑定状态判断,已绑定时按钮切换为解绑 - 实现解绑功能,调用unbindUser接口 - 新增退出登录按钮 - 添加bindUser和unbindUser API接口
Showing
46 changed files
with
3315 additions
and
2772 deletions
| 1 | <script> | 1 | <script> |
| 2 | import config from '@/config.js'; | ||
| 2 | import { | 3 | import { |
| 3 | getInfo | 4 | getInfo, |
| 5 | getWebInfo | ||
| 4 | } from '@/common/login.js'; | 6 | } from '@/common/login.js'; |
| 5 | import * as api from '@/common/api.js'; | ||
| 6 | import config from '@/config.js'; | ||
| 7 | 7 | ||
| 8 | let loginUrl = ['login/login', 'login/register', 'personal/addVip_per'] | ||
| 9 | let firstload = false | ||
| 10 | export default { | 8 | export default { |
| 11 | globalData: { | 9 | globalData: { |
| 12 | isLogin: false, | 10 | isLogin: false, |
| 13 | baseUrl_api: '', | 11 | baseUrl_api: '', |
| 14 | user: null, | 12 | user: null |
| 15 | userType: '', | ||
| 16 | userInfo: null, | ||
| 17 | deptType: '', | ||
| 18 | genFlag: '', | ||
| 19 | authenticationStatus: '', | ||
| 20 | memberInfo: null, | ||
| 21 | isExam: false | ||
| 22 | }, | 13 | }, |
| 23 | onLaunch: function(options) { | 14 | onLaunch: function(options) { |
| 24 | console.log('App Launch', options); | 15 | console.log('App Launch', options); |
| 25 | |||
| 26 | this.globalData.baseUrl_api = config.baseUrl_api; | 16 | this.globalData.baseUrl_api = config.baseUrl_api; |
| 27 | if (loginUrl.indexOf(options.path) == -1) { | 17 | |
| 28 | let userName = uni.getStorageSync('userName') | 18 | let userName = uni.getStorageSync('userName') |
| 29 | if (userName) { | 19 | if (userName) { |
| 30 | getInfo().then(() => { | 20 | getInfo().then(() => { |
| 31 | this.globalData.isLogin = true; | 21 | this.globalData.isLogin = true |
| 32 | firstload = true | 22 | uni.reLaunch({ |
| 33 | let firstLoadCallback = getApp().firstLoadCallback; | 23 | url: '/pages/index/home' |
| 34 | if (firstLoadCallback) { | 24 | }) |
| 35 | firstLoadCallback(); | 25 | }).catch(() => { |
| 36 | } | 26 | uni.reLaunch({ |
| 37 | }).catch(() => { | 27 | url: '/login/login' |
| 38 | firstload = true | ||
| 39 | uni.redirectTo({ | ||
| 40 | url: '/login/login' | ||
| 41 | }) | ||
| 42 | }) | 28 | }) |
| 43 | } else { | 29 | }) |
| 44 | this.globalData.isLogin = false; | 30 | return |
| 45 | firstload = true | 31 | } |
| 46 | uni.redirectTo({ | 32 | |
| 33 | let webUserName = uni.getStorageSync('webUserName') | ||
| 34 | if (webUserName) { | ||
| 35 | getWebInfo().then(() => { | ||
| 36 | uni.reLaunch({ | ||
| 37 | url: '/personal/home' | ||
| 38 | }) | ||
| 39 | }).catch(() => { | ||
| 40 | uni.reLaunch({ | ||
| 47 | url: '/login/login' | 41 | url: '/login/login' |
| 48 | }) | 42 | }) |
| 49 | } | 43 | }) |
| 44 | return | ||
| 50 | } | 45 | } |
| 46 | |||
| 47 | this.globalData.isLogin = false | ||
| 48 | uni.reLaunch({ | ||
| 49 | url: '/login/login' | ||
| 50 | }) | ||
| 51 | }, | 51 | }, |
| 52 | onShow: function() { | 52 | onShow: function() { |
| 53 | console.log('App Show', firstload, this.globalData.isLogin); | 53 | console.log('App Show'); |
| 54 | // if (firstload && !this.globalData.isLogin) { | ||
| 55 | // uni.redirectTo({ | ||
| 56 | // url: '/login/login' | ||
| 57 | // }) | ||
| 58 | // } | ||
| 59 | }, | 54 | }, |
| 60 | onHide: function() { | 55 | onHide: function() { |
| 61 | console.log('App Hide'); | 56 | console.log('App Hide'); | ... | ... |
| 1 | import request from './request.js' | 1 | import request from './request.js' |
| 2 | import config from '@/config.js' | 2 | import config from '@/config.js' |
| 3 | import * as loginServer from '@/common/login.js'; | ||
| 4 | 3 | ||
| 5 | // 激活 | 4 | // 激活 |
| 6 | export function active(data) { | 5 | export function active(data) { |
| ... | @@ -1415,10 +1414,34 @@ export function createMemberPayRange(data) { | ... | @@ -1415,10 +1414,34 @@ export function createMemberPayRange(data) { |
| 1415 | }) | 1414 | }) |
| 1416 | } | 1415 | } |
| 1417 | 1416 | ||
| 1417 | // 获取最近认证记录 | ||
| 1418 | export function getMyRecent() { | ||
| 1419 | return request({ | ||
| 1420 | url: '/system/certifiedNew/getMyRecent', | ||
| 1421 | method: 'get' | ||
| 1422 | }) | ||
| 1423 | } | ||
| 1424 | |||
| 1418 | // 获取订单详情 | 1425 | // 获取订单详情 |
| 1419 | export function getOrderInfo(orderId) { | 1426 | export function getOrderInfo(orderId) { |
| 1420 | return request({ | 1427 | return request({ |
| 1421 | url: `/common/order/${orderId}`, | 1428 | url: `/common/order/${orderId}`, |
| 1422 | method: 'get' | 1429 | method: 'get' |
| 1423 | }) | 1430 | }) |
| 1431 | } | ||
| 1432 | |||
| 1433 | // 绑定学员 | ||
| 1434 | export function bindUser(data) { | ||
| 1435 | return request({ | ||
| 1436 | url: `/person/info/bindUser`, | ||
| 1437 | method: 'post', | ||
| 1438 | params: data | ||
| 1439 | }) | ||
| 1440 | } | ||
| 1441 | |||
| 1442 | export function unbindUser() { | ||
| 1443 | return request({ | ||
| 1444 | url: `/person/info/unbindUser`, | ||
| 1445 | method: 'post' | ||
| 1446 | }) | ||
| 1424 | } | 1447 | } |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| 1 | import { | ||
| 2 | useUserStore | ||
| 3 | } from '../store/modules/user' | ||
| 1 | import request from './request' | 4 | import request from './request' |
| 2 | import * as api from '@/common/api.js' | ||
| 3 | 5 | ||
| 4 | function pcLogin(data) { | 6 | function pcLogin(data) { |
| 5 | return request({ | 7 | return request({ |
| 6 | url: '/login', | 8 | url: '/login', |
| 7 | method: 'post', | 9 | method: 'post', |
| 8 | params: data | 10 | params: data |
| 9 | }).then((res) => { | 11 | }).then((res) => { |
| 10 | uni.setStorageSync('token', 'Bearer ' + res.data.token) | 12 | uni.setStorageSync('token', 'Bearer ' + res.data.token) |
| 11 | }).then(getInfo) | 13 | }).then(getInfo) |
| 12 | } | 14 | } |
| 13 | 15 | ||
| 14 | function h5Login(userName) { | 16 | function h5Login(userName) { |
| 15 | return request({ | 17 | return request({ |
| 16 | url: `/h5Login`, | 18 | url: `/h5Login`, |
| 17 | method: 'post', | 19 | method: 'post', |
| 18 | params: { | 20 | params: { |
| 19 | username: userName | 21 | username: userName |
| 20 | } | 22 | } |
| 21 | }).then((res) => { | 23 | }).then((res) => { |
| 22 | uni.setStorageSync('token', 'Bearer ' + res.data.token) | 24 | uni.setStorageSync('token', 'Bearer ' + res.data.token) |
| 23 | }).then(getInfo) | 25 | }).then(getInfo) |
| 24 | } | 26 | } |
| 25 | 27 | ||
| 26 | function h5LoginAuto() { | 28 | function h5LoginAuto() { |
| 27 | const userName = uni.getStorageSync('userName') | 29 | const userName = uni.getStorageSync('userName') |
| 28 | if (userName) { | 30 | if (userName) { |
| 29 | return h5Login(userName) | 31 | return h5Login(userName) |
| 30 | } else { | 32 | } else { |
| 31 | uni.redirectTo({ | 33 | uni.redirectTo({ |
| 32 | url: '/login/login' | 34 | url: '/login/login' |
| 33 | }) | 35 | }) |
| 34 | } | 36 | } |
| 35 | } | 37 | } |
| 36 | 38 | ||
| 37 | function logout() { | 39 | function logout() { |
| 38 | return request({ | 40 | return request({ |
| 39 | url: '/logout', | 41 | url: '/logout', |
| 40 | method: 'post' | 42 | method: 'post' |
| 41 | }).then(() => { | 43 | }).then(() => { |
| 42 | uni.removeStorageSync('token') | 44 | const userStore = useUserStore() |
| 43 | uni.removeStorageSync('userName') | 45 | const app = getApp() |
| 44 | }) | 46 | |
| 47 | uni.removeStorageSync('token') | ||
| 48 | uni.removeStorageSync('userName') | ||
| 49 | uni.removeStorageSync('webUserName') | ||
| 50 | |||
| 51 | userStore.setUser(null) | ||
| 52 | app.globalData.isLogin = false | ||
| 53 | }) | ||
| 45 | } | 54 | } |
| 46 | 55 | ||
| 47 | function getCodeImg() { | 56 | function getCodeImg() { |
| 48 | return request({ | 57 | return request({ |
| 49 | url: '/captchaImage', | 58 | url: '/captchaImage', |
| 50 | method: 'get' | 59 | method: 'get' |
| 51 | }) | 60 | }) |
| 52 | } | 61 | } |
| 53 | 62 | ||
| 54 | // 代退图形认证的获取手机验证码 | 63 | // 代退图形认证的获取手机验证码 |
| 55 | function getSmsCode(data) { | 64 | function getSmsCode(data) { |
| 56 | return request({ | 65 | return request({ |
| 57 | // url: '/captchaSmsWithCaptchaImage', | 66 | // url: '/captchaSmsWithCaptchaImage', |
| 58 | url: '/captchaSmsWithCaptchaImageForMiniApp', | 67 | url: '/captchaSmsWithCaptchaImageForMiniApp', |
| 59 | method: 'post', | 68 | method: 'post', |
| 60 | params: data | 69 | params: data |
| 61 | }) | 70 | }) |
| 62 | } | 71 | } |
| 63 | 72 | ||
| 64 | function loginByPhone(phonenumber, code) { | 73 | function loginByPhone(phonenumber, code) { |
| 65 | const data = { | 74 | const data = { |
| 66 | phonenumber, | 75 | phonenumber, |
| 67 | code | 76 | code |
| 68 | } | 77 | } |
| 69 | return request({ | 78 | return request({ |
| 70 | url: '/userLoginByPhone', | 79 | url: '/userLoginByPhone', |
| 71 | method: 'post', | 80 | method: 'post', |
| 72 | params: data | 81 | params: data |
| 73 | }).then((res) => { | 82 | }).then((res) => { |
| 74 | uni.showToast({ | 83 | uni.showToast({ |
| 75 | title: res.msg, | 84 | title: res.msg, |
| 76 | icon: 'none' | 85 | icon: 'none' |
| 77 | }) | 86 | }) |
| 78 | uni.setStorageSync('token', 'Bearer ' + res.data.token) | 87 | uni.setStorageSync('token', 'Bearer ' + res.data.token) |
| 79 | }).then(getInfo) | 88 | }).then(getInfo) |
| 80 | } | 89 | } |
| 81 | 90 | ||
| 82 | // 获取用户详细信息 | 91 | // 获取用户详细信息 |
| 83 | function getInfo() { | 92 | function getInfo() { |
| 84 | return request({ | 93 | return request({ |
| 85 | url: '/getInfo', | 94 | url: '/getInfo', |
| 86 | method: 'get' | 95 | method: 'get' |
| 87 | }).then(res => { | 96 | }).then(res => { |
| 88 | const app = getApp() | 97 | const userStore = useUserStore() |
| 89 | const user = res.data.user | 98 | const app = getApp() |
| 90 | // const personInfo = res.data.personInfo | 99 | const user = res.data.user |
| 91 | uni.setStorageSync('userName', user.userName) | 100 | |
| 92 | // uni.setStorageSync('perId', personInfo.perId||-1) | 101 | uni.setStorageSync('userName', user.userName) |
| 93 | app.globalData.user = res.data.user | 102 | uni.removeStorageSync('webUserName') |
| 94 | app.globalData.deptType = user.dept.deptType | 103 | userStore.setUser(user) |
| 95 | app.globalData.genFlag = user.dept.genFlag | 104 | |
| 96 | // user.dept.deptType = '3' | 105 | app.globalData.deptType = user.dept.deptType |
| 97 | switch (user.dept.deptType) { | 106 | app.globalData.genFlag = user.dept.genFlag |
| 98 | case '1': // 中跆协 | 107 | app.globalData.changePassFlag = user.changePassFlag |
| 99 | app.globalData.userType = '1' | 108 | switch (user.dept.deptType) { |
| 100 | break | 109 | case '1': // 中跆协 |
| 101 | case '2': // 省 | 110 | app.globalData.userType = '1' |
| 102 | case '3': | 111 | break |
| 103 | app.globalData.userType = '2' | 112 | case '2': // 省 |
| 104 | break | 113 | case '3': |
| 105 | case '6': // 道馆 | 114 | app.globalData.userType = '2' |
| 106 | app.globalData.userType = '4' | 115 | break |
| 107 | break | 116 | case '6': // 道馆 |
| 108 | default: // 市、区 | 117 | app.globalData.userType = '4' |
| 109 | app.globalData.userType = '3' | 118 | break |
| 110 | break | 119 | default: // 市、区 |
| 111 | } | 120 | app.globalData.userType = '3' |
| 112 | 121 | break | |
| 113 | app.globalData.userInfo = user | 122 | } |
| 114 | }) | 123 | }) |
| 124 | } | ||
| 125 | |||
| 126 | function getWebInfo() { | ||
| 127 | return request({ | ||
| 128 | url: '/person/info/getInfo', | ||
| 129 | method: 'get' | ||
| 130 | }).then(res => { | ||
| 131 | const userStore = useUserStore() | ||
| 132 | const user = res.data.user | ||
| 133 | |||
| 134 | delete res.data.user | ||
| 135 | const perInfo = res.data | ||
| 136 | |||
| 137 | uni.setStorageSync('webUserName', user.userName) | ||
| 138 | uni.removeStorageSync('userName') | ||
| 139 | userStore.setUser(user) | ||
| 140 | userStore.setPerInfo(perInfo) | ||
| 141 | }) | ||
| 115 | } | 142 | } |
| 116 | 143 | ||
| 117 | // 团队会员用户注册接口 | 144 | // 团队会员用户注册接口 |
| 118 | function groupMemberRegister(data) { | 145 | function groupMemberRegister(data) { |
| 119 | return request({ | 146 | return request({ |
| 120 | url: '/groupMemberRegister', | 147 | url: '/groupMemberRegister', |
| 121 | method: 'post', | 148 | method: 'post', |
| 122 | params: data | 149 | params: data |
| 123 | }) | 150 | }) |
| 124 | } | 151 | } |
| 125 | // 获取道馆信息 | 152 | // 获取道馆信息 |
| 126 | function getMyOwnMemberInfo() { | 153 | function getMyOwnMemberInfo() { |
| 127 | return request({ | 154 | return request({ |
| 128 | url: '/member/info/getMyOwnMemberInfo', | 155 | url: '/member/info/getMyOwnMemberInfo', |
| 129 | method: 'get' | 156 | method: 'get' |
| 130 | }).then(res => { | 157 | }).then(res => { |
| 131 | const app = getApp() | 158 | const app = getApp() |
| 132 | app.globalData.authenticationStatus = res.data.authenticationStatus | 159 | app.globalData.authenticationStatus = res.data.authenticationStatus |
| 133 | app.globalData.memberInfo = res.data.memberInfo | 160 | app.globalData.memberInfo = res.data.memberInfo |
| 134 | app.globalData.isExam = res.data?.memberInfo?.isPoints | 161 | app.globalData.isExam = res.data?.memberInfo?.isPoints |
| 135 | }) | 162 | }) |
| 163 | } | ||
| 164 | |||
| 165 | |||
| 166 | function wxLogin() { | ||
| 167 | return new Promise((resolve, reject) => { | ||
| 168 | uni.login({ | ||
| 169 | provider: 'weixin', | ||
| 170 | success: (res) => { | ||
| 171 | resolve(res) | ||
| 172 | }, | ||
| 173 | fail: (res) => { | ||
| 174 | uni.showToast({ | ||
| 175 | title: '获取用户信息失败', | ||
| 176 | icon: 'none', | ||
| 177 | duration: 2000 | ||
| 178 | }) | ||
| 179 | reject(res) | ||
| 180 | } | ||
| 181 | }) | ||
| 182 | }).then(res => { | ||
| 183 | return pcLoginByCode(res.code) | ||
| 184 | }) | ||
| 136 | } | 185 | } |
| 186 | |||
| 187 | function pcLoginByCode(code) { | ||
| 188 | return request({ | ||
| 189 | url: `/loginByJsCode?jsCode=${code}`, | ||
| 190 | method: "POST" | ||
| 191 | }).then((res) => { | ||
| 192 | uni.setStorageSync('token', 'Bearer ' + res.data); | ||
| 193 | }).then(getWebInfo) | ||
| 194 | } | ||
| 195 | |||
| 137 | export { | 196 | export { |
| 138 | pcLogin, | 197 | pcLogin, |
| 139 | getCodeImg, | 198 | getCodeImg, |
| 140 | getSmsCode, | 199 | getSmsCode, |
| 141 | h5Login, | 200 | h5Login, |
| 142 | h5LoginAuto, | 201 | h5LoginAuto, |
| 143 | loginByPhone, | 202 | loginByPhone, |
| 144 | groupMemberRegister, | 203 | groupMemberRegister, |
| 145 | getMyOwnMemberInfo, | 204 | getMyOwnMemberInfo, |
| 146 | logout, | 205 | logout, |
| 147 | getInfo | 206 | getInfo, |
| 148 | } | 207 | getWebInfo, |
| 208 | wxLogin | ||
| 209 | } | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view> | 2 | <view> |
| 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.flowCode }} | 6 | <text class="lab">结算编号:</text>{{ form.flowCode }} |
| 7 | </view> | 7 | </view> |
| 8 | <view class="ddd"> | 8 | <view class="ddd"> |
| 9 | <text class="lab">{{ type=='1'?'考级名称':'考段名称' }}:</text>{{form.mergeName}} | 9 | <text class="lab">{{ type=='1'?'考级名称':'考段名称' }}:</text>{{form.mergeName}} |
| 10 | </view> | 10 | </view> |
| 11 | <view class="ddd"> | 11 | <view class="ddd"> |
| 12 | <text class="lab">申请单位:</text>{{ form.memName }} | 12 | <text class="lab">申请单位:</text>{{ form.memName }} |
| 13 | </view> | 13 | </view> |
| 14 | <view class="ddd" v-if="form.mergeTime"> | 14 | <view class="ddd" v-if="form.mergeTime"> |
| 15 | <text class="lab">申请日期:</text>{{form.mergeTime?.slice(0,10)}} | 15 | <text class="lab">申请日期:</text>{{form.mergeTime?.slice(0,10)}} |
| 16 | </view> | 16 | </view> |
| 17 | <view class="ddd"> | 17 | <view class="ddd"> |
| 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>¥{{ (form.totalAmount*1).toFixed(2) }} |
| 22 | </view> | 22 | </view> |
| 23 | </view> | 23 | </view> |
| 24 | <view class="wBox"> | 24 | <view class="wBox"> |
| 25 | <view class="tt"> | 25 | <view class="tt"> |
| 26 | 考试信息 | 26 | 考试信息 |
| 27 | </view> | 27 | </view> |
| 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)" |
| 30 | <view class="w100"> | 30 | style="background-color: #fffafa;"> |
| 31 | <view class="text-primary">{{n.examCode}}</view> | 31 | <view class="w100"> |
| 32 | <view class="name">{{n.name}}</view> | 32 | <view class="text-primary">{{n.examCode}}</view> |
| 33 | <!-- <view class="date">{{n.idcTypeStr}}:{{n.idcCode}}</view> --> | 33 | <view class="name">{{n.name}}</view> |
| 34 | <view class="flexbox"> | 34 | <!-- <view class="date">{{n.idcTypeStr}}:{{n.idcCode}}</view> --> |
| 35 | <view> | 35 | <view class="flexbox"> |
| 36 | 上报单位 | 36 | <view> |
| 37 | <text>{{n.memberName}}</text> | 37 | 上报单位 |
| 38 | </view> | 38 | <text>{{n.memberName}}</text> |
| 39 | <view> | 39 | </view> |
| 40 | {{type=='1'?'考级考生数':'考段考生数'}} | 40 | <view> |
| 41 | <text> | 41 | {{type=='1'?'考级考生数':'考段考生数'}} |
| 42 | {{n.totalNum}} | 42 | <text> |
| 43 | </text> | 43 | {{n.totalNum}} |
| 44 | </view> | 44 | </text> |
| 45 | 45 | </view> | |
| 46 | <view> | 46 | |
| 47 | 金额 | 47 | <view> |
| 48 | <text class="text-danger">¥{{ (n.totalAmount*1).toFixed(2) }}</text> | 48 | 金额 |
| 49 | </view> | 49 | <text class="text-danger">¥{{ (n.totalAmount*1).toFixed(2) }}</text> |
| 50 | </view> | 50 | </view> |
| 51 | </view> | 51 | </view> |
| 52 | 52 | </view> | |
| 53 | </view> | 53 | |
| 54 | </view> | 54 | </view> |
| 55 | 55 | </view> | |
| 56 | </view> | 56 | |
| 57 | </view> | 57 | </view> |
| 58 | </template> | 58 | </view> |
| 59 | 59 | </template> | |
| 60 | <script setup> | 60 | |
| 61 | import * as api from '@/common/api.js' | 61 | <script setup> |
| 62 | import config from '@/config.js' | 62 | import * as api from '@/common/api.js' |
| 63 | import _ from 'underscore' | 63 | import config from '@/config.js' |
| 64 | import { | 64 | import _ from 'underscore' |
| 65 | onMounted, | 65 | import { |
| 66 | ref | 66 | onMounted, |
| 67 | } from 'vue' | 67 | ref |
| 68 | import { | 68 | } from 'vue' |
| 69 | onLoad | 69 | import { |
| 70 | } from '@dcloudio/uni-app' | 70 | onLoad |
| 71 | const app = getApp(); | 71 | } from '@dcloudio/uni-app' |
| 72 | const queryParams = ref({ | 72 | const app = getApp(); |
| 73 | recordId: '' | 73 | const queryParams = ref({ |
| 74 | }) | 74 | recordId: '' |
| 75 | 75 | }) | |
| 76 | const form = ref({}) | 76 | |
| 77 | const list = ref([]) | 77 | const form = ref({}) |
| 78 | const infoList = ref([]) | 78 | const list = ref([]) |
| 79 | const deptType = ref() | 79 | const infoList = ref([]) |
| 80 | const type = ref(null) | 80 | const deptType = ref() |
| 81 | let rangeId = '' | 81 | const type = ref(null) |
| 82 | onLoad((option) => { | 82 | let rangeId = '' |
| 83 | if ('form' in option) { | 83 | onLoad((option) => { |
| 84 | form.value = JSON.parse(decodeURIComponent(option.form)) | 84 | if ('form' in option) { |
| 85 | console.log(111,form.value) | 85 | form.value = JSON.parse(decodeURIComponent(option.form)) |
| 86 | } | 86 | } |
| 87 | type.value = option.type | 87 | type.value = option.type |
| 88 | // console.log(222,form.value) | 88 | // console.log(222,form.value) |
| 89 | if (app.globalData.isLogin) { | 89 | if (app.globalData.isLogin) { |
| 90 | init() | 90 | init() |
| 91 | } else { | 91 | } else { |
| 92 | app.firstLoadCallback = () => { | 92 | app.firstLoadCallback = () => { |
| 93 | init() | 93 | init() |
| 94 | }; | 94 | }; |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | }) | 97 | }) |
| 98 | 98 | ||
| 99 | function init() { | 99 | function init() { |
| 100 | deptType.value = app.globalData.deptType | 100 | deptType.value = app.globalData.deptType |
| 101 | getForm() | 101 | getForm() |
| 102 | } | 102 | } |
| 103 | 103 | ||
| 104 | function getForm() { | 104 | function getForm() { |
| 105 | uni.showLoading({ | 105 | uni.showLoading({ |
| 106 | title: '加载中' | 106 | title: '加载中' |
| 107 | }) | 107 | }) |
| 108 | api.getMergePaymentInfo(form.value.recordId).then(res => { | 108 | api.getMergePaymentInfo(form.value.recordId).then(res => { |
| 109 | _.each(res.rows, (r) => { | 109 | _.each(res.rows, (r) => { |
| 110 | const item = JSON.parse(r.content) | 110 | const item = JSON.parse(r.content) |
| 111 | item.recordId = r.recordId | 111 | item.recordId = r.recordId |
| 112 | infoList.value.push(item) | 112 | infoList.value.push(item) |
| 113 | }) | 113 | }) |
| 114 | console.log(infoList.value) | 114 | console.log(infoList.value) |
| 115 | form.value.totalNum = Math.floor(_.sumBy(infoList.value, (o) => parseFloat(o.totalNum || 0))) | 115 | form.value.totalNum = Math.floor(_.sumBy(infoList.value, (o) => parseFloat(o.totalNum || 0))) |
| 116 | form.value.totalAmount = Math.floor(_.sumBy(infoList.value, (o) => parseFloat(o.totalAmount || 0))) | 116 | form.value.totalAmount = Math.floor(_.sumBy(infoList.value, (o) => parseFloat(o.totalAmount || 0))) |
| 117 | 117 | ||
| 118 | uni.hideLoading() | 118 | uni.hideLoading() |
| 119 | 119 | ||
| 120 | }) | 120 | }) |
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | function goDetail(item){ | 123 | function goDetail(item) { |
| 124 | const form = encodeURIComponent(JSON.stringify(item)) | 124 | const form = encodeURIComponent(JSON.stringify(item)) |
| 125 | let path = `/level/applyDetail?examId=${item.examId}&form=${form}` | 125 | let path = `/level/applyDetail?examId=${item.examId}&form=${form}` |
| 126 | uni.navigateTo({ | 126 | uni.navigateTo({ |
| 127 | url: path | 127 | url: path |
| 128 | }); | 128 | }); |
| 129 | } | 129 | } |
| 130 | </script> | 130 | </script> |
| 131 | 131 | ||
| 132 | <style scoped lang="scss"> | 132 | <style scoped lang="scss"> |
| 133 | .wBox { | 133 | .wBox { |
| 134 | width: 700rpx; | 134 | width: 700rpx; |
| 135 | padding: 30rpx; | 135 | padding: 30rpx; |
| 136 | margin: 20rpx auto; | 136 | margin: 20rpx auto; |
| 137 | background: #FFFFFF; | 137 | background: #FFFFFF; |
| 138 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); | 138 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); |
| 139 | border-radius: 15rpx; | 139 | border-radius: 15rpx; |
| 140 | 140 | ||
| 141 | .tt { | 141 | .tt { |
| 142 | color: #0A1629;margin: 0 0 30rpx; | 142 | color: #0A1629; |
| 143 | font-size: 30rpx; | 143 | margin: 0 0 30rpx; |
| 144 | } | 144 | font-size: 30rpx; |
| 145 | 145 | } | |
| 146 | .ddd{font-size: 28rpx;color: #333; margin: 0 0 10rpx; | 146 | |
| 147 | .lab{color: #999;display: inline-block;text-align: justify; | 147 | .ddd { |
| 148 | text{word-break: break-all;} | 148 | font-size: 28rpx; |
| 149 | } | 149 | color: #333; |
| 150 | } | 150 | margin: 0 0 10rpx; |
| 151 | } | 151 | |
| 152 | 152 | .lab { | |
| 153 | color: #999; | ||
| 154 | display: inline-block; | ||
| 155 | text-align: justify; | ||
| 156 | |||
| 157 | text { | ||
| 158 | word-break: break-all; | ||
| 159 | } | ||
| 160 | } | ||
| 161 | } | ||
| 162 | } | ||
| 153 | </style> | 163 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
This diff could not be displayed because it is too large.
| 1 | import App from './App' | 1 | import App from './App' |
| 2 | // #ifndef VUE3 | 2 | import store from './store' |
| 3 | import Vue from 'vue' | 3 | |
| 4 | Vue.config.productionTip = false | 4 | // #ifndef VUE3 |
| 5 | App.mpType = 'app' | 5 | import Vue from 'vue' |
| 6 | const app = new Vue({ | 6 | Vue.config.productionTip = false |
| 7 | ...App | 7 | App.mpType = 'app' |
| 8 | }) | 8 | const app = new Vue({ |
| 9 | app.$mount() | 9 | ...App |
| 10 | // #endif | 10 | }) |
| 11 | 11 | app.use(store) | |
| 12 | // #ifdef VUE3 | 12 | app.$mount() |
| 13 | import { | 13 | // #endif |
| 14 | createSSRApp | 14 | |
| 15 | } from 'vue' | 15 | // #ifdef VUE3 |
| 16 | export function createApp() { | 16 | import { |
| 17 | const app = createSSRApp(App) | 17 | createSSRApp |
| 18 | return { | 18 | } from 'vue' |
| 19 | app | 19 | export function createApp() { |
| 20 | } | 20 | const app = createSSRApp(App) |
| 21 | } | 21 | app.use(store) |
| 22 | // #endif | 22 | return { |
| 23 | app | ||
| 24 | } | ||
| 25 | } | ||
| 26 | // #endif | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -129,10 +129,10 @@ | ... | @@ -129,10 +129,10 @@ |
| 129 | if (orderErr) { | 129 | if (orderErr) { |
| 130 | uni.hideLoading() | 130 | uni.hideLoading() |
| 131 | isPaying.value = false | 131 | isPaying.value = false |
| 132 | uni.showToast({ | 132 | // uni.showToast({ |
| 133 | title: '创建订单失败', | 133 | // title: '创建订单失败', |
| 134 | icon: 'none' | 134 | // icon: 'none' |
| 135 | }) | 135 | // }) |
| 136 | return | 136 | return |
| 137 | } | 137 | } |
| 138 | 138 | ||
| ... | @@ -141,7 +141,7 @@ | ... | @@ -141,7 +141,7 @@ |
| 141 | if (data.payFlag == 0) { | 141 | if (data.payFlag == 0) { |
| 142 | uni.hideLoading() | 142 | uni.hideLoading() |
| 143 | isPaying.value = false | 143 | isPaying.value = false |
| 144 | uni.navigateTo({ | 144 | uni.redirectTo({ |
| 145 | url: `/myCenter/sucPay?orderId=${data.orderId}` | 145 | url: `/myCenter/sucPay?orderId=${data.orderId}` |
| 146 | }) | 146 | }) |
| 147 | return | 147 | return |
| ... | @@ -153,7 +153,7 @@ | ... | @@ -153,7 +153,7 @@ |
| 153 | uni.hideLoading() | 153 | uni.hideLoading() |
| 154 | isPaying.value = false | 154 | isPaying.value = false |
| 155 | 155 | ||
| 156 | uni.navigateTo({ | 156 | uni.redirectTo({ |
| 157 | url: `/myCenter/sucPay?orderId=${data.orderId}` | 157 | url: `/myCenter/sucPay?orderId=${data.orderId}` |
| 158 | }) | 158 | }) |
| 159 | } | 159 | } | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view class="pay-order-container"> | 2 | <view class="pay-order-container"> |
| 3 | <!-- 页面头部 --> | 3 | <!-- 页面头部 --> |
| 4 | <view class="page-header"> | 4 | <view class="page-header"> |
| 5 | <text class="title">确认并支付</text> | 5 | <text class="title">确认并支付</text> |
| 6 | </view> | 6 | </view> |
| 7 | 7 | ||
| 8 | <!-- 订单核心信息 --> | 8 | <!-- 订单核心信息 --> |
| 9 | <view class="order-info"> | 9 | <view class="order-info"> |
| 10 | <view class="info-item"> | 10 | <view class="info-item"> |
| 11 | <text class="label">人数合计:</text> | 11 | <text class="label">人数合计:</text> |
| 12 | <text class="value red">{{ formData.all ?? 0 }}人</text> | 12 | <text class="value red">{{ formData.all ?? 0 }}人</text> |
| 13 | </view> | 13 | </view> |
| 14 | <view class="info-item"> | 14 | <view class="info-item"> |
| 15 | <text class="label">新会员合计:</text> | 15 | <text class="label">新会员合计:</text> |
| 16 | <text class="value red">{{ formData.new ?? 0 }}人</text> | 16 | <text class="value red">{{ formData.new ?? 0 }}人</text> |
| 17 | </view> | 17 | </view> |
| 18 | <view class="info-item"> | 18 | <view class="info-item"> |
| 19 | <text class="label">续费会员合计:</text> | 19 | <text class="label">续费会员合计:</text> |
| 20 | <text class="value red">{{ formData.old ?? 0 }}人</text> | 20 | <text class="value red">{{ formData.old ?? 0 }}人</text> |
| 21 | </view> | 21 | </view> |
| 22 | <view class="info-item total-price"> | 22 | <view class="info-item total-price"> |
| 23 | <text class="label">支付总费用:</text> | 23 | <text class="label">支付总费用:</text> |
| 24 | <text class="value red">{{ formData.price ?? 0 }}元</text> | 24 | <text class="value red">{{ formData.price ?? 0 }}元</text> |
| 25 | </view> | 25 | </view> |
| 26 | </view> | 26 | </view> |
| 27 | 27 | ||
| 28 | <!-- 支付方式选择(修复v-model报错 + 默认勾选) --> | 28 | <!-- 支付方式选择(修复v-model报错 + 默认勾选) --> |
| 29 | <view class="pay-type-section"> | 29 | <view class="pay-type-section"> |
| 30 | <text class="section-title">选择支付方式</text> | 30 | <text class="section-title">选择支付方式</text> |
| 31 | <!-- uni-app小程序原生radio-group写法 --> | 31 | <!-- uni-app小程序原生radio-group写法 --> |
| 32 | <radio-group :value="payType" @change="handlePayTypeChange"> | 32 | <radio-group :value="payType" @change="handlePayTypeChange"> |
| 33 | <label class="radio-item"> | 33 | <label class="radio-item"> |
| 34 | <!-- checked属性实现默认勾选 --> | 34 | <!-- checked属性实现默认勾选 --> |
| 35 | <radio value="0" color="#E60012" :checked="payType === '0'" /> | 35 | <radio value="0" color="#E60012" :checked="payType === '0'" /> |
| 36 | <view class="pay-method"> | 36 | <view class="pay-method"> |
| 37 | <image class="icon" src="/static/min.png" mode="widthFix"></image> | 37 | <image class="icon" src="/static/min.png" mode="widthFix"></image> |
| 38 | <text class="pay-name">民生付</text> | 38 | <text class="pay-name">民生付</text> |
| 39 | </view> | 39 | </view> |
| 40 | </label> | 40 | </label> |
| 41 | </radio-group> | 41 | </radio-group> |
| 42 | </view> | 42 | </view> |
| 43 | 43 | ||
| 44 | <!-- 底部支付按钮 --> | 44 | <!-- 底部支付按钮 --> |
| 45 | <view class="fixed-bottom"> | 45 | <view class="fixed-bottom"> |
| 46 | <button class="pay-btn red-bg" :loading="payLoading" @click="handlePay">立即支付</button> | 46 | <button class="pay-btn red-bg" :loading="payLoading" @click="handlePay">立即支付</button> |
| 47 | </view> | 47 | </view> |
| 48 | </view> | 48 | </view> |
| 49 | </template> | 49 | </template> |
| 50 | 50 | ||
| 51 | <script setup> | 51 | <script setup> |
| 52 | import { ref } from 'vue' | 52 | import { |
| 53 | import { onLoad } from '@dcloudio/uni-app'; | 53 | ref |
| 54 | import * as api from '@/common/api.js' | 54 | } from 'vue' |
| 55 | 55 | import { | |
| 56 | // 核心数据 | 56 | onLoad |
| 57 | const formData = ref({}) // 订单统计数据 | 57 | } from '@dcloudio/uni-app'; |
| 58 | const rangeId = ref('') // 核心业务ID | 58 | import * as api from '@/common/api.js' |
| 59 | const payType = ref('0') // 支付方式(默认0=民生付) | 59 | |
| 60 | const payLoading = ref(false) // 支付按钮加载状态 | 60 | // 核心数据 |
| 61 | 61 | const formData = ref({}) // 订单统计数据 | |
| 62 | // 页面加载接收参数 | 62 | const rangeId = ref('') // 核心业务ID |
| 63 | onLoad(async (options) => { | 63 | const payType = ref('0') // 支付方式(默认0=民生付) |
| 64 | console.log('订单ID:', options.rangeId) | 64 | const payLoading = ref(false) // 支付按钮加载状态 |
| 65 | if (options.rangeId) { | 65 | |
| 66 | rangeId.value = options.rangeId | 66 | // 页面加载接收参数 |
| 67 | await getCount() | 67 | onLoad(async (options) => { |
| 68 | } | 68 | console.log('订单ID:', options.rangeId) |
| 69 | }) | 69 | if (options.rangeId) { |
| 70 | 70 | rangeId.value = options.rangeId | |
| 71 | async function getCount() { | 71 | await getCount() |
| 72 | try { | 72 | } |
| 73 | const res = await api.getNewCountByRangeId(rangeId.value) | 73 | }) |
| 74 | formData.value = res.data || { all: 0, new: 0, old: 0 } | 74 | |
| 75 | } catch (e) { | 75 | async function getCount() { |
| 76 | formData.value = { all: 0, new: 0, old: 0 } | 76 | try { |
| 77 | } | 77 | const res = await api.getNewCountByRangeId(rangeId.value) |
| 78 | } | 78 | formData.value = res.data || { |
| 79 | 79 | all: 0, | |
| 80 | // 支付方式切换 | 80 | new: 0, |
| 81 | function handlePayTypeChange(e) { | 81 | old: 0 |
| 82 | payType.value = e.detail.value | 82 | } |
| 83 | } | 83 | } catch (e) { |
| 84 | 84 | formData.value = { | |
| 85 | // 立即支付核心逻辑 | 85 | all: 0, |
| 86 | async function handlePay() { | 86 | new: 0, |
| 87 | // 基础校验 | 87 | old: 0 |
| 88 | if (!rangeId.value || rangeId.value === '-1') { | 88 | } |
| 89 | return uni.showToast({ title: '订单ID异常', icon: 'none' }) | 89 | } |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | try { | 92 | // 支付方式切换 |
| 93 | payLoading.value = true | 93 | function handlePayTypeChange(e) { |
| 94 | const res = await api.goPay(rangeId.value) | 94 | payType.value = e.detail.value |
| 95 | 95 | } | |
| 96 | if (res.data?.orderId) { | 96 | |
| 97 | api.pcallBack2(res.data.orderId) | 97 | // 立即支付核心逻辑 |
| 98 | uni.navigateTo({ | 98 | async function handlePay() { |
| 99 | url: `/myCenter/sucPay?rangeId=${rangeId.value}from=payOrder` | 99 | // 基础校验 |
| 100 | }) | 100 | if (!rangeId.value || rangeId.value === '-1') { |
| 101 | } | 101 | return uni.showToast({ |
| 102 | 102 | title: '订单ID异常', | |
| 103 | // 跳转到支付成功页 | 103 | icon: 'none' |
| 104 | 104 | }) | |
| 105 | } catch (err) { | 105 | } |
| 106 | const errMsg = err?.data?.msg || err?.message || '支付失败,请稍后重试' | 106 | |
| 107 | uni.showToast({ title: errMsg, icon: 'none' }) | 107 | try { |
| 108 | } finally { | 108 | payLoading.value = true |
| 109 | payLoading.value = false | 109 | const res = await api.goPay(rangeId.value) |
| 110 | } | 110 | |
| 111 | } | 111 | if (res.data?.orderId) { |
| 112 | </script> | 112 | api.pcallBack2(res.data.orderId) |
| 113 | 113 | uni.redirectTo({ | |
| 114 | <style scoped lang="scss"> | 114 | url: `/myCenter/sucPay?rangeId=${rangeId.value}from=payOrder` |
| 115 | .pay-order-container { | 115 | }) |
| 116 | padding: 30rpx; | 116 | } |
| 117 | background-color: #fff; | 117 | |
| 118 | min-height: 100vh; | 118 | // 跳转到支付成功页 |
| 119 | box-sizing: border-box; | 119 | |
| 120 | } | 120 | } catch (err) { |
| 121 | .icon{ | 121 | const errMsg = err?.data?.msg || err?.message || '支付失败,请稍后重试' |
| 122 | width:30px; | 122 | uni.showToast({ |
| 123 | } | 123 | title: errMsg, |
| 124 | // 页面头部 | 124 | icon: 'none' |
| 125 | .page-header { | 125 | }) |
| 126 | text-align: center; | 126 | } finally { |
| 127 | padding: 20rpx 0; | 127 | payLoading.value = false |
| 128 | border-bottom: 1px solid #eee; | 128 | } |
| 129 | margin-bottom: 40rpx; | 129 | } |
| 130 | 130 | </script> | |
| 131 | .title { | 131 | |
| 132 | font-size: 36rpx; | 132 | <style scoped lang="scss"> |
| 133 | font-weight: 600; | 133 | .pay-order-container { |
| 134 | color: #333; | 134 | padding: 30rpx; |
| 135 | } | 135 | background-color: #fff; |
| 136 | } | 136 | min-height: 100vh; |
| 137 | 137 | box-sizing: border-box; | |
| 138 | // 订单信息区域 | 138 | } |
| 139 | .order-info { | 139 | |
| 140 | margin-bottom: 60rpx; | 140 | .icon { |
| 141 | 141 | width: 30px; | |
| 142 | .info-item { | 142 | } |
| 143 | display: flex; | 143 | |
| 144 | justify-content: space-between; | 144 | // 页面头部 |
| 145 | align-items: center; | 145 | .page-header { |
| 146 | padding: 25rpx 0; | 146 | text-align: center; |
| 147 | border-bottom: 1px solid #f5f5f5; | 147 | padding: 20rpx 0; |
| 148 | font-size: 32rpx; | 148 | border-bottom: 1px solid #eee; |
| 149 | 149 | margin-bottom: 40rpx; | |
| 150 | .label { | 150 | |
| 151 | color: #666; | 151 | .title { |
| 152 | } | 152 | font-size: 36rpx; |
| 153 | 153 | font-weight: 600; | |
| 154 | .value { | 154 | color: #333; |
| 155 | font-weight: 600; | 155 | } |
| 156 | font-size: 34rpx; | 156 | } |
| 157 | } | 157 | |
| 158 | 158 | // 订单信息区域 | |
| 159 | .red { | 159 | .order-info { |
| 160 | color: #E60012; | 160 | margin-bottom: 60rpx; |
| 161 | } | 161 | |
| 162 | } | 162 | .info-item { |
| 163 | 163 | display: flex; | |
| 164 | .total-price { | 164 | justify-content: space-between; |
| 165 | border-bottom: none; | 165 | align-items: center; |
| 166 | margin-top: 10rpx; | 166 | padding: 25rpx 0; |
| 167 | 167 | border-bottom: 1px solid #f5f5f5; | |
| 168 | .label { | 168 | font-size: 32rpx; |
| 169 | font-size: 34rpx; | 169 | |
| 170 | color: #333; | 170 | .label { |
| 171 | } | 171 | color: #666; |
| 172 | 172 | } | |
| 173 | .value { | 173 | |
| 174 | font-size: 38rpx; | 174 | .value { |
| 175 | } | 175 | font-weight: 600; |
| 176 | } | 176 | font-size: 34rpx; |
| 177 | } | 177 | } |
| 178 | 178 | ||
| 179 | // 支付方式区域 | 179 | .red { |
| 180 | .pay-type-section { | 180 | color: #E60012; |
| 181 | margin-bottom: 80rpx; | 181 | } |
| 182 | 182 | } | |
| 183 | .section-title { | 183 | |
| 184 | font-size: 32rpx; | 184 | .total-price { |
| 185 | color: #333; | 185 | border-bottom: none; |
| 186 | margin-bottom: 20rpx; | 186 | margin-top: 10rpx; |
| 187 | display: block; | 187 | |
| 188 | } | 188 | .label { |
| 189 | 189 | font-size: 34rpx; | |
| 190 | .radio-item { | 190 | color: #333; |
| 191 | display: flex; | 191 | } |
| 192 | align-items: center; | 192 | |
| 193 | font-size: 32rpx; | 193 | .value { |
| 194 | padding: 10rpx 0; | 194 | font-size: 38rpx; |
| 195 | 195 | } | |
| 196 | .pay-method { | 196 | } |
| 197 | display: flex; | 197 | } |
| 198 | align-items: center; | 198 | |
| 199 | margin-left: 10rpx; | 199 | // 支付方式区域 |
| 200 | 200 | .pay-type-section { | |
| 201 | .pay-name { | 201 | margin-bottom: 80rpx; |
| 202 | font-size: 32rpx; | 202 | |
| 203 | margin-left: 20rpx; | 203 | .section-title { |
| 204 | color: #333; | 204 | font-size: 32rpx; |
| 205 | } | 205 | color: #333; |
| 206 | } | 206 | margin-bottom: 20rpx; |
| 207 | } | 207 | display: block; |
| 208 | } | 208 | } |
| 209 | 209 | ||
| 210 | // 底部支付按钮 | 210 | .radio-item { |
| 211 | .fixed-bottom { | 211 | display: flex; |
| 212 | position: fixed; | 212 | align-items: center; |
| 213 | bottom: 0; | 213 | font-size: 32rpx; |
| 214 | left: 0; | 214 | padding: 10rpx 0; |
| 215 | right: 0; | 215 | |
| 216 | padding: 20rpx 30rpx 30rpx; | 216 | .pay-method { |
| 217 | background-color: #fff; | 217 | display: flex; |
| 218 | border-top: 1px solid #eee; | 218 | align-items: center; |
| 219 | 219 | margin-left: 10rpx; | |
| 220 | .pay-btn { | 220 | |
| 221 | width: 100%; | 221 | .pay-name { |
| 222 | height: 88rpx; | 222 | font-size: 32rpx; |
| 223 | line-height: 88rpx; | 223 | margin-left: 20rpx; |
| 224 | border-radius: 44rpx; | 224 | color: #333; |
| 225 | font-size: 34rpx; | 225 | } |
| 226 | font-weight: 600; | 226 | } |
| 227 | } | 227 | } |
| 228 | 228 | } | |
| 229 | .red-bg { | 229 | |
| 230 | background-color: #E60012; | 230 | // 底部支付按钮 |
| 231 | color: #fff; | 231 | .fixed-bottom { |
| 232 | } | 232 | position: fixed; |
| 233 | } | 233 | bottom: 0; |
| 234 | left: 0; | ||
| 235 | right: 0; | ||
| 236 | padding: 20rpx 30rpx 30rpx; | ||
| 237 | background-color: #fff; | ||
| 238 | border-top: 1px solid #eee; | ||
| 239 | |||
| 240 | .pay-btn { | ||
| 241 | width: 100%; | ||
| 242 | height: 88rpx; | ||
| 243 | line-height: 88rpx; | ||
| 244 | border-radius: 44rpx; | ||
| 245 | font-size: 34rpx; | ||
| 246 | font-weight: 600; | ||
| 247 | } | ||
| 248 | |||
| 249 | .red-bg { | ||
| 250 | background-color: #E60012; | ||
| 251 | color: #fff; | ||
| 252 | } | ||
| 253 | } | ||
| 234 | </style> | 254 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view> | 2 | <view> |
| 3 | <view class="pd30" style="padding: 30rpx 30rpx 180rpx;"> | 3 | <view class="pd30" style="padding: 30rpx 30rpx 180rpx;"> |
| 4 | <view class="wBox"> | 4 | <view class="wBox"> |
| 5 | <uni-forms ref="baseForm" label-width="100"> | 5 | <uni-forms ref="baseForm" label-width="100"> |
| 6 | <uni-forms-item label="所属协会" required> | 6 | <uni-forms-item label="所属协会" required> |
| 7 | <view style="width: 60vw;overflow:auto;"> | 7 | <view style="width: 60vw;overflow:auto;"> |
| 8 | <uni-data-picker v-model="form.parentId" :localdata="tree" | 8 | <uni-data-picker v-model="form.parentId" :localdata="tree" |
| 9 | :readonly="type&&parentId!=-1&&parentId!=0" :clear-icon="false" | 9 | :readonly="type&&parentId!=-1&&parentId!=0" :clear-icon="false" |
| 10 | :map="{text:'label',value:'id'}" popup-title="请选择"> | 10 | :map="{text:'label',value:'id'}" popup-title="请选择"> |
| 11 | </uni-data-picker> | 11 | </uni-data-picker> |
| 12 | </view> | 12 | </view> |
| 13 | </uni-forms-item> | 13 | </uni-forms-item> |
| 14 | <uni-forms-item v-if="form.memCode" label="会员编号" required> | 14 | <uni-forms-item v-if="form.memCode" label="会员编号" required> |
| 15 | <uni-easyinput v-model="form.memCode" disabled /> | 15 | <uni-easyinput v-model="form.memCode" disabled /> |
| 16 | </uni-forms-item> | 16 | </uni-forms-item> |
| 17 | 17 | ||
| 18 | <uni-forms-item label="机构名称" required> | 18 | <uni-forms-item label="机构名称" required> |
| 19 | <uni-easyinput v-model="form.name" :disabled="type" placeholder="机构名称" /></uni-forms-item> | 19 | <uni-easyinput v-model="form.name" :disabled="type" placeholder="机构名称" /></uni-forms-item> |
| 20 | 20 | ||
| 21 | <uni-forms-item label="所属省份" required> | 21 | <uni-forms-item label="所属省份" required> |
| 22 | <uni-data-select :clear="false" :disabled="type&&(belongProvinceId||belongProvinceId==0)" | 22 | <uni-data-select :clear="false" :disabled="type&&(belongProvinceId||belongProvinceId==0)" |
| 23 | v-model="form.belongProvinceId" :localdata="regionsList"></uni-data-select> | 23 | v-model="form.belongProvinceId" :localdata="regionsList"></uni-data-select> |
| 24 | </uni-forms-item> | 24 | </uni-forms-item> |
| 25 | <uni-forms-item label="社会信用代码" required> | 25 | <uni-forms-item label="社会信用代码" required> |
| 26 | <uni-easyinput v-model="form.creditCode" :disabled="type&&!!creditCode&&newResult" /> | 26 | <uni-easyinput v-model="form.creditCode" :disabled="type&&!!creditCode&&newResult" /> |
| 27 | </uni-forms-item> | 27 | </uni-forms-item> |
| 28 | <uni-forms-item label="联系人" required> | 28 | <uni-forms-item label="联系人" required> |
| 29 | <uni-easyinput v-model="form.siteContact" /> | 29 | <uni-easyinput v-model="form.siteContact" /> |
| 30 | </uni-forms-item> | 30 | </uni-forms-item> |
| 31 | <uni-forms-item label="联系方式" required> | 31 | <uni-forms-item label="联系方式" required> |
| 32 | <uni-easyinput v-model="form.siteTel" /> | 32 | <uni-easyinput v-model="form.siteTel" /> |
| 33 | </uni-forms-item> | 33 | </uni-forms-item> |
| 34 | <uni-forms-item label="认证地址" required> | 34 | <uni-forms-item label="认证地址" required> |
| 35 | <uni-data-picker v-model="form.coordinates1" @change="changeCoordinates1" :localdata="regionsList"></uni-data-picker> | 35 | <uni-data-picker v-model="form.coordinates1" @change="changeCoordinates1" |
| 36 | </uni-forms-item> | 36 | :localdata="regionsList"></uni-data-picker> |
| 37 | <uni-forms-item label="详细地址" required> | 37 | </uni-forms-item> |
| 38 | <uni-easyinput v-model="form.adress" placeholder="请输入详细地址" type='textarea' /></uni-forms-item> | 38 | <uni-forms-item label="详细地址" required> |
| 39 | <uni-forms-item label="法人姓名" required> | 39 | <uni-easyinput v-model="form.adress" placeholder="请输入详细地址" type='textarea' /></uni-forms-item> |
| 40 | <uni-easyinput v-model="form.legal" /> | 40 | <uni-forms-item label="法人姓名" required> |
| 41 | </uni-forms-item> | 41 | <uni-easyinput v-model="form.legal" /> |
| 42 | 42 | </uni-forms-item> | |
| 43 | <uni-forms-item v-if="form.deptType==6&&activeStatus!= 0" label="是否申请考点" required> | 43 | |
| 44 | <uni-data-checkbox v-model="form.applyPoints" :localdata="yesno" /> | 44 | <uni-forms-item v-if="form.deptType==6&&activeStatus!= 0" label="是否申请考点" required> |
| 45 | </uni-forms-item> | 45 | <uni-data-checkbox v-model="form.applyPoints" :localdata="yesno" /> |
| 46 | 46 | </uni-forms-item> | |
| 47 | <uni-forms-item label="法人身份证" required> | 47 | |
| 48 | <view class="imgArea"> | 48 | <uni-forms-item label="法人身份证" required> |
| 49 | <uni-file-picker v-model="imgfront" @delete="delimgFont" return-type="object" limit="1" | 49 | <view class="imgArea"> |
| 50 | @select="upIdCardImgFront" :image-styles="imageStylesZJ"> | 50 | <uni-file-picker v-model="imgfront" @delete="delimgFont" return-type="object" limit="1" |
| 51 | <view>国徽面</view> | 51 | @select="upIdCardImgFront" :image-styles="imageStylesZJ"> |
| 52 | </uni-file-picker> | 52 | <view>国徽面</view> |
| 53 | <uni-file-picker style="margin-top: 30px;" v-model="imgBack" @delete="delimgBack" | 53 | </uni-file-picker> |
| 54 | return-type="object" limit="1" @select="upIdCardImgBack" :image-styles="imageStylesZJ"> | 54 | <uni-file-picker style="margin-top: 30px;" v-model="imgBack" @delete="delimgBack" |
| 55 | <view>头像面</view> | 55 | return-type="object" limit="1" @select="upIdCardImgBack" :image-styles="imageStylesZJ"> |
| 56 | </uni-file-picker> | 56 | <view>头像面</view> |
| 57 | </view> | 57 | </uni-file-picker> |
| 58 | </uni-forms-item> | 58 | </view> |
| 59 | <uni-forms-item label="营业执照" required> | 59 | </uni-forms-item> |
| 60 | <uni-file-picker limit="1" v-model="businessLicenseArr" file-extname="png,jpg,jpeg,pdf" | 60 | <uni-forms-item label="营业执照" required> |
| 61 | file-mediatype="all" @select="selectFile" @delete="delSupplementFile"></uni-file-picker> | 61 | <uni-file-picker limit="1" v-model="businessLicenseArr" file-extname="png,jpg,jpeg,pdf" |
| 62 | 62 | file-mediatype="all" @select="selectFile" @delete="delSupplementFile"></uni-file-picker> | |
| 63 | </uni-forms-item> | 63 | |
| 64 | <uni-forms-item label="机构照片" required> | 64 | </uni-forms-item> |
| 65 | <uni-file-picker v-model="picArrR" limit="3" mode="grid" file-mediatype="image" | 65 | <uni-forms-item label="机构照片" required> |
| 66 | @select="upPicArr" @delete="delpicArr"> | 66 | <uni-file-picker v-model="picArrR" limit="3" mode="grid" file-mediatype="image" |
| 67 | </uni-file-picker> | 67 | @select="upPicArr" @delete="delpicArr"> |
| 68 | </uni-forms-item> | 68 | </uni-file-picker> |
| 69 | </uni-forms> | 69 | </uni-forms-item> |
| 70 | <view class="fixedBottom"> | 70 | </uni-forms> |
| 71 | <button class="btn-red" @click="submit()">确定</button> | 71 | <view class="fixedBottom"> |
| 72 | </view> | 72 | <button class="btn-red" @click="submit()">确定</button> |
| 73 | </view> | 73 | </view> |
| 74 | </view> | 74 | </view> |
| 75 | 75 | </view> | |
| 76 | <uni-popup ref="verifyPopup" type="center" background-color="rgba(0,0,0,0.5)"> | 76 | |
| 77 | <view class="custom-modal"> | 77 | <uni-popup ref="verifyPopup" type="center" background-color="rgba(0,0,0,0.5)"> |
| 78 | <view class="modal-title">提示</view> | 78 | <view class="custom-modal"> |
| 79 | <view class="modal-content"> | 79 | <view class="modal-title">提示</view> |
| 80 | 暂未查询到相关企业信息 | 80 | <view class="modal-content"> |
| 81 | </view> | 81 | 暂未查询到相关企业信息 |
| 82 | <view class=" modal-content" style="color:red">企业信息异常请检查相关资料信息,确认无误后再次提交!</view> | 82 | </view> |
| 83 | <view class="modal-btns mt20"> | 83 | <view class=" modal-content" style="color:red">企业信息异常请检查相关资料信息,确认无误后再次提交!</view> |
| 84 | <button class="btn-cancel" @click="closeVerifyPopup()">返回修改</button> | 84 | <view class="modal-btns mt20"> |
| 85 | <button class="btn-confirm" @click="confirmSubmit()">确认无误</button> | 85 | <button class="btn-cancel" @click="closeVerifyPopup()">返回修改</button> |
| 86 | </view> | 86 | <button class="btn-confirm" @click="confirmSubmit()">确认无误</button> |
| 87 | </view> | 87 | </view> |
| 88 | </uni-popup> | 88 | </view> |
| 89 | 89 | </uni-popup> | |
| 90 | <uni-popup ref="applyPopup" type="center" background-color="rgba(0,0,0,0.5)"> | 90 | |
| 91 | <view class="custom-modal apply-modal"> | 91 | <uni-popup ref="applyPopup" type="center" background-color="rgba(0,0,0,0.5)"> |
| 92 | <view class="modal-title">考点申请</view> | 92 | <view class="custom-modal apply-modal"> |
| 93 | <view class="modal-btns apply-btns"> | 93 | <view class="modal-title">考点申请</view> |
| 94 | <button class="btn-cancel" @click="closeApplyPopup()">暂不申请</button> | 94 | <view class="modal-btns apply-btns"> |
| 95 | <button class="btn-confirm" @click="confirmApply()">立即申请</button> | 95 | <button class="btn-cancel" @click="closeApplyPopup()">暂不申请</button> |
| 96 | </view> | 96 | <button class="btn-confirm" @click="confirmApply()">立即申请</button> |
| 97 | <view class="modal-tip">友情提示:非考点无法申请级位考试</view> | 97 | </view> |
| 98 | </view> | 98 | <view class="modal-tip">友情提示:非考点无法申请级位考试</view> |
| 99 | </uni-popup> | 99 | </view> |
| 100 | </view> | 100 | </uni-popup> |
| 101 | </template> | 101 | </view> |
| 102 | 102 | </template> | |
| 103 | <script setup> | 103 | |
| 104 | import { ref, reactive, computed } from 'vue'; | 104 | <script setup> |
| 105 | import * as api from '@/common/api.js'; | 105 | import { |
| 106 | import _ from 'underscore' | 106 | ref, |
| 107 | import { onLoad, onShow } from '@dcloudio/uni-app'; | 107 | reactive, |
| 108 | import config from '@/config.js' | 108 | computed |
| 109 | const app = getApp(); | 109 | } from 'vue'; |
| 110 | 110 | import * as api from '@/common/api.js'; | |
| 111 | const verifyPopup = ref(null) | 111 | import _ from 'underscore' |
| 112 | const applyPopup = ref(null) | 112 | import { |
| 113 | const verifyResult = ref({}) | 113 | onLoad, |
| 114 | 114 | onShow | |
| 115 | const form = ref({ | 115 | } from '@dcloudio/uni-app'; |
| 116 | type: '1', | 116 | import config from '@/config.js' |
| 117 | applyPoints: '0', | 117 | const app = getApp(); |
| 118 | renewYear: 1, | 118 | |
| 119 | legalIdcCode: '' | 119 | const verifyPopup = ref(null) |
| 120 | }); | 120 | const applyPopup = ref(null) |
| 121 | const years = ref(['1', '2', '3', '4', '5']) | 121 | const verifyResult = ref({}) |
| 122 | const yesno = ref([{ value: '0', text: '否' }, { value: '1', text: '是' }]) | 122 | |
| 123 | const memberFee = ref('') | 123 | const form = ref({ |
| 124 | const preferentialPolicy = ref(false) | 124 | type: '1', |
| 125 | const preferentialData = ref({}) | 125 | applyPoints: '0', |
| 126 | const typeList = ref([ | 126 | renewYear: 1, |
| 127 | { value: '1', text: '企业' }, | 127 | legalIdcCode: '' |
| 128 | { value: '2', text: '国家组织' }, | 128 | }); |
| 129 | { value: '3', text: '社会组织' }, | 129 | const years = ref(['1', '2', '3', '4', '5']) |
| 130 | { value: '4', text: '其他' } | 130 | const yesno = ref([{ |
| 131 | ]) | 131 | value: '0', |
| 132 | const regionArr = ref(); | 132 | text: '否' |
| 133 | const regionsList = ref([]); | 133 | }, { |
| 134 | const tree = ref([]); | 134 | value: '1', |
| 135 | const showDirectly = ref(true) | 135 | text: '是' |
| 136 | const directUnderFlag = ref(0) | 136 | }]) |
| 137 | const current = ref(0); | 137 | const memberFee = ref('') |
| 138 | const groupId = ref(0); | 138 | const preferentialPolicy = ref(false) |
| 139 | const currIndex = ref(null); | 139 | const preferentialData = ref({}) |
| 140 | const signType = ref(); | 140 | const typeList = ref([{ |
| 141 | const editIng = ref(true); | 141 | value: '1', |
| 142 | const isSign = ref(false); | 142 | text: '企业' |
| 143 | const type = ref(false) | 143 | }, |
| 144 | const flag = ref(false) | 144 | { |
| 145 | const result = ref(false) | 145 | value: '2', |
| 146 | const query = ref({ type: 0 }); | 146 | text: '国家组织' |
| 147 | const activeStatus = ref(0) | 147 | }, |
| 148 | const active = ref(0) | 148 | { |
| 149 | const memberInfo = ref({}) | 149 | value: '3', |
| 150 | const authenticationStatus = ref() | 150 | text: '社会组织' |
| 151 | const authenticationStatusa = ref() | 151 | }, |
| 152 | const newResult = ref(false) | 152 | { |
| 153 | const belongProvinceId = ref() | 153 | value: '4', |
| 154 | const picArr = ref([]) | 154 | text: '其他' |
| 155 | const picArrR = ref([]) | 155 | } |
| 156 | const businessLicenseArr = ref([]) | 156 | ]) |
| 157 | const list1 = ref([{ title: '完善信息' }, { title: '会员认证' }]) | 157 | const regionArr = ref(); |
| 158 | const imageStylesZJ = ref({ width: '400rpx', height: '253rpx' }); | 158 | const regionsList = ref([]); |
| 159 | const indicatorStyle = ref(`height: 50px;`) | 159 | const tree = ref([]); |
| 160 | const imgfront = ref({}) | 160 | const showDirectly = ref(true) |
| 161 | const imgBack = ref({}) | 161 | const directUnderFlag = ref(0) |
| 162 | const creditCode = ref() | 162 | const current = ref(0); |
| 163 | const parentId = ref() | 163 | const groupId = ref(0); |
| 164 | const legalIdcPhoto1 = ref('') | 164 | const currIndex = ref(null); |
| 165 | const legalIdcPhoto2 = ref('') | 165 | const signType = ref(); |
| 166 | const companyName = ref('') | 166 | const editIng = ref(true); |
| 167 | 167 | const isSign = ref(false); | |
| 168 | onLoad(option => { | 168 | const type = ref(false) |
| 169 | if (app.globalData.isLogin) { | 169 | const flag = ref(false) |
| 170 | init() | 170 | const result = ref(false) |
| 171 | } else { | 171 | const query = ref({ |
| 172 | app.firstLoadCallback = () => { | 172 | type: 0 |
| 173 | init() | 173 | }); |
| 174 | }; | 174 | const activeStatus = ref(0) |
| 175 | } | 175 | const active = ref(0) |
| 176 | }); | 176 | const memberInfo = ref({}) |
| 177 | 177 | const authenticationStatus = ref() | |
| 178 | async function init() { | 178 | const authenticationStatusa = ref() |
| 179 | getRegionsList() | 179 | const newResult = ref(false) |
| 180 | await getForm() | 180 | const belongProvinceId = ref() |
| 181 | await canUseDiscountApi() | 181 | const picArr = ref([]) |
| 182 | await getZtxDiscountPolicyApi() | 182 | const picArrR = ref([]) |
| 183 | } | 183 | const businessLicenseArr = ref([]) |
| 184 | 184 | const list1 = ref([{ | |
| 185 | async function getMyMemberCertUnitFeeApi() { | 185 | title: '完善信息' |
| 186 | const res = await api.getMyMemberCertUnitFee() | 186 | }, { |
| 187 | memberFee.value = res.data | 187 | title: '会员认证' |
| 188 | } | 188 | }]) |
| 189 | 189 | const imageStylesZJ = ref({ | |
| 190 | async function canUseDiscountApi() { | 190 | width: '400rpx', |
| 191 | const res = await api.canUseDiscount() | 191 | height: '253rpx' |
| 192 | preferentialPolicy.value = res.data | 192 | }); |
| 193 | } | 193 | const indicatorStyle = ref(`height: 50px;`) |
| 194 | 194 | const imgfront = ref({}) | |
| 195 | async function getZtxDiscountPolicyApi() { | 195 | const imgBack = ref({}) |
| 196 | const res = await api.getZtxDiscountPolicy() | 196 | const creditCode = ref() |
| 197 | preferentialData.value = res.data | 197 | const parentId = ref() |
| 198 | } | 198 | const legalIdcPhoto1 = ref('') |
| 199 | 199 | const legalIdcPhoto2 = ref('') | |
| 200 | async function getForm() { | 200 | const companyName = ref('') |
| 201 | const res = await api.getMyOwnMemberInfo() | 201 | |
| 202 | newResult.value = res.data.newResult | 202 | onLoad(option => { |
| 203 | result.value = res.data.result | 203 | if (app.globalData.isLogin) { |
| 204 | authenticationStatusa.value = res.data.authenticationStatus | 204 | init() |
| 205 | showDirectly.value = !res.data.memberInfo.associateId | 205 | } else { |
| 206 | activeStatus.value = res.data.memberInfo.activeStatus | 206 | app.firstLoadCallback = () => { |
| 207 | directUnderFlag.value = res.data.memberInfo.directUnderFlag | 207 | init() |
| 208 | 208 | }; | |
| 209 | if (authenticationStatusa.value == 0 || authenticationStatusa.value == 3) { | 209 | } |
| 210 | type.value = false | 210 | }); |
| 211 | } else { | 211 | |
| 212 | type.value = true | 212 | async function init() { |
| 213 | } | 213 | getRegionsList() |
| 214 | 214 | await getForm() | |
| 215 | if (authenticationStatusa.value != 0) { | 215 | await canUseDiscountApi() |
| 216 | flag.value = newResult.value | 216 | await getZtxDiscountPolicyApi() |
| 217 | } | 217 | } |
| 218 | 218 | ||
| 219 | form.value = { ...res.data.dept, ...res.data.memberInfo } | 219 | async function getMyMemberCertUnitFeeApi() { |
| 220 | getTree() | 220 | const res = await api.getMyMemberCertUnitFee() |
| 221 | form.value.deptType = res.data.dept.deptType | 221 | memberFee.value = res.data |
| 222 | form.value.parentId = form.value.parentId.toString() | 222 | } |
| 223 | creditCode.value = form.value.creditCode | 223 | |
| 224 | companyName.value = form.value.companyName | 224 | async function canUseDiscountApi() { |
| 225 | belongProvinceId.value = form.value.belongProvinceId | 225 | const res = await api.canUseDiscount() |
| 226 | parentId.value = form.value.parentId | 226 | preferentialPolicy.value = res.data |
| 227 | 227 | } | |
| 228 | if (form.value.regionId) { | 228 | |
| 229 | form.value.coordinates1 = form.value.regionId | 229 | async function getZtxDiscountPolicyApi() { |
| 230 | } else if (form.value.cityId) { | 230 | const res = await api.getZtxDiscountPolicy() |
| 231 | form.value.coordinates1 = form.value.cityId | 231 | preferentialData.value = res.data |
| 232 | } else if (form.value.provinceId) { | 232 | } |
| 233 | form.value.coordinates1 = form.value.provinceId | 233 | |
| 234 | } else { | 234 | async function getForm() { |
| 235 | form.value.coordinates1 = '' | 235 | const res = await api.getMyOwnMemberInfo() |
| 236 | } | 236 | newResult.value = res.data.newResult |
| 237 | 237 | result.value = res.data.result | |
| 238 | if (form.value.businessLicense) { | 238 | authenticationStatusa.value = res.data.authenticationStatus |
| 239 | try { | 239 | showDirectly.value = !res.data.memberInfo.associateId |
| 240 | businessLicenseArr.value = JSON.parse(form.value.businessLicense) || [] | 240 | activeStatus.value = res.data.memberInfo.activeStatus |
| 241 | } catch (e) { | 241 | directUnderFlag.value = res.data.memberInfo.directUnderFlag |
| 242 | businessLicenseArr.value = [{ url: form.value.businessLicense, name: '营业执照' }] | 242 | |
| 243 | } | 243 | if (authenticationStatusa.value == 0 || authenticationStatusa.value == 3) { |
| 244 | } | 244 | type.value = false |
| 245 | 245 | } else { | |
| 246 | if (form.value.legalIdcPhoto) { | 246 | type.value = true |
| 247 | legalIdcPhoto1.value = form.value.legalIdcPhoto.split(',')?.[0] || '' | 247 | } |
| 248 | legalIdcPhoto2.value = form.value.legalIdcPhoto.split(',')?.[1] || '' | 248 | |
| 249 | if (legalIdcPhoto1.value.indexOf('http') == -1) { | 249 | if (authenticationStatusa.value != 0) { |
| 250 | legalIdcPhoto1.value = config.baseUrl_api + legalIdcPhoto1.value | 250 | flag.value = newResult.value |
| 251 | } | 251 | } |
| 252 | if (legalIdcPhoto2.value.indexOf('http') == -1) { | 252 | |
| 253 | legalIdcPhoto2.value = config.baseUrl_api + legalIdcPhoto2.value | 253 | form.value = { |
| 254 | } | 254 | ...res.data.dept, |
| 255 | imgfront.value = { url: legalIdcPhoto1.value, name: '身份证正面', extname: 'png' } | 255 | ...res.data.memberInfo |
| 256 | imgBack.value = { url: legalIdcPhoto2.value, name: '身份证反面', extname: 'png' } | 256 | } |
| 257 | } | 257 | getTree() |
| 258 | 258 | form.value.deptType = res.data.dept.deptType | |
| 259 | if (form.value.pictures) { | 259 | form.value.parentId = form.value.parentId.toString() |
| 260 | picArrR.value = [] | 260 | creditCode.value = form.value.creditCode |
| 261 | picArr.value = [] | 261 | companyName.value = form.value.companyName |
| 262 | var arr = form.value.pictures.split(',') || [] | 262 | belongProvinceId.value = form.value.belongProvinceId |
| 263 | if (arr.length > 0) { | 263 | parentId.value = form.value.parentId |
| 264 | _.map(arr, (p) => { | 264 | |
| 265 | if (p.indexOf('http') == -1) { | 265 | if (form.value.regionId) { |
| 266 | p = config.baseUrl_api + p | 266 | form.value.coordinates1 = form.value.regionId |
| 267 | } | 267 | } else if (form.value.cityId) { |
| 268 | var obj = { url: p, name: '图片', extname: 'png' } | 268 | form.value.coordinates1 = form.value.cityId |
| 269 | picArrR.value.push(obj) | 269 | } else if (form.value.provinceId) { |
| 270 | picArr.value.push(p) | 270 | form.value.coordinates1 = form.value.provinceId |
| 271 | }) | 271 | } else { |
| 272 | } | 272 | form.value.coordinates1 = '' |
| 273 | } | 273 | } |
| 274 | 274 | ||
| 275 | if (!form.value.applyPoints || form.value.applyPoints == '') { | 275 | if (form.value.businessLicense) { |
| 276 | form.value.applyPoints = '0' | 276 | try { |
| 277 | } | 277 | businessLicenseArr.value = JSON.parse(form.value.businessLicense) || [] |
| 278 | } | 278 | } catch (e) { |
| 279 | 279 | businessLicenseArr.value = [{ | |
| 280 | function getTree() { | 280 | url: form.value.businessLicense, |
| 281 | if (authenticationStatusa.value == 0 || authenticationStatusa.value == 3 || authenticationStatusa.value == 1) { | 281 | name: '营业执照' |
| 282 | var obj = { selfDeptId: '-1', webSiteShow: 1, showDisabled: 1 } | 282 | }] |
| 283 | api.certifiedDeptTree(obj).then(res => { | 283 | } |
| 284 | tree.value = res.data | 284 | } |
| 285 | }) | 285 | |
| 286 | } else { | 286 | if (form.value.legalIdcPhoto) { |
| 287 | var obj = { | 287 | legalIdcPhoto1.value = form.value.legalIdcPhoto.split(',')?.[0] || '' |
| 288 | selfDeptId: '-1', | 288 | legalIdcPhoto2.value = form.value.legalIdcPhoto.split(',')?.[1] || '' |
| 289 | showDisabled: 1, | 289 | if (legalIdcPhoto1.value.indexOf('http') == -1) { |
| 290 | showDirect: authenticationStatusa.value == 2 || authenticationStatusa.value == 5 || authenticationStatusa.value == 4 ? 1 : null | 290 | legalIdcPhoto1.value = config.baseUrl_api + legalIdcPhoto1.value |
| 291 | } | 291 | } |
| 292 | api.deptTreeSelect(obj).then(res => { | 292 | if (legalIdcPhoto2.value.indexOf('http') == -1) { |
| 293 | tree.value = res.data | 293 | legalIdcPhoto2.value = config.baseUrl_api + legalIdcPhoto2.value |
| 294 | }) | 294 | } |
| 295 | } | 295 | imgfront.value = { |
| 296 | } | 296 | url: legalIdcPhoto1.value, |
| 297 | 297 | name: '身份证正面', | |
| 298 | function getRegionsList() { | 298 | extname: 'png' |
| 299 | api.regionsList().then(res => { | 299 | } |
| 300 | regionsList.value = res.data; | 300 | imgBack.value = { |
| 301 | }); | 301 | url: legalIdcPhoto2.value, |
| 302 | } | 302 | name: '身份证反面', |
| 303 | 303 | extname: 'png' | |
| 304 | // 核心:修改submit方法,改用自定义弹窗 | 304 | } |
| 305 | async function submit() { | 305 | } |
| 306 | // 基础表单验证 | 306 | |
| 307 | if (form.value.name == '') { | 307 | if (form.value.pictures) { |
| 308 | uni.showToast({ title: '请填写机构名称', icon: 'none' }) | 308 | picArrR.value = [] |
| 309 | return | 309 | picArr.value = [] |
| 310 | } | 310 | var arr = form.value.pictures.split(',') || [] |
| 311 | if (form.value.creditCode == '') { | 311 | if (arr.length > 0) { |
| 312 | uni.showToast({ title: '请填写社会信用代码', icon: 'none' }) | 312 | _.map(arr, (p) => { |
| 313 | return | 313 | if (p.indexOf('http') == -1) { |
| 314 | } | 314 | p = config.baseUrl_api + p |
| 315 | if (form.value.companyName == '') { | 315 | } |
| 316 | uni.showToast({ title: '请填写营业执照名称', icon: 'none' }) | 316 | var obj = { |
| 317 | return | 317 | url: p, |
| 318 | } | 318 | name: '图片', |
| 319 | if (form.value.legalIdcCode == '') { | 319 | extname: 'png' |
| 320 | uni.showToast({ title: '请填写法人证件号', icon: 'none' }) | 320 | } |
| 321 | return | 321 | picArrR.value.push(obj) |
| 322 | } | 322 | picArr.value.push(p) |
| 323 | if (form.value.siteContact == '') { | 323 | }) |
| 324 | uni.showToast({ title: '请填写联系人', icon: 'none' }) | 324 | } |
| 325 | return | 325 | } |
| 326 | } | 326 | |
| 327 | if (form.value.siteTel == '') { | 327 | if (!form.value.applyPoints || form.value.applyPoints == '') { |
| 328 | uni.showToast({ title: '请填写联系方式', icon: 'none' }) | 328 | form.value.applyPoints = '0' |
| 329 | return | 329 | } |
| 330 | } | 330 | } |
| 331 | if (form.value.coordinates1 == '') { | 331 | |
| 332 | uni.showToast({ title: '请选择认证地址', icon: 'none' }) | 332 | function getTree() { |
| 333 | return | 333 | if (authenticationStatusa.value == 0 || authenticationStatusa.value == 3 || authenticationStatusa.value == 1) { |
| 334 | } | 334 | var obj = { |
| 335 | if (form.value.adress == '') { | 335 | selfDeptId: '-1', |
| 336 | uni.showToast({ title: '请填写详细地址', icon: 'none' }) | 336 | webSiteShow: 1, |
| 337 | return | 337 | showDisabled: 1 |
| 338 | } | 338 | } |
| 339 | if (form.value.legal == '') { | 339 | api.certifiedDeptTree(obj).then(res => { |
| 340 | uni.showToast({ title: '请填写法人姓名', icon: 'none' }) | 340 | tree.value = res.data |
| 341 | return | 341 | }) |
| 342 | } | 342 | } else { |
| 343 | if (legalIdcPhoto1.value == '' || legalIdcPhoto2.value == '') { | 343 | var obj = { |
| 344 | uni.showToast({ title: '请上传法人身份证', icon: 'none' }) | 344 | selfDeptId: '-1', |
| 345 | return | 345 | showDisabled: 1, |
| 346 | } | 346 | showDirect: authenticationStatusa.value == 2 || authenticationStatusa.value == 5 || |
| 347 | if (!form.value.businessLicense) { | 347 | authenticationStatusa.value == 4 ? 1 : null |
| 348 | uni.showToast({ title: '请上传营业执照', icon: 'none' }) | 348 | } |
| 349 | return | 349 | api.deptTreeSelect(obj).then(res => { |
| 350 | } | 350 | tree.value = res.data |
| 351 | if (picArr.value.length == 0) { | 351 | }) |
| 352 | uni.showToast({ title: '请上传机构照片', icon: 'none' }) | 352 | } |
| 353 | return | 353 | } |
| 354 | } | 354 | |
| 355 | if (form.value.parentId == -1 || form.value.parentId == 0) { | 355 | function getRegionsList() { |
| 356 | uni.showToast({ title: '请选择所属协会', icon: 'none' }) | 356 | api.regionsList().then(res => { |
| 357 | return | 357 | regionsList.value = res.data; |
| 358 | } | 358 | }); |
| 359 | 359 | } | |
| 360 | try { | 360 | |
| 361 | const res = await handelVerify() | 361 | // 核心:修改submit方法,改用自定义弹窗 |
| 362 | verifyResult.value = res | 362 | async function submit() { |
| 363 | 363 | // 基础表单验证 | |
| 364 | if (!res.passFlag) { | 364 | if (form.value.name == '') { |
| 365 | // 打开自定义弹窗(替代原有showModal) | 365 | uni.showToast({ |
| 366 | verifyPopup.value.open() | 366 | title: '请填写机构名称', |
| 367 | return | 367 | icon: 'none' |
| 368 | } | 368 | }) |
| 369 | 369 | return | |
| 370 | submitData() | 370 | } |
| 371 | 371 | if (form.value.creditCode == '') { | |
| 372 | } catch (error) { | 372 | uni.showToast({ |
| 373 | uni.showToast({ title: error.message || '验证失败,请重试', icon: 'none' }) | 373 | title: '请填写社会信用代码', |
| 374 | } | 374 | icon: 'none' |
| 375 | } | 375 | }) |
| 376 | 376 | return | |
| 377 | // 新增:关闭验证弹窗 | 377 | } |
| 378 | function closeVerifyPopup() { | 378 | if (form.value.companyName == '') { |
| 379 | verifyPopup.value.close() | 379 | uni.showToast({ |
| 380 | } | 380 | title: '请填写营业执照名称', |
| 381 | 381 | icon: 'none' | |
| 382 | // 新增:确认无误提交 | 382 | }) |
| 383 | function confirmSubmit() { | 383 | return |
| 384 | verifyPopup.value.close() | 384 | } |
| 385 | submitData() | 385 | if (form.value.legalIdcCode == '') { |
| 386 | } | 386 | uni.showToast({ |
| 387 | 387 | title: '请填写法人证件号', | |
| 388 | // 新增:打开考点申请弹窗(备用,如需调用可加触发逻辑) | 388 | icon: 'none' |
| 389 | function openApplyPopup() { | 389 | }) |
| 390 | applyPopup.value.open() | 390 | return |
| 391 | } | 391 | } |
| 392 | 392 | if (form.value.siteContact == '') { | |
| 393 | // 新增:关闭考点申请弹窗 | 393 | uni.showToast({ |
| 394 | function closeApplyPopup() { | 394 | title: '请填写联系人', |
| 395 | applyPopup.value.close() | 395 | icon: 'none' |
| 396 | } | 396 | }) |
| 397 | 397 | return | |
| 398 | // 新增:确认考点申请 | 398 | } |
| 399 | function confirmApply() { | 399 | if (form.value.siteTel == '') { |
| 400 | applyPopup.value.close() | 400 | uni.showToast({ |
| 401 | // 此处添加考点申请逻辑 | 401 | title: '请填写联系方式', |
| 402 | } | 402 | icon: 'none' |
| 403 | 403 | }) | |
| 404 | // 企业信息验证 | 404 | return |
| 405 | function handelVerify() { | 405 | } |
| 406 | return new Promise(async(resolve, reject) => { | 406 | if (form.value.coordinates1 == '') { |
| 407 | if (!form.value.legalIdcCode || !form.value.legal) { | 407 | uni.showToast({ |
| 408 | return reject(new Error('请重新上传身份证并填写法人证件号')) | 408 | title: '请选择认证地址', |
| 409 | } | 409 | icon: 'none' |
| 410 | if (!form.value.companyName || !form.value.creditCode) { | 410 | }) |
| 411 | return reject(new Error('请重新上传营业执照并填写营业执照名称')) | 411 | return |
| 412 | } | 412 | } |
| 413 | 413 | if (form.value.adress == '') { | |
| 414 | try { | 414 | uni.showToast({ |
| 415 | const res = await api.checkBusinessLicense({ | 415 | title: '请填写详细地址', |
| 416 | creditCode: form.value.creditCode, | 416 | icon: 'none' |
| 417 | companyName: form.value.companyName, | 417 | }) |
| 418 | legalIdcCode: form.value.legalIdcCode, | 418 | return |
| 419 | legal: form.value.legal | 419 | } |
| 420 | }) | 420 | if (form.value.legal == '') { |
| 421 | if (res.code == 200) { | 421 | uni.showToast({ |
| 422 | resolve(res.data) | 422 | title: '请填写法人姓名', |
| 423 | } else { | 423 | icon: 'none' |
| 424 | reject(new Error(res.msg || '企业信息验证失败')) | 424 | }) |
| 425 | } | 425 | return |
| 426 | } catch (e) { | 426 | } |
| 427 | reject(new Error('验证接口调用失败,请检查网络')) | 427 | if (legalIdcPhoto1.value == '' || legalIdcPhoto2.value == '') { |
| 428 | } | 428 | uni.showToast({ |
| 429 | }) | 429 | title: '请上传法人身份证', |
| 430 | } | 430 | icon: 'none' |
| 431 | 431 | }) | |
| 432 | // 数据提交核心逻辑 | 432 | return |
| 433 | function submitData() { | 433 | } |
| 434 | const dataInfo = { | 434 | if (!form.value.businessLicense) { |
| 435 | parentId: form.value.parentId, | 435 | uni.showToast({ |
| 436 | creditCode: form.value.creditCode, | 436 | title: '请上传营业执照', |
| 437 | legal: form.value.legal, | 437 | icon: 'none' |
| 438 | businessLicense: form.value.businessLicense, | 438 | }) |
| 439 | pictures: picArr.value.toString(), | 439 | return |
| 440 | memId: form.value.memId, | 440 | } |
| 441 | id: form.value.deptId, | 441 | if (picArr.value.length == 0) { |
| 442 | name: form.value.name, | 442 | uni.showToast({ |
| 443 | regionId: form.value.coordinates1, | 443 | title: '请上传机构照片', |
| 444 | adress: form.value.adress, | 444 | icon: 'none' |
| 445 | belongProvinceId: form.value.belongProvinceId, | 445 | }) |
| 446 | deptType: form.value.deptType, | 446 | return |
| 447 | legalIdcPhoto: [legalIdcPhoto1.value, legalIdcPhoto2.value]?.join(','), | 447 | } |
| 448 | legalIdcCode: form.value.legalIdcCode, | 448 | if (form.value.parentId == -1 || form.value.parentId == 0) { |
| 449 | companyName: form.value.companyName, | 449 | uni.showToast({ |
| 450 | applyPoints: form.value.applyPoints, | 450 | title: '请选择所属协会', |
| 451 | siteContact: form.value.siteContact, | 451 | icon: 'none' |
| 452 | siteTel: form.value.siteTel | 452 | }) |
| 453 | } | 453 | return |
| 454 | 454 | } | |
| 455 | if (activeStatus.value == 0) { | 455 | |
| 456 | api.active(dataInfo).then(res => { | 456 | try { |
| 457 | uni.showModal({ | 457 | const res = await handelVerify() |
| 458 | content: '激活成功,返回首页', | 458 | verifyResult.value = res |
| 459 | success: function(resp) { | 459 | |
| 460 | if (resp.confirm) { | 460 | if (!res.passFlag) { |
| 461 | uni.reLaunch({ url: `/pages/index/index` }) | 461 | // 打开自定义弹窗(替代原有showModal) |
| 462 | } else { | 462 | verifyPopup.value.open() |
| 463 | uni.navigateBack() | 463 | return |
| 464 | } | 464 | } |
| 465 | } | 465 | |
| 466 | }) | 466 | submitData() |
| 467 | }).catch(err => { | 467 | |
| 468 | uni.showToast({ title: '激活失败,请重试', icon: 'none' }) | 468 | } catch (error) { |
| 469 | }) | 469 | uni.showToast({ |
| 470 | } else { | 470 | title: error.message || '验证失败,请重试', |
| 471 | api.editMyMemberCertifiedInfo(dataInfo).then(res => { | 471 | icon: 'none' |
| 472 | uni.navigateTo({ | 472 | }) |
| 473 | url: `/myCenter/goPay` | 473 | } |
| 474 | }) | 474 | } |
| 475 | 475 | ||
| 476 | }).catch(err => { | 476 | // 新增:关闭验证弹窗 |
| 477 | uni.showToast({ title: '提交失败,请重试', icon: 'none' }) | 477 | function closeVerifyPopup() { |
| 478 | }) | 478 | verifyPopup.value.close() |
| 479 | } | 479 | } |
| 480 | } | 480 | |
| 481 | 481 | // 新增:确认无误提交 | |
| 482 | function changeCoordinates1(e) { | 482 | function confirmSubmit() { |
| 483 | form.value.provinceId = e?.[0]?.toString() | 483 | verifyPopup.value.close() |
| 484 | form.value.cityId = e?.[1]?.toString() | 484 | submitData() |
| 485 | form.value.regionId = e?.[2]?.toString() | 485 | } |
| 486 | } | 486 | |
| 487 | 487 | // 新增:打开考点申请弹窗(备用,如需调用可加触发逻辑) | |
| 488 | function upIdCardImgFront(e) { | 488 | function openApplyPopup() { |
| 489 | const tempFilePaths = e.tempFilePaths; | 489 | applyPopup.value.open() |
| 490 | const imgUrl = tempFilePaths[0] | 490 | } |
| 491 | if (!imgUrl) return | 491 | |
| 492 | uni.showLoading({ title: '上传中' }) | 492 | // 新增:关闭考点申请弹窗 |
| 493 | api.uploadImg(e).then(data => { | 493 | function closeApplyPopup() { |
| 494 | legalIdcPhoto1.value = data.msg | 494 | applyPopup.value.close() |
| 495 | uni.hideLoading() | 495 | } |
| 496 | }).catch(err => { | 496 | |
| 497 | uni.hideLoading() | 497 | // 新增:确认考点申请 |
| 498 | uni.showToast({ title: '上传失败', icon: 'none' }) | 498 | function confirmApply() { |
| 499 | }) | 499 | applyPopup.value.close() |
| 500 | } | 500 | // 此处添加考点申请逻辑 |
| 501 | 501 | } | |
| 502 | function upIdCardImgBack(e) { | 502 | |
| 503 | const tempFilePaths = e.tempFilePaths; | 503 | // 企业信息验证 |
| 504 | const imgUrl = tempFilePaths[0] | 504 | function handelVerify() { |
| 505 | if (!imgUrl) return | 505 | return new Promise(async (resolve, reject) => { |
| 506 | uni.showLoading({ title: '上传中' }) | 506 | if (!form.value.legalIdcCode || !form.value.legal) { |
| 507 | api.uploadImg(e).then(data => { | 507 | return reject(new Error('请重新上传身份证并填写法人证件号')) |
| 508 | legalIdcPhoto2.value = data.msg | 508 | } |
| 509 | uni.hideLoading() | 509 | if (!form.value.companyName || !form.value.creditCode) { |
| 510 | }).catch(err => { | 510 | return reject(new Error('请重新上传营业执照并填写营业执照名称')) |
| 511 | uni.hideLoading() | 511 | } |
| 512 | uni.showToast({ title: '上传失败', icon: 'none' }) | 512 | |
| 513 | }) | 513 | try { |
| 514 | } | 514 | const res = await api.checkBusinessLicense({ |
| 515 | 515 | creditCode: form.value.creditCode, | |
| 516 | function delimgFont() { | 516 | companyName: form.value.companyName, |
| 517 | imgfront.value = {} | 517 | legalIdcCode: form.value.legalIdcCode, |
| 518 | legalIdcPhoto1.value = '' | 518 | legal: form.value.legal |
| 519 | } | 519 | }) |
| 520 | 520 | if (res.code == 200) { | |
| 521 | function delimgBack() { | 521 | resolve(res.data) |
| 522 | imgBack.value = {} | 522 | } else { |
| 523 | legalIdcPhoto2.value = '' | 523 | reject(new Error(res.msg || '企业信息验证失败')) |
| 524 | } | 524 | } |
| 525 | 525 | } catch (e) { | |
| 526 | let selectFileValue = {} | 526 | reject(new Error('验证接口调用失败,请检查网络')) |
| 527 | function selectFile(e) { | 527 | } |
| 528 | let file = e.tempFiles[0] | 528 | }) |
| 529 | if (!file) return | 529 | } |
| 530 | uni.showLoading({ title: '上传中' }) | 530 | |
| 531 | api.uploadFile(e).then(data => { | 531 | // 数据提交核心逻辑 |
| 532 | selectFileValue = { url: data.msg, name: file.name, extname: file.extname } | 532 | function submitData() { |
| 533 | form.value.businessLicense = JSON.stringify([selectFileValue]) | 533 | const dataInfo = { |
| 534 | uni.hideLoading() | 534 | parentId: form.value.parentId, |
| 535 | }).catch(err => { | 535 | creditCode: form.value.creditCode, |
| 536 | uni.hideLoading() | 536 | legal: form.value.legal, |
| 537 | uni.showToast({ title: '上传失败', icon: 'none' }) | 537 | businessLicense: form.value.businessLicense, |
| 538 | }) | 538 | pictures: picArr.value.toString(), |
| 539 | } | 539 | memId: form.value.memId, |
| 540 | 540 | id: form.value.deptId, | |
| 541 | function delSupplementFile() { | 541 | name: form.value.name, |
| 542 | selectFileValue = {} | 542 | regionId: form.value.coordinates1, |
| 543 | form.value.businessLicense = '' | 543 | adress: form.value.adress, |
| 544 | } | 544 | belongProvinceId: form.value.belongProvinceId, |
| 545 | 545 | deptType: form.value.deptType, | |
| 546 | function upPicArr(e) { | 546 | legalIdcPhoto: [legalIdcPhoto1.value, legalIdcPhoto2.value]?.join(','), |
| 547 | const tempFilePaths = e.tempFilePaths; | 547 | legalIdcCode: form.value.legalIdcCode, |
| 548 | const imgUrl = tempFilePaths[0] | 548 | companyName: form.value.companyName, |
| 549 | if (!imgUrl) return | 549 | applyPoints: form.value.applyPoints, |
| 550 | uni.showLoading({ title: '上传中' }) | 550 | siteContact: form.value.siteContact, |
| 551 | api.uploadImg(e).then(data => { | 551 | siteTel: form.value.siteTel |
| 552 | picArr.value.push(data.msg) | 552 | } |
| 553 | uni.hideLoading() | 553 | |
| 554 | }).catch(err => { | 554 | if (activeStatus.value == 0) { |
| 555 | uni.hideLoading() | 555 | api.active(dataInfo).then(res => { |
| 556 | uni.showToast({ title: '上传失败', icon: 'none' }) | 556 | uni.showModal({ |
| 557 | }) | 557 | content: '激活成功,返回首页', |
| 558 | } | 558 | success: function(resp) { |
| 559 | 559 | if (resp.confirm) { | |
| 560 | function delpicArr(e) { | 560 | uni.reLaunch({ |
| 561 | picArr.value.splice(e.index, 1) | 561 | url: `/pages/index/home` |
| 562 | } | 562 | }) |
| 563 | </script> | 563 | } else { |
| 564 | 564 | uni.navigateBack() | |
| 565 | <style lang="scss" scoped> | 565 | } |
| 566 | :deep(.file-picker__progress){ opacity: 0; } | 566 | } |
| 567 | :deep(.input-value){padding: 0 5px;} | 567 | }) |
| 568 | .picker-view { | 568 | }).catch(err => { |
| 569 | width: 750rpx; | 569 | uni.showToast({ |
| 570 | height: 600rpx; | 570 | title: '激活失败,请重试', |
| 571 | margin-top: 20rpx; | 571 | icon: 'none' |
| 572 | } | 572 | }) |
| 573 | .item { | 573 | }) |
| 574 | line-height: 100rpx; | 574 | } else { |
| 575 | text-align: center; | 575 | api.editMyMemberCertifiedInfo(dataInfo).then(res => { |
| 576 | } | 576 | uni.navigateTo({ |
| 577 | :deep(.uni-data-tree) { | 577 | url: `/myCenter/goPay` |
| 578 | border: 1px solid #dcdfe6; | 578 | }) |
| 579 | border-radius: 4px; | 579 | |
| 580 | .selected-list { justify-content: start; } | 580 | }).catch(err => { |
| 581 | } | 581 | uni.showToast({ |
| 582 | :deep(.uni-select__input-placeholder) { font-size: 30rpx; } | 582 | title: '提交失败,请重试', |
| 583 | :deep(.uni-easyinput__content-input) { font-size: 30rpx; } | 583 | icon: 'none' |
| 584 | :deep(.uni-easyinput__placeholder-class) { font-size: 30rpx;color: grey; } | 584 | }) |
| 585 | .wBox { | 585 | }) |
| 586 | width: 700rpx; | 586 | } |
| 587 | padding: 30rpx; | 587 | } |
| 588 | margin: 20rpx auto 0; | 588 | |
| 589 | background: #FFFFFF; | 589 | function changeCoordinates1(e) { |
| 590 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); | 590 | form.value.provinceId = e?.[0]?.toString() |
| 591 | border-radius: 15rpx; | 591 | form.value.cityId = e?.[1]?.toString() |
| 592 | } | 592 | form.value.regionId = e?.[2]?.toString() |
| 593 | .imgArea { | 593 | } |
| 594 | padding: 1px; | 594 | |
| 595 | display: flex; | 595 | function upIdCardImgFront(e) { |
| 596 | flex-wrap: wrap; | 596 | const tempFilePaths = e.tempFilePaths; |
| 597 | flex-direction: column; | 597 | const imgUrl = tempFilePaths[0] |
| 598 | } | 598 | if (!imgUrl) return |
| 599 | .btn-red { | 599 | uni.showLoading({ |
| 600 | background-color: #F56C6C; | 600 | title: '上传中' |
| 601 | color: #fff; | 601 | }) |
| 602 | border-radius: 8rpx; | 602 | api.uploadImg(e).then(data => { |
| 603 | height: 80rpx; | 603 | legalIdcPhoto1.value = data.msg |
| 604 | line-height: 80rpx; | 604 | uni.hideLoading() |
| 605 | font-size: 32rpx; | 605 | }).catch(err => { |
| 606 | width: 100%; | 606 | uni.hideLoading() |
| 607 | } | 607 | uni.showToast({ |
| 608 | .fixedBottom { | 608 | title: '上传失败', |
| 609 | position: fixed; | 609 | icon: 'none' |
| 610 | bottom: 0; | 610 | }) |
| 611 | left: 0; | 611 | }) |
| 612 | right: 0; | 612 | } |
| 613 | padding: 20rpx 30rpx; | 613 | |
| 614 | background: #fff; | 614 | function upIdCardImgBack(e) { |
| 615 | z-index: 99; | 615 | const tempFilePaths = e.tempFilePaths; |
| 616 | } | 616 | const imgUrl = tempFilePaths[0] |
| 617 | .text-warning { | 617 | if (!imgUrl) return |
| 618 | font-size: 28rpx; | 618 | uni.showLoading({ |
| 619 | margin-top: 20rpx; | 619 | title: '上传中' |
| 620 | } | 620 | }) |
| 621 | 621 | api.uploadImg(e).then(data => { | |
| 622 | /* 新增:自定义弹窗样式(核心) */ | 622 | legalIdcPhoto2.value = data.msg |
| 623 | .custom-modal { | 623 | uni.hideLoading() |
| 624 | width: 600rpx; | 624 | }).catch(err => { |
| 625 | background: #fff; | 625 | uni.hideLoading() |
| 626 | border-radius: 20rpx; | 626 | uni.showToast({ |
| 627 | padding: 40rpx 30rpx; | 627 | title: '上传失败', |
| 628 | box-sizing: border-box; | 628 | icon: 'none' |
| 629 | text-align: center; | 629 | }) |
| 630 | } | 630 | }) |
| 631 | .modal-title { | 631 | } |
| 632 | font-size: 36rpx; | 632 | |
| 633 | font-weight: 600; | 633 | function delimgFont() { |
| 634 | color: #333; | 634 | imgfront.value = {} |
| 635 | margin-bottom: 30rpx; | 635 | legalIdcPhoto1.value = '' |
| 636 | } | 636 | } |
| 637 | .modal-content { | 637 | |
| 638 | font-size: 30rpx; | 638 | function delimgBack() { |
| 639 | color: #666; | 639 | imgBack.value = {} |
| 640 | line-height: 1.6; | 640 | legalIdcPhoto2.value = '' |
| 641 | margin-bottom: 20rpx; | 641 | } |
| 642 | text-align: left; | 642 | |
| 643 | } | 643 | let selectFileValue = {} |
| 644 | .modal-tip { | 644 | |
| 645 | font-size: 26rpx; | 645 | function selectFile(e) { |
| 646 | color: #F56C6C; | 646 | let file = e.tempFiles[0] |
| 647 | margin-top: 10rpx; | 647 | if (!file) return |
| 648 | margin-bottom: 30rpx; | 648 | uni.showLoading({ |
| 649 | } | 649 | title: '上传中' |
| 650 | .modal-btns { | 650 | }) |
| 651 | display: flex; | 651 | api.uploadFile(e).then(data => { |
| 652 | justify-content: space-between; | 652 | selectFileValue = { |
| 653 | gap: 20rpx; | 653 | url: data.msg, |
| 654 | } | 654 | name: file.name, |
| 655 | .btn-cancel { | 655 | extname: file.extname |
| 656 | flex: 1; | 656 | } |
| 657 | height: 80rpx; | 657 | form.value.businessLicense = JSON.stringify([selectFileValue]) |
| 658 | line-height: 80rpx; | 658 | uni.hideLoading() |
| 659 | background: #f5f5f5; | 659 | }).catch(err => { |
| 660 | color: #666; | 660 | uni.hideLoading() |
| 661 | border-radius: 40rpx; | 661 | uni.showToast({ |
| 662 | font-size: 32rpx; | 662 | title: '上传失败', |
| 663 | border: none; | 663 | icon: 'none' |
| 664 | } | 664 | }) |
| 665 | .btn-confirm { | 665 | }) |
| 666 | flex: 1; | 666 | } |
| 667 | height: 80rpx; | 667 | |
| 668 | line-height: 80rpx; | 668 | function delSupplementFile() { |
| 669 | background: #C4121B; /* 红色主色调,和图二一致 */ | 669 | selectFileValue = {} |
| 670 | color: #fff; | 670 | form.value.businessLicense = '' |
| 671 | border-radius: 40rpx; | 671 | } |
| 672 | font-size: 32rpx; | 672 | |
| 673 | border: none; | 673 | function upPicArr(e) { |
| 674 | } | 674 | const tempFilePaths = e.tempFilePaths; |
| 675 | /* 去掉按钮默认边框 */ | 675 | const imgUrl = tempFilePaths[0] |
| 676 | .btn-cancel::after, .btn-confirm::after { | 676 | if (!imgUrl) return |
| 677 | border: none; | 677 | uni.showLoading({ |
| 678 | } | 678 | title: '上传中' |
| 679 | 679 | }) | |
| 680 | /* 考点申请弹窗专属样式 */ | 680 | api.uploadImg(e).then(data => { |
| 681 | .apply-modal { | 681 | picArr.value.push(data.msg) |
| 682 | padding: 40rpx 30rpx 20rpx; | 682 | uni.hideLoading() |
| 683 | } | 683 | }).catch(err => { |
| 684 | .apply-btns { | 684 | uni.hideLoading() |
| 685 | margin-bottom: 20rpx; | 685 | uni.showToast({ |
| 686 | } | 686 | title: '上传失败', |
| 687 | icon: 'none' | ||
| 688 | }) | ||
| 689 | }) | ||
| 690 | } | ||
| 691 | |||
| 692 | function delpicArr(e) { | ||
| 693 | picArr.value.splice(e.index, 1) | ||
| 694 | } | ||
| 695 | </script> | ||
| 696 | |||
| 697 | <style lang="scss" scoped> | ||
| 698 | :deep(.file-picker__progress) { | ||
| 699 | opacity: 0; | ||
| 700 | } | ||
| 701 | |||
| 702 | :deep(.input-value) { | ||
| 703 | padding: 0 5px; | ||
| 704 | } | ||
| 705 | |||
| 706 | .picker-view { | ||
| 707 | width: 750rpx; | ||
| 708 | height: 600rpx; | ||
| 709 | margin-top: 20rpx; | ||
| 710 | } | ||
| 711 | |||
| 712 | .item { | ||
| 713 | line-height: 100rpx; | ||
| 714 | text-align: center; | ||
| 715 | } | ||
| 716 | |||
| 717 | :deep(.uni-data-tree) { | ||
| 718 | border: 1px solid #dcdfe6; | ||
| 719 | border-radius: 4px; | ||
| 720 | |||
| 721 | .selected-list { | ||
| 722 | justify-content: start; | ||
| 723 | } | ||
| 724 | } | ||
| 725 | |||
| 726 | :deep(.uni-select__input-placeholder) { | ||
| 727 | font-size: 30rpx; | ||
| 728 | } | ||
| 729 | |||
| 730 | :deep(.uni-easyinput__content-input) { | ||
| 731 | font-size: 30rpx; | ||
| 732 | } | ||
| 733 | |||
| 734 | :deep(.uni-easyinput__placeholder-class) { | ||
| 735 | font-size: 30rpx; | ||
| 736 | color: grey; | ||
| 737 | } | ||
| 738 | |||
| 739 | .wBox { | ||
| 740 | width: 700rpx; | ||
| 741 | padding: 30rpx; | ||
| 742 | margin: 20rpx auto 0; | ||
| 743 | background: #FFFFFF; | ||
| 744 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); | ||
| 745 | border-radius: 15rpx; | ||
| 746 | } | ||
| 747 | |||
| 748 | .imgArea { | ||
| 749 | padding: 1px; | ||
| 750 | display: flex; | ||
| 751 | flex-wrap: wrap; | ||
| 752 | flex-direction: column; | ||
| 753 | } | ||
| 754 | |||
| 755 | .btn-red { | ||
| 756 | background-color: #F56C6C; | ||
| 757 | color: #fff; | ||
| 758 | border-radius: 8rpx; | ||
| 759 | height: 80rpx; | ||
| 760 | line-height: 80rpx; | ||
| 761 | font-size: 32rpx; | ||
| 762 | width: 100%; | ||
| 763 | } | ||
| 764 | |||
| 765 | .fixedBottom { | ||
| 766 | position: fixed; | ||
| 767 | bottom: 0; | ||
| 768 | left: 0; | ||
| 769 | right: 0; | ||
| 770 | padding: 20rpx 30rpx; | ||
| 771 | background: #fff; | ||
| 772 | z-index: 99; | ||
| 773 | } | ||
| 774 | |||
| 775 | .text-warning { | ||
| 776 | font-size: 28rpx; | ||
| 777 | margin-top: 20rpx; | ||
| 778 | } | ||
| 779 | |||
| 780 | /* 新增:自定义弹窗样式(核心) */ | ||
| 781 | .custom-modal { | ||
| 782 | width: 600rpx; | ||
| 783 | background: #fff; | ||
| 784 | border-radius: 20rpx; | ||
| 785 | padding: 40rpx 30rpx; | ||
| 786 | box-sizing: border-box; | ||
| 787 | text-align: center; | ||
| 788 | } | ||
| 789 | |||
| 790 | .modal-title { | ||
| 791 | font-size: 36rpx; | ||
| 792 | font-weight: 600; | ||
| 793 | color: #333; | ||
| 794 | margin-bottom: 30rpx; | ||
| 795 | } | ||
| 796 | |||
| 797 | .modal-content { | ||
| 798 | font-size: 30rpx; | ||
| 799 | color: #666; | ||
| 800 | line-height: 1.6; | ||
| 801 | margin-bottom: 20rpx; | ||
| 802 | text-align: left; | ||
| 803 | } | ||
| 804 | |||
| 805 | .modal-tip { | ||
| 806 | font-size: 26rpx; | ||
| 807 | color: #F56C6C; | ||
| 808 | margin-top: 10rpx; | ||
| 809 | margin-bottom: 30rpx; | ||
| 810 | } | ||
| 811 | |||
| 812 | .modal-btns { | ||
| 813 | display: flex; | ||
| 814 | justify-content: space-between; | ||
| 815 | gap: 20rpx; | ||
| 816 | } | ||
| 817 | |||
| 818 | .btn-cancel { | ||
| 819 | flex: 1; | ||
| 820 | height: 80rpx; | ||
| 821 | line-height: 80rpx; | ||
| 822 | background: #f5f5f5; | ||
| 823 | color: #666; | ||
| 824 | border-radius: 40rpx; | ||
| 825 | font-size: 32rpx; | ||
| 826 | border: none; | ||
| 827 | } | ||
| 828 | |||
| 829 | .btn-confirm { | ||
| 830 | flex: 1; | ||
| 831 | height: 80rpx; | ||
| 832 | line-height: 80rpx; | ||
| 833 | background: #C4121B; | ||
| 834 | /* 红色主色调,和图二一致 */ | ||
| 835 | color: #fff; | ||
| 836 | border-radius: 40rpx; | ||
| 837 | font-size: 32rpx; | ||
| 838 | border: none; | ||
| 839 | } | ||
| 840 | |||
| 841 | /* 去掉按钮默认边框 */ | ||
| 842 | .btn-cancel::after, | ||
| 843 | .btn-confirm::after { | ||
| 844 | border: none; | ||
| 845 | } | ||
| 846 | |||
| 847 | /* 考点申请弹窗专属样式 */ | ||
| 848 | .apply-modal { | ||
| 849 | padding: 40rpx 30rpx 20rpx; | ||
| 850 | } | ||
| 851 | |||
| 852 | .apply-btns { | ||
| 853 | margin-bottom: 20rpx; | ||
| 854 | } | ||
| 687 | </style> | 855 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view> | 2 | <view> |
| 3 | <view class="wBox"> | 3 | <view class="wBox"> |
| 4 | <view class="tt"> | 4 | <view class="tt"> |
| 5 | 审核信息 | 5 | 审核信息 |
| 6 | </view> | 6 | </view> |
| 7 | <view> | 7 | <view> |
| 8 | <view class="stepItem" v-for="(n,index) in recordList" :key="index"> | 8 | <view class="stepItem" v-for="(n,index) in recordList" :key="index"> |
| 9 | <view class="time">{{n.auditTime||'待审批'}}</view> | 9 | <view class="time">{{n.auditTime||'待审批'}}</view> |
| 10 | <view class="content"> | 10 | <view class="content"> |
| 11 | <view class="status"> | 11 | <view class="status"> |
| 12 | <text v-if="n.auditResult==0"> 审核中</text> | 12 | <text v-if="n.auditResult==1" class="text-success">审核通过</text> |
| 13 | <text v-if="n.auditResult==1" class="text-success">审核通过</text> | 13 | <text v-if="n.auditResult==0" class="text-danger"> 审核拒绝</text> |
| 14 | <text v-if="n.auditResult==2" class="text-danger"> 审核拒绝</text> | 14 | </view> |
| 15 | <text v-if="n.auditResult==3" class="text-warning"> 已撤回</text> | 15 | <!-- <view class="name">第 {{index+1}} 步</view> --> |
| 16 | </view> | 16 | <view class="deptName">{{n.auditDeptName}}</view> |
| 17 | <!-- <view class="name">第 {{index+1}} 步</view> --> | 17 | <view v-if="n.auditResult==0"> |
| 18 | <view class="deptName">{{n.auditDeptName}}</view> | 18 | 备注:{{n.auditMsg||'/' }} |
| 19 | <view v-if="n.auditStatus==2"> | 19 | </view> |
| 20 | 备注:{{n.auditMsg||'/' }} | 20 | </view> |
| 21 | </view> | 21 | </view> |
| 22 | </view> | 22 | </view> |
| 23 | </view> | 23 | </view> |
| 24 | </view> | 24 | |
| 25 | </view> | 25 | </view> |
| 26 | 26 | </template> | |
| 27 | </view> | 27 | |
| 28 | </template> | 28 | <script setup> |
| 29 | 29 | import * as api from '@/common/api.js' | |
| 30 | <script setup> | 30 | import config from '@/config.js' |
| 31 | import * as api from '@/common/api.js' | 31 | import _ from 'underscore' |
| 32 | import config from '@/config.js' | 32 | import to from 'await-to-js' |
| 33 | import _ from 'underscore' | 33 | import { |
| 34 | import { | 34 | onMounted, |
| 35 | onMounted, | 35 | ref |
| 36 | ref | 36 | } from 'vue' |
| 37 | } from 'vue' | 37 | import { |
| 38 | import { | 38 | onLoad, |
| 39 | onLoad, | 39 | onShow |
| 40 | onShow | 40 | } from '@dcloudio/uni-app' |
| 41 | } from '@dcloudio/uni-app' | 41 | const app = getApp(); |
| 42 | const app = getApp(); | 42 | const userType = ref('') |
| 43 | const userType = ref('') | 43 | const recordList = ref([]) |
| 44 | const recordList = ref([]) | 44 | onLoad(async (option) => { |
| 45 | onLoad((option) => { | 45 | await getMyRecentFN() |
| 46 | getMyCertStageFN() | 46 | }) |
| 47 | }) | 47 | |
| 48 | 48 | async function getMyRecentFN() { | |
| 49 | function getMyCertStageFN() { | 49 | const [err, res] = await to(api.getMyRecent()) |
| 50 | api.getMyCertStage().then(res => { | 50 | if (!err && res.data && res.data.auditLogs) { |
| 51 | recordList.value = res.data | 51 | recordList.value = JSON.parse(res.data.auditLogs) |
| 52 | console.log(res) | 52 | } |
| 53 | }) | 53 | } |
| 54 | 54 | </script> | |
| 55 | } | 55 | |
| 56 | </script> | 56 | <style scoped lang="scss"> |
| 57 | 57 | .wBox { | |
| 58 | <style scoped lang="scss"> | 58 | width: 700rpx; |
| 59 | .wBox { | 59 | padding: 30rpx; |
| 60 | width: 700rpx; | 60 | margin: 20rpx auto; |
| 61 | padding: 30rpx; | 61 | background: #FFFFFF; |
| 62 | margin: 20rpx auto; | 62 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); |
| 63 | background: #FFFFFF; | 63 | border-radius: 15rpx; |
| 64 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); | 64 | |
| 65 | border-radius: 15rpx; | 65 | .tt { |
| 66 | 66 | color: #0A1629; | |
| 67 | .tt { | 67 | margin: 0 0 30rpx; |
| 68 | color: #0A1629; | 68 | font-size: 30rpx; |
| 69 | margin: 0 0 30rpx; | 69 | } |
| 70 | font-size: 30rpx; | 70 | |
| 71 | } | 71 | .ddd { |
| 72 | 72 | font-size: 28rpx; | |
| 73 | .ddd { | 73 | color: #333; |
| 74 | font-size: 28rpx; | 74 | margin: 0 0 10rpx; |
| 75 | color: #333; | 75 | |
| 76 | margin: 0 0 10rpx; | 76 | .lab { |
| 77 | 77 | color: #999; | |
| 78 | .lab { | 78 | display: inline-block; |
| 79 | color: #999; | 79 | text-align: justify; |
| 80 | display: inline-block; | 80 | } |
| 81 | text-align: justify; | 81 | } |
| 82 | } | 82 | } |
| 83 | } | ||
| 84 | } | ||
| 85 | </style> | 83 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -4,6 +4,7 @@ | ... | @@ -4,6 +4,7 @@ |
| 4 | "crypto-js": "^4.1.1", | 4 | "crypto-js": "^4.1.1", |
| 5 | "dayjs": "^1.11.6", | 5 | "dayjs": "^1.11.6", |
| 6 | "lodash": "^4.17.21", | 6 | "lodash": "^4.17.21", |
| 7 | "pinia": "^3.0.4", | ||
| 7 | "underscore": "^1.13.6" | 8 | "underscore": "^1.13.6" |
| 8 | }, | 9 | }, |
| 9 | "devDependencies": { | 10 | "devDependencies": { | ... | ... |
| 1 | { | 1 | { |
| 2 | "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages | 2 | "pages": [{ |
| 3 | "path": "pages/index/index" | ||
| 4 | }, | ||
| 3 | { | 5 | { |
| 4 | "path": "pages/index/index", | 6 | "path": "pages/index/home", |
| 5 | "style": { | 7 | "style": { |
| 6 | "navigationBarTitleText": "工作台", | 8 | "navigationBarTitleText": "工作台", |
| 7 | "backgroundColor": "#ffffff", | 9 | "backgroundColor": "#ffffff", |
| ... | @@ -57,7 +59,7 @@ | ... | @@ -57,7 +59,7 @@ |
| 57 | "navigationBarTitleText": "证书发布", | 59 | "navigationBarTitleText": "证书发布", |
| 58 | "enablePullDownRefresh": false | 60 | "enablePullDownRefresh": false |
| 59 | } | 61 | } |
| 60 | }, { | 62 | }, { |
| 61 | "path": "pages/exam/payment", | 63 | "path": "pages/exam/payment", |
| 62 | "style": { | 64 | "style": { |
| 63 | "navigationBarTitleText": "考试缴费单", | 65 | "navigationBarTitleText": "考试缴费单", |
| ... | @@ -94,11 +96,10 @@ | ... | @@ -94,11 +96,10 @@ |
| 94 | 96 | ||
| 95 | }, | 97 | }, |
| 96 | { | 98 | { |
| 97 | "path" : "pages/index/newsDetail", | 99 | "path": "pages/index/newsDetail", |
| 98 | "style" : | 100 | "style": { |
| 99 | { | 101 | "navigationBarTitleText": "通知详情", |
| 100 | "navigationBarTitleText" : "通知详情", | 102 | "enablePullDownRefresh": false |
| 101 | "enablePullDownRefresh" : false | ||
| 102 | } | 103 | } |
| 103 | } | 104 | } |
| 104 | ], | 105 | ], |
| ... | @@ -108,674 +109,636 @@ | ... | @@ -108,674 +109,636 @@ |
| 108 | "navigationBarBackgroundColor": "#ffffff", | 109 | "navigationBarBackgroundColor": "#ffffff", |
| 109 | "navigationBarTitleText": "中跆协-工作台" | 110 | "navigationBarTitleText": "中跆协-工作台" |
| 110 | }, | 111 | }, |
| 111 | "subPackages": [ | 112 | "subPackages": [{ |
| 112 | { | 113 | "root": "login", |
| 113 | "root": "login", | 114 | "pages": [{ |
| 114 | "pages": [{ | 115 | "path": "login", |
| 115 | "path": "login", | ||
| 116 | "style": { | ||
| 117 | "navigationBarTitleText": "登录", | ||
| 118 | "enablePullDownRefresh": false, | ||
| 119 | "navigationStyle": "custom" | ||
| 120 | } | ||
| 121 | }, { | ||
| 122 | "path": "loginC", | ||
| 123 | "style": { | ||
| 124 | "navigationBarTitleText": "", | ||
| 125 | "enablePullDownRefresh": false, | ||
| 126 | "navigationStyle": "custom" | ||
| 127 | } | ||
| 128 | }, { | ||
| 129 | "path": "register", | ||
| 130 | "style": { | ||
| 131 | "navigationBarTitleText": "注册", | ||
| 132 | "enablePullDownRefresh": false, | ||
| 133 | "navigationStyle": "custom" | ||
| 134 | } | ||
| 135 | }] | ||
| 136 | }, | ||
| 137 | { | ||
| 138 | "root": "personal", | ||
| 139 | "pages": [ | ||
| 140 | { | ||
| 141 | "path": "addVip_per", | ||
| 142 | "style": { | ||
| 143 | "navigationBarTitleText": "个人会员申请", | ||
| 144 | "enablePullDownRefresh": false | ||
| 145 | } | ||
| 146 | }, | ||
| 147 | { | ||
| 148 | "path" : "goPay_per", | ||
| 149 | "style" : | ||
| 150 | { | ||
| 151 | "navigationBarTitleText" : "付款详情", | ||
| 152 | "enablePullDownRefresh" : false | ||
| 153 | } | ||
| 154 | }, | ||
| 155 | { | ||
| 156 | "path" : "submitPay", | ||
| 157 | "style" : | ||
| 158 | { | ||
| 159 | "navigationBarTitleText" : "确认支付", | ||
| 160 | "enablePullDownRefresh" : false | ||
| 161 | } | ||
| 162 | }, | ||
| 163 | { | ||
| 164 | "path" : "sucPay", | ||
| 165 | "style" : | ||
| 166 | { | ||
| 167 | "navigationBarTitleText" : "支付详情", | ||
| 168 | "enablePullDownRefresh" : false | ||
| 169 | } | ||
| 170 | }, | ||
| 171 | { | ||
| 172 | "path" : "home", | ||
| 173 | "style" : | ||
| 174 | { | ||
| 175 | "navigationBarTitleText" : "个人会员中心", | ||
| 176 | "enablePullDownRefresh" : false | ||
| 177 | } | ||
| 178 | } | ||
| 179 | ] | ||
| 180 | }, | ||
| 181 | { | ||
| 182 | "root": "personalVip", | ||
| 183 | "pages": [ | ||
| 184 | { | ||
| 185 | "path": "addVip", | ||
| 186 | "style": { | ||
| 187 | "navigationBarTitleText": "添加会员", | ||
| 188 | "enablePullDownRefresh": false | ||
| 189 | } | ||
| 190 | }, | ||
| 191 | { | ||
| 192 | "path": "renew", | ||
| 193 | "style": { | ||
| 194 | "navigationBarTitleText": "会员缴费", | ||
| 195 | "enablePullDownRefresh": false | ||
| 196 | } | ||
| 197 | }, { | ||
| 198 | "path": "vipList", | ||
| 199 | "style": { | ||
| 200 | "navigationBarTitleText": "会员列表", | ||
| 201 | "enablePullDownRefresh": false | ||
| 202 | } | ||
| 203 | }, { | ||
| 204 | "path": "list", | ||
| 205 | "style": { | ||
| 206 | "navigationBarTitleText": "会员查询", | ||
| 207 | "enablePullDownRefresh": false | ||
| 208 | } | ||
| 209 | }, { | ||
| 210 | "path": "detail", | ||
| 211 | "style": { | ||
| 212 | "navigationBarTitleText": "会员信息", | ||
| 213 | "enablePullDownRefresh": false | ||
| 214 | } | ||
| 215 | }, { | ||
| 216 | "path": "editVip", | ||
| 217 | "style": { | ||
| 218 | "navigationBarTitleText": "编辑会员", | ||
| 219 | "enablePullDownRefresh": false | ||
| 220 | } | ||
| 221 | }, { | ||
| 222 | "path": "audit", | ||
| 223 | "style": { | ||
| 224 | "navigationBarTitleText": "缴费审批", | ||
| 225 | "enablePullDownRefresh": false | ||
| 226 | } | ||
| 227 | }, { | ||
| 228 | "path": "payment", | ||
| 229 | "style": { | ||
| 230 | "navigationBarTitleText": "会员缴费", | ||
| 231 | "enablePullDownRefresh": false | ||
| 232 | } | ||
| 233 | }, { | ||
| 234 | "path": "paymentDetail", | ||
| 235 | "style": { | ||
| 236 | "navigationBarTitleText": "缴费详情", | ||
| 237 | "enablePullDownRefresh": false | ||
| 238 | } | ||
| 239 | }, { | ||
| 240 | "path": "auditDetail", | ||
| 241 | "style": { | ||
| 242 | "navigationBarTitleText": "会员缴费详情", | ||
| 243 | "enablePullDownRefresh": false | ||
| 244 | } | ||
| 245 | }, { | ||
| 246 | "path": "feeBill", | ||
| 247 | "style": { | ||
| 248 | "navigationBarTitleText": "会员缴费单", | ||
| 249 | "enablePullDownRefresh": false | ||
| 250 | } | ||
| 251 | }, { | ||
| 252 | "path": "feeBillDetail", | ||
| 253 | "style": { | ||
| 254 | "navigationBarTitleText": "缴费单详情", | ||
| 255 | "enablePullDownRefresh": false | ||
| 256 | } | ||
| 257 | }, { | ||
| 258 | "path": "mobilize", | ||
| 259 | "style": { | ||
| 260 | "navigationBarTitleText": "会员调动", | ||
| 261 | "enablePullDownRefresh": false | ||
| 262 | } | ||
| 263 | }, { | ||
| 264 | "path": "mobilizeDetail", | ||
| 265 | "style": { | ||
| 266 | "navigationBarTitleText": "会员调动详情", | ||
| 267 | "enablePullDownRefresh": false | ||
| 268 | } | ||
| 269 | }, { | ||
| 270 | "path": "addMobilize", | ||
| 271 | "style": { | ||
| 272 | "navigationBarTitleText": "新建调动", | ||
| 273 | "enablePullDownRefresh": false | ||
| 274 | } | ||
| 275 | }, { | ||
| 276 | "path": "sheng/merge", | ||
| 277 | "style": { | ||
| 278 | "navigationBarTitleText": "合并", | ||
| 279 | "enablePullDownRefresh": false | ||
| 280 | } | ||
| 281 | }, { | ||
| 282 | "path": "sheng/mergeUp", | ||
| 283 | "style": { | ||
| 284 | "navigationBarTitleText": "提交", | ||
| 285 | "enablePullDownRefresh": false | ||
| 286 | } | ||
| 287 | }, { | ||
| 288 | "path": "sheng/mergeUpDetail", | ||
| 289 | "style": { | ||
| 290 | "navigationBarTitleText": "提交详情", | ||
| 291 | "enablePullDownRefresh": false | ||
| 292 | } | ||
| 293 | }, { | ||
| 294 | "path": "payPersonList", | ||
| 295 | "style": { | ||
| 296 | "navigationBarTitleText": "会员缴费人员列表", | ||
| 297 | "enablePullDownRefresh": false | ||
| 298 | } | ||
| 299 | }, | ||
| 300 | { | ||
| 301 | "path" : "changeVip", | ||
| 302 | "style" : | ||
| 303 | { | ||
| 304 | "navigationBarTitleText" : "会员信息变更", | ||
| 305 | "enablePullDownRefresh" : false | ||
| 306 | } | ||
| 307 | }, | ||
| 308 | { | ||
| 309 | "path" : "addChange", | ||
| 310 | "style" : | ||
| 311 | { | ||
| 312 | "navigationBarTitleText" : "新增变更", | ||
| 313 | "enablePullDownRefresh" : false | ||
| 314 | } | ||
| 315 | }, | ||
| 316 | { | ||
| 317 | "path" : "changeVipDetail", | ||
| 318 | "style" : | ||
| 319 | { | ||
| 320 | "navigationBarTitleText" : "详情", | ||
| 321 | "enablePullDownRefresh" : false | ||
| 322 | } | ||
| 323 | }, | ||
| 324 | { | ||
| 325 | "path" : "changeVipAudit", | ||
| 326 | "style" : | ||
| 327 | { | ||
| 328 | "navigationBarTitleText" : "会员信息变更审核", | ||
| 329 | "enablePullDownRefresh" : false | ||
| 330 | } | ||
| 331 | }, | ||
| 332 | { | ||
| 333 | "path" : "changeLevel", | ||
| 334 | "style" : | ||
| 335 | { | ||
| 336 | "navigationBarTitleText" : "级位变更审核", | ||
| 337 | "enablePullDownRefresh" : false | ||
| 338 | } | ||
| 339 | }, | ||
| 340 | { | ||
| 341 | "path" : "addChangeLevel", | ||
| 342 | "style" : | ||
| 343 | { | ||
| 344 | "navigationBarTitleText" : "新建级位变更", | ||
| 345 | "enablePullDownRefresh" : false | ||
| 346 | } | ||
| 347 | }, | ||
| 348 | { | ||
| 349 | "path" : "changeLevelDetail", | ||
| 350 | "style" : | ||
| 351 | { | ||
| 352 | "navigationBarTitleText" : "级位变更详情", | ||
| 353 | "enablePullDownRefresh" : false | ||
| 354 | } | ||
| 355 | }, | ||
| 356 | { | ||
| 357 | "path" : "changeLevelAudit", | ||
| 358 | "style" : | ||
| 359 | { | ||
| 360 | "navigationBarTitleText" : "级位变更审批", | ||
| 361 | "enablePullDownRefresh" : false | ||
| 362 | } | ||
| 363 | }, | ||
| 364 | { | ||
| 365 | "path" : "changeVipChoseList", | ||
| 366 | "style" : | ||
| 367 | { | ||
| 368 | "navigationBarTitleText" : "在线选择", | ||
| 369 | "enablePullDownRefresh" : false | ||
| 370 | } | ||
| 371 | }, | ||
| 372 | { | ||
| 373 | "path" : "mergeVip", | ||
| 374 | "style" : | ||
| 375 | { | ||
| 376 | "navigationBarTitleText" : "信息合并", | ||
| 377 | "enablePullDownRefresh" : false | ||
| 378 | } | ||
| 379 | }, | ||
| 380 | { | ||
| 381 | "path" : "addMerge", | ||
| 382 | "style" : | ||
| 383 | { | ||
| 384 | "navigationBarTitleText" : "新建信息合并", | ||
| 385 | "enablePullDownRefresh" : false | ||
| 386 | } | ||
| 387 | }, | ||
| 388 | { | ||
| 389 | "path" : "mergeVipDetail", | ||
| 390 | "style" : | ||
| 391 | { | ||
| 392 | "navigationBarTitleText" : "合并信息详情", | ||
| 393 | "enablePullDownRefresh" : false | ||
| 394 | } | ||
| 395 | }, | ||
| 396 | { | ||
| 397 | "path" : "mergeVipChoseList", | ||
| 398 | "style" : | ||
| 399 | { | ||
| 400 | "navigationBarTitleText" : "在线选择", | ||
| 401 | "enablePullDownRefresh" : false | ||
| 402 | } | ||
| 403 | }, | ||
| 404 | { | ||
| 405 | "path" : "mergeVipAudit", | ||
| 406 | "style" : | ||
| 407 | { | ||
| 408 | "navigationBarTitleText" : "合并审核", | ||
| 409 | "enablePullDownRefresh" : false | ||
| 410 | } | ||
| 411 | }, | ||
| 412 | { | ||
| 413 | "path" : "monthFee", | ||
| 414 | "style" : | ||
| 415 | { | ||
| 416 | "navigationBarTitleText" : "月结缴费", | ||
| 417 | "enablePullDownRefresh" : false | ||
| 418 | } | ||
| 419 | }, | ||
| 420 | { | ||
| 421 | "path" : "webview/webview", | ||
| 422 | "style" : | ||
| 423 | { | ||
| 424 | "navigationBarTitleText" : "下载", | ||
| 425 | "enablePullDownRefresh" : false | ||
| 426 | } | ||
| 427 | }, | ||
| 428 | { | ||
| 429 | "path" : "monthFeeDetail", | ||
| 430 | "style" : | ||
| 431 | { | ||
| 432 | "navigationBarTitleText" : "月结详情", | ||
| 433 | "enablePullDownRefresh" : false | ||
| 434 | } | ||
| 435 | }] | ||
| 436 | }, { | ||
| 437 | "root": "group", | ||
| 438 | "pages": [{ | ||
| 439 | "path": "addGroupMemberPay", | ||
| 440 | "style": { | ||
| 441 | "navigationBarTitleText": "添加缴费", | ||
| 442 | "enablePullDownRefresh": false | ||
| 443 | } | ||
| 444 | |||
| 445 | }, { | ||
| 446 | "path": "apply/mergeUpDetail", | ||
| 447 | "style": { | ||
| 448 | "navigationBarTitleText": "缴费详情", | ||
| 449 | "enablePullDownRefresh": false | ||
| 450 | } | ||
| 451 | |||
| 452 | }, { | ||
| 453 | "path": "pay", | ||
| 454 | "style": { | 116 | "style": { |
| 455 | "navigationBarTitleText": "团队会员认证", | 117 | "navigationBarTitleText": "登录", |
| 456 | "enablePullDownRefresh": false | 118 | "enablePullDownRefresh": false, |
| 119 | "navigationStyle": "custom" | ||
| 457 | } | 120 | } |
| 458 | }, { | 121 | }, { |
| 459 | "path": "payDetail", | 122 | "path": "loginC", |
| 460 | "style": { | 123 | "style": { |
| 461 | "navigationBarTitleText": "认证详情", | 124 | "navigationBarTitleText": "", |
| 462 | "enablePullDownRefresh": false | 125 | "enablePullDownRefresh": false, |
| 126 | "navigationStyle": "custom" | ||
| 463 | } | 127 | } |
| 464 | }, { | 128 | }, { |
| 465 | "path": "apply/merge", | 129 | "path": "register", |
| 466 | "style": { | ||
| 467 | "navigationBarTitleText": "合并", | ||
| 468 | "enablePullDownRefresh": false | ||
| 469 | } | ||
| 470 | |||
| 471 | }, { | ||
| 472 | "path": "apply/mergeUp", | ||
| 473 | "style": { | ||
| 474 | "navigationBarTitleText": "提交", | ||
| 475 | "enablePullDownRefresh": false | ||
| 476 | } | ||
| 477 | |||
| 478 | }, { | ||
| 479 | "path": "apply/applyDetail", | ||
| 480 | "style": { | ||
| 481 | "navigationBarTitleText": "团体会员审核详情", | ||
| 482 | "enablePullDownRefresh": false | ||
| 483 | } | ||
| 484 | |||
| 485 | }, { | ||
| 486 | "path": "apply/record", | ||
| 487 | "style": { | ||
| 488 | "navigationBarTitleText": "审核记录", | ||
| 489 | "enablePullDownRefresh": false | ||
| 490 | } | ||
| 491 | |||
| 492 | },{ | ||
| 493 | "path": "list", | ||
| 494 | "style": { | 130 | "style": { |
| 495 | "navigationBarTitleText": "团体会员", | 131 | "navigationBarTitleText": "注册", |
| 496 | "enablePullDownRefresh": false | 132 | "enablePullDownRefresh": false, |
| 133 | "navigationStyle": "custom" | ||
| 497 | } | 134 | } |
| 498 | 135 | }] | |
| 499 | }, { | ||
| 500 | "path": "detail", | ||
| 501 | "style": { | ||
| 502 | "navigationBarTitleText": "机构会员", | ||
| 503 | "enablePullDownRefresh": false | ||
| 504 | } | ||
| 505 | |||
| 506 | }, { | ||
| 507 | "path": "feeBill", | ||
| 508 | "style": { | ||
| 509 | "navigationBarTitleText": "团体会员缴费单", | ||
| 510 | "enablePullDownRefresh": false | ||
| 511 | } | ||
| 512 | }, { | ||
| 513 | "path": "feeBillDetail", | ||
| 514 | "style": { | ||
| 515 | "navigationBarTitleText": "缴费单详情", | ||
| 516 | "enablePullDownRefresh": false | ||
| 517 | } | ||
| 518 | |||
| 519 | }, { | ||
| 520 | "path": "apply/applyList", | ||
| 521 | "style": { | ||
| 522 | "navigationBarTitleText": "团体会员审核", | ||
| 523 | "enablePullDownRefresh": false | ||
| 524 | } | ||
| 525 | |||
| 526 | },{ | ||
| 527 | "path": "vipList", | ||
| 528 | "style": { | ||
| 529 | "navigationBarTitleText": "会员列表", | ||
| 530 | "enablePullDownRefresh": false | ||
| 531 | } | ||
| 532 | }, | ||
| 533 | { | ||
| 534 | "path" : "changeGroupInfo", | ||
| 535 | "style" : | ||
| 536 | { | ||
| 537 | "navigationBarTitleText" : "团体会员信息修改", | ||
| 538 | "enablePullDownRefresh" : false | ||
| 539 | } | ||
| 540 | }, | ||
| 541 | { | ||
| 542 | "path" : "changeGroupAudit", | ||
| 543 | "style" : | ||
| 544 | { | ||
| 545 | "navigationBarTitleText" : "团体信息变更审核", | ||
| 546 | "enablePullDownRefresh" : false | ||
| 547 | } | ||
| 548 | }, | ||
| 549 | { | ||
| 550 | "path" : "changeGroupDetail", | ||
| 551 | "style" : | ||
| 552 | { | ||
| 553 | "navigationBarTitleText" : "团体信息变更详情", | ||
| 554 | "enablePullDownRefresh" : false | ||
| 555 | } | ||
| 556 | }, | ||
| 557 | { | ||
| 558 | "path" : "newChange", | ||
| 559 | "style" : | ||
| 560 | { | ||
| 561 | "navigationBarTitleText" : "新建团体信息变更", | ||
| 562 | "enablePullDownRefresh" : false | ||
| 563 | } | ||
| 564 | }, | 136 | }, |
| 565 | { | 137 | { |
| 566 | "path" : "groupInfo", | 138 | "root": "personal", |
| 567 | "style" : | 139 | "pages": [{ |
| 568 | { | 140 | "path": "addVip_per", |
| 569 | "navigationBarTitleText" : "机构资料", | 141 | "style": { |
| 570 | "enablePullDownRefresh" : false | 142 | "navigationBarTitleText": "个人会员申请", |
| 571 | } | 143 | "enablePullDownRefresh": false |
| 572 | }, | 144 | } |
| 573 | { | 145 | }, |
| 574 | "path" : "changeGroupChoseList", | 146 | { |
| 575 | "style" : | 147 | "path": "goPay_per", |
| 576 | { | 148 | "style": { |
| 577 | "navigationBarTitleText" : "在线选择", | 149 | "navigationBarTitleText": "付款详情", |
| 578 | "enablePullDownRefresh" : false | 150 | "enablePullDownRefresh": false |
| 579 | } | 151 | } |
| 580 | }] | 152 | }, |
| 581 | },{ | 153 | { |
| 582 | "root": "level", | 154 | "path": "submitPay", |
| 583 | "pages":[{ | 155 | "style": { |
| 584 | "path": "ztx/examList", | 156 | "navigationBarTitleText": "确认支付", |
| 585 | "style": { | 157 | "enablePullDownRefresh": false |
| 586 | "navigationBarTitleText": "级位考试详情", | 158 | } |
| 587 | "enablePullDownRefresh": false | 159 | }, |
| 588 | } | 160 | { |
| 589 | 161 | "path": "sucPay", | |
| 590 | }, { | 162 | "style": { |
| 591 | "path": "ztx/studentList", | 163 | "navigationBarTitleText": "支付详情", |
| 592 | "style": { | 164 | "enablePullDownRefresh": false |
| 593 | "navigationBarTitleText": "考生列表", | 165 | } |
| 594 | "enablePullDownRefresh": false | 166 | }, |
| 595 | } | 167 | { |
| 596 | 168 | "path": "home", | |
| 597 | }, { | 169 | "style": { |
| 598 | "path": "payment", | 170 | "navigationBarTitleText": "个人会员中心", |
| 599 | "style": { | 171 | "enablePullDownRefresh": false |
| 600 | "navigationBarTitleText": "级位考试缴费单", | 172 | } |
| 601 | "enablePullDownRefresh": false | 173 | } |
| 602 | } | 174 | ] |
| 603 | |||
| 604 | },{ | ||
| 605 | "path": "apply", | ||
| 606 | "style": { | ||
| 607 | "navigationBarTitleText": "级位考试申请", | ||
| 608 | "enablePullDownRefresh": false | ||
| 609 | } | ||
| 610 | |||
| 611 | }, { | ||
| 612 | "path": "applyDetail", | ||
| 613 | "style": { | ||
| 614 | "navigationBarTitleText": "级位考试详情", | ||
| 615 | "enablePullDownRefresh": false | ||
| 616 | } | ||
| 617 | |||
| 618 | }, { | ||
| 619 | "path": "addApply", | ||
| 620 | "style": { | ||
| 621 | "navigationBarTitleText": "编辑级位考试", | ||
| 622 | "enablePullDownRefresh": false | ||
| 623 | } | ||
| 624 | |||
| 625 | }, { | ||
| 626 | "path": "chooseExaminer", | ||
| 627 | "style": { | ||
| 628 | "navigationBarTitleText": "选择考官", | ||
| 629 | "enablePullDownRefresh": false | ||
| 630 | } | ||
| 631 | |||
| 632 | }, { | ||
| 633 | "path": "merge", | ||
| 634 | "style": { | ||
| 635 | "navigationBarTitleText": "合并", | ||
| 636 | "enablePullDownRefresh": false | ||
| 637 | } | ||
| 638 | |||
| 639 | }, { | ||
| 640 | "path": "mergeUp", | ||
| 641 | "style": { | ||
| 642 | "navigationBarTitleText": "提交", | ||
| 643 | "enablePullDownRefresh": false | ||
| 644 | } | ||
| 645 | |||
| 646 | }, { | ||
| 647 | "path": "mergeUpDetail", | ||
| 648 | "style": { | ||
| 649 | "navigationBarTitleText": "考试详情", | ||
| 650 | "enablePullDownRefresh": false | ||
| 651 | } | ||
| 652 | |||
| 653 | }, { | ||
| 654 | "path": "approval", | ||
| 655 | "style": { | ||
| 656 | "navigationBarTitleText": "级位考试审批", | ||
| 657 | "enablePullDownRefresh": false | ||
| 658 | } | ||
| 659 | |||
| 660 | }, { | ||
| 661 | "path": "ztx/approval", | ||
| 662 | "style": { | ||
| 663 | "navigationBarTitleText": "级位考试审批", | ||
| 664 | "enablePullDownRefresh": false | ||
| 665 | } | ||
| 666 | |||
| 667 | }, { | ||
| 668 | "path": "ztx/cert", | ||
| 669 | "style": { | ||
| 670 | "navigationBarTitleText": "证书发布", | ||
| 671 | "enablePullDownRefresh": false | ||
| 672 | } | ||
| 673 | |||
| 674 | }, | 175 | }, |
| 675 | { | 176 | { |
| 676 | "path": "examStudentList", | 177 | "root": "personalVip", |
| 677 | "style": { | 178 | "pages": [{ |
| 678 | "navigationBarTitleText": "考生信息", | 179 | "path": "addVip", |
| 679 | "enablePullDownRefresh": false | 180 | "style": { |
| 680 | } | 181 | "navigationBarTitleText": "添加会员", |
| 681 | }] | 182 | "enablePullDownRefresh": false |
| 682 | },{ | 183 | } |
| 683 | "root": "myCenter", | 184 | }, |
| 684 | "pages": [ | ||
| 685 | { | ||
| 686 | "path" : "index", | ||
| 687 | "style" : | ||
| 688 | { | ||
| 689 | "navigationBarTitleText" : "个人中心", | ||
| 690 | "enablePullDownRefresh" : false | ||
| 691 | } | ||
| 692 | }, | ||
| 693 | { | ||
| 694 | "path" : "teamInfo", | ||
| 695 | "style" : | ||
| 696 | { | 185 | { |
| 697 | "navigationBarTitleText" : "团体信息", | 186 | "path": "renew", |
| 698 | "enablePullDownRefresh" : false | 187 | "style": { |
| 699 | } | 188 | "navigationBarTitleText": "会员缴费", |
| 700 | }, | 189 | "enablePullDownRefresh": false |
| 701 | { | 190 | } |
| 702 | "path" : "auth", | 191 | }, { |
| 703 | "style" : | 192 | "path": "vipList", |
| 193 | "style": { | ||
| 194 | "navigationBarTitleText": "会员列表", | ||
| 195 | "enablePullDownRefresh": false | ||
| 196 | } | ||
| 197 | }, { | ||
| 198 | "path": "list", | ||
| 199 | "style": { | ||
| 200 | "navigationBarTitleText": "会员查询", | ||
| 201 | "enablePullDownRefresh": false | ||
| 202 | } | ||
| 203 | }, { | ||
| 204 | "path": "detail", | ||
| 205 | "style": { | ||
| 206 | "navigationBarTitleText": "会员信息", | ||
| 207 | "enablePullDownRefresh": false | ||
| 208 | } | ||
| 209 | }, { | ||
| 210 | "path": "editVip", | ||
| 211 | "style": { | ||
| 212 | "navigationBarTitleText": "编辑会员", | ||
| 213 | "enablePullDownRefresh": false | ||
| 214 | } | ||
| 215 | }, { | ||
| 216 | "path": "audit", | ||
| 217 | "style": { | ||
| 218 | "navigationBarTitleText": "缴费审批", | ||
| 219 | "enablePullDownRefresh": false | ||
| 220 | } | ||
| 221 | }, { | ||
| 222 | "path": "payment", | ||
| 223 | "style": { | ||
| 224 | "navigationBarTitleText": "会员缴费", | ||
| 225 | "enablePullDownRefresh": false | ||
| 226 | } | ||
| 227 | }, { | ||
| 228 | "path": "paymentDetail", | ||
| 229 | "style": { | ||
| 230 | "navigationBarTitleText": "缴费详情", | ||
| 231 | "enablePullDownRefresh": false | ||
| 232 | } | ||
| 233 | }, { | ||
| 234 | "path": "auditDetail", | ||
| 235 | "style": { | ||
| 236 | "navigationBarTitleText": "会员缴费详情", | ||
| 237 | "enablePullDownRefresh": false | ||
| 238 | } | ||
| 239 | }, { | ||
| 240 | "path": "feeBill", | ||
| 241 | "style": { | ||
| 242 | "navigationBarTitleText": "会员缴费单", | ||
| 243 | "enablePullDownRefresh": false | ||
| 244 | } | ||
| 245 | }, { | ||
| 246 | "path": "feeBillDetail", | ||
| 247 | "style": { | ||
| 248 | "navigationBarTitleText": "缴费单详情", | ||
| 249 | "enablePullDownRefresh": false | ||
| 250 | } | ||
| 251 | }, { | ||
| 252 | "path": "mobilize", | ||
| 253 | "style": { | ||
| 254 | "navigationBarTitleText": "会员调动", | ||
| 255 | "enablePullDownRefresh": false | ||
| 256 | } | ||
| 257 | }, { | ||
| 258 | "path": "mobilizeDetail", | ||
| 259 | "style": { | ||
| 260 | "navigationBarTitleText": "会员调动详情", | ||
| 261 | "enablePullDownRefresh": false | ||
| 262 | } | ||
| 263 | }, { | ||
| 264 | "path": "addMobilize", | ||
| 265 | "style": { | ||
| 266 | "navigationBarTitleText": "新建调动", | ||
| 267 | "enablePullDownRefresh": false | ||
| 268 | } | ||
| 269 | }, { | ||
| 270 | "path": "sheng/merge", | ||
| 271 | "style": { | ||
| 272 | "navigationBarTitleText": "合并", | ||
| 273 | "enablePullDownRefresh": false | ||
| 274 | } | ||
| 275 | }, { | ||
| 276 | "path": "sheng/mergeUp", | ||
| 277 | "style": { | ||
| 278 | "navigationBarTitleText": "提交", | ||
| 279 | "enablePullDownRefresh": false | ||
| 280 | } | ||
| 281 | }, { | ||
| 282 | "path": "sheng/mergeUpDetail", | ||
| 283 | "style": { | ||
| 284 | "navigationBarTitleText": "提交详情", | ||
| 285 | "enablePullDownRefresh": false | ||
| 286 | } | ||
| 287 | }, { | ||
| 288 | "path": "payPersonList", | ||
| 289 | "style": { | ||
| 290 | "navigationBarTitleText": "会员缴费人员列表", | ||
| 291 | "enablePullDownRefresh": false | ||
| 292 | } | ||
| 293 | }, | ||
| 704 | { | 294 | { |
| 705 | "navigationBarTitleText" : "会员认证", | 295 | "path": "changeVip", |
| 706 | "enablePullDownRefresh" : false | 296 | "style": { |
| 707 | } | 297 | "navigationBarTitleText": "会员信息变更", |
| 708 | }, | 298 | "enablePullDownRefresh": false |
| 709 | { | 299 | } |
| 710 | "path" : "safe", | 300 | }, |
| 711 | "style" : | ||
| 712 | { | 301 | { |
| 713 | "navigationBarTitleText" : "账号与安全", | 302 | "path": "addChange", |
| 714 | "enablePullDownRefresh" : false | 303 | "style": { |
| 715 | } | 304 | "navigationBarTitleText": "新增变更", |
| 716 | }, | 305 | "enablePullDownRefresh": false |
| 717 | { | 306 | } |
| 718 | "path" : "reviewList", | 307 | }, |
| 719 | "style" : | ||
| 720 | { | 308 | { |
| 721 | "navigationBarTitleText" : "审核详情", | 309 | "path": "changeVipDetail", |
| 722 | "enablePullDownRefresh" : false | 310 | "style": { |
| 723 | } | 311 | "navigationBarTitleText": "详情", |
| 724 | }, | 312 | "enablePullDownRefresh": false |
| 725 | { | 313 | } |
| 726 | "path" : "perfect", | 314 | }, |
| 727 | "style" : | ||
| 728 | { | 315 | { |
| 729 | "navigationBarTitleText" : "团体会员缴费", | 316 | "path": "changeVipAudit", |
| 730 | "enablePullDownRefresh" : false | 317 | "style": { |
| 731 | } | 318 | "navigationBarTitleText": "会员信息变更审核", |
| 732 | }, | 319 | "enablePullDownRefresh": false |
| 733 | { | 320 | } |
| 734 | "path" : "goPay", | 321 | }, |
| 735 | "style" : | ||
| 736 | { | 322 | { |
| 737 | "navigationBarTitleText" : "付款详情", | 323 | "path": "changeLevel", |
| 738 | "enablePullDownRefresh" : false | 324 | "style": { |
| 739 | } | 325 | "navigationBarTitleText": "级位变更审核", |
| 740 | }, | 326 | "enablePullDownRefresh": false |
| 741 | { | 327 | } |
| 742 | "path" : "examPointApply", | 328 | }, |
| 743 | "style" : | 329 | { |
| 330 | "path": "addChangeLevel", | ||
| 331 | "style": { | ||
| 332 | "navigationBarTitleText": "新建级位变更", | ||
| 333 | "enablePullDownRefresh": false | ||
| 334 | } | ||
| 335 | }, | ||
| 336 | { | ||
| 337 | "path": "changeLevelDetail", | ||
| 338 | "style": { | ||
| 339 | "navigationBarTitleText": "级位变更详情", | ||
| 340 | "enablePullDownRefresh": false | ||
| 341 | } | ||
| 342 | }, | ||
| 343 | { | ||
| 344 | "path": "changeLevelAudit", | ||
| 345 | "style": { | ||
| 346 | "navigationBarTitleText": "级位变更审批", | ||
| 347 | "enablePullDownRefresh": false | ||
| 348 | } | ||
| 349 | }, | ||
| 350 | { | ||
| 351 | "path": "changeVipChoseList", | ||
| 352 | "style": { | ||
| 353 | "navigationBarTitleText": "在线选择", | ||
| 354 | "enablePullDownRefresh": false | ||
| 355 | } | ||
| 356 | }, | ||
| 357 | { | ||
| 358 | "path": "mergeVip", | ||
| 359 | "style": { | ||
| 360 | "navigationBarTitleText": "信息合并", | ||
| 361 | "enablePullDownRefresh": false | ||
| 362 | } | ||
| 363 | }, | ||
| 364 | { | ||
| 365 | "path": "addMerge", | ||
| 366 | "style": { | ||
| 367 | "navigationBarTitleText": "新建信息合并", | ||
| 368 | "enablePullDownRefresh": false | ||
| 369 | } | ||
| 370 | }, | ||
| 371 | { | ||
| 372 | "path": "mergeVipDetail", | ||
| 373 | "style": { | ||
| 374 | "navigationBarTitleText": "合并信息详情", | ||
| 375 | "enablePullDownRefresh": false | ||
| 376 | } | ||
| 377 | }, | ||
| 378 | { | ||
| 379 | "path": "mergeVipChoseList", | ||
| 380 | "style": { | ||
| 381 | "navigationBarTitleText": "在线选择", | ||
| 382 | "enablePullDownRefresh": false | ||
| 383 | } | ||
| 384 | }, | ||
| 744 | { | 385 | { |
| 745 | "navigationBarTitleText" : "申请考点", | 386 | "path": "mergeVipAudit", |
| 746 | "enablePullDownRefresh" : false | 387 | "style": { |
| 388 | "navigationBarTitleText": "合并审核", | ||
| 389 | "enablePullDownRefresh": false | ||
| 390 | } | ||
| 391 | }, | ||
| 392 | { | ||
| 393 | "path": "monthFee", | ||
| 394 | "style": { | ||
| 395 | "navigationBarTitleText": "月结缴费", | ||
| 396 | "enablePullDownRefresh": false | ||
| 397 | } | ||
| 398 | }, | ||
| 399 | { | ||
| 400 | "path": "webview/webview", | ||
| 401 | "style": { | ||
| 402 | "navigationBarTitleText": "下载", | ||
| 403 | "enablePullDownRefresh": false | ||
| 404 | } | ||
| 405 | }, | ||
| 406 | { | ||
| 407 | "path": "monthFeeDetail", | ||
| 408 | "style": { | ||
| 409 | "navigationBarTitleText": "月结详情", | ||
| 410 | "enablePullDownRefresh": false | ||
| 411 | } | ||
| 747 | } | 412 | } |
| 748 | }, | 413 | ] |
| 749 | { | 414 | }, { |
| 750 | "path" : "chooseExaminer", | 415 | "root": "group", |
| 751 | "style" : | 416 | "pages": [{ |
| 417 | "path": "addGroupMemberPay", | ||
| 418 | "style": { | ||
| 419 | "navigationBarTitleText": "添加缴费", | ||
| 420 | "enablePullDownRefresh": false | ||
| 421 | } | ||
| 422 | |||
| 423 | }, { | ||
| 424 | "path": "apply/mergeUpDetail", | ||
| 425 | "style": { | ||
| 426 | "navigationBarTitleText": "缴费详情", | ||
| 427 | "enablePullDownRefresh": false | ||
| 428 | } | ||
| 429 | |||
| 430 | }, { | ||
| 431 | "path": "pay", | ||
| 432 | "style": { | ||
| 433 | "navigationBarTitleText": "团队会员认证", | ||
| 434 | "enablePullDownRefresh": false | ||
| 435 | } | ||
| 436 | }, { | ||
| 437 | "path": "payDetail", | ||
| 438 | "style": { | ||
| 439 | "navigationBarTitleText": "认证详情", | ||
| 440 | "enablePullDownRefresh": false | ||
| 441 | } | ||
| 442 | }, { | ||
| 443 | "path": "apply/merge", | ||
| 444 | "style": { | ||
| 445 | "navigationBarTitleText": "合并", | ||
| 446 | "enablePullDownRefresh": false | ||
| 447 | } | ||
| 448 | |||
| 449 | }, { | ||
| 450 | "path": "apply/mergeUp", | ||
| 451 | "style": { | ||
| 452 | "navigationBarTitleText": "提交", | ||
| 453 | "enablePullDownRefresh": false | ||
| 454 | } | ||
| 455 | |||
| 456 | }, { | ||
| 457 | "path": "apply/applyDetail", | ||
| 458 | "style": { | ||
| 459 | "navigationBarTitleText": "团体会员审核详情", | ||
| 460 | "enablePullDownRefresh": false | ||
| 461 | } | ||
| 462 | |||
| 463 | }, { | ||
| 464 | "path": "apply/record", | ||
| 465 | "style": { | ||
| 466 | "navigationBarTitleText": "审核记录", | ||
| 467 | "enablePullDownRefresh": false | ||
| 468 | } | ||
| 469 | |||
| 470 | }, { | ||
| 471 | "path": "list", | ||
| 472 | "style": { | ||
| 473 | "navigationBarTitleText": "团体会员", | ||
| 474 | "enablePullDownRefresh": false | ||
| 475 | } | ||
| 476 | |||
| 477 | }, { | ||
| 478 | "path": "detail", | ||
| 479 | "style": { | ||
| 480 | "navigationBarTitleText": "机构会员", | ||
| 481 | "enablePullDownRefresh": false | ||
| 482 | } | ||
| 483 | |||
| 484 | }, { | ||
| 485 | "path": "feeBill", | ||
| 486 | "style": { | ||
| 487 | "navigationBarTitleText": "团体会员缴费单", | ||
| 488 | "enablePullDownRefresh": false | ||
| 489 | } | ||
| 490 | }, { | ||
| 491 | "path": "feeBillDetail", | ||
| 492 | "style": { | ||
| 493 | "navigationBarTitleText": "缴费单详情", | ||
| 494 | "enablePullDownRefresh": false | ||
| 495 | } | ||
| 496 | |||
| 497 | }, { | ||
| 498 | "path": "apply/applyList", | ||
| 499 | "style": { | ||
| 500 | "navigationBarTitleText": "团体会员审核", | ||
| 501 | "enablePullDownRefresh": false | ||
| 502 | } | ||
| 503 | |||
| 504 | }, { | ||
| 505 | "path": "vipList", | ||
| 506 | "style": { | ||
| 507 | "navigationBarTitleText": "会员列表", | ||
| 508 | "enablePullDownRefresh": false | ||
| 509 | } | ||
| 510 | }, | ||
| 511 | { | ||
| 512 | "path": "changeGroupInfo", | ||
| 513 | "style": { | ||
| 514 | "navigationBarTitleText": "团体会员信息修改", | ||
| 515 | "enablePullDownRefresh": false | ||
| 516 | } | ||
| 517 | }, | ||
| 518 | { | ||
| 519 | "path": "changeGroupAudit", | ||
| 520 | "style": { | ||
| 521 | "navigationBarTitleText": "团体信息变更审核", | ||
| 522 | "enablePullDownRefresh": false | ||
| 523 | } | ||
| 524 | }, | ||
| 752 | { | 525 | { |
| 753 | "navigationBarTitleText" : "选择考官", | 526 | "path": "changeGroupDetail", |
| 754 | "enablePullDownRefresh" : false | 527 | "style": { |
| 528 | "navigationBarTitleText": "团体信息变更详情", | ||
| 529 | "enablePullDownRefresh": false | ||
| 530 | } | ||
| 531 | }, | ||
| 532 | { | ||
| 533 | "path": "newChange", | ||
| 534 | "style": { | ||
| 535 | "navigationBarTitleText": "新建团体信息变更", | ||
| 536 | "enablePullDownRefresh": false | ||
| 537 | } | ||
| 538 | }, | ||
| 539 | { | ||
| 540 | "path": "groupInfo", | ||
| 541 | "style": { | ||
| 542 | "navigationBarTitleText": "机构资料", | ||
| 543 | "enablePullDownRefresh": false | ||
| 544 | } | ||
| 545 | }, | ||
| 546 | { | ||
| 547 | "path": "changeGroupChoseList", | ||
| 548 | "style": { | ||
| 549 | "navigationBarTitleText": "在线选择", | ||
| 550 | "enablePullDownRefresh": false | ||
| 551 | } | ||
| 755 | } | 552 | } |
| 756 | }, | 553 | ] |
| 757 | { | 554 | }, { |
| 758 | "path" : "sucPay", | 555 | "root": "level", |
| 759 | "style" : | 556 | "pages": [{ |
| 557 | "path": "ztx/examList", | ||
| 558 | "style": { | ||
| 559 | "navigationBarTitleText": "级位考试详情", | ||
| 560 | "enablePullDownRefresh": false | ||
| 561 | } | ||
| 562 | |||
| 563 | }, { | ||
| 564 | "path": "ztx/studentList", | ||
| 565 | "style": { | ||
| 566 | "navigationBarTitleText": "考生列表", | ||
| 567 | "enablePullDownRefresh": false | ||
| 568 | } | ||
| 569 | |||
| 570 | }, { | ||
| 571 | "path": "payment", | ||
| 572 | "style": { | ||
| 573 | "navigationBarTitleText": "级位考试缴费单", | ||
| 574 | "enablePullDownRefresh": false | ||
| 575 | } | ||
| 576 | |||
| 577 | }, { | ||
| 578 | "path": "apply", | ||
| 579 | "style": { | ||
| 580 | "navigationBarTitleText": "级位考试申请", | ||
| 581 | "enablePullDownRefresh": false | ||
| 582 | } | ||
| 583 | |||
| 584 | }, { | ||
| 585 | "path": "applyDetail", | ||
| 586 | "style": { | ||
| 587 | "navigationBarTitleText": "级位考试详情", | ||
| 588 | "enablePullDownRefresh": false | ||
| 589 | } | ||
| 590 | |||
| 591 | }, { | ||
| 592 | "path": "addApply", | ||
| 593 | "style": { | ||
| 594 | "navigationBarTitleText": "编辑级位考试", | ||
| 595 | "enablePullDownRefresh": false | ||
| 596 | } | ||
| 597 | |||
| 598 | }, { | ||
| 599 | "path": "chooseExaminer", | ||
| 600 | "style": { | ||
| 601 | "navigationBarTitleText": "选择考官", | ||
| 602 | "enablePullDownRefresh": false | ||
| 603 | } | ||
| 604 | |||
| 605 | }, { | ||
| 606 | "path": "merge", | ||
| 607 | "style": { | ||
| 608 | "navigationBarTitleText": "合并", | ||
| 609 | "enablePullDownRefresh": false | ||
| 610 | } | ||
| 611 | |||
| 612 | }, { | ||
| 613 | "path": "mergeUp", | ||
| 614 | "style": { | ||
| 615 | "navigationBarTitleText": "提交", | ||
| 616 | "enablePullDownRefresh": false | ||
| 617 | } | ||
| 618 | |||
| 619 | }, { | ||
| 620 | "path": "mergeUpDetail", | ||
| 621 | "style": { | ||
| 622 | "navigationBarTitleText": "考试详情", | ||
| 623 | "enablePullDownRefresh": false | ||
| 624 | } | ||
| 625 | |||
| 626 | }, { | ||
| 627 | "path": "approval", | ||
| 628 | "style": { | ||
| 629 | "navigationBarTitleText": "级位考试审批", | ||
| 630 | "enablePullDownRefresh": false | ||
| 631 | } | ||
| 632 | |||
| 633 | }, { | ||
| 634 | "path": "ztx/approval", | ||
| 635 | "style": { | ||
| 636 | "navigationBarTitleText": "级位考试审批", | ||
| 637 | "enablePullDownRefresh": false | ||
| 638 | } | ||
| 639 | |||
| 640 | }, { | ||
| 641 | "path": "ztx/cert", | ||
| 642 | "style": { | ||
| 643 | "navigationBarTitleText": "证书发布", | ||
| 644 | "enablePullDownRefresh": false | ||
| 645 | } | ||
| 646 | |||
| 647 | }, | ||
| 760 | { | 648 | { |
| 761 | "navigationBarTitleText" : "支付成功", | 649 | "path": "examStudentList", |
| 762 | "enablePullDownRefresh" : false | 650 | "style": { |
| 651 | "navigationBarTitleText": "考生信息", | ||
| 652 | "enablePullDownRefresh": false | ||
| 653 | } | ||
| 763 | } | 654 | } |
| 764 | }, | 655 | ] |
| 765 | { | 656 | }, { |
| 766 | "path" : "payOrder", | 657 | "root": "myCenter", |
| 767 | "style" : | 658 | "pages": [{ |
| 659 | "path": "index", | ||
| 660 | "style": { | ||
| 661 | "navigationBarTitleText": "个人中心", | ||
| 662 | "enablePullDownRefresh": false | ||
| 663 | } | ||
| 664 | }, | ||
| 665 | { | ||
| 666 | "path": "teamInfo", | ||
| 667 | "style": { | ||
| 668 | "navigationBarTitleText": "团体信息", | ||
| 669 | "enablePullDownRefresh": false | ||
| 670 | } | ||
| 671 | }, | ||
| 672 | { | ||
| 673 | "path": "auth", | ||
| 674 | "style": { | ||
| 675 | "navigationBarTitleText": "会员认证", | ||
| 676 | "enablePullDownRefresh": false | ||
| 677 | } | ||
| 678 | }, | ||
| 768 | { | 679 | { |
| 769 | "navigationBarTitleText" : "支付详情", | 680 | "path": "safe", |
| 770 | "enablePullDownRefresh" : false | 681 | "style": { |
| 682 | "navigationBarTitleText": "账号与安全", | ||
| 683 | "enablePullDownRefresh": false | ||
| 684 | } | ||
| 685 | }, | ||
| 686 | { | ||
| 687 | "path": "reviewList", | ||
| 688 | "style": { | ||
| 689 | "navigationBarTitleText": "审核详情", | ||
| 690 | "enablePullDownRefresh": false | ||
| 691 | } | ||
| 692 | }, | ||
| 693 | { | ||
| 694 | "path": "perfect", | ||
| 695 | "style": { | ||
| 696 | "navigationBarTitleText": "团体会员缴费", | ||
| 697 | "enablePullDownRefresh": false | ||
| 698 | } | ||
| 699 | }, | ||
| 700 | { | ||
| 701 | "path": "goPay", | ||
| 702 | "style": { | ||
| 703 | "navigationBarTitleText": "付款详情", | ||
| 704 | "enablePullDownRefresh": false | ||
| 705 | } | ||
| 706 | }, | ||
| 707 | { | ||
| 708 | "path": "examPointApply", | ||
| 709 | "style": { | ||
| 710 | "navigationBarTitleText": "申请考点", | ||
| 711 | "enablePullDownRefresh": false | ||
| 712 | } | ||
| 713 | }, | ||
| 714 | { | ||
| 715 | "path": "chooseExaminer", | ||
| 716 | "style": { | ||
| 717 | "navigationBarTitleText": "选择考官", | ||
| 718 | "enablePullDownRefresh": false | ||
| 719 | } | ||
| 720 | }, | ||
| 721 | { | ||
| 722 | "path": "sucPay", | ||
| 723 | "style": { | ||
| 724 | "navigationBarTitleText": "支付成功", | ||
| 725 | "enablePullDownRefresh": false | ||
| 726 | } | ||
| 727 | }, | ||
| 728 | { | ||
| 729 | "path": "payOrder", | ||
| 730 | "style": { | ||
| 731 | "navigationBarTitleText": "支付详情", | ||
| 732 | "enablePullDownRefresh": false | ||
| 733 | } | ||
| 771 | } | 734 | } |
| 772 | } | 735 | ] |
| 773 | ] | 736 | } |
| 774 | }], | 737 | ], |
| 775 | "preloadRule": { | 738 | "preloadRule": { |
| 776 | "pages/index/index": { | 739 | "pages/index/index": { |
| 777 | "network": "all", | 740 | "network": "all", |
| 778 | "packages": ["login","personalVip", "group","level","myCenter","personal"] | 741 | "packages": ["login", "personalVip", "group", "level", "myCenter", "personal"] |
| 779 | } | 742 | } |
| 780 | } | 743 | } |
| 781 | } | 744 | } |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
pages/index/home.vue
0 → 100644
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
| 1 | <template> | 1 | <template> |
| 2 | <view class="mainbox"> | 2 | <view class="mainbox"> |
| 3 | <view class="title">{{form.name}}</view> | 3 | <view class="title">{{form.name}}</view> |
| 4 | <view class="infos"> | 4 | <view class="infos"> |
| 5 | <text>{{ form.source }}</text> | 5 | <text>{{ form.source }}</text> |
| 6 | <text>{{ form.belongTime }}</text> | 6 | <text>{{ form.belongTime }}</text> |
| 7 | </view> | 7 | </view> |
| 8 | <view class="content"> | 8 | <view class="content"> |
| 9 | 9 | ||
| 10 | <view v-html="form.content"></view> | 10 | <view v-html="form.content"></view> |
| 11 | 11 | ||
| 12 | <view v-if="attachmentMp4.length>0"> | 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> | 13 | <video v-for="(f,index) in attachmentMp4" :key="index" controls |
| 14 | </view> | 14 | :src="config.baseUrl_api + f.url"></video> |
| 15 | <view v-if="attachmentFile.length>0" class="mt20"> | 15 | </view> |
| 16 | <!-- 附件--> | 16 | <view v-if="attachmentFile.length>0" class="mt20"> |
| 17 | <view class="fwb mt20">附件下载:</view> | 17 | <!-- 附件--> |
| 18 | <view v-for="(f,index) in attachmentFile" :key="index" class="text-primary underLine" | 18 | <view class="fwb mt20">附件下载:</view> |
| 19 | @click="downLoad(f.url)"> | 19 | <view v-for="(f,index) in attachmentFile" :key="index" class="text-primary underLine" |
| 20 | {{ index + 1 }}、{{ f.name }} | 20 | @click="downLoad(f.url)"> |
| 21 | </view> | 21 | {{ index + 1 }}、{{ f.name }} |
| 22 | 22 | </view> | |
| 23 | </view> | 23 | |
| 24 | <view> | 24 | </view> |
| 25 | <text v-if=" form.author">发布人:{{ form.author }}</text> | 25 | <view> |
| 26 | </view> | 26 | <text v-if=" form.author">发布人:{{ form.author }}</text> |
| 27 | </view> | 27 | </view> |
| 28 | </view> | 28 | </view> |
| 29 | </template> | 29 | </view> |
| 30 | 30 | </template> | |
| 31 | <script setup> | 31 | |
| 32 | import { | 32 | <script setup> |
| 33 | ref | 33 | import { |
| 34 | } from 'vue' | 34 | ref |
| 35 | import * as api from '@/common/api.js'; | 35 | } from 'vue' |
| 36 | import { | 36 | import * as api from '@/common/api.js'; |
| 37 | onLoad | 37 | import { |
| 38 | } from '@dcloudio/uni-app'; | 38 | onLoad |
| 39 | import _ from 'underscore' | 39 | } from '@dcloudio/uni-app'; |
| 40 | import config from '@/config.js' | 40 | import _ from 'underscore' |
| 41 | const form = ref({}) | 41 | import config from '@/config.js' |
| 42 | const attachmentFile = ref([]) | 42 | const form = ref({}) |
| 43 | const attachmentMp4 = ref([]) | 43 | const attachmentFile = ref([]) |
| 44 | 44 | const attachmentMp4 = ref([]) | |
| 45 | onLoad((option) => { | 45 | |
| 46 | getData(option.noteId) | 46 | onLoad((option) => { |
| 47 | }) | 47 | getData(option.noteId) |
| 48 | 48 | }) | |
| 49 | function getData(noteId) { | 49 | |
| 50 | api.getNewsById(noteId).then(res => { | 50 | function getData(noteId) { |
| 51 | form.value = res.data | 51 | api.getNewsById(noteId).then(res => { |
| 52 | var html = res.data.content.replace(/<img([\s\w"-=\/\.:;]+)((?:(height="[^"]+")))/ig, '<img$1') | 52 | form.value = res.data |
| 53 | .replace(/<img([\s\w"-=\/\.:;]+)((?:(width="[^"]+")))/ig, '<img$1') | 53 | var html = res.data.content.replace(/<img([\s\w"-=\/\.:;]+)((?:(height="[^"]+")))/ig, '<img$1') |
| 54 | .replace(/<img([\s\w"-=\/\.:;]+)((?:(style="[^"]+")))/ig, '<img$1') | 54 | .replace(/<img([\s\w"-=\/\.:;]+)((?:(width="[^"]+")))/ig, '<img$1') |
| 55 | .replace(/<img([\s\w"-=\/\.:;]+)((?:(alt="[^"]+")))/ig, '<img$1') | 55 | .replace(/<img([\s\w"-=\/\.:;]+)((?:(style="[^"]+")))/ig, '<img$1') |
| 56 | .replace(/<img([\s\w"-=\/\.:;]+)/ig, '<img style="width: 100%;" $1'); | 56 | .replace(/<img([\s\w"-=\/\.:;]+)((?:(alt="[^"]+")))/ig, '<img$1') |
| 57 | 57 | .replace(/<img([\s\w"-=\/\.:;]+)/ig, '<img style="width: 100%;" $1'); | |
| 58 | 58 | ||
| 59 | if (form.value.attacthJson) { | 59 | |
| 60 | const attachment = JSON.parse(form.value.attacthJson) | 60 | if (form.value.attacthJson) { |
| 61 | attachmentFile.value = _.filter(attachment, (a) => a.url.toLowerCase().indexOf('.mp4') === -1) || [] | 61 | const attachment = JSON.parse(form.value.attacthJson) |
| 62 | attachmentMp4.value = _.filter(attachment, (a) => a.url.toLowerCase().indexOf('.mp4') !== -1) || [] | 62 | attachmentFile.value = _.filter(attachment, (a) => a.url.toLowerCase().indexOf('.mp4') === -1) || |
| 63 | } | 63 | [] |
| 64 | }) | 64 | attachmentMp4.value = _.filter(attachment, (a) => a.url.toLowerCase().indexOf('.mp4') !== -1) || [] |
| 65 | } | 65 | } |
| 66 | function downLoad(url){ | 66 | }) |
| 67 | console.log(url) | 67 | } |
| 68 | var str = config.baseUrl_api + url | 68 | |
| 69 | if (url.indexOf('png') > -1 ||url.indexOf('jpg') > -1 ||url.indexOf('jpeg') > -1) { | 69 | function downLoad(url) { |
| 70 | uni.previewImage({ | 70 | console.log(url) |
| 71 | urls: [str], | 71 | var str = config.baseUrl_api + url |
| 72 | success: function(res) { | 72 | if (url.indexOf('png') > -1 || url.indexOf('jpg') > -1 || url.indexOf('jpeg') > -1) { |
| 73 | console.log('success', res) | 73 | uni.previewImage({ |
| 74 | }, | 74 | urls: [str], |
| 75 | fail: function(res) { | 75 | success: function(res) { |
| 76 | console.log('fail', res) | 76 | console.log('success', res) |
| 77 | }, | 77 | }, |
| 78 | complete: function(res) { | 78 | fail: function(res) { |
| 79 | console.log('complete', res) | 79 | console.log('fail', res) |
| 80 | } | 80 | }, |
| 81 | }) | 81 | complete: function(res) { |
| 82 | } else { | 82 | console.log('complete', res) |
| 83 | goWebView(str) | 83 | } |
| 84 | } | 84 | }) |
| 85 | } | 85 | } else { |
| 86 | function goWebView(url) { | 86 | goWebView(str) |
| 87 | url = url.replace("http://", "https://") | 87 | } |
| 88 | uni.showLoading({ | 88 | } |
| 89 | title: '下载中' | 89 | |
| 90 | }); | 90 | function goWebView(url) { |
| 91 | uni.downloadFile({ | 91 | url = url.replace("http://", "https://") |
| 92 | url: url, | 92 | uni.showLoading({ |
| 93 | success: function(res) { | 93 | title: '下载中' |
| 94 | console.log('111') | 94 | }); |
| 95 | uni.hideLoading(); | 95 | uni.downloadFile({ |
| 96 | var filePath = res.tempFilePath; | 96 | url: url, |
| 97 | uni.showLoading({ | 97 | success: function(res) { |
| 98 | title: '正在打开' | 98 | uni.hideLoading(); |
| 99 | }); | 99 | var filePath = res.tempFilePath; |
| 100 | uni.openDocument({ | 100 | uni.showLoading({ |
| 101 | filePath: filePath, | 101 | title: '正在打开' |
| 102 | showMenu: true, | 102 | }); |
| 103 | success: function(res) { | 103 | uni.openDocument({ |
| 104 | console.log('222') | 104 | filePath: filePath, |
| 105 | uni.hideLoading(); | 105 | showMenu: true, |
| 106 | }, | 106 | success: function(res) { |
| 107 | fail: function(err) { | 107 | uni.hideLoading(); |
| 108 | console.log(err.errMsg) | 108 | }, |
| 109 | uni.hideLoading(); | 109 | fail: function(err) { |
| 110 | let msg | 110 | console.log(err.errMsg) |
| 111 | if(err.errMsg.indexOf('not supported')>-1){ | 111 | uni.hideLoading(); |
| 112 | msg = '不支持该文件类型' | 112 | let msg |
| 113 | } else { | 113 | if (err.errMsg.indexOf('not supported') > -1) { |
| 114 | msg = err.errMsg | 114 | msg = '不支持该文件类型' |
| 115 | } | 115 | } else { |
| 116 | uni.showToast({ | 116 | msg = err.errMsg |
| 117 | title: msg, | 117 | } |
| 118 | icon: 'none', | 118 | uni.showToast({ |
| 119 | duration: 2000 | 119 | title: msg, |
| 120 | }); | 120 | icon: 'none', |
| 121 | } | 121 | duration: 2000 |
| 122 | }); | 122 | }); |
| 123 | }, | 123 | } |
| 124 | fail: function(error) { | 124 | }); |
| 125 | uni.hideLoading(); | 125 | }, |
| 126 | uni.showToast({ | 126 | fail: function(error) { |
| 127 | title: `下载失败`, | 127 | uni.hideLoading(); |
| 128 | icon: 'none', | 128 | uni.showToast({ |
| 129 | duration: 2000 | 129 | title: `下载失败`, |
| 130 | }); | 130 | icon: 'none', |
| 131 | } | 131 | duration: 2000 |
| 132 | }); | 132 | }); |
| 133 | } | 133 | } |
| 134 | </script> | 134 | }); |
| 135 | 135 | } | |
| 136 | <style scoped lang="scss"> | 136 | </script> |
| 137 | .mainbox { | 137 | |
| 138 | box-sizing: border-box; | 138 | <style scoped lang="scss"> |
| 139 | padding: 50rpx 25rpx 160rpx; | 139 | .mainbox { |
| 140 | background: #fff; | 140 | box-sizing: border-box; |
| 141 | min-height: 100vh; | 141 | padding: 50rpx 25rpx 160rpx; |
| 142 | } | 142 | background: #fff; |
| 143 | .title { | 143 | min-height: 100vh; |
| 144 | font-size: 36rpx; | 144 | } |
| 145 | font-weight: 500; | 145 | |
| 146 | color: #29343C; | 146 | .title { |
| 147 | margin-bottom: 34rpx; | 147 | font-size: 36rpx; |
| 148 | } | 148 | font-weight: 500; |
| 149 | 149 | color: #29343C; | |
| 150 | .infos { | 150 | margin-bottom: 34rpx; |
| 151 | border-bottom: 1px solid #DCDCDC; | 151 | } |
| 152 | padding-bottom: 40rpx; | 152 | |
| 153 | overflow: hidden; | 153 | .infos { |
| 154 | } | 154 | border-bottom: 1px solid #DCDCDC; |
| 155 | 155 | padding-bottom: 40rpx; | |
| 156 | .infos>text { | 156 | overflow: hidden; |
| 157 | margin-right: 18rpx; | 157 | } |
| 158 | color: #7B7F83; | 158 | |
| 159 | font-size: 22rpx; | 159 | .infos>text { |
| 160 | } | 160 | margin-right: 18rpx; |
| 161 | .content { | 161 | color: #7B7F83; |
| 162 | line-height: 1.6; | 162 | font-size: 22rpx; |
| 163 | color: #4C5359; | 163 | } |
| 164 | font-size: 30rpx; | 164 | |
| 165 | padding-top: 40rpx; | 165 | .content { |
| 166 | width: 100%; | 166 | line-height: 1.6; |
| 167 | word-wrap: break-word !important; | 167 | color: #4C5359; |
| 168 | white-space: normal !important; | 168 | font-size: 30rpx; |
| 169 | } | 169 | padding-top: 40rpx; |
| 170 | 170 | width: 100%; | |
| 171 | .content rich-text { | 171 | word-wrap: break-word !important; |
| 172 | word-wrap: break-word !important; | 172 | white-space: normal !important; |
| 173 | white-space: normal !important; | 173 | } |
| 174 | } | 174 | |
| 175 | 175 | .content rich-text { | |
| 176 | .content span, | 176 | word-wrap: break-word !important; |
| 177 | .content p { | 177 | white-space: normal !important; |
| 178 | word-wrap: break-word !important; | 178 | } |
| 179 | white-space: normal !important; | 179 | |
| 180 | } | 180 | .content span, |
| 181 | .content rich-text img{max-width: 100%;} | 181 | .content p { |
| 182 | 182 | word-wrap: break-word !important; | |
| 183 | image { | 183 | white-space: normal !important; |
| 184 | max-width: 100%; | 184 | } |
| 185 | } | 185 | |
| 186 | 186 | .content rich-text img { | |
| 187 | audio { | 187 | max-width: 100%; |
| 188 | width: 100%; | 188 | } |
| 189 | } | 189 | |
| 190 | 190 | image { | |
| 191 | video { | 191 | max-width: 100%; |
| 192 | width: 100%; | 192 | } |
| 193 | } | 193 | |
| 194 | audio { | ||
| 195 | width: 100%; | ||
| 196 | } | ||
| 197 | |||
| 198 | video { | ||
| 199 | width: 100%; | ||
| 200 | } | ||
| 194 | </style> | 201 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -138,10 +138,10 @@ | ... | @@ -138,10 +138,10 @@ |
| 138 | if (orderErr) { | 138 | if (orderErr) { |
| 139 | uni.hideLoading() | 139 | uni.hideLoading() |
| 140 | isPaying.value = false | 140 | isPaying.value = false |
| 141 | uni.showToast({ | 141 | // uni.showToast({ |
| 142 | title: '创建订单失败', | 142 | // title: '创建订单失败', |
| 143 | icon: 'none' | 143 | // icon: 'none' |
| 144 | }) | 144 | // }) |
| 145 | return | 145 | return |
| 146 | } | 146 | } |
| 147 | 147 | ||
| ... | @@ -161,7 +161,7 @@ | ... | @@ -161,7 +161,7 @@ |
| 161 | isPaying.value = false | 161 | isPaying.value = false |
| 162 | 162 | ||
| 163 | // 支付成功,跳转页面 | 163 | // 支付成功,跳转页面 |
| 164 | uni.navigateTo({ | 164 | uni.redirectTo({ |
| 165 | url: `/personal/sucPay?orderId=${orderRes.data.orderId}` | 165 | url: `/personal/sucPay?orderId=${orderRes.data.orderId}` |
| 166 | }) | 166 | }) |
| 167 | } | 167 | } | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view class="page-container"> | 2 | <view class="page-container"> |
| 3 | <view class="top-section"> | 3 | <!-- 会员卡区域 --> |
| 4 | <!-- 用户信息 --> | 4 | <view class="member-card"> |
| 5 | <view class="user-info"> | 5 | <image class="card-bg" :src="config.baseUrl_api + '/fs/static/slices/user_01@2x.png'" mode="aspectFill"> |
| 6 | <view class="avatar"> | 6 | </image> |
| 7 | <view class="avatar-placeholder">📄</view> | 7 | |
| 8 | </view> | 8 | <!-- 绑定/解绑学员 --> |
| 9 | <view class="user-desc">注册会员8709745760778985472</view> | 9 | <view v-if="!isBound" class="bind-student" @click="handleBindAction"> |
| 10 | </view> | 10 | <text>{{ isBound ? '解绑' : '绑定学员' }}</text> |
| 11 | 11 | <image class="arrow-icon" :src="config.baseUrl_api + '/fs/static/slices/bd@2x.png'" mode="aspectFit"> | |
| 12 | <!-- 会员卡片 --> | 12 | </image> |
| 13 | <view class="member-card"> | 13 | </view> |
| 14 | <view class="card-header"> | 14 | |
| 15 | <view class="card-name">江行知</view> | 15 | <!-- 用户信息 --> |
| 16 | <view class="bind-btn">绑定学员 ⇄</view> | 16 | <view class="user-section"> |
| 17 | </view> | 17 | <view class="user-top"> |
| 18 | <view class="card-id">证件号:360681201804040811</view> | 18 | <view class="avatar-wrap"> |
| 19 | 19 | <image class="avatar" :src="config.baseUrl_api + '/fs/static/slices/tx@2x.png'" | |
| 20 | <view class="card-func"> | 20 | mode="aspectFill"> |
| 21 | <view class="func-item" @click="goToInfo"> | 21 | </image> |
| 22 | <view class="func-icon">⿱</view> | 22 | </view> |
| 23 | <view class="func-text">人员信息</view> | 23 | <view class="member-id">{{ userInfo.userName }}</view> |
| 24 | </view> | 24 | </view> |
| 25 | <view class="func-item"> | 25 | <view class="user-bottom"> |
| 26 | <view class="func-icon">✓</view> | 26 | <view class="user-name">{{ perInfo?.perName }}</view> |
| 27 | <view class="func-text">参赛能力认证</view> | 27 | <view class="card-info"> |
| 28 | </view> | 28 | <view class="info-row">会员卡号:{{ perInfo?.perCode }}</view> |
| 29 | <view class="func-item"> | 29 | <view class="info-row">会员有效期:{{ perInfo?.perValidDate }}</view> |
| 30 | <view class="func-icon">🏆</view> | 30 | </view> |
| 31 | <view class="func-text">成绩查询</view> | 31 | </view> |
| 32 | </view> | 32 | </view> |
| 33 | <view class="func-item"> | 33 | |
| 34 | <view class="func-icon">↻</view> | 34 | <!-- 已过期印章 --> |
| 35 | <view class="func-text">参赛记录</view> | 35 | <image v-if="perInfo?.perValidDateFlag && perInfo?.perValidDateFlag!='1'" class="expired-stamp" |
| 36 | </view> | 36 | :src="config.baseUrl_api + '/fs/static/slices/end@2x.png'" mode="aspectFit"> |
| 37 | </view> | 37 | </image> |
| 38 | </view> | 38 | </view> |
| 39 | </view> | 39 | |
| 40 | 40 | <!-- 功能按钮卡片 --> | |
| 41 | <view class="bottom-section"> | 41 | <view class="func-card"> |
| 42 | <view class="info-title"> | 42 | <view class="func-list"> |
| 43 | <view class="title-line"></view> | 43 | <view class="func-item" @click="goToAuth"> |
| 44 | <text>人员信息</text> | 44 | <image class="func-icon" :src="config.baseUrl_api + '/fs/static/slices/btn01@2x.png'" |
| 45 | </view> | 45 | mode="aspectFit"> |
| 46 | 46 | </image> | |
| 47 | <view class="info-list"> | 47 | <text class="func-text">参赛能力认证</text> |
| 48 | <view class="info-item"> | 48 | </view> |
| 49 | <view class="item-label">姓名</view> | 49 | <view class="func-item" @click="goToScore"> |
| 50 | <view class="item-value">江行知</view> | 50 | <image class="func-icon" :src="config.baseUrl_api + '/fs/static/slices/btn02@2x.png'" |
| 51 | </view> | 51 | mode="aspectFit"> |
| 52 | <view class="info-item"> | 52 | </image> |
| 53 | <view class="item-label">国籍</view> | 53 | <text class="func-text">成绩查询</text> |
| 54 | <view class="item-value">中国</view> | 54 | </view> |
| 55 | </view> | 55 | <view class="func-item" @click="goToRecord"> |
| 56 | <view class="info-item"> | 56 | <image class="func-icon" :src="config.baseUrl_api + '/fs/static/slices/btn03@2x.png'" |
| 57 | <view class="item-label">证件类型</view> | 57 | mode="aspectFit"> |
| 58 | <view class="item-value">身份证</view> | 58 | </image> |
| 59 | </view> | 59 | <text class="func-text">参赛记录</text> |
| 60 | <view class="info-item"> | 60 | </view> |
| 61 | <view class="item-label">身份证号</view> | 61 | </view> |
| 62 | <view class="item-value">360681201804040811</view> | 62 | </view> |
| 63 | </view> | 63 | |
| 64 | <view class="info-item"> | 64 | <!-- 人员信息区域 --> |
| 65 | <view class="item-label">生日</view> | 65 | <view class="info-section"> |
| 66 | <view class="item-value">2018-04-04</view> | 66 | <view class="section-title"> |
| 67 | </view> | 67 | <view class="title-bar"></view> |
| 68 | </view> | 68 | <text class="title-text">人员信息</text> |
| 69 | </view> | 69 | </view> |
| 70 | </view> | 70 | <view class="info-card"> |
| 71 | </template> | 71 | <view class="info-item"> |
| 72 | 72 | <text class="item-label">姓名</text> | |
| 73 | <script setup> | 73 | <text class="item-value">{{ perInfo?.perName }}</text> |
| 74 | import { ref } from 'vue' | 74 | </view> |
| 75 | 75 | <view class="info-item"> | |
| 76 | const userInfo = ref({ | 76 | <text class="item-label">证件类型</text> |
| 77 | memberNo: '8709745760778985472', | 77 | <text class="item-value">{{ perInfo?.idcTypeStr }}</text> |
| 78 | name: '江行知', | 78 | </view> |
| 79 | idCard: '360681201804040811', | 79 | <view class="info-item"> |
| 80 | nationality: '中国', | 80 | <text class="item-label">身份证号</text> |
| 81 | idType: '身份证', | 81 | <text class="item-value">{{ perInfo?.perIdcCode }}</text> |
| 82 | birthday: '2018-04-04' | 82 | </view> |
| 83 | }) | 83 | <view class="info-item"> |
| 84 | 84 | <text class="item-label">生日</text> | |
| 85 | const goToInfo = () => { | 85 | <text class="item-value">{{ perInfo?.birth }}</text> |
| 86 | console.log('跳转到人员信息页') | 86 | </view> |
| 87 | } | 87 | </view> |
| 88 | </script> | 88 | </view> |
| 89 | 89 | ||
| 90 | <style lang="scss" scoped> | 90 | <!-- 退出登录按钮 --> |
| 91 | .page-container { | 91 | <view class="logout-section"> |
| 92 | min-height: 100vh; | 92 | <view class="logout-btn" @click="handleLogout">退出登录</view> |
| 93 | background: linear-gradient(180deg, #FFF9E8 0%, #FFFFFF 100%); | 93 | </view> |
| 94 | padding: 0 30rpx; | 94 | |
| 95 | box-sizing: border-box; | 95 | <!-- 绑定学员弹框 --> |
| 96 | } | 96 | <uni-popup ref="bindPopup" type="center" :mask-click="false"> |
| 97 | 97 | <view class="bind-popup"> | |
| 98 | .top-section { | 98 | <view class="popup-title">绑定学员</view> |
| 99 | padding-top: 40rpx; | 99 | <view class="popup-content"> |
| 100 | } | 100 | <view class="form-item"> |
| 101 | 101 | <view class="form-label">姓名</view> | |
| 102 | .header { | 102 | <view class="form-input"> |
| 103 | display: flex; | 103 | <input v-model="bindForm.name" placeholder="请输入姓名" placeholder-class="placeholder-class" /> |
| 104 | justify-content: space-between; | 104 | </view> |
| 105 | align-items: center; | 105 | </view> |
| 106 | margin-bottom: 40rpx; | 106 | <view class="form-item"> |
| 107 | } | 107 | <view class="form-label">证件号</view> |
| 108 | 108 | <view class="form-input"> | |
| 109 | .title { | 109 | <input v-model="bindForm.idcCode" placeholder="请输入证件号" |
| 110 | font-size: 36rpx; | 110 | placeholder-class="placeholder-class" /> |
| 111 | font-weight: 500; | 111 | </view> |
| 112 | color: #333; | 112 | </view> |
| 113 | margin: 0 auto; | 113 | </view> |
| 114 | position: absolute; | 114 | <view class="popup-btns"> |
| 115 | left: 50%; | 115 | <view class="popup-btn cancel" @click="closeBindPopup">取消</view> |
| 116 | transform: translateX(-50%); | 116 | <view class="popup-btn confirm" @click="confirmBind">确定</view> |
| 117 | } | 117 | </view> |
| 118 | 118 | </view> | |
| 119 | .more-btn { | 119 | </uni-popup> |
| 120 | display: flex; | 120 | </view> |
| 121 | align-items: center; | 121 | </template> |
| 122 | gap: 20rpx; | 122 | |
| 123 | margin-left: auto; | 123 | <script setup> |
| 124 | background: #FFFFFF; | 124 | import { |
| 125 | padding: 10rpx 20rpx; | 125 | computed, |
| 126 | border-radius: 40rpx; | 126 | onMounted, |
| 127 | } | 127 | ref, |
| 128 | 128 | watch, | |
| 129 | .dots { | 129 | nextTick |
| 130 | font-size: 32rpx; | 130 | } from "vue"; |
| 131 | color: #666; | 131 | import config from "/config.js"; |
| 132 | line-height: 1; | 132 | import { |
| 133 | } | 133 | wxLogin, |
| 134 | 134 | logout, | |
| 135 | .circle { | 135 | getWebInfo |
| 136 | width: 40rpx; | 136 | } from '@/common/login.js'; |
| 137 | height: 40rpx; | 137 | import { |
| 138 | border-radius: 50%; | 138 | useUserStore |
| 139 | border: 2rpx solid #666; | 139 | } from "../store/modules/user"; |
| 140 | position: relative; | 140 | import to from 'await-to-js' |
| 141 | &::after { | 141 | import { |
| 142 | content: ''; | 142 | bindUser, |
| 143 | position: absolute; | 143 | unbindUser |
| 144 | top: 50%; | 144 | } from '@/common/api.js' |
| 145 | left: 50%; | 145 | |
| 146 | transform: translate(-50%, -50%); | 146 | const userStore = useUserStore() |
| 147 | width: 16rpx; | 147 | const userInfo = computed(() => userStore.user) |
| 148 | height: 16rpx; | 148 | const perInfo = computed(() => userStore.perInfo) |
| 149 | border-radius: 50%; | 149 | |
| 150 | background: #666; | 150 | // 是否已绑定学员 |
| 151 | } | 151 | const isBound = computed(() => { |
| 152 | } | 152 | const perId = userInfo.value?.perId |
| 153 | 153 | return perId !== undefined && perId !== null && perId !== 0 | |
| 154 | .user-info { | 154 | }) |
| 155 | display: flex; | 155 | |
| 156 | align-items: center; | 156 | const bindPopup = ref(null) |
| 157 | gap: 30rpx; | 157 | const bindForm = ref({ |
| 158 | margin-bottom: 40rpx; | 158 | name: '', |
| 159 | } | 159 | idcCode: '' |
| 160 | 160 | }) | |
| 161 | .avatar { | 161 | |
| 162 | width: 120rpx; | 162 | onMounted(() => { |
| 163 | height: 120rpx; | 163 | let webUserName = uni.getStorageSync('webUserName') |
| 164 | border-radius: 50%; | 164 | if (!webUserName) { |
| 165 | background: #F5F5F5; | 165 | wxLogin() |
| 166 | display: flex; | 166 | } |
| 167 | align-items: center; | 167 | }) |
| 168 | justify-content: center; | 168 | |
| 169 | font-size: 48rpx; | 169 | watch(() => userInfo.value.perId, (val) => { |
| 170 | border: 4rpx solid #E8E8E8; | 170 | if (val !== undefined && val == 0) { |
| 171 | } | 171 | nextTick(() => { |
| 172 | 172 | openBindPopup() | |
| 173 | .avatar-placeholder { | 173 | }) |
| 174 | color: #999; | 174 | } |
| 175 | } | 175 | }, { |
| 176 | 176 | immediate: true | |
| 177 | .user-desc { | 177 | }) |
| 178 | font-size: 36rpx; | 178 | |
| 179 | color: #333; | 179 | // 打开绑定弹框 |
| 180 | font-weight: 500; | 180 | const openBindPopup = () => { |
| 181 | } | 181 | if (bindPopup.value) { |
| 182 | 182 | bindForm.value = { | |
| 183 | /* 会员卡片 */ | 183 | name: '', |
| 184 | .member-card { | 184 | idcCode: '' |
| 185 | background: linear-gradient(135deg, #F7E090 0%, #E6C560 100%); | 185 | } |
| 186 | border-radius: 24rpx; | 186 | bindPopup.value.open() |
| 187 | padding: 40rpx; | 187 | } else { |
| 188 | position: relative; | 188 | nextTick(() => { |
| 189 | overflow: hidden; | 189 | openBindPopup() |
| 190 | margin-bottom: 30rpx; | 190 | }) |
| 191 | 191 | } | |
| 192 | &::before { | 192 | } |
| 193 | content: ''; | 193 | |
| 194 | position: absolute; | 194 | // 关闭绑定弹框 |
| 195 | top: 0; | 195 | const closeBindPopup = () => { |
| 196 | left: 0; | 196 | bindPopup.value?.close() |
| 197 | right: 0; | 197 | } |
| 198 | bottom: 0; | 198 | |
| 199 | background-image: url('data:image/svg+xml,%3Csvg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M0,50 Q250,20 500,50 T1000,50" fill="none" stroke="%23E6C560" stroke-width="2" opacity="0.3"/%3E%3C/svg%3E'); | 199 | // 处理绑定/解绑操作 |
| 200 | background-size: cover; | 200 | const handleBindAction = () => { |
| 201 | z-index: 0; | 201 | if (isBound.value) { |
| 202 | } | 202 | // 已绑定,执行解绑 |
| 203 | } | 203 | uni.showModal({ |
| 204 | 204 | content: '确认解绑吗?', | |
| 205 | .card-header { | 205 | success: async (res) => { |
| 206 | display: flex; | 206 | if (res.confirm) { |
| 207 | justify-content: space-between; | 207 | uni.showLoading({ |
| 208 | align-items: center; | 208 | title: '解绑中...', |
| 209 | margin-bottom: 20rpx; | 209 | mask: true |
| 210 | position: relative; | 210 | }) |
| 211 | z-index: 1; | 211 | const [err] = await to(unbindUser()) |
| 212 | } | 212 | uni.hideLoading() |
| 213 | 213 | if (err) return | |
| 214 | .card-name { | 214 | uni.showToast({ |
| 215 | font-size: 40rpx; | 215 | title: '解绑成功', |
| 216 | font-weight: bold; | 216 | icon: 'success' |
| 217 | color: #222; | 217 | }) |
| 218 | } | 218 | // 刷新用户信息 |
| 219 | 219 | getWebInfo() | |
| 220 | .bind-btn { | 220 | } |
| 221 | font-size: 28rpx; | 221 | } |
| 222 | color: #666; | 222 | }) |
| 223 | } | 223 | } else { |
| 224 | 224 | // 未绑定,打开绑定弹框 | |
| 225 | .card-id { | 225 | openBindPopup() |
| 226 | font-size: 28rpx; | 226 | } |
| 227 | color: #555; | 227 | } |
| 228 | margin-bottom: 40rpx; | 228 | |
| 229 | position: relative; | 229 | // 确认绑定 |
| 230 | z-index: 1; | 230 | const confirmBind = async () => { |
| 231 | } | 231 | if (!bindForm.value.name) { |
| 232 | 232 | uni.showToast({ | |
| 233 | /* 功能入口 */ | 233 | title: '请输入姓名', |
| 234 | .card-func { | 234 | icon: 'none' |
| 235 | display: flex; | 235 | }) |
| 236 | justify-content: space-between; | 236 | return |
| 237 | position: relative; | 237 | } |
| 238 | z-index: 1; | 238 | if (!bindForm.value.idcCode) { |
| 239 | } | 239 | uni.showToast({ |
| 240 | 240 | title: '请输入证件号', | |
| 241 | .func-item { | 241 | icon: 'none' |
| 242 | display: flex; | 242 | }) |
| 243 | flex-direction: column; | 243 | return |
| 244 | align-items: center; | 244 | } |
| 245 | gap: 10rpx; | 245 | |
| 246 | cursor: pointer; | 246 | uni.showLoading({ |
| 247 | } | 247 | title: '绑定中...', |
| 248 | 248 | mask: true | |
| 249 | .func-icon { | 249 | }) |
| 250 | width: 60rpx; | 250 | |
| 251 | height: 60rpx; | 251 | const [err, res] = await to(bindUser({ |
| 252 | border-radius: 12rpx; | 252 | name: bindForm.value.name, |
| 253 | display: flex; | 253 | idcCode: bindForm.value.idcCode |
| 254 | align-items: center; | 254 | })) |
| 255 | justify-content: center; | 255 | uni.hideLoading() |
| 256 | font-size: 32rpx; | 256 | |
| 257 | color: #333; | 257 | if (err) { |
| 258 | } | 258 | // uni.showToast({ |
| 259 | 259 | // title: '绑定失败', | |
| 260 | .func-text { | 260 | // icon: 'none' |
| 261 | font-size: 28rpx; | 261 | // }) |
| 262 | color: #333; | 262 | return |
| 263 | font-weight: 500; | 263 | } |
| 264 | } | 264 | |
| 265 | 265 | uni.showToast({ | |
| 266 | /* ========== 下半部分:人员信息 ========== */ | 266 | title: '绑定成功', |
| 267 | .bottom-section { | 267 | icon: 'success' |
| 268 | background: #FFFFFF; | 268 | }) |
| 269 | border-radius: 24rpx 24rpx 0 0; | 269 | closeBindPopup() |
| 270 | padding: 30rpx; | 270 | // 刷新用户信息 |
| 271 | margin-top: 20rpx; | 271 | getWebInfo() |
| 272 | } | 272 | } |
| 273 | 273 | ||
| 274 | .info-title { | 274 | const goToAuth = () => { |
| 275 | display: flex; | 275 | console.log("参赛能力认证"); |
| 276 | align-items: center; | 276 | }; |
| 277 | gap: 16rpx; | 277 | |
| 278 | margin-bottom: 30rpx; | 278 | const goToScore = () => { |
| 279 | font-size: 36rpx; | 279 | console.log("成绩查询"); |
| 280 | font-weight: 500; | 280 | }; |
| 281 | color: #333; | 281 | |
| 282 | } | 282 | const goToRecord = () => { |
| 283 | 283 | console.log("参赛记录"); | |
| 284 | .title-line { | 284 | }; |
| 285 | width: 12rpx; | 285 | |
| 286 | height: 32rpx; | 286 | // 退出登录 |
| 287 | background: #E6C560; | 287 | const handleLogout = () => { |
| 288 | border-radius: 4rpx; | 288 | uni.showModal({ |
| 289 | } | 289 | content: `确认退出吗?`, |
| 290 | 290 | success: function(res) { | |
| 291 | .info-list { | 291 | if (res.confirm) { |
| 292 | display: flex; | 292 | logout().then(() => { |
| 293 | flex-direction: column; | 293 | uni.reLaunch({ |
| 294 | gap: 30rpx; | 294 | url: '/login/login' |
| 295 | } | 295 | }) |
| 296 | 296 | }) | |
| 297 | .info-item { | 297 | } |
| 298 | display: flex; | 298 | } |
| 299 | justify-content: space-between; | 299 | }) |
| 300 | align-items: center; | 300 | } |
| 301 | padding-bottom: 30rpx; | 301 | </script> |
| 302 | border-bottom: 1rpx solid #F0F0F0; | 302 | |
| 303 | 303 | <style lang="scss" scoped> | |
| 304 | &:last-child { | 304 | .page-container { |
| 305 | border-bottom: none; | 305 | min-height: 100vh; |
| 306 | padding-bottom: 0; | 306 | background: #f5f5f5; |
| 307 | } | 307 | padding-bottom: 40rpx; |
| 308 | } | 308 | } |
| 309 | 309 | ||
| 310 | .item-label { | 310 | /* 会员卡 */ |
| 311 | font-size: 32rpx; | 311 | .member-card { |
| 312 | color: #333; | 312 | position: relative; |
| 313 | font-weight: 500; | 313 | height: 450rpx; |
| 314 | } | 314 | border-radius: 0; |
| 315 | 315 | overflow: hidden; | |
| 316 | .item-value { | 316 | } |
| 317 | font-size: 32rpx; | 317 | |
| 318 | color: #999; | 318 | .card-bg { |
| 319 | } | 319 | position: absolute; |
| 320 | 320 | top: 0; | |
| 321 | /* 底部固定按钮(可选) */ | 321 | left: 0; |
| 322 | .fixedBottom { | 322 | width: 100%; |
| 323 | position: fixed; | 323 | height: 100%; |
| 324 | bottom: 0; | 324 | z-index: 0; |
| 325 | left: 0; | 325 | } |
| 326 | right: 0; | 326 | |
| 327 | padding: 20rpx 30rpx; | 327 | .bind-student { |
| 328 | background: #FFFFFF; | 328 | position: absolute; |
| 329 | border-top: 1rpx solid #F0F0F0; | 329 | top: 30rpx; |
| 330 | } | 330 | right: 30rpx; |
| 331 | 331 | display: flex; | |
| 332 | .btn-red { | 332 | align-items: center; |
| 333 | width: 100%; | 333 | gap: 8rpx; |
| 334 | height: 88rpx; | 334 | z-index: 10; |
| 335 | line-height: 88rpx; | 335 | padding: 10rpx 16rpx; |
| 336 | background: #C40F18; | 336 | background: rgba(255, 255, 255, 0.5); |
| 337 | color: #FFFFFF; | 337 | border-radius: 30rpx; |
| 338 | border-radius: 12rpx; | 338 | } |
| 339 | font-size: 32rpx; | 339 | |
| 340 | font-weight: 500; | 340 | .bind-student text { |
| 341 | border: none; | 341 | font-size: 26rpx; |
| 342 | } | 342 | color: #8b7355; |
| 343 | } | ||
| 344 | |||
| 345 | .arrow-icon { | ||
| 346 | width: 28rpx; | ||
| 347 | height: 28rpx; | ||
| 348 | } | ||
| 349 | |||
| 350 | .user-section { | ||
| 351 | position: relative; | ||
| 352 | z-index: 1; | ||
| 353 | padding: 50rpx 30rpx 0; | ||
| 354 | } | ||
| 355 | |||
| 356 | .user-top { | ||
| 357 | display: flex; | ||
| 358 | align-items: center; | ||
| 359 | gap: 20rpx; | ||
| 360 | margin-bottom: 20rpx; | ||
| 361 | } | ||
| 362 | |||
| 363 | .avatar-wrap { | ||
| 364 | flex-shrink: 0; | ||
| 365 | } | ||
| 366 | |||
| 367 | .avatar { | ||
| 368 | width: 110rpx; | ||
| 369 | height: 110rpx; | ||
| 370 | border-radius: 50%; | ||
| 371 | border: 3rpx solid rgba(255, 255, 255, 0.6); | ||
| 372 | } | ||
| 373 | |||
| 374 | .member-id { | ||
| 375 | font-size: 26rpx; | ||
| 376 | color: #8b7355; | ||
| 377 | } | ||
| 378 | |||
| 379 | .user-bottom { | ||
| 380 | padding-left: 0; | ||
| 381 | } | ||
| 382 | |||
| 383 | .user-name { | ||
| 384 | font-size: 44rpx; | ||
| 385 | font-weight: bold; | ||
| 386 | color: #5c4b37; | ||
| 387 | margin-bottom: 16rpx; | ||
| 388 | } | ||
| 389 | |||
| 390 | .card-info { | ||
| 391 | display: flex; | ||
| 392 | flex-direction: column; | ||
| 393 | gap: 10rpx; | ||
| 394 | } | ||
| 395 | |||
| 396 | .info-row { | ||
| 397 | font-size: 24rpx; | ||
| 398 | color: #8b7355; | ||
| 399 | } | ||
| 400 | |||
| 401 | /* 已过期印章 */ | ||
| 402 | .expired-stamp { | ||
| 403 | position: absolute; | ||
| 404 | right: 30rpx; | ||
| 405 | bottom: 100rpx; | ||
| 406 | width: 150rpx; | ||
| 407 | height: 150rpx; | ||
| 408 | z-index: 1; | ||
| 409 | } | ||
| 410 | |||
| 411 | /* 功能按钮卡片 */ | ||
| 412 | .func-card { | ||
| 413 | margin: -70rpx 30rpx 30rpx; | ||
| 414 | background: #ffffff; | ||
| 415 | border-radius: 20rpx; | ||
| 416 | padding: 36rpx 0; | ||
| 417 | box-shadow: 0 2rpx 16rpx rgba(0, 0, 0, 0.06); | ||
| 418 | position: relative; | ||
| 419 | z-index: 2; | ||
| 420 | } | ||
| 421 | |||
| 422 | .func-list { | ||
| 423 | display: flex; | ||
| 424 | justify-content: space-around; | ||
| 425 | padding: 0 20rpx; | ||
| 426 | } | ||
| 427 | |||
| 428 | .func-item { | ||
| 429 | display: flex; | ||
| 430 | flex-direction: column; | ||
| 431 | align-items: center; | ||
| 432 | gap: 12rpx; | ||
| 433 | } | ||
| 434 | |||
| 435 | .func-icon { | ||
| 436 | width: 72rpx; | ||
| 437 | height: 72rpx; | ||
| 438 | } | ||
| 439 | |||
| 440 | .func-text { | ||
| 441 | font-size: 24rpx; | ||
| 442 | color: #333; | ||
| 443 | } | ||
| 444 | |||
| 445 | /* 人员信息区域 */ | ||
| 446 | .info-section { | ||
| 447 | margin: 0 30rpx; | ||
| 448 | } | ||
| 449 | |||
| 450 | .section-title { | ||
| 451 | display: flex; | ||
| 452 | align-items: center; | ||
| 453 | gap: 12rpx; | ||
| 454 | margin-bottom: 20rpx; | ||
| 455 | } | ||
| 456 | |||
| 457 | .title-bar { | ||
| 458 | width: 6rpx; | ||
| 459 | height: 32rpx; | ||
| 460 | background: #e6c560; | ||
| 461 | border-radius: 3rpx; | ||
| 462 | } | ||
| 463 | |||
| 464 | .title-text { | ||
| 465 | font-size: 30rpx; | ||
| 466 | font-weight: 500; | ||
| 467 | color: #333; | ||
| 468 | } | ||
| 469 | |||
| 470 | .info-card { | ||
| 471 | background: #ffffff; | ||
| 472 | border-radius: 20rpx; | ||
| 473 | padding: 0 32rpx; | ||
| 474 | } | ||
| 475 | |||
| 476 | .info-item { | ||
| 477 | display: flex; | ||
| 478 | justify-content: space-between; | ||
| 479 | align-items: center; | ||
| 480 | padding: 28rpx 0; | ||
| 481 | border-bottom: 1rpx solid #f5f5f5; | ||
| 482 | } | ||
| 483 | |||
| 484 | .info-item:last-child { | ||
| 485 | border-bottom: none; | ||
| 486 | } | ||
| 487 | |||
| 488 | .item-label { | ||
| 489 | font-size: 28rpx; | ||
| 490 | color: #333; | ||
| 491 | } | ||
| 492 | |||
| 493 | .item-value { | ||
| 494 | font-size: 28rpx; | ||
| 495 | color: #999; | ||
| 496 | } | ||
| 497 | |||
| 498 | /* 绑定学员弹框 */ | ||
| 499 | .bind-popup { | ||
| 500 | width: 600rpx; | ||
| 501 | background: #ffffff; | ||
| 502 | border-radius: 24rpx; | ||
| 503 | overflow: hidden; | ||
| 504 | } | ||
| 505 | |||
| 506 | .popup-title { | ||
| 507 | font-size: 32rpx; | ||
| 508 | font-weight: 500; | ||
| 509 | color: #333; | ||
| 510 | text-align: center; | ||
| 511 | padding: 40rpx 30rpx 20rpx; | ||
| 512 | } | ||
| 513 | |||
| 514 | .popup-content { | ||
| 515 | padding: 20rpx 30rpx 40rpx; | ||
| 516 | } | ||
| 517 | |||
| 518 | .form-item { | ||
| 519 | display: flex; | ||
| 520 | align-items: center; | ||
| 521 | margin-bottom: 24rpx; | ||
| 522 | } | ||
| 523 | |||
| 524 | .form-item:last-child { | ||
| 525 | margin-bottom: 0; | ||
| 526 | } | ||
| 527 | |||
| 528 | .form-label { | ||
| 529 | width: 120rpx; | ||
| 530 | font-size: 28rpx; | ||
| 531 | color: #333; | ||
| 532 | flex-shrink: 0; | ||
| 533 | } | ||
| 534 | |||
| 535 | .form-input { | ||
| 536 | flex: 1; | ||
| 537 | background: #f5f5f5; | ||
| 538 | border-radius: 12rpx; | ||
| 539 | padding: 20rpx 24rpx; | ||
| 540 | } | ||
| 541 | |||
| 542 | .form-input input { | ||
| 543 | font-size: 28rpx; | ||
| 544 | color: #333; | ||
| 545 | width: 100%; | ||
| 546 | } | ||
| 547 | |||
| 548 | .placeholder-class { | ||
| 549 | color: #999; | ||
| 550 | } | ||
| 551 | |||
| 552 | .popup-btns { | ||
| 553 | display: flex; | ||
| 554 | border-top: 1rpx solid #eee; | ||
| 555 | } | ||
| 556 | |||
| 557 | .popup-btn { | ||
| 558 | flex: 1; | ||
| 559 | height: 100rpx; | ||
| 560 | line-height: 100rpx; | ||
| 561 | text-align: center; | ||
| 562 | font-size: 30rpx; | ||
| 563 | } | ||
| 564 | |||
| 565 | .popup-btn.cancel { | ||
| 566 | color: #666; | ||
| 567 | border-right: 1rpx solid #eee; | ||
| 568 | } | ||
| 569 | |||
| 570 | .popup-btn.confirm { | ||
| 571 | color: #C40F18; | ||
| 572 | font-weight: 500; | ||
| 573 | } | ||
| 574 | |||
| 575 | /* 退出登录 */ | ||
| 576 | .logout-section { | ||
| 577 | margin: 60rpx 30rpx 40rpx; | ||
| 578 | } | ||
| 579 | |||
| 580 | .logout-btn { | ||
| 581 | height: 88rpx; | ||
| 582 | line-height: 88rpx; | ||
| 583 | text-align: center; | ||
| 584 | font-size: 30rpx; | ||
| 585 | color: #999; | ||
| 586 | background: #ffffff; | ||
| 587 | border-radius: 20rpx; | ||
| 588 | } | ||
| 343 | </style> | 589 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view class="pay-order-container"> | 2 | <view class="pay-order-container"> |
| 3 | 3 | ||
| 4 | 4 | ||
| 5 | <view class="order-info"> | 5 | <view class="order-info"> |
| 6 | 6 | ||
| 7 | <view class="info-item total-price"> | 7 | <view class="info-item total-price"> |
| 8 | <text class="label">支付总费用:</text> | 8 | <text class="label">支付总费用:</text> |
| 9 | <text class="value red">{{ price ?? 0 }}元</text> | 9 | <text class="value red">{{ price ?? 0 }}元</text> |
| 10 | </view> | 10 | </view> |
| 11 | </view> | 11 | </view> |
| 12 | 12 | ||
| 13 | <view class="pay-type-section"> | 13 | <view class="pay-type-section"> |
| 14 | <text class="section-title">选择支付方式</text> | 14 | <text class="section-title">选择支付方式</text> |
| 15 | <radio-group :value="payType" @change="handlePayTypeChange"> | 15 | <radio-group :value="payType" @change="handlePayTypeChange"> |
| 16 | <label class="radio-item"> | 16 | <label class="radio-item"> |
| 17 | <radio value="0" color="#E60012" :checked="payType === '0'" /> | 17 | <radio value="0" color="#E60012" :checked="payType === '0'" /> |
| 18 | <view class="pay-method"> | 18 | <view class="pay-method"> |
| 19 | <image class="icon" src="/static/min.png" mode="widthFix"></image> | 19 | <image class="icon" src="/static/min.png" mode="widthFix"></image> |
| 20 | <text class="pay-name">民生付</text> | 20 | <text class="pay-name">民生付</text> |
| 21 | </view> | 21 | </view> |
| 22 | </label> | 22 | </label> |
| 23 | </radio-group> | 23 | </radio-group> |
| 24 | </view> | 24 | </view> |
| 25 | 25 | ||
| 26 | <!-- 底部支付按钮 --> | 26 | <!-- 底部支付按钮 --> |
| 27 | <view class="fixed-bottom"> | 27 | <view class="fixed-bottom"> |
| 28 | <button class="pay-btn red-bg" :loading="payLoading" @click="handlePay">立即支付</button> | 28 | <button class="pay-btn red-bg" :loading="payLoading" @click="handlePay">立即支付</button> |
| 29 | </view> | 29 | </view> |
| 30 | </view> | 30 | </view> |
| 31 | </template> | 31 | </template> |
| 32 | 32 | ||
| 33 | <script setup> | 33 | <script setup> |
| 34 | import { ref } from 'vue' | 34 | import { |
| 35 | import { onLoad } from '@dcloudio/uni-app'; | 35 | ref |
| 36 | import * as api from '@/common/api.js' | 36 | } from 'vue' |
| 37 | 37 | import { | |
| 38 | // 核心数据 | 38 | onLoad |
| 39 | const formData = ref({}) // 订单统计数据 | 39 | } from '@dcloudio/uni-app'; |
| 40 | const price = ref('') // 核心业务ID | 40 | import * as api from '@/common/api.js' |
| 41 | const payType = ref('0') // 支付方式(默认0=民生付) | 41 | |
| 42 | const payLoading = ref(false) // 支付按钮加载状态 | 42 | // 核心数据 |
| 43 | 43 | const formData = ref({}) // 订单统计数据 | |
| 44 | // 页面加载接收参数 | 44 | const price = ref('') // 核心业务ID |
| 45 | onLoad(async (options) => { | 45 | const payType = ref('0') // 支付方式(默认0=民生付) |
| 46 | console.log('订单ID:', options.price) | 46 | const payLoading = ref(false) // 支付按钮加载状态 |
| 47 | if (options.price) { | 47 | |
| 48 | price.value = options.price | 48 | // 页面加载接收参数 |
| 49 | } | 49 | onLoad(async (options) => { |
| 50 | }) | 50 | console.log('订单ID:', options.price) |
| 51 | 51 | if (options.price) { | |
| 52 | 52 | price.value = options.price | |
| 53 | // 支付方式切换 | 53 | } |
| 54 | function handlePayTypeChange(e) { | 54 | }) |
| 55 | payType.value = e.detail.value | 55 | |
| 56 | } | 56 | |
| 57 | 57 | // 支付方式切换 | |
| 58 | // 立即支付核心逻辑 | 58 | function handlePayTypeChange(e) { |
| 59 | async function handlePay() { | 59 | payType.value = e.detail.value |
| 60 | 60 | } | |
| 61 | 61 | ||
| 62 | try { | 62 | // 立即支付核心逻辑 |
| 63 | payLoading.value = true | 63 | async function handlePay() { |
| 64 | const res = await api.goPay() | 64 | |
| 65 | 65 | ||
| 66 | if (res.data?.orderId) { | 66 | try { |
| 67 | api.pcallBack2(res.data.orderId) | 67 | payLoading.value = true |
| 68 | uni.navigateTo({ | 68 | const res = await api.goPay() |
| 69 | url: `/personal/sucPay` | 69 | |
| 70 | }) | 70 | if (res.data?.orderId) { |
| 71 | } | 71 | api.pcallBack2(res.data.orderId) |
| 72 | 72 | uni.redirectTo({ | |
| 73 | // 跳转到支付成功页 | 73 | url: `/personal/sucPay` |
| 74 | 74 | }) | |
| 75 | } catch (err) { | 75 | } |
| 76 | const errMsg = err?.data?.msg || err?.message || '支付失败,请稍后重试' | 76 | |
| 77 | uni.showToast({ title: errMsg, icon: 'none' }) | 77 | // 跳转到支付成功页 |
| 78 | } finally { | 78 | |
| 79 | payLoading.value = false | 79 | } catch (err) { |
| 80 | } | 80 | const errMsg = err?.data?.msg || err?.message || '支付失败,请稍后重试' |
| 81 | } | 81 | uni.showToast({ |
| 82 | </script> | 82 | title: errMsg, |
| 83 | 83 | icon: 'none' | |
| 84 | <style scoped lang="scss"> | 84 | }) |
| 85 | .pay-order-container { | 85 | } finally { |
| 86 | padding: 30rpx; | 86 | payLoading.value = false |
| 87 | background-color: #fff; | 87 | } |
| 88 | min-height: 100vh; | 88 | } |
| 89 | box-sizing: border-box; | 89 | </script> |
| 90 | } | 90 | |
| 91 | .icon{ | 91 | <style scoped lang="scss"> |
| 92 | width:30px; | 92 | .pay-order-container { |
| 93 | } | 93 | padding: 30rpx; |
| 94 | // 页面头部 | 94 | background-color: #fff; |
| 95 | .page-header { | 95 | min-height: 100vh; |
| 96 | text-align: center; | 96 | box-sizing: border-box; |
| 97 | padding: 20rpx 0; | 97 | } |
| 98 | border-bottom: 1px solid #eee; | 98 | |
| 99 | margin-bottom: 40rpx; | 99 | .icon { |
| 100 | 100 | width: 30px; | |
| 101 | .title { | 101 | } |
| 102 | font-size: 36rpx; | 102 | |
| 103 | font-weight: 600; | 103 | // 页面头部 |
| 104 | color: #333; | 104 | .page-header { |
| 105 | } | 105 | text-align: center; |
| 106 | } | 106 | padding: 20rpx 0; |
| 107 | 107 | border-bottom: 1px solid #eee; | |
| 108 | // 订单信息区域 | 108 | margin-bottom: 40rpx; |
| 109 | .order-info { | 109 | |
| 110 | margin-bottom: 60rpx; | 110 | .title { |
| 111 | 111 | font-size: 36rpx; | |
| 112 | .info-item { | 112 | font-weight: 600; |
| 113 | display: flex; | 113 | color: #333; |
| 114 | justify-content: space-between; | 114 | } |
| 115 | align-items: center; | 115 | } |
| 116 | padding: 25rpx 0; | 116 | |
| 117 | border-bottom: 1px solid #f5f5f5; | 117 | // 订单信息区域 |
| 118 | font-size: 32rpx; | 118 | .order-info { |
| 119 | 119 | margin-bottom: 60rpx; | |
| 120 | .label { | 120 | |
| 121 | color: #666; | 121 | .info-item { |
| 122 | } | 122 | display: flex; |
| 123 | 123 | justify-content: space-between; | |
| 124 | .value { | 124 | align-items: center; |
| 125 | font-weight: 600; | 125 | padding: 25rpx 0; |
| 126 | font-size: 34rpx; | 126 | border-bottom: 1px solid #f5f5f5; |
| 127 | } | 127 | font-size: 32rpx; |
| 128 | 128 | ||
| 129 | .red { | 129 | .label { |
| 130 | color: #E60012; | 130 | color: #666; |
| 131 | } | 131 | } |
| 132 | } | 132 | |
| 133 | 133 | .value { | |
| 134 | .total-price { | 134 | font-weight: 600; |
| 135 | border-bottom: none; | 135 | font-size: 34rpx; |
| 136 | margin-top: 10rpx; | 136 | } |
| 137 | 137 | ||
| 138 | .label { | 138 | .red { |
| 139 | font-size: 34rpx; | 139 | color: #E60012; |
| 140 | color: #333; | 140 | } |
| 141 | } | 141 | } |
| 142 | 142 | ||
| 143 | .value { | 143 | .total-price { |
| 144 | font-size: 38rpx; | 144 | border-bottom: none; |
| 145 | } | 145 | margin-top: 10rpx; |
| 146 | } | 146 | |
| 147 | } | 147 | .label { |
| 148 | 148 | font-size: 34rpx; | |
| 149 | // 支付方式区域 | 149 | color: #333; |
| 150 | .pay-type-section { | 150 | } |
| 151 | margin-bottom: 80rpx; | 151 | |
| 152 | 152 | .value { | |
| 153 | .section-title { | 153 | font-size: 38rpx; |
| 154 | font-size: 32rpx; | 154 | } |
| 155 | color: #333; | 155 | } |
| 156 | margin-bottom: 20rpx; | 156 | } |
| 157 | display: block; | 157 | |
| 158 | } | 158 | // 支付方式区域 |
| 159 | 159 | .pay-type-section { | |
| 160 | .radio-item { | 160 | margin-bottom: 80rpx; |
| 161 | display: flex; | 161 | |
| 162 | align-items: center; | 162 | .section-title { |
| 163 | font-size: 32rpx; | 163 | font-size: 32rpx; |
| 164 | padding: 10rpx 0; | 164 | color: #333; |
| 165 | 165 | margin-bottom: 20rpx; | |
| 166 | .pay-method { | 166 | display: block; |
| 167 | display: flex; | 167 | } |
| 168 | align-items: center; | 168 | |
| 169 | margin-left: 10rpx; | 169 | .radio-item { |
| 170 | 170 | display: flex; | |
| 171 | .pay-name { | 171 | align-items: center; |
| 172 | font-size: 32rpx; | 172 | font-size: 32rpx; |
| 173 | margin-left: 20rpx; | 173 | padding: 10rpx 0; |
| 174 | color: #333; | 174 | |
| 175 | } | 175 | .pay-method { |
| 176 | } | 176 | display: flex; |
| 177 | } | 177 | align-items: center; |
| 178 | } | 178 | margin-left: 10rpx; |
| 179 | 179 | ||
| 180 | // 底部支付按钮 | 180 | .pay-name { |
| 181 | .fixed-bottom { | 181 | font-size: 32rpx; |
| 182 | position: fixed; | 182 | margin-left: 20rpx; |
| 183 | bottom: 0; | 183 | color: #333; |
| 184 | left: 0; | 184 | } |
| 185 | right: 0; | 185 | } |
| 186 | padding: 20rpx 30rpx 30rpx; | 186 | } |
| 187 | background-color: #fff; | 187 | } |
| 188 | border-top: 1px solid #eee; | 188 | |
| 189 | 189 | // 底部支付按钮 | |
| 190 | .pay-btn { | 190 | .fixed-bottom { |
| 191 | width: 100%; | 191 | position: fixed; |
| 192 | height: 88rpx; | 192 | bottom: 0; |
| 193 | line-height: 88rpx; | 193 | left: 0; |
| 194 | border-radius: 44rpx; | 194 | right: 0; |
| 195 | font-size: 34rpx; | 195 | padding: 20rpx 30rpx 30rpx; |
| 196 | font-weight: 600; | 196 | background-color: #fff; |
| 197 | } | 197 | border-top: 1px solid #eee; |
| 198 | 198 | ||
| 199 | .red-bg { | 199 | .pay-btn { |
| 200 | background-color: #E60012; | 200 | width: 100%; |
| 201 | color: #fff; | 201 | height: 88rpx; |
| 202 | } | 202 | line-height: 88rpx; |
| 203 | } | 203 | border-radius: 44rpx; |
| 204 | font-size: 34rpx; | ||
| 205 | font-weight: 600; | ||
| 206 | } | ||
| 207 | |||
| 208 | .red-bg { | ||
| 209 | background-color: #E60012; | ||
| 210 | color: #fff; | ||
| 211 | } | ||
| 212 | } | ||
| 204 | </style> | 213 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -64,7 +64,8 @@ | ... | @@ -64,7 +64,8 @@ |
| 64 | <uni-forms-item label="头像" required> | 64 | <uni-forms-item label="头像" required> |
| 65 | <uni-file-picker v-model="photoArr" @delete="delPhoto" return-type="object" limit="1" | 65 | <uni-file-picker v-model="photoArr" @delete="delPhoto" return-type="object" limit="1" |
| 66 | @select="upPhoto" :del-ico="false" :image-styles="imageStylesTx"></uni-file-picker> | 66 | @select="upPhoto" :del-ico="false" :image-styles="imageStylesTx"></uni-file-picker> |
| 67 | <image mode="aspectFill" v-if="baseFormData.photo2" style="height:200rpx;width:200rpx;" :src="config.baseUrl_api + baseFormData.photo2"/> | 67 | <image mode="aspectFill" v-if="baseFormData.photo2" style="height:200rpx;width:200rpx;" |
| 68 | :src="config.baseUrl_api + baseFormData.photo2" /> | ||
| 68 | </uni-forms-item> | 69 | </uni-forms-item> |
| 69 | </view> | 70 | </view> |
| 70 | </uni-forms> | 71 | </uni-forms> |
| ... | @@ -80,7 +81,8 @@ | ... | @@ -80,7 +81,8 @@ |
| 80 | <view class="fixedBottom"><button class="btn-red" @click="goSubmit">确 定</button></view> | 81 | <view class="fixedBottom"><button class="btn-red" @click="goSubmit">确 定</button></view> |
| 81 | 82 | ||
| 82 | <!-- 会员须知 --> | 83 | <!-- 会员须知 --> |
| 83 | <uni-popup ref="popup" type="bottom" background-color="#fff" animation :disable-scroll="true" :mask-click="false"> | 84 | <uni-popup ref="popup" type="bottom" background-color="#fff" animation :disable-scroll="true" |
| 85 | :mask-click="false"> | ||
| 84 | <view class="tt">入会须知</view> | 86 | <view class="tt">入会须知</view> |
| 85 | <view class="popBody"> | 87 | <view class="popBody"> |
| 86 | _{{baseFormData.name}}_欢迎您申请成为中国跆拳道协会(以下简称中国跆协)会员,请确保本次申请是经过您本人或监护人授权同意后的自愿行为,请您务必仔细阅读本入会须知。 | 88 | _{{baseFormData.name}}_欢迎您申请成为中国跆拳道协会(以下简称中国跆协)会员,请确保本次申请是经过您本人或监护人授权同意后的自愿行为,请您务必仔细阅读本入会须知。 |
| ... | @@ -102,7 +104,7 @@ | ... | @@ -102,7 +104,7 @@ |
| 102 | </view> | 104 | </view> |
| 103 | </uni-popup> | 105 | </uni-popup> |
| 104 | 106 | ||
| 105 | <uni-popup ref="infoConfirm" type="center" :disable-scroll="true" :mask-click="false"> | 107 | <uni-popup ref="infoConfirm" type="center" :disable-scroll="true" :mask-click="false"> |
| 106 | <view class="tt">确认信息</view> | 108 | <view class="tt">确认信息</view> |
| 107 | <view class="popBody"> | 109 | <view class="popBody"> |
| 108 | <view> | 110 | <view> |
| ... | @@ -125,7 +127,7 @@ | ... | @@ -125,7 +127,7 @@ |
| 125 | onLoad | 127 | onLoad |
| 126 | } from '@dcloudio/uni-app' | 128 | } from '@dcloudio/uni-app' |
| 127 | import config from '@/config.js' | 129 | import config from '@/config.js' |
| 128 | import * as aes2 from '@/common/utils.js' | 130 | import * as aes2 from '@/common/utils.js' |
| 129 | const current = ref(0) | 131 | const current = ref(0) |
| 130 | const popup = ref(null) | 132 | const popup = ref(null) |
| 131 | const infoConfirm = ref(null) | 133 | const infoConfirm = ref(null) |
| ... | @@ -297,7 +299,7 @@ | ... | @@ -297,7 +299,7 @@ |
| 297 | baseFormData.value.photo = data.data.fang; | 299 | baseFormData.value.photo = data.data.fang; |
| 298 | baseFormData.value.photo2 = data.data.yuan; | 300 | baseFormData.value.photo2 = data.data.yuan; |
| 299 | photoArr.value = { | 301 | photoArr.value = { |
| 300 | url: config.baseUrl_api+baseFormData.value.photo, | 302 | url: config.baseUrl_api + baseFormData.value.photo, |
| 301 | name: '头像', | 303 | name: '头像', |
| 302 | extname: 'jpg' | 304 | extname: 'jpg' |
| 303 | } | 305 | } |
| ... | @@ -414,19 +416,19 @@ | ... | @@ -414,19 +416,19 @@ |
| 414 | }) | 416 | }) |
| 415 | } | 417 | } |
| 416 | } | 418 | } |
| 417 | // if (baseFormData.value.idcType == 1 || baseFormData.value.idcType == 3) { | 419 | // if (baseFormData.value.idcType == 1 || baseFormData.value.idcType == 3) { |
| 418 | // //转换为大写并判断位数12 | 420 | // //转换为大写并判断位数12 |
| 419 | // baseFormData.value.idcCode = baseFormData.value.idcCode.toUpperCase() | 421 | // baseFormData.value.idcCode = baseFormData.value.idcCode.toUpperCase() |
| 420 | // // var regex = /^[a-zA-Z]/ | 422 | // // var regex = /^[a-zA-Z]/ |
| 421 | // if (baseFormData.value.idcCode.length > 12) { | 423 | // if (baseFormData.value.idcCode.length > 12) { |
| 422 | // uni.showToast({ | 424 | // uni.showToast({ |
| 423 | // icon: 'none', | 425 | // icon: 'none', |
| 424 | // title: '请输入正确的证件号', | 426 | // title: '请输入正确的证件号', |
| 425 | // duration: 2000 | 427 | // duration: 2000 |
| 426 | // }) | 428 | // }) |
| 427 | // return | 429 | // return |
| 428 | // } | 430 | // } |
| 429 | // } | 431 | // } |
| 430 | } | 432 | } |
| 431 | 433 | ||
| 432 | 434 | ||
| ... | @@ -492,8 +494,8 @@ | ... | @@ -492,8 +494,8 @@ |
| 492 | content: '请确认信息正确', | 494 | content: '请确认信息正确', |
| 493 | success: function(res) { | 495 | success: function(res) { |
| 494 | if (res.confirm) { | 496 | if (res.confirm) { |
| 495 | if(baseFormData.value.idcType=='4'){ | 497 | if (baseFormData.value.idcType == '4') { |
| 496 | baseFormData.value.idcType='0' | 498 | baseFormData.value.idcType = '0' |
| 497 | } | 499 | } |
| 498 | delete baseFormData.value.card | 500 | delete baseFormData.value.card |
| 499 | 501 | ||
| ... | @@ -523,16 +525,16 @@ | ... | @@ -523,16 +525,16 @@ |
| 523 | uni.showModal({ | 525 | uni.showModal({ |
| 524 | content: '保存成功', | 526 | content: '保存成功', |
| 525 | title: '提示', | 527 | title: '提示', |
| 526 | confirmText:'继续添加', | 528 | confirmText: '继续添加', |
| 527 | cancelColor:'返回首页', | 529 | cancelColor: '返回首页', |
| 528 | success: function(res) { | 530 | success: function(res) { |
| 529 | uni.redirectTo({ | 531 | uni.redirectTo({ |
| 530 | url: `/personalVip/addVip?tab=${current.value}&idcType=${baseFormData.value.idcType}` | 532 | url: `/personalVip/addVip?tab=${current.value}&idcType=${baseFormData.value.idcType}` |
| 531 | }); | 533 | }); |
| 532 | }, | 534 | }, |
| 533 | fail:function(){ | 535 | fail: function() { |
| 534 | uni.reLaunch({ | 536 | uni.reLaunch({ |
| 535 | url:`/pages/index/index` | 537 | url: `/pages/index/home` |
| 536 | }) | 538 | }) |
| 537 | } | 539 | } |
| 538 | }) | 540 | }) |
| ... | @@ -542,6 +544,7 @@ | ... | @@ -542,6 +544,7 @@ |
| 542 | } | 544 | } |
| 543 | }); | 545 | }); |
| 544 | } | 546 | } |
| 547 | |||
| 545 | function getUserInfo() { | 548 | function getUserInfo() { |
| 546 | api.getInfo(perId.value).then(res => { | 549 | api.getInfo(perId.value).then(res => { |
| 547 | baseFormData.value = res.data | 550 | baseFormData.value = res.data |
| ... | @@ -553,7 +556,6 @@ | ... | @@ -553,7 +556,6 @@ |
| 553 | </script> | 556 | </script> |
| 554 | 557 | ||
| 555 | <style lang="scss"> | 558 | <style lang="scss"> |
| 556 | |||
| 557 | /* 字段名左对齐 */ | 559 | /* 字段名左对齐 */ |
| 558 | .uni-forms-item .uni-forms-item__label { | 560 | .uni-forms-item .uni-forms-item__label { |
| 559 | text-align: left !important; | 561 | text-align: left !important; |
| ... | @@ -561,16 +563,16 @@ | ... | @@ -561,16 +563,16 @@ |
| 561 | padding-left: 0 !important; | 563 | padding-left: 0 !important; |
| 562 | width: auto !important; | 564 | width: auto !important; |
| 563 | } | 565 | } |
| 564 | 566 | ||
| 565 | /* 内容右对齐 */ | 567 | /* 内容右对齐 */ |
| 566 | .uni-forms-item .uni-forms-item__content { | 568 | .uni-forms-item .uni-forms-item__content { |
| 567 | display: flex !important; | 569 | display: flex !important; |
| 568 | align-items: center !important; | 570 | align-items: center !important; |
| 569 | justify-content: flex-end !important; | 571 | justify-content: flex-end !important; |
| 570 | text-align: right !important; | 572 | text-align: right !important; |
| 571 | flex-wrap: nowrap !important; | 573 | flex-wrap: nowrap !important; |
| 572 | } | 574 | } |
| 573 | 575 | ||
| 574 | /* 输入框内容右对齐 */ | 576 | /* 输入框内容右对齐 */ |
| 575 | .uni-forms-item .uni-easyinput .uni-easyinput__content-input, | 577 | .uni-forms-item .uni-easyinput .uni-easyinput__content-input, |
| 576 | .uni-forms-item .uni-easyinput input, | 578 | .uni-forms-item .uni-easyinput input, |
| ... | @@ -579,28 +581,29 @@ | ... | @@ -579,28 +581,29 @@ |
| 579 | .uni-forms-item .uni-data-picker .uni-data-picker__input-box { | 581 | .uni-forms-item .uni-data-picker .uni-data-picker__input-box { |
| 580 | text-align: right !important; | 582 | text-align: right !important; |
| 581 | } | 583 | } |
| 582 | 584 | ||
| 583 | /* 文本内容右对齐 */ | 585 | /* 文本内容右对齐 */ |
| 584 | .uni-forms-item .uni-forms-item__content text, | 586 | .uni-forms-item .uni-forms-item__content text, |
| 585 | .uni-forms-item .uni-forms-item__content > text { | 587 | .uni-forms-item .uni-forms-item__content>text { |
| 586 | display: inline-block !important; | 588 | display: inline-block !important; |
| 587 | white-space: nowrap !important; | 589 | white-space: nowrap !important; |
| 588 | } | 590 | } |
| 589 | |||
| 590 | </style> | 591 | </style> |
| 591 | 592 | ||
| 592 | <style lang="scss" scoped> | 593 | <style lang="scss" scoped> |
| 593 | :deep(.uni-popup__mask) { | 594 | :deep(.uni-popup__mask) { |
| 594 | overflow: hidden !important; | 595 | overflow: hidden !important; |
| 595 | position: fixed !important; | 596 | position: fixed !important; |
| 596 | top: 0; | 597 | top: 0; |
| 597 | left: 0; | 598 | left: 0; |
| 598 | right: 0; | 599 | right: 0; |
| 599 | bottom: 0; | 600 | bottom: 0; |
| 600 | } | 601 | } |
| 602 | |||
| 601 | :deep(.uni-popup) { | 603 | :deep(.uni-popup) { |
| 602 | overflow: hidden !important; | 604 | overflow: hidden !important; |
| 603 | } | 605 | } |
| 606 | |||
| 604 | :deep(.segmented-control) { | 607 | :deep(.segmented-control) { |
| 605 | height: 100rpx; | 608 | height: 100rpx; |
| 606 | } | 609 | } |
| ... | @@ -620,7 +623,7 @@ | ... | @@ -620,7 +623,7 @@ |
| 620 | font-size: 28rpx; | 623 | font-size: 28rpx; |
| 621 | line-height: 1.5; | 624 | line-height: 1.5; |
| 622 | height: 70vh; | 625 | height: 70vh; |
| 623 | overflow-y: auto; | 626 | overflow-y: auto; |
| 624 | font-family: 华文仿宋; | 627 | font-family: 华文仿宋; |
| 625 | height: 80vh; | 628 | height: 80vh; |
| 626 | overflow: auto; | 629 | overflow: auto; |
| ... | @@ -636,7 +639,7 @@ | ... | @@ -636,7 +639,7 @@ |
| 636 | box-sizing: border-box; | 639 | box-sizing: border-box; |
| 637 | display: flex; | 640 | display: flex; |
| 638 | font-size: 30rpx; | 641 | font-size: 30rpx; |
| 639 | 642 | ||
| 640 | 643 | ||
| 641 | text { | 644 | text { |
| 642 | color: #014A9F; | 645 | color: #014A9F; |
| ... | @@ -676,13 +679,14 @@ | ... | @@ -676,13 +679,14 @@ |
| 676 | :deep(.item-text-overflow) { | 679 | :deep(.item-text-overflow) { |
| 677 | text-align: left; | 680 | text-align: left; |
| 678 | } | 681 | } |
| 682 | |||
| 679 | :deep(.fixUniFormItemStyle .uni-data-picker__input-box) { | 683 | :deep(.fixUniFormItemStyle .uni-data-picker__input-box) { |
| 680 | justify-content: flex-start !important; | 684 | justify-content: flex-start !important; |
| 681 | text-align: left !important; | 685 | text-align: left !important; |
| 682 | } | 686 | } |
| 683 | 687 | ||
| 684 | /* 让地区选择器的文本左对齐 */ | 688 | /* 让地区选择器的文本左对齐 */ |
| 685 | :deep(.fixUniFormItemStyle .uni-data-picker__text) { | 689 | :deep(.fixUniFormItemStyle .uni-data-picker__text) { |
| 686 | text-align: left !important; | 690 | text-align: left !important; |
| 687 | } | 691 | } |
| 688 | </style> | 692 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
145 KB
static/temp/slices.zip
0 → 100644
No preview for this file type
static/temp/slices/bd.png
0 → 100644
382 Bytes
static/temp/slices/bd@2x.png
0 → 100644
709 Bytes
static/temp/slices/bd@3x.png
0 → 100644
1.25 KB
static/temp/slices/btn01.png
0 → 100644
1.6 KB
static/temp/slices/btn01@2x.png
0 → 100644
3.31 KB
static/temp/slices/btn01@3x.png
0 → 100644
5.91 KB
static/temp/slices/btn02.png
0 → 100644
1.56 KB
static/temp/slices/btn02@2x.png
0 → 100644
3.12 KB
static/temp/slices/btn02@3x.png
0 → 100644
5.59 KB
static/temp/slices/btn03.png
0 → 100644
1.26 KB
static/temp/slices/btn03@2x.png
0 → 100644
2.31 KB
static/temp/slices/btn03@3x.png
0 → 100644
4.31 KB
static/temp/slices/end.png
0 → 100644
6.89 KB
static/temp/slices/end@2x.png
0 → 100644
18 KB
static/temp/slices/end@3x.png
0 → 100644
35.1 KB
static/temp/slices/tx.png
0 → 100644
3 KB
static/temp/slices/tx@2x.png
0 → 100644
7.21 KB
static/temp/slices/tx@3x.png
0 → 100644
13.2 KB
static/temp/slices/user_01.png
0 → 100644
117 KB
static/temp/slices/user_01@2x.png
0 → 100644
382 KB
static/temp/slices/user_01@3x.png
0 → 100644
737 KB
static/temp/个人中心.png
0 → 100644
309 KB
static/temp/个人中心弹框.png
0 → 100644
281 KB
store/index.js
0 → 100644
store/modules/user.js
0 → 100644
| 1 | import { | ||
| 2 | defineStore | ||
| 3 | } from "pinia"; | ||
| 4 | import { | ||
| 5 | ref | ||
| 6 | } from 'vue' | ||
| 7 | |||
| 8 | export const useUserStore = defineStore('user', () => { | ||
| 9 | const user = ref(null) | ||
| 10 | const perInfo = ref(null) | ||
| 11 | |||
| 12 | const setUser = (value) => { | ||
| 13 | user.value = value | ||
| 14 | } | ||
| 15 | |||
| 16 | const setPerInfo = (value) => { | ||
| 17 | perInfo.value = value | ||
| 18 | } | ||
| 19 | |||
| 20 | return { | ||
| 21 | user, | ||
| 22 | setUser, | ||
| 23 | perInfo, | ||
| 24 | setPerInfo | ||
| 25 | } | ||
| 26 | }) | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or sign in to post a comment