From e220a11760bb56f12da82a18e0b441dfdc588fac Mon Sep 17 00:00:00 2001 From: zhouwenxuan <1175765986@qq.com> Date: 星期四, 07 十二月 2023 15:30:25 +0800 Subject: [PATCH] bug修改 --- src/permission.js | 3 src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue | 34 ++++++- src/views/safetyReview/userManage/superviseUsers/components/superviseDialog.vue | 21 +++-- src/api/backManage/notice.js | 6 + src/views/safetyReview/notice/components/noticeDialog.vue | 32 +++++++- src/utils/preReClick.js | 14 +++ src/views/safetyReview/law/components/lawDialog.vue | 37 +++++++- src/api/backManage/law.js | 5 src/views/components/publish.vue | 2 src/views/safetyReview/law/law.vue | 7 + src/layout/components/Register/index.vue | 10 +- src/utils/request.js | 14 ++- src/views/components/notice.vue | 2 src/views/safetyReview/baseSet/evaluateType/components/typeDialog.vue | 2 src/views/safetyReview/baseSet/business/components/businessDialog.vue | 2 src/main.js | 3 src/views/components/laws.vue | 19 +++- src/views/components/details.vue | 20 ++++ src/views/safetyReview/baseSet/area/components/areaDialog.vue | 2 19 files changed, 177 insertions(+), 58 deletions(-) diff --git a/src/api/backManage/law.js b/src/api/backManage/law.js index 0be7898..cda56f2 100644 --- a/src/api/backManage/law.js +++ b/src/api/backManage/law.js @@ -1,9 +1,10 @@ import request from '@/utils/request' -export function getLawList() { +export function getLawList(params) { return request({ url: '/system/law/lawList', - method: 'get' + method: 'get', + params: params }) } diff --git a/src/api/backManage/notice.js b/src/api/backManage/notice.js index cda746e..ac92d87 100644 --- a/src/api/backManage/notice.js +++ b/src/api/backManage/notice.js @@ -1,9 +1,11 @@ import request from '@/utils/request' -export function getNoticeList() { +export function getNoticeList(params) { return request({ url: '/system/notice/noticeList', - method: 'get' + method: 'get', + params: params + }) } diff --git a/src/layout/components/Register/index.vue b/src/layout/components/Register/index.vue index a643b20..7f5adf9 100644 --- a/src/layout/components/Register/index.vue +++ b/src/layout/components/Register/index.vue @@ -276,6 +276,7 @@ type="primary" style="width:40%;margin: 0 auto" @click.prevent="handleRegister" + v-preReClick > <div v-if="state.title == '新增/注册'"> <span v-if="!loading">注 册</span> @@ -472,10 +473,11 @@ } getBusiness() - watchEffect(() => { - // 在副作用中调用 getArea() - getArea(); - }); + getArea() + // watchEffect(() => { + // // 在副作用中调用 getArea() + // getArea(); + // }); }) const isAbleEdit = ref(false); const openDialog=(type, value)=>{ diff --git a/src/main.js b/src/main.js index 1e46077..c765f8f 100644 --- a/src/main.js +++ b/src/main.js @@ -43,6 +43,8 @@ // 字典标签组件 import DictTag from '@/components/DictTag' +import preReClick from "@/utils/preReClick"; + import { Boot } from '@wangeditor/editor' import attachmentModule from '@wangeditor/plugin-upload-attachment' import loadMore from '@/utils/selectLoadMoreDirective' @@ -73,6 +75,7 @@ app.use(store) app.use(plugins) app.use(elementIcons) +app.use(preReClick) app.component('svg-icon', SvgIcon) app.directive('loadMore',loadMore) directive(app) diff --git a/src/permission.js b/src/permission.js index f13cc3c..dc79d74 100644 --- a/src/permission.js +++ b/src/permission.js @@ -52,7 +52,8 @@ // 在免登录白名单,直接进入 next() } else { - next(`/homePage?redirect=${to.fullPath}`) // 否则全部重定向到登录页 + // next(`/homePage?redirect=${to.fullPath}`) // 否则全部重定向到登录页 + next('/homePage') NProgress.done() } } diff --git a/src/utils/preReClick.js b/src/utils/preReClick.js new file mode 100644 index 0000000..c6d31d2 --- /dev/null +++ b/src/utils/preReClick.js @@ -0,0 +1,14 @@ +export default (app) => { + app.directive('preReClick', { + mounted(el, binding) { + el.addEventListener('click', () => { + if (!el.disabled) { + el.disabled = true; + setTimeout(() => { + el.disabled = false; + }, binding.value || 2000) + } + }) + } + }) +} diff --git a/src/utils/request.js b/src/utils/request.js index a782727..7806b7b 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -1,6 +1,6 @@ import axios from 'axios' import { ElNotification , ElMessageBox, ElMessage, ElLoading } from 'element-plus' -import { getToken } from '@/utils/auth' +import {getToken, removeToken} from '@/utils/auth' import errorCode from '@/utils/errorCode' import { tansParams, blobValidate } from '@/utils/ruoyi' import cache from '@/plugins/cache' @@ -87,11 +87,13 @@ isRelogin.show = true; ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => { isRelogin.show = false; - useUserStore().logOut().then(() => { - // router.push('/homePage') - - location.href = '/homePage'; - }) + removeToken() + location.href = '/homePage'; + // useUserStore().logOut().then(() => { + // // router.push('/homePage') + // + // location.href = '/homePage'; + // }) }).catch(() => { isRelogin.show = false }); diff --git a/src/views/components/details.vue b/src/views/components/details.vue index 2daf2e7..b360786 100644 --- a/src/views/components/details.vue +++ b/src/views/components/details.vue @@ -19,7 +19,7 @@ <div class="title">{{state.content.title}}</div> <el-divider border-style="dashed"/> <div class="time">更新时间:{{state.content.updateTime?state.content.updateTime:state.content.createTime}}</div> - <div v-html="state.content.content" @click="showFile($event)"></div> + <div v-html="state.content.content" class="reviewTable" @click="showFile($event)"></div> </div> <div class="main" v-if="state.firstClass == '法律法规'"> <div class="title">{{state.content.title}}</div> @@ -27,7 +27,7 @@ <div class="info"><span>法律法规类别:{{state.content.lawType}}</span><span>颁布机构:{{state.content.pubAgency}}</span><span>颁布日期:{{state.content.pubDate}}</span></div> <el-divider border-style="dashed"/> <div class="time">更新时间:{{state.content.updateTime?state.content.updateTime:state.content.createTime}}</div> - <div v-html="state.content.content"></div> + <div v-html="state.content.content" class="reviewTable" @click="showFile($event)"></div> </div> <div class="main" v-if="state.firstClass == '机构公示'"> <div class="title">{{state.content.name}}</div> @@ -96,7 +96,7 @@ }) const emit = defineEmits(['backJump']) onMounted(()=>{ - getBusiness() + // getBusiness() }) onUnmounted(()=>{ @@ -301,5 +301,19 @@ } } } + .reviewTable { + :deep(table){ + border: 1px solid #ccc; + text-align: center; + } + :deep(table td){ + border: 1px solid #ccc; + text-align: center; + padding: 0 5px; + } + :deep(table th){ + border: 1px solid #ccc; + } + } } </style> diff --git a/src/views/components/laws.vue b/src/views/components/laws.vue index caf54c1..d5a811d 100644 --- a/src/views/components/laws.vue +++ b/src/views/components/laws.vue @@ -7,8 +7,8 @@ <el-input v-model="state.querys.title" /> </el-form-item> </el-form> - <el-button type="primary" :icon="Search" class="searchBtn">搜索</el-button> - <el-button type="primary" :icon="Refresh" class="resetBtn">重置</el-button> + <el-button type="primary" :icon="Search" class="searchBtn" v-model="state.querys.title" @click="search">搜索</el-button> + <el-button type="primary" :icon="Refresh" class="resetBtn" @click="reset">重置</el-button> </div> <div class="list"> <div v-for="item in state.dataList" @click="openDetails('法律法规',item.id)"> @@ -23,8 +23,6 @@ </div> <div class="pag-container" v-if="state.total&&state.total>0"> <el-pagination - v-model:current-page="state.querys.pageNum" - v-model:page-size="state.querys.pageSize" :page-sizes="[10,15,20,25]" layout="total, sizes, prev, pager, next, jumper" :total="state.total" @@ -89,7 +87,18 @@ state.querys.pageNum = val getData() } - +const search = () => { + getData() +} +const reset = () => { + state.querys = { + title: '', + content: '', + pageNum: 1, + pageSize: 10 + } + getData() +} const openDetails = (type,id)=>{ emit('openDetails',type,id) } diff --git a/src/views/components/notice.vue b/src/views/components/notice.vue index 7aa8f3c..66e5b2d 100644 --- a/src/views/components/notice.vue +++ b/src/views/components/notice.vue @@ -14,8 +14,6 @@ </div> <div class="pag-container" v-if="state.total&&state.total>0"> <el-pagination - v-model:current-page="state.querys.pageNum" - v-model:page-size="state.querys.pageSize" :page-sizes="[10,15,20,25]" layout="total, sizes, prev, pager, next, jumper" :total="state.total" diff --git a/src/views/components/publish.vue b/src/views/components/publish.vue index 73b219c..aff26e1 100644 --- a/src/views/components/publish.vue +++ b/src/views/components/publish.vue @@ -35,8 +35,6 @@ </div> <div class="pag-container" v-if="state.total&&state.total>0"> <el-pagination - v-model:current-page="state.querys.pageNum" - v-model:page-size="state.querys.pageSize" :page-sizes="[10,15,20,25]" layout="total, sizes, prev, pager, next, jumper" :total="state.total" diff --git a/src/views/safetyReview/baseSet/area/components/areaDialog.vue b/src/views/safetyReview/baseSet/area/components/areaDialog.vue index a220b59..352715d 100644 --- a/src/views/safetyReview/baseSet/area/components/areaDialog.vue +++ b/src/views/safetyReview/baseSet/area/components/areaDialog.vue @@ -36,7 +36,7 @@ <template #footer> <span class="dialog-footer"> <el-button @click="handleClose" size="default">取 消</el-button> - <el-button type="primary" @click="onSubmit" size="default">确认</el-button> + <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认</el-button> </span> </template> </el-dialog> diff --git a/src/views/safetyReview/baseSet/business/components/businessDialog.vue b/src/views/safetyReview/baseSet/business/components/businessDialog.vue index c225f04..e6fa96f 100644 --- a/src/views/safetyReview/baseSet/business/components/businessDialog.vue +++ b/src/views/safetyReview/baseSet/business/components/businessDialog.vue @@ -14,7 +14,7 @@ <template #footer> <span class="dialog-footer"> <el-button @click="handleClose" size="default">取 消</el-button> - <el-button type="primary" @click="onSubmit" size="default">确认</el-button> + <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认</el-button> </span> </template> </el-dialog> diff --git a/src/views/safetyReview/baseSet/evaluateType/components/typeDialog.vue b/src/views/safetyReview/baseSet/evaluateType/components/typeDialog.vue index d4543a5..e403442 100644 --- a/src/views/safetyReview/baseSet/evaluateType/components/typeDialog.vue +++ b/src/views/safetyReview/baseSet/evaluateType/components/typeDialog.vue @@ -14,7 +14,7 @@ <template #footer> <span class="dialog-footer"> <el-button @click="handleClose" size="default">取 消</el-button> - <el-button type="primary" @click="onSubmit" size="default">确认</el-button> + <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认</el-button> </span> </template> </el-dialog> diff --git a/src/views/safetyReview/law/components/lawDialog.vue b/src/views/safetyReview/law/components/lawDialog.vue index 45e3868..2f6cd50 100644 --- a/src/views/safetyReview/law/components/lawDialog.vue +++ b/src/views/safetyReview/law/components/lawDialog.vue @@ -32,20 +32,20 @@ <el-date-picker v-if="!isReview" v-model="state.form.pubDate" - type="datetime" - value-format="YYYY-MM-DD hh:mm:ss" + type="date" + value-format="YYYY-MM-DD" placeholder="请选择日期" size="default" /> <span v-else>{{state.form.pubDate}}</span> </el-form-item> - <el-form-item label="内容:" v-if="showEditor" prop="content"> + <el-form-item label="内容:" v-if="showEditor" required> <we-editor ref="myEditor" :propData="state.form.content" @childFn="getEditorData" /> </el-form-item> <el-form-item label="内容:" v-else> <div class="ql-container ql-snow" style="height: 500px;width: 100%;margin-top: 10px;" > <div class="ql-editor"> - <div v-html="state.form.content" @click="showFile($event)"></div> + <div v-html="state.form.content" class="reviewTable" @click="showFile($event)"></div> </div> </div> </el-form-item> @@ -53,7 +53,7 @@ <template #footer v-if="!isReview"> <span class="dialog-footer"> <el-button @click="handleClose" size="default">取 消</el-button> - <el-button type="primary" @click="onSubmit" size="default">确认发布</el-button> + <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认发布</el-button> </span> </template> </el-dialog> @@ -89,7 +89,7 @@ formRules:{ title: [{ required: true, message: '请填写标题', trigger: 'blur' }], pubAgency: [{ required: true, message: '请填写颁布机构', trigger: 'blur' }], - content: [{ required: true, message: '请输入内容', trigger: 'change' }], + // content: [{ required: true, message: '11', trigger: 'blur' }], pubDate:[{ required: true, message: '请选择颁布日期', trigger: 'blur' }], }, @@ -109,6 +109,7 @@ if(type === 'edit') { law.value = res.data.lawType === '法律' ? 1 : res.data.lawType === '法规' ? 2 :res.data.lawType === '地方性规定'? 3 : 4 } + state.form.pubDate = res.data.pubDate.substring(0,10) }else{ ElMessage.warning(res.message) } @@ -170,12 +171,19 @@ myEditor.value.submit(); const valid = await lawRef.value.validate(); if(valid){ + if(state.form.content == "") { + ElMessage({ + type: 'warning', + message: '请输入内容' + }); + return; + } if(title.value === '新增'){ const param = { content: state.form.content, lawType: state.form.lawType, pubAgency: state.form.pubAgency, - pubDate: state.form.pubDate, + pubDate: state.form.pubDate.concat(" 00:00:00"), subTitle: state.form.subTitle, title: state.form.title } @@ -194,6 +202,7 @@ lawRef.value.clearValidate(); dialogVisible.value = false; }else if(title.value === '编辑') { + state.form.pubDate = state.form.pubDate.concat(" 00:00:00") const res = await editLaw(state.form) if(res.code === 200){ ElMessage({ @@ -251,4 +260,18 @@ align-items: flex-start; } } +.reviewTable { + :deep(table){ + border: 1px solid #ccc; + text-align: center; + } + :deep(table td){ + border: 1px solid #ccc; + text-align: center; + padding: 0 5px; + } + :deep(table th){ + border: 1px solid #ccc; + } +} </style> diff --git a/src/views/safetyReview/law/law.vue b/src/views/safetyReview/law/law.vue index 646c922..052d4c0 100644 --- a/src/views/safetyReview/law/law.vue +++ b/src/views/safetyReview/law/law.vue @@ -66,7 +66,12 @@ loading.value = true; const res = await getLawList(data.queryParams); if(res.code === 200){ - dataList.value = res.data.list + dataList.value = res.data.list.map(item => { + return { + ...item, + pubDate: item.pubDate.substring(0,10) + } + }) total.value = res.data.total }else{ ElMessage.warning(res.message) diff --git a/src/views/safetyReview/notice/components/noticeDialog.vue b/src/views/safetyReview/notice/components/noticeDialog.vue index 91814b2..69294e7 100644 --- a/src/views/safetyReview/notice/components/noticeDialog.vue +++ b/src/views/safetyReview/notice/components/noticeDialog.vue @@ -11,13 +11,13 @@ <el-input v-model.trim="state.noticeForm.noticeTitle" v-if="!isReview" ></el-input> <span v-else>{{state.noticeForm.noticeTitle}}</span> </el-form-item> - <el-form-item label="公告内容:" v-if="showEditor" prop="noticeContent"> + <el-form-item label="公告内容:" v-if="showEditor" required> <we-editor ref="myEditor" :propData="state.noticeForm.noticeContent" @childFn="getEditorData" /> </el-form-item> <el-form-item label="公告内容:" v-else> <div class="ql-container ql-snow" style="height: 500px;width: 100%;margin-top: 10px;" > <div class="ql-editor"> - <div v-html="state.noticeForm.noticeContent" @click="showFile($event)"></div> + <div class="reviewTable" v-html="state.noticeForm.noticeContent" @click="showFile($event)"></div> </div> </div> </el-form-item> @@ -25,7 +25,7 @@ <template #footer v-if="!isReview"> <span class="dialog-footer"> <el-button @click="handleClose" size="default">取 消</el-button> - <el-button type="primary" @click="onSubmit" size="default">确认发布</el-button> + <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认发布</el-button> </span> </template> </el-dialog> @@ -60,7 +60,7 @@ }, formRules:{ noticeTitle: [{ required: true, message: '请填写公告标题', trigger: 'blur' }], - noticeContent: [{ required: true, message: '请输入公告内容', trigger: 'blur' }], + // noticeContent: [{ required: true, message: '请输入公告内容', trigger: 'blur' }], }, }) @@ -135,9 +135,17 @@ } } const onSubmit = async () => { + console.log("点击提交") myEditor.value.submit(); const valid = await noticeRef.value.validate(); if(valid){ + if(state.noticeForm.noticeContent == "") { + ElMessage({ + type: 'warning', + message: '请输入公告内容' + }); + return; + } if(title.value === '新增'){ const param = { content: state.noticeForm.noticeContent, @@ -216,4 +224,20 @@ align-items: flex-start; } } +.reviewTable { + :deep(table){ + border: 1px solid #ccc; + text-align: center; + } + :deep(table td){ + border: 1px solid #ccc; + text-align: center; + padding: 0 5px; + } + :deep(table th){ + border: 1px solid #ccc; + } +} + + </style> diff --git a/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue b/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue index adcc458..1c002f1 100644 --- a/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue +++ b/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue @@ -24,7 +24,7 @@ <el-row :gutter="22"> <el-col :span="11"> <el-form-item label="用户名:" prop="username" v-if="state.title !== '修改密码'"> - <el-input v-model.trim="state.form.username" ></el-input> + <el-input v-model.trim="state.form.username" :disabled="state.title === '编辑'"></el-input> </el-form-item> </el-col> <el-col :span="11"> @@ -149,7 +149,7 @@ <template #footer > <span class="dialog-footer"> <el-button @click="handleClose" size="default">取 消</el-button> - <el-button type="primary" @click="onSubmit" size="default">确认</el-button> + <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认</el-button> </span> </template> <el-dialog v-model="state.dialogImg"> @@ -159,7 +159,7 @@ </div> </template> <script setup> -import {reactive, ref, toRefs, defineEmits, onMounted} from 'vue' +import {reactive, ref, toRefs, defineEmits, onMounted, nextTick} from 'vue' import { View } from "@element-plus/icons-vue"; import {ElMessage} from "element-plus"; import {verifyPhone, verifyPwd, verifyUsername} from "../../../../../utils/validate"; @@ -368,7 +368,7 @@ ElMessage.success(res.message) emit('getList') superRef.value.clearValidate(); - superRef.value.resetFields(); + reset() dialogVisible.value = false; }else{ ElMessage.warning(res.message) @@ -382,7 +382,7 @@ ElMessage.success(res.message) emit('getList') superRef.value.clearValidate(); - superRef.value.resetFields(); + reset() dialogVisible.value = false; }else{ ElMessage.warning(res.message) @@ -393,12 +393,32 @@ const handleClose = () => { superRef.value.clearValidate(); - superRef.value.resetFields() + reset() dialogVisible.value = false; + + +} +const reset = () => { + state.form = { + id: null, + name: '', + username: '', + sex: 0, + phone: '', + agencyId: '', + socialAttach: [], + medicalAttach: [], + salaryAttach: [], + post: '', + jobTitle: '', + major: '', + expertType: 1, + password: '', + confirmPassword: '', + } state.salaryList = []; state.medicalList = []; state.socialList = []; - } const picSize = async (rawFile) => { if(rawFile.size / 1024 / 1024 > 5){ diff --git a/src/views/safetyReview/userManage/superviseUsers/components/superviseDialog.vue b/src/views/safetyReview/userManage/superviseUsers/components/superviseDialog.vue index ad401b3..ddbcd89 100644 --- a/src/views/safetyReview/userManage/superviseUsers/components/superviseDialog.vue +++ b/src/views/safetyReview/userManage/superviseUsers/components/superviseDialog.vue @@ -3,7 +3,7 @@ <el-dialog v-model="dialogVisible" :title="state.title" - width="500px" + width="550px" :before-close="handleClose" > <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="110px" > @@ -11,7 +11,7 @@ <el-input v-model.trim="state.form.name" ></el-input> </el-form-item> <el-form-item label="用户名:" prop="username" v-if="state.title !== '修改密码'"> - <el-input v-model.trim="state.form.username" ></el-input> + <el-input v-model.trim="state.form.username" :disabled="state.title =='编辑'" ></el-input> </el-form-item> <el-form-item label="密码:" prop="password" v-if="state.title == '新增' || state.title == '修改密码'"> <el-input v-model.trim="state.form.password" type="password" show-password placeholder="请输入密码"></el-input> @@ -42,14 +42,14 @@ <template #footer > <span class="dialog-footer"> <el-button @click="handleClose" size="default">取 消</el-button> - <el-button type="primary" @click="onSubmit" size="default">确认</el-button> + <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认</el-button> </span> </template> </el-dialog> </div> </template> <script setup> -import {reactive, ref, toRefs, defineEmits} from 'vue' +import {reactive, ref, toRefs, defineEmits, nextTick} from 'vue' import { View } from "@element-plus/icons-vue"; import {ElMessage} from "element-plus"; import {verifyPhone, verifyPwd, verifyUsername} from "../../../../../utils/validate"; @@ -147,11 +147,14 @@ getArea() state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : type ==='pwd' ? '修改密码' : '查看' ; if(type === 'edit') { - for(let i in state.form){ - if(validKey(i,value)){ - state.form[i] = value[i] - } - } + nextTick(() => { + for(let i in state.form){ + if(validKey(i,value)){ + state.form[i] = value[i] + } + } + }) + } if(type == 'pwd'){ state.form.id = value.id -- Gitblit v1.9.2