feat: 部分页面开发以及接口对接

This commit is contained in:
kun 2024-03-22 18:49:41 +08:00
parent 08a237cd1a
commit e8dc252408
9 changed files with 294 additions and 75 deletions

View File

@ -1,11 +1,17 @@
/**
* api接口统一管理
*/
import {post} from '../http'
import {get,post} from '../http'
export const addSystemUserApi = data => post('xmgl/systemUser/add', data); //添加账号信息
export const editSystemUserApi = data => post('xmgl/systemUser/edit', data); //编辑账号信息
export const deleteSystemUserApi = data => post('xmgl/systemUser/delete', data); //删除账号信息
export const getSystemUserBySnApi = data => post('xmgl/systemUser/getSystemUserBySn', data); //根据企业或项目SN查找账号列表
// 新用户审核
// 列表
export const getUserAuditListApi = data => get('xmgl/xzRegistry/page', data); //根据企业或项目SN查找账号列表
export const userAuditApi = data => post('xmgl/xzRegistry/approval', data); //根据企业或项目SN查找账号列表
export const userAuditNotPassApi = data => get('xmgl/xzRegistry/page', data); //根据企业或项目SN查找账号列表

View File

@ -4,6 +4,7 @@
import {post,get} from '../http'
export const registerApi = data => post('xmgl/base/register', data); //注册
export const newRegisterApi = data => post('xmgl/xzRegistry/add', data); //注册
export const loginPhoneApi = data => post('xmgl/base/loginPhone', data); //手机号登录
export const loginApi = data => post('xmgl/base/login', data); //账号密码登录
export const loginApiMD5 = (data) => post("xmgl/base/md5/login", data); //账号密码登录 MD5加密

View File

@ -1,6 +1,6 @@
<template>
<!-- v-if="headerShow" -->
<div class="title flex">
<div class="title">
<div class="title_l flex">
<img v-if="systemInfo.platformLogo" :src="systemInfo.platformLogo" class="logo" height="25" />
<img v-else-if="LOGO_white" :src="'./img/logo/' + LOGO_white + '.png'" class="logo" height="25" />
@ -27,6 +27,13 @@
>>{{ item.name }}</span
>
</div>
<div class="title_near flex">
<userChange></userChange>
</div>
<div class="title_near-tow flex">
<div class="divider-line"></div>
<centerChange></centerChange>
</div>
<div class="headerRight">
<el-popover placement="bottom" width="200" v-show="showQrCode && $store.state.userInfo.inputQrCode == 0" trigger="click">
<div id="qrCode" ref="qrCodeDiv"></div>
@ -129,6 +136,8 @@ import account from './account'
import changeTheme from './changeTheme'
import message from './message'
import QRCode from 'qrcodejs2'
import userChange from "@/components/userChange.vue";
import centerChange from "@/components/centerChange.vue";
import { getProjectDetail } from '@/assets/js/api/baseInfo.js'
export default {
@ -157,7 +166,7 @@ export default {
jumpToken: ''
}
},
components: { language, account, changeTheme, message },
components: { language, account, changeTheme, message, userChange, centerChange },
watch: {
$route: {
@ -489,17 +498,31 @@ export default {
box-sizing: border-box;
padding: 0 23px;
height: 61px;
display: flex;
align-items: center;
justify-content: flex-end
}
.title_l {
font-family: PingFangSC-Semibold;
font-size: 16px;
color: #ffffff;
letter-spacing: 0;
// width: 100%;
margin-right: 50px;
img {
margin-right: 14px;
}
}
.title_near{
margin-right: 50px;
}
.title_near-tow{
.divider-line{
width: 1px;
height: 16px;
background: #FFFFFF;
margin-right: 50px;
}
}
.title_r {
cursor: pointer;
display: inline-flex;
@ -528,6 +551,7 @@ p {
.headerRight {
display: inline-flex;
align-items: center;
margin-left: auto
}
.canClick {
cursor: pointer;

View File

@ -3051,6 +3051,11 @@ const routes2 = [
keepAlive: true,
},
},
{
path: "/workSpace",
name: "workSpace",
component: () => import("../views/workSpace/index.vue")
},
// {
// path: '/equipmentCenterIndx',
// name: 'equipmentCenterIndx',

View File

@ -210,31 +210,31 @@
</el-table>
</el-tab-pane>
<el-tab-pane label="新用户审核" name="third">
<el-table class="tables" :data="level1AccountData">
<el-table class="tables" :data="userAuditList">
<el-table-column
prop="jobName"
prop="account"
align="center"
label="账号"
></el-table-column>
<el-table-column
prop="jobDuty"
prop="pw"
label="密码"
align="center"
></el-table-column>
<el-table-column
prop="jobDuty"
prop="email"
label="电子邮箱"
align="center"
></el-table-column>
<el-table-column
prop="jobDuty"
prop="createTime"
label="注册时间"
align="center"
></el-table-column>
<el-table-column :label="$t('message.deviceManage.operation')">
<template slot-scope="scope">
<div class="tableBtns">
<!-- <div @click="auditPass(scope.row)" class="operationText">
<div @click="auditPass(scope.row)" class="operationText" v-if="scope.row.approvalProcess == 1">
<img
src="@/assets/images/tableIcon/auditPassIcon.png"
width="15px"
@ -242,17 +242,18 @@
/>
<span>审批通过</span>
</div>
<div @click="noPassFn(scope.row)" class="operationText">
<div @click="noPassFn(scope.row)" class="operationText" v-if="scope.row.approvalProcess == 1">
<img
src="@/assets/images/tableIcon/noPassIcon.png"
width="15px"
height="15px"
/>
<span>拒绝申请</span>
</div> -->
</div>
<div
@click="relativeGroupFn(scope.row)"
class="operationText"
v-if="scope.row.approvalProcess == 2"
>
<img
src="@/assets/images/tableIcon/relativeIcon.png"
@ -261,7 +262,90 @@
/>
<span>关联组织</span>
</div>
<div @click="deleteJobFn(scope.row)" class="operationText">
<div @click="deleteJobFn(scope.row)" class="operationText" v-if="scope.row.approvalProcess != 1">
<img
src="@/assets/images/icon-delete.png"
width="15px"
height="15px"
/>
<span>{{ $t("message.deviceManage.delete") }}</span>
</div>
</div>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="用户管理" name="four">
<el-button
type="primary"
size="medium"
@click="addAccountFn"
v-if="treeSelectData.companySn"
>添加成员</el-button
>
<el-button
type="primary"
size="medium"
@click="configAccountFn(treeSelectData, 'project')"
v-if="treeSelectData.projectName"
>权限配置</el-button
>
<el-table class="tables" :data="level1AccountData">
<el-table-column
prop="realName"
align="center"
:label="'姓名'"
></el-table-column>
<el-table-column
prop="account"
:label="'登录账号'"
align="center"
></el-table-column>
<el-table-column prop="userTel" :label="'手机号'" align="center">
</el-table-column>
<el-table-column
prop="jobName"
:label="'所属岗位'"
align="center"
></el-table-column>
<el-table-column
:label="$t('message.deviceManage.operation')"
align="center"
width="400px"
>
<template slot-scope="scope">
<div class="tableBtns" style="margin-left: 35%">
<div
v-if="!treeSelectData.projectName"
@click="configAccountFn(scope.row, 'yi')"
class="operationText"
>
<i class="el-icon-setting"></i>
<span>权限配置</span>
</div>
<div
v-if="treeSelectData.projectName && company == 'zhengwu'"
@click="uploadAccountFn(scope.row)"
class="operationText"
>
<el-button size="small" type="primary">上传账号</el-button>
</div>
<div @click="editGroup(scope.row)" class="operationText">
<i class="el-icon-s-operation"></i>
<span>调整组织</span>
</div>
<div @click="editAccountFn(scope.row)" class="operationText">
<img
src="@/assets/images/icon-edit.png"
width="15px"
height="15px"
/>
<span>{{ $t("message.deviceManage.edit") }}</span>
</div>
<div
@click="deleteAccountFn(scope.row)"
class="operationText"
>
<img
src="@/assets/images/icon-delete.png"
width="15px"
@ -1263,6 +1347,8 @@ import {
editSystemUserApi,
deleteSystemUserApi,
getSystemUserBySnApi,
getUserAuditListApi,
userAuditApi
} from "@/assets/js/api/account.js";
import {
getProjectListApi,
@ -1313,6 +1399,7 @@ export default {
checkArr: [], //
moduleInfo: {},
showMap: false,
userAuditList: [],
level1CompanyData: [],
level4CompanyData: [],
level1Index: 0,
@ -2197,12 +2284,9 @@ export default {
},
handleTabClick(tab, event) {
console.log(tab, event);
// if(this.tabActiveName=='first'){
// this.getAccountList()
// }else if(this.tabActiveName=='second'){
// this.getJobList()
// }
if(this.tabActiveName == 'third'){
this.getUserAuditListApi();
}
},
handleNodeClick(data) {
this.tabActiveName = "first";
@ -2972,7 +3056,7 @@ export default {
//
noPassFn(item) {
this.$confirm(
"账号xxx拒绝申请后将会发送" + "【注册失败提醒】到注册人邮箱!",
`账号{${item.account}}拒绝申请后将会发送【注册失败提醒】到注册人邮箱!`,
this.$t("message.companyDiagram.Tips"),
{
confirmButtonText: this.$t(
@ -2982,18 +3066,15 @@ export default {
type: "warning",
}
).then(() => {
deleteorganizationJobApi({ id: item.id }).then((res) => {
this.getJobList();
this.$message.success(
this.$t("message.companyDiagram.deleteSuccess")
); //!
userAuditApi({ id: item.id, approvalProcess:3, xzRegistry: item }).then((res) => {
this.getUserAuditListApi();
});
});
},
//
auditPass(item) {
this.$confirm(
"账号xxx审批通过后将会发送" + "【注册成功提醒】到注册人邮箱!",
`账号{${item.account}}审批通过后将会发送【注册成功提醒】到注册人邮箱!`,
this.$t("message.companyDiagram.Tips"),
{
confirmButtonText: this.$t(
@ -3003,11 +3084,8 @@ export default {
type: "warning",
}
).then(() => {
deleteorganizationJobApi({ id: item.id }).then((res) => {
this.getJobList();
this.$message.success(
this.$t("message.companyDiagram.deleteSuccess")
); //!
userAuditApi({ id: item.id, approvalProcess:2, xzRegistry: item }).then((res) => {
this.getUserAuditListApi();
});
});
},
@ -3140,6 +3218,14 @@ export default {
});
});
},
//
getUserAuditListApi(){
let data = this.treeSelectData;
let sn = data.projectSn ? data.projectSn : data.companySn;
getUserAuditListApi({ sn: sn, pageNo: -1, pageSize: -1 }).then((res) => {
this.userAuditList = res.result.records;
});
},
//
getAccountList() {
let data = this.treeSelectData;

View File

@ -256,7 +256,7 @@ export default {
font-size: 16px;
color: #ffffff;
letter-spacing: 0;
margin-right: 80px;
margin-right: 50px;
img {
margin-right: 14px;
}

View File

@ -220,9 +220,9 @@
key="registerForm"
label-width="0px"
>
<el-form-item label="" prop="userName">
<el-form-item label="" prop="account">
<el-input
v-model="registerForm.userName"
v-model="registerForm.account"
style="height: 53px; font-size: 16px"
placeholder="请输入您的账号"
>
@ -233,10 +233,10 @@
/>
</el-input>
</el-form-item>
<el-form-item label="" prop="password">
<el-form-item label="" prop="pw">
<!-- @keyup.enter.native="loginFn" -->
<el-input
v-model="registerForm.password"
v-model="registerForm.pw"
style="height: 53px; font-size: 16px"
type="password"
show-password
@ -251,12 +251,12 @@
</el-form-item>
<el-form-item
label=""
prop="enterpriseName"
prop="companyName"
v-if="registerType == 2"
>
<!-- @keyup.enter.native="loginFn" -->
<el-input
v-model="registerForm.enterpriseName"
v-model="registerForm.companyName"
style="height: 53px; font-size: 16px"
placeholder="请输入您的企业名称"
>
@ -394,6 +394,7 @@ import {
getUserByUidApi,
companyLoginApi,
projectLoginApi,
newRegisterApi
} from "@/assets/js/api/loginSign";
import { selectSystemLogoConfigApi } from "@/assets/js/api/jxjadmin";
import getcode from "@/components/getMsgCode";
@ -448,10 +449,10 @@ export default {
password: "",
},
registerForm: {
userName: "",
password: "",
account: "",
pw: "",
email: "",
enterpriseName: "",
companyName: "",
},
rules: {
account: [
@ -470,21 +471,21 @@ export default {
],
},
registerRules: {
userName: [
account: [
{
required: true,
message: "请输入",
trigger: "blur",
},
],
password: [
pw: [
{
required: true,
message: "请输入",
trigger: "blur",
},
],
enterpriseName: [
companyName: [
{
required: true,
message: "请输入",
@ -596,10 +597,10 @@ export default {
goRegister() {
this.isLogin = false;
this.registerForm = {
userName: "",
password: "",
account: "",
pw: "",
email: "",
enterpriseName: "",
companyName: "",
}
},
//
@ -798,38 +799,23 @@ export default {
}
},
registerFn() {
// 12345 6 7
if (this.registerType == 1) {
this.$refs["LoginInfo"].$refs["form"].validate((valid) => {
this.$refs["registerForm"].validate((valid) => {
// console.log("this.$refs['LoginInfo']:", this.$refs["LoginInfo"]);
let requestData = {...this.registerForm}
requestData.accountType = this.registerType;
if(this.registerType == 1){
delete requestData.enterpriseName
}
if (valid) {
loginApi(this.form).then((res) => {
console.log("--------------------么么儿们10");
console.log(res.result);
this.parseLoginData(res.result);
this.getDetail(this.headquartersSnData);
newRegisterApi(this.registerForm).then((res) => {
this.$message.success('注册成功待审核');
this.goLogin();
});
} else {
console.log("error submit!!");
return false;
}
});
} else {
this.$refs["LoginInfo"].$refs["form"].validate((valid) => {
// console.log("this.$refs['LoginInfo']:", this.$refs["LoginInfo"]);
if (valid) {
loginApi(this.form).then((res) => {
console.log("--------------------么么儿们10");
console.log(res.result);
this.parseLoginData(res.result);
this.getDetail(this.headquartersSnData);
});
} else {
console.log("error submit!!");
return false;
}
});
}
},
selectMp3FileList() {
selectNoticeRemindSoundApi({
@ -957,7 +943,8 @@ export default {
console.log("arr2", arr2);
// 访
if (!arr2.length) {
this.$router.push("/projectIndex");
// this.$router.push("/projectIndex");
this.$router.push("/workSpace");
} else {
this.$router.push(arr2[0].modulePath);
}
@ -967,7 +954,8 @@ export default {
(data.styleType != 2 && data.styleType != 3) ||
!data.styleType
) {
this.$router.push("/projectIndex");
// this.$router.push("/projectIndex");
this.$router.push("/workSpace");
} else if (data.styleType == 2) {
this.$router.push("/projectV2/taskList");
} else {

View File

@ -8,7 +8,7 @@
:model="form"
ref="form"
:rules="rules"
label-width="165px"
label-width="240px"
>
<el-row :gutter="12">
<el-col :span="6">
@ -132,6 +132,45 @@
></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="是否显示项目前台" prop="isShowProjectFront">
<el-switch
v-model="form.isShowProjectFront"
active-color="#13ce66"
inactive-color="#ff4949"
:active-value="1"
:inactive-value="0"
>
</el-switch>
{{ form.isShowProjectFront == 1 ? '是' : '否' }}
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="12">
<el-col :span="6">
<el-form-item label="是否开启劳务人员资质证书到期预警" prop="projectFront">
<div class="form-item-content">
<el-switch
v-model="form.isShowProjectFront"
active-color="#13ce66"
inactive-color="#ff4949"
:active-value="1"
:inactive-value="0"
>
</el-switch>
<span>{{ form.isShowProjectFront == 1 ? '是' : '否' }}</span>
<el-popover
placement="bottom-start"
:visible-arrow="false"
:offset="30"
width="200"
trigger="hover"
content="开启后将会对企业下的各个项目开启人员证书到期预警提示,提前预警时间可以自行设置,监测内容包括人员的合同信息、资格证书、保险信息">
<i class="el-icon-warning-outline" slot="reference"></i>
</el-popover>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="默认审批用户注册企业" prop="auditCompany">
<div class="select-content">
@ -150,6 +189,16 @@
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="12">
<el-col :span="6">
<el-form-item label="提前" prop="projectFront">
<div class="form-item-content">
<el-input-number v-model="form.projectFront" :controls="false" style="width: 100px"></el-input-number>
<span></span>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="12">
<el-col :span="6">
<el-form-item :label="'登录页面logo'" prop="loginLogo">
@ -234,7 +283,7 @@
</el-form>
<el-button
type="primary"
style="width: 11%; margin: -0.5% 0 0 18%; position: absolute"
style="width: 11%; margin: -0.5% 0 0 25%; position: absolute"
@click="submitData"
>保存</el-button
>
@ -274,6 +323,7 @@ export default {
projectBackground: '', //
equipmentChina: '', //
projectFront: '', //
isShowProjectFront: 0, //
dataCenter: '', //
loginTimeOut:1,
zoomType:0,
@ -534,6 +584,13 @@ export default {
}
}
}
.form-item-content{
display: flex;
align-items: center;
span{
margin: 0px 5px;
}
}
}
.el-upload__tip {
line-height: 20px;

View File

@ -0,0 +1,52 @@
<template>
<!-- 项目首页 -->
<div class="fullHeight">
<vhead :titleName="projectName" :showR="true"></vhead>
<div class="content-part"></div>
</div>
</template>
<script>
import vhead from "@/components/header";
import { getProjectDetail } from "@/assets/js/api/baseInfo.js";
export default {
name: "workSpace",
components: { vhead },
data() {
return {
projectSn: "",
projectName: "",
};
},
created() {
this.projectSn = this.$store.state.projectSn;
},
mounted() {
this.getDataDateils();
},
methods: {
//
getDataDateils() {
let data = {
projectSn: this.projectSn,
};
getProjectDetail(data).then((res) => {
// console.log(res);
if (res.code == 200) {
this.projectName = res.result.projectName;
document.title = this.projectName;
this.$store.commit("setProDetail", res.result);
}
});
}
}
};
</script>
<style lang="less" scoped>
.content-part{
width: 90%;
height: calc(100% - 60px);
border: 1px solid #ccc;
margin: 0 auto;
}
</style>