diff --git a/.eslintrc.cjs b/.eslintrc.cjs index e29e48e..457d7c5 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -10,7 +10,8 @@ module.exports = { getApp: 'writable', wx: 'writable', getCurrentPages: 'writable', - requirePlugin: 'writable' + requirePlugin: 'writable', + plus: 'writable' }, // 指定如何解析语法 parser: 'vue-eslint-parser', diff --git a/App.vue b/App.vue index 830976a..2bfcb22 100644 --- a/App.vue +++ b/App.vue @@ -23,13 +23,15 @@ if (envVersionStorage) { return envVersionStorage } + // #ifdef MP-WEIXIN if (this.envVersion === 'develop') { return 'XHJ' } if (this.envVersion === 'trial') { return 'XHJ' } - return 'DEV' + // #endif + return 'XHJ' } }, computed: { @@ -47,7 +49,6 @@ this.onBluetoothState() // 检查蓝牙权限 const checkResult = await this.checkSetting() - console.log(checkResult) if (checkResult === true) { this.initAndListenBluetooth(false) } diff --git a/api/system.js b/api/system.js index c350145..a634343 100644 --- a/api/system.js +++ b/api/system.js @@ -10,3 +10,12 @@ export function getCountryListRequest(data) { data }) } + +// 获取app信息 +export function getAppInfoRequest(data) { + return request({ + url: '/app/getAppInfo', + method: 'POST', + data + }) +} diff --git a/api/user.js b/api/user.js index c927885..a160ff4 100644 --- a/api/user.js +++ b/api/user.js @@ -136,3 +136,12 @@ export function getWebUrlRequest(data) { data }) } + +// 退出登录 +export function logoutRequest(data) { + return request({ + url: '/v3/user/logout', + method: 'POST', + data + }) +} diff --git a/components/verify/utils/request.js b/components/verify/utils/request.js index c6c6f88..8f8d0d3 100644 --- a/components/verify/utils/request.js +++ b/components/verify/utils/request.js @@ -4,12 +4,6 @@ export const myRequest = async (option = {}) => { const envConfig = getApp().globalData.getEnvConfig() const baseConfig = env[envConfig] - console.log('=== 请求入参 ===') - console.log('URL:', baseConfig.baseUrl + option.url) - console.log('Data:', JSON.stringify(option.data || {}, null, 2)) - console.log('Method:', option.method || 'GET') - console.log('================') - return new Promise((resolve, reject) => { uni.request({ url: baseConfig.baseUrl + option.url, @@ -21,10 +15,14 @@ export const myRequest = async (option = {}) => { ...option.header }, success: result => { - console.log('=== 请求出参 ===') - console.log('StatusCode:', result.statusCode) - console.log('Response:', JSON.stringify(result.data, null, 2)) - console.log('================') + console.log({ + url: baseConfig.baseUrl + option.url, + request: option.data, + response: result.data, + statusCode: result.statusCode, + method: option.method, + header: option.header + }) if (result.statusCode === 200) { resolve(result) diff --git a/components/verify/verifySlider/verifySlider.vue b/components/verify/verifySlider/verifySlider.vue index 3752ffb..65b4ddd 100644 --- a/components/verify/verifySlider/verifySlider.vue +++ b/components/verify/verifySlider/verifySlider.vue @@ -323,31 +323,14 @@ xWidth: Math.round(moveLeftDistance) } - console.log('=== 滑动验证请求参数 ===') - console.log('params:', JSON.stringify(_this.params, null, 2)) - console.log('moveLeftDistance:', moveLeftDistance) - console.log('captchaVerification:', captchaVerification) - console.log('token:', _this.backToken) - console.log('data:', JSON.stringify(data, null, 2)) - console.log('=====================') - myRequest({ url: `/user/sendValidationCode`, data, method: 'POST' }) .then(result => { - console.log('=== 滑动验证响应数据 ===') - console.log('result:', JSON.stringify(result, null, 2)) - console.log('=====================') - if (result && result.data) { let res = result.data - console.log('=== 验证结果详情 ===') - console.log('errorCode:', res.errorCode) - console.log('errorMsg:', res.errorMsg) - console.log('res.data:', JSON.stringify(res.data, null, 2)) - console.log('==================') if (res.errorCode === 0) { this.moveBlockBackgroundColor = '#5cb85c' @@ -377,9 +360,8 @@ } }) .catch(error => { - console.log('=== 滑动验证请求错误 ===') console.log('error:', error) - console.log('=====================') + this.handleValidationError('网络错误,请重试') }) } @@ -455,11 +437,6 @@ captchaType: this.captchaType || 'blockPuzzle' } - console.log('=== getPictrue 请求参数 ===') - console.log('params:', JSON.stringify(this.params, null, 2)) - console.log('data:', JSON.stringify(data, null, 2)) - console.log('========================') - myRequest({ url: '/user/getSliderVerifyImg', data, @@ -469,9 +446,6 @@ this.loading = false if (result && result.data) { let res = result.data - console.log('=== getPictrue 响应数据 ===') - console.log('res:', JSON.stringify(res, null, 2)) - console.log('========================') if (res.errorCode === 0 && res.data) { this.backImgBase = res.data.bigImg diff --git a/manifest.json b/manifest.json index f1b7ea3..c6b79b4 100644 --- a/manifest.json +++ b/manifest.json @@ -1,42 +1,109 @@ { - "name" : "wx-starlock", - "appid" : "__UNI__933D519", - "description" : "", - "versionName" : "1.3.0", - "versionCode" : "37", - "mp-weixin" : { - "appid" : "wx9829a39e65550757", - "setting" : { - "urlCheck" : true, - "minified" : true - }, - "permission" : { - "scope.bluetooth" : { - "desc" : "蓝牙将用于控制和管理您的智能门锁" - } - }, - "requiredPrivateInfos" : [ "getLocation" ], - "usingComponents" : true, - "lazyCodeLoading" : "requiredComponents", - "optimization" : { - "subPackages" : true - }, - "plugins" : { - "xp2p" : { - "version" : "latest", - "provider" : "wx1319af22356934bf", - "export" : "exportForXp2pPlugin.js" - }, - "wmpf-voip" : { - "version" : "latest", - "provider" : "wxf830863afde621eb", - "genericsImplementation" : { - "call-page-plugin" : { - "custombox" : "pages/main/customBox" - } - } - } - } + "name": "星星锁Lite", + "appid": "__UNI__933D519", + "description": "", + "versionName": "1.3.0", + "versionCode": "37", + "mp-weixin": { + "appid": "wx9829a39e65550757", + "setting": { + "urlCheck": true, + "minified": true }, - "vueVersion" : "3" + "permission": { + "scope.bluetooth": { + "desc": "蓝牙将用于控制和管理您的智能门锁" + } + }, + "requiredPrivateInfos": ["getLocation"], + "usingComponents": true, + "lazyCodeLoading": "requiredComponents", + "optimization": { + "subPackages": true + }, + "plugins": { + "xp2p": { + "version": "latest", + "provider": "wx1319af22356934bf", + "export": "exportForXp2pPlugin.js" + }, + "wmpf-voip": { + "version": "latest", + "provider": "wxf830863afde621eb", + "genericsImplementation": { + "call-page-plugin": { + "custombox": "pages/main/customBox" + } + } + } + } + }, + "vueVersion": "3", + "app-plus": { + "distribute": { + "icons": { + "android": { + "hdpi": "unpackage/res/icons/72x72.png", + "xhdpi": "unpackage/res/icons/96x96.png", + "xxhdpi": "unpackage/res/icons/144x144.png", + "xxxhdpi": "unpackage/res/icons/192x192.png" + }, + "ios": { + "appstore": "unpackage/res/icons/1024x1024.png", + "ipad": { + "app": "unpackage/res/icons/76x76.png", + "app@2x": "unpackage/res/icons/152x152.png", + "notification": "unpackage/res/icons/20x20.png", + "notification@2x": "unpackage/res/icons/40x40.png", + "proapp@2x": "unpackage/res/icons/167x167.png", + "settings": "unpackage/res/icons/29x29.png", + "settings@2x": "unpackage/res/icons/58x58.png", + "spotlight": "unpackage/res/icons/40x40.png", + "spotlight@2x": "unpackage/res/icons/80x80.png" + }, + "iphone": { + "app@2x": "unpackage/res/icons/120x120.png", + "app@3x": "unpackage/res/icons/180x180.png", + "notification@2x": "unpackage/res/icons/40x40.png", + "notification@3x": "unpackage/res/icons/60x60.png", + "settings@2x": "unpackage/res/icons/58x58.png", + "settings@3x": "unpackage/res/icons/87x87.png", + "spotlight@2x": "unpackage/res/icons/80x80.png", + "spotlight@3x": "unpackage/res/icons/120x120.png" + } + } + }, + "android": { + "permissions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + } + }, + "modules": { + "Bluetooth": {} + }, + "splashscreen": { + "waiting": false + } + } } diff --git a/pages.json b/pages.json index b06cfb4..cf2e4a7 100644 --- a/pages.json +++ b/pages.json @@ -116,19 +116,22 @@ { "path": "login", "style": { - "navigationBarTitleText": "登录" + "navigationBarTitleText": "登录", + "disableScroll": true } }, { "path": "register", "style": { - "navigationBarTitleText": "注册" + "navigationBarTitleText": "注册", + "disableScroll": true } }, { "path": "forgotPassword", "style": { - "navigationBarTitleText": "忘记密码" + "navigationBarTitleText": "忘记密码", + "disableScroll": true } }, { diff --git a/pages/addDevice/searchDevice.vue b/pages/addDevice/searchDevice.vue index 50274ba..e2519db 100644 --- a/pages/addDevice/searchDevice.vue +++ b/pages/addDevice/searchDevice.vue @@ -130,8 +130,8 @@ nowTime: this.serverTimestamp, localTime: timestamp }) + uni.hideLoading() if (code !== 0) { - uni.hideLoading() uni.showToast({ title: '连接失败,请靠近设备并保持设备处于唤醒状态', icon: 'none' diff --git a/pages/feature/createKey.vue b/pages/feature/createKey.vue index 9aa6a21..0c60bed 100644 --- a/pages/feature/createKey.vue +++ b/pages/feature/createKey.vue @@ -275,7 +275,9 @@ } const { code, data, message } = await createKeyRequest(params) if (code === 0) { + // #ifdef MP-WEIXIN uni.reportEvent('create_key', {}) + // #endif this.updateKeySearch({ ...this.keySearch, pageNo: 1 diff --git a/pages/feature/createPassword.vue b/pages/feature/createPassword.vue index d6cf61b..fb2bb49 100644 --- a/pages/feature/createPassword.vue +++ b/pages/feature/createPassword.vue @@ -455,7 +455,9 @@ }) uni.hideLoading() if (requestCode === 0) { + // #ifdef MP-WEIXIN uni.reportEvent('create_password', {}) + // #endif $lock.updatePasswordSearch({ ...$lock.passwordSearch, pageNo: 1 @@ -562,7 +564,10 @@ } const { code, data, message } = await createPsaawordRequest(params) if (code === 0) { + // #ifdef MP-WEIXIN uni.reportEvent('create_password', {}) + // #endif + $lock.updatePasswordSearch({ ...$lock.passwordSearch, pageNo: 1 @@ -638,23 +643,23 @@ } .text { + padding: 0 32rpx; margin-top: 40rpx; margin-bottom: 50rpx; - color: #262626; font-size: 26rpx; - padding: 0 32rpx; + color: #262626; } .button { - border-radius: 64rpx; width: 686rpx; - margin-left: 32rpx; height: 100rpx; - line-height: 100rpx; - text-align: center; - background-color: #63b8af; - color: #fff; + margin-left: 32rpx; font-size: 32rpx; font-weight: bold; + line-height: 100rpx; + color: #fff; + text-align: center; + background-color: #63b8af; + border-radius: 64rpx; } diff --git a/pages/main/customBox.vue b/pages/main/customBox.vue index 50031ff..17b474e 100644 --- a/pages/main/customBox.vue +++ b/pages/main/customBox.vue @@ -129,10 +129,12 @@ $bluetooth.closeBluetoothConnection() }) + // #ifdef MP-WEIXIN uni.reportEvent('open_door', { result: code, duration: new Date().getTime() - timestamp }) + // #endif if (code === 0) { uni.showToast({ diff --git a/pages/main/lockDetail.vue b/pages/main/lockDetail.vue index 0b72e2e..2b85cb3 100644 --- a/pages/main/lockDetail.vue +++ b/pages/main/lockDetail.vue @@ -363,15 +363,19 @@ onlineToken: onlineToken.value }) if (type === 'open') { + // #ifdef MP-WEIXIN uni.reportEvent('open_door', { result: code, duration: new Date().getTime() - timestamp }) + // #endif } else if (type === 'close') { + // #ifdef MP-WEIXIN uni.reportEvent('close_door', { result: code, duration: new Date().getTime() - timestamp }) + // #endif } if (code === 0) { $bluetooth diff --git a/pages/main/mine.vue b/pages/main/mine.vue index 4a3e249..42e9c8e 100644 --- a/pages/main/mine.vue +++ b/pages/main/mine.vue @@ -11,6 +11,7 @@ > + + + + + + 客服 + + + + 公司介绍 @@ -56,9 +70,14 @@ >切换环境 + + + + + 因智能门锁与账号绑定,登录为手机号登录 @@ -68,9 +87,13 @@ {{ env.name }} {{ env.version }}+{{ env.buildNumber }} {{ env.baseUrl.split('/').slice(0, 3).join('/') }} - 切换环境 + 切换环境 + @@ -105,10 +128,11 @@ import { useBasicStore } from '@/stores/basic' import { useUserStore } from '@/stores/user' import { useLockStore } from '@/stores/lock' - import { phoneLoginRequest } from '@/api/user' + import { phoneLoginRequest, logoutRequest } from '@/api/user' import env from '@/config/env' import { setStorage, getStorage, removeStorage } from '@/utils/storage' import { useNotificationStore } from '@/stores/notification' + import { getAppInfoRequest } from '@/api/system' export default { data() { @@ -117,7 +141,8 @@ env: null, envVersion: '', envList: [], - show: false + show: false, + nodeEnv: '' } }, computed: { @@ -129,6 +154,8 @@ this.buttonInfo = await this.getButtonInfo() this.env = await env[await getApp().globalData.getEnvConfig()] this.envVersion = getApp().globalData.envVersion + this.nodeEnv = process.env.NODE_ENV + // eslint-disable-next-line guard-for-in,no-restricted-syntax for (let key in env) { this.envList.push({ @@ -136,7 +163,6 @@ key }) } - console.log(this.envList) }, methods: { ...mapActions(useBasicStore, ['getButtonInfo', 'routeJump']), @@ -159,6 +185,13 @@ url: '/pages/main/home' }) }, + toContact() { + getAppInfoRequest().then(res => { + if (res.code === 0) { + plus.runtime.openURL(res.data.wechat_service_url) + } + }) + }, async changePhone(res) { if (res.detail.errMsg === 'getPhoneNumber:fail user deny') { return @@ -260,6 +293,25 @@ type } }) + }, + logout() { + uni.showModal({ + title: '提示', + content: '确定退出登录吗?', + success: async res => { + if (res.confirm) { + await logoutRequest() + removeStorage('token') + removeStorage('openid') + removeStorage('userInfo') + removeStorage('lockList') + this.routeJump({ + name: 'login', + type: 'reLaunch' + }) + } + } + }) } } } diff --git a/pages/main/notificationList.vue b/pages/main/notificationList.vue index 17337d0..89956f9 100644 --- a/pages/main/notificationList.vue +++ b/pages/main/notificationList.vue @@ -322,18 +322,18 @@ } .u-swipe-action { - overflow: inherit !important; - width: 700rpx; display: flex; flex-wrap: wrap; justify-content: space-between; + width: 700rpx; padding-bottom: 140rpx !important; + overflow: inherit !important; } .u-swipe-action-item { overflow: inherit !important; - border-radius: 32rpx !important; background: transparent !important; + border-radius: 32rpx !important; } .u-swipe-action-item__right { @@ -342,8 +342,8 @@ } .u-swipe-action-item__content { - border-radius: 32rpx !important; margin-left: 25rpx; + border-radius: 32rpx !important; } .u-swipe-action-item__right__button { @@ -357,14 +357,14 @@ } .notification { - border-radius: 32rpx; - margin-top: 32rpx; + position: relative; display: flex; + align-items: center; + justify-content: space-between; width: 636rpx; padding: 32rpx; - justify-content: space-between; - align-items: center; - position: relative; + margin-top: 32rpx; + border-radius: 32rpx; box-shadow: 2rpx 2rpx 10rpx rgba(0, 0, 0, 0.3); .icon { @@ -373,44 +373,44 @@ } .point { + position: absolute; + top: 41rpx; + left: 72rpx; width: 16rpx; height: 16rpx; background-color: #ff0000; border-radius: 50%; - position: absolute; - top: 41rpx; - left: 72rpx; } .content { width: 550rpx; - font-size: 28rpx; - color: #6c6c6c; - white-space: nowrap; overflow: hidden; text-overflow: ellipsis; + font-size: 28rpx; font-weight: bold; + color: #6c6c6c; + white-space: nowrap; } .time { - font-size: 24rpx; - color: #6c6c6c; margin-top: 5rpx; + font-size: 24rpx; font-weight: bold; + color: #6c6c6c; } } .delete { + position: fixed; + right: 30rpx; + bottom: 80rpx; + display: flex; + align-items: center; + justify-content: center; width: 100rpx; height: 100rpx; - border-radius: 50%; background-color: #5db5aa; - position: fixed; - bottom: 80rpx; - right: 30rpx; - display: flex; - justify-content: center; - align-items: center; + border-radius: 50%; .delete-image { width: 45rpx; @@ -426,29 +426,29 @@ } .empty-list-text { - text-align: center; font-size: 32rpx; color: #999999; + text-align: center; } .tips { - margin-top: 40vh; padding: 32rpx 0; - text-align: center; + margin-top: 40vh; font-size: 28rpx; color: #999999; + text-align: center; } .button-login { - border-radius: 46rpx; width: 650rpx; height: 120rpx; - line-height: 120rpx; - text-align: center; margin-left: 50rpx; - background: #63b8af; - color: #ffffff; font-size: 48rpx; font-weight: bold; + line-height: 120rpx; + color: #ffffff; + text-align: center; + background: #63b8af; + border-radius: 46rpx; } diff --git a/pages/p2p/authorizeWechat.vue b/pages/p2p/authorizeWechat.vue index a87155f..7687be8 100644 --- a/pages/p2p/authorizeWechat.vue +++ b/pages/p2p/authorizeWechat.vue @@ -78,15 +78,20 @@ const data = list.value.find(item => item.sn === authResult.data.wxDeviceSn) - if (authResult?.code === 0 && authResult?.data?.wxOpenid === getStorage('openid') && data) { - isAuthorized.value = true - requestFinish.value = true - if (data.status === 1) { - reject.value = false - } else if (data.status === 0) { + if (authResult?.code === 0 && data) { + if (authResult?.data?.wxOpenid === getStorage('openid')) { + if (data.status === 1) { + reject.value = false + } else if (data.status === 0) { + reject.value = false + weChatTicketsFlag.value = false + } + } else { reject.value = true weChatTicketsFlag.value = true } + isAuthorized.value = true + requestFinish.value = true uni.hideLoading() } else { requestFinish.value = true @@ -125,6 +130,8 @@ }) uni.hideLoading() isAuthorized.value = true + reject.value = false + weChatTicketsFlag.value = false } else { uni.hideLoading() uni.showToast({ @@ -165,10 +172,10 @@ return result } - const weChatTickets = async (snTicket, sn) => { - let ticket = snTicket - let snResult = sn - if (!snTicket) { + const weChatTickets = async () => { + let ticket = null + let snResult = null + if (!ticket) { const result = await getInfo() ticket = result.data.WXIoTDeviceInfo.SNTicket snResult = result.data.WXIoTDeviceInfo.SN @@ -220,6 +227,8 @@ wxDeviceSn: result.data.WXIoTDeviceInfo.SN } }) + reject.value = false + weChatTicketsFlag.value = false uni.showToast({ title: '授权成功', icon: 'none' diff --git a/pages/p2p/p2pPlayer.vue b/pages/p2p/p2pPlayer.vue index 3ae152b..2359966 100644 --- a/pages/p2p/p2pPlayer.vue +++ b/pages/p2p/p2pPlayer.vue @@ -286,10 +286,12 @@ $bluetooth.closeBluetoothConnection() }) + // #ifdef MP-WEIXIN uni.reportEvent('open_door', { result: code, duration: new Date().getTime() - timestamp }) + // #endif if (code === 0) { uni.showToast({ diff --git a/pages/user/forgotPassword.vue b/pages/user/forgotPassword.vue index 5ee60d9..65cff42 100644 --- a/pages/user/forgotPassword.vue +++ b/pages/user/forgotPassword.vue @@ -131,6 +131,8 @@ const seconds = ref(120) const uCodeRef = ref(null) + const pending = ref(false) + const codeChange = text => { tips.value = text } @@ -142,7 +144,8 @@ const params = { account: username.value, codeType: 2, - countryCode: country.value.code + countryCode: country.value.code, + channel: EMAIL_REG.test(username.value) ? 2 : 1 } $basic.routeJump({ name: 'safeVerify', @@ -202,14 +205,28 @@ if (!canResetPassword.value) { return } + if (pending.value) { + return + } + pending.value = true + uni.showLoading({ + title: '重置中' + }) const res = await resetPasswordRequest({ account: username.value, newPassword: password.value, countryCode: country.value.code, verificationCode: code.value }) - if (res) { + pending.value = false + uni.hideLoading() + if (res.code === 0) { $basic.backAndToast('密码重置成功') + } else { + uni.showToast({ + title: res.message, + icon: 'none' + }) } } diff --git a/pages/user/login.vue b/pages/user/login.vue index 7d1838d..c58f46b 100644 --- a/pages/user/login.vue +++ b/pages/user/login.vue @@ -99,6 +99,8 @@ const select = ref(false) + const pending = ref(false) + const isValidUsername = computed(() => { if (!username.value) return false return PHONE_REG.test(username.value) || EMAIL_REG.test(username.value) @@ -155,11 +157,16 @@ }) return } + if (pending.value) { + return + } + pending.value = true const res = await $user.passwordLogin({ username: username.value, password: password.value, countryCode: country.value.code }) + pending.value = false if (res) { $basic.routeJump({ name: 'home', diff --git a/pages/user/register.vue b/pages/user/register.vue index cd0aff3..00b2ed4 100644 --- a/pages/user/register.vue +++ b/pages/user/register.vue @@ -170,6 +170,8 @@ const uCodeRef = ref(null) const select = ref(false) + const pending = ref(false) + onMounted(async () => { const res = await $basic.getDeviceInfo() if (res.language !== 'zh-CN') { @@ -263,6 +265,11 @@ }) return } + if (pending.value) { + return + } + + pending.value = true const res = await $user.register({ account: username.value, password: password.value, @@ -270,6 +277,7 @@ countryCode: country.value.code, verificationCode: code.value }) + pending.value = false if (res) { $basic.routeJump({ name: 'home', diff --git a/pages/user/updateEmail.vue b/pages/user/updateEmail.vue index 1999c9a..441b380 100644 --- a/pages/user/updateEmail.vue +++ b/pages/user/updateEmail.vue @@ -168,28 +168,27 @@ } .input-email { - border-radius: 16rpx; - background: #ffffff; - margin-left: 35rpx; - margin-top: 48rpx; - height: 108rpx; width: 616rpx; - padding-left: 32rpx; + height: 108rpx; padding-right: 32rpx; + padding-left: 32rpx; + margin-top: 48rpx; + margin-left: 35rpx; + background: #ffffff; + border-radius: 16rpx; } .button-verify { - margin-top: 48rpx; - height: 108rpx; width: 265rpx; - line-height: 108rpx; - border-radius: 16rpx; - text-align: center; - font-size: 32rpx; + height: 108rpx; + margin-top: 48rpx; margin-left: 35rpx; - - background: #63b8af; + font-size: 32rpx; + line-height: 108rpx; color: #ffffff; + text-align: center; + background: #63b8af; + border-radius: 16rpx; } .view-top { @@ -198,14 +197,14 @@ } .input-verify { - border-radius: 16rpx; - background: #ffffff; - margin-left: 35rpx; - margin-top: 48rpx; - height: 108rpx; width: 316rpx; - padding-left: 32rpx; + height: 108rpx; padding-right: 32rpx; + padding-left: 32rpx; + margin-top: 48rpx; + margin-left: 35rpx; + background: #ffffff; + border-radius: 16rpx; } .input-placeholder { @@ -216,15 +215,15 @@ } .button { - margin-top: 32rpx; - margin-left: 35rpx; width: 680rpx; height: 96rpx; + margin-top: 32rpx; + margin-left: 35rpx; + font-size: 32rpx; + line-height: 96rpx; + color: #ffffff; + text-align: center; background: #63b8af; border-radius: 16rpx; - line-height: 96rpx; - text-align: center; - font-size: 32rpx; - color: #ffffff; } diff --git a/pages/user/updateName.vue b/pages/user/updateName.vue index 229b3b5..ca237d2 100644 --- a/pages/user/updateName.vue +++ b/pages/user/updateName.vue @@ -84,14 +84,14 @@ diff --git a/pages/user/updatePassword.vue b/pages/user/updatePassword.vue index 031d61b..ba2acca 100644 --- a/pages/user/updatePassword.vue +++ b/pages/user/updatePassword.vue @@ -145,14 +145,14 @@ diff --git a/pages/user/userInfo.vue b/pages/user/userInfo.vue index d69cfe3..c6f907b 100644 --- a/pages/user/userInfo.vue +++ b/pages/user/userInfo.vue @@ -1,6 +1,7 @@