mirror of
https://gitee.com/xiangheng/x_admin.git
synced 2025-10-06 08:37:12 +08:00
修复部分验证码问题
This commit is contained in:
@@ -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
@@ -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 {
|
573
x_admin_app/components/verify/verifyPoint/verifyPoint.vue
Normal file
573
x_admin_app/components/verify/verifyPoint/verifyPoint.vue
Normal file
File diff suppressed because one or more lines are too long
684
x_admin_app/components/verify/verifySlider/verifySlider.vue
Normal file
684
x_admin_app/components/verify/verifySlider/verifySlider.vue
Normal file
File diff suppressed because one or more lines are too long
@@ -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) {
|
||||||
|
@@ -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>
|
||||||
|
Reference in New Issue
Block a user