|
|
@@ -10,36 +10,32 @@
|
|
|
class="employee-form__inner"
|
|
|
>
|
|
|
<el-form-item label="员工姓名" prop="employee_name" required>
|
|
|
- <el-input v-model="formData.employee_name" placeholder="请输入" :maxlength="128" />
|
|
|
+ <el-input v-model="formData.employee_name" placeholder="请输入员工姓名" :maxlength="128" />
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="员工工号" prop="employee_no">
|
|
|
- <el-input v-model="formData.employee_no" placeholder="请输入" :maxlength="64" />
|
|
|
+ <el-input v-model="formData.employee_no" placeholder="请输入员工工号" :maxlength="64" />
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="手机号" prop="employee_mobile">
|
|
|
- <el-input v-model="formData.employee_mobile" placeholder="请输入" :maxlength="32" />
|
|
|
+ <el-input v-model="formData.employee_mobile" placeholder="请输入手机号" :maxlength="32" />
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="邮箱" prop="employee_email">
|
|
|
- <el-input v-model="formData.employee_email" placeholder="请输入" :maxlength="128" />
|
|
|
+ <el-input v-model="formData.employee_email" placeholder="请输入邮箱" :maxlength="128" />
|
|
|
<div class="employee-form__hint">手机号/邮箱任意必填其中之一</div>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="所属部门" prop="department_ids">
|
|
|
- <el-select
|
|
|
+ <el-tree-select
|
|
|
v-model="formData.department_ids"
|
|
|
- placeholder="请选择"
|
|
|
+ :data="departmentOptions"
|
|
|
+ check-strictly
|
|
|
+ :render-after-expand="false"
|
|
|
+ placeholder="请选择所属部门"
|
|
|
+ clearable
|
|
|
style="width: 100%"
|
|
|
- multiple
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in departmentOptions"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="入职日期" prop="profiles.join_date">
|
|
|
@@ -51,7 +47,7 @@
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="入职城市" prop="profiles.city">
|
|
|
+ <!-- <el-form-item label="入职城市" prop="profiles.city">
|
|
|
<el-select
|
|
|
v-model="formData.profiles.city"
|
|
|
placeholder="选择城市"
|
|
|
@@ -64,7 +60,7 @@
|
|
|
:value="item.value"
|
|
|
/>
|
|
|
</el-select>
|
|
|
- </el-form-item>
|
|
|
+ </el-form-item> -->
|
|
|
|
|
|
<!-- <el-form-item label="角色" prop="profiles.role" required>
|
|
|
<el-select
|
|
|
@@ -94,6 +90,7 @@
|
|
|
import { computed, reactive, ref, watch } from "vue";
|
|
|
import EmployeeAPI, { EmployeeForm, EmployeeDetail } from "@/api/module_payment/employee";
|
|
|
import { useEnterpriseStore } from "@/store/modules/enterprise.store";
|
|
|
+import DepartmentAPI from "@/api/module_payment/department";
|
|
|
|
|
|
|
|
|
const enterpriseStore = useEnterpriseStore();
|
|
|
@@ -102,7 +99,7 @@ const enterpriseStore = useEnterpriseStore();
|
|
|
interface Props {
|
|
|
type: "create" | "update";
|
|
|
employeeId?: string;
|
|
|
- enterpriseId?: string;
|
|
|
+ enterpriseId: string;
|
|
|
}
|
|
|
|
|
|
const props = defineProps<Props>();
|
|
|
@@ -144,29 +141,18 @@ const formData = reactive<EmployeeForm>(
|
|
|
);
|
|
|
|
|
|
// 模拟部门选项
|
|
|
-const departmentOptions = [
|
|
|
- { label: "技术部", value: "dept_001" },
|
|
|
- { label: "市场部", value: "dept_002" },
|
|
|
- { label: "财务部", value: "dept_003" },
|
|
|
- { label: "人力资源部", value: "dept_004" },
|
|
|
-];
|
|
|
-
|
|
|
-// 模拟城市选项
|
|
|
-const cityOptions = [
|
|
|
- { label: "北京", value: "beijing" },
|
|
|
- { label: "上海", value: "shanghai" },
|
|
|
- { label: "广州", value: "guangzhou" },
|
|
|
- { label: "深圳", value: "shenzhen" },
|
|
|
- { label: "杭州", value: "hangzhou" },
|
|
|
-];
|
|
|
-
|
|
|
-// 模拟角色选项
|
|
|
-const roleOptions = [
|
|
|
- { label: "普通员工", value: "employee" },
|
|
|
- { label: "部门经理", value: "manager" },
|
|
|
- { label: "财务", value: "finance" },
|
|
|
- { label: "管理员", value: "admin" },
|
|
|
-];
|
|
|
+const departmentOptions = ref<any[]>([]);
|
|
|
+// 加载部门选项
|
|
|
+const loadDepartmentOptions = async () => {
|
|
|
+ try {
|
|
|
+ const res = await DepartmentAPI.getDepartmentOptions({ enterprise_id: props.enterpriseId });
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ departmentOptions.value = res.data.data || [];
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('加载部门选项失败:', error);
|
|
|
+ }
|
|
|
+};
|
|
|
|
|
|
watch(
|
|
|
() => props.employeeId,
|
|
|
@@ -204,6 +190,7 @@ watch(
|
|
|
(newVal) => {
|
|
|
if (newVal && props.type === "create") {
|
|
|
formData.enterprise_id = newVal;
|
|
|
+ loadDepartmentOptions();
|
|
|
}
|
|
|
},
|
|
|
{ immediate: true }
|
|
|
@@ -222,20 +209,6 @@ const validateContact = (_rule: unknown, value: string, callback: (error?: Error
|
|
|
};
|
|
|
|
|
|
const rules = reactive({
|
|
|
- // enterprise_id: [
|
|
|
- // {
|
|
|
- // required: true,
|
|
|
- // message: "请输入企业ID",
|
|
|
- // trigger: "blur",
|
|
|
- // validator: (_rule: unknown, value: string, callback: (error?: Error) => void) => {
|
|
|
- // if (props.type === "create" && !formData.enterprise_id) {
|
|
|
- // callback(new Error("企业ID不能为空"));
|
|
|
- // } else {
|
|
|
- // callback();
|
|
|
- // }
|
|
|
- // },
|
|
|
- // },
|
|
|
- // ],
|
|
|
employee_name: [{ required: true, message: "请输入员工姓名", trigger: "blur" }],
|
|
|
employee_no: [{ message: "请输入员工工号", trigger: "blur" }],
|
|
|
employee_mobile: [{ validator: validateContact, trigger: "blur" }],
|