saas第一期

dev.saas
面包骑士 2024-09-26 20:45:35 +08:00
parent f701ae8256
commit 28a8170785
26 changed files with 1217 additions and 216 deletions

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询企业详细信息列表
export function listFirmDetails(query) {
return request({
url: '/firm/firmDetails/list',
method: 'get',
params: query
})
}
// 查询企业详细信息详细
export function getFirmDetails(id) {
return request({
url: '/firm/firmDetails/' + id,
method: 'get'
})
}
// 新增企业详细信息
export function addFirmDetails(data) {
return request({
url: '/firm/firmDetails',
method: 'post',
data: data
})
}
// 修改企业详细信息
export function updateFirmDetails(data) {
return request({
url: '/firm/firmDetails',
method: 'put',
data: data
})
}
// 删除企业详细信息
export function delFirmDetails(id) {
return request({
url: '/firm/firmDetails/' + id,
method: 'delete'
})
}

View File

@ -3,7 +3,7 @@ import request from '@/utils/request'
// 查询企业基础信息列表 // 查询企业基础信息列表
export function listFirmInfo(query) { export function listFirmInfo(query) {
return request({ return request({
url: '/system/firmInfo/list', url: '/firm/firmInfo/list',
method: 'get', method: 'get',
params: query params: query
}) })
@ -12,7 +12,7 @@ export function listFirmInfo(query) {
// 查询企业基础信息详细 // 查询企业基础信息详细
export function getFirmInfo(id) { export function getFirmInfo(id) {
return request({ return request({
url: '/system/firmInfo/' + id, url: '/firm/firmInfo/' + id,
method: 'get' method: 'get'
}) })
} }
@ -20,7 +20,7 @@ export function getFirmInfo(id) {
// 新增企业基础信息 // 新增企业基础信息
export function addFirmInfo(data) { export function addFirmInfo(data) {
return request({ return request({
url: '/system/firmInfo', url: '/firm/firmInfo',
method: 'post', method: 'post',
data: data data: data
}) })
@ -29,7 +29,7 @@ export function addFirmInfo(data) {
// 修改企业基础信息 // 修改企业基础信息
export function updateFirmInfo(data) { export function updateFirmInfo(data) {
return request({ return request({
url: '/system/firmInfo', url: '/firm/firmInfo',
method: 'put', method: 'put',
data: data data: data
}) })
@ -38,7 +38,7 @@ export function updateFirmInfo(data) {
// 删除企业基础信息 // 删除企业基础信息
export function delFirmInfo(id) { export function delFirmInfo(id) {
return request({ return request({
url: '/system/firmInfo/' + id, url: '/firm/firmInfo/' + id,
method: 'delete' method: 'delete'
}) })
} }

View File

@ -1,7 +1,7 @@
import request from '@/utils/request' import request from '@/utils/request'
// 登录方法 // 登录方法
export function login(firmCode, username, password, code, uuid) { export function login(username, password, code, uuid) {
return request({ return request({
url: '/auth/login', url: '/auth/login',
headers: { headers: {
@ -9,11 +9,10 @@ export function login(firmCode, username, password, code, uuid) {
repeatSubmit: false repeatSubmit: false
}, },
method: 'post', method: 'post',
data: {firmCode, username, password, code, uuid} data: {username, password, code, uuid}
}) })
} }
// 注册方法 // 注册方法
export function register(data) { export function register(data) {
return request({ return request({

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询车辆报文记录列表
export function listMessage(query) {
return request({
url: '/message/messageInfo/list',
method: 'get',
params: query
})
}
// 查询车辆报文记录详细
export function getMessage(id) {
return request({
url: '/message/messageInfo/' + id,
method: 'get'
})
}
// 新增车辆报文记录
export function addMessage(data) {
return request({
url: '/message/messageInfo',
method: 'post',
data: data
})
}
// 修改车辆报文记录
export function updateMessage(data) {
return request({
url: '/message/messageInfo',
method: 'put',
data: data
})
}
// 删除车辆报文记录
export function delMessage(id) {
return request({
url: '/message/messageInfo/' + id,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询车辆报文类型列表
export function listMessageType(query) {
return request({
url: '/message/messageType/list',
method: 'get',
params: query
})
}
// 查询车辆报文类型详细
export function getMessageType(id) {
return request({
url: '/message/messageType/' + id,
method: 'get'
})
}
// 新增车辆报文类型
export function addMessageType(data) {
return request({
url: '/message/messageType',
method: 'post',
data: data
})
}
// 修改车辆报文类型
export function updateMessageType(data) {
return request({
url: '/message/messageType',
method: 'put',
data: data
})
}
// 删除车辆报文类型
export function delMessageType(id) {
return request({
url: '/message/messageType/' + id,
method: 'delete'
})
}

View File

@ -21,7 +21,7 @@ export function getUser(userId) {
// 新增用户 // 新增用户
export function addUser(data) { export function addUser(data) {
return request({ return request({
url: '/saas/user', url: '/system/user',
method: 'post', method: 'post',
data: data data: data
}) })

View File

@ -18,6 +18,14 @@ export function listDbTable(query) {
}) })
} }
// 查询db所有数据库列表
export function listDbTableAll() {
return request({
url: '/code/gen/db/listAll',
method: 'get'
})
}
// 查询表详细信息 // 查询表详细信息
export function getGenTable(tableId) { export function getGenTable(tableId) {
return request({ return request({
@ -36,11 +44,14 @@ export function updateGenTable(data) {
} }
// 导入表 // 导入表
export function importTable(data) { export function importTable(tables, dbName) {
return request({ return request({
url: '/code/gen/importTable', url: '/code/gen/importTable',
method: 'post', method: 'post',
params: data params: {
tables: tables,
dbName: dbName
}
}) })
} }
@ -69,9 +80,29 @@ export function genCode(tableName) {
} }
// 同步数据库 // 同步数据库
export function synchDb(tableName) { export function synchDb(tableName,dbName) {
return request({ return request({
url: '/code/gen/synchDb/' + tableName, url: '/code/gen/synchDb/' + tableName+'/'+dbName,
method: 'get' method: 'get'
}) })
} }
// 查询所有数据库名称
export function selDbNameAll() {
return request({
url: '/code/gen/db/selDbNameAll',
method: 'get'
})
}
// 根据数据库名称与表名称查询表字段
export function selectDbTableColumnsByName(dbName,table) {
return request({
url: '/code/gen/selectDbTableColumnsByName',
method: 'get',
params: {
dbName: dbName,
table: table
}
})
}

View File

@ -63,41 +63,6 @@ Vue.use(plugins)
Vue.use(VueMeta) Vue.use(VueMeta)
DictData.install() DictData.install()
//skywalking监控系统
import ClientMonitor from 'skywalking-client-js';
//注册skywalking
ClientMonitor.register({
service: 'muyu::cloud-ui',//应用名称
serviceVersion:'2.0.1',//应用版本号
traceSDKInternal:true,//追踪sdk
pagePath: location.href,//当前路由地址
useFmp: true,
vue:Vue,//vue实例
});
// Vue 报错上报到skywalking。
Vue.config.errorHandler = (error) => {
console.error(error);
reportFrameErrors(error);
}
//监听ajax报错
window.addEventListener('error', error=>{
console.log("error--->",error)
reportFrameErrors(error);
}, true);
//上报错误信息方法
function reportFrameErrors(error){
ClientMonitor.reportFrameErrors({
service: 'muyu::cloud-ui',//应用名称
serviceVersion:'2.0.1',//应用版本号
pagePath: location.href,
vue:Vue,
}, error);
}
/** /**
* If you don't want to use mock-server * If you don't want to use mock-server
* you want to use MockJs for mock api * you want to use MockJs for mock api

View File

@ -5,20 +5,12 @@ import NProgress from 'nprogress'
import 'nprogress/nprogress.css' import 'nprogress/nprogress.css'
import {getToken} from '@/utils/auth' import {getToken} from '@/utils/auth'
import {isRelogin} from '@/utils/request' import {isRelogin} from '@/utils/request'
import Vue from 'vue'
NProgress.configure({showSpinner: false}) NProgress.configure({showSpinner: false})
const whiteList = ['/login','/platform/login', '/register'] const whiteList = ['/login', '/register']
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
//路由上报到skywalking
//因为有些参数已经在ClientMonitor.register中注册过了所以不用填加了。
ClientMonitor.setPerformance({
pagePath: location.href,//当前路由地址。
useFmp: true,
vue:Vue,
});
NProgress.start() NProgress.start()
if (getToken()) { if (getToken()) {
to.meta.title && store.dispatch('settings/setTitle', to.meta.title) to.meta.title && store.dispatch('settings/setTitle', to.meta.title)

View File

@ -44,10 +44,6 @@ export const constantRoutes = [
path: '/login', path: '/login',
component: () => import('@/views/login'), component: () => import('@/views/login'),
hidden: true hidden: true
},{
path: '/platform/login',
component: () => import('@/views/login'),
hidden: true
}, },
{ {
path: '/register', path: '/register',

View File

@ -1,10 +1,9 @@
import {getInfo, login, logout, firmLogin, refreshToken} from '@/api/login' import {getInfo, login, logout, refreshToken} from '@/api/login'
import {getEntCode, getToken, removeEntCode, removeToken, setEntCode, setExpiresIn, setToken} from '@/utils/auth' import {getToken, removeToken, setExpiresIn, setToken} from '@/utils/auth'
const user = { const user = {
state: { state: {
token: getToken(), token: getToken(),
ent_code: getEntCode(),
id: '', id: '',
name: '', name: '',
avatar: '', avatar: '',
@ -16,9 +15,6 @@ const user = {
SET_TOKEN: (state, token) => { SET_TOKEN: (state, token) => {
state.token = token state.token = token
}, },
SET_ENT_CODE: (state, ent_code) => {
state.ent_code = ent_code
},
SET_EXPIRES_IN: (state, time) => { SET_EXPIRES_IN: (state, time) => {
state.expires_in = time state.expires_in = time
}, },
@ -59,29 +55,6 @@ const user = {
}) })
}) })
}, },
// 企业登录
firmLogin({commit}, userInfo) {
const firmCode = userInfo.firmCode.trim()
const firmUser = userInfo.firmUser.trim()
const firmPassword = userInfo.firmPassword.trim()
const rememberMe = userInfo.rememberMe
const code = userInfo.code
const uuid = userInfo.uuid
return new Promise((resolve, reject) => {
login(firmCode,firmUser,firmPassword, rememberMe, code, uuid).then(res => {
let data = res.data
setToken(data.access_token)
setEntCode(data.ent_code)
commit('SET_TOKEN', data.access_token)
commit('SET_ENT_CODE', data.ent_code)
commit('SET_EXPIRES_IN', data.expires_in)
setExpiresIn(data.expires_in)
resolve()
}).catch(error => {
reject(error)
})
})
},
// 获取用户信息 // 获取用户信息
GetInfo({commit, state}) { GetInfo({commit, state}) {
@ -123,11 +96,9 @@ const user = {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
logout(state.token).then(() => { logout(state.token).then(() => {
commit('SET_TOKEN', '') commit('SET_TOKEN', '')
commit('SET_ENT_CODE', '')
commit('SET_ROLES', []) commit('SET_ROLES', [])
commit('SET_PERMISSIONS', []) commit('SET_PERMISSIONS', [])
removeToken() removeToken()
removeEntCode()
resolve() resolve()
}).catch(error => { }).catch(error => {
reject(error) reject(error)
@ -139,9 +110,7 @@ const user = {
FedLogOut({commit}) { FedLogOut({commit}) {
return new Promise(resolve => { return new Promise(resolve => {
commit('SET_TOKEN', '') commit('SET_TOKEN', '')
commit('SET_ENT_CODE', '')
removeToken() removeToken()
removeEntCode()
resolve() resolve()
}) })
} }

View File

@ -2,8 +2,6 @@ import Cookies from 'js-cookie'
const TokenKey = 'Admin-Token' const TokenKey = 'Admin-Token'
const EntCode = 'ent-code'
const ExpiresInKey = 'Admin-Expires-In' const ExpiresInKey = 'Admin-Expires-In'
export function getToken() { export function getToken() {
@ -18,18 +16,6 @@ export function removeToken() {
return Cookies.remove(TokenKey) return Cookies.remove(TokenKey)
} }
export function getEntCode() {
return Cookies.get(EntCode)
}
export function setEntCode(entCode) {
return Cookies.set(EntCode, entCode)
}
export function removeEntCode() {
return Cookies.remove(EntCode)
}
export function getExpiresIn() { export function getExpiresIn() {
return Cookies.get(ExpiresInKey) || -1 return Cookies.get(ExpiresInKey) || -1
} }

View File

@ -1,7 +1,7 @@
import axios from 'axios' import axios from 'axios'
import {Loading, Message, MessageBox, Notification} from 'element-ui' import {Loading, Message, MessageBox, Notification} from 'element-ui'
import store from '@/store' import store from '@/store'
import {getEntCode, getToken} from '@/utils/auth' import {getToken} from '@/utils/auth'
import errorCode from '@/utils/errorCode' import errorCode from '@/utils/errorCode'
import {blobValidate, tansParams} from "@/utils/muyu"; import {blobValidate, tansParams} from "@/utils/muyu";
import cache from '@/plugins/cache' import cache from '@/plugins/cache'
@ -17,7 +17,7 @@ const service = axios.create({
// axios中请求配置有baseURL选项表示请求URL公共部分 // axios中请求配置有baseURL选项表示请求URL公共部分
baseURL: process.env.VUE_APP_BASE_API, baseURL: process.env.VUE_APP_BASE_API,
// 超时 // 超时
timeout: 20000 timeout: 10000
}) })
// request拦截器 // request拦截器
@ -29,9 +29,6 @@ service.interceptors.request.use(config => {
if (getToken() && !isToken) { if (getToken() && !isToken) {
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
} }
if (getEntCode() && !isToken) {
config.headers['ent-code'] = getEntCode() // 让每个请求携带自定义token 请根据实际情况自行修改
}
// get请求映射params参数 // get请求映射params参数
if (config.method === 'get' && config.params) { if (config.method === 'get' && config.params) {
let url = config.url + '?' + tansParams(config.params); let url = config.url + '?' + tansParams(config.params);
@ -76,6 +73,7 @@ service.interceptors.request.use(config => {
// 响应拦截器 // 响应拦截器
service.interceptors.response.use(res => { service.interceptors.response.use(res => {
debugger
// 未设置状态码则默认成功状态 // 未设置状态码则默认成功状态
const code = res.data.code || 200; const code = res.data.code || 200;
// 获取错误信息 // 获取错误信息

View File

@ -0,0 +1,449 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="统一社会信用代码" prop="firmCreditCode">
<el-input
v-model="queryParams.firmCreditCode"
placeholder="请输入统一社会信用代码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="企业法人" prop="firmLegalPerson">
<el-input
v-model="queryParams.firmLegalPerson"
placeholder="请输入企业法人"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="联系电话" prop="firmPhone">
<el-input
v-model="queryParams.firmPhone"
placeholder="请输入联系电话"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="联系邮箱" prop="firmEmail">
<el-input
v-model="queryParams.firmEmail"
placeholder="请输入联系邮箱"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="联系网址" prop="firmWebsite">
<el-input
v-model="queryParams.firmWebsite"
placeholder="请输入联系网址"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="企业地址" prop="firmAddress">
<el-input
v-model="queryParams.firmAddress"
placeholder="请输入企业地址"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="企业注册资本" prop="firmRegisteredCapital">
<el-input
v-model="queryParams.firmRegisteredCapital"
placeholder="请输入企业注册资本"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="企业成立日期" prop="firmEstablishTime">
<el-date-picker clearable
v-model="queryParams.firmEstablishTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择企业成立日期">
</el-date-picker>
</el-form-item>
<el-form-item label="国标行业" prop="firmProfession">
<el-input
v-model="queryParams.firmProfession"
placeholder="请输入国标行业"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="企业规模大小" prop="firmScale">
<el-input
v-model="queryParams.firmScale"
placeholder="请输入企业规模大小"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="企业人数" prop="firmStaffNumber">
<el-input
v-model="queryParams.firmStaffNumber"
placeholder="请输入企业人数"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="企业营业期限开始时间" prop="firmBusinessStart">
<el-date-picker clearable
v-model="queryParams.firmBusinessStart"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择企业营业期限开始时间">
</el-date-picker>
</el-form-item>
<el-form-item label="企业营业期限结束时间" prop="firmBusinessEnd">
<el-date-picker clearable
v-model="queryParams.firmBusinessEnd"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择企业营业期限结束时间">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['firm:firmDetails:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['firm:firmDetails:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['firm:firmDetails:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['firm:firmDetails:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="firmDetailsList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="企业id" align="center" prop="id" />
<el-table-column label="统一社会信用代码" align="center" prop="firmCreditCode" />
<el-table-column label="企业法人" align="center" prop="firmLegalPerson" />
<el-table-column label="联系电话" align="center" prop="firmPhone" />
<el-table-column label="联系邮箱" align="center" prop="firmEmail" />
<el-table-column label="联系网址" align="center" prop="firmWebsite" />
<el-table-column label="企业地址" align="center" prop="firmAddress" />
<el-table-column label="企业描述" align="center" prop="firmDesc" />
<el-table-column label="企业注册资本" align="center" prop="firmRegisteredCapital" />
<el-table-column label="企业成立日期" align="center" prop="firmEstablishTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.firmEstablishTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="国标行业" align="center" prop="firmProfession" />
<el-table-column label="企业规模大小" align="center" prop="firmScale" />
<el-table-column label="企业人数" align="center" prop="firmStaffNumber" />
<el-table-column label="企业营业期限开始时间" align="center" prop="firmBusinessStart" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.firmBusinessStart, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="企业营业期限结束时间" align="center" prop="firmBusinessEnd" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.firmBusinessEnd, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['firm:firmDetails:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['firm:firmDetails:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改企业详细信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="统一社会信用代码" prop="firmCreditCode">
<el-input v-model="form.firmCreditCode" placeholder="请输入统一社会信用代码" />
</el-form-item>
<el-form-item label="企业法人" prop="firmLegalPerson">
<el-input v-model="form.firmLegalPerson" placeholder="请输入企业法人" />
</el-form-item>
<el-form-item label="联系电话" prop="firmPhone">
<el-input v-model="form.firmPhone" placeholder="请输入联系电话" />
</el-form-item>
<el-form-item label="联系邮箱" prop="firmEmail">
<el-input v-model="form.firmEmail" placeholder="请输入联系邮箱" />
</el-form-item>
<el-form-item label="联系网址" prop="firmWebsite">
<el-input v-model="form.firmWebsite" placeholder="请输入联系网址" />
</el-form-item>
<el-form-item label="企业地址" prop="firmAddress">
<el-input v-model="form.firmAddress" placeholder="请输入企业地址" />
</el-form-item>
<el-form-item label="企业描述" prop="firmDesc">
<el-input v-model="form.firmDesc" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="企业注册资本" prop="firmRegisteredCapital">
<el-input v-model="form.firmRegisteredCapital" placeholder="请输入企业注册资本" />
</el-form-item>
<el-form-item label="企业成立日期" prop="firmEstablishTime">
<el-date-picker clearable
v-model="form.firmEstablishTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择企业成立日期">
</el-date-picker>
</el-form-item>
<el-form-item label="国标行业" prop="firmProfession">
<el-input v-model="form.firmProfession" placeholder="请输入国标行业" />
</el-form-item>
<el-form-item label="企业规模大小" prop="firmScale">
<el-input v-model="form.firmScale" placeholder="请输入企业规模大小" />
</el-form-item>
<el-form-item label="企业人数" prop="firmStaffNumber">
<el-input v-model="form.firmStaffNumber" placeholder="请输入企业人数" />
</el-form-item>
<el-form-item label="企业营业期限开始时间" prop="firmBusinessStart">
<el-date-picker clearable
v-model="form.firmBusinessStart"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择企业营业期限开始时间">
</el-date-picker>
</el-form-item>
<el-form-item label="企业营业期限结束时间" prop="firmBusinessEnd">
<el-date-picker clearable
v-model="form.firmBusinessEnd"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择企业营业期限结束时间">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listFirmDetails, getFirmDetails, delFirmDetails, addFirmDetails, updateFirmDetails } from "/src/api/firm/firmDetails";
export default {
name: "FirmDetails",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
firmDetailsList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
firmCreditCode: null,
firmLegalPerson: null,
firmPhone: null,
firmEmail: null,
firmWebsite: null,
firmAddress: null,
firmDesc: null,
firmRegisteredCapital: null,
firmEstablishTime: null,
firmProfession: null,
firmScale: null,
firmStaffNumber: null,
firmBusinessStart: null,
firmBusinessEnd: null
},
//
form: {},
//
rules: {
firmCreditCode: [
{ required: true, message: "统一社会信用代码不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询企业详细信息列表 */
getList() {
this.loading = true;
listFirmDetails(this.queryParams).then(response => {
this.firmDetailsList = response.data.rows;
this.total = response.data.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
firmCreditCode: null,
firmLegalPerson: null,
firmPhone: null,
firmEmail: null,
firmWebsite: null,
firmAddress: null,
firmDesc: null,
firmRegisteredCapital: null,
firmEstablishTime: null,
firmProfession: null,
firmScale: null,
firmStaffNumber: null,
firmBusinessStart: null,
firmBusinessEnd: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加企业详细信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getFirmDetails(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改企业详细信息";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateFirmDetails(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addFirmDetails(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除企业详细信息编号为"' + ids + '"的数据项?').then(function() {
return delFirmDetails(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('firm/firmDetails/export', {
...this.queryParams
}, `firmDetails_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@ -9,8 +9,8 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="启用状态" prop="state"> <el-form-item label="启用状态(1.开业 2.停业 3.休业)" prop="state">
<el-select v-model="queryParams.state" placeholder="请选择启用状态" clearable> <el-select v-model="queryParams.state" placeholder="请选择启用状态(1.开业 2.停业 3.休业)" clearable>
<el-option <el-option
v-for="dict in dict.type.sys_firm_start" v-for="dict in dict.type.sys_firm_start"
:key="dict.value" :key="dict.value"
@ -84,7 +84,7 @@
</el-table-column> </el-table-column>
<el-table-column label="企业登录名" align="center" prop="firmUser" /> <el-table-column label="企业登录名" align="center" prop="firmUser" />
<el-table-column label="企业登录密码" align="center" prop="firmPassword" /> <el-table-column label="企业登录密码" align="center" prop="firmPassword" />
<el-table-column label="启用状态" align="center" prop="state"> <el-table-column label="启用状态(1.开业 2.停业 3.休业)" align="center" prop="state">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.sys_firm_start" :value="scope.row.state"/> <dict-tag :options="dict.type.sys_firm_start" :value="scope.row.state"/>
</template> </template>
@ -138,8 +138,8 @@
<el-form-item label="企业登录密码" prop="firmPassword"> <el-form-item label="企业登录密码" prop="firmPassword">
<el-input v-model="form.firmPassword" placeholder="请输入企业登录密码" /> <el-input v-model="form.firmPassword" placeholder="请输入企业登录密码" />
</el-form-item> </el-form-item>
<el-form-item label="启用状态" prop="state"> <el-form-item label="启用状态(1.开业 2.停业 3.休业)" prop="state">
<el-select v-model="form.state" placeholder="请选择启用状态"> <el-select v-model="form.state" placeholder="请选择启用状态(1.开业 2.停业 3.休业)">
<el-option <el-option
v-for="dict in dict.type.sys_firm_start" v-for="dict in dict.type.sys_firm_start"
:key="dict.value" :key="dict.value"

View File

@ -2,19 +2,9 @@
<div class="login"> <div class="login">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form"> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title">若依后台管理系统</h3> <h3 class="title">若依后台管理系统</h3>
<el-form-item prop="firmCode"> <el-form-item prop="username">
<el-input <el-input
v-model="loginForm.firmCode" v-model="loginForm.username"
auto-complete="off"
placeholder="企业编码"
type="text"
>
<svg-icon slot="prefix" class="el-input__icon input-icon" icon-class="tool"/>
</el-input>
</el-form-item>
<el-form-item prop="firmUser">
<el-input
v-model="loginForm.firmUser"
auto-complete="off" auto-complete="off"
placeholder="账号" placeholder="账号"
type="text" type="text"
@ -22,9 +12,9 @@
<svg-icon slot="prefix" class="el-input__icon input-icon" icon-class="user"/> <svg-icon slot="prefix" class="el-input__icon input-icon" icon-class="user"/>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="firmPassword"> <el-form-item prop="password">
<el-input <el-input
v-model="loginForm.firmPassword" v-model="loginForm.password"
auto-complete="off" auto-complete="off"
placeholder="密码" placeholder="密码"
type="password" type="password"
@ -82,21 +72,17 @@ export default {
return { return {
codeUrl: "", codeUrl: "",
loginForm: { loginForm: {
firmCode: "FIRM", username: "admin",
firmUser: "admin", password: "admin123",
firmPassword: "admin123",
rememberMe: false, rememberMe: false,
code: "", code: "",
uuid: "" uuid: ""
}, },
loginRules: { loginRules: {
firmCode: [ username: [
{required: true, trigger: "blur", message: "请输入您的企业编码"}
],
firmUser: [
{required: true, trigger: "blur", message: "请输入您的账号"} {required: true, trigger: "blur", message: "请输入您的账号"}
], ],
firmPassword: [ password: [
{required: true, trigger: "blur", message: "请输入您的密码"} {required: true, trigger: "blur", message: "请输入您的密码"}
], ],
code: [{required: true, trigger: "change", message: "请输入验证码"}] code: [{required: true, trigger: "change", message: "请输入验证码"}]
@ -132,14 +118,12 @@ export default {
}); });
}, },
getCookie() { getCookie() {
const firmCode = Cookies.get("firmCode"); const username = Cookies.get("username");
const firmUser = Cookies.get("firmUser"); const password = Cookies.get("password");
const firmPassword = Cookies.get("firmPassword");
const rememberMe = Cookies.get('rememberMe') const rememberMe = Cookies.get('rememberMe')
this.loginForm = { this.loginForm = {
firmCode: firmCode === undefined ? this.loginForm.firmCode : firmCode, username: username === undefined ? this.loginForm.username : username,
firmUser: firmUser === undefined ? this.loginForm.firmUser : firmUser, password: password === undefined ? this.loginForm.password : decrypt(password),
firmPassword: firmPassword === undefined ? this.loginForm.firmPassword : decrypt(firmPassword),
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe) rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
}; };
}, },
@ -148,17 +132,15 @@ export default {
if (valid) { if (valid) {
this.loading = true; this.loading = true;
if (this.loginForm.rememberMe) { if (this.loginForm.rememberMe) {
Cookies.set("firmCode", this.loginForm.firmCode, {expires: 30}); Cookies.set("username", this.loginForm.username, {expires: 30});
Cookies.set("firmUser", this.loginForm.firmUser, {expires: 30}); Cookies.set("password", encrypt(this.loginForm.password), {expires: 30});
Cookies.set("firmPassword", encrypt(this.loginForm.firmPassword), {expires: 30});
Cookies.set('rememberMe', this.loginForm.rememberMe, {expires: 30}); Cookies.set('rememberMe', this.loginForm.rememberMe, {expires: 30});
} else { } else {
Cookies.remove("firmCode"); Cookies.remove("username");
Cookies.remove("firmUser"); Cookies.remove("password");
Cookies.remove("firmPassword");
Cookies.remove('rememberMe'); Cookies.remove('rememberMe');
} }
this.$store.dispatch("firmLogin", this.loginForm).then(() => { this.$store.dispatch("Login", this.loginForm).then(() => {
this.$router.push({path: this.redirect || "/"}).catch(() => { this.$router.push({path: this.redirect || "/"}).catch(() => {
}); });
}).catch(() => { }).catch(() => {

View File

@ -0,0 +1,260 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="车辆型号编码" prop="modelCode">
<el-input
v-model="queryParams.modelCode"
placeholder="请输入车辆型号编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['message:message:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['message:message:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['message:message:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['message:message:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="messageList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="自增主键" align="center" prop="id" />
<el-table-column label="车辆型号编码" align="center" prop="modelCode" />
<el-table-column label="车辆报文类型编码" align="center" prop="messageTypeCode" />
<el-table-column label="开始位下标" align="center" prop="messageStartIndex" />
<el-table-column label="结束位下标" align="center" prop="messageEndIndex" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['message:message:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['message:message:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改车辆报文记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="车辆型号编码" prop="modelCode">
<el-input v-model="form.modelCode" placeholder="请输入车辆型号编码" />
</el-form-item>
<el-form-item label="车辆报文类型编码" prop="messageTypeCode">
<el-input v-model="form.messageTypeCode" placeholder="请输入车辆报文类型编码" />
</el-form-item>
<el-form-item label="开始位下标" prop="messageStartIndex">
<el-input v-model="form.messageStartIndex" placeholder="请输入开始位下标" />
</el-form-item>
<el-form-item label="结束位下标" prop="messageEndIndex">
<el-input v-model="form.messageEndIndex" placeholder="请输入结束位下标" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listMessage, getMessage, delMessage, addMessage, updateMessage } from "/src/api/message/message";
export default {
name: "Message",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
messageList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
modelCode: null,
},
//
form: {},
//
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询车辆报文记录列表 */
getList() {
this.loading = true;
listMessage(this.queryParams).then(response => {
this.messageList = response.data.rows;
this.total = response.data.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
modelCode: null,
messageTypeCode: null,
messageStartIndex: null,
messageEndIndex: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加车辆报文记录";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getMessage(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改车辆报文记录";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateMessage(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addMessage(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除车辆报文记录编号为"' + ids + '"的数据项?').then(function() {
return delMessage(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('message/message/export', {
...this.queryParams
}, `message_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@ -0,0 +1,253 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="报文名称" prop="messageName">
<el-input
v-model="queryParams.messageName"
placeholder="请输入报文名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['message:messageType:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['message:messageType:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['message:messageType:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['message:messageType:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="messageTypeList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="自增主键" align="center" prop="id" />
<el-table-column label="报文编码" align="center" prop="messageCode" />
<el-table-column label="报文名称" align="center" prop="messageName" />
<el-table-column label="报文分类" align="center" prop="messageType" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['message:messageType:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['message:messageType:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改车辆报文类型对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="报文编码" prop="messageCode">
<el-input v-model="form.messageCode" placeholder="请输入报文编码" />
</el-form-item>
<el-form-item label="报文名称" prop="messageName">
<el-input v-model="form.messageName" placeholder="请输入报文名称" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listMessageType, getMessageType, delMessageType, addMessageType, updateMessageType } from "/src/api/message/messageType";
export default {
name: "MessageType",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
messageTypeList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
messageName: null,
messageType: null
},
//
form: {},
//
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询车辆报文类型列表 */
getList() {
this.loading = true;
listMessageType(this.queryParams).then(response => {
this.messageTypeList = response.data.rows;
this.total = response.data.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
messageCode: null,
messageName: null,
messageType: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加车辆报文类型";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getMessageType(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改车辆报文类型";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateMessageType(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addMessageType(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除车辆报文类型编号为"' + ids + '"的数据项?').then(function() {
return delMessageType(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('message/messageType/export', {
...this.queryParams
}, `messageType_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@ -105,7 +105,6 @@
<el-table-column align="center" type="selection" width="55"/> <el-table-column align="center" type="selection" width="55"/>
<el-table-column label="角色编号" prop="roleId" width="120"/> <el-table-column label="角色编号" prop="roleId" width="120"/>
<el-table-column :show-overflow-tooltip="true" label="角色名称" prop="roleName" width="150"/> <el-table-column :show-overflow-tooltip="true" label="角色名称" prop="roleName" width="150"/>
<el-table-column v-show="getEntCode() === 'FIRM'" align="center" label="租户编码" prop="firmCode"/>
<el-table-column :show-overflow-tooltip="true" label="权限字符" prop="roleKey" width="150"/> <el-table-column :show-overflow-tooltip="true" label="权限字符" prop="roleKey" width="150"/>
<el-table-column label="显示顺序" prop="roleSort" width="100"/> <el-table-column label="显示顺序" prop="roleSort" width="100"/>
<el-table-column align="center" label="状态" width="100"> <el-table-column align="center" label="状态" width="100">
@ -278,7 +277,6 @@ import {
updateRole updateRole
} from "@/api/system/role"; } from "@/api/system/role";
import {roleMenuTreeselect, treeselect as menuTreeselect} from "@/api/system/menu"; import {roleMenuTreeselect, treeselect as menuTreeselect} from "@/api/system/menu";
import {getEntCode} from "@/utils/auth";
export default { export default {
name: "Role", name: "Role",
@ -370,7 +368,6 @@ export default {
this.getList(); this.getList();
}, },
methods: { methods: {
getEntCode,
/** 查询角色列表 */ /** 查询角色列表 */
getList() { getList() {
this.loading = true; this.loading = true;

View File

@ -26,7 +26,6 @@
</el-table-column> </el-table-column>
<el-table-column :reserve-selection="true" type="selection" width="55"></el-table-column> <el-table-column :reserve-selection="true" type="selection" width="55"></el-table-column>
<el-table-column align="center" label="角色编号" prop="roleId"/> <el-table-column align="center" label="角色编号" prop="roleId"/>
<el-table-column v-show="getEntCode() === 'FIRM'" align="center" label="租户编码" prop="firmCode"/>
<el-table-column align="center" label="角色名称" prop="roleName"/> <el-table-column align="center" label="角色名称" prop="roleName"/>
<el-table-column align="center" label="权限字符" prop="roleKey"/> <el-table-column align="center" label="权限字符" prop="roleKey"/>
<el-table-column align="center" label="创建时间" prop="createTime" width="180"> <el-table-column align="center" label="创建时间" prop="createTime" width="180">
@ -49,7 +48,6 @@
<script> <script>
import {getAuthRole, updateAuthRole} from "@/api/system/user"; import {getAuthRole, updateAuthRole} from "@/api/system/user";
import {getEntCode} from "@/utils/auth";
export default { export default {
name: "AuthRole", name: "AuthRole",
@ -89,7 +87,6 @@ export default {
} }
}, },
methods: { methods: {
getEntCode,
/** 单击选中行数据 */ /** 单击选中行数据 */
clickRow(row) { clickRow(row) {
this.$refs.table.toggleRowSelection(row); this.$refs.table.toggleRowSelection(row);

View File

@ -151,7 +151,6 @@
prop="nickName"/> prop="nickName"/>
<el-table-column v-if="columns[3].visible" key="deptName" :show-overflow-tooltip="true" align="center" label="部门" <el-table-column v-if="columns[3].visible" key="deptName" :show-overflow-tooltip="true" align="center" label="部门"
prop="dept.deptName"/> prop="dept.deptName"/>
<el-table-column v-show="getEntCode() === 'FIRM'" align="center" label="租户编码" prop="firmCode"/>
<el-table-column v-if="columns[4].visible" key="phonenumber" align="center" label="手机号码" <el-table-column v-if="columns[4].visible" key="phonenumber" align="center" label="手机号码"
prop="phonenumber" width="120"/> prop="phonenumber" width="120"/>
<el-table-column v-if="columns[5].visible" key="status" align="center" label="状态"> <el-table-column v-if="columns[5].visible" key="status" align="center" label="状态">
@ -229,10 +228,7 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="归属部门" prop="deptId"> <el-form-item label="归属部门" prop="deptId">
<treeselect v-model="form.deptId" :options="deptOptions" <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门"/>
:show-count="true"
placeholder="请选择归属部门"
@input="checkRole"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -375,10 +371,9 @@ import {
resetUserPwd, resetUserPwd,
updateUser updateUser
} from "@/api/system/user"; } from "@/api/system/user";
import {getEntCode, getToken, setEntCode} from "@/utils/auth"; import {getToken} from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect"; import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import {listDept} from "@/api/system/dept";
export default { export default {
name: "User", name: "User",
@ -414,11 +409,8 @@ export default {
dateRange: [], dateRange: [],
// //
postOptions: [], postOptions: [],
//
deptListAll: [],
// //
roleOptions: [], roleOptions: [],
roleListAll: [],
// //
form: {}, form: {},
defaultProps: { defaultProps: {
@ -503,7 +495,6 @@ export default {
}); });
}, },
methods: { methods: {
getEntCode,
/** 查询用户列表 */ /** 查询用户列表 */
getList() { getList() {
this.loading = true; this.loading = true;
@ -516,19 +507,8 @@ export default {
}, },
/** 查询部门下拉树结构 */ /** 查询部门下拉树结构 */
getDeptTree() { getDeptTree() {
listDept(this.queryParams).then(response => { deptTreeSelect().then(response => {
this.deptListAll = response.data this.deptOptions = response.data;
const deptList = response.data.map(dept => {
return {
id: dept.deptId,
label: dept.deptName,
firmCode: dept.firmCode,
parentId: dept.parentId,
children: null
}
})
this.deptOptions = this.handleTree(deptList)
console.log(this.deptOptions)
}); });
}, },
// //
@ -575,18 +555,6 @@ export default {
}; };
this.resetForm("form"); this.resetForm("form");
}, },
//
checkRole(vuler) {
let firmCode = ''
this.deptListAll.forEach(item => {
if (item.deptId == vuler){
firmCode = item.firmCode
}
})
this.roleOptions = this.roleListAll.filter(item => item.firmCode === firmCode);
console.log(firmCode)
console.log(this.roleOptions)
},
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNum = 1; this.queryParams.pageNum = 1;
@ -624,8 +592,7 @@ export default {
this.reset(); this.reset();
getUser().then(response => { getUser().then(response => {
this.postOptions = response.data.posts; this.postOptions = response.data.posts;
this.roleOptions = response.data.roles.filter(item => item.firmCode === getEntCode()); this.roleOptions = response.data.roles;
this.roleListAll = response.data.roles;
this.open = true; this.open = true;
this.title = "添加用户"; this.title = "添加用户";
this.form.password = this.initPassword; this.form.password = this.initPassword;

View File

@ -127,9 +127,9 @@
</template> </template>
<script> <script>
import {getGenTable, updateGenTable} from "@/api/tool/gen"; import {getGenTable, updateGenTable} from "/src/api/tool/gen";
import {optionselect as getDictOptionselect} from "@/api/system/dict/type"; import {optionselect as getDictOptionselect} from "/src/api/system/dict/type";
import {listMenu as getMenuTreeselect} from "@/api/system/menu"; import {listMenu as getMenuTreeselect} from "/src/api/system/menu";
import basicInfoForm from "./basicInfoForm"; import basicInfoForm from "./basicInfoForm";
import genInfoForm from "./genInfoForm"; import genInfoForm from "./genInfoForm";
import Sortable from 'sortablejs' import Sortable from 'sortablejs'
@ -183,7 +183,8 @@ export default {
const basicForm = this.$refs.basicInfo.$refs.basicInfoForm; const basicForm = this.$refs.basicInfo.$refs.basicInfoForm;
const genForm = this.$refs.genInfo.$refs.genInfoForm; const genForm = this.$refs.genInfo.$refs.genInfoForm;
Promise.all([basicForm, genForm].map(this.getFormPromise)).then(res => { Promise.all([basicForm, genForm].map(this.getFormPromise)).then(res => {
const validateResult = res.data.every(item => !!item); console.log(res)
const validateResult = res.every(item => !!item);
if (validateResult) { if (validateResult) {
const genTable = Object.assign({}, basicForm.model, genForm.model); const genTable = Object.assign({}, basicForm.model, genForm.model);
genTable.columns = this.columns; genTable.columns = this.columns;
@ -194,10 +195,8 @@ export default {
parentMenuId: genTable.parentMenuId parentMenuId: genTable.parentMenuId
}; };
updateGenTable(genTable).then(res => { updateGenTable(genTable).then(res => {
this.$modal.msgSuccess(res.data.msg); this.$modal.msgSuccess(res.msg);
if (res.code === 200) { this.close();
this.close();
}
}); });
} else { } else {
this.$modal.msgError("表单校验未通过,请重新检查提交内容"); this.$modal.msgError("表单校验未通过,请重新检查提交内容");

View File

@ -27,7 +27,7 @@
<el-form-item prop="moduleName"> <el-form-item prop="moduleName">
<span slot="label"> <span slot="label">
生成模块名 生成模块名
<el-tooltip content="可理解为子系统名,例如 system" placement="top"> <el-tooltip content="指的是项目在网关注册的路径名称(不推荐首字母大写),例: 一个项目在网关注册路径为'- Path=/system/**',其下有两个服务模块,它们的控制层路径是s1,s2,那么这里添system" placement="top">
<i class="el-icon-question"></i> <i class="el-icon-question"></i>
</el-tooltip> </el-tooltip>
</span> </span>
@ -39,7 +39,7 @@
<el-form-item prop="businessName"> <el-form-item prop="businessName">
<span slot="label"> <span slot="label">
生成业务名 生成业务名
<el-tooltip content="可理解为功能英文名,例如 user" placement="top"> <el-tooltip content="指的是模块的控制层名称(不推荐首字母大写),例: 一个项目在网关注册路径为'- Path=/system/**',其下有两个服务模块,它们的控制层路径是auth和app,这次生成auth的模块,那么这里填控制层路径auth" placement="top">
<i class="el-icon-question"></i> <i class="el-icon-question"></i>
</el-tooltip> </el-tooltip>
</span> </span>
@ -51,7 +51,7 @@
<el-form-item prop="functionName"> <el-form-item prop="functionName">
<span slot="label"> <span slot="label">
生成功能名 生成功能名
<el-tooltip content="用作类描述,例如 用户" placement="top"> <el-tooltip content="用作类描述,例如 用户管理" placement="top">
<i class="el-icon-question"></i> <i class="el-icon-question"></i>
</el-tooltip> </el-tooltip>
</span> </span>

View File

@ -2,6 +2,11 @@
<!-- 导入表 --> <!-- 导入表 -->
<el-dialog :visible.sync="visible" append-to-body title="导入表" top="5vh" width="800px"> <el-dialog :visible.sync="visible" append-to-body title="导入表" top="5vh" width="800px">
<el-form ref="queryForm" :inline="true" :model="queryParams" size="small"> <el-form ref="queryForm" :inline="true" :model="queryParams" size="small">
<el-form-item label="数据库名称" prop="dbName">
<el-select v-model="queryParams.dbName" placeholder="请选择数据库" clearable>
<el-option v-for="item in dbs" :key="item" :label="item" :value="item"/>
</el-select>
</el-form-item>
<el-form-item label="表名称" prop="tableName"> <el-form-item label="表名称" prop="tableName">
<el-input <el-input
v-model="queryParams.tableName" v-model="queryParams.tableName"
@ -48,7 +53,7 @@
</template> </template>
<script> <script>
import {importTable, listDbTable} from "@/api/tool/gen"; import {importTable, listDbTable, selDbNameAll} from "@/api/tool/gen";
export default { export default {
data() { data() {
@ -61,6 +66,7 @@ export default {
total: 0, total: 0,
// //
dbTableList: [], dbTableList: [],
dbs: [],
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -74,6 +80,7 @@ export default {
// //
show() { show() {
this.getList(); this.getList();
this.selDbNameList();
this.visible = true; this.visible = true;
}, },
clickRow(row) { clickRow(row) {
@ -107,11 +114,23 @@ export default {
this.$modal.msgError("请选择要导入的表"); this.$modal.msgError("请选择要导入的表");
return; return;
} }
importTable({tables: tableNames}).then(res => { const dbName = this.queryParams.dbName;
this.$modal.msgSuccess(res.data.msg); importTable(tableNames, dbName).then(res => {
this.visible = false; console.log(res)
this.$emit("ok"); if (res.code === 200){
this.$modal.msgSuccess("成功");
this.visible = false;
this.$emit("ok");
}else{
this.$modal.msgSuccess(res.data.msg);
}
}); });
},
//
selDbNameList() {
selDbNameAll().then(res => {
this.dbs = res.data
})
} }
} }
}; };

View File

@ -91,6 +91,13 @@
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span> <span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column
label="数据库名称"
align="center"
prop="dbName"
:show-overflow-tooltip="true"
width="120"
/>
<el-table-column <el-table-column
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
align="center" align="center"
@ -188,7 +195,7 @@
</template> </template>
<script> <script>
import {delTable, genCode, listTable, previewTable, synchDb} from "@/api/tool/gen"; import {delTable, genCode, listTable, previewTable, synchDb} from "/src/api/tool/gen";
import importTable from "./importTable"; import importTable from "./importTable";
import hljs from "highlight.js/lib/highlight"; import hljs from "highlight.js/lib/highlight";
import "highlight.js/styles/github-gist.css"; import "highlight.js/styles/github-gist.css";
@ -256,7 +263,9 @@ export default {
/** 查询表集合 */ /** 查询表集合 */
getList() { getList() {
this.loading = true; this.loading = true;
console.log(this.loading)
listTable(this.addDateRange(this.queryParams, this.dateRange)).then(response => { listTable(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
console.log(response)
this.tableList = response.data.rows; this.tableList = response.data.rows;
this.total = response.data.total; this.total = response.data.total;
this.loading = false; this.loading = false;
@ -286,8 +295,9 @@ export default {
/** 同步数据库操作 */ /** 同步数据库操作 */
handleSynchDb(row) { handleSynchDb(row) {
const tableName = row.tableName; const tableName = row.tableName;
const dbName = row.dbName;
this.$modal.confirm('确认要强制同步"' + tableName + '"表结构吗?').then(function () { this.$modal.confirm('确认要强制同步"' + tableName + '"表结构吗?').then(function () {
return synchDb(tableName); return synchDb(tableName, dbName);
}).then(() => { }).then(() => {
this.$modal.msgSuccess("同步成功"); this.$modal.msgSuccess("同步成功");
}).catch(() => { }).catch(() => {