fix: BUG修改

This commit is contained in:
kun 2024-04-07 17:17:33 +08:00
parent b1affc2d91
commit a0c917b1ca
8 changed files with 318 additions and 57 deletions

View File

@ -32,7 +32,7 @@ export const exportSafeLogListApi = data => post('xmgl/operationLog/exportXls',
// 消息中心
export const getInfoListApi = data => get('xmgl/xzNotice/page', data);
export const markInfoReadApi = data => post('xmgl/xzNotice/markRead', data);
export const deleteInfoApi = data => post('xmgl/xzNotice/delete', data);
export const batchDeleteInfoApi = data => post('xmgl/xzNotice/batchDelete', data);
// 工作台用户绑定的组织架构
export const getGroupListApi = data => post('xmgl/company/getTenantOrgTreeList', data);

View File

@ -23,6 +23,11 @@ const routes2 = [
// component: () => import("../views/home/login_v1.vue"),
component: () => import("../views/home/login_v2.vue"),
},
{
path: "/resetPassword",
name: "重置密码",
component: () => import("../views/resetPassword/index.vue"),
},
{
path: "/sign",
name: "注册",

View File

@ -148,7 +148,8 @@
>{{ $t("message.login.login") }}
</el-button>
</div>
<div class="register-btn">
<div class="operate-btn">
<el-button type="text" @click="goReset">忘记密码</el-button>
<el-button type="text" @click="goRegister">{{
loginType == 1 ? "用户账号注册" : "供应商账号注册"
}}</el-button>
@ -602,6 +603,10 @@ export default {
goLogin() {
this.isLogin = true;
},
//
goReset(){
this.$router.push({ path: "/resetPassword" });
},
//
goRegister() {
this.isLogin = false;
@ -1129,6 +1134,11 @@ export default {
height: 24px;
}
}
.operate-btn{
display: flex;
align-items: center;
justify-content: space-between;
}
.register-btn {
display: flex;
align-items: center;
@ -1162,7 +1172,7 @@ export default {
font-family: PingFangSC-Regular;
font-size: 14px;
color: #8e8e8e;
cursor: pointer;
// cursor: pointer;
}
.span_placeholder {

View File

@ -26,7 +26,6 @@
clearable
v-model="searchForm.title"
/>
</el-input>
</el-form-item>
<el-form-item label="应用" prop="app">
<!-- suffix-icon="el-icon-search" -->
@ -72,7 +71,7 @@
<el-table-column type="selection" align="center" width="60" />
<el-table-column label="标题内容" align="center" prop="title">
<template slot-scope="scope">
<span :style="{color: scope.row.isread == 1?'#BFBFBF':'#5181F7'}" style="cursor: pointer;" @click="infoDetailOpen">{{
<span :style="{color: scope.row.isRead == 1?'#BFBFBF':'#5181F7'}" style="cursor: pointer;" @click="infoDetailOpen(scope.row)">{{
scope.row.title
}}</span>
</template>
@ -109,23 +108,19 @@
<span>返回</span>
</div>
<div class="info-content-detail">
<div class="detail-title">人员未在场预警</div>
<div class="detail-title">{{rowObj.title}}</div>
<div class="detail-sub-title">
<span>应用劳务管理系统</span>
<span>标签预警信息</span>
<span>接收时间2024/03/03 23:50:00</span>
<span>应用{{rowObj.app}}</span>
<span>标签{{rowObj.tag}}</span>
<span>接收时间{{rowObj.operateTime}}</span>
</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">{{rowObj.content}}</div>
</div>
</div>
</div>
</template>
<script>
import { getInfoListApi, markInfoReadApi, deleteInfoApi } from "@/assets/js/api/loginSign.js";
import { getInfoListApi, markInfoReadApi, batchDeleteInfoApi } from "@/assets/js/api/loginSign.js";
export default {
data() {
return {
@ -155,7 +150,8 @@ export default {
},
timeRange: [],
tableData: [],
multipleSelection: []
multipleSelection: [],
rowObj: {}
};
},
filters: {
@ -189,7 +185,7 @@ export default {
type: "warning",
})
.then(() => {
deleteInfoApi({ accountId: this.$store.state.userInfo.userId, ids: selectedIds.join(',') }).then((res) => {
batchDeleteInfoApi({ accountId: this.$store.state.userInfo.userId, ids: selectedIds.join(',') }).then((res) => {
if (res.success) {
this.getList()
this.$message({
@ -257,7 +253,8 @@ export default {
this.multipleSelection = val;
console.log(val,'测试测试')
},
infoDetailOpen() {
infoDetailOpen(item) {
this.rowObj = item;
this.infoDetailShow = true;
},
searchSelect(obj, index) {
@ -268,7 +265,7 @@ export default {
//
getList() {
let requestData = {
// accountId: this.$store.state.userInfo.userId,
accountId: this.$store.state.userInfo.userId,
pageNo: this.pageInfo.pageNo,
pageSize: this.pageInfo.pageSize,
type: this.searchBtnList[this.checkIndex].value,
@ -405,9 +402,13 @@ export default {
font-family: PingFang SC, PingFang SC;
color: #000000;
font-size: 14px;
margin-bottom: 15px;
margin-left: 25px;
margin: 0 25px 15px 25px;
}
}
}
.table_wrap{
.pagerBox{
margin-top: 30px;
}
}
</style>

View File

@ -26,7 +26,6 @@
clearable
v-model="searchForm.title"
/>
</el-input>
</el-form-item>
<el-form-item label="应用" prop="app">
<!-- suffix-icon="el-icon-search" -->
@ -71,7 +70,7 @@
<el-table-column type="selection" align="center" width="60" />
<el-table-column label="标题内容" align="center" prop="title">
<template slot-scope="scope">
<span :style="{color: scope.row.isread == 1?'#BFBFBF':'#5181F7'}" style="cursor: pointer;" @click="infoDetailOpen">{{
<span :style="{color: scope.row.isRead == 1?'#BFBFBF':'#5181F7'}" style="cursor: pointer;" @click="infoDetailOpen">{{
scope.row.title
}}</span>
</template>
@ -108,23 +107,19 @@
<span>返回</span>
</div>
<div class="info-content-detail">
<div class="detail-title">人员未在场预警</div>
<div class="detail-title">{{rowObj.title}}</div>
<div class="detail-sub-title">
<span>应用劳务管理系统</span>
<span>标签预警信息</span>
<span>接收时间2024/03/03 23:50:00</span>
<span>应用{{rowObj.app}}</span>
<span>标签{{rowObj.tag}}</span>
<span>接收时间{{rowObj.operateTime}}</span>
</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">{{rowObj.content}}</div>
</div>
</div>
</div>
</template>
<script>
import { getInfoListApi, deleteInfoApi } from "@/assets/js/api/loginSign.js";
import { getInfoListApi, batchDeleteInfoApi } from "@/assets/js/api/loginSign.js";
export default {
data() {
return {
@ -154,7 +149,8 @@ export default {
},
timeRange: [],
tableData: [],
multipleSelection: []
multipleSelection: [],
rowObj: {}
};
},
filters: {
@ -188,7 +184,7 @@ export default {
type: "warning",
})
.then(() => {
deleteInfoApi({ accountId: this.$store.state.userInfo.userId, ids: selectedIds.join(',') }).then((res) => {
batchDeleteInfoApi({ accountId: this.$store.state.userInfo.userId, ids: selectedIds.join(',') }).then((res) => {
if (res.success) {
this.getList()
this.$message({
@ -214,7 +210,8 @@ export default {
this.multipleSelection = val;
console.log(val,'测试测试')
},
infoDetailOpen() {
infoDetailOpen(item) {
this.rowObj = item;
this.infoDetailShow = true;
},
searchSelect(obj, index) {
@ -225,10 +222,11 @@ export default {
//
getList() {
let requestData = {
// accountId: this.$store.state.userInfo.userId,
accountId: this.$store.state.userInfo.userId,
pageNo: this.pageInfo.pageNo,
pageSize: this.pageInfo.pageSize,
type: this.searchBtnList[this.checkIndex].value,
isRead: 1,
...this.searchForm
}
if(this.timeRange && this.timeRange.length > 0){
@ -362,9 +360,13 @@ export default {
font-family: PingFang SC, PingFang SC;
color: #000000;
font-size: 14px;
margin-bottom: 15px;
margin-left: 25px;
margin: 0 25px 15px 25px;
}
}
}
.table_wrap{
.pagerBox{
margin-top: 30px;
}
}
</style>

View File

@ -26,7 +26,6 @@
clearable
v-model="searchForm.title"
/>
</el-input>
</el-form-item>
<el-form-item label="应用" prop="app">
<!-- suffix-icon="el-icon-search" -->
@ -72,7 +71,7 @@
<el-table-column type="selection" align="center" width="60" />
<el-table-column label="标题内容" align="center" prop="title">
<template slot-scope="scope">
<span :style="{color: scope.row.isread == 1?'#BFBFBF':'#5181F7'}" style="cursor: pointer;" @click="infoDetailOpen">{{
<span :style="{color: scope.row.isRead == 1?'#BFBFBF':'#5181F7'}" style="cursor: pointer;" @click="infoDetailOpen">{{
scope.row.title
}}</span>
</template>
@ -109,23 +108,19 @@
<span>返回</span>
</div>
<div class="info-content-detail">
<div class="detail-title">人员未在场预警</div>
<div class="detail-title">{{rowObj.title}}</div>
<div class="detail-sub-title">
<span>应用劳务管理系统</span>
<span>标签预警信息</span>
<span>接收时间2024/03/03 23:50:00</span>
<span>应用{{rowObj.app}}</span>
<span>标签{{rowObj.tag}}</span>
<span>接收时间{{rowObj.operateTime}}</span>
</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">{{rowObj.content}}</div>
</div>
</div>
</div>
</template>
<script>
import { getInfoListApi, markInfoReadApi, deleteInfoApi } from "@/assets/js/api/loginSign.js";
import { getInfoListApi, markInfoReadApi, batchDeleteInfoApi } from "@/assets/js/api/loginSign.js";
export default {
data() {
return {
@ -155,7 +150,8 @@ export default {
},
timeRange: [],
tableData: [],
multipleSelection: []
multipleSelection: [],
rowObj: {}
};
},
filters: {
@ -189,7 +185,7 @@ export default {
type: "warning",
})
.then(() => {
deleteInfoApi({ accountId: this.$store.state.userInfo.userId, ids: selectedIds.join(',') }).then((res) => {
batchDeleteInfoApi({ accountId: this.$store.state.userInfo.userId, ids: selectedIds.join(',') }).then((res) => {
if (res.success) {
this.getList()
this.$message({
@ -257,7 +253,8 @@ export default {
this.multipleSelection = val;
console.log(val,'测试测试')
},
infoDetailOpen() {
infoDetailOpen(item) {
this.rowObj = item;
this.infoDetailShow = true;
},
searchSelect(obj, index) {
@ -268,10 +265,11 @@ export default {
//
getList() {
let requestData = {
// accountId: this.$store.state.userInfo.userId,
accountId: this.$store.state.userInfo.userId,
pageNo: this.pageInfo.pageNo,
pageSize: this.pageInfo.pageSize,
type: this.searchBtnList[this.checkIndex].value,
isRead: 0,
...this.searchForm
}
if(this.timeRange && this.timeRange.length > 0){
@ -405,9 +403,13 @@ export default {
font-family: PingFang SC, PingFang SC;
color: #000000;
font-size: 14px;
margin-bottom: 15px;
margin-left: 25px;
margin: 0 25px 15px 25px;
}
}
}
.table_wrap{
.pagerBox{
margin-top: 30px;
}
}
</style>

View File

@ -0,0 +1,240 @@
<template>
<!-- 重置密码 -->
<div class="main-content">
<div class="top-content">
<span>智慧工地云</span>
<div @click="backRouter">返回</div>
</div>
<div class="center-title">
<div>
<span>重置密码</span>
</div>
<div>
<el-steps :active="stepActive" align-center>
<el-step
title="验证账号"
:status="stepActive == 1 ? 'process' : 'finish'"
></el-step>
<el-step
title="重置密码"
:status="
stepActive == 2 ? 'process' : stepActive == 3 ? 'finish' : 'wait'
"
></el-step>
<el-step
title="完成"
:status="
stepActive == 2 ? 'wait' : stepActive == 3 ? 'finish' : 'wait'
"
></el-step>
</el-steps>
</div>
</div>
<div class="center-form">
<el-form
v-if="[1, 2].includes(stepActive)"
:model="resetForm"
ref="resetForm"
:rules="resetFormRules"
label-width="100px"
style="width: 30%;"
>
<el-form-item
label="账号"
prop="account"
v-if="[1].includes(stepActive)"
>
<el-input v-model="resetForm.account" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item
label="图形验证码"
prop="imgCode"
v-if="[1].includes(stepActive) && !firstNext"
>
<div class="imgCodeBox">
<el-input
v-model="resetForm.imgCode"
placeholder="请输入图形验证码"
></el-input>
<img :src="codeImgData.img" @click="getImgCode" alt="" />
</div>
</el-form-item>
<el-form-item
label="找回方式"
prop="backEmail"
v-if="[1].includes(stepActive) && firstNext"
>
<el-input
v-model="resetForm.backEmail"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item
label="邮箱验证码"
prop="emailCode"
v-if="[1].includes(stepActive) && firstNext"
>
<el-input
v-model="resetForm.emailCode"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item
label="新密码"
prop="newPassword"
v-if="[2].includes(stepActive)"
>
<el-input
v-model="resetForm.newPassword"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item
label="确认密码"
prop="comfirmPassword"
v-if="[2].includes(stepActive)"
>
<el-input
v-model="resetForm.comfirmPassword"
placeholder="请输入"
></el-input>
</el-form-item>
</el-form>
</div>
<div class="center-footer" style="text-align: center">
<el-button type="primary" @click="firstChange" style="width: 24%;margin-left: 2%;" v-if="[1].includes(stepActive) && !firstNext"
>继续
</el-button>
<el-button type="primary" @click="next" style="width: 24%;margin-left: 2%;" v-if="[1,2,3].includes(stepActive) && firstNext"
>继续
</el-button>
</div>
</div>
</template>
<script>
import { getImgCodeApi } from "@/assets/js/api/loginSign";
export default {
data() {
return {
stepActive: 1,
resetForm: {
account: "",
imgCode: "",
backEmail: "",
emailCode: "",
newPassword: "",
comfirmPassword: "",
},
resetFormRules: {
account: [{ required: true, message: "请确认", trigger: "blur" }],
imgCode: [{ required: true, message: "请确认", trigger: "blur" }],
backEmail: [{ required: true, message: "请确认", trigger: "blur" }],
emailCode: [{ required: true, message: "请确认", trigger: "blur" }],
newPassword: [{ required: true, message: "请确认", trigger: "blur" }],
comfirmPassword: [
{ required: true, message: "请确认", trigger: "blur" },
],
},
codeImgData: {
img: "",
graphValidateCodeUuid: "",
},
firstNext: false,
};
},
created() {
this.getImgCode();
},
methods: {
backRouter(){
this.$router.back()
},
getImgCode() {
let requestData = {};
getImgCodeApi(requestData).then((res) => {
if (res.result) {
// this.replyData = res.result;
for (let i in this.codeImgData) {
this.codeImgData[i] = res.result[i];
}
}
});
},
//
firstChange() {
this.firstNext = true;
},
next() {
this.stepActive = this.stepActive + 1;
},
},
};
</script>
<style lang="less" scoped>
.flex() {
display: flex;
align-items: center;
}
.main-content {
.top-content {
.flex();
height: 60px;
background: url("../../assets/images/login_bg.png") 100% 29% no-repeat;
span {
color: white;
font-size: 20px;
margin-left: 30px;
margin-right: auto;
}
div {
padding: 4px 8px;
color: white;
border: 1px solid white;
border-radius: 4px;
margin-right: 30px;
cursor: pointer;
}
}
.center-title {
margin-top: 70px;
> div {
.flex();
justify-content: center;
}
> div:nth-child(1) {
margin-bottom: 40px;
span {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 22px;
color: #272d45;
}
}
> div:nth-child(2) {
/deep/.el-steps {
width: 45%;
}
}
}
.center-form {
.flex();
justify-content: center;
margin-top: 35px;
// /deep/.el-input {
// width: 92%;
// }
.imgCodeBox {
.flex();
justify-content: space-between;
img {
width: 116px;
margin-left: 12px;
cursor: pointer;
}
}
}
.center-footer {
margin-top: 30px;
}
}
</style>

View File

@ -126,6 +126,7 @@ export default {
this.getImgCode();
}
});
this.getImgCode();
} else {
console.log("error submit!!");
return false;