feat: 调动员工

fix/0524_ch
向文可 3 years ago
parent 28f8b16c65
commit 83c0fd2b33

@ -13,6 +13,13 @@ export const searchEmployee = (params) => {
params, params,
}); });
}; };
export const transferEmployee = (data) => {
return request({
url: '/uc/employee/employee',
method: 'put',
params: data,
});
};
export const children = (params) => { export const children = (params) => {
return request({ return request({
url: '/uc/department/child', url: '/uc/department/child',

@ -7,6 +7,20 @@ const state = () => ({
total: 0, total: 0,
opts: { opts: {
init: false, init: false,
handType: [
{
label: '删除原组织权限并调动',
value: 1,
},
{
label: '删除所有权限并调动',
value: 2,
},
{
label: '保留所有权限并调动',
value: 3,
},
],
system: [], system: [],
}, },
}); });

@ -49,6 +49,16 @@ const actions = {
} }
return res; return res;
}, },
transfer: async ({ dispatch }, data) => {
let res = await api.transferEmployee(data);
if (res) {
ElMessage.success('调动成功');
dispatch('search');
} else {
ElMessage.error('调动失败');
}
return res;
},
remove: async ({ dispatch }, idList) => { remove: async ({ dispatch }, idList) => {
if (!idList.length) { if (!idList.length) {
ElMessage.warning('请选择要删除的数据'); ElMessage.warning('请选择要删除的数据');

@ -5,7 +5,7 @@
<div class="aside-title">组织架构</div> <div class="aside-title">组织架构</div>
<div class="aside-action"> <div class="aside-action">
<el-button type="text" @click="state.condition1.hiddenDisable = !state.condition1.hiddenDisable"> <el-button type="text" @click="state.condition1.hiddenDisable = !state.condition1.hiddenDisable">
{{ state.condition1.hiddenDisable ? '隐藏' : '显示' }}禁用部门 {{ state.condition1.hiddenDisable ? '显示' : '隐藏' }}禁用部门
</el-button> </el-button>
</div> </div>
</div> </div>
@ -38,6 +38,9 @@
<el-icon name="Edit" /> <el-icon name="Edit" />
</el-button> </el-button>
<el-switch v-model="data.isEnable" @click.stop="handleEnabled(data)" /> <el-switch v-model="data.isEnable" @click.stop="handleEnabled(data)" />
<el-button type="text" @click.stop="handleDelete(data)">
<el-icon name="Delete" />
</el-button>
</template> </template>
</div> </div>
</div> </div>
@ -46,7 +49,7 @@
<el-dialog <el-dialog
v-model="formState.formVisible" v-model="formState.formVisible"
:title="(formState.form.id ? '编辑' : '新增') + '部门'" :title="(formState.form.id ? '编辑' : '新增') + '部门'"
width="300px" width="420px"
> >
<el-form <el-form
ref="refsForm" ref="refsForm"
@ -68,6 +71,7 @@
expandTrigger: 'hover', expandTrigger: 'hover',
emitPath: false, emitPath: false,
}" }"
style="width: 100%"
/> />
</el-form-item> </el-form-item>
<el-form-item label="组织名称" prop="name"> <el-form-item label="组织名称" prop="name">
@ -107,6 +111,52 @@
</el-form> </el-form>
</template> </template>
</table-list> </table-list>
<el-dialog v-model="transferState.transferVisible" title="员工调动">
<el-form
ref="refsForm2"
v-loading="loading5"
label-width="130px"
:model="transferState.transferForm"
:rules="transferState.transferRules"
>
<el-form-item label="原所在组织">
<el-cascader
v-model="state.condition2.departmentId"
disabled
:options="list"
:props="{
label: 'name',
value: 'id',
trigger: 'hover',
checkStrictly: true,
emitPath: false,
children: 'childDepartment',
}"
/>
</el-form-item>
<el-form-item label="调动到目标组织" prop="departmentId">
<el-cascader
v-model="transferState.transferForm.departmentId"
:options="list"
:props="{
label: 'name',
value: 'id',
trigger: 'hover',
checkStrictly: true,
emitPath: false,
children: 'childDepartment',
}"
/>
</el-form-item>
<el-form-item label="选择角色权限" prop="handType">
<el-radio-group v-model="transferState.transferForm.handType" :opts="opts.handType" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="transferState.transferVisible = false">取消</el-button>
<el-button :loading="loading5" type="primary" @click="handleSaveTransfer"></el-button>
</template>
</el-dialog>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="角色" name="role"> <el-tab-pane label="角色" name="role">
<template v-if="state.condition2.departmentId"> <template v-if="state.condition2.departmentId">
@ -247,7 +297,35 @@
}, },
}); });
}; };
const handleTransferEmployee = () => {}; const transferState = reactive({
transferVisible: false,
transferForm: {
employeeId: null,
departmentId: null,
handType: null,
},
transferRules: {
departmentId: [{ required: true, message: '调动到目标组织不能为空' }],
handType: [{ required: true, message: '选择角色权限不能为空' }],
},
});
const refsForm2 = ref(null);
const loading5 = ref(false);
const handleTransferEmployee = (row) => {
transferState.transferVisible = true;
transferState.transferForm = { employeeId: row.id, departmentI: null, handType: 1 };
};
const handleSaveTransfer = async () => {
try {
await proxy.$validate(refsForm2);
loading5.value = true;
await store.dispatch('deptEmployee/transfer', transferState.transferForm);
loading5.value = false;
transferState.transferVisible = false;
} catch (e) {
console.log('取消调动', e);
}
};
let employeeConfig = reactive({ let employeeConfig = reactive({
page: false, page: false,
columns: [ columns: [
@ -290,7 +368,7 @@
}, },
{ {
label: '操作', label: '操作',
width: 300, width: 120,
slots: { slots: {
default: ({ row }) => ( default: ({ row }) => (
<div> <div>
@ -406,6 +484,9 @@
const handleEnabled = (row) => { const handleEnabled = (row) => {
store.dispatch('dept/enable', row); store.dispatch('dept/enable', row);
}; };
const handleDelete = (row) => {
store.dispatch('dept/remove', [row.id]);
};
const handleSave = async () => { const handleSave = async () => {
formState.submitting = true; formState.submitting = true;
try { try {

@ -14,10 +14,7 @@
> >
<template #search> <template #search>
<el-form inline> <el-form inline>
<el-form-item label="姓名" prop="employeeName"> <el-form-item label="姓名/花名" prop="userName">
<el-input v-model="state.condition.employeeName" />
</el-form-item>
<el-form-item label="花名" prop="userName">
<el-input v-model="state.condition.userName" /> <el-input v-model="state.condition.userName" />
</el-form-item> </el-form-item>
<el-form-item label="手机号" prop="phone"> <el-form-item label="手机号" prop="phone">
@ -60,7 +57,6 @@
const state = reactive({ const state = reactive({
condition: { condition: {
departmentId: null, departmentId: null,
employeeName: null,
userName: null, userName: null,
phone: null, phone: null,
}, },

Loading…
Cancel
Save