Browse Source

2025-07-28 系统管理

master
fengyuan_yang 6 months ago
parent
commit
91a81b9c8c
  1. 15497
      package-lock.json
  2. 2
      src/api/base/site.js
  3. 29
      src/api/factory/site.js
  4. 1
      src/views/modules/factory/tblbasedata.vue
  5. 44
      src/views/modules/sys/role-add-or-update.vue
  6. 144
      src/views/modules/sys/role.vue
  7. 82
      src/views/modules/sys/user-add-or-update.vue
  8. 1224
      src/views/modules/sys/user.vue

15497
package-lock.json
File diff suppressed because it is too large
View File

2
src/api/base/site.js

@ -177,3 +177,5 @@ export const uploadSOPFile= data => createAPI(`/base/uploadSOPFile`,'post',data)
// 编辑SOP文件信息 // 编辑SOP文件信息
export const sopFileEdit= data => createAPI(`/base/sopFileEdit`,'post',data) export const sopFileEdit= data => createAPI(`/base/sopFileEdit`,'post',data)
export const getRoleUserList = data => createAPI(`/base/getRoleUserList`,'post',data)

29
src/api/factory/site.js

@ -3,3 +3,32 @@ import { createAPI } from "@/utils/httpRequest.js";
// 获取工厂信息数据 // 获取工厂信息数据
export const getSiteList = data => createAPI(`/site/list`,'post',data) export const getSiteList = data => createAPI(`/site/list`,'post',data)
export const addUserSite = data => createAPI(`/site/addUserSite`,'post',data)
export const delUserSite = data => createAPI(`/site/delUserSite`,'post',data)
export const getSite = data => createAPI(`/site/getSite`,'post',data)
export const getBuList = data => createAPI(`/site/getBuList`,'post',data)
export const addUserBu = data => createAPI(`/site/addUserBu`,'post',data)
export const delUserBu = data => createAPI(`/site/delUserBu`,'post',data)
export const getBu = data => createAPI(`/site/getBu`,'post',data)
export const getDeptList = data => createAPI(`/site/getDeptList`,'post',data)
export const addUserDept = data => createAPI(`/site/addUserDept`,'post',data)
export const delUserDept = data => createAPI(`/site/delUserDept`,'post',data)
export const getDept = data => createAPI(`/site/getDept`,'post',data)
export const getBusinessRoleList = data => createAPI(`/site/getBusinessRoleList`,'post',data)
export const addUserBusinessRole = data => createAPI(`/site/addUserBusinessRole`,'post',data)
export const delUserBusinessRole = data => createAPI(`/site/delUserBusinessRole`,'post',data)
export const getBusinessRole = data => createAPI(`/site/getBusinessRole`,'post',data)

1
src/views/modules/factory/tblbasedata.vue

@ -335,7 +335,6 @@ export default {
}) })
json += "}" json += "}"
let s = eval("(" + json + ")") let s = eval("(" + json + ")")
console.log(json)
}, },
// //
searchList() { searchList() {

44
src/views/modules/sys/role-add-or-update.vue

@ -1,12 +1,6 @@
<template> <template>
<el-dialog
class="sl-menu-item"
width="500px"
:title="!dataForm.id ? buttons.add :buttons.edit "
:close-on-click-modal="false"
:visible.sync="visible">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()"
label-width="80px">
<el-dialog class="sl-menu-item" width="500px" :title="!dataForm.id ? buttons.add :buttons.edit " :close-on-click-modal="false" :visible.sync="visible">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="80px">
<el-form-item :label="buttons.roleName||'角色名称'" prop="roleName"> <el-form-item :label="buttons.roleName||'角色名称'" prop="roleName">
<el-input style="width: 150px" v-model="dataForm.roleName"></el-input> <el-input style="width: 150px" v-model="dataForm.roleName"></el-input>
</el-form-item> </el-form-item>
@ -26,7 +20,6 @@
</el-tree> </el-tree>
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
@ -82,7 +75,9 @@ export default {
}, },
methods: { methods: {
init(id) {
init (row) {
let id = row ? row.roleId : 0
this.getFunctionButtonList() this.getFunctionButtonList()
this.dataForm.id = id || 0 this.dataForm.id = id || 0
this.$http({ this.$http({
@ -111,9 +106,7 @@ export default {
if (idx !== -1) { if (idx !== -1) {
data.role.menuIdList.splice(idx, data.role.menuIdList.length - idx) data.role.menuIdList.splice(idx, data.role.menuIdList.length - idx)
} }
console.log(data.role.menuIdList)
let x1 = data.role.menuIdList.map(Number) let x1 = data.role.menuIdList.map(Number)
console.log(x1)
this.$nextTick(() => { this.$nextTick(() => {
for (let x1Element of x1) { for (let x1Element of x1) {
this.$refs.menuListTree.setChecked(x1Element, true, false) this.$refs.menuListTree.setChecked(x1Element, true, false)
@ -124,24 +117,11 @@ export default {
} }
}) })
}, },
// ,
getMenuInfo(node, data, value) {
this.menuInfo.menuId = data.data.menuId
this.menuInfo.name = data.data.name
data.readOnly = 'Y'
},
// //
dataFormSubmit() {
dataFormSubmit () {
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (valid) {
// let temp = {
// readOnly: 'N',
// canDelete: 'N',
// canModified: 'N',
// fullControl: 'N',
// menuId: this.tempKey
// }
// let menusList = [].concat(this.$refs.menuListTree.getCheckedNodes(), [temp], this.$refs.menuListTree.getHalfCheckedNodes())
this.$http({ this.$http({
url: this.$http.adornUrl(`/sys/role/${!this.dataForm.id ? 'save' : 'update'}`), url: this.$http.adornUrl(`/sys/role/${!this.dataForm.id ? 'save' : 'update'}`),
method: 'post', method: 'post',
@ -150,7 +130,6 @@ export default {
'roleName': this.dataForm.roleName, 'roleName': this.dataForm.roleName,
'remark': this.dataForm.remark, 'remark': this.dataForm.remark,
'menuIdList': [].concat(this.$refs.menuListTree.getCheckedKeys(), [this.tempKey], this.$refs.menuListTree.getHalfCheckedKeys()) 'menuIdList': [].concat(this.$refs.menuListTree.getCheckedKeys(), [this.tempKey], this.$refs.menuListTree.getHalfCheckedKeys())
// 'menuIdList': menusList
}) })
}).then(({data}) => { }).then(({data}) => {
if (data && data.code === 0) { if (data && data.code === 0) {
@ -164,8 +143,9 @@ export default {
} }
}) })
}, },
// button // button
getFunctionButtonList() {
getFunctionButtonList () {
let queryButton = { let queryButton = {
functionId: this.$route.meta.menuId, functionId: this.$route.meta.menuId,
tableId: '*', tableId: '*',
@ -179,20 +159,14 @@ export default {
}) })
}, },
}, },
created() {
}
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.down-tree { .down-tree {
height: 300px; height: 300px;
display: block; display: block;
overflow-y: scroll; overflow-y: scroll;
} }
</style> </style>

144
src/views/modules/sys/role.vue

@ -10,6 +10,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table
:height="height"
:data="dataList" :data="dataList"
border border
v-loading="dataListLoading" v-loading="dataListLoading"
@ -18,20 +19,22 @@
<el-table-column <el-table-column
prop="roleName" prop="roleName"
header-align="center" header-align="center"
align="center"
align="left"
min-width="150"
:label="buttons.roleName||'角色名称'"> :label="buttons.roleName||'角色名称'">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="remark" prop="remark"
header-align="center" header-align="center"
align="center"
align="left"
min-width="300"
:label="buttons.remark||'备注'"> :label="buttons.remark||'备注'">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="createTime" prop="createTime"
header-align="center" header-align="center"
align="center" align="center"
width="180"
min-width="150"
:label="buttons.createTime||'创建时间'"> :label="buttons.createTime||'创建时间'">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@ -41,13 +44,27 @@
width="150" width="150"
:label="buttons.cz||'操作'"> :label="buttons.cz||'操作'">
<template slot-scope="scope"> <template slot-scope="scope">
<a v-if="isAuth('sys:role:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.roleId)">{{buttons.edit||'修改'}}</a>
<a v-if="isAuth('sys:role:delete')" type="text" size="small" @click="deleteHandle(scope.row.roleId)">{{buttons.delete|| '删除'}}</a>
<a type="text" size="small" @click="showAuthCustomerReportModal(scope.row)">{{buttons.reportRole || '报表赋权'}}</a>
<el-link style="cursor: pointer" @click="getRoleUsers(scope.row)">{{'查看用户'}}</el-link>
<template v-if="!adminUser">
<template v-if="scope.row.roleName === '系统管理员'">
<el-link style="cursor: pointer;pointer-events:none;color: #8a979e">{{buttons.edit||'修改'}}</el-link>
<el-link style="cursor: pointer;pointer-events:none;color: #8a979e">{{buttons.delete||'删除'}}</el-link>
</template>
<template v-else>
<el-link style="cursor: pointer" @click="addOrUpdateHandle(scope.row)">{{buttons.edit||'修改'}}</el-link>
<el-link style="cursor: pointer" @click="deleteHandle(scope.row.roleId)">{{buttons.delete||'删除'}}</el-link>
</template>
</template>
<template v-else>
<el-link style="cursor: pointer" @click="addOrUpdateHandle(scope.row)">{{buttons.edit||'修改'}}</el-link>
<el-link style="cursor: pointer" @click="deleteHandle(scope.row.roleId)">{{buttons.delete||'删除'}}</el-link>
</template>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination <el-pagination
style="margin-top: 0px"
@size-change="sizeChangeHandle" @size-change="sizeChangeHandle"
@current-change="currentChangeHandle" @current-change="currentChangeHandle"
:current-page="pageIndex" :current-page="pageIndex"
@ -56,29 +73,64 @@
:total="totalPage" :total="totalPage"
layout="total, sizes, prev, pager, next, jumper"> layout="total, sizes, prev, pager, next, jumper">
</el-pagination> </el-pagination>
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
<!--报表赋权限-->
<authCustomerReport ref="authCustomerReport" :close-on-click-modal="false"
:visible.sync="showAuthCustomerReportFlag" @refreshDataList="getDataList">
</authCustomerReport>
<!-- 查看用户 -->
<el-dialog title="用户列表" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="600px">
<el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
<el-form-item label="角色名称" >
<el-input v-model="modalData.roleName" disabled style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="用户账号" >
<el-input v-model="modalData.username" style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="用户名" >
<el-input v-model="modalData.userDisplay" style="width: 120px"></el-input>
</el-form-item>
<el-form-item label=" ">
<el-button type="primary" @click="getRoleUserList()">{{'查询' }}</el-button>
</el-form-item>
</el-form>
<el-table
height="300"
:data="modelList"
border
style="width: 100%;">
<el-table-column
prop="username"
header-align="center"
align="center"
:label="'用户账号'">
</el-table-column>
<el-table-column
prop="userDisplay"
header-align="center"
align="center"
:label="'用户名'">
</el-table-column>
</el-table>
<el-footer style="height:40px;margin-top: 10px;text-align:center">
<el-button type="primary" @click="modalFlag = false">关闭</el-button>
</el-footer>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { import {
searchSysLanguageParam,
searchFunctionButtonList, searchFunctionButtonList,
saveButtonList,
} from "@/api/sysLanguage.js" } from "@/api/sysLanguage.js"
import {
getRoleUserList
} from "@/api/base/site.js"
import AddOrUpdate from './role-add-or-update' import AddOrUpdate from './role-add-or-update'
import authCustomerReport from '../report/com_auth_customer_report' /**/
export default { export default {
data () { data () {
return { return {
showAuthCustomerReportFlag: false,
height: 200,
dataForm: { dataForm: {
roleName: '' roleName: ''
}, },
@ -100,16 +152,38 @@ import {
remark: '备注', remark: '备注',
createTime: '创建时间', createTime: '创建时间',
}, },
modalFlag: false,
modalData: {
roleId: '',
roleName: '',
username: '',
userDisplay: '',
},
modelList: [],
} }
}, },
components: { components: {
AddOrUpdate, AddOrUpdate,
authCustomerReport,/*报表赋权限*/
},
mounted () {
this.$nextTick(() => {
this.height = window.innerHeight - 150
})
}, },
activated () { activated () {
this.getDataList() this.getDataList()
}, },
created() {
this.getFunctionButtonList()
},
computed: {
adminUser() {
return this.$store.state.user.id === 1
}
},
methods: { methods: {
// button // button
getFunctionButtonList() { getFunctionButtonList() {
let queryButton = { let queryButton = {
@ -124,6 +198,7 @@ import {
} }
}) })
}, },
// //
getDataList () { getDataList () {
this.dataListLoading = true this.dataListLoading = true
@ -146,31 +221,36 @@ import {
this.dataListLoading = false this.dataListLoading = false
}) })
}, },
// //
sizeChangeHandle (val) { sizeChangeHandle (val) {
this.pageSize = val this.pageSize = val
this.pageIndex = 1 this.pageIndex = 1
this.getDataList() this.getDataList()
}, },
// //
currentChangeHandle (val) { currentChangeHandle (val) {
this.pageIndex = val this.pageIndex = val
this.getDataList() this.getDataList()
}, },
// //
selectionChangeHandle (val) { selectionChangeHandle (val) {
this.dataListSelections = val this.dataListSelections = val
}, },
// / // /
addOrUpdateHandle (id) {
addOrUpdateHandle (row) {
this.addOrUpdateVisible = true this.addOrUpdateVisible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(id)
this.$refs.addOrUpdate.init(row)
}) })
}, },
// //
deleteHandle (id) { deleteHandle (id) {
var ids = id ? [id] : this.dataListSelections.map(item => {
let ids = id ? [id] : this.dataListSelections.map(item => {
return item.roleId return item.roleId
}) })
this.$confirm(`确定删除当前记录?`, '提示', { this.$confirm(`确定删除当前记录?`, '提示', {
@ -190,19 +270,27 @@ import {
this.$message.error(data.msg) this.$message.error(data.msg)
} }
}) })
}).catch(() => {})
})
}, },
/*给角色报表赋权限*/
showAuthCustomerReportModal(currentRow){
this.$nextTick(() => {
this.showAuthCustomerReportFlag = true;
this.$refs.authCustomerReport.init(currentRow);
});
//
getRoleUsers (row) {
this.modalData.roleId = row.roleId
this.modalData.roleName = row.roleName
this.modalData.username = ''
this.modalData.userDisplay = ''
this.getRoleUserList()
this.modalFlag = true
}, },
getRoleUserList () {
getRoleUserList(this.modalData).then(({data}) => {
if (data && data.code === 0) {
this.modelList = data.rows
}
})
},
}, },
created() {
this.getFunctionButtonList()
}
} }
</script> </script>

82
src/views/modules/sys/user-add-or-update.vue

@ -1,14 +1,7 @@
<template> <template>
<div class="user-add-or-update"> <div class="user-add-or-update">
<el-dialog
width="530px"
:title="!dataForm.id ? buttons.add :buttons.edit"
:close-on-click-modal="false"
:visible.sync="visible">
<!-- 取消 :rules="dataRule"-->
<el-form :inline="true" :model="dataForm" label-position="top" ref="dataForm"
@keyup.enter.native="dataFormSubmit()"
label-width="80px">
<el-dialog width="530px" @close="closeDialog" :title="!dataForm.id ? buttons.add :buttons.edit" :close-on-click-modal="false" :visible.sync="visible">
<el-form :inline="true" :model="dataForm" label-position="top" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="80px">
<el-form> <el-form>
<el-form-item :label="buttons.username||'用户账号'" prop="userName"> <el-form-item :label="buttons.username||'用户账号'" prop="userName">
<el-input v-model="dataForm.userName" style="width: 150px;" placeholder="登录帐号"></el-input> <el-input v-model="dataForm.userName" style="width: 150px;" placeholder="登录帐号"></el-input>
@ -17,8 +10,7 @@
<el-input v-model="dataForm.password" style="width: 150px;" type="password" ></el-input> <el-input v-model="dataForm.password" style="width: 150px;" type="password" ></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="buttons.comfirmPassword||'确认密码'" prop="comfirmPassword" :class="{ 'is-required': !dataForm.id }"> <el-form-item :label="buttons.comfirmPassword||'确认密码'" prop="comfirmPassword" :class="{ 'is-required': !dataForm.id }">
<el-input v-model="dataForm.comfirmPassword" style="width: 150px;" type="password"
></el-input>
<el-input v-model="dataForm.comfirmPassword" style="width: 150px;" type="password"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-form> <el-form>
@ -33,23 +25,23 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-form> <el-form>
<el-form-item >
<el-form-item>
<span slot="label" style="" @click="getBaseList(93)"><a herf="#">{{buttons.site||'工厂'}}</a></span> <span slot="label" style="" @click="getBaseList(93)"><a herf="#">{{buttons.site||'工厂'}}</a></span>
<el-input v-model="dataForm.site" style="width: 150px;" placeholder="工厂"></el-input> <el-input v-model="dataForm.site" style="width: 150px;" placeholder="工厂"></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="buttons.language||'语言'" prop="languageDefault">
<el-select filterable v-model="dataForm.languageDefault" clearable style="width: 150px;">
<el-option :label="item.languageName" :value="item.languageCode" v-for="(item,index) in languageList "
:key="index"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item :label="buttons.language||'语言'" prop="languageDefault">-->
<!-- <el-select filterable v-model="dataForm.languageDefault" clearable style="width: 150px;">-->
<!-- <el-option :label="item.languageName" :value="item.languageCode" v-for="(item,index) in languageList " :key="index"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
</el-form> </el-form>
<el-form> <el-form>
<el-form-item label="角色" size="mini" prop="roleIdList"> <el-form-item label="角色" size="mini" prop="roleIdList">
<el-checkbox-group v-model="dataForm.roleIdList"> <el-checkbox-group v-model="dataForm.roleIdList">
<el-checkbox v-for="role in roleList" :key="role.roleId" :label="role.roleId">{{
role.roleName
}}
<el-checkbox
v-for="role in roleList"
:key="role.roleId"
:label="role.roleId">{{role.roleName}}
</el-checkbox> </el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
@ -64,9 +56,9 @@
</el-form> </el-form>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dataFormSubmit()">{{buttons.submit||'确定'}}</el-button>
<el-button @click="visible = false">{{buttons.close||'取消'}}</el-button>
</span>
<el-button type="primary" @click="dataFormSubmit()">{{buttons.submit||'确定'}}</el-button>
<el-button @click="visible = false">{{buttons.close||'取消'}}</el-button>
</span>
</el-dialog> </el-dialog>
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist> <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
@ -126,6 +118,7 @@ export default {
} }
}, },
methods: { methods: {
getFunctionButtonList() { getFunctionButtonList() {
let queryButton = { let queryButton = {
functionId: this.$route.meta.menuId, functionId: this.$route.meta.menuId,
@ -134,40 +127,41 @@ export default {
objectType: 'button' objectType: 'button'
} }
searchFunctionButtonList(queryButton).then(({data}) => { searchFunctionButtonList(queryButton).then(({data}) => {
if (data.code == 0 && data.data) {
if (data.code === 0 && data.data) {
this.buttons = data.data this.buttons = data.data
} }
}) })
}, },
getBaseData(val){
if (this.tagNo === 93){
getBaseData (val) {
if (this.tagNo === 93) {
this.dataForm.site = val.SiteID this.dataForm.site = val.SiteID
} }
}, },
// //
getBaseList(val){
getBaseList (val) {
this.tagNo = val this.tagNo = val
this.$nextTick(() => { this.$nextTick(() => {
let strVal = "";
if (val === 93){
let strVal = ""
if (val === 93) {
strVal = this.dataForm.site strVal = this.dataForm.site
} }
this.$refs.baseList.init(val,strVal) this.$refs.baseList.init(val,strVal)
}) })
}, },
// //
getLanguageList() {
let queryLanguage = { languageCode: this.$i18n.locale}
getLanguageList () {
let queryLanguage = {languageCode: this.$i18n.locale}
searchSysLanguage(queryLanguage).then(({data}) => { searchSysLanguage(queryLanguage).then(({data}) => {
this.languageList = data.rows this.languageList = data.rows
}) })
}, },
init(id) {
init (id) {
this.dataForm.id = id || 0 this.dataForm.id = id || 0
// this.factoryList();
this.getLanguageList();
this.getLanguageList()
this.$http({ this.$http({
url: this.$http.adornUrl('/sys/role/select'), url: this.$http.adornUrl('/sys/role/select'),
method: 'get', method: 'get',
@ -201,8 +195,9 @@ export default {
} }
}) })
}, },
// //
dataFormSubmit() {
dataFormSubmit () {
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (valid) {
this.$http({ this.$http({
@ -232,6 +227,19 @@ export default {
}) })
} }
}) })
},
closeDialog () {
this.dataForm.id = 0
this.dataForm.userName = ''
this.dataForm.password = ''
this.dataForm.comfirmPassword = ''
this.dataForm.email = ''
this.dataForm.mobile = ''
this.dataForm.roleIdList = []
this.dataForm.status = 1
this.dataForm.site = ''
this.dataForm.userDisplay = ''
} }
}, },
created() { created() {

1224
src/views/modules/sys/user.vue
File diff suppressed because it is too large
View File

Loading…
Cancel
Save