Files
school-developer/src/components/tools/sensitive.vue
吴红兵 94c3473958 fix
2026-03-07 01:34:48 +08:00

135 lines
3.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- 敏感信息授权按钮组件 -->
<template>
<div>
<el-button class="grant-btn" type="text" @click="grantPrivilege">敏感信息授权</el-button>
<el-dialog append-to-body title="敏感信息短信授权" v-model:visible="dialogVisible">
<el-form>
<el-form-item label="手机号">
<el-row>{{ mobile }}</el-row>
</el-form-item>
<el-form-item label="验证码">
<el-col :span="11">
<el-input type="number" style="display: inline-block" maxlength="6" placeholder="请输入验证码" v-model="form.code"></el-input>
</el-col>
<el-col :span="5">
<el-button style="display: inline; margin-left: 5px" plain type="text" @click.prevent="getCode()">{{ title }}</el-button>
</el-col>
</el-form-item>
<el-alert :closable="false">验证通过后将去除脱敏有效期为30分钟请尽快操作</el-alert>
<el-alert type="warning" :closable="false"
>手机号码登记后统一维护如有修改请联系相关部门教职工(组织人事处) 学生(班主任) 驻校人员(后勤处)</el-alert
>
</el-form>
<template v-slot:footer>
<span class="dialog-footer" style="text-aligin: center">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="checkCode"> </el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script>
import request from '@/router/axios';
export default {
name: 'sensitive',
data() {
return {
dialogVisible: false,
second: '', //倒计时
disabled: false, //是否禁用按钮
timer: null, //计时器
form: {
code: '',
},
mobile: '**',
};
},
computed: {
title() {
return this.disabled ? `重新获取 ( ${this.second} ) s` : '获取验证码';
},
},
methods: {
grantPrivilege() {
this.dialogVisible = true;
this.form.code = '';
this.getMobile();
},
getCode() {
// console.log('点击')
let that = this;
let s = 60; //倒计时间
if (!that.timer) {
that.second = s;
that.disabled = true;
that.timer = setInterval(() => {
if (that.second > 0 && this.second <= s) {
that.second--;
} else {
that.disabled = false;
clearInterval(that.timer);
this.timer = null;
}
}, 1000);
that.sendCode();
}
},
getMobile() {
request({
url: '/admin/mobile/getMobile',
method: 'get',
}).then((response) => {
console.log(response.data);
if (response.data.data) {
this.mobile = response.data.data;
} else {
this.$message.error(response.data.msg);
}
});
},
sendCode() {
request({
url: '/admin/mobile/codeSensitive',
method: 'get',
}).then((response) => {
console.log(response.data);
if (response.data.data) {
this.$message.success('短信发送成功');
} else {
this.$message.error(response.data.msg);
}
});
},
checkCode() {
request({
url: '/admin/mobile/checkSensitiveCode',
method: 'post',
data: { code: this.form.code },
}).then((response) => {
console.log(response.data);
if (response.data.data) {
this.dialogVisible = false;
this.$message.success('校验通过');
} else {
this.$message.error('校验失败');
}
});
},
},
};
</script>
<style scoped lang="scss">
.wrapper {
display: inline-block;
}
.grant-btn {
marigin: 0px 5px !important;
color: #f39217;
}
</style>