fix-0609-xwk
向文可 2 years ago
parent 63f7926a7c
commit 4f59674e77

@ -32,8 +32,8 @@ const mutations = {
setOpts: (state, data) => (state.opts = data),
};
const actions = {
search: async ({ state, commit }) => {
let res = await api.search(state.condition);
search: async ({ state, commit }, condition) => {
let res = await api.search(condition || state.condition);
commit('setList', res || []);
if (!res) {
ElMessage.error('查询失败');

@ -111,52 +111,7 @@
</el-form>
</template>
</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>
<employee-transfer ref="refsTransfer" @save="handleSearchEmployee" />
</el-tab-pane>
<el-tab-pane label="角色" name="role">
<template v-if="state.condition2.departmentId">
@ -228,6 +183,7 @@
<script setup lang="jsx">
import ElButton from '@/components/extra/ElButton.vue';
import ElSwitch from '@/components/extra/ElSwitch.vue';
import EmployeeTransfer from '../employee/transfer.vue';
const router = useRouter();
const store = useStore();
const { proxy } = getCurrentInstance();
@ -297,35 +253,11 @@
},
});
};
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 refsTransfer = ref(null);
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);
}
unref(refsTransfer).show(row);
};
let employeeConfig = reactive({
page: false,
columns: [

@ -191,7 +191,7 @@
loading2.value = false;
};
const handleDelRole = (id) => {
form.roleIds.splice(form.roleIds.findIndex(id), 1);
form.roleIds.splice(form.roleIds.indexOf(id), 1);
permissionList.splice(
permissionList.findIndex((item) => item.id === id),
1

@ -1,42 +1,45 @@
<template>
<table-list
v-loading="loading"
:code="code"
:config="config"
:data="list"
:operation="['create', 'search', 'remove']"
:reset="handleReset"
title="员工"
:total="total"
@create="handleCreate"
@remove="handleRemove"
@search="handleSearch"
>
<template #search>
<el-form inline>
<el-form-item label="姓名/花名" prop="userName">
<el-input v-model="state.condition.userName" />
</el-form-item>
<el-form-item label="手机号" prop="phone">
<el-input v-model="state.condition.phone" />
</el-form-item>
<el-form-item label="所在组织" prop="departmentId">
<el-cascader
v-model="state.condition.departmentId"
:options="opts.dept"
:props="{
label: 'name',
value: 'id',
trigger: 'hover',
checkStrictly: true,
emitPath: false,
children: 'childDepartment',
}"
/>
</el-form-item>
</el-form>
</template>
</table-list>
<div class="list-container">
<table-list
v-loading="loading"
:code="code"
:config="config"
:data="list"
:operation="['create', 'search', 'remove']"
:reset="handleReset"
title="员工"
:total="total"
@create="handleCreate"
@remove="handleRemove"
@search="handleSearch"
>
<template #search>
<el-form inline>
<el-form-item label="姓名/花名" prop="userName">
<el-input v-model="state.condition.userName" />
</el-form-item>
<el-form-item label="手机号" prop="phone">
<el-input v-model="state.condition.phone" />
</el-form-item>
<el-form-item label="所在组织" prop="departmentId">
<el-cascader
v-model="state.condition.departmentId"
:options="opts.dept"
:props="{
label: 'name',
value: 'id',
trigger: 'hover',
checkStrictly: true,
emitPath: false,
children: 'childDepartment',
}"
/>
</el-form-item>
</el-form>
</template>
</table-list>
<employee-transfer ref="refsTransfer" @save="handleSearch" />
</div>
</template>
<script setup lang="jsx">
@ -44,6 +47,7 @@
import ElSwitch from '@/components/extra/ElSwitch.vue';
import { ElTag } from 'element-plus/es/components/tag/index';
import 'element-plus/es/components/tag/style/css';
import EmployeeTransfer from './transfer.vue';
const router = useRouter();
const store = useStore();
const loading = ref(false);
@ -102,6 +106,12 @@
await store.dispatch('employee/enable', { id: row.id, isEnable: !row.isEnable });
loading.value = false;
};
const refsTransfer = ref(null);
const handleTransfer = (row) => {
unref(refsTransfer).show(row);
};
const config = reactive({
//
columns: [
@ -180,7 +190,7 @@
{
label: '操作',
fixed: 'right',
width: 180,
width: 230,
slots: {
default: ({ row }) => (
<div>
@ -190,6 +200,9 @@
<ElButton type="text" onClick={() => handleRemove([row])}>
删除
</ElButton>
<ElButton type="text" onClick={() => handleTransfer(row)}>
调动
</ElButton>
<ElButton type="text" onClick={() => handleResetPassword(row)}>
重置密码
</ElButton>

@ -0,0 +1,94 @@
<template>
<el-dialog v-model="state.visible" title="员工调动">
<el-form ref="refsForm" v-loading="state.loading" label-width="130px" :model="state.form" :rules="state.rules">
<el-form-item label="原所在组织">
{{ state.form.oldDept }}
</el-form-item>
<el-form-item label="调动到目标组织" prop="departmentId">
<el-cascader
v-model="state.form.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="state.form.handType" :opts="state.opts.handType" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="state.visible = false">取消</el-button>
<el-button :loading="state.loading" type="primary" @click="handleSave"></el-button>
</template>
</el-dialog>
</template>
<script setup>
const store = useStore();
const emits = defineEmits(['save']);
const { proxy } = getCurrentInstance();
const list = computed(() => store.state.dept.list);
const state = reactive({
visible: false,
loading: false,
form: {
employeeId: null,
oldDept: null,
departmentId: null,
handType: null,
},
rules: {
departmentId: [{ required: true, message: '调动到目标组织不能为空' }],
handType: [{ required: true, message: '选择角色权限不能为空' }],
},
opts: {
handType: [
{
label: '删除原组织权限并调动',
value: 1,
},
{
label: '删除所有权限并调动',
value: 2,
},
{
label: '保留所有权限并调动',
value: 3,
},
],
},
});
const refsForm = ref(null);
const handleShow = (row) => {
state.visible = true;
state.form = { employeeId: row.id, oldDept: row.departmentNameChain, departmentId: null, handType: 1 };
store.dispatch('dept/search', { hiddenDisable: true });
};
const handleClose = () => {
state.visible = false;
};
const handleSave = async () => {
try {
await proxy.$validate(refsForm);
state.loading = true;
await store.dispatch('deptEmployee/transfer', state.form);
state.loading = false;
state.visible = false;
emits('save');
} catch (e) {
console.log('取消调动', e);
}
};
defineExpose({
show: handleShow,
close: handleClose,
});
</script>
<style lang="less" scoped></style>

@ -131,7 +131,7 @@
<el-tree
ref="refsTree3"
:data="opts.dept"
:default-checked-keys="formState.form.departmentList.map((item) => item.id)"
:default-checked-keys="formState.form.departmentList"
default-expand-all
:expand-on-click-node="false"
highlight-current
@ -227,7 +227,7 @@
isEnable: true,
menuIds: [],
permissionIds: [],
departmentList: [2],
departmentList: [],
},
rules1: {
systemId: [{ required: true, message: '所属系统不能为空' }],
@ -277,8 +277,9 @@
};
const refsTree3 = ref(null);
const handleCheckDept = async (data, checked, childChecked) => {
formState.submitting = true;
if (checked || childChecked) {
formState.form.departmentList.push(data);
formState.form.departmentList.push(data.id);
} else {
formState.form.departmentList.splice(formState.form.departmentList.indexOf(data.id), 1);
}
@ -290,15 +291,29 @@
roleIds: [formState.form.id],
}
: { departmentId: data.id, isDeleteDepartmentOfEmployeeRole: true, roleId: formState.form.id };
store.dispatch('role/updateDept', params);
await store.dispatch('role/updateDept', params);
nextTick(() => {
try {
unref(refsForm3).validate();
} catch (e) {
console.info(e);
}
unref(refsTree3).setCheckedKeys(formState.form.departmentList);
formState.submitting = false;
});
};
watch(
() => formState.currentTab,
(value) => {
if (value === '3') {
nextTick(() => {
if (!formState.form.departmentList.length) {
handleCheckDept({ id: 2 }, true, false);
}
});
}
}
);
const handleDetail = async () => {
formState.submitting = true;
if (formState.currentTab === '1' && formState.form.id) {
@ -330,16 +345,18 @@
Object.assign(
formState.form,
_.cloneDeep(
row || {
id: null,
systemId: null,
roleName: null,
roleDesc: null,
isEnable: true,
menuIds: [],
permissionIds: [],
departmentList: [2],
}
row
? { ...row, departmentList: row.departmentList.map((item) => item.id) }
: {
id: null,
systemId: null,
roleName: null,
roleDesc: null,
isEnable: true,
menuIds: [],
permissionIds: [],
departmentList: [],
}
)
);
};

@ -237,7 +237,7 @@
router.push({
name: 'CustomerManagement',
query: {
account: state.form.userPhone,
phone: state.form.userPhone,
},
});
};

@ -12,8 +12,8 @@
>
<template #search>
<el-form inline>
<el-form-item label="账号" prop="account">
<el-input v-model="state.condition.account" />
<el-form-item label="手机号" prop="phone">
<el-input v-model="state.condition.phone" />
</el-form-item>
<el-form-item label="昵称" prop="nickname">
<el-input v-model="state.condition.nickname" />
@ -47,7 +47,7 @@
}
const state = reactive({
condition: {
account: null,
phone: null,
nickname: null,
dateRange: [],
},
@ -61,14 +61,14 @@
);
const handleReset = () => {
state.condition = {
account: null,
phone: null,
nickname: null,
dateRange: [],
};
};
const handleSearch = async () => {
if (route.query.account && !state.condition.account) {
state.condition.account = route.query.account;
if (route.query.phone && !state.condition.phone) {
state.condition.phone = route.query.phone;
store.commit('customer/setCondition', _.cloneDeep(state.condition));
}
loading.value = true;

@ -157,7 +157,7 @@
},
{
label: '发布人员',
prop: 'createUser',
prop: 'createUserName',
width: 160,
},
{

Loading…
Cancel
Save