From 45fbd9d1e4f63c6e43512d9d532d491367cc55ee Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期四, 21 十二月 2023 08:43:04 +0800 Subject: [PATCH] 修复弹窗bug --- config/env.development.js | 4 +- src/views/Admin/msgReview.vue | 2 src/util/validate.js | 2 src/views/Admin/Report.vue | 5 +- src/views/Admin/components/userMod.vue | 8 ++- src/views/Admin/reactionManage.vue | 2 src/directive/preventReclick.js | 17 ++++++++ src/views/Admin/components/pwdMod.vue | 6 ++- src/views/Admin/release.vue | 5 +- src/util/request.js | 2 src/views/Login.vue | 3 + src/views/Admin/components/msgEditMod.vue | 2 src/views/Admin/list.vue | 7 ++- src/directive/index.js | 12 ++++++ src/main.js | 4 +- src/views/Admin/massSend.vue | 2 src/views/Admin/sameLevel.vue | 2 src/views/Admin/userManage.vue | 3 - src/views/Home.vue | 2 src/views/Admin/components/addressUserMod.vue | 2 src/components/Home/Dynamic.vue | 6 ++ src/views/Admin/notice.vue | 2 src/util/debounce.js | 14 +++++++ 23 files changed, 84 insertions(+), 30 deletions(-) diff --git a/config/env.development.js b/config/env.development.js index 5d585a8..76322d4 100644 --- a/config/env.development.js +++ b/config/env.development.js @@ -1,5 +1,5 @@ module.exports = { NODE_ENV: "development", - baseUrl: 'http://192.168.0.41:8086', + baseUrl: 'http://192.168.0.47:8086', // baseUrl: 'http://121.239.169.30:13001', -} \ No newline at end of file +}; \ No newline at end of file diff --git a/src/components/Home/Dynamic.vue b/src/components/Home/Dynamic.vue index 6a98088..613496f 100644 --- a/src/components/Home/Dynamic.vue +++ b/src/components/Home/Dynamic.vue @@ -48,7 +48,11 @@ const t = this const res = await getResponseRecord(this.search) if(res.data.code == 100){ - t.lists = res.data.data + if(res.data.data && res.data.data.length>0){ + t.lists = res.data.data + }else{ + t.lists = [] + } }else{ this.$message.error(res.data.msg) } diff --git a/src/directive/index.js b/src/directive/index.js new file mode 100644 index 0000000..4d13e1c --- /dev/null +++ b/src/directive/index.js @@ -0,0 +1,12 @@ +import preventReClick from './preventReclick' + +const install = function(Vue) { + Vue.directive('preventReClick', preventReClick) +} + +if (window.Vue) { + window['preventReClick'] = preventReClick + Vue.use(install); // eslint-disable-line +} + +export default install \ No newline at end of file diff --git a/src/directive/preventReclick.js b/src/directive/preventReclick.js new file mode 100644 index 0000000..044306f --- /dev/null +++ b/src/directive/preventReclick.js @@ -0,0 +1,17 @@ +// 自定义指令防止按钮重复点击 v-preventReClick +export default { + inserted(el, binding, vnode) { + el.addEventListener('click', () => { + // 是否可见 + if (!el.disabled) { + el.disabled = true + el.style.display = 'none' + setTimeout(() => { + el.disabled = false + el.style.display = '' + }, binding.value || 1500) + // 不设置默认则为1500 + } + }) + }, +} \ No newline at end of file diff --git a/src/main.js b/src/main.js index c241380..e9c9133 100644 --- a/src/main.js +++ b/src/main.js @@ -5,13 +5,13 @@ import './util/AntDesign' import 'ant-design-vue/dist/antd.css' import moment from 'moment' - //设置组件默认中文 import 'moment/locale/zh-cn'; import '@/util/permission' import {message,Modal} from "ant-design-vue"; moment.locale('zh-cn'); - +import prevent from './directive/index'//你的文件路径 +Vue.use(prevent) Vue.config.productionTip = false Vue.filter('filterTime', (value) => { diff --git a/src/util/debounce.js b/src/util/debounce.js new file mode 100644 index 0000000..a6781c7 --- /dev/null +++ b/src/util/debounce.js @@ -0,0 +1,14 @@ +export function debounce(func, delay) { + let timeoutId; + + return function() { + const context = this; + const args = arguments; + + clearTimeout(timeoutId); + + timeoutId = setTimeout(function() { + func.apply(context, args); + }, delay); + }; +} \ No newline at end of file diff --git a/src/util/request.js b/src/util/request.js index 74f0b2f..965afa7 100644 --- a/src/util/request.js +++ b/src/util/request.js @@ -61,7 +61,7 @@ if (error.message.indexOf('timeout') != -1) { message.error('网络超时'); setTimeout(() => { - Session.clear(); + Session.clear() window.location.href = '/'; }, 1000); } else if (error.message == 'Network Error') { diff --git a/src/util/validate.js b/src/util/validate.js index ec9b9bc..71e4366 100644 --- a/src/util/validate.js +++ b/src/util/validate.js @@ -280,7 +280,7 @@ // 弱:纯数字,纯字母,纯特殊字符 if (/^(?:\d+|[a-zA-Z]+|[!@#$%^&\.*]+){6,16}$/.test(val)) v = '弱'; // 中:字母+数字,字母+特殊字符,数字+特殊字符 - if (/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) v = '中'; + if ( /^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val) ) v = '中'; // 强:字母+数字+特殊字符 if (/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) v = '强'; // 返回结果 diff --git a/src/views/Admin/Report.vue b/src/views/Admin/Report.vue index 2da5dca..5ba70d7 100644 --- a/src/views/Admin/Report.vue +++ b/src/views/Admin/Report.vue @@ -30,7 +30,7 @@ /> </a-col> <a-col :span="6"> - <a-button type="primary" @click="searchData()">查询</a-button> + <a-button type="primary" @click="searchData()" v-preventReClick="1500">查询</a-button> <a-button style="margin-left: 12px" @click="resetSearch">重置</a-button> </a-col> </a-row> @@ -59,7 +59,7 @@ </a-tag> </template> <template #operation="text, record, index"> - <a-button type="primary" v-if="record.reviewStatus == 2" @click="confirmPost(record.id)">确认发布</a-button> + <a-button type="primary" v-if="record.reviewStatus == 2" @click="confirmPost(record.id)" v-preventReClick="1500">确认发布</a-button> <a-button type="link" @click="openMod('view',record)">查看信息详情</a-button> <a-button class="del" type="link" @click="delData(record.id)">删除</a-button> <a-button v-if="record.reviewStatus == 1 || record.reviewStatus == 3" @click="openMod('edit',record)">修改</a-button> @@ -180,6 +180,7 @@ }, methods:{ async getData(){ + console.log(111) const t = this const res = await getReviewRecord(this.search) if(res.data.code == 100){ diff --git a/src/views/Admin/components/addressUserMod.vue b/src/views/Admin/components/addressUserMod.vue index 9d0cc3f..ede1bf7 100644 --- a/src/views/Admin/components/addressUserMod.vue +++ b/src/views/Admin/components/addressUserMod.vue @@ -13,7 +13,7 @@ > <a-form-model ref="ruleForm" :rules="rules" :model="form" :label-col="labelCol" :wrapper-col="wrapperCol" :colon="false"> <a-form-model-item label="姓名" prop="name"> - <a-input v-model="form.name"/> + <a-input v-model.trim="form.name"/> </a-form-model-item> <a-form-model-item label="手机号码" prop="phone"> <a-input v-model="form.phone"/> diff --git a/src/views/Admin/components/msgEditMod.vue b/src/views/Admin/components/msgEditMod.vue index e4484df..7db7432 100644 --- a/src/views/Admin/components/msgEditMod.vue +++ b/src/views/Admin/components/msgEditMod.vue @@ -169,7 +169,7 @@ </a-button> </a-col> <a-col :span="12" style="text-align: right" v-if="title=='信息修改'"> - <a-button type="primary" style="min-width: 140px;margin-right: 12px" @click="confirmSend(4)" :disabled="userInfo.role.id==1?true:false"> + <a-button type="primary" style="min-width: 140px;margin-right: 12px" @click="confirmSend(4)" :disabled="userInfo.role.id==1?true:false" v-preventReClick="1500"> 确认并提交审核 </a-button> </a-col> diff --git a/src/views/Admin/components/pwdMod.vue b/src/views/Admin/components/pwdMod.vue index 3725c90..1309cad 100644 --- a/src/views/Admin/components/pwdMod.vue +++ b/src/views/Admin/components/pwdMod.vue @@ -12,7 +12,7 @@ :afterClose="clearMod" > <a-form-model ref="ruleForm" :rules="rules" :model="form" :label-col="labelCol" :wrapper-col="wrapperCol" :colon="false"> - <a-form-model-item label="原密码" prop="oldPwd"> + <a-form-model-item label="原密码" prop="oldPwd" v-if="form.uid == id"> <!-- <a-input v-model="form.oldPwd"/>--> <a-input-password v-model="form.oldPwd" placeholder="请输入原密码" /> </a-form-model-item> @@ -31,7 +31,7 @@ import {verifyPasswordPowerful, verifyPhone, verifyTelPhone} from "@/util/validate"; import { updatePwd } from '@/api/user' import {loginOut} from "@/api/login"; -import {Session} from "@/util/storage"; +import {getUserInfo, Session} from "@/util/storage"; export default { name: 'pwdMod', data () { @@ -67,6 +67,7 @@ newPwd: '', reNewPwd: '' }, + id: getUserInfo().uid, rules: { // oldPwd: [{ required: true, validator: validatePwd, trigger: 'blur'}], // newPwd: [{ required: true, validator: validatePwd, trigger: 'blur'}], @@ -79,6 +80,7 @@ }, created() { const t = this + console.log(t.id,t.form.uid,'id') }, methods:{ clearMod(){ diff --git a/src/views/Admin/components/userMod.vue b/src/views/Admin/components/userMod.vue index 31c38b3..2352c64 100644 --- a/src/views/Admin/components/userMod.vue +++ b/src/views/Admin/components/userMod.vue @@ -13,13 +13,13 @@ > <a-form-model ref="ruleForm" :rules="rules" :model="form" :label-col="labelCol" :wrapper-col="wrapperCol" :colon="false"> <a-form-model-item label="姓名" prop="realName"> - <a-input v-model="form.realName"/> + <a-input v-model.trim="form.realName"/> </a-form-model-item> <a-form-model-item label="手机号码" prop="phone"> - <a-input v-model="form.phone"/> + <a-input v-model.trim="form.phone"/> </a-form-model-item> <a-form-model-item label="用户名" prop="name"> - <a-input v-model="form.name"/> + <a-input v-model.trim="form.name"/> </a-form-model-item> <a-form-model-item label="密码" v-if="title== '新增用户'" prop="pwd"> <a-input v-model="form.pwd"/> @@ -276,6 +276,8 @@ this.$message.error('单位层级和所属地区不匹配,请重新选择') return } + // this.form.realName = this.form.realName.trim() + // this.form.name = this.form.name.trim() if(this.title == '新增用户'){ const { id,...data } = this.form addUser(data).then((res)=>{ diff --git a/src/views/Admin/list.vue b/src/views/Admin/list.vue index d296879..0c5efea 100644 --- a/src/views/Admin/list.vue +++ b/src/views/Admin/list.vue @@ -30,7 +30,7 @@ /> </a-col> <a-col :span="6"> - <a-button type="primary" @click="searchData">查询</a-button> + <a-button type="primary" @click="searchData" v-preventReClick="1000">查询</a-button> <a-button style="margin-left: 12px" @click="resetSearch">重置</a-button> </a-col> </a-row> @@ -104,6 +104,7 @@ import axios from "axios"; import Cookies from "js-cookie"; import {getUserInfo} from "@/util/storage"; +import {debounce} from "@/util/debounce"; export default { name: 'list', @@ -226,7 +227,7 @@ t.getData() }, methods: { - async getData(){ + getData: debounce(async function(){ const t = this const res = await getMsgRecord(this.search) if(res.data.code == 100){ @@ -235,7 +236,7 @@ }else{ this.$message.error(res.data.msg) } - }, + },1000), onPageChange(page, pageSize) { const t= this diff --git a/src/views/Admin/massSend.vue b/src/views/Admin/massSend.vue index 5e6ed56..dd37f9e 100644 --- a/src/views/Admin/massSend.vue +++ b/src/views/Admin/massSend.vue @@ -163,7 +163,7 @@ <!-- </a-select>--> <!-- </div>--> <div style="display: flex;justify-content: right"> - <a-button type="primary" style="width: 250px;" @click="confirmSend()" :disabled="userInfo.role.id==1?true:false"> + <a-button type="primary" style="width: 250px;" @click="confirmSend()" :disabled="userInfo.role.id==1?true:false" v-preventReClick="1500"> 确认发送 </a-button> </div> diff --git a/src/views/Admin/msgReview.vue b/src/views/Admin/msgReview.vue index ac89646..c48a9f3 100644 --- a/src/views/Admin/msgReview.vue +++ b/src/views/Admin/msgReview.vue @@ -30,7 +30,7 @@ /> </a-col> <a-col :span="4"> - <a-button type="primary" @click="getData">查询</a-button> + <a-button type="primary" @click="getData" v-preventReClick="1500">查询</a-button> <a-button style="margin-left: 12px" @click="resetSearch">重置</a-button> </a-col> </a-row> diff --git a/src/views/Admin/notice.vue b/src/views/Admin/notice.vue index 69b8c10..259af39 100644 --- a/src/views/Admin/notice.vue +++ b/src/views/Admin/notice.vue @@ -130,7 +130,7 @@ </a-form-model-item> </a-col> <a-col :span="12" style="text-align: right"> - <a-button type="primary" style="width: 250px;" @click="confirmSend()" + <a-button type="primary" style="width: 250px;" @click="confirmSend()" v-preventReClick="1500" :disabled="userInfo.role.id==1?true:false"> 确认并提交审核 </a-button> diff --git a/src/views/Admin/reactionManage.vue b/src/views/Admin/reactionManage.vue index 20c776e..bdb6780 100644 --- a/src/views/Admin/reactionManage.vue +++ b/src/views/Admin/reactionManage.vue @@ -22,7 +22,7 @@ {{ getRiskName(type) }} </template> <template #action="action,row"> - <a-button type="link" @click="editData('edit',row)">编辑</a-button> + <a-button type="link" @click="editData('edit',row)" v-preventReClick="1500">编辑</a-button> <a-button type="link" class="delBtn" @click="delData(row)">删除</a-button> </template> </a-table> diff --git a/src/views/Admin/release.vue b/src/views/Admin/release.vue index e01b309..5443cc8 100644 --- a/src/views/Admin/release.vue +++ b/src/views/Admin/release.vue @@ -83,6 +83,7 @@ import axios from "axios"; import Cookies from "js-cookie"; import {getUserInfo} from "@/util/storage"; +import {debounce} from "@/util/debounce"; const columns = [{ title: '序号', dataIndex: 'index', @@ -200,7 +201,7 @@ t.getData() }, methods: { - async getData(){ + getData: debounce(async function(){ const t = this const res = await getPublishRecord(this.search) if(res.data.code == 100){ @@ -209,7 +210,7 @@ }else{ this.$message.error(res.data.msg) } - }, + },1000), openList(id){ const t = this diff --git a/src/views/Admin/sameLevel.vue b/src/views/Admin/sameLevel.vue index aa1738d..14db0ed 100644 --- a/src/views/Admin/sameLevel.vue +++ b/src/views/Admin/sameLevel.vue @@ -13,7 +13,7 @@ <a-cascader :options="areaData" v-model="areaVal" placeholder="所属区域" expandTrigger="hover" :fieldNames="fieldNames" changeOnSelect @change="onChange" style="width: 100%"/> </a-col> <a-col :span="6"> - <a-button type="primary" @click="getUserList">查询</a-button> + <a-button type="primary" @click="getUserList" v-preventReClick="1500">查询</a-button> <a-button style="margin-left: 12px" @click="resetSearch">重置</a-button> </a-col> </a-row> diff --git a/src/views/Admin/userManage.vue b/src/views/Admin/userManage.vue index 87f8b2b..5a207b6 100644 --- a/src/views/Admin/userManage.vue +++ b/src/views/Admin/userManage.vue @@ -10,7 +10,7 @@ <a-cascader :options="areaData" v-model="areaVal" placeholder="行政规划" expandTrigger="hover" :fieldNames="fieldNames" changeOnSelect @change="onChange" style="width: 100%"/> </a-col> <a-col :span="4"> - <a-select v-model="search.searchParams.unittype" placeholder="监管层级" style="width: 100%"> + <a-select v-model="search.searchParams.unittype" placeholder="监管层级" style="width: 100%" clearable> <a-select-option :value="1"> 省级 </a-select-option> @@ -172,7 +172,6 @@ created() { const t = this t.unittype = getUserInfo().unittype - console.log(t.unittype,'unit') t.getUserList() t.getDistrictInfo() }, diff --git a/src/views/Home.vue b/src/views/Home.vue index 16dd879..145fe60 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -36,7 +36,7 @@ <router-view ref="tabContent"></router-view> </keep-alive> <div style="height: 30px;text-align: center;line-height: 30px"> - 技术支持:中国科学院 + 技术支持:技术保障部 </div> </a-layout-content> </a-layout> diff --git a/src/views/Login.vue b/src/views/Login.vue index 588b32d..44925d8 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -91,11 +91,12 @@ size="large" @click="handleSubmit" :loading="isLoading" + v-preventReClick="1500" > 登录 </a-button> </a-form-item> - <center><p>技术支持:中国科学院</p></center> + <center><p>技术支持:技术保障部</p></center> </a-form-model> </div> </div> -- Gitblit v1.9.2