更新后端传tenantid

This commit is contained in:
扫地僧 2026-02-26 23:43:02 +08:00
parent f8437d15b4
commit 07d3614d9c
4 changed files with 107 additions and 31 deletions

View File

@ -5,6 +5,9 @@ import { onMounted } from 'vue';
// 使用 auth store 获取用户信息
const authStore = useAuthStore();
// 获取租户ID
const tenantId = (authStore.user as any)?.tenant_id;
// 获取用户信息
const userInfo = authStore.user;
if (userInfo && userInfo.id) {

View File

@ -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}
*/
export function getEmployeeList() {
export function getEmployeeList(tenantId) {
return request({
url: '/admin/erp/getEmployee',
method: 'get'
method: 'get',
params: { tenant_id: tenantId }
});
}

View File

@ -3,12 +3,12 @@
<el-form :model="form" :rules="rules" ref="formRef" label-width="100px">
<div class="form-title">账号信息</div>
<!-- 账号 -->
<el-form-item label="账号">
<el-form-item label="账号" required>
<el-input v-model="form.account" :disabled="!isAdd" placeholder="请输入账号" />
</el-form-item>
<!-- 密码 -->
<el-form-item label="密码" prop="password" v-if="isAdd">
<el-form-item label="密码" prop="password" v-if="isAdd" required>
<el-input
v-model="form.password"
type="password"
@ -19,7 +19,7 @@
</el-form-item>
<!-- 确认密码 -->
<el-form-item label="确认密码" prop="confirmPassword" v-if="isAdd">
<el-form-item label="确认密码" prop="confirmPassword" v-if="isAdd" required>
<el-input
v-model="form.confirmPassword"
type="password"
@ -33,12 +33,12 @@
<div class="form-title">个人信息</div>
<!-- 姓名 -->
<el-form-item label="姓名">
<el-form-item label="姓名" required>
<el-input v-model="form.name" placeholder="请输入姓名" />
</el-form-item>
<!-- 性别 -->
<el-form-item label="性别">
<el-form-item label="性别" required>
<el-radio-group v-model="form.sex" placeholder="请选择性别">
<el-radio-button label="男" :value="1" />
<el-radio-button label="女" :value="2" />
@ -46,7 +46,7 @@
</el-form-item>
<!-- 生日 -->
<el-form-item label="生日">
<el-form-item label="生日" required>
<el-date-picker
v-model="form.birthday"
type="date"
@ -55,17 +55,21 @@
</el-form-item>
<!-- 隶属单位 -->
<el-form-item label="隶属单位">
<el-input v-model="form.affiliate_unit" placeholder="请输入隶属单位" />
<el-form-item label="隶属单位" required>
<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 label="部门">
<el-input v-model="form.department" placeholder="请输入部门" />
<el-form-item label="部门" required>
<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 label="职位">
<el-form-item label="职位" required>
<el-input v-model="form.position" placeholder="请输入职位" />
</el-form-item>
@ -75,12 +79,12 @@
</el-form-item>
<!-- 民族 -->
<el-form-item label="民族">
<el-form-item label="民族" required>
<el-input v-model="form.nationality" placeholder="请输入民族" />
</el-form-item>
<!-- 手机 -->
<el-form-item label="手机">
<el-form-item label="手机" required>
<el-input v-model="form.phone" placeholder="请输入手机号" />
</el-form-item>
@ -90,12 +94,12 @@
</el-form-item>
<!-- 邮箱 -->
<el-form-item label="邮箱">
<el-form-item label="邮箱" required>
<el-input v-model="form.email" placeholder="请输入邮箱" />
</el-form-item>
<!-- 家庭住址 -->
<el-form-item label="家庭住址">
<el-form-item label="家庭住址" required>
<el-input v-model="form.home_address" placeholder="请输入家庭住址" />
</el-form-item>
@ -124,7 +128,7 @@
<script setup lang="ts">
import { ref, computed, watch } from "vue";
import { ElMessage } from "element-plus";
import { createEmployee, editEmployee, getEmployeeDetail } from "@/api/erp";
import { createEmployee, editEmployee, getEmployeeDetail, getCompanys, getDepartments } from "@/api/erp";
const props = defineProps({
modelValue: {
@ -146,6 +150,29 @@
const visible = ref(false);
const formRef = ref<any>(null);
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>({
id: null,
@ -158,6 +185,17 @@
confirmPassword: "",
email: "",
status: 1,
affiliate_unit: "",
department: "",
});
//
watch(() => form.value.affiliate_unit, (newVal) => {
form.value.department = "";
departmentList.value = [];
if (newVal) {
loadDepartments(newVal);
}
});
const dialogTitle = computed(() => {
@ -396,6 +434,7 @@
email: "",
status: 1,
};
loadCompanyList();
visible.value = true;
//
if (formRef.value) {
@ -404,6 +443,7 @@
},
openEdit: (user: any) => {
isAdd.value = false;
loadCompanyList();
visible.value = true;
//
if (formRef.value) {
@ -413,6 +453,7 @@
loadUserData(user);
},
open: (user?: any) => {
loadCompanyList();
if (user) {
isAdd.value = false;
loadUserData(user);

View File

@ -69,6 +69,7 @@ import { ElMessage, ElMessageBox } from "element-plus";
import { Plus, Refresh } from "@element-plus/icons-vue";
import { getEmployeeList, deleteEmployee } from "@/api/erp";
import Edit from "./components/edit.vue";
import { useAuthStore } from "@/stores/auth";
const users = ref<any[]>([]);
const loading = ref(false);
@ -77,11 +78,16 @@ const pageSize = ref(10);
const total = ref(0);
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;
try {
const res = await getEmployeeList();
const res = await getEmployeeList(tenantId);
users.value = res.data || res || [];
total.value = users.value.length;
} catch (e: any) {
@ -93,7 +99,7 @@ const fetchData = async () => {
//
const refresh = () => {
fetchData();
fetchData(tenantId);
};
//
@ -119,7 +125,7 @@ const handleDelete = async (row: any) => {
});
await deleteEmployee(row.id);
ElMessage.success("删除成功");
fetchData();
fetchData(tenantId);
} catch (e: any) {
if (e !== "cancel") {
ElMessage.error(e?.message || "删除失败");
@ -130,11 +136,11 @@ const handleDelete = async (row: any) => {
//
const handlePageChange = (val: number) => {
page.value = val;
fetchData();
fetchData(tenantId);
};
onMounted(() => {
fetchData();
fetchData(tenantId);
});
</script>