|
|
|
@ -2,18 +2,18 @@ |
|
|
|
<div class="mod-config"> |
|
|
|
|
|
|
|
<el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()"> |
|
|
|
<el-form-item :label="'DepartmentId'"> |
|
|
|
<el-form-item :label="'部门编码'"> |
|
|
|
<el-input v-model="searchData.departmentId" style="width: 120px"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item :label="'DepartmentName'"> |
|
|
|
<el-form-item :label="'部门名称'"> |
|
|
|
<el-input v-model="searchData.departmentName" style="width: 120px"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<!-- <el-form-item :label="'BU'">--> |
|
|
|
<!-- <el-input v-model="searchData.buNo" style="width: 120px" placeholder="BU"></el-input>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<el-form-item :label="' '"> |
|
|
|
<el-button v-if="!authSearch" @click="getDataList()">Query</el-button> |
|
|
|
<el-button v-if="!authSave" type="primary" @click="addModal()">Add</el-button> |
|
|
|
<el-button v-if="!authSearch" @click="getDataList()">查询</el-button> |
|
|
|
<el-button v-if="!authSave" type="primary" @click="addModal()">新增</el-button> |
|
|
|
<download-excel |
|
|
|
:fields="fields()" |
|
|
|
:data="exportData" |
|
|
|
@ -26,7 +26,7 @@ |
|
|
|
:before-finish="finishDownload" |
|
|
|
worksheet="导出信息" |
|
|
|
class="el-button el-button--primary el-button--medium"> |
|
|
|
{{ "Export" }} |
|
|
|
{{ "导出" }} |
|
|
|
</download-excel> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
@ -60,17 +60,17 @@ |
|
|
|
header-align="center" |
|
|
|
align="center" |
|
|
|
width="220" |
|
|
|
label="Actions"> |
|
|
|
label="操作"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span v-if="!authUpdate"> |
|
|
|
<a type="text" size="small" @click="updateModal(scope.row)">Edit</a> |
|
|
|
<a type="text" size="small" @click="updateModal(scope.row)">编辑</a> |
|
|
|
<span v-if="!authDelete || isAuth('sys:user:save')"> | </span> |
|
|
|
</span> |
|
|
|
<span v-if="!authDelete"> |
|
|
|
<a type="text" size="small" @click="deleteDepartment(scope.row)">Delete</a> |
|
|
|
<span v-if="isAuth('sys:user:save')"> | </span> |
|
|
|
<a type="text" size="small" @click="deleteDepartment(scope.row)">删除</a> |
|
|
|
<span > | </span> |
|
|
|
</span> |
|
|
|
<a v-if="isAuth('sys:user:save')" type="text" size="small" @click.stop="onAddMemberClick(scope.row)">Add Member</a> |
|
|
|
<a type="text" size="small" @click.stop="onAddMemberClick(scope.row)">新增成员</a> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
@ -105,16 +105,24 @@ |
|
|
|
header-align="center" |
|
|
|
align="center" |
|
|
|
width="130" |
|
|
|
label="Actions"> |
|
|
|
label="操作"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<a type="text" size="small" @click="openEditMember(scope.row)">edit</a> |
|
|
|
<a type="text" size="small" style="margin-left: 8px" @click="removeMember(scope.row)">delete</a> |
|
|
|
<a type="text" size="small" @click="openEditMember(scope.row)">编辑</a> |
|
|
|
<a type="text" size="small" style="margin-left: 8px" @click="removeMember(scope.row)">删除</a> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="username" header-align="center" align="center" min-width="180" label="用户名"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span>{{ formatUserWithDisplay(scope.row.username, scope.row.userDisplay) }}</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="jobTitle" header-align="center" align="left" min-width="120" label="岗位" show-overflow-tooltip></el-table-column> |
|
|
|
<el-table-column prop="deptManagerFlag" header-align="center" align="center" width="100" label="是否部门负责人"></el-table-column> |
|
|
|
<el-table-column prop="superiorUsername" header-align="center" align="center" min-width="180" label="上级"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span>{{ formatUserWithDisplay(scope.row.superiorUsername, scope.row.superiorUserDisplay) }}</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="username" header-align="center" align="center" min-width="120" label="UserName"></el-table-column> |
|
|
|
<el-table-column prop="jobTitle" header-align="center" align="left" min-width="120" label="Job Title" show-overflow-tooltip></el-table-column> |
|
|
|
<el-table-column prop="deptManagerFlag" header-align="center" align="center" width="100" label="Dept Manager"></el-table-column> |
|
|
|
<el-table-column prop="superiorUsername" header-align="center" align="center" min-width="120" label="Superior"></el-table-column> |
|
|
|
</el-table> |
|
|
|
|
|
|
|
<el-dialog |
|
|
|
@ -127,47 +135,47 @@ |
|
|
|
<el-form :model="memberForm" label-position="top" size="small" style="margin-left: 7px; margin-top: -5px;"> |
|
|
|
<el-form-item v-if="memberFormMode === 'add'" required> |
|
|
|
<span slot="label"> |
|
|
|
<a class="customer-a" @click.prevent="openMemberUserChooser">UserName</a> |
|
|
|
<a class="customer-a" @click.prevent="openMemberUserChooser">用户名</a> |
|
|
|
</span> |
|
|
|
<el-input v-model="memberForm.username" readonly placeholder="" style="width: 100%"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item v-else label="UserName"> |
|
|
|
<el-form-item v-else label="用户名"> |
|
|
|
<el-input v-model="memberForm.username" disabled style="width: 100%"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="Job Title"> |
|
|
|
<el-form-item label="岗位"> |
|
|
|
<el-input v-model="memberForm.jobTitle" clearable style="width: 100%"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="Dept Manager"> |
|
|
|
<el-form-item label="是否部门负责人"> |
|
|
|
<el-select v-model="memberForm.deptManagerFlag" placeholder="" style="width: 100%"> |
|
|
|
<el-option label="No" value="N"></el-option> |
|
|
|
<el-option label="Yes" value="Y"></el-option> |
|
|
|
<el-option label="否" value="N"></el-option> |
|
|
|
<el-option label="是" value="Y"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="Superior"> |
|
|
|
<el-select v-model="memberForm.superiorUsername" clearable filterable placeholder="Optional" style="width: 100%"> |
|
|
|
<el-form-item label="上级"> |
|
|
|
<el-select v-model="memberForm.superiorUsername" clearable filterable placeholder="选填" style="width: 100%"> |
|
|
|
<el-option |
|
|
|
v-for="u in superiorOptions" |
|
|
|
:key="u" |
|
|
|
:label="u" |
|
|
|
:value="u"> |
|
|
|
:key="u.value" |
|
|
|
:label="u.label" |
|
|
|
:value="u.value"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
<el-footer style="height:40px;margin-top: 15px;text-align:center"> |
|
|
|
<el-button type="primary" @click="submitMember">Save</el-button> |
|
|
|
<el-button type="primary" @click="memberDialogVisible = false">Cancel</el-button> |
|
|
|
<el-button type="primary" @click="submitMember">保存</el-button> |
|
|
|
<el-button type="primary" @click="memberDialogVisible = false">关闭</el-button> |
|
|
|
</el-footer> |
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
<choose-list-eam ref="memberBaseList" @getBaseData="getMemberBaseData"></choose-list-eam> |
|
|
|
|
|
|
|
<el-dialog title="Department" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="450px"> |
|
|
|
<el-dialog title="部门" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="450px"> |
|
|
|
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;"> |
|
|
|
<el-form-item label="Department Id" prop="departmentId" :rules="rules.departmentIdType"> |
|
|
|
<el-form-item label="部门编码" prop="departmentId" :rules="rules.departmentIdType"> |
|
|
|
<el-input v-model="modalData.departmentId" :disabled="modalDisableFlag" style="width: 140px"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="Department Name" prop="departmentName" style="margin-left: 15px" :rules="rules.departmentNameType"> |
|
|
|
<el-form-item label="部门名称" prop="departmentName" style="margin-left: 15px" :rules="rules.departmentNameType"> |
|
|
|
<el-input v-model="modalData.departmentName" style="width: 230px"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
@ -191,8 +199,8 @@ |
|
|
|
--> |
|
|
|
</el-form> |
|
|
|
<el-footer style="height:40px;margin-top: 15px;text-align:center"> |
|
|
|
<el-button type="primary" @click="saveData()">Save</el-button> |
|
|
|
<el-button type="primary" @click="modalFlag = false">Cancel</el-button> |
|
|
|
<el-button type="primary" @click="saveData()">保存</el-button> |
|
|
|
<el-button type="primary" @click="modalFlag = false">关闭</el-button> |
|
|
|
</el-footer> |
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
@ -315,7 +323,7 @@ export default { |
|
|
|
columnProp: 'departmentId', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: 'Department Id', |
|
|
|
columnLabel: '部门编码', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: false, |
|
|
|
@ -333,7 +341,7 @@ export default { |
|
|
|
columnProp: 'departmentName', |
|
|
|
headerAlign: "center", |
|
|
|
align: "left", |
|
|
|
columnLabel: 'Department Name', |
|
|
|
columnLabel: '部门名称', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: false, |
|
|
|
@ -388,7 +396,7 @@ export default { |
|
|
|
columnProp: 'createDate', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: 'Create Date', |
|
|
|
columnLabel: '创建日期', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: false, |
|
|
|
@ -406,7 +414,7 @@ export default { |
|
|
|
columnProp: 'createBy', |
|
|
|
headerAlign: "center", |
|
|
|
align: "left", |
|
|
|
columnLabel: 'Creator', |
|
|
|
columnLabel: '创建人', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: false, |
|
|
|
@ -424,7 +432,7 @@ export default { |
|
|
|
columnProp: 'updateDate', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: 'Update Date', |
|
|
|
columnLabel: '更新日期', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: false, |
|
|
|
@ -442,7 +450,7 @@ export default { |
|
|
|
columnProp: 'updateBy', |
|
|
|
headerAlign: "center", |
|
|
|
align: "left", |
|
|
|
columnLabel: 'Update By', |
|
|
|
columnLabel: '更新人', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: false, |
|
|
|
@ -498,8 +506,11 @@ export default { |
|
|
|
} |
|
|
|
const self = (this.memberForm.username || '').trim().toLowerCase() |
|
|
|
return this.memberList |
|
|
|
.map(r => r.username) |
|
|
|
.filter(u => u && u.trim().toLowerCase() !== self) |
|
|
|
.filter(r => (r.username || '').trim() !== '' && (r.username || '').trim().toLowerCase() !== self) |
|
|
|
.map(r => ({ |
|
|
|
value: r.username, |
|
|
|
label: this.formatUserWithDisplay(r.username, r.userDisplay) |
|
|
|
})) |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
@ -530,6 +541,13 @@ export default { |
|
|
|
|
|
|
|
methods: { |
|
|
|
isAuth, |
|
|
|
formatUserWithDisplay (username, userDisplay) { |
|
|
|
const u = (username || '').trim() |
|
|
|
const d = (userDisplay || '').trim() |
|
|
|
if (!u) return '' |
|
|
|
if (!d) return u |
|
|
|
return `${u}(${d})` |
|
|
|
}, |
|
|
|
clearDeptMemberSelection () { |
|
|
|
this.currentDept = null |
|
|
|
this.memberList = [] |
|
|
|
@ -583,11 +601,11 @@ export default { |
|
|
|
}, |
|
|
|
openAddMember () { |
|
|
|
if (!this.currentDept) { |
|
|
|
this.$message.warning('Please select a department first') |
|
|
|
this.$message.warning('请先选择部门') |
|
|
|
return |
|
|
|
} |
|
|
|
this.memberFormMode = 'add' |
|
|
|
this.memberDialogTitle = 'Add Member' |
|
|
|
this.memberDialogTitle = '新增成员' |
|
|
|
this.memberForm = { |
|
|
|
username: '', |
|
|
|
jobTitle: '', |
|
|
|
@ -599,7 +617,7 @@ export default { |
|
|
|
openEditMember (row) { |
|
|
|
if (!this.currentDept) return |
|
|
|
this.memberFormMode = 'edit' |
|
|
|
this.memberDialogTitle = 'Edit Member' |
|
|
|
this.memberDialogTitle = '编辑成员' |
|
|
|
const dm = (row.deptManagerFlag || 'N').toString().toUpperCase() |
|
|
|
this.memberForm = { |
|
|
|
username: row.username, |
|
|
|
@ -611,7 +629,7 @@ export default { |
|
|
|
}, |
|
|
|
openMemberUserChooser () { |
|
|
|
if (!this.currentDept || !this.currentDept.site) { |
|
|
|
this.$message.warning('Please select a department first') |
|
|
|
this.$message.warning('请先选择部门') |
|
|
|
return |
|
|
|
} |
|
|
|
this.memberPickerActive = true |
|
|
|
@ -649,7 +667,7 @@ export default { |
|
|
|
if (!this.currentDept) return |
|
|
|
const username = (this.memberForm.username || '').trim() |
|
|
|
if (!username) { |
|
|
|
this.$message.warning('Please pick an account (click Account)') |
|
|
|
this.$message.warning('请选择用户账号(点击用户名)') |
|
|
|
return |
|
|
|
} |
|
|
|
const payload = { |
|
|
|
@ -665,26 +683,26 @@ export default { |
|
|
|
const req = this.memberFormMode === 'add' ? saveAccessDeptMember(payload) : updateAccessDeptMember(payload) |
|
|
|
req.then(({ data }) => { |
|
|
|
if (data && data.code === 0) { |
|
|
|
this.$message.success('Saved') |
|
|
|
this.$message.success('保存成功') |
|
|
|
this.memberDialogVisible = false |
|
|
|
this.loadMembers() |
|
|
|
} else { |
|
|
|
this.$message.error((data && data.msg) || 'Save failed') |
|
|
|
this.$message.error((data && data.msg) || '保存失败') |
|
|
|
} |
|
|
|
}).catch(e => { |
|
|
|
const msg = (e.response && e.response.data && e.response.data.msg) || e.message || 'Save failed' |
|
|
|
const msg = (e.response && e.response.data && e.response.data.msg) || e.message || '保存失败' |
|
|
|
this.$message.error(msg) |
|
|
|
}) |
|
|
|
} |
|
|
|
if (this.memberFormMode === 'add') { |
|
|
|
this.verifyUserExistsInSite(username).then(exists => { |
|
|
|
if (!exists) { |
|
|
|
this.$message.warning('User does not exist or has no access to this site') |
|
|
|
this.$message.warning('用户不存在或没有当前工厂权限') |
|
|
|
return |
|
|
|
} |
|
|
|
const dup = this.memberList.some(m => (m.username || '').trim().toLowerCase() === username.toLowerCase()) |
|
|
|
if (dup) { |
|
|
|
this.$message.warning('This member is already in the department') |
|
|
|
this.$message.warning('该成员已在此部门中') |
|
|
|
return |
|
|
|
} |
|
|
|
doSave() |
|
|
|
@ -857,9 +875,9 @@ export default { |
|
|
|
|
|
|
|
// 删除 |
|
|
|
deleteDepartment (row) { |
|
|
|
this.$confirm(`Delete this department?`, 'Prompt', { |
|
|
|
confirmButtonText: 'Confirm', |
|
|
|
cancelButtonText: 'Cancel', |
|
|
|
this.$confirm(`确定删除该部门吗?`, '提示', { |
|
|
|
confirmButtonText: '确定', |
|
|
|
cancelButtonText: '取消', |
|
|
|
type: 'warning' |
|
|
|
}).then(() => { |
|
|
|
departmentDelete(row).then(({data}) => { |
|
|
|
|