新增员工党员字段
This commit is contained in:
@@ -116,6 +116,11 @@
|
||||
<el-table-column label="所属部门" align="center" prop="deptName" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="电话" align="center" prop="phone" width="120"/>
|
||||
<el-table-column label="年收入" align="center" prop="annualIncome" width="140"/>
|
||||
<el-table-column label="是否党员" align="center" prop="partyMember" width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ formatPartyMember(scope.row.partyMember) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" align="center" prop="status" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.status === '0'" type="success">在职</el-tag>
|
||||
@@ -217,7 +222,14 @@
|
||||
<el-date-picker v-model="form.hireDate" type="date" placeholder="选择入职时间" value-format="yyyy-MM-dd" style="width: 100%" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" />
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否党员" prop="partyMember">
|
||||
<el-radio-group v-model="form.partyMember">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-radio-group v-model="form.status">
|
||||
@@ -229,10 +241,6 @@
|
||||
<span>资产信息</span>
|
||||
<el-button type="primary" plain size="mini" icon="el-icon-plus" @click="handleAddAsset">新增资产</el-button>
|
||||
</div>
|
||||
<div class="assets-helper">
|
||||
<div>新增、编辑时无需填写实际持有人身份证号</div>
|
||||
<div>系统会默认带入并保留已有归属信息</div>
|
||||
</div>
|
||||
<el-form-item label-width="0" prop="assetInfoList">
|
||||
<div v-if="!form.assetInfoList || !form.assetInfoList.length" class="empty-assets">
|
||||
<i class="el-icon-office-building"></i>
|
||||
@@ -333,6 +341,9 @@
|
||||
<el-descriptions-item label="入职时间">
|
||||
{{ employeeDetail.hireDate ? parseTime(employeeDetail.hireDate, '{y}-{m}-{d}') : '-' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="是否党员">
|
||||
{{ formatPartyMember(employeeDetail.partyMember) }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="状态">
|
||||
<el-tag v-if="employeeDetail.status === '0'" type="success" size="small">在职</el-tag>
|
||||
<el-tag v-else type="danger" size="small">离职</el-tag>
|
||||
@@ -351,12 +362,6 @@
|
||||
暂无资产信息
|
||||
</div>
|
||||
<el-table v-else :data="employeeDetail.assetInfoList" border class="detail-assets-table">
|
||||
<el-table-column label="资产实际持有人身份证号" prop="personId" min-width="220" />
|
||||
<el-table-column label="归属类型" prop="ownerType" min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ formatAssetOwnerType(scope.row) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="资产大类" prop="assetMainType" min-width="120" />
|
||||
<el-table-column label="资产小类" prop="assetSubType" min-width="120" />
|
||||
<el-table-column label="资产名称" prop="assetName" min-width="140" />
|
||||
@@ -429,7 +434,7 @@
|
||||
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline;" @click="importAssetTemplate">下载员工资产模板</el-link>
|
||||
</div>
|
||||
<div class="el-upload__tip" slot="tip">
|
||||
<span>仅支持导入员工本人资产数据,文件需为"xls"或"xlsx"格式,系统将根据 personId/person_id 自动识别归属员工。</span>
|
||||
<span>仅支持导入员工本人资产数据,文件需为"xls"或"xlsx"格式,导入身份证号需与员工本人一致。</span>
|
||||
</div>
|
||||
</el-upload>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
@@ -460,12 +465,17 @@
|
||||
style="margin-bottom: 15px"
|
||||
/>
|
||||
|
||||
<el-table :data="failureList" v-loading="failureLoading">
|
||||
<el-table :data="failureList" v-loading="failureLoading">
|
||||
<el-table-column label="姓名" prop="name" align="center" />
|
||||
<el-table-column label="柜员号" prop="staffId" align="center" />
|
||||
<el-table-column label="身份证号" prop="idCard" align="center" />
|
||||
<el-table-column label="电话" prop="phone" align="center" />
|
||||
<el-table-column label="年收入" prop="annualIncome" align="center" width="140" />
|
||||
<el-table-column label="是否党员" prop="partyMember" align="center" width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ formatPartyMember(scope.row.partyMember) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="失败原因" prop="errorMessage" align="center" min-width="200" :show-overflow-tooltip="true" />
|
||||
</el-table>
|
||||
|
||||
@@ -622,6 +632,9 @@ export default {
|
||||
annualIncome: [
|
||||
{ validator: (rule, value, callback) => this.validateAnnualIncomeRule(value, callback, "年收入"), trigger: "blur" }
|
||||
],
|
||||
partyMember: [
|
||||
{ required: true, message: "请选择是否党员", trigger: "change" }
|
||||
],
|
||||
status: [
|
||||
{ required: true, message: "请选择状态", trigger: "change" }
|
||||
]
|
||||
@@ -701,8 +714,14 @@ export default {
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'form.idCard'(newIdCard, oldIdCard) {
|
||||
this.syncAssetPersonIds(newIdCard, oldIdCard);
|
||||
'form.idCard'(newIdCard) {
|
||||
if (!Array.isArray(this.form.assetInfoList)) {
|
||||
return;
|
||||
}
|
||||
this.form.assetInfoList = this.form.assetInfoList.map(asset => ({
|
||||
...asset,
|
||||
personId: newIdCard || ""
|
||||
}));
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@@ -956,6 +975,7 @@ export default {
|
||||
phone: null,
|
||||
annualIncome: null,
|
||||
hireDate: null,
|
||||
partyMember: 0,
|
||||
status: "0",
|
||||
relatives: [],
|
||||
assetInfoList: []
|
||||
@@ -1008,7 +1028,6 @@ export default {
|
||||
},
|
||||
validateAssetInfoList(assetInfoList) {
|
||||
const requiredFields = [
|
||||
{ key: "personId", label: "资产实际持有人身份证号" },
|
||||
{ key: "assetMainType", label: "资产大类" },
|
||||
{ key: "assetSubType", label: "资产小类" },
|
||||
{ key: "assetName", label: "资产名称" },
|
||||
@@ -1033,11 +1052,6 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
if (!idCardPattern.test(asset.personId)) {
|
||||
this.$modal.msgError(`第${rowNo}条资产的资产实际持有人身份证号格式不正确`);
|
||||
return false;
|
||||
}
|
||||
|
||||
for (const field of numericFields) {
|
||||
const value = asset[field.key];
|
||||
if (value !== null && value !== undefined && String(value).trim() !== "") {
|
||||
@@ -1056,9 +1070,9 @@ export default {
|
||||
|
||||
return true;
|
||||
},
|
||||
createEmptyAssetRow(defaultPersonId = "") {
|
||||
createEmptyAssetRow() {
|
||||
return {
|
||||
personId: defaultPersonId || "",
|
||||
personId: this.form.idCard || "",
|
||||
assetMainType: "",
|
||||
assetSubType: "",
|
||||
assetName: "",
|
||||
@@ -1080,29 +1094,11 @@ export default {
|
||||
return value !== null && value !== undefined && String(value).trim() !== "";
|
||||
});
|
||||
},
|
||||
syncAssetPersonIds(newIdCard, oldIdCard) {
|
||||
if (!Array.isArray(this.form.assetInfoList)) {
|
||||
return;
|
||||
}
|
||||
this.form.assetInfoList = this.form.assetInfoList.map(asset => {
|
||||
if (!asset || typeof asset !== "object") {
|
||||
return asset;
|
||||
}
|
||||
const shouldSync = !asset.personId || asset.personId === oldIdCard;
|
||||
if (!shouldSync) {
|
||||
return asset;
|
||||
}
|
||||
return {
|
||||
...asset,
|
||||
personId: newIdCard || ""
|
||||
};
|
||||
});
|
||||
},
|
||||
handleAddAsset() {
|
||||
if (!Array.isArray(this.form.assetInfoList)) {
|
||||
this.form.assetInfoList = [];
|
||||
}
|
||||
this.form.assetInfoList.push(this.createEmptyAssetRow(this.form.idCard));
|
||||
this.form.assetInfoList.push(this.createEmptyAssetRow());
|
||||
},
|
||||
handleRemoveAsset(index) {
|
||||
if (!Array.isArray(this.form.assetInfoList)) {
|
||||
@@ -1110,11 +1106,14 @@ export default {
|
||||
}
|
||||
this.form.assetInfoList.splice(index, 1);
|
||||
},
|
||||
formatAssetOwnerType(asset) {
|
||||
if (!asset) {
|
||||
return "-";
|
||||
formatPartyMember(value) {
|
||||
if (value === 1 || value === "1") {
|
||||
return "是";
|
||||
}
|
||||
return asset.personId && asset.personId === this.employeeDetail.idCard ? "本人" : "亲属";
|
||||
if (value === 0 || value === "0") {
|
||||
return "否";
|
||||
}
|
||||
return "-";
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
@@ -1159,6 +1158,7 @@ export default {
|
||||
getBaseStaff(staffId).then(response => {
|
||||
this.form = {
|
||||
...response.data,
|
||||
partyMember: response.data.partyMember !== null && response.data.partyMember !== undefined ? response.data.partyMember : 0,
|
||||
assetInfoList: response.data.assetInfoList || []
|
||||
};
|
||||
this.form.annualIncome = response.data.annualIncome;
|
||||
@@ -1673,16 +1673,6 @@ export default {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.employee-edit-dialog .assets-helper {
|
||||
margin: -4px 0 12px;
|
||||
padding: 10px 12px;
|
||||
background: #f4f8ff;
|
||||
border: 1px solid #d9ecff;
|
||||
border-radius: 6px;
|
||||
color: #606266;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
.employee-edit-dialog .assets-table-wrapper {
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
|
||||
Reference in New Issue
Block a user