diff --git a/CHANGELOG.md b/CHANGELOG.md index e0c4043..21ace4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ --|--|-- - | 插件接口修改 | [53c6b90](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/53c6b90) - | 解决warning | [dcb0079](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/dcb0079) + - | 删除多余的引入 | [050b12a](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/050b12a) - | 时间轴任务 | [98abdf6](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/98abdf6) - | 修复一些内容 | [3cdb1ce](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/3cdb1ce) app.vue | 修复获取token报错的问题 | [9120d54](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/9120d54) diff --git a/hooks/user/userMixin.js b/hooks/user/userMixin.js index a5b4a0c..0691e14 100644 --- a/hooks/user/userMixin.js +++ b/hooks/user/userMixin.js @@ -82,14 +82,19 @@ export default function userMixin() { ], }; const smsCode = ref(null); // 短信验证码 - const showInterval = ref(false); - const interval = ref(120); + // const showInterval = ref(false); + // const interval = ref(120); const codeTimer = ref(null); - const showPaste = ref(false); + // const showPaste = ref(false); + const dataObj = reactive({ + showInterval: false, + interval: 120, + showPaste: false + }) //有图片验证码的值 function hasvalue(form) { - if(form.smsCode || form.showPaste) return + if(form.smsCode || dataObj.showPaste) return if (!verifyPhone(form.phone)) { uni.$ui.showToast('请输入正确的手机号'); return; @@ -98,24 +103,24 @@ export default function userMixin() { uni.$ui.showToast('请输入图形验证码'); return; } - getCode(); + getCode(form); } // 获取验证码 - async function getCode() { + async function getCode(form) { try { - if (!verificationCodeId.value || !form.verificationCodeValue) { - showToast('缺少图形验证码参数'); + if (!form.verificationCodeId || !form.verificationCodeValue) { + uni.$ui.showToast('缺少图形验证码参数'); return; } const params = { phone: form.phone, - verificationCodeId: verificationCodeId.value, + verificationCodeId: form.verificationCodeId, verificationCodeValue: form.verificationCodeValue, }; const date = await store.dispatch('user/sendCode', params); getCodeInterval(); - showPaste.value = true; + dataObj.showPaste = true; } catch (err) { throw err; } @@ -123,16 +128,16 @@ export default function userMixin() { // 获取验证码倒计时 function getCodeInterval() { - showInterval.value = true; + dataObj.showInterval = true; codeTimer.value = setInterval(() => { - if (interval.value === 0) { + if (dataObj.interval === 0) { clearInterval(codeTimer.value); codeTimer.value = null; - showInterval.value = false; - interval.value = 120; + dataObj.showInterval = false; + dataObj.interval = 120; return; } - interval.value = interval.value - 1; + dataObj.interval = dataObj.interval - 1; }, 1000); } @@ -213,9 +218,10 @@ export default function userMixin() { return { rules, - showPaste, - showInterval, - interval, + // showPaste, + // showInterval, + // interval, + dataObj, hasvalue, checkRules, setCode, diff --git a/pages/user/login.vue b/pages/user/login.vue index 2f375cc..1b2541a 100644 --- a/pages/user/login.vue +++ b/pages/user/login.vue @@ -11,9 +11,9 @@ - - 粘贴 - {{ mixinInit.interval }} + + 粘贴 + {{ mixinInit.dataObj.interval }} @@ -52,13 +52,11 @@ const form = reactive({ phone: '', - verificationCodeValue: '', + verificationCodeId: '', // 图形验证码id + verificationCodeValue: '', // 图形验证码值 smsCode: '' }); const imageBase64 = ref(null); // 图形验证码图片 - const verificationCodeId = ref(null); // 图形验证码id - const data = {}; - const treeId = ref(null); getImageCode(); @@ -80,7 +78,7 @@ try { const data = await uni.$u.api.getImageCode(); imageBase64.value = data.imageBase64 || ''; - verificationCodeId.value = data.verificationCodeId || ''; + form.verificationCodeId = data.verificationCodeId || ''; uni.$ui.hideLoading(); } catch (error) { uni.$ui.hideLoading(); diff --git a/pages/user/mixin.js b/pages/user/mixin.js deleted file mode 100644 index b8420f2..0000000 --- a/pages/user/mixin.js +++ /dev/null @@ -1,266 +0,0 @@ -import { ref, computed } from 'vue'; -import { useStore } from 'vuex'; -import clipboard from "@/common/js/dc-clipboard/clipboard.js" - -export default function mixinInit { - const store = useStore(); - const user = computed(() => store.state.user.user); - const rules = ref({ - phone: [ - { - required: true, - message: '请输入手机号', - trigger: ['change','blur'], - }, - { - validator: (rule, value, callback) => { - // 调用uView自带的js验证规则,详见:https://www.uviewui.com/js/test.html - return this.$u.test.mobile(value); - }, - message: '手机号码不正确', - // 触发器可以同时用blur和change,二者之间用英文逗号隔开 - trigger: ['change','blur'], - } - ], - verificationCodeValue: [ - { - required: true, - message: '请输入图形验证码', - trigger: ['change','blur'], - }, - { - type: 'number', - message: '图形验证码只能为数字', - trigger: ['change','blur'], - } - ], - smsCode: [ - { - required: true, - message: '请输入验证码', - trigger: ['change','blur'], - }, - { - type: 'number', - message: '验证码只能为数字', - trigger: ['change','blur'], - } - ], - account: [ - { - required: true, - message: '请输入用户名', - trigger: ['change','blur'], - }, - { - min: 2, - max: 20, - message: '用户名长度在2到20个字符', - trigger: ['change','blur'], - }, - { - pattern: /^[a-zA-Z0-9._-]{2,20}$/, - message: '请输入2-20位字母、数字、汉字或字符"_ - ."', - trigger: ['change','blur'], - } - ], - password: [ - { - required: true, - message: '请输入密码', - trigger: ['change','blur'], - }, - { - min: 6, - max: 20, - message: '密码长度在6到20个字符', - trigger: ['change','blur'], - }, - { - // 正则不能含有两边的引号 - pattern: /^[a-zA-Z0-9._-]{6,20}$/, - message: '请输入6-20位字母、数字、汉字或字符"_ - ."', - trigger: ['change','blur'], - } - ], - }); - const errorType = ref(['message']); - const labelPosition = ref('left'); - const border = ref(false); - const smsCode = ref(''); // 短信验证码 - const showInterval = ref(false); - const interval = ref(120); - const codeTimer = ref(null); - const showPaste = ref(false); - - return { - errorType, - // getImageCode, - // hasvalue, - // getCode, - // getCodeInterval, - // checkRules, - // setCode, - // getClipboardContents, - // verifyPhone, - // verifyLoginname, - // handleWxLogin - } -} - - -// const mixin = { - // computed: mapState('user', ['user']), - - // onReady() { - // this.$refs.uForm.setRules(this.rules); - // }, - - // methods: { - // ...mapActions('user', ['sendCode']), - - // 获取图形验证码 - // async getImageCode() { - // this.$util.showLoading(); - // try { - // const data = await uni.$u.api.getImageCode(); - // const { imageBase64, verificationCodeId } = data; - // this.imageBase64 = imageBase64 || ''; - // this.verificationCodeId = verificationCodeId || ''; - // uni.hideLoading(); - // } catch (error) { - // uni.hideLoading(); - // uni.$ui.showToast(error); - // } - // }, - - // //有图片验证码的值 - // hasvalue() { - // if(this.model.smsCode || this.model.showPaste) return - // if (!this.verifyPhone(this.model.phone)) { - // uni.$ui.showToast('请输入正确的手机号'); - // return; - // } - // if (!this.model.verificationCodeValue) { - // uni.$ui.showToast('请输入图形验证码'); - // return; - // } - // this.getCode(); - // }, - - // // 获取验证码 - // async getCode() { - // try { - // const { phone, verificationCodeValue } = this.model; - // const { verificationCodeId } = this; - - // if (!verificationCodeId || !verificationCodeValue) { - // uni.$ui.showToast('缺少图形验证码参数'); - // return; - // } - // const params = { - // phone, - // verificationCodeId, - // verificationCodeValue, - // }; - // const date = await store.dispatch('user/sendCode', params); - // getCodeInterval(); - // showPaste.value = true; - // } catch (err) { - // throw err; - // } - // }, - - // // 获取验证码倒计时 - // getCodeInterval() { - // this.showInterval = true; - // this.codeTimer = setInterval(() => { - // if (this.interval === 0) { - // clearInterval(this.codeTimer); - // this.codeTimer = null; - // this.showInterval = false; - // this.interval = 120; - // return; - // } - // this.interval = this.interval - 1; - // }, 1000); - // }, - - // // 验证信息 - // checkRules() { - // // const { smsCode, phone, user } = this; - // if (!this.verifyPhone(phone.value)) { - // uni.$ui.showToast('请输入正确的手机号'); - // return false; - // } - // if (!smsCode.value) { - // uni.$ui.showToast('验证码无效'); - // return false; - // } - - // if (phone.value === user.value.phone) { - // uni.$ui.showToast('新手机号不能与旧手机号相同'); - // return; - // } - // return true; - // }, - - // // 粘贴 - // setCode() { - // // 获取粘贴板内容 - // // 小程序平台 - // //#ifdef MP-WEIXIN - // var _this = this - // uni.getClipboardData({ - // success (res) { - // _this.smsCode = res.data; - // } - // }); - // //#endif - - // // 非小程序平台 - // //#ifndef MP-WEIXIN - // this.getClipboardContents() - // //#endif - // }, - - // // 非小程序平台粘贴 - // async getClipboardContents() { - // try { - // const text = await navigator.clipboard.readText(); - // this.smsCode = text; - // } catch (err) { - // console.error('Failed to read clipboard contents: ', err); - // } - // }, - - // /** - // * 验证手机号格式 - // * @param {string} phone 手机号 - // */ - // verifyPhone(phone) { - // const phoneExg = /^1\d{10}$/; - // return phoneExg.test(phone); - // }, - - // /** - // * 验证账号/密码 格式 - // * @param {string} account 账号 - // */ - // verifyLoginname(account) { - // const accountExg = /^[a-zA-Z0-9._-]{2,20}$/; - // return accountExg.test(account); - // }, - - // // 微信登录 - // handleWxLogin() { - // const origin = 'https://test.tall.wiki/pt-mui'; // 测试 - // const appid = 'wxd1842e073e0e6d91'; - // const state = 'wx_web'; - // const href = 'https://open.weixin.qq.com/connect/qrconnect'; - // // eslint-disable-next-line - // window.location.href = - // `${href}?appid=${appid}&redirect_uri=${origin}&response_type=code&scope=snsapi_login&state=${state}#wechat_redirect`; - // }, - // // } -// }; diff --git a/store/user/actions.js b/store/user/actions.js index bb9dec8..789e60c 100644 --- a/store/user/actions.js +++ b/store/user/actions.js @@ -1,5 +1,3 @@ -import ui from '@/utils/ui.js'; - const actions = { /** * 通过userId获取token @@ -15,7 +13,23 @@ const actions = { uni.$storage.setStorageSync('user', JSON.stringify(res)); return res; } catch (error) { - ui.showToast(error.msg || '获取个人信息失败'); + uni.$ui.showToast(error.msg || '获取个人信息失败'); + throw error; + } + }, + + /** + * 发送验证码 + * @param {ant} commit + * @param {object} params 要提交的数据 + * @param {string} params.phone 手机号 + */ + sendCode({ commit }, params) { + try{ + uni.$u.api.getSmsCode(params); + uni.$ui.showToast('验证码发送成功'); + } catch (error) { + uni.$ui.showToast(error.msg || '发送失败'); throw error; } },