更新后端传tenantid
This commit is contained in:
parent
f8437d15b4
commit
07d3614d9c
@ -5,6 +5,9 @@ import { onMounted } from 'vue';
|
|||||||
// 使用 auth store 获取用户信息
|
// 使用 auth store 获取用户信息
|
||||||
const authStore = useAuthStore();
|
const authStore = useAuthStore();
|
||||||
|
|
||||||
|
// 获取租户ID
|
||||||
|
const tenantId = (authStore.user as any)?.tenant_id;
|
||||||
|
|
||||||
// 获取用户信息
|
// 获取用户信息
|
||||||
const userInfo = authStore.user;
|
const userInfo = authStore.user;
|
||||||
if (userInfo && userInfo.id) {
|
if (userInfo && userInfo.id) {
|
||||||
|
|||||||
@ -64,18 +64,44 @@ export function deleteOrganization(id) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取企业单位列表
|
||||||
|
* @returns {Promise}
|
||||||
|
*/
|
||||||
|
export function getCompanys() {
|
||||||
|
return request({
|
||||||
|
url: '/admin/erp/getCompanys',
|
||||||
|
method: 'get'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取部门列表
|
||||||
|
* @param {number} parentId 隶属单位ID
|
||||||
|
* @returns {Promise}
|
||||||
|
*/
|
||||||
|
export function getDepartments(parentId) {
|
||||||
|
return request({
|
||||||
|
url: '/admin/erp/getDepartments',
|
||||||
|
method: 'get',
|
||||||
|
params: parentId ? { parent_id: parentId } : {}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************
|
/*************************************************
|
||||||
****************** 员工相关接口 ******************
|
****************** 员工相关接口 ******************
|
||||||
*************************************************/
|
*************************************************/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取员工列表
|
* 获取员工列表
|
||||||
|
* @param {number} tenantId 租户ID
|
||||||
* @returns {Promise}
|
* @returns {Promise}
|
||||||
*/
|
*/
|
||||||
export function getEmployeeList() {
|
export function getEmployeeList(tenantId) {
|
||||||
return request({
|
return request({
|
||||||
url: '/admin/erp/getEmployee',
|
url: '/admin/erp/getEmployee',
|
||||||
method: 'get'
|
method: 'get',
|
||||||
|
params: { tenant_id: tenantId }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3,12 +3,12 @@
|
|||||||
<el-form :model="form" :rules="rules" ref="formRef" label-width="100px">
|
<el-form :model="form" :rules="rules" ref="formRef" label-width="100px">
|
||||||
<div class="form-title">账号信息</div>
|
<div class="form-title">账号信息</div>
|
||||||
<!-- 账号 -->
|
<!-- 账号 -->
|
||||||
<el-form-item label="账号">
|
<el-form-item label="账号" required>
|
||||||
<el-input v-model="form.account" :disabled="!isAdd" placeholder="请输入账号" />
|
<el-input v-model="form.account" :disabled="!isAdd" placeholder="请输入账号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 密码 -->
|
<!-- 密码 -->
|
||||||
<el-form-item label="密码" prop="password" v-if="isAdd">
|
<el-form-item label="密码" prop="password" v-if="isAdd" required>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.password"
|
v-model="form.password"
|
||||||
type="password"
|
type="password"
|
||||||
@ -19,7 +19,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 确认密码 -->
|
<!-- 确认密码 -->
|
||||||
<el-form-item label="确认密码" prop="confirmPassword" v-if="isAdd">
|
<el-form-item label="确认密码" prop="confirmPassword" v-if="isAdd" required>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.confirmPassword"
|
v-model="form.confirmPassword"
|
||||||
type="password"
|
type="password"
|
||||||
@ -33,12 +33,12 @@
|
|||||||
|
|
||||||
<div class="form-title">个人信息</div>
|
<div class="form-title">个人信息</div>
|
||||||
<!-- 姓名 -->
|
<!-- 姓名 -->
|
||||||
<el-form-item label="姓名">
|
<el-form-item label="姓名" required>
|
||||||
<el-input v-model="form.name" placeholder="请输入姓名" />
|
<el-input v-model="form.name" placeholder="请输入姓名" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 性别 -->
|
<!-- 性别 -->
|
||||||
<el-form-item label="性别">
|
<el-form-item label="性别" required>
|
||||||
<el-radio-group v-model="form.sex" placeholder="请选择性别">
|
<el-radio-group v-model="form.sex" placeholder="请选择性别">
|
||||||
<el-radio-button label="男" :value="1" />
|
<el-radio-button label="男" :value="1" />
|
||||||
<el-radio-button label="女" :value="2" />
|
<el-radio-button label="女" :value="2" />
|
||||||
@ -46,7 +46,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 生日 -->
|
<!-- 生日 -->
|
||||||
<el-form-item label="生日">
|
<el-form-item label="生日" required>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="form.birthday"
|
v-model="form.birthday"
|
||||||
type="date"
|
type="date"
|
||||||
@ -55,17 +55,21 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 隶属单位 -->
|
<!-- 隶属单位 -->
|
||||||
<el-form-item label="隶属单位">
|
<el-form-item label="隶属单位" required>
|
||||||
<el-input v-model="form.affiliate_unit" placeholder="请输入隶属单位" />
|
<el-select v-model="form.affiliate_unit" placeholder="请选择隶属单位" clearable style="width: 100%">
|
||||||
|
<el-option v-for="item in companyList" :key="item.id" :label="item.org_name" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 部门 -->
|
<!-- 部门 -->
|
||||||
<el-form-item label="部门">
|
<el-form-item label="部门" required>
|
||||||
<el-input v-model="form.department" placeholder="请输入部门" />
|
<el-select v-model="form.department" placeholder="请先选择隶属单位" clearable style="width: 100%" :disabled="!form.affiliate_unit">
|
||||||
|
<el-option v-for="item in departmentList" :key="item.id" :label="item.org_name" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 职位 -->
|
<!-- 职位 -->
|
||||||
<el-form-item label="职位">
|
<el-form-item label="职位" required>
|
||||||
<el-input v-model="form.position" placeholder="请输入职位" />
|
<el-input v-model="form.position" placeholder="请输入职位" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
@ -75,12 +79,12 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 民族 -->
|
<!-- 民族 -->
|
||||||
<el-form-item label="民族">
|
<el-form-item label="民族" required>
|
||||||
<el-input v-model="form.nationality" placeholder="请输入民族" />
|
<el-input v-model="form.nationality" placeholder="请输入民族" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 手机 -->
|
<!-- 手机 -->
|
||||||
<el-form-item label="手机">
|
<el-form-item label="手机" required>
|
||||||
<el-input v-model="form.phone" placeholder="请输入手机号" />
|
<el-input v-model="form.phone" placeholder="请输入手机号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
@ -90,12 +94,12 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 邮箱 -->
|
<!-- 邮箱 -->
|
||||||
<el-form-item label="邮箱">
|
<el-form-item label="邮箱" required>
|
||||||
<el-input v-model="form.email" placeholder="请输入邮箱" />
|
<el-input v-model="form.email" placeholder="请输入邮箱" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 家庭住址 -->
|
<!-- 家庭住址 -->
|
||||||
<el-form-item label="家庭住址">
|
<el-form-item label="家庭住址" required>
|
||||||
<el-input v-model="form.home_address" placeholder="请输入家庭住址" />
|
<el-input v-model="form.home_address" placeholder="请输入家庭住址" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
@ -124,7 +128,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, computed, watch } from "vue";
|
import { ref, computed, watch } from "vue";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
import { createEmployee, editEmployee, getEmployeeDetail } from "@/api/erp";
|
import { createEmployee, editEmployee, getEmployeeDetail, getCompanys, getDepartments } from "@/api/erp";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
modelValue: {
|
modelValue: {
|
||||||
@ -146,6 +150,29 @@
|
|||||||
const visible = ref(false);
|
const visible = ref(false);
|
||||||
const formRef = ref<any>(null);
|
const formRef = ref<any>(null);
|
||||||
const isAdd = ref(false);
|
const isAdd = ref(false);
|
||||||
|
const companyList = ref<any[]>([]);
|
||||||
|
const departmentList = ref<any[]>([]);
|
||||||
|
|
||||||
|
// 获取公司列表
|
||||||
|
const loadCompanyList = async () => {
|
||||||
|
try {
|
||||||
|
const res = await getCompanys();
|
||||||
|
companyList.value = res.data || res || [];
|
||||||
|
} catch (e) {
|
||||||
|
console.error("获取公司列表失败", e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// 获取部门列表
|
||||||
|
const loadDepartments = async (parentId?: number) => {
|
||||||
|
try {
|
||||||
|
const res = await getDepartments(parentId);
|
||||||
|
departmentList.value = res.data || res || [];
|
||||||
|
} catch (e) {
|
||||||
|
console.error("获取部门列表失败", e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const form = ref<any>({
|
const form = ref<any>({
|
||||||
id: null,
|
id: null,
|
||||||
@ -158,6 +185,17 @@
|
|||||||
confirmPassword: "",
|
confirmPassword: "",
|
||||||
email: "",
|
email: "",
|
||||||
status: 1,
|
status: 1,
|
||||||
|
affiliate_unit: "",
|
||||||
|
department: "",
|
||||||
|
});
|
||||||
|
|
||||||
|
// 监听隶属单位变化,加载对应部门
|
||||||
|
watch(() => form.value.affiliate_unit, (newVal) => {
|
||||||
|
form.value.department = "";
|
||||||
|
departmentList.value = [];
|
||||||
|
if (newVal) {
|
||||||
|
loadDepartments(newVal);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const dialogTitle = computed(() => {
|
const dialogTitle = computed(() => {
|
||||||
@ -396,6 +434,7 @@
|
|||||||
email: "",
|
email: "",
|
||||||
status: 1,
|
status: 1,
|
||||||
};
|
};
|
||||||
|
loadCompanyList();
|
||||||
visible.value = true;
|
visible.value = true;
|
||||||
// 清除表单验证
|
// 清除表单验证
|
||||||
if (formRef.value) {
|
if (formRef.value) {
|
||||||
@ -404,6 +443,7 @@
|
|||||||
},
|
},
|
||||||
openEdit: (user: any) => {
|
openEdit: (user: any) => {
|
||||||
isAdd.value = false;
|
isAdd.value = false;
|
||||||
|
loadCompanyList();
|
||||||
visible.value = true;
|
visible.value = true;
|
||||||
// 清除表单验证
|
// 清除表单验证
|
||||||
if (formRef.value) {
|
if (formRef.value) {
|
||||||
@ -413,6 +453,7 @@
|
|||||||
loadUserData(user);
|
loadUserData(user);
|
||||||
},
|
},
|
||||||
open: (user?: any) => {
|
open: (user?: any) => {
|
||||||
|
loadCompanyList();
|
||||||
if (user) {
|
if (user) {
|
||||||
isAdd.value = false;
|
isAdd.value = false;
|
||||||
loadUserData(user);
|
loadUserData(user);
|
||||||
|
|||||||
@ -69,6 +69,7 @@ import { ElMessage, ElMessageBox } from "element-plus";
|
|||||||
import { Plus, Refresh } from "@element-plus/icons-vue";
|
import { Plus, Refresh } from "@element-plus/icons-vue";
|
||||||
import { getEmployeeList, deleteEmployee } from "@/api/erp";
|
import { getEmployeeList, deleteEmployee } from "@/api/erp";
|
||||||
import Edit from "./components/edit.vue";
|
import Edit from "./components/edit.vue";
|
||||||
|
import { useAuthStore } from "@/stores/auth";
|
||||||
|
|
||||||
const users = ref<any[]>([]);
|
const users = ref<any[]>([]);
|
||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
@ -77,11 +78,16 @@ const pageSize = ref(10);
|
|||||||
const total = ref(0);
|
const total = ref(0);
|
||||||
const editRef = ref<any>(null);
|
const editRef = ref<any>(null);
|
||||||
|
|
||||||
|
const authStore = useAuthStore();
|
||||||
|
const tenantId = (authStore.user as any)?.tenant_id;
|
||||||
|
|
||||||
|
// console.log(tenantId);
|
||||||
|
|
||||||
// 获取列表数据
|
// 获取列表数据
|
||||||
const fetchData = async () => {
|
const fetchData = async (tenantId: number) => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
try {
|
try {
|
||||||
const res = await getEmployeeList();
|
const res = await getEmployeeList(tenantId);
|
||||||
users.value = res.data || res || [];
|
users.value = res.data || res || [];
|
||||||
total.value = users.value.length;
|
total.value = users.value.length;
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
@ -93,7 +99,7 @@ const fetchData = async () => {
|
|||||||
|
|
||||||
// 刷新
|
// 刷新
|
||||||
const refresh = () => {
|
const refresh = () => {
|
||||||
fetchData();
|
fetchData(tenantId);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 添加用户
|
// 添加用户
|
||||||
@ -119,7 +125,7 @@ const handleDelete = async (row: any) => {
|
|||||||
});
|
});
|
||||||
await deleteEmployee(row.id);
|
await deleteEmployee(row.id);
|
||||||
ElMessage.success("删除成功");
|
ElMessage.success("删除成功");
|
||||||
fetchData();
|
fetchData(tenantId);
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
if (e !== "cancel") {
|
if (e !== "cancel") {
|
||||||
ElMessage.error(e?.message || "删除失败");
|
ElMessage.error(e?.message || "删除失败");
|
||||||
@ -130,11 +136,11 @@ const handleDelete = async (row: any) => {
|
|||||||
// 分页变化
|
// 分页变化
|
||||||
const handlePageChange = (val: number) => {
|
const handlePageChange = (val: number) => {
|
||||||
page.value = val;
|
page.value = val;
|
||||||
fetchData();
|
fetchData(tenantId);
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
fetchData();
|
fetchData(tenantId);
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user