对接企业单点登录、企业库企业登录可编辑企业基本信息、政策文件库暂去除关联项目、项目库企业只查自己企业

prod
吕天方 9 months ago
parent 6fa255edea
commit 38c918ca3e

@ -5,7 +5,7 @@ VUE_APP_TITLE = 金鸡湖现代服务业品牌管理系统
ENV = 'development'
# 金鸡湖现代服务业品牌管理系统/开发环境
VUE_APP_BASE_API = 'http://192.168.0.104:9040'
VUE_APP_BASE_API = 'http://192.168.0.105:9040'
# VUE_APP_BASE_API = 'http://39.101.188.84:9040'
# 路由懒加载

@ -1,6 +1,6 @@
{
"name": "ruoyi",
"version": "1.0.202405291050",
"version": "1.0.202405310908",
"description": "金鸡湖现代服务业品牌管理系统",
"author": "若依",
"license": "MIT",

@ -0,0 +1,19 @@
import request from "@/utils/request"
// 企业端跳转过来查看个人信息
export function singleSigngetInfo(params) {
return request({
url: "/system/singlelogin/getInfo",
method: "get",
params
})
}
// 企业端退出登录
export function enterpriseLogout(params) {
return request({
url: "/system/singlelogin/enterpriseLogout",
method: "get",
params
})
}

@ -88,6 +88,12 @@ export default {
.then(() => {
this.$store.dispatch("LogOut").then(() => {
// location.href = "/index";
// console.log("this.$store.state.user.userType",this.$store.state.user.userType);
// if(this.$store.state.user.userType == "01") {
// location.href = process.env.VUE_APP_BASE_API + "/system/singlelogin/login"
// } else {
// this.$router.replace("/login");
// }
this.$router.replace("/login");
});
})

@ -12,7 +12,54 @@ const whiteList = ["/login", "/register"];
router.beforeEach((to, from, next) => {
NProgress.start();
if (getToken()) {
if (window.location.href.includes("clienttoken=")) {
var reg = new RegExp(/[?&]clienttoken=([^&#]+)/);
var c = window.location.href.match(reg);
const clienttoken = c && c[1];
// console.log("clienttoken:", clienttoken);
if (store.getters.roles.length === 0) {
isRelogin.show = true;
store.dispatch("SingleSignOnGetInfo",{clientToken:clienttoken}).then(res => {
isRelogin.show = false;
let url = window.location.href;
var modifiedUrl = url.replace(/(\?appid&clienttoken=)[^&#]+/, '');
// console.log(modifiedUrl,'modifiedUrl');
window.location.href = modifiedUrl;
// store.dispatch("GenerateRoutes").then((accessRoutes) => {
// // 根据roles权限生成可访问的路由表
// router.addRoutes(accessRoutes); // 动态添加可访问路由表
// next({ ...to, replace: true }); // hack方法 确保addRoutes已完成
// });
if (store.getters.roles.length === 0) {
isRelogin.show = true;
// 判断当前用户是否已拉取完user_info信息
store
.dispatch("GetInfo")
.then(() => {
isRelogin.show = false;
store.dispatch("GenerateRoutes").then((accessRoutes) => {
// 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes); // 动态添加可访问路由表
next({ ...to, replace: true }); // hack方法 确保addRoutes已完成
});
})
.catch((err) => {
store.dispatch("LogOut").then(() => {
Message.error(err);
next({ path: "/" });
});
});
}
}).catch((err) => {
store.dispatch("LogOut").then(() => {
Message.error(err);
location.href = process.env.VUE_APP_BASE_API + "/system/singlelogin/login"
});
});
} else {
next();
}
} else if (getToken()) {
to.meta.title && store.dispatch("settings/setTitle", to.meta.title);
/* has token*/
if (to.path === "/login") {

@ -1,9 +1,11 @@
import { login, logout, getInfo, refreshToken } from '@/api/login'
import { getToken, setToken, removeToken, setExpiresIn } from '@/utils/auth'
import { getToken, setToken, removeToken, setExpiresIn, getClientToken, setClientToken, removeClientToken } from '@/utils/auth'
import { singleSigngetInfo, enterpriseLogout } from "@/api/jin_ji_hu/login"
const user = {
state: {
token: getToken(),
clientToken: getClientToken(),
id: '',
name: '',
avatar: '',
@ -20,6 +22,9 @@ const user = {
SET_TOKEN: (state, token) => {
state.token = token
},
SET_CLIENTTOKEN: (state, token) => {
state.clientToken = token
},
SET_EXPIRES_IN: (state, time) => {
state.expires_in = time
},
@ -77,6 +82,30 @@ const user = {
})
},
SingleSignOnGetInfo({ commit, state },info) {
return new Promise((resolve, reject) => {
singleSigngetInfo({clientToken: info.clientToken}).then(res => {
// if (res.data.usertype && res.data.usertype.length > 0) { // 验证返回的roles是否是一个非空数组
// let roles = [];
// roles.push(res.data.usertype)
// commit('SET_ROLES', roles)
// } else {
// commit('SET_ROLES', ['ROLE_DEFAULT'])
// }
setClientToken(info.clientToken)
commit('SET_CLIENTTOKEN', res.data.token)
setToken(res.data.token)
commit('SET_TOKEN', res.data.token)
// commit('SET_USERTYPE', res.data.usertype)
// console.log(res.data.usertype,"res.data.usertype");
// console.log(state.roles,"state.roles");
resolve()
}).catch(error => {
reject(error)
})
})
},
// 获取用户信息
GetInfo({ commit, state }) {
return new Promise((resolve, reject) => {
@ -118,17 +147,35 @@ const user = {
// 退出系统
LogOut({ commit, state }) {
if(state.userType == "01") {
return new Promise((resolve, reject) => {
enterpriseLogout({clienttoken: state.clientToken}).then(()=>{
commit('SET_CLIENTTOKEN', '')
removeClientToken()
logout(state.token).then(() => {
commit('SET_TOKEN', '')
commit('SET_ROLES', [])
commit('SET_PERMISSIONS', [])
removeToken()
resolve()
})
}).catch(error => {
reject(error)
})
})
} else {
return new Promise((resolve, reject) => {
logout(state.token).then(() => {
commit('SET_TOKEN', '')
commit('SET_ROLES', [])
commit('SET_PERMISSIONS', [])
removeToken()
resolve()
}).catch(error => {
reject(error)
})
})
}
},
// 前端 登出

@ -1,7 +1,7 @@
import Cookies from 'js-cookie'
const TokenKey = 'Admin-Token'
const ClientToken = 'ClientToken'
const ExpiresInKey = 'Admin-Expires-In'
export function getToken() {
return Cookies.get(TokenKey)
@ -26,3 +26,17 @@ export function setExpiresIn(time) {
export function removeExpiresIn() {
return Cookies.remove(ExpiresInKey)
}
// 企业端登录的clientToken
export function getClientToken() {
return Cookies.get(ClientToken)
}
export function setClientToken(token) {
return Cookies.set(ClientToken, token)
}
export function removeClientToken() {
return Cookies.remove(ClientToken)
}

@ -16,23 +16,106 @@
<div v-for="(item,index) in tabs" :key="index" class="tabs-top-item" :class="active == index ? 'active-item' : ''" @click="active = index">{{ item.name }}</div>
</div>
<div class="tabs-bottom" :style="tabStyle">
<tab-one v-if="active == 0"></tab-one>
<tab-one v-if="active == 0" :detailedInfo="info"></tab-one>
<tab-two v-if="active == 1" :creditCode="$route.query.creditCode"></tab-two>
<tab-three v-if="active == 2" :creditCode="$route.query.creditCode"></tab-three>
<tab-four v-if="active == 3" :id="$route.query.userId"></tab-four>
</div>
</div>
<div class="enter-footTabs">
<div class="enter-footTabs" v-if="userType == '02'">
<el-button type="primary" @click="goBack"></el-button>
<el-button type="primary">导出企业清单</el-button>
</div>
<div class="enter-footTabs" v-else>
<el-button type="primary" @click="goBack"></el-button>
<el-button type="primary" @click="editEnterInfo"></el-button>
</div>
</el-col>
</el-row>
<!-- 编辑企业信息 -->
<my-dialog title="编辑企业信息" @close="importClose" @confirm="confirm" ref="importProject" closeText="关闭" :myclass="true">
<el-form :model="addFrom" size="small" ref="importFrom" label-width="180px" :rules="rules" class="newArticle">
<el-row>
<el-col :span="12">
<el-form-item label="企业名称:" class="importFormItem" prop="enterpriseName">
<el-input v-model.trim="addFrom.enterpriseName" placeholder="请输入内容" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="法定代表人:" class="importFormItem" prop="legalEntity">
<el-input v-model.trim="addFrom.legalEntity" placeholder="请输入常用联系人名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="企业统一社会信用代码:" class="importFormItem" prop="creditCode">
<el-input v-model.trim="addFrom.creditCode" placeholder="请输入内容" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="企业类型:" class="importFormItem" prop="enterpriseType">
<el-input v-model.trim="addFrom.enterpriseType" placeholder="请输入常用联系人公司职务"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="注册资本:" class="importFormItem" prop="registeredCapital">
<el-input v-model.trim="addFrom.registeredCapital" placeholder="请输入常用联系人手机号码"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属行业:" class="importFormItem" prop="industry">
<el-input v-model.trim="addFrom.industry" placeholder="请输入常用联系人邮箱"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="成立日期:" class="importFormItem" prop="establishDate">
<!-- <el-input v-model.trim="addFrom.establishDate" placeholder="请输入常用联系人邮箱"></el-input> -->
<el-date-picker
class="ignoreElement"
v-model="addFrom.establishDate"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
type="date"
placeholder="选择成立日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="曾用名:" class="importFormItem" prop="formerName">
<el-input v-model.trim="addFrom.formerName" placeholder="请输入常用联系人邮箱"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="组织机构代码:" class="importFormItem" prop="institutionCode">
<el-input v-model.trim="addFrom.institutionCode" placeholder="请输入常用联系人邮箱"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="注册地址:" class="importFormItem" prop="enrollAddress">
<el-input v-model.trim="addFrom.enrollAddress" placeholder="请输入常用联系人邮箱"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="注册类型:" class="importFormItem" prop="enrollType">
<el-input v-model.trim="addFrom.enrollType" placeholder="请输入常用联系人邮箱"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="经营范围:" class="importFormItem" prop="business">
<el-input v-model.trim="addFrom.business" placeholder="请输入常用联系人邮箱"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</my-dialog>
</div>
</template>
<script>
import { tabOne, tabTwo, tabThree, tabFour, projectProgress } from "./components"
import { enterpriseBasicInfoId } from "@/api/jin_ji_hu/enterList"
import { enterpriseBasicInfoId, enterpriseBasicInfoChange } from "@/api/jin_ji_hu/enterList"
import myDialog from "@/views/components/myDialog/index.vue"
export default {
dicts: ['jjh_project_type','jjh_status'],
components:{
@ -40,9 +123,12 @@ export default {
tabTwo,
tabThree,
tabFour,
myDialog
},
data() {
return {
// 01 02
userType: this.$store.state.user.userType,
tabs:[
{
name: "基本信息",
@ -62,11 +148,67 @@ export default {
tabStyle:{
height:undefined,
overflow: 'auto'
}
},
addFrom: {
enterpriseName:"",
legalEntity:"",
creditCode:"",
enterpriseType:"",
registeredCapital:"",
industry:"",
establishDate:"",
formerName:"",
institutionCode:"",
enrollAddress:"",
enrollType:"",
business:"",
},
rules:{
enterpriseName:[
{ required: true, message: '请填写企业名称', trigger: 'blur' }
],
legalEntity:[
{ required: true, message: '请填写法定代表人', trigger: 'blur' }
],
creditCode:[
{ required: true, message: '请填写统一社会信用代码', trigger: 'blur' }
],
enterpriseType:[
{ required: true, message: '请填写企业类型', trigger: 'blur' }
],
registeredCapital:[
{ required: true, message: '请填写注册资本', trigger: 'blur' }
],
industry:[
{ required: true, message: '请填写所属行业', trigger: 'blur' }
],
establishDate:[
{ required: true, message: '请填写成立日期', trigger: 'blur' }
],
formerName:[
{ required: true, message: '请填写曾用名', trigger: 'blur' }
],
institutionCode:[
{ required: true, message: '请填写组织机构代码', trigger: 'blur' }
],
enrollAddress:[
{ required: true, message: '请填写注册地址', trigger: 'blur' }
],
enrollType:[
{ required: true, message: '请填写注册类型', trigger: 'blur' }
],
business:[
{ required: true, message: '请填写经营范围', trigger: 'blur' }
],
},
}
},
mounted(){
if(this.userType == '02') {
this.getInfo(this.$route.query.userId)
} else {
this.getInfo(this.$store.state.user.enterpriseId)
}
this.cancalDebounce();
window.addEventListener('resize', this.cancalDebounce);
},
@ -79,16 +221,53 @@ export default {
enterpriseBasicInfoId(id).then(res=>{
this.info = res.data;
this.loading = false;
// this.detailedInfo = JSON.parse(res.data.otherJson);
// this.fileJson = JSON.parse(res.data.fileJson);
// for (var key in obj) {
// if (obj.hasOwnProperty(key)) {
// var value = obj[key];
// console.log(key + ': ' + value);
// }
// }
})
},
//
importClose(){
this.$nextTick(()=>{
this.$refs.importFrom.resetFields();
this.$refs.importProject.close();
this.addFrom = {
enterpriseName:"",
legalEntity:"",
creditCode:"",
enterpriseType:"",
registeredCapital:"",
industry:"",
establishDate:"",
formerName:"",
institutionCode:"",
enrollAddress:"",
enrollType:"",
business:"",
}
})
},
//
editEnterInfo(){
this.addFrom = this.info;
this.$refs.importProject.open();
},
//
confirm(){
this.$refs.importFrom.validate((valid) => {
if (valid) {
enterpriseBasicInfoChange(this.addFrom).then((res)=>{
if(res.code == 200) {
this.getInfo(this.$store.state.user.enterpriseId);
this.importClose();
this.$message({
type: "success",
message: "修改成功!",
});
}
})
} else {
return false;
}
});
},
goBack(){
this.$router.back();
},

@ -67,10 +67,10 @@
<my-pagination
id="L-pagination"
:total="total"
:page="pagination.current"
:limit="pagination.size"
:page="pagination.pageNum"
:limit="pagination.pageSize"
@pagination="getPagination"
:current-page.sync="pagination.current"
:current-page.sync="pagination.pageNum"
></my-pagination>
</section>
</div>
@ -136,8 +136,8 @@ export default {
deptId: this.$store.state.user.deptId,
total:0,
pagination: {
current:1,
size:10,
pageNum:1,
pageSize:10,
},
loading:false,
formInline: {
@ -214,15 +214,15 @@ export default {
},
//
getPagination(pages) {
this.pagination.current = pages.page;
this.pagination.size = pages.limit;
this.pagination.pageNum = pages.page;
this.pagination.pageSize = pages.limit;
this.getList();
},
//
handleQuery() {
this.pagination = {
current: 1,
size: 10
pageNum: 1,
pageSize: 10
}
this.pagination = { ...this.pagination,...this.formInline };
// console.log(this.pagination);
@ -233,8 +233,8 @@ export default {
resetQuery(formName){
this.$refs[formName].resetFields();
this.pagination = {
current: 1,
size: 10
pageNum: 1,
pageSize: 10
}
this.getList();
},

@ -2,13 +2,13 @@
<div class="L-public-main" id="L-size-main">
<div class="L-main">
<header id="L-header">
<el-form :inline="true" :model="formInline" size="small" class="demo-form-inline" ref="queryFrom" :disabled="userType == '01' ? true : false">
<el-form :inline="true" :model="formInline" size="small" class="demo-form-inline" ref="queryFrom">
<el-col :span="22">
<el-form-item label="企业名称:" prop="enterpriseName">
<el-input v-model.trim="formInline.enterpriseName" placeholder="请输入内容"></el-input>
<el-input v-model.trim="formInline.enterpriseName" placeholder="请输入内容" :disabled="userType == '01' ? true : false"></el-input>
</el-form-item>
<el-form-item label="统一社会信用代码:" prop="enterpriseCode">
<el-input v-model.trim="formInline.enterpriseCode" placeholder="请输入内容"></el-input>
<el-input v-model.trim="formInline.enterpriseCode" placeholder="请输入内容" :disabled="userType == '01' ? true : false"></el-input>
</el-form-item>
<!-- <el-form-item label="政策等级:" prop="policyLevel">
<el-select class="ignoreElement" v-model="formInline.policyLevel" placeholder="请选择">

@ -11,7 +11,7 @@
<el-tab-pane label="企业用户登录" name="01"></el-tab-pane>
<el-tab-pane label="政务用户登录" name="02"></el-tab-pane>
</el-tabs>
<el-form-item prop="username">
<el-form-item prop="username" v-show="userType == '02'">
<el-input
v-model="loginForm.username"
type="text"
@ -25,7 +25,7 @@
/>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-form-item prop="password" v-show="userType == '02'">
<el-input
v-model="loginForm.password"
type="password"
@ -40,7 +40,7 @@
/>
</el-input>
</el-form-item>
<el-form-item prop="code" v-if="captchaEnabled">
<el-form-item prop="code" v-if="captchaEnabled && userType == '02'">
<el-input
v-model="loginForm.code"
auto-complete="off"
@ -60,10 +60,11 @@
</el-form-item>
<el-checkbox
v-model="loginForm.rememberMe"
v-show="userType == '02'"
style="margin: 0px 0px 25px 0px"
>记住密码</el-checkbox
>
<el-form-item style="width: 100%">
<el-form-item style="width: 100%" v-if="userType == '02'">
<el-button
:loading="loading"
size="medium"
@ -80,6 +81,20 @@
>
</div>
</el-form-item>
<el-form-item style="width: 100%" v-else class="enterBtnLogin">
<div class="wai-box">
<el-button
:loading="loading"
size="medium"
type="primary"
style="width: 100%"
@click.native.prevent="handleLogin"
>
<span v-if="!loading"></span>
<span v-else> ...</span>
</el-button>
</div>
</el-form-item>
</el-form>
<!-- 底部 -->
<!-- <div class="el-login-footer">
@ -158,6 +173,9 @@ export default {
};
},
handleLogin() {
if(this.userType == '01') {
location.href = process.env.VUE_APP_BASE_API + "/system/singlelogin/login"
} else {
this.$refs.loginForm.validate((valid) => {
if (valid) {
this.loading = true;
@ -187,6 +205,7 @@ export default {
});
}
});
}
},
},
};
@ -205,6 +224,14 @@ export default {
color: #707070;
}
.enterBtnLogin {
height: 100%;
.wai-box {
height: 100%;
margin-top: 30%;
}
}
.login-form {
position: absolute;
top: 45%;
@ -213,6 +240,7 @@ export default {
border-radius: 6px;
background: #ffffff;
width: 400px;
height: 380px;
padding: 25px 25px 5px 25px;
box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.15);
.el-input {

@ -52,13 +52,13 @@
<section>
<el-table v-loading="loading" :data="tableData" :row-class-name="tableRowClassName" :height="tabHeader" :max-height="tabHeader">
<el-table-column label="政策文件名称" width="500px" prop="name" />
<el-table-column label="关联项目" width="450px" prop="joinProject">
<!-- <el-table-column label="关联项目" width="450px" prop="joinProject">
<template slot-scope="scope">
<div class="project-name" @click="goToProject(scope.row.joinProject)">
<dict-tag :options="dict.type.jjh_project_type" :value="scope.row.joinProject"/>
</div>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column label="发文单位" prop="enterUnit" />
<el-table-column label="政策等级" prop="policyLevel">
<template slot-scope="scope">
@ -126,7 +126,7 @@
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<!-- <el-row :gutter="20">
<el-col :span="12">
<el-form-item label="关联项目:" class="importFormItem" prop="joinProject">
<el-select v-model="addFrom.joinProject" placeholder="请选择">
@ -139,7 +139,7 @@
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-row> -->
<el-row>
<el-col :span="24">
<el-form-item label="发文内容:" class="importFormItem" prop="enterContent">
@ -221,9 +221,9 @@ export default {
name:[
{ required: true, message: '请填写政策文件名称', trigger: 'blur' }
],
joinProject:[
{ required: true, message: '请填写政策等级', trigger: 'blur' }
],
// joinProject:[
// { required: true, message: '', trigger: 'blur' }
// ],
enterUnit:[
{ required: true, message: '请填写发文单位', trigger: 'blur' }
],

@ -226,6 +226,8 @@ export default {
dicts: ['jjh_project_type', 'bms_approval_status'],
data() {
return {
// 01 02
userType: this.$store.state.user.userType,
total:0,
pagination: {
current:1,
@ -295,6 +297,9 @@ export default {
this.formInline.projectName = this.$route.params.projectName;
this.pagination = { ...this.pagination,...this.formInline };
}
if(this.userType == "01") {
this.pagination.creditCode = this.$store.state.user.name
}
this.cancalDebounce();
window.addEventListener('resize', this.cancalDebounce);

Loading…
Cancel
Save