import { ref, computed } from 'vue'; import { useStore } from 'vuex'; import clipboard from "@/common/js/dc-clipboard/clipboard.js" export default function userMixin() { 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 = ['message']; const labelPosition = 'left'; const border = false; const smsCode = ref(''); // 短信验证码 const showInterval = ref(false); const interval = ref(120); const codeTimer = ref(null); const showPaste = ref(false); // 获取图形验证码 async function getImageCode() { console.log('5555') uni.$ui.showLoading(); try { const data = await uni.$u.api.getImageCode(); const { imageBase64, verificationCodeId } = data; imageBase64 = imageBase64 || ''; verificationCodeId = verificationCodeId || ''; uni.$ui.hideLoading(); } catch (error) { uni.$ui.hideLoading(); uni.$ui.showToast(error); } } return { rules, errorType, labelPosition, border, getImageCode, // hasvalue, // getCode, // getCodeInterval, // checkRules, // setCode, // getClipboardContents, // verifyPhone, // verifyLoginname, // handleWxLogin } }