Commit b800848e authored by xinzhedeai's avatar xinzhedeai

add:员工 - 岗位 部门接口对接。删除编辑功能

parent bd2c1637
......@@ -20,7 +20,7 @@ export function unbindCard(data) {
// 新增人员信息
export function addInfo(data) {
return request({
url: '/person/info/addRemotePersonInfo',
url: '/person/info/addPerson',
method: 'post',
data: data
})
......@@ -29,17 +29,23 @@ export function addInfo(data) {
// 修改人员信息
export function updateInfo(data) {
return request({
url: '/person/info/updateRemotePersonInfo',
url: '/person/info/updatePerson',
method: 'put',
data: data
})
}
export function getInfo(id) {
return request({
url: '/person/info/getPersonById/' + id,
method: 'get'
})
}
// 删除人员信息
export function delInfo(data) {
export function delInfo(id) {
return request({
url: '/person/info/deleteRemotePersonInfo',
url: '/person/info/deletePerson/' + id,
method: 'delete',
data: data
})
}
......@@ -62,43 +62,43 @@
<el-table-column label="性别" align="center" prop="sex" />
<el-table-column label="联系方式" align="center" prop="phone" />
<el-table-column label="身份证号" align="center" prop="idCard" />
<el-table-column label="所在部门1" align="center" prop="dept" />
<el-table-column label="岗位名称1" align="center" prop="idCard" />
<el-table-column label="所在部门" align="center" prop="deptName" />
<el-table-column label="岗位名称" align="center" prop="positionName" />
<el-table-column label="定位卡号" align="center" prop="cardId" />
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
fixed="right"
width="180"
width="380"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
type="primary"
size="small"
icon="el-icon-link"
v-if="!scope.row.cardId"
@click="handleBindCard(scope.row)"
>定位卡绑定</el-button
>
<el-button
size="mini"
type="text"
type="primary"
size="small"
icon="el-icon-unlock"
v-if="scope.row.cardId"
@click="handleUnbindCard(scope.row)"
>定位卡解绑</el-button
>
<el-button
size="mini"
type="text"
size="small"
type="primary"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button
>
<el-button
size="mini"
type="text"
size="small"
type="danger"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button
......@@ -145,25 +145,27 @@
<el-col :span="12">
<el-form-item label="所在部门" prop="deptId">
<treeselect
v-model="form.deptIds"
v-model="form.deptId"
:options="deptOptions"
placeholder="请选择部门"
:normalizer="normalizer"
@select="handleDeptSelect"
></treeselect>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="岗位名称" prop="cardId">
<el-form-item label="岗位名称" prop="positionId">
<el-select
v-model="form.cardId"
v-model="form.positionId"
placeholder="请选择岗位名称"
clearable
@change="handlePositionChange"
>
<el-option
v-for="item in positionOptions"
:key="item.value"
:label="item.label"
:value="item.value"
:value="item.value * 1"
></el-option>
</el-select>
</el-form-item>
......@@ -177,10 +179,10 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="出生日期" prop="birth">
<el-form-item label="出生日期" prop="birthTime">
<el-date-picker
clearable
v-model="form.birth"
v-model="form.birthTime"
type="date"
value-format="yyyy-MM-dd"
placeholder=""
......@@ -200,10 +202,10 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="入职日期" prop="hireDate">
<el-form-item label="入职日期" prop="joiningTime">
<el-date-picker
clearable
v-model="form.hireDate"
v-model="form.joiningTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择入职日期"
......@@ -212,18 +214,18 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="家庭住址11" prop="seniority">
<el-input v-model="form.seniority" placeholder="" />
<el-form-item label="家庭住址" prop="address">
<el-input v-model="form.address" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职称" prop="professionalTitle">
<el-input v-model="form.professionalTitle" placeholder="" />
<el-form-item label="职称" prop="jobName">
<el-input v-model="form.jobName" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职称证书编号" prop="professionalTitleNumber">
<el-input v-model="form.professionalTitleNumber" placeholder="" />
<el-form-item label="职称证书编号" prop="jobNumber">
<el-input v-model="form.jobNumber" placeholder="" />
</el-form-item>
</el-col>
</el-row>
......@@ -289,6 +291,7 @@ import {
listInfo,
delInfo,
addInfo,
getInfo, // 引入获取人员信息的接口
updateInfo,
unbindCard,
getCardList, // 引入获取定位卡号列表的接口
......@@ -304,12 +307,6 @@ export default {
components: { Treeselect },
data() {
return {
// 级联选择器配置
cascaderProps: {
value: "index",
label: "name",
children: "children",
},
deptOptions: [
{
label: "部门1",
......@@ -397,20 +394,105 @@ export default {
},
methods: {
/** 处理岗位选择 */
handlePositionChange(value) {
if (value) {
// 根据选择的岗位ID查找对应的岗位对象
const positionItem = this.positionOptions.find(
(item) => item.value === value
);
if (positionItem) {
// 将岗位名称存储到form.positionName
this.form.positionName = positionItem.label;
}
} else {
// 如果取消选择,清空岗位名称
this.form.positionName = null;
}
},
normalizer(node) {
return {
const result = {
id: node.index, // 用index作为唯一标识
label: node.name, // 用name作为显示文本
children: node.children || [], // 子节点(如果为null则转为空数组)
};
// 只有当children不为null且有值时才添加该属性
if (node.children && node.children.length > 0) {
result.children = node.children;
}
return result;
},
/** 处理部门选择 */
handleDeptSelect(selectedNode) {
if (selectedNode) {
// 直接从选中的节点获取name属性值
this.form.deptName = selectedNode.name;
// 同时设置deptId以便后续处理
this.form.deptId = selectedNode.index;
} else {
// 如果取消选择,清空相关字段
this.form.deptName = null;
this.form.deptId = null;
}
},
/** 查找部门节点(递归函数,用于备用) */
findDepartmentNode(deptId, options = this.deptOptions) {
for (let i = 0; i < options.length; i++) {
const node = options[i];
if (node.index === deptId) {
return node;
}
if (node.children && node.children.length > 0) {
const found = this.findDepartmentNode(deptId, node.children);
if (found) {
return found;
}
}
}
return null;
},
/** 获取部门列表 */
getDeptList() {
getDept({})
.then((response) => {
console.log(response.data, "部门数据");
// 检查数据格式是否正确
this.deptOptions = response.data.data;
// 添加递归处理函数过滤children为null的情况
const processDepartmentData = (data) => {
if (!data || !Array.isArray(data)) return [];
return data.map((item) => {
const processedItem = { ...item };
// 如果children存在且是数组,递归处理
if (
processedItem.children &&
Array.isArray(processedItem.children)
) {
// 递归处理子部门
processedItem.children = processDepartmentData(
processedItem.children
);
// 如果处理后的children为空数组,移除该属性
if (processedItem.children.length === 0) {
delete processedItem.children;
}
} else if (
processedItem.children === null ||
processedItem.children === undefined
) {
// 如果children为null或undefined,移除该属性
delete processedItem.children;
}
return processedItem;
});
};
// 处理部门数据
this.deptOptions = processDepartmentData(
// response.data.data[0].children
response.data.data[0].children
);
})
.catch((error) => {
console.error("获取部门列表失败:", error);
......@@ -526,7 +608,7 @@ export default {
getList() {
this.loading = true;
listInfo(this.queryParams).then((response) => {
this.infoList = response.data;
this.infoList = response.records;
this.total = response.total;
this.loading = false;
});
......@@ -538,85 +620,7 @@ export default {
},
// 表单重置
reset() {
this.form = {
createBy: null,
createTime: null,
updateTime: null,
remark: null,
personId: null,
personType: null,
personTypeName: null,
staffType: null,
staffTypeName: null,
positionIconType: null,
positionIconTypeName: null,
realName: null,
phone: null,
sex: "",
birth: null,
email: null,
nativePlace: null,
nation: null,
maritalStatus: null,
politicsStatus: null,
healthStatus: null,
idType: null,
idNumber: null,
personIc: null,
personCode: null,
personSource: null,
company: null,
companyName: null,
administratorName: null,
administratorPhone: null,
jobNumber: null,
jobStatus: null,
hireDate: null,
hireDateAlias: null,
dimissionDate: null,
officePhone: null,
duty: null,
professionalTitle: null,
professionalTitleNumber: null,
seniority: null,
experience: null,
yearPlusExperience: null,
highestEducation: null,
highestDegree: null,
profession: null,
school: null,
diplomaNumber: null,
cengNumber: null,
accessory: null,
accessoryList: null,
contractorId: null,
contractorName: null,
receiveLeader: null,
receivePhone: null,
gateThrough: null,
leaveTime: null,
visitorStatus: null,
visitTime: null,
process: null,
lastUpdateDate: null,
lastCreateDate: null,
updateFail: null,
onlineStatus: null,
inOutStatus: null,
cardType: null,
cardTypeName: null,
cardId: null,
icCardId: null,
cardPower: null,
personPhoto: null,
photoSign: null,
deptName: null,
reservationEntryStartTime: null,
reservationEntryEndTime: null,
reservationVisitingTime: null,
curUserName: null,
visitorId: null,
};
this.form = {};
this.resetForm("form");
},
/** 搜索按钮操作 */
......@@ -645,12 +649,8 @@ export default {
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
listInfo({
pageNum: 1,
pageSize: 1,
personId: row.personId,
}).then((response) => {
this.form = response.data[0];
getInfo(row.personId).then((response) => {
this.form = response;
this.open = true;
this.title = "修改员工信息";
......@@ -702,10 +702,7 @@ export default {
this.$modal
.confirm("是否确认删除该数据项?")
.then(function () {
return delInfo({
personIds: [row.personId],
personType: row.personType,
});
return delInfo(row.personId);
})
.then(() => {
this.getList();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment