修复部分验证码问题

This commit is contained in:
xiangheng
2024-06-04 01:16:50 +08:00
parent 89eb9ccc72
commit 6471a7ea23
10 changed files with 1820 additions and 1889 deletions

View File

@@ -2,16 +2,14 @@
"version" : "1.0", "version" : "1.0",
"configurations" : [ "configurations" : [
{ {
"playground" : "custom", "playground" : "standard",
"type" : "uni-app:app-android" "type" : "uni-app:app-android"
}, },
{ {
"app-plus" : "app-plus" : {
{
"launchtype" : "local" "launchtype" : "local"
}, },
"mp-weixin" : "mp-weixin" : {
{
"launchtype" : "local" "launchtype" : "local"
}, },
"type" : "uniCloud" "type" : "uniCloud"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,54 +1,25 @@
<template> <template>
<view :class="mode == 'pop' ? 'mask' : ''" v-show="showBox"> <view :class="mode == 'pop' ? 'mask' : ''" v-show="showBox">
<view <view :class="mode == 'pop' ? 'verifybox' : ''" :style="{ 'max-width': parseInt(imgSize.width) + 30 + 'px' }">
:class="mode == 'pop' ? 'verifybox' : ''"
:style="{ 'max-width': parseInt(imgSize.width) + 30 + 'px' }"
>
<view class="verifybox-top" v-if="mode == 'pop'"> <view class="verifybox-top" v-if="mode == 'pop'">
请完成安全验证 请完成安全验证
<text class="verifybox-close" @click="clickShow = false"> <text class="verifybox-close" @click="clickShow = false">
<text class="iconfont icon-close"></text> <text class="iconfont icon-close"></text>
</text> </text>
</view> </view>
<view <view class="verifybox-bottom" :style="{ padding: mode == 'pop' ? '15px' : '0' }">
class="verifybox-bottom"
:style="{ padding: mode == 'pop' ? '15px' : '0' }"
>
<!-- 验证码容器 --> <!-- 验证码容器 -->
<!-- 滑动 --> <!-- 滑动 -->
<view v-if="componentType == 'VerifySlide'"> <view v-if="componentType == 'VerifySlide'">
<VerifySlide <VerifySlide @success="success" :captchaType="captchaType" :type="verifyType" :figure="figure"
@success="success" :arith="arith" :mode="mode" :vSpace="vSpace" :explain="explain" :imgSize="imgSize"
:captchaType="captchaType" :blockSize="blockSize" :barSize="barSize" ref="VerifySlideInstance"></VerifySlide>
:type="verifyType"
:figure="figure"
:arith="arith"
:mode="mode"
:vSpace="vSpace"
:explain="explain"
:imgSize="imgSize"
:blockSize="blockSize"
:barSize="barSize"
:defaultImg="defaultImg"
ref="instance"
></VerifySlide>
</view> </view>
<!-- 点选 --> <!-- 点选 -->
<view v-if="componentType == 'VerifyPoints'"> <view v-if="componentType == 'VerifyPoints'">
<VerifyPoint <VerifyPoint :captchaType="captchaType" :type="verifyType" :figure="figure" :arith="arith"
:captchaType="captchaType" :mode="mode" :vSpace="vSpace" :explain="explain" :imgSize="imgSize" :blockSize="blockSize"
:type="verifyType" :barSize="barSize" ref="VerifyPointsInstance"></VerifyPoint>
:figure="figure"
:arith="arith"
:mode="mode"
:vSpace="vSpace"
:explain="explain"
:imgSize="imgSize"
:blockSize="blockSize"
:barSize="barSize"
:defaultImg="defaultImg"
ref="instance"
></VerifyPoint>
</view> </view>
</view> </view>
</view> </view>
@@ -59,9 +30,9 @@
* Verify 验证码组件 * Verify 验证码组件
* @description 分发验证码使用 * @description 分发验证码使用
* */ * */
import VerifySlide from "./verifySlider/verifySlider"; import VerifySlide from "./verifySlider/verifySlider.vue";
import VerifyPoint from "./verifyPoint/verifyPoint"; import VerifyPoint from "./verifyPoint/verifyPoint.vue";
import defaultJpg from "@/static/default.jpg";
export default { export default {
name: "Vue2Verify", name: "Vue2Verify",
components: { components: {
@@ -118,13 +89,10 @@ export default {
// showBox:true, // showBox:true,
clickShow: false, clickShow: false,
defaultImg: defaultJpg,
}; };
}, },
computed: { computed: {
instance() {
return this.$refs.instance || {};
},
showBox() { showBox() {
if (this.mode == "pop") { if (this.mode == "pop") {
return this.clickShow; return this.clickShow;
@@ -144,7 +112,7 @@ export default {
if (this.captchaType == "blockPuzzle") { if (this.captchaType == "blockPuzzle") {
return "VerifySlide"; return "VerifySlide";
} else { } else {
return "VerifyPoint"; return "VerifyPoints";
} }
}, },
}, },
@@ -187,8 +155,10 @@ export default {
* @description 刷新 * @description 刷新
* */ * */
refresh() { refresh() {
if (this.instance.refresh) { if (this.captchaType == "blockPuzzle") {
this.instance.refresh(); this.$refs.VerifySlideInstance?.refresh();
} else {
this.$refs.VerifyPointsInstance?.refresh();
} }
}, },
show() { show() {
@@ -211,6 +181,7 @@ export default {
top: 50%; top: 50%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
} }
.verifybox-top { .verifybox-top {
padding: 0 15px; padding: 0 15px;
height: 50px; height: 50px;
@@ -221,10 +192,12 @@ export default {
border-bottom: 1px solid #e4e7eb; border-bottom: 1px solid #e4e7eb;
box-sizing: border-box; box-sizing: border-box;
} }
.verifybox-bottom { .verifybox-bottom {
/* padding: 15px; */ /* padding: 15px; */
box-sizing: border-box; box-sizing: border-box;
} }
.verifybox-close { .verifybox-close {
position: absolute; position: absolute;
top: 13px; top: 13px;
@@ -234,6 +207,7 @@ export default {
text-align: center; text-align: center;
cursor: pointer; cursor: pointer;
} }
.mask { .mask {
position: fixed; position: fixed;
top: 0; top: 0;
@@ -245,6 +219,7 @@ export default {
/* display: none; */ /* display: none; */
transition: all 0.5s; transition: all 0.5s;
} }
.verify-tips { .verify-tips {
position: absolute; position: absolute;
left: 0px; left: 0px;
@@ -255,14 +230,17 @@ export default {
line-height: 30px; line-height: 30px;
color: #fff; color: #fff;
} }
.tips-enter, .tips-enter,
.tips-leave-to { .tips-leave-to {
bottom: -30px; bottom: -30px;
} }
.tips-enter-active, .tips-enter-active,
.tips-leave-active { .tips-leave-active {
transition: bottom 0.5s; transition: bottom 0.5s;
} }
/* ---------------------------- */ /* ---------------------------- */
/*常规验证码*/ /*常规验证码*/
.verify-code { .verify-code {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -33,33 +33,12 @@
let text = ["Fota", "轻松管理"]; let text = ["Fota", "轻松管理"];
let baseList = [ let baseList = [{
// {
// icon: "/static/index/product.png",
// path: "/pages/product/product",
// title: "产品",
// },
// {
// icon: "/static/index/group.png",
// path: "/pages/group/group",
// title: "分组",
// },
// {
// icon: "/static/index/version.png",
// path: "/pages/version/version",
// title: "版本",
// },
{
icon: "/static/index/equipment.png", icon: "/static/index/equipment.png",
path: "/pages/monitor_project/index", path: "/pages/monitor_project/index",
title: "项目监控", title: "项目监控",
}, },
{
icon: "/static/index/equipment.png",
path: "/pages/equipment/equipment",
title: "设备管理",
},
{ {
icon: "scan", icon: "scan",
@@ -83,26 +62,8 @@
}); });
}, },
}, },
{
icon: "/static/index/equipmentLog.png",
path: "/pages/statistics/statistics",
title: "销量统计",
},
// {
// icon: "/static/index/sysUp.png",
// path: "/pages/log/sysUp/sysUp",
// title: "上行日志",
// },
// {
// icon: "/static/index/sysDown.png",
// path: "/pages/log/sysDown/sysDown",
// title: "下行日志",
// },
// {
// icon: "/static/index/log.png",
// path: "/pages/log/sysLog/sysLog",
// title: "系统日志",
// },
]; ];
function toList(item) { function toList(item) {

View File

@@ -1,64 +1,30 @@
<template> <template>
<view> <view>
<uv-form <uv-form class="form" ref="form" labelWidth="60" labelAlign="right" :model="model" :rules="rules">
class="form"
ref="form"
labelWidth="60"
labelAlign="right"
:model="model"
:rules="rules"
>
<uv-form-item class="hide"> <uv-form-item class="hide">
<uv-input <uv-input class="hide" v-model="model.username" placeholder="请输入账号"
class="hide" :rules="[{ required: true, message: '请填写账号' }]" />
v-model="model.username"
placeholder="请输入账号"
:rules="[{ required: true, message: '请填写账号' }]"
/>
</uv-form-item> </uv-form-item>
<uv-form-item class="hide"> <uv-form-item class="hide">
<uv-input <uv-input type="password" v-model="model.password" placeholder="请输入密码"
type="password" :rules="[{ required: true, message: '请填写密码' }]" />
v-model="model.password"
placeholder="请输入密码"
:rules="[{ required: true, message: '请填写密码' }]"
/>
</uv-form-item> </uv-form-item>
<uv-form-item label="账号" name="username" prop="username"> <uv-form-item label="账号" name="username" prop="username">
<uv-input <uv-input v-model="model.username" placeholder="请输入账号"
v-model="model.username" :rules="[{ required: true, message: '请填写账号' }]" />
placeholder="请输入账号"
:rules="[{ required: true, message: '请填写账号' }]"
/>
</uv-form-item> </uv-form-item>
<uv-form-item label="密码" name="password" prop="password"> <uv-form-item label="密码" name="password" prop="password">
<uv-input <uv-input type="password" v-model="model.password" placeholder="请输入密码"
type="password" :rules="[{ required: true, message: '请填写密码' }]" />
v-model="model.password"
placeholder="请输入密码"
:rules="[{ required: true, message: '请填写密码' }]"
/>
</uv-form-item> </uv-form-item>
<Verify <Verify :mode="'pop'" :captchaType="'blockPuzzle'" ref="verifyRef"
@success="VerifySuccess" :imgSize="{ width: '310px', height: '155px' }" @success="VerifySuccess"></Verify>
:mode="'pop'"
:captchaType="'blockPuzzle'"
ref="verifyRef"
:imgSize="{ width: '310px', height: '155px' }"
></Verify>
<view class="footer"> <view class="footer">
<!-- --> <!-- -->
<wd-button class="btn" size="large" @click="VerifyShow" block <wd-button class="btn" size="large" @click="VerifyShow" block>登录</wd-button>
>VerifyShow</wd-button
>
<wd-button class="btn" size="large" @click="handleSubmit" block
>登录</wd-button
>
</view> </view>
</uv-form> </uv-form>
</view> </view>
@@ -66,20 +32,18 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ref, reactive } from "vue"; import { ref, reactive } from "vue";
import { v1 as uuid_v1 } from "uuid";
import Verify from "@/components/verifition/verify"; import Verify from "@/components/verify/verify.vue";
import { login } from "@/api/user.js"; import { login } from "@/api/user.js";
import { setLocalStorage } from "@/utils/storage.js"; import { setLocalStorage } from "@/utils/storage.js";
import { toast } from "@/utils/utils.js"; import { alert } from "@/utils/utils.js";
// import appicon from "@/static/appicon.png"; // import appicon from "@/static/appicon.png";
import { useUserStore } from "@/stores/user"; import { useUserStore } from "@/stores/user";
const userStore = useUserStore(); const userStore = useUserStore();
const model = reactive({ const model = reactive({
username: "", username: "",
password: "", password: "",
@@ -99,17 +63,16 @@ const rules = {
trigger: ["blur", "change"], trigger: ["blur", "change"],
}, },
], ],
}; };
const form = ref(); const form = ref();
const verifyRef=ref() const verifyRef = ref();
function VerifyShow(e) { function VerifyShow(e) {
verifyRef.value.show() verifyRef.value.show();
} }
function VerifySuccess(e) { function VerifySuccess(e) {
console.log('VerifySuccess',e); console.log("VerifySuccess", e);
handleSubmit(e) handleSubmit(e);
} }
function handleSubmit(verify) { function handleSubmit(verify) {
form.value form.value
@@ -119,7 +82,7 @@ function handleSubmit(verify) {
username: model.username, username: model.username,
password: model.password, password: model.password,
...verify ...verify,
}; };
// userStore.getUser(); // userStore.getUser();
@@ -135,16 +98,15 @@ function handleSubmit(verify) {
}); });
}); });
} else { } else {
alert(res.message);
toast(res.message);
} }
}) })
.catch((err) => { .catch((err) => {
toast(err.message); alert(err.message);
}); });
}) })
.catch((err) => { .catch((err) => {
toast(err.message); alert(err.message);
}); });
} }
</script> </script>