Browse Source

2025-07-28 系统管理

master
fengyuan_yang 6 months ago
parent
commit
91a81b9c8c
  1. 15429
      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. 40
      src/views/modules/sys/role-add-or-update.vue
  6. 144
      src/views/modules/sys/role.vue
  7. 58
      src/views/modules/sys/user-add-or-update.vue
  8. 1202
      src/views/modules/sys/user.vue

15429
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文件信息
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 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 += "}"
let s = eval("(" + json + ")")
console.log(json)
},
//
searchList() {

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

@ -1,12 +1,6 @@
<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-input style="width: 150px" v-model="dataForm.roleName"></el-input>
</el-form-item>
@ -26,7 +20,6 @@
</el-tree>
</el-col>
</el-row>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
@ -82,7 +75,9 @@ export default {
},
methods: {
init(id) {
init (row) {
let id = row ? row.roleId : 0
this.getFunctionButtonList()
this.dataForm.id = id || 0
this.$http({
@ -111,9 +106,7 @@ export default {
if (idx !== -1) {
data.role.menuIdList.splice(idx, data.role.menuIdList.length - idx)
}
console.log(data.role.menuIdList)
let x1 = data.role.menuIdList.map(Number)
console.log(x1)
this.$nextTick(() => {
for (let x1Element of x1) {
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 () {
this.$refs['dataForm'].validate((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({
url: this.$http.adornUrl(`/sys/role/${!this.dataForm.id ? 'save' : 'update'}`),
method: 'post',
@ -150,7 +130,6 @@ export default {
'roleName': this.dataForm.roleName,
'remark': this.dataForm.remark,
'menuIdList': [].concat(this.$refs.menuListTree.getCheckedKeys(), [this.tempKey], this.$refs.menuListTree.getHalfCheckedKeys())
// 'menuIdList': menusList
})
}).then(({data}) => {
if (data && data.code === 0) {
@ -164,6 +143,7 @@ export default {
}
})
},
// button
getFunctionButtonList () {
let queryButton = {
@ -179,20 +159,14 @@ export default {
})
},
},
created() {
}
}
</script>
<style lang="scss">
.down-tree {
height: 300px;
display: block;
overflow-y: scroll;
}
</style>

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

@ -10,6 +10,7 @@
</el-form-item>
</el-form>
<el-table
:height="height"
:data="dataList"
border
v-loading="dataListLoading"
@ -18,20 +19,22 @@
<el-table-column
prop="roleName"
header-align="center"
align="center"
align="left"
min-width="150"
:label="buttons.roleName||'角色名称'">
</el-table-column>
<el-table-column
prop="remark"
header-align="center"
align="center"
align="left"
min-width="300"
:label="buttons.remark||'备注'">
</el-table-column>
<el-table-column
prop="createTime"
header-align="center"
align="center"
width="180"
min-width="150"
:label="buttons.createTime||'创建时间'">
</el-table-column>
<el-table-column
@ -41,13 +44,27 @@
width="150"
:label="buttons.cz||'操作'">
<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>
</el-table-column>
</el-table>
<el-pagination
style="margin-top: 0px"
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
@ -56,29 +73,64 @@
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<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>
</template>
<script>
import {
searchSysLanguageParam,
searchFunctionButtonList,
saveButtonList,
} from "@/api/sysLanguage.js"
import {
getRoleUserList
} from "@/api/base/site.js"
import AddOrUpdate from './role-add-or-update'
import authCustomerReport from '../report/com_auth_customer_report' /**/
export default {
data () {
return {
showAuthCustomerReportFlag: false,
height: 200,
dataForm: {
roleName: ''
},
@ -100,16 +152,38 @@ import {
remark: '备注',
createTime: '创建时间',
},
modalFlag: false,
modalData: {
roleId: '',
roleName: '',
username: '',
userDisplay: '',
},
modelList: [],
}
},
components: {
AddOrUpdate,
authCustomerReport,/*报表赋权限*/
},
mounted () {
this.$nextTick(() => {
this.height = window.innerHeight - 150
})
},
activated () {
this.getDataList()
},
created() {
this.getFunctionButtonList()
},
computed: {
adminUser() {
return this.$store.state.user.id === 1
}
},
methods: {
// button
getFunctionButtonList() {
let queryButton = {
@ -124,6 +198,7 @@ import {
}
})
},
//
getDataList () {
this.dataListLoading = true
@ -146,31 +221,36 @@ import {
this.dataListLoading = false
})
},
//
sizeChangeHandle (val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
//
currentChangeHandle (val) {
this.pageIndex = val
this.getDataList()
},
//
selectionChangeHandle (val) {
this.dataListSelections = val
},
// /
addOrUpdateHandle (id) {
addOrUpdateHandle (row) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id)
this.$refs.addOrUpdate.init(row)
})
},
//
deleteHandle (id) {
var ids = id ? [id] : this.dataListSelections.map(item => {
let ids = id ? [id] : this.dataListSelections.map(item => {
return item.roleId
})
this.$confirm(`确定删除当前记录?`, '提示', {
@ -190,19 +270,27 @@ import {
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
},
},
created() {
this.getFunctionButtonList()
getRoleUserList () {
getRoleUserList(this.modalData).then(({data}) => {
if (data && data.code === 0) {
this.modelList = data.rows
}
})
},
},
}
</script>

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

@ -1,14 +1,7 @@
<template>
<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-item :label="buttons.username||'用户账号'" prop="userName">
<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-form-item>
<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>
<el-form>
@ -37,19 +29,19 @@
<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-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-item label="角色" size="mini" prop="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-group>
</el-form-item>
@ -126,6 +118,7 @@ export default {
}
},
methods: {
getFunctionButtonList() {
let queryButton = {
functionId: this.$route.meta.menuId,
@ -134,27 +127,30 @@ export default {
objectType: 'button'
}
searchFunctionButtonList(queryButton).then(({data}) => {
if (data.code == 0 && data.data) {
if (data.code === 0 && data.data) {
this.buttons = data.data
}
})
},
getBaseData (val) {
if (this.tagNo === 93) {
this.dataForm.site = val.SiteID
}
},
//
getBaseList (val) {
this.tagNo = val
this.$nextTick(() => {
let strVal = "";
let strVal = ""
if (val === 93) {
strVal = this.dataForm.site
}
this.$refs.baseList.init(val,strVal)
})
},
//
getLanguageList () {
let queryLanguage = {languageCode: this.$i18n.locale}
@ -163,11 +159,9 @@ export default {
})
},
init (id) {
this.dataForm.id = id || 0
// this.factoryList();
this.getLanguageList();
this.getLanguageList()
this.$http({
url: this.$http.adornUrl('/sys/role/select'),
method: 'get',
@ -201,6 +195,7 @@ export default {
}
})
},
//
dataFormSubmit () {
this.$refs['dataForm'].validate((valid) => {
@ -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() {

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

Loading…
Cancel
Save