<template>
	<el-container class="userInfo">
		<el-aside class="aside">
			<el-card shadow="never" body-style="height:700px">
				<template #header>
					<div class="card-header">
						<span>
							<div class="person-bg">
								<el-icon size="14"><user-filled></user-filled></el-icon>
							</div>
							<label class="person-text">基本信息</label>
						</span>
					</div>
				</template>
				<div class="user-info">
					<div class="user-info-top">
						<el-avatar :size="80" :src="userInfo.photo"></el-avatar>
						<h2>{{ userInfo.name || "-" }}</h2>
						<p>{{ userInfo.sign || "无签名" }}</p>
						<el-button type="primary" round icon="collection-tag">{{
							userInfo.loginName
						}}</el-button>
					</div>
					<div class="user-info-main">
						<el-descriptions :column="1">
							<el-descriptions-item>
								<template #label>
									<el-icon :size="14">
										<Iphone />
									</el-icon>
								</template>
								{{ userInfo.mobile }}
							</el-descriptions-item>

							<el-descriptions-item>
								<template #label>
									<el-icon :size="14">
										<youjian />
									</el-icon>
								</template>
								{{ userInfo.email }}
							</el-descriptions-item>
							<el-descriptions-item>
								<template #label>
									<el-icon :size="14">
										<location />
									</el-icon>
								</template>
								{{ userInfo.companyDTO?.name }}
							</el-descriptions-item>
							<el-descriptions-item>
								<template #label>
									<el-icon :size="14"><office-building /></el-icon>
								</template>
								{{ userInfo.officeDTO?.name }}
							</el-descriptions-item>
							<el-descriptions-item>
								<template #label>
									<el-icon :size="14">
										<coin />
									</el-icon>
								</template>
								{{ userInfo.roleNames }}
							</el-descriptions-item>
						</el-descriptions>
					</div>
				</div>
			</el-card>
		</el-aside>
		<el-main style="padding: 0">
			<el-card shadow="never" body-style="height:700px" v-loading="loading">
				<template #header>
					<div class="card-header">
						<span>
							<div class="person-bg">
								<el-icon size="14">
									<bianji></bianji>
								</el-icon>
							</div>
							<label class="person-text">资料修改</label>
						</span>
						<div style="float: right;display: flex;justify-content: center;align-items: center;">
							<el-button type="primary" @click="submitUserInfo"
								v-if="auditStatus != 2 && auditStatus != 4">提交审批</el-button>

							<el-tag size="large" style="margin-left: 10px;font-size: 12px; " v-if="auditStatus == 5"
								type="success">
								<span>审核通过，修改成功</span>
							</el-tag>

							<el-button type="primary" @click="submitUserInfo"
								v-else-if="auditStatus == 4">重新提交</el-button>

							<el-popover placement="left" :width="400" trigger="hover">
								<template #reference>
									<el-button style="margin-left: 10px;" v-if="auditStatus == 2"
										type="primary">审批中</el-button>
								</template>

								<!-- <el-table :data="flowData" ref="flowRef" style="width: 100%;"
									highlight-current-row="true">
									<el-table-column property="comment.status" label="节点" align="center" />
									<el-table-column property="assigneeName" label="审核人" align="center" />
								</el-table> -->
								<el-timeline style="max-width: 600px" v-if="flowData && flowData.length">
									<el-timeline-item v-for="(activity, index) in flowData" :key="index"
										:color="index === flowData.length - 1 ? '#0bbd87' : '#dcdfe6'"
										:timestamp="activity.histIns.startTime">
										状态：{{ activity.comment.status }}<br />
										审批人：{{ activity.assigneeName }}<br />
									</el-timeline-item>
								</el-timeline>
								<el-result v-else icon="info" title="暂未查询到审批信息">
									<template #sub-title>
										<span>请刷新后重试</span>
									</template>
									<template #extra>
									</template>
								</el-result>
							</el-popover>

							<el-button style="margin-left: 10px;" v-if="auditStatus == 2" type="warning"
								@click="handleRevoke">撤回</el-button>

							<el-popover width="300" class="box-item" title="" :content="rejectMessage"
								placement="top-start">
								<template #reference>
									<el-tag size="large" style="margin-left: 10px; max-width: 200px;font-size: 12px;"
										v-if="auditStatus == 4 && this.procInsId" type="danger">
										<span>已驳回，原因：</span>
										<span style="
        display: inline-block;
        vertical-align: bottom;
        max-width: 50px;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
      ">
											{{ rejectMessage }}
										</span>
									</el-tag>
								</template>
							</el-popover>

						</div>

					</div>
				</template>

				<el-tabs tab-position="top" v-model="activeName">
					<el-form :model="generalForm" ref="generalForm" label-width="100px" :disabled="auditStatus == 2">

						<el-tab-pane label="基本信息" name="basicInfo">

							<el-row :gutter="26">
								<el-col :span="12">
									<el-form-item label="姓名" prop="name"
										:rules="[{ required: true, message: '姓名不能为空', trigger: 'blur' }]">
										<el-input v-model="generalForm.name"></el-input>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="身份证号码" prop="idCard"
										:rules="[{ required: true, validator: validator.isCardId, trigger: 'blur' }]">
										<el-input v-model="generalForm.idCard"
											@blur="idCardOnly(generalForm.idCard, generalForm.id)"></el-input>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="性别" prop="sex" :rules="[
										{ required: true, message: '性别不能为空', trigger: 'change' }
									]">
										<el-radio-group :disabled="true" v-model="generalForm.sex">
											<el-radio v-for="item in $dictUtils.getDictList('sex')" :label="item.value"
												:key="item.value">{{ item.label
												}}</el-radio>
										</el-radio-group>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="年龄" prop="age"
										:rules="[{ required: true, message: '年龄不能为空', trigger: 'change' }]">
										<el-input :disabled="true" v-model="generalForm.age" type="number"></el-input>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="出生日期" prop="birthday" :rules="[
										{ required: true, message: '请填写出生日期', trigger: 'blur' }
									]">
										<el-date-picker :disabled="true" style="width: 100%"
											v-model="generalForm.birthday" value-format="YYYY-MM-DD" placeholder="选择日期">
										</el-date-picker>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="政治面貌" prop="politicalOutlook" :rules="[]">
										<!--						<el-input v-model="generalForm.politicalOutlook"></el-input>-->
										<el-select v-model="generalForm.politicalOutlook" placeholder="请选择政治面貌"
											style="width:100%;">
											<el-option v-for="item in $dictUtils.getDictList('political_outlook')"
												:key="item.value" :label="item.label" :value="item.value">
											</el-option>
										</el-select>
									</el-form-item>
								</el-col>
								<!--								<el-col :span="12">
									<el-form-item label="籍贯" prop="nativePlace" :rules="[]">
										<el-input v-model="generalForm.nativePlace"></el-input>
									</el-form-item>
								</el-col>-->

								<el-col :span="12">
									<el-form-item label="籍贯" prop="nativePlace" :rules="[
										{ required: true, message: '籍贯不能为空', trigger: 'change' }
									]">
										<SelectTree ref="areaTree" :props="{
											value: 'id',             // ID字段名
											label: 'name',         // 显示名称
											children: 'children'    // 子级字段名
										}" url="/system-server/sys/area/treeData" :value="generalForm.nativePlace" :clearable="true" size="large"
											:accordion="true"
											@getValue="(value) => { generalForm.nativePlace = value }" />
									</el-form-item>
								</el-col>




								<!--								<el-col :span="12">
									<el-form-item label="民族" prop="nation" :rules="[]">
										<el-input v-model="generalForm.nation"></el-input>
									</el-form-item>
								</el-col>-->

								<el-col :span="12">
									<el-form-item label="民族" prop="nation" :rules="[]">
										<el-select v-model="generalForm.nation" placeholder="请选择民族" clearable
											style="width: 100%;">
											<el-option v-for="item in $dictUtils.getDictList('sys_nation')"
												:key="item.value" :label="item.label" :value="item.value">
											</el-option>
										</el-select>
									</el-form-item>
								</el-col>

								<el-col :span="12">
									<el-form-item label="婚姻状况" prop="maritalStatus" :rules="[]">
										<el-select v-model="generalForm.maritalStatus" placeholder="请选择婚姻状况" clearable
											style="width: 100%;">
											<el-option v-for="item in $dictUtils.getDictList('marital_status')"
												:key="item.value" :label="item.label" :value="item.value">
											</el-option>
										</el-select>
									</el-form-item>

								</el-col>
								<el-col :span="12">
									<el-form-item label="邮箱" :rules="[
										{
											type: 'email',
											message: '请输入正确的邮箱地址',
											trigger: 'blur',
										},
									]" prop="email">
										<el-input @blur="checkEmail(concatForm.email)"
											v-model="concatForm.email"></el-input>
									</el-form-item>
								</el-col>

								<el-col :span="12">
									<el-form-item label="联系电话" prop="mobilePhone"
										:rules="[{ required: true, message: '联系电话不能为空', trigger: 'change' }]">
										<el-input v-model="generalForm.mobilePhone"
											@blur="mobilePhoneOnly(generalForm.mobilePhone)"></el-input>
									</el-form-item>
								</el-col>
								<!-- <el-col :span="12">
									<el-form-item label="家庭住址" prop="homeAddress" :rules="[]">
										<el-input v-model="generalForm.homeAddress"></el-input>
									</el-form-item>
								</el-col> -->
								<el-col :span="12">
									<el-form-item label="常住住址" prop="permanentAddress" :rules="[]">
										<el-input v-model="generalForm.permanentAddress"></el-input>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="参加工作日期" prop="joinWorkDate" :rules="[

									]">
										<el-date-picker style="width: 100%" v-model="generalForm.joinWorkDate"
											value-format="x" placeholder="">
										</el-date-picker>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="从事行业日期" prop="joinIndustryDate" :rules="[

									]">
										<el-date-picker style="width: 100%" v-model="generalForm.joinIndustryDate"
											value-format="x" placeholder="">
										</el-date-picker>
									</el-form-item>
								</el-col>
								<!--
								<el-col :span="24">
									<el-form-item label="个人简介" prop="remarks" :rules="[]">
										<el-input type="textarea" maxlength="200" show-word-limit
											v-model="generalForm.remarks"></el-input>
									</el-form-item>
								</el-col> -->
							</el-row>


							<el-row :gutter="26">
								<el-col :span="12">
									<el-form-item label="身份证人像面" prop="idCardFront" :rules="[]">
										<UpLoadComponent ref="idCardFront"></UpLoadComponent>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="身份证国徽面" prop="idCardBack" :rules="[]">
										<UpLoadComponent ref="idCardBack"></UpLoadComponent>
									</el-form-item>
								</el-col>
							</el-row>

						</el-tab-pane>
						<!-- <el-tab-pane label="学历信息">
							<el-row :gutter="26">
								<el-col :span="12">
									<el-form-item label="毕业院校" prop="graduatedFrom" :rules="[]">
										<el-input v-model="generalForm.graduatedFrom"></el-input>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="专业" prop="speciality" :rules="[]">
										<el-input v-model="generalForm.speciality"></el-input>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="开始时间" prop="startTime" :rules="[
									]">
										<el-date-picker style="width: 100%" v-model="generalForm.startTime"
											value-format="YYYY-MM-DD" placeholder="选择日期">
										</el-date-picker>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="毕业时间" prop="endTime" :rules="[
									]">
										<el-date-picker style="width: 100%" v-model="generalForm.endTime"
											value-format="YYYY-MM-DD" placeholder="选择日期">
										</el-date-picker>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="学历" prop="education" :rules="[]">
										<el-select v-model="generalForm.education" placeholder="请选择学历" clearable
											style="width: 100%;">
											<el-option v-for="item in $dictUtils.getDictList('education')"
												:key="item.value" :label="item.label" :value="item.value">
											</el-option>
										</el-select>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="学历性质" prop="educationNature" :rules="[]">
										<el-select v-model="generalForm.educationNature" placeholder="请选择学历性质" clearable
											style="width: 100%;">
											<el-option v-for="item in $dictUtils.getDictList('education_nature')"
												:key="item.value" :label="item.label" :value="item.value">
											</el-option>
										</el-select>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="是否毕业" prop="graduatedOrNot" :rules="[]">
										<el-radio-group v-model="generalForm.graduatedOrNot">
											<el-radio v-for="item in $dictUtils.getDictList('graduated_or_not')"
												:label="item.value" :key="item.value">{{ item.label }}</el-radio>
										</el-radio-group>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="英语等级" prop="englishLevel" :rules="[]">
										<el-select v-model="generalForm.englishLevel" placeholder="请选择英语等级" clearable
											style="width: 100%;">
											<el-option v-for="item in $dictUtils.getDictList('english_level')"
												:key="item.value" :label="item.label" :value="item.value">
											</el-option>
										</el-select>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="计算机等级" prop="ncre" :rules="[]">
										<el-select v-model="generalForm.ncre" placeholder="请选择英语等级" clearable
											style="width: 100%;">
											<el-option v-for="item in $dictUtils.getDictList('computer_level')"
												:key="item.value" :label="item.label" :value="item.value">
											</el-option>
										</el-select>
									</el-form-item>
								</el-col>
							</el-row>
						</el-tab-pane> -->
						<el-tab-pane label="部门信息">
							<el-row :gutter="26">
								<el-col :span="24">
									<el-form-item label="所属部门" prop="department" :rules="[
									]">
										<SelectTree ref="officeTree" :disabled="true" :props="{
											value: 'id',             // ID字段名
											label: 'name',         // 显示名称
											children: 'children'    // 子级字段名
										}" :url="`/system-server/sys/office/treeData?type=2`" :value="generalForm.department" :accordion="true"
											size="default" @getValue="(value) => { generalForm.department = value }" />
									</el-form-item>
								</el-col>
								<el-col :span="24">
									<el-form-item label="员工类型" prop="onJobStatus" :rules="[
									]">
										<!--						<el-input v-model="generalForm.politicalOutlook"></el-input>-->
										<el-select :disabled="true" v-model="generalForm.onJobStatus"
											placeholder="请选择员工类型" style="width:100%;">
											<el-option v-for="item in $dictUtils.getDictList('on_job_status')"
												:key="item.value" :label="item.label" :value="item.value">
											</el-option>
										</el-select>
									</el-form-item>
								</el-col>
								<!-- <el-col :span="24">
									<el-form-item label="岗位" prop="postIdList" :rules="[]">
										<el-select :disabled="true" v-model="generalForm.postIdList" style="width: 100%"
											multiple placeholder="请选择">
											<el-option v-for="item in postList" :key="item.id" :label="item.name"
												:value="item.id">
											</el-option>
										</el-select>
									</el-form-item>
								</el-col> -->
								<!-- <el-col :span="24">
									<el-form-item label="角色" prop="roleIdList"
										:rules="[{ required: true, message: '角色不能为空', trigger: 'change' }]">
										<el-select :disabled="true" v-model="generalForm.roleIdList" style="width: 100%"
											multiple placeholder="请选择">
											<el-option v-for="role in roleList" :key="role.id" :label="role.name"
												:value="role.id">
											</el-option>
										</el-select>
									</el-form-item>
								</el-col> -->
								<el-col :span="24">
									<el-form-item label="进所日期" prop="entryDate" :rules="[
									]">
										<el-date-picker :disabled="true" style="width: 100%"
											v-model="generalForm.entryDate" value-format="YYYY-MM-DD"
											placeholder="选择日期">
										</el-date-picker>
									</el-form-item>
								</el-col>
								<el-col :span="24">
									<el-form-item label="合同开始日期" prop="contractStartDate" :rules="[
									]">
										<el-date-picker :disabled="true" style="width: 100%"
											v-model="generalForm.contractStartDate" value-format="YYYY-MM-DD"
											placeholder="选择日期">
										</el-date-picker>
									</el-form-item>
								</el-col>
								<el-col :span="24">
									<el-form-item label="合同结束日期" prop="contractEndDate" :rules="[
									]">
										<el-date-picker :disabled="true" style="width: 100%"
											v-model="generalForm.contractEndDate" value-format="YYYY-MM-DD"
											placeholder="选择日期">
										</el-date-picker>
									</el-form-item>
								</el-col>
							</el-row>
						</el-tab-pane>
						<!-- <el-tab-pane label="社保信息">
							<el-row :gutter="26" v-if="status === 'audit' || status === 'taskFormDetail'">
								<el-col :span="12">
									<el-form-item label="社保编号" prop="socialSecurityNumber" :rules="[]">
										<el-input v-model="generalForm.socialSecurityNumber" maxlength="10"
											@input="validateInput"></el-input>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="社保银行卡号" prop="socialSecurityBankNumber" :rules="[]">
										<el-input v-model="generalForm.socialSecurityBankNumber"
											@change="checkBankNumber(generalForm.socialSecurityBankNumber)"
											maxlength="19"></el-input>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="社保卡照片正面" prop="socialSecurityPictureFront" :rules="[]">
										<el-upload
											:action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
											:limit="limitNum" :disabled="hideUploadEdit" list-type="picture-card"
											:auto-upload="true" :on-success="handleUploadSuccess"
											v-model:file-list="fileList">
											<el-icon>
												<Plus />
											</el-icon>

											<template #file="{ file }">
												<div>
													<img class="el-upload-list__item-thumbnail" :src="file.url"
														alt="" />
													<span class="el-upload-list__item-actions">
														<span class="el-upload-list__item-preview"
															@click="handlePictureCardPreview(file)">
															<el-icon><zoom-in /></el-icon>
														</span>
														<span v-if="!disabled" class="el-upload-list__item-delete"
															@click="handleDownload(file)">
															<el-icon>
																<Download />
															</el-icon>
														</span>
														<span v-if="!disabled" style="display:none;"
															class="el-upload-list__item-delete"
															@click="handleRemove(file, fileList)">
															<el-icon>
																<Delete />
															</el-icon>
														</span>
													</span>
												</div>
											</template>
										</el-upload>
										<el-dialog v-model="dialogVisible">
											<img w-full :src="generalForm.socialSecurityPictureFrontUrl"
												alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }" />
										</el-dialog>

									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="社保卡照片反面" prop="socialSecurityPictureOpposite" :rules="[]">
										<el-upload
											:action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
											:limit="limitNum" :disabled="hideUploadEdit2" list-type="picture-card"
											:auto-upload="true" :on-success="handleUploadSuccess2"
											v-model:file-list="fileList2">
											<el-icon>
												<Plus />
											</el-icon>

											<template #file="{ file }">
												<div>
													<img class="el-upload-list__item-thumbnail" :src="file.url"
														alt="" />
													<span class="el-upload-list__item-actions">
														<span class="el-upload-list__item-preview"
															@click="handlePictureCardPreview2(file)">
															<el-icon><zoom-in /></el-icon>
														</span>
														<span v-if="!disabled" class="el-upload-list__item-delete"
															@click="handleDownload2(file)">
															<el-icon>
																<Download />
															</el-icon>
														</span>
														<span v-if="!disabled" style="display:none;"
															class="el-upload-list__item-delete"
															@click="handleRemove2(file, fileList2)">
															<el-icon>
																<Delete />
															</el-icon>
														</span>
													</span>
												</div>
											</template>
										</el-upload>
										<el-dialog v-model="dialogVisible2">
											<img w-full :src="generalForm.socialSecurityPictureOppositeUrl"
												alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }" />
										</el-dialog>

									</el-form-item>
								</el-col>
							</el-row>
							<el-row :gutter="26" v-else>
								<el-col :span="12">
									<el-form-item label="社保编号" prop="socialSecurityNumber" :rules="[]">
										<el-input v-model="generalForm.socialSecurityNumber" maxlength="10"
											@input="validateInput"></el-input>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="社保银行卡号" prop="socialSecurityBankNumber" :rules="[]">
										<el-input v-model="generalForm.socialSecurityBankNumber"
											@change="checkBankNumber(generalForm.socialSecurityBankNumber)"
											maxlength="19"></el-input>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="社保卡照片正面" prop="socialSecurityPictureFront" :rules="[]">
										<el-upload
											:action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
											:limit="limitNum" :disabled="hideUploadEdit" list-type="picture-card"
											:auto-upload="true" :on-success="handleUploadSuccess" :file-list="fileList">
											<el-icon>
												<Plus />
											</el-icon>

											<template #file="{ file }">
												<div>
													<img class="el-upload-list__item-thumbnail" :src="file.url"
														alt="" />
													<span class="el-upload-list__item-actions">
														<span class="el-upload-list__item-preview"
															@click="handlePictureCardPreview(file)">
															<el-icon><zoom-in /></el-icon>
														</span>
														<span v-if="!disabled" class="el-upload-list__item-delete"
															@click="handleDownload(file)">
															<el-icon>
																<Download />
															</el-icon>
														</span>
														<span v-if="!disabled" class="el-upload-list__item-delete"
															@click="handleRemove(file, fileList)">
															<el-icon>
																<Delete />
															</el-icon>
														</span>
													</span>
												</div>
											</template>
										</el-upload>
										<el-dialog v-model="dialogVisible">
											<img w-full :src="generalForm.socialSecurityPictureFrontUrl"
												alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }" />
										</el-dialog>

									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="社保卡照片反面" prop="socialSecurityPictureOpposite" :rules="[]">
										<el-upload
											:action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
											:limit="limitNum" :disabled="hideUploadEdit2" list-type="picture-card"
											:auto-upload="true" :on-success="handleUploadSuccess2"
											v-model:file-list="fileList2">
											<el-icon>
												<Plus />
											</el-icon>

											<template #file="{ file }">
												<div>
													<img class="el-upload-list__item-thumbnail" :src="file.url"
														alt="" />
													<span class="el-upload-list__item-actions">
														<span class="el-upload-list__item-preview"
															@click="handlePictureCardPreview2(file)">
															<el-icon><zoom-in /></el-icon>
														</span>
														<span v-if="!disabled" class="el-upload-list__item-delete"
															@click="handleDownload2(file)">
															<el-icon>
																<Download />
															</el-icon>
														</span>
														<span v-if="!disabled" class="el-upload-list__item-delete"
															@click="handleRemove2(file, fileList2)">
															<el-icon>
																<Delete />
															</el-icon>
														</span>
													</span>
												</div>
											</template>
										</el-upload>
										<el-dialog v-model="dialogVisible2">
											<img w-full :src="generalForm.socialSecurityPictureOppositeUrl"
												alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }" />
										</el-dialog>

									</el-form-item>
								</el-col>
							</el-row>
						</el-tab-pane>
						<el-tab-pane label="中信银行卡信息">
							<el-row :gutter="26">
								<el-col :span="12">
									<el-form-item label="中信银行卡号" prop="zxBankCardNumber">
										<el-input v-model="generalForm.zxBankCardNumber"
											@change="checkBankNumber(generalForm.zxBankCardNumber, 'zx')"
											maxlength="19"></el-input>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="开户行" prop="zxAccountHolder">
										<el-input v-model="generalForm.zxAccountHolder"></el-input>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="银行卡正面" prop="accountHolderFront">
										<el-upload
											:action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
											:limit="limitNum" :disabled="bankHideUploadEdit" list-type="picture-card"
											:auto-upload="true" :on-success="bankHandleUploadSuccess"
											v-model:file-list="bankFileList">
											<el-icon>
												<Plus />
											</el-icon>

											<template #file="{ file }">
												<div>
													<img class="el-upload-list__item-thumbnail" :src="file.url"
														alt="" />
													<span class="el-upload-list__item-actions">
														<span class="el-upload-list__item-preview"
															@click="bankHandlePictureCardPreview(file)">
															<el-icon><zoom-in /></el-icon>
														</span>
														<span v-if="!disabled" class="el-upload-list__item-delete"
															@click="bankHandleDownload(file)">
															<el-icon>
																<Download />
															</el-icon>
														</span>
														<span v-if="!(method === 'view')"
															class="el-upload-list__item-delete"
															@click="bankHandleRemove(file, fileList)">
															<el-icon>
																<Delete />
															</el-icon>
														</span>
													</span>
												</div>
											</template>
										</el-upload>
										<el-dialog v-model="bankDialogVisible">
											<img w-full :src="generalForm.accountHolderFrontUrl" alt="Preview Image"
												:style="{ maxWidth: '100%', maxHeight: '100%' }" />
										</el-dialog>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="银行卡反面" prop="accountHolderOpposite">
										<el-upload
											:action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
											:limit="limitNum" :disabled="bankHideUploadEdit2" list-type="picture-card"
											:auto-upload="true" :on-success="bankHandleUploadSuccess2"
											v-model:file-list="bankFileList2">
											<el-icon>
												<Plus />
											</el-icon>

											<template #file="{ file }">
												<div>
													<img class="el-upload-list__item-thumbnail" :src="file.url"
														alt="" />
													<span class="el-upload-list__item-actions">
														<span class="el-upload-list__item-preview"
															@click="bankHandlePictureCardPreview2(file)">
															<el-icon><zoom-in /></el-icon>
														</span>
														<span v-if="!disabled" class="el-upload-list__item-delete"
															@click="bankHandleDownload2(file)">
															<el-icon>
																<Download />
															</el-icon>
														</span>
														<span v-if="!(method === 'view')"
															class="el-upload-list__item-delete"
															@click="bankHandleRemove2(file, fileList)">
															<el-icon>
																<Delete />
															</el-icon>
														</span>
													</span>
												</div>
											</template>
										</el-upload>
										<el-dialog v-model="bankDialogVisible2">
											<img w-full :src="generalForm.accountHolderOppositeUrl" alt="Preview Image"
												:style="{ maxWidth: '100%', maxHeight: '100%' }" />
										</el-dialog>
									</el-form-item>
								</el-col>
							</el-row>
						</el-tab-pane>
						<el-tab-pane label="招商银行卡信息">
							<el-row :gutter="26">
								<el-col :span="12">
									<el-form-item label="招商银行卡号" prop="gsBankCardNumber">
										<el-input v-model="generalForm.gsBankCardNumber"
											@change="checkBankNumber(generalForm.gsBankCardNumber, 'gs')"
											maxlength="19"></el-input>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="开户行" prop="gsAccountHolder">
										<el-input v-model="generalForm.gsAccountHolder"></el-input>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="银行卡正面" prop="gsAccountHolderFront">
										<el-upload
											:action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
											:limit="limitNum" :disabled="gsHideUploadEdit" list-type="picture-card"
											:auto-upload="true" :on-success="gsHandleUploadSuccess"
											v-model:file-list="gsFileList">
											<el-icon>
												<Plus />
											</el-icon>

											<template #file="{ file }">
												<div>
													<img class="el-upload-list__item-thumbnail" :src="file.url"
														alt="" />
													<span class="el-upload-list__item-actions">
														<span class="el-upload-list__item-preview"
															@click="gsHandlePictureCardPreview(file)">
															<el-icon><zoom-in /></el-icon>
														</span>
														<span v-if="!disabled" class="el-upload-list__item-delete"
															@click="gsHandleDownload(file)">
															<el-icon>
																<Download />
															</el-icon>
														</span>
														<span v-if="!(method === 'view')"
															class="el-upload-list__item-delete"
															@click="gsHandleRemove(file, fileList)">
															<el-icon>
																<Delete />
															</el-icon>
														</span>
													</span>
												</div>
											</template>
										</el-upload>
										<el-dialog v-model="gsDialogVisible">
											<img w-full :src="generalForm.gsAccountHolderFrontUrl" alt="Preview Image"
												:style="{ maxWidth: '100%', maxHeight: '100%' }" />
										</el-dialog>
									</el-form-item>
								</el-col>
								<el-col :span="12">
									<el-form-item label="银行卡反面" prop="gsAccountHolderOpposite">
										<el-upload
											:action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
											:limit="limitNum" :disabled="gsHideUploadEdit2" list-type="picture-card"
											:auto-upload="true" :on-success="gsHandleUploadSuccess2"
											v-model:file-list="gsFileList2">
											<el-icon>
												<Plus />
											</el-icon>

											<template #file="{ file }">
												<div>
													<img class="el-upload-list__item-thumbnail" :src="file.url"
														alt="" />
													<span class="el-upload-list__item-actions">
														<span class="el-upload-list__item-preview"
															@click="gsHandlePictureCardPreview2(file)">
															<el-icon><zoom-in /></el-icon>
														</span>
														<span v-if="!disabled" class="el-upload-list__item-delete"
															@click="gsHandleDownload2(file)">
															<el-icon>
																<Download />
															</el-icon>
														</span>
														<span v-if="!(method === 'view')"
															class="el-upload-list__item-delete"
															@click="gsHandleRemove2(file, fileList)">
															<el-icon>
																<Delete />
															</el-icon>
														</span>
													</span>
												</div>
											</template>
										</el-upload>
										<el-dialog v-model="gsDialogVisible2">
											<img w-full :src="generalForm.gsAccountHolderOppositeUrl"
												alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }" />
										</el-dialog>
									</el-form-item>
								</el-col>
							</el-row>
						</el-tab-pane> -->
					</el-form>
					<el-tab-pane label="教育经历">
						<el-card style="width: 100%;transition: all 0.3s ease;" shadow="hover" class="card-info">
							<template #header>
								<el-divider content-position="left"><i class="el-icon-document"></i> <span
										style="font-weight: 900; font-size: 16px; color: #606266;">教育经历</span>
									<el-divider direction="vertical" />
									<el-button type="primary" @click="addEdu()"
										:disabled="auditStatus == 2">新增</el-button>
									<el-divider direction="vertical" />
									<el-button :type="changeFlag[0] ? 'warning' : 'success'"
										@click="changeInfoList(0)">{{
											changeFlag[0] ? "收起" : "展开"
										}}</el-button>
								</el-divider>
							</template>
							<el-collapse-transition>
								<el-row :gutter="26" v-if="changeFlag[0]">
									<el-col :span="24">
										<el-collapse v-if="eduInfoList && eduInfoList.length > 0"
											v-model="activeNames[0]">
											<div style="padding: 0 30px;" v-for="(item, index) in eduInfoList">
												<el-collapse-item :name="item.id">
													<template #title="{ isActive }">
														<div class="collapseTitle">
															<span style="font-size: 16px;"> {{
																$dictUtils.getDictLabel("education",
																	item.education, '-') + ' - ' +
																item.graduatedFrom +
																' - ' + item.cultureMethod }}</span>
															<span
																style="color: #b0b0b0;font-size: 12px;">&nbsp;|&nbsp;</span>
															<span style="font-size: 14px;"> {{
																handleDateFormatter(item.startDate) }}</span>
															<span
																style="color: #b0b0b0;font-size: 12px;">&nbsp;至&nbsp;</span>
															<span style="font-size: 14px;"> {{
																handleDateFormatter(item.endDate) }}</span>
															<el-tag v-if="item.isHighestEducation == 1" size="small"
																style="margin-left: 10px;">最高学历</el-tag>

															<div style="margin-left: auto;">
																<el-button type="text" @click.stop="editEdu(item)"
																	:disabled="auditStatus == 2">修改</el-button>
																<el-button type="text" @click.stop="delEdu(item.id)"
																	style="color: red;"
																	:disabled="auditStatus == 2">删除</el-button>
															</div>
														</div>
													</template>
													<el-descriptions title="" border :column="2">
														<el-descriptions-item label="开始日期：">{{
															handleDateFormatter(item.startDate)
														}}</el-descriptions-item>
														<el-descriptions-item label="结束日期：">{{
															handleDateFormatter(item.endDate)
														}}</el-descriptions-item>
														<el-descriptions-item label="毕业院校：">{{
															item.graduatedFrom
														}}</el-descriptions-item>
														<!-- <el-descriptions-item label="其他毕业院校：">{{
															item.otherGraduatedFrom
														}}</el-descriptions-item> -->
														<el-descriptions-item label="专业：">{{ item.speciality
														}}</el-descriptions-item>
														<el-descriptions-item label="学历：">{{
															$dictUtils.getDictLabel("education",
																item.education, '-')
														}}</el-descriptions-item>
														<el-descriptions-item label="学位：">{{
															$dictUtils.getDictLabel("degree", item.degree, '-')
														}}</el-descriptions-item>
														<el-descriptions-item label="是否最高学历：">
															<el-tag v-if="item.isHighestEducation == 1">是</el-tag>
															<el-tag type="warning" v-else>否</el-tag>
														</el-descriptions-item>
														<el-descriptions-item label="是否最高学位：">
															<el-tag v-if="item.isHighestDegree == 1">是</el-tag>
															<el-tag type="warning" v-else>否</el-tag>
														</el-descriptions-item>
														<el-descriptions-item label="学习形式：">{{
															$dictUtils.getDictLabel("learn_form",
																item.learnForms, '-')
														}}</el-descriptions-item>
														<el-descriptions-item label="毕业类型：">{{
															$dictUtils.getDictLabel("graduation_type",
																item.graduationType, '-')
														}}</el-descriptions-item>
														<!-- <el-descriptions-item label="培养方式：">{{ item.cultureMethod
														}}</el-descriptions-item> -->
														<!-- <el-descriptions-item label="专业描述：">{{
															item.specialityDesc
														}}</el-descriptions-item> -->
														<el-descriptions-item label="学历证明：">
															<AttachmentView :fileList="item.educationFile"
																:key="uploadKey">
															</AttachmentView>
														</el-descriptions-item>
														<el-descriptions-item label="学位证明：">
															<AttachmentView :fileList="item.degreeFile"
																:key="uploadKey">
															</AttachmentView>
														</el-descriptions-item>

													</el-descriptions>
												</el-collapse-item>
											</div>
										</el-collapse>
										<el-empty image-size="80px"
											style="margin-top: 0 !important;padding: 0 !important;" v-else
											description="暂无教育经历"></el-empty>
									</el-col>
								</el-row>
							</el-collapse-transition>
						</el-card>
					</el-tab-pane>
					<el-tab-pane label="工作经历">
						<el-card style="width: 100%" shadow="hover" class="card-info">
							<template #header>
								<el-divider content-position="left"><i class="el-icon-document"></i> <span
										style="font-weight: 900; font-size: 16px; color: #606266;">工作经历</span>
									<el-divider direction="vertical" />
									<el-button type="primary" @click="addWork()"
										:disabled="auditStatus == 2">新增</el-button>
									<el-divider direction="vertical" />
									<el-button :type="changeFlag[1] ? 'warning' : 'success'"
										@click="changeInfoList(1)">{{
											changeFlag[1] ? "收起" : "展开"
										}}</el-button>
								</el-divider>
							</template>
							<el-collapse-transition>
								<el-row :gutter="26" v-if="changeFlag[1]">
									<el-col :span="24">
										<el-collapse v-model="activeNames[1]"
											v-if="workInfoList && workInfoList.length > 0">
											<div style="padding: 0 30px;" v-for="(item, index) in workInfoList">
												<el-collapse-item :name="item.id">
													<template #title="{ isActive }">
														<div class="collapseTitle">
															<span style="font-size: 16px;"> {{ item.companyName
																+ ' - '
																+
																item.position }}</span>
															<span
																style="color: #b0b0b0;font-size: 12px;">&nbsp;|&nbsp;</span>
															<span style="font-size: 14px;"> {{
																handleDateFormatter(item.startDate) }}</span>
															<span
																style="color: #b0b0b0;font-size: 12px;">&nbsp;至&nbsp;</span>
															<span style="font-size: 14px;"> {{
																handleDateFormatter(item.endDate) }}</span>

															<div style="margin-left: auto;">
																<el-button type="text" @click.stop="editWork(item)"
																	:disabled="auditStatus == 2">修改</el-button>
																<el-button type="text" @click.stop="delWork(item.id)"
																	style="color: red;"
																	:disabled="auditStatus == 2">删除</el-button>
															</div>
														</div>
													</template>
													<el-descriptions title="" border>
														<el-descriptions-item label="单位名称：">{{ item.companyName
														}}</el-descriptions-item>
														<el-descriptions-item label="职务：">{{ item.position
														}}</el-descriptions-item>
														<el-descriptions-item label="证明人：">{{ item.certifier
														}}</el-descriptions-item>
														<el-descriptions-item label="开始日期：">{{
															handleDateFormatter(item.startDate)
														}}</el-descriptions-item>
														<el-descriptions-item label="结束日期：">{{
															handleDateFormatter(item.endDate)
														}}</el-descriptions-item>
														<el-descriptions-item label="是否本单位工作经历">
															<el-tag
																v-if="item.isCurrentCompanyExperience == 1">是</el-tag>
															<el-tag type="warning" v-else>否</el-tag>
														</el-descriptions-item>
													</el-descriptions>
												</el-collapse-item>
											</div>
										</el-collapse>
										<el-empty image-size="80px"
											style="margin-top: 0 !important;padding: 0 !important;" v-else
											description="暂无工作经历"></el-empty>
									</el-col>
								</el-row>
							</el-collapse-transition>
						</el-card>
					</el-tab-pane>
					<el-tab-pane label="培训经历">
						<!-- 培训经历 -->
						<el-card style="width: 100%" shadow="hover" class="card-info">
							<template #header>
								<el-divider content-position="left"><i class="el-icon-document"></i> <span
										style="font-weight: 900; font-size: 16px; color: #606266;">培训经历</span>
									<el-divider direction="vertical" />
									<el-button type="primary" @click="addTraining()"
										:disabled="auditStatus == 2">新增</el-button>
									<el-divider direction="vertical" />
									<el-button :type="changeFlag[2] ? 'warning' : 'success'"
										@click="changeInfoList(2)">{{
											changeFlag[2] ? "收起" : "展开"
										}}</el-button>
								</el-divider>
							</template>
							<el-collapse-transition>
								<el-row :gutter="26" v-if="changeFlag[2]">
									<el-col :span="24">
										<el-collapse v-model="activeNames[2]"
											v-if="trainingInfoList && trainingInfoList.length > 0">
											<div style="padding: 0 30px;" v-for="(item, index) in trainingInfoList">
												<el-collapse-item :name="item.id">
													<template #title="{ isActive }">
														<div class="collapseTitle">
															<span style="font-size: 16px;"> {{ item.name + ' - '
																+
																item.trainingInstitution }}</span>
															<div style="margin-left: auto;">
																<el-button type="text" @click.stop="editTraining(item)"
																	:disabled="auditStatus == 2">修改</el-button>
																<el-button type="text"
																	@click.stop="delTraining(item.id)"
																	style="color: red;"
																	:disabled="auditStatus == 2">删除</el-button>
															</div>
														</div>
													</template>
													<el-descriptions title="" border>
														<el-descriptions-item label="名称：">{{ item.name
														}}</el-descriptions-item>
														<el-descriptions-item label="培训机构：">{{
															item.trainingInstitution
														}}</el-descriptions-item>
														<el-descriptions-item label="培训成绩：">{{
															item.trainingResult
														}}</el-descriptions-item>
														<el-descriptions-item label="附件：">
															<AttachmentView :key="uploadKey" :fileList="item.files">
															</AttachmentView>
														</el-descriptions-item>
													</el-descriptions>
												</el-collapse-item>
											</div>
										</el-collapse>
										<el-empty image-size="80px"
											style="margin-top: 0 !important;padding: 0 !important;" v-else
											description="暂无培训经历"></el-empty>
									</el-col>
								</el-row>
							</el-collapse-transition>
						</el-card>
					</el-tab-pane>
					<el-tab-pane label="执业资格证书">
						<!-- 执业资格证书 -->
						<el-card style="width: 100%" shadow="hover" class="card-info">
							<template #header>
								<el-divider content-position="left"><i class="el-icon-document"></i> <span
										style="font-weight: 900; font-size: 16px; color: #606266;">执业资格证书</span>
									<el-divider direction="vertical" />
									<el-button type="primary" @click="addCertificate()"
										:disabled="auditStatus == 2">新增</el-button>
									<el-divider direction="vertical" />
									<el-button :type="changeFlag[3] ? 'warning' : 'success'"
										@click="changeInfoList(3)">{{
											changeFlag[3] ? "收起" : "展开"
										}}</el-button>
								</el-divider>
							</template>
							<el-collapse-transition>
								<el-row :gutter="26" v-if="changeFlag[3]">
									<el-col :span="24">
										<el-collapse v-model="activeNames[3]"
											v-if="certificateInfoList && certificateInfoList.length > 0">
											<div style="padding: 0 30px;" v-for="(item, index) in certificateInfoList">
												<el-collapse-item :name="item.id">
													<template #title="{ isActive }">
														<div class="collapseTitle">
															<span style="font-size: 16px;"> {{
																$dictUtils.getDictLabel('sys_cert_type', item.type, '-')
															}}</span>
															<div style="margin-left: auto;">
																<el-button type="text"
																	@click.stop="editCertificate(item)"
																	:disabled="auditStatus == 2">修改</el-button>
																<el-button type="text"
																	@click.stop="delCertificate(item.id)"
																	style="color: red;"
																	:disabled="auditStatus == 2">删除</el-button>
															</div>
														</div>
													</template>
													<el-descriptions title="" border>
														<el-descriptions-item label="证书类型：">
															{{ $dictUtils.getDictLabel('sys_cert_type', item.type, '-')
															}}
														</el-descriptions-item>
														<el-descriptions-item label="证书编号：">
															{{ item.no }}
														</el-descriptions-item>
														<el-descriptions-item label="发证机关：">
															{{ item.authorities }}
														</el-descriptions-item>
														<el-descriptions-item label="发证日期：">
															{{ handleDateFormatter(item.issuedDate) }}
														</el-descriptions-item>
														<el-descriptions-item label="注册日期：">
															{{ handleDateFormatter(item.enrollDate) }}
														</el-descriptions-item>
														<el-descriptions-item label="到期日期：">
															{{ handleDateFormatter(item.expireDate) }}
														</el-descriptions-item>
														<el-descriptions-item label="注册证书编号：">
															{{ item.enrollCertNo }}
														</el-descriptions-item>
														<el-descriptions-item label="专业：">
															{{ item.profession }}
														</el-descriptions-item>
														<el-descriptions-item label="附件：">
															<AttachmentView :key="uploadKey"
																:fileList="item.certificateAttachment">
															</AttachmentView>
														</el-descriptions-item>
													</el-descriptions>
												</el-collapse-item>
											</div>
										</el-collapse>
										<el-empty image-size="80px"
											style="margin-top: 0 !important;padding: 0 !important;" v-else
											description="暂无执业资格证书"></el-empty>
									</el-col>
								</el-row>
							</el-collapse-transition>
						</el-card>
					</el-tab-pane>
					<el-tab-pane label="职称证书">
						<!-- 专业技能 -->
						<el-card style="width: 100%" shadow="hover" class="card-info">
							<template #header>
								<el-divider content-position="left"><i class="el-icon-document"></i> <span
										style="font-weight: 900; font-size: 16px; color: #606266;">职称证书</span>
									<el-divider direction="vertical" />
									<el-button type="primary" @click="addSkill()"
										:disabled="auditStatus == 2">新增</el-button>
									<el-divider direction="vertical" />
									<el-button :type="changeFlag[4] ? 'warning' : 'success'"
										@click="changeInfoList(4)">{{
											changeFlag[4] ? "收起" : "展开"
										}}</el-button>
								</el-divider>
							</template>
							<el-collapse-transition>
								<el-row :gutter="26" v-if="changeFlag[4]">
									<el-col :span="24">
										<el-collapse v-model="activeNames[4]"
											v-if="skillInfoList && skillInfoList.length > 0">
											<div style="padding: 0 30px;" v-for="(item, index) in skillInfoList">
												<el-collapse-item :name="item.id">
													<template #title="{ isActive }">
														<div class="collapseTitle">
															<span style="font-size: 16px;"> {{ item.name
															}}</span>
															<span style="font-size: 16px;" v-if="item.proficiency"> {{
																'-' +
																item.proficiency }}</span>
															<div style="margin-left: auto;">
																<el-button type="text" @click.stop="editSkill(item)"
																	:disabled="auditStatus == 2">修改</el-button>
																<el-button type="text" @click.stop="delSkill(item.id)"
																	style="color: red;"
																	:disabled="auditStatus == 2">删除</el-button>
															</div>
														</div>
													</template>
													<el-descriptions title="" border>
														<el-descriptions-item label="职称名称：">{{
															$dictUtils.getDictLabel('professional_certificate',
																item.name, '-')
															}}</el-descriptions-item>
														<el-descriptions-item label="职称等级：">{{ item.proficiency
														}}</el-descriptions-item>
														<el-descriptions-item label="取得日期：">{{
															handleDateFormatter(item.obtainDate)
														}}</el-descriptions-item>
														<el-descriptions-item label="取得途径：">{{ item.category
														}}</el-descriptions-item>
														<el-descriptions-item label="审批单位：">{{ item.usageTime
														}}</el-descriptions-item>
														<el-descriptions-item label="附件：">
															<AttachmentView :fileList="item.files">
															</AttachmentView>
														</el-descriptions-item>
													</el-descriptions>
												</el-collapse-item>
											</div>
										</el-collapse>
										<el-empty image-size="80px"
											style="margin-top: 0 !important;padding: 0 !important;" v-else
											description="暂无职称证书"></el-empty>
									</el-col>
								</el-row>
							</el-collapse-transition>
						</el-card>
					</el-tab-pane>
					<el-tab-pane label="外语语种">
						<!-- 外语语种 -->
						<el-card style="width: 100%" shadow="hover" class="card-info">
							<template #header>
								<el-divider content-position="left"><i class="el-icon-document"></i> <span
										style="font-weight: 900; font-size: 16px; color: #606266;">外语语种</span>
									<el-divider direction="vertical" />
									<el-button type="primary" @click="addLanguage()"
										:disabled="auditStatus == 2">新增</el-button>
									<el-divider direction="vertical" />
									<el-button :type="changeFlag[5] ? 'warning' : 'success'"
										@click="changeInfoList(5)">{{
											changeFlag[5] ? "收起" : "展开"
										}}</el-button>
								</el-divider>
							</template>
							<el-collapse-transition>
								<el-row :gutter="26" v-if="changeFlag[5]">
									<el-col :span="24">
										<el-collapse v-model="activeNames[5]"
											v-if="languageInfoList && languageInfoList.length > 0">
											<div style="padding: 0 30px;" v-for="(item, index) in languageInfoList">
												<el-collapse-item :name="item.id">
													<template #title="{ isActive }">
														<div class="collapseTitle">
															<span style="font-size: 16px;"> {{ item.language
															}}</span>
															<div style="margin-left: auto;">
																<el-button type="text" @click.stop="editLanguage(item)"
																	:disabled="auditStatus == 2">修改</el-button>
																<el-button type="text"
																	@click.stop="delLanguage(item.id)"
																	style="color: red;"
																	:disabled="auditStatus == 2">删除</el-button>
															</div>
														</div>
													</template>
													<el-descriptions title="" border>
														<el-descriptions-item label="语言：">{{ item.language
														}}</el-descriptions-item>
														<el-descriptions-item label="是否母语：">
															<el-tag v-if="item.isNative == 1">是</el-tag>
															<el-tag type="warning" v-else>否</el-tag>
														</el-descriptions-item>
														<el-descriptions-item label="掌握程度：">{{ item.proficiency
														}}</el-descriptions-item>
														<el-descriptions-item label="书写能力：">{{
															item.writingAbility
														}}</el-descriptions-item>
														<el-descriptions-item label="阅读能力：">{{
															item.readingAbility
														}}</el-descriptions-item>
														<el-descriptions-item label="口语能力：">{{
															item.speakingAbility
														}}</el-descriptions-item>
														<el-descriptions-item label="附件：">
															<AttachmentView :key="uploadKey" :fileList="item.files">
															</AttachmentView>
														</el-descriptions-item>
													</el-descriptions>
												</el-collapse-item>
											</div>
										</el-collapse>
										<el-empty image-size="80px"
											style="margin-top: 0 !important;padding: 0 !important;" v-else
											description="暂无外语语种信息"></el-empty>
									</el-col>
								</el-row>
							</el-collapse-transition>
						</el-card>
					</el-tab-pane>
					<el-tab-pane label="家庭情况">
						<!-- 家庭情况 -->
						<el-card style="width: 100%" shadow="hover" class="card-info">
							<template #header>
								<el-divider content-position="left"><i class="el-icon-document"></i> <span
										style="font-weight: 900; font-size: 16px; color: #606266;">家庭情况</span>
									<el-divider direction="vertical" />
									<el-button type="primary" @click="addFamily()"
										:disabled="auditStatus == 2">新增</el-button>
									<el-divider direction="vertical" />
									<el-button :type="changeFlag[6] ? 'warning' : 'success'"
										@click="changeInfoList(6)">{{
											changeFlag[6] ? "收起" : "展开"
										}}</el-button>
								</el-divider>
							</template>
							<el-collapse-transition>
								<el-row :gutter="26" v-if="changeFlag[6]">
									<el-col :span="24">
										<el-collapse v-model="activeNames[6]"
											v-if="familyInfoList && familyInfoList.length > 0">
											<div style="padding: 0 30px;" v-for="(item, index) in familyInfoList">
												<el-collapse-item :name="item.id">
													<template #title="{ isActive }">
														<div class="collapseTitle">
															<span style="font-size: 16px;"> {{ item.relation +
																"-"
															}}</span>
															<span style="font-size: 16px;"> {{ item.name
															}}</span>
															<div style="margin-left: auto;">
																<el-button type="text" @click.stop="editFamily(item)"
																	:disabled="auditStatus == 2">修改</el-button>
																<el-button type="text" @click.stop="delFamily(item.id)"
																	style="color: red;"
																	:disabled="auditStatus == 2">删除</el-button>
															</div>
														</div>
													</template>
													<el-descriptions title="" border>
														<el-descriptions-item label="姓名：">{{ item.name
														}}</el-descriptions-item>
														<el-descriptions-item label="出生日期：">{{
															handleDateFormatter(item.birthDate)
														}}</el-descriptions-item>
														<el-descriptions-item label="与本人关系名称：">{{ item.relation
														}}</el-descriptions-item>
														<el-descriptions-item label="性别：">{{
															$dictUtils.getDictLabel("sex",
																item.gender, '-')
														}}</el-descriptions-item>
														<el-descriptions-item label="手机号码：">{{ item.mobile
														}}</el-descriptions-item>
														<!-- <el-descriptions-item label="工作单位：">{{ item.workUnit
														}}</el-descriptions-item>
														<el-descriptions-item label="联系电话：">{{
															item.contactNumber
														}}</el-descriptions-item> -->
													</el-descriptions>
												</el-collapse-item>
											</div>
										</el-collapse>
										<el-empty image-size="80px"
											style="margin-top: 0 !important;padding: 0 !important;" v-else
											description="暂无家庭情况信息"></el-empty>
									</el-col>
								</el-row>
							</el-collapse-transition>
						</el-card>
					</el-tab-pane>
					<el-tab-pane label="表彰与奖励">
						<el-card style="width: 100%" shadow="hover" class="card-info">
							<template #header>
								<el-divider content-position="left"><i class="el-icon-document"></i> <span
										style="font-weight: 900; font-size: 16px; color: #606266;">表彰与奖励</span>
									<el-divider direction="vertical" />
									<el-button type="primary" @click="addReward()"
										:disabled="auditStatus == 2">新增</el-button>
									<el-divider direction="vertical" />
									<el-button :type="changeFlag[7] ? 'warning' : 'success'"
										@click="changeInfoList(7)">{{
											changeFlag[7] ? "收起" : "展开"
										}}</el-button>
								</el-divider>
							</template>
							<el-collapse-transition>
								<el-row :gutter="26" v-if="changeFlag[7]">
									<el-col :span="24">
										<el-collapse v-model="activeNames[7]"
											v-if="rewardInfoList && rewardInfoList.length > 0">
											<div style="padding: 0 30px;" v-for="(item, index) in rewardInfoList">
												<el-collapse-item :name="item.id">
													<template #title="{ isActive }">
														<div class="collapseTitle">
															<span style="font-size: 16px;"> {{ item.name
															}}</span>
															<span style="font-size: 16px;"> {{ "-" +
																handleDateFormatter(item.rewardDate)
															}}</span>
															<div style="margin-left: auto;">
																<el-button type="text" @click.stop="editReward(item)"
																	:disabled="auditStatus == 2">修改</el-button>
																<el-button type="text" @click.stop="delReward(item.id)"
																	style="color: red;"
																	:disabled="auditStatus == 2">删除</el-button>
															</div>
														</div>
													</template>
													<el-descriptions title="" border :column="2">
														<el-descriptions-item label="奖项：">{{ item.name
														}}</el-descriptions-item>
														<el-descriptions-item label="获奖日期：">{{
															handleDateFormatter(item.rewardDate)
														}}</el-descriptions-item>
														<el-descriptions-item :span="2" label="简述：">{{
															item.description
														}}</el-descriptions-item>
														<el-descriptions-item label="附件：">
															<AttachmentView :key="uploadKey" :fileList="item.files">
															</AttachmentView>
														</el-descriptions-item>
													</el-descriptions>
												</el-collapse-item>
											</div>
										</el-collapse>
										<el-empty image-size="80px"
											style="margin-top: 0 !important;padding: 0 !important;" v-else
											description="暂无表彰与奖励"></el-empty>
									</el-col>
								</el-row>
							</el-collapse-transition>
						</el-card>
					</el-tab-pane>
					<el-tab-pane label="劳动合同">
						<el-card style="width: 100%" shadow="hover" class="card-info">
							<template #header>
								<el-divider content-position="left"><i class="el-icon-document"></i> <span
										style="font-weight: 900; font-size: 16px; color: #606266;">劳动合同</span>
									<!-- <el-button type="primary" @click="addReward()"
										:disabled="auditStatus == 2">新增</el-button> -->
									<el-divider direction="vertical" />
									<el-button :type="changeFlag[8] ? 'warning' : 'success'"
										@click="changeInfoList(8)">{{
											changeFlag[8] ? "收起" : "展开"
										}}</el-button>
								</el-divider>
							</template>
							<el-collapse-transition>
								<el-row :gutter="26" v-if="changeFlag[8]">
									<el-col :span="24">
										<el-collapse v-model="activeNames[8]"
											v-if="laborContractInfoList && laborContractInfoList.length > 0">
											<div style="padding: 0 30px;"
												v-for="(item, index) in laborContractInfoList">
												<el-collapse-item :name="item.id">
													<template #title="{ isActive }">
														<div class="collapseTitle">
															<span style="font-size: 16px;"> {{
																$dictUtils.getDictLabel("labor_contract_type",
																	item.type, '-')
															}}</span>
															<span style="font-size: 16px;"> {{ "-" +
																$dictUtils.getDictLabel("labor_contract_term",
																	item.term,
																	'-')
															}}</span>

														</div>
													</template>
													<el-descriptions title="" border :column="2">
														<el-descriptions-item label="合同类型：">{{
															$dictUtils.getDictLabel("labor_contract_type", item.type,
																'-')
														}}</el-descriptions-item>
														<!-- <el-descriptions-item label="合同编号：">{{ item.code
														}}</el-descriptions-item> -->
														<el-descriptions-item label="合同期限：">{{
															$dictUtils.getDictLabel("labor_contract_term",
																item.term,
																'-')
														}}</el-descriptions-item>
														<el-descriptions-item label="合同起始日期：">{{
															handleDateFormatter(item.startDate)
														}}</el-descriptions-item>
														<el-descriptions-item label="合同终止日期：">{{
															handleDateFormatter(item.endDate)
														}}</el-descriptions-item>
														<el-descriptions-item label="试用期结束日期：">{{
															handleDateFormatter(item.trialEndDate)
														}}</el-descriptions-item>
														<!-- <el-descriptions-item label="办理日期：">{{
															handleDateFormatter(item.processeDate)
														}}</el-descriptions-item> -->
														<el-descriptions-item label="附件：">
															<AttachmentView :fileList="item.files">
															</AttachmentView>
														</el-descriptions-item>
													</el-descriptions>
												</el-collapse-item>
											</div>
										</el-collapse>
										<el-empty image-size="80px"
											style="margin-top: 0 !important;padding: 0 !important;" v-else
											description="暂无表彰与奖励"></el-empty>
									</el-col>
								</el-row>
							</el-collapse-transition>
						</el-card>
					</el-tab-pane>
					<el-tab-pane label="上传头像">
						<el-form :model="photoForm" ref="photoForm" label-width="100px">
							<el-form-item prop="photo">
								<image-select v-model="photoForm.photo" round icon="el-icon-avatar"
									title="头像"></image-select>
							</el-form-item>
							<!-- <el-form-item>
								<el-button style="width: 148px" type="primary" @click="submitPhotoForm()">保存</el-button>
							</el-form-item> -->
						</el-form>
					</el-tab-pane>
					<!--					<el-tab-pane label="联系方式">
						<el-form :model="concatForm" ref="concatForm" label-width="100px">

							<el-form-item label="手机" prop="mobile" :rules="[
								{
									validator: validator.isMobile,
									trigger: 'blur',
								},
							]">
								<el-input v-model="concatForm.mobile"></el-input>
							</el-form-item>
							<el-form-item label="电话" prop="phone" :rules="[
								{
									validator: validator.isPhone,
									trigger: 'blur',
								},
							]">
								<el-input v-model="concatForm.phone"></el-input>
							</el-form-item>
							&lt;!&ndash; <el-form-item>
								<el-button type="primary" @click="submitConcatForm()">保存</el-button>
							</el-form-item> &ndash;&gt;
						</el-form>
					</el-tab-pane>-->
					<!--<el-tab-pane label="修改密码">
						<el-form
							:rules="dataRule"
							:model="pwdForm"
							ref="pwdForm"
							label-width="100px"
						>
							<el-form-item
								label="旧密码"
								:rules="[
									{
										required: true,
										message: '必填项不能为空',
										trigger: 'blur',
									},
								]"
								prop="oldPassword"
							>
								<el-input
									v-model="pwdForm.oldPassword"
									show-password
								></el-input>
							</el-form-item>
							<el-form-item
								label="新密码"
								:rules="[
									{
										required: true,
										message: '必填项不能为空',
										trigger: 'blur',
									},
								]"
								prop="newPassword"
							>
								<el-input
									v-model="pwdForm.newPassword"
									show-password
								></el-input>
							</el-form-item>
							<el-form-item
								label="确认新密码"
								:rules="rule"
								prop="confirmNewPassword"
							>
								<el-input
									v-model="pwdForm.confirmNewPassword"
									show-password
								></el-input>
							</el-form-item>
							<el-form-item>
								<el-button
									type="primary"
									@click="submitPwdForm()"
									>保存</el-button
								>
							</el-form-item>
						</el-form>
					</el-tab-pane>-->
					<!--<el-tab-pane label="我的日志">
						<el-menu
							default-active="1"
							mode="horizontal"
							@select="changeLog"
						>
							<el-menu-item index="1">
								<template #title>登陆日志</template>
							</el-menu-item>
							<el-menu-item index="2">
								<template #title>访问日志</template>
							</el-menu-item>
						</el-menu>
						<vxe-table
							auto-resize
							resizable
							height="400px"
							:loading="loading"
							size="mini"
							ref="logTable"
							show-header-overflow
							show-overflow
							highlight-hover-row
							:menu-config="{}"
							:print-config="{}"
							:import-config="{}"
							:export-config="{}"
							@sort-change="sortChangeHandle"
							:sort-config="{ remote: true }"
							:data="dataList"
							:checkbox-config="{}"
						>
							<vxe-column type="seq" width="40"></vxe-column>
							<vxe-column
								title="操作菜单"
								field="title"
								sortable
							></vxe-column>
							<vxe-column
								title="耗时(毫秒)"
								field="recordTime"
								sortable
							></vxe-column>
							<vxe-column
								title="请求参数"
								field="params"
								sortable
							></vxe-column>
							<vxe-column
								title="返回结果"
								field="result"
								sortable
							></vxe-column>
							<vxe-column
								title="公司"
								field="createBy.companyDTO.name"
								sort-by="c.name"
								sortable
							></vxe-column>
							<vxe-column
								title="部门"
								field="createBy.officeDTO.name"
								sort-by="o.name"
								sortable
							></vxe-column>
							<vxe-column
								title="用户"
								field="createBy.name"
								sort-by="u.name"
								sortable
							></vxe-column>
							<vxe-column
								title="IP地址"
								field="remoteAddr"
								sortable
							></vxe-column>
							<vxe-column
								title="访问时间"
								field="createTime"
								sort-by="a.create_time"
								sortable
							></vxe-column>
						</vxe-table>
						<vxe-pager
							background
							size="mini"
							:current-page="tablePage.currentPage"
							:page-size="tablePage.pageSize"
							:total="tablePage.total"
							:page-sizes="[
								10,
								20,
								100,
								1000,
								{ label: '全量数据', value: 1000000 },
							]"
							:layouts="[
								'PrevPage',
								'JumpNumber',
								'NextPage',
								'FullJump',
								'Sizes',
								'Total',
							]"
							@page-change="currentChangeHandle"
						>
						</vxe-pager>
					</el-tab-pane>-->
				</el-tabs>
			</el-card>
		</el-main>
		<!-- 教育经历 -->
		<EducationInfo ref="EducationInfo" @addEduInfo="handleAddEduInfo"></EducationInfo>
		<!-- 工作经历 -->
		<WorkInfo ref="WorkInfo" @addWorkInfo="handleAddWorkInfo"></WorkInfo>
		<!-- 培训经历 -->
		<TrainingInfo ref="TrainingInfo" @addTrainingInfo="handleAddTrainingInfo"></TrainingInfo>
		<!-- 执业资格证书 -->
		<CertificateInfo ref="certificateInfo" @addCertificateInfo="handleAddCertificateInfo"></CertificateInfo>
		<!-- 职称证书 -->
		<SkillInfo ref="skillInfo" @addSkillInfo="handleAddSkillInfo"></SkillInfo>
		<!--外语语种 -->
		<LanguageInfo ref="languageInfo" @addLanguageInfo="handleAddLanguageInfo"></LanguageInfo>
		<!-- 家庭情况 -->
		<FamilyInfo ref="familyInfo" @addFamilyInfo="handleAddFamilyInfo"></FamilyInfo>
		<!-- 表彰与奖励 -->
		<RewardInfo ref="rewardInfo" @addRewardInfo="handleAddRewardInfo"></RewardInfo>
	</el-container>
</template>

<script>
import colorTool from "@/utils/color";
import userService from "@/api/sys/userService";
import logService from "@/api/sys/logService";
import postService from "@/api/sys/postService";
import roleService from "@/api/sys/roleService";
import enrollmentRegistrationService from '@/api/human/enrollment/EnrollmentRegistrationService'
import SelectTree from '@/components/treeSelect/treeSelect.vue'
import dayjs from 'dayjs'
import EducationInfo from "./components/EducationInfo";
import WorkInfo from "./components/WorkInfo";
import TrainingInfo from "./components/TrainingInfo";
import CertificateInfo from "./components/CertificateInfo";
import SkillInfo from "./components/SkillInfo";
import LanguageInfo from "./components/LanguageInfo";
import FamilyInfo from "./components/FamilyInfo";
import RewardInfo from "./components/RewardInfo";
import AttachmentView from './components/AttachmentView'
import UpLoadComponent from '@/views/common/UpLoadComponentCardStyle'
import processService from '@/api/flowable/processService'
import taskService from '@/api/flowable/taskService'

import OSSSerivce, {
	httpRequest,
	fileName,
	toHref,
} from '@/api/sys/OSSService'
import { flow } from "lodash";
export default {
	components: {
		SelectTree,
		EducationInfo,
		WorkInfo,
		TrainingInfo,
		CertificateInfo,
		SkillInfo,
		LanguageInfo,
		FamilyInfo,
		RewardInfo,
		AttachmentView,
		UpLoadComponent
	},
	data() {
		var validatePass2 = (rule, value, callback) => {
			if (value !== this.pwdForm.newPassword) {
				callback(new Error("两次输入密码不一致!"));
			} else {
				callback();
			}
		};
		return {
			activeName: "basicInfo",
			rejectMessage: "无",
			uploadKey: "",
			fileType: ['jpg', 'jpeg', 'png', 'webp'],
			bankHideUploadEdit: false, //控制上传点击
			bankHideUploadEdit2: false, //控制上传点击
			bankFileList: [],
			bankFileList2: [],
			bankDialogVisible: false,
			bankDialogVisible2: false,
			gsDialogVisible: false,
			gsDialogVisible2: false,
			gsHideUploadEdit: false, //控制上传点击
			gsHideUploadEdit2: false, //控制上传点击
			gsFileList: [],
			gsFileList2: [],

			hideUploadEdit: false, //隐藏上传按钮
			hideUploadEdit2: false, //隐藏上传按钮
			limitNum: 1,
			fileList: [],
			fileList2: [],
			dialogImageUrl: '',
			dialogVisible: false,
			dialogVisible2: false,
			disabled: false,
			ossService: null,
			roleList: [],
			postList: [],
			fileList: [],
			fileList2: [],
			type: "1",
			colorList: [
				"#409EFF",
				"#009688",
				"#536dfe",
				"#ff5c93",
				"#c62f2f",
				"#fd726d",
			],
			config: {
				lang: this.$TOOL.data.get("APP_LANG") || this.$CONFIG.LANG,
				theme: this.$TOOL.data.get("APP_THEME") || "default",
				colorPrimary:
					this.$TOOL.data.get("APP_COLOR") ||
					this.$CONFIG.COLOR ||
					"#409EFF",
			},
			userInfo: {},
			generalForm: {
				id: "",
				name: "",
				sign: "",
				loginName: "",
				companyDTO: {
					name: "",
				},
				officeDTO: {
					name: "",
				},
				remarks: "",
				wageCardId: '',//银行卡信息id
				zxBankCardNumber: '',//银行卡信息
				zxAccountHolder: '',
				accountHolderFront: '',
				accountHolderFrontUrl: '',
				accountHolderOpposite: '',
				accountHolderOppositeUrl: '',
				gsAccountHolder: '',
				gsBankCardNumber: '',
				gsAccountHolderFront: '',
				gsAccountHolderFrontUrl: '',
				gsAccountHolderOpposite: '',
				gsAccountHolderOppositeUrl: '',
				id: '',
				userId: '',
				name: '', //姓名
				sex: '', // 性别
				age: '',//年龄
				birthday: '',//生日
				joinIndustryDate: null, // 参加工作日期
				joinWorkDate: null, // 参加行业日期
				politicalOutlook: '',//政治面貌
				nativePlace: '',//籍贯
				nation: '', //民族
				maritalStatus: '',//婚姻
				mobilePhone: '',//联系电话
				idCard: '', //身份证
				idCardFront: [],
				idCardBack: [],
				homeAddress: '',//家庭住址
				permanentAddress: '',//常驻地址
				email: "",
				graduatedFrom: '',
				speciality: '',
				startTime: '',
				endTime: '',
				education: '',
				educationNature: '',
				graduatedOrNot: '',
				englishLevel: '',
				ncre: '',
				department: '',
				entryDate: '',
				contractStartDate: '',
				contractEndDate: '',
				remarks: '',
				type: '',
				onJobStatus: '',
				socialSecurityNumber: '',
				socialSecurityBankNumber: '',
				socialSecurityPictureFront: '',
				socialSecurityPictureFrontUrl: '',
				socialSecurityPictureOpposite: '',
				socialSecurityPictureOppositeUrl: '',
				roleIdList: [],
				postIdList: [],
				ddId: '',
				registrationId: "",
				status: ""
			},
			concatForm: {
				id: "",
				email: "",
				phone: "",
				mobile: "",
			},
			photoForm: {
				id: "",
				photo: "",
			},
			pwdForm: {
				id: this.$store.state.user.id,
				oldPassword: "",
				newPassword: "",
				confirmNewPassword: "",
			},
			dataRule: {
				password: [
					{ required: true, message: '原密码不能为空', trigger: 'blur' }
				],
				newPassword: [
					{ required: true, message: '新密码不能为空', trigger: 'blur' },
					{
						validator: (rule, value, callback) => {
							const passwordRegex = /^(?=(.*[A-Z]))(?=(.*[a-z]))(?=(.*\d))|(?=(.*[A-Z]))(?=(.*[a-z]))(?=(.*[!@#$%^&*.,]))|(?=(.*[A-Z]))(?=(.*\d))(?=(.*[!@#$%^&*.,]))|(?=(.*[a-z]))(?=(.*\d))(?=(.*[!@#$%^&*.,]))[A-Za-z\d!@#$%^&*.,]{8,20}$/;

							if (!value) {
								callback(new Error('新的密码不能为空'));
							} else if (!passwordRegex.test(value)) {
								callback(new Error('密码必须包含大写字母、小写字母、数字或特殊字符中的三种，且长度为8到20个字符'));
							} else {
								callback(); // 验证通过
							}
						},
						trigger: 'blur'
					}
				],
				confirmNewPassword: [
					{ required: true, message: '确认密码不能为空', trigger: 'blur' },
					{ validator: validatePass2, trigger: 'blur' },
					{
						validator: (rule, value, callback) => {
							const passwordRegex = /^(?=(.*[A-Z]))(?=(.*[a-z]))(?=(.*\d))|(?=(.*[A-Z]))(?=(.*[a-z]))(?=(.*[!@#$%^&*.,]))|(?=(.*[A-Z]))(?=(.*\d))(?=(.*[!@#$%^&*.,]))|(?=(.*[a-z]))(?=(.*\d))(?=(.*[!@#$%^&*.,]))[A-Za-z\d!@#$%^&*.,]{8,20}$/;

							if (!value) {
								callback(new Error('确认密码不能为空'));
							} else if (!passwordRegex.test(value)) {
								callback(new Error('密码必须包含大写字母、小写字母、数字或特殊字符中的三种，且长度为8到20个字符'));
							} else {
								callback(); // 验证通过
							}
						},
						trigger: 'blur'
					}
				]
			},
			dataList: [],
			tablePage: {
				total: 0,
				currentPage: 1,
				pageSize: 10,
				orders: [{ column: "a.create_time", asc: false }],
			},
			loading: false,
			rule: [
				{ required: true, message: "必填项不能为空", trigger: "blur" },
				{ validator: validatePass2, trigger: "blur" },
			],
			changeFlag: [
				true, true, true, true, true, true, true, true, true
			],
			activeNames: [],
			//教育经历
			eduInfoList: [

			],
			// 工作经历
			workInfoList: [

			],
			// 培训经历
			trainingInfoList: [

			],
			// 资质证书
			certificateInfoList: [

			],
			// 专业技能
			skillInfoList: [

			],
			languageInfoList: [

			],
			familyInfoList: [

			],
			rewardInfoList: [

			],
			laborContractInfoList: [],
			auditStatus: "0",
			flowData: [],
			procInsId: ""
		};
	},
	created() {
		this.ossService = new OSSSerivce()

		this.userInfo = this.$TOOL.data.get("USER_INFO");
		var userId = this.userInfo.id;
		if (userId) {
			this.getDataInfo(userId)
			// this.refreshList(userId);

		}



	},
	computed: {
		userId() {
			return this.$store.state.user.id
		}
	},
	watch: {
		"config.theme"(val) {
			document.body.setAttribute("data-theme", val);
			this.$TOOL.data.set("APP_THEME", val);
		},
		"config.lang"(val) {
			this.$i18n.locale = val;
			this.$TOOL.data.set("APP_LANG", val);
		},
		"config.colorPrimary"(val) {
			colorTool.setAppColors(val);
			this.$TOOL.data.set("APP_COLOR", val);
		},
	},
	methods: {
		getDataInfo(userId) {
			this.loading = true
			enrollmentRegistrationService.getUserInfoAudit({ userId: userId }).then(res => {
				if (res) {
					this.procInsId = res.procInsId
					if (res.procInsId) {
						taskService.historicTaskList(
							res.procInsId
						).then(result => {
							if (res.status == 4) {
								let rejectObj = result.find(temp => {
									return temp.comment.status == "驳回"
								})
								if (rejectObj && rejectObj.comment.message != "") {
									this.rejectMessage = rejectObj.comment.message
								}
							} else if (res.status == 2) {
								this.flowData = result
								// this.$refs.flowRef.setCurrentRow(this.flowData[this.flowData.length - 1]);
							}
						})
					}


					//审核中就展示提交审核的信息
					if (res.status == 2 || res.status == 4) {
						this.auditStatus = res.status
						this.initAudit(res.id)
						// 完成审核或者已经驳回,就展示最终信息
					} else {
						this.auditStatus = "5"
						userService.queryById(userId).then((data) => {
							// this.recover(this.generalForm, data);
							this.recover(this.concatForm, data);
							this.recover(this.photoForm, data);
						});
						this.init(userId)
					}
				} else {
					this.auditStatus = "6"
					userService.queryById(userId).then((data) => {
						// this.recover(this.generalForm, data);
						this.recover(this.concatForm, data);
						this.recover(this.photoForm, data);
					});
					this.init(userId)
				}
			}).catch(() => {
				this.loading = false

			})
		},
		init(userId) {
			this.loading = true;
			enrollmentRegistrationService.findInfoByUserId(userId).then(async (data) => {
				this.fileList = []
				this.fileList2 = []
				this.generalForm = this.recover(this.generalForm, data)
				this.generalForm = JSON.parse(JSON.stringify(this.generalForm))
				if (this.commonJS.isEmpty(this.generalForm.roleIdList)) {
					this.generalForm.roleIdList = []
				}
				if (this.commonJS.isEmpty(this.generalForm.postIdList)) {
					this.generalForm.postIdList = []
				}
				// 教育经历
				if (this.commonJS.isNotEmpty(data.eduInfoList)) {
					this.eduInfoList = data.eduInfoList
				}
				// 工作经历
				if (this.commonJS.isNotEmpty(data.workInfoList)) {

					this.workInfoList = data.workInfoList
				}
				// 培训经历
				if (this.commonJS.isNotEmpty(data.trainingInfoList)) {
					this.trainingInfoList = data.trainingInfoList
				}
				// 资质证书
				if (this.commonJS.isNotEmpty(data.certificateInfoList)) {
					this.certificateInfoList = data.certificateInfoList
				}
				// 专业技能
				if (this.commonJS.isNotEmpty(data.skillInfoList)) {
					this.skillInfoList = data.skillInfoList
				}
				// 外语语种
				if (this.commonJS.isNotEmpty(data.languageInfoList)) {
					this.languageInfoList = data.languageInfoList
				}
				// 家庭情况
				if (this.commonJS.isNotEmpty(data.familyInfoList)) {
					this.familyInfoList = data.familyInfoList
				}
				// 表彰与奖励
				if (this.commonJS.isNotEmpty(data.rewardInfoList)) {
					this.rewardInfoList = data.rewardInfoList
				}
				// 劳动合同
				if (this.commonJS.isNotEmpty(data.laborContractInfoList)) {
					this.laborContractInfoList = data.laborContractInfoList
				}

				if (this.commonJS.isEmpty(this.generalForm.idCardFront)) {
					this.generalForm.idCardFront = []
				}

				if (this.commonJS.isEmpty(this.generalForm.idCardBack)) {
					this.generalForm.idCardBack = []
				}
				this.certificateInfoList.forEach(temp => {
					this.changeType(temp.type, temp)
				})
				this.activeNames[0] = this.eduInfoList.map(item => item.id)
				this.activeNames[1] = this.workInfoList.map(item => item.id)
				this.activeNames[2] = this.trainingInfoList.map(item => item.id)
				this.activeNames[3] = this.certificateInfoList.map(item => item.id)
				this.activeNames[4] = this.skillInfoList.map(item => item.id)
				this.activeNames[5] = this.languageInfoList.map(item => item.id)
				this.activeNames[6] = this.familyInfoList.map(item => item.id)
				this.activeNames[7] = this.rewardInfoList.map(item => item.id)
				this.activeNames[8] = this.laborContractInfoList.map(item => item.id)

				//后面的fileType是限制上传类型
				this.$refs.idCardFront.newUpload('edit', this.generalForm.idCardFront, 'idCard', null, null, null, null, null, [...this.fileType])
				this.$refs.idCardBack.newUpload('edit', this.generalForm.idCardBack, 'idCard', null, null, null, null, null, [...this.fileType])
				if (this.commonJS.isNotEmpty(this.generalForm.socialSecurityPictureFront)) {
					await this.ossService.getTemporaryUrl(this.generalForm.socialSecurityPictureFront).then((data) => {
						let file = {
							url: data
						}
						this.fileList.push(file)
					})
				}
				if (this.commonJS.isNotEmpty(this.generalForm.socialSecurityPictureOpposite)) {
					await this.ossService.getTemporaryUrl(this.generalForm.socialSecurityPictureOpposite).then((data) => {
						let file = {
							url: data
						}
						this.fileList2.push(file)
					})
				}
				if (this.commonJS.isNotEmpty(this.generalForm.accountHolderFront)) {

					await this.ossService.getTemporaryUrl(this.generalForm.accountHolderFront).then((data) => {
						console.log('data', data)
						let file = {
							url: data
						}
						this.bankFileList.push(file)
					})
				}
				if (this.commonJS.isNotEmpty(this.generalForm.accountHolderOpposite)) {
					console.log('123')
					await this.ossService.getTemporaryUrl(this.generalForm.accountHolderOpposite).then((data) => {
						let file = {
							url: data
						}
						this.bankFileList2.push(file)
					})
				}
				if (this.commonJS.isNotEmpty(this.generalForm.gsAccountHolderFront)) {
					await this.ossService.getTemporaryUrl(this.generalForm.gsAccountHolderFront).then((data) => {
						let file = {
							url: data
						}
						this.gsFileList.push(file)
					})
				}
				if (this.commonJS.isNotEmpty(this.generalForm.gsAccountHolderOpposite)) {
					await this.ossService.getTemporaryUrl(this.generalForm.gsAccountHolderOpposite).then((data) => {
						let file = {
							url: data
						}
						this.gsFileList2.push(file)
					})
				}
				if (this.generalForm.type == 5) {
					roleService.list2(this.generalForm.department).then((data) => {
						this.roleList = data
					})
					postService.list2(this.generalForm.department).then((data) => {
						this.postList = data

					})
				}
				this.loading = false
			}).catch(err => {
				this.loading = false;
			})
		},
		initAudit(id) {
			this.generalForm = {
				id: '',
				userId: '',
				name: '', //姓名
				sex: '', // 性别
				age: '',//年龄
				birthday: '',//生日
				joinIndustryDate: null, // 参加工作日期
				joinWorkDate: null, // 参加行业日期
				politicalOutlook: '',//政治面貌
				nativePlace: '',//籍贯
				nation: '', //民族
				maritalStatus: '',//婚姻
				mobilePhone: '',//联系电话
				idCard: '', //身份证
				idCardFront: [],
				idCardBack: [],
				homeAddress: '',//家庭住址
				permanentAddress: '',//常驻地址
				email: "",
				registrationId: "",
				status: ""
			}
			this.generalForm.id = id
			this.visible = true
			this.loading = false
			this.$nextTick(() => {
				this.loading = true
				enrollmentRegistrationService.findAuditInfoById(this.generalForm.id).then(async (data) => {
					this.generalForm = this.recover(this.generalForm, data)
					this.generalForm = JSON.parse(JSON.stringify(this.generalForm))
					this.eduInfoList = data.eduInfoList
					this.certificateInfoList = data.certificateInfoList
					this.skillInfoList = data.skillInfoList
					this.familyInfoList = data.familyInfoList
					this.languageInfoList = data.languageInfoList
					this.trainingInfoList = data.trainingInfoList
					this.rewardInfoList = data.rewardInfoList
					this.laborContractInfoList = data.laborContractInfoList
					this.workInfoList = data.workInfoList
					this.concatForm.email = data.email
					this.activeNames[0] = this.eduInfoList.map(item => item.id)
					this.activeNames[1] = this.workInfoList.map(item => item.id)
					this.activeNames[2] = this.trainingInfoList.map(item => item.id)
					this.activeNames[3] = this.certificateInfoList.map(item => item.id)
					this.activeNames[4] = this.skillInfoList.map(item => item.id)
					this.activeNames[5] = this.languageInfoList.map(item => item.id)
					this.activeNames[6] = this.familyInfoList.map(item => item.id)
					this.activeNames[7] = this.rewardInfoList.map(item => item.id)
					this.activeNames[8] = this.laborContractInfoList.map(item => item.id)
					if (this.commonJS.isEmpty(this.generalForm.idCardFront)) {
						this.generalForm.idCardFront = []
					}

					if (this.commonJS.isEmpty(this.generalForm.idCardBack)) {
						this.generalForm.idCardBack = []
					}
					//后面的fileType是限制上传类型
					let method = ""
					if (this.auditStatus == 2) {
						method = "view"
					}
					if (this.auditStatus == 4) {
						method = "edit"
					}
					this.certificateInfoList.forEach(temp => {
						this.changeType(temp.type, temp)
					})
					this.$refs.idCardFront.newUpload(method, this.generalForm.idCardFront, 'idCard', null, null, null, null, null, [...this.fileType])
					this.$refs.idCardBack.newUpload(method, this.generalForm.idCardBack, 'idCard', null, null, null, null, null, [...this.fileType])
					this.loading = false
				})

			})
		},
		async submitGeneralForm() {
			let valid = await this.$refs["generalForm"].validate();
			if (valid) {
				const loading = this.$loading();
				let data = await userService.saveInfo(this.generalForm);
				let { user } = await userService.info();
				this.userInfo = user;
				this.$TOOL.data.set("USER_INFO", user);
				loading.close();
				this.$message.success(data);
			}
		},
		async submitConcatForm() {
			// let valid = await this.$refs["concatForm"].validate();
			// if (valid) {
			const loading = this.$loading();
			let data = await userService.saveInfo(this.concatForm);
			let { user } = await userService.info();
			this.userInfo = user;
			// this.$TOOL.data.set("USER_INFO", user);
			localStorage.setItem("USER_INFO", JSON.stringify(user))
			loading.close();
			// this.$message.success(data);
			// }
		},
		async submitUserInfo() {
			this.$confirm('确定提交审批吗?', '提示', {
				confirmButtonText: '确定',
				cancelButtonText: '取消',
				type: 'warning'
			}).then(() => {
				if (this.$refs.idCardFront.checkProgress() || this.$refs.idCardBack.checkProgress()) {
					return
				}
				// if (!this.generalForm.idCard || this.generalForm.idCard == "" || this.generalForm.idCard == null) {
				// 	this.$message.error("身份证号码未填写")
				// 	return
				// }
				this.$refs['generalForm'].validate((valid) => {
					if (valid) {
						this.loading = true
						this.submitConcatForm()
						this.submitPhotoForm()
						this.generalForm.idCardFront = this.$refs.idCardFront.getDataList()
						this.generalForm.idCardBack = this.$refs.idCardBack.getDataList()
						this.generalForm.email = this.concatForm.email
						this.generalForm.eduInfoList = this.eduInfoList
						this.generalForm.workInfoList = this.workInfoList
						this.generalForm.certificateInfoList = this.certificateInfoList
						this.generalForm.skillInfoList = this.skillInfoList
						this.generalForm.rewardInfoList = this.rewardInfoList
						this.generalForm.familyInfoList = this.familyInfoList
						this.generalForm.trainingInfoList = this.trainingInfoList
						this.generalForm.languageInfoList = this.languageInfoList

						enrollmentRegistrationService.updateInfoAudit(this.generalForm).then((data) => {
							this.close()
							this.$message.success(data.msg)
							this.$refs.idCardBack.clearUpload()
							this.$refs.idCardFront.clearUpload()
							this.getDataInfo(this.userInfo.id)
							this.loading = false
						}).catch(() => {
							this.loading = false
						})
					} else {
						if (!this.generalForm.idCard || this.generalForm.idCard == "" || this.generalForm.idCard == null) {
							this.$message.error("身份证号码未填写")
						}
						this.activeName = "basicInfo"
					}
				})
			}).catch(() => {

			});


		},
		close() {
			this.$refs.generalForm.resetFields()
			this.fileList = []
			this.fileList2 = []
			this.bankFileList = []
			this.bankFileList2 = []
			this.gsFileList = []
			this.gsFileList2 = []
			this.visible = false
		},
		async submitPhotoForm() {
			const loading = this.$loading();
			let data = await userService.saveInfo(this.photoForm);
			let { user } = await userService.info();
			this.userInfo = user;
			this.$TOOL.data.set("USER_INFO", user);
			loading.close();
			// this.$message.success(data);
		},
		async submitPwdForm() {
			console.log(this.pwdForm)
			let valid = await this.$refs["pwdForm"].validate();
			console.log(valid)

			if (valid) {
				const loading = this.$loading();

				try {
					let data = await userService.saveInfo(this.pwdForm); // 可能抛出错误的请求

					// 更新用户信息
					let { user } = await userService.info();
					this.userInfo = user;
					this.$TOOL.data.set("USER_INFO", user);
					this.$message.success(data); // 成功信息提示

				} catch (error) {
					// 捕获请求中的异常
					/*if (error.response && error.response.status === 400) {
						// 使用后端返回的错误信息提示用户
						this.$message.error(error.response.data); // 比如 "修改密码失败，旧密码错误！"
					} else {
						this.$message.error("请求失败，请稍后重试");
						console.error("请求失败", error);
					}*/
				} finally {
					loading.close(); // 确保 loading 状态关闭
				}
			}
		}
		,
		// 获取数据列表
		refreshList() {
			this.loading = true;
			logService
				.mine({
					current: this.tablePage.currentPage,
					size: this.tablePage.pageSize,
					orders: this.tablePage.orders,
				})
				.then((data) => {
					this.dataList = data.records;
					this.tablePage.total = data.total;
					this.loading = false;
				});
		},
		changeLog(index) {
			this.type = index;
			this.refreshList();
		},
		// 当前页
		currentChangeHandle({ currentPage, pageSize }) {
			this.tablePage.currentPage = currentPage;
			this.tablePage.pageSize = pageSize;
			this.refreshList();
		},
		// 排序
		sortChangeHandle(obj) {
			this.tablePage.orders = [];
			if (obj.order != null) {
				this.tablePage.orders.push({
					column:
						obj.column.sortBy || this.$utils.toLine(obj.property),
					asc: obj.order === "asc",
				});
			} else {
				this.tablePage.orders = [
					{ column: "a.create_time", asc: false },
				];
			}
			this.refreshList();
		},
		//身份证号码唯一性判断
		idCardOnly(idCard, id) {
			enrollmentRegistrationService.findIdCardOnly(idCard, id).then((data) => {
				if (data != 0) {
					this.$message.error('身份证号码已存在，请重新确认')
					this.generalForm.idCard = ''
					throw new Error('身份证号码已存在，请重新确认')
				} else {
					let sex = null
					let birth = null
					let myDate = new Date()
					let month = myDate.getMonth() + 1
					let day = myDate.getDate()
					let age = 0

					if (idCard.length === 18) {
						age = myDate.getFullYear() - idCard.substring(6, 10) - 1
						sex = idCard.substring(16, 17)
						birth = idCard.substring(6, 10) + '-' + idCard.substring(10, 12) + '-' + idCard.substring(12, 14)
						// eslint-disable-next-line no-mixed-operators
						if (idCard.substring(10, 12) < month || idCard.substring(10, 12) === month && idCard.substring(12, 14) <= day) age++

					}
					if (idCard.length === 15) {
						age = myDate.getFullYear() - idCard.substring(6, 8) - 1901
						sex = idCard.substring(13, 14)
						birth = '19' + idCard.substring(6, 8) + '-' + idCard.substring(8, 10) + '-' + idCard.substring(10, 12)
						// eslint-disable-next-line no-mixed-operators
						if (idCard.substring(8, 10) < month || idCard.substring(8, 10) === month && idCard.substring(10, 12) <= day) age++
					}

					if (sex % 2 === 0) {
						sex = '2'  // 性别代码 1代表男，2代表女，暂时不涉及其他类型性别
					} else {
						sex = '1'
					}
					//获取户籍所在地
					const regionCode = idCard.substring(0, 6);
					this.generalForm.nativePlace = regionCode
					this.generalForm.age = age
					this.generalForm.sex = sex
					this.generalForm.birthday = birth
					return { age, sex, birth }
				}
			})
		},
		//联系电话唯一性判断
		mobilePhoneOnly(mobilePhone) {
			if (!this.validateXG.isPhoneOrMobile(mobilePhone)) {
				this.$message.error('”联系电话“填写不正确，请重新填写')
				this.loading = false
				this.generalForm.mobilePhone = ''
				throw new Error('”联系电话“填写不正确，请重新填写')
			}
			enrollmentRegistrationService.findMobilePhoneOnly(mobilePhone).then((data) => {
				if (data !== 0) {
					this.$message.error('联系电话已存在，请重新确认')
					this.generalForm.mobilePhone = ''
					throw new Error('联系电话已存在，请重新确认')
				}
			})
		},
		//邮箱验证
		checkEmail(email) {
			if (!this.validateXG.isEmail(email)) {
				this.$message.error('邮箱格式不正确，请重新填写')
				this.loading = false
				this.concatForm.email = ''
				throw new Error('邮箱格式不正确，请重新填写')
			}

		},
		checkBankNumber(bankNumber, type) {
			if (!this.validateXG.isBankNum(bankNumber)) {
				if (type === 'zx') {
					this.generalForm.zxBankCardNumber = ''
				} else if (type === 'gs') {
					this.generalForm.gsBankCardNumber = ''
				} else {
					this.$message.error('请输入正确的社保银行卡号')
					this.generalForm.socialSecurityBankNumber = ''
					throw new Error('请输入正确的社保银行卡号')
				}
				this.$message.error('请输入正确的银行卡号')
				throw new Error('请输入正确的银行卡号')
			}
		},
		handleAvatarSuccess(res, file, fileList, index, val) {
			console.log('foleList', fileList)
			if (val === 'front') {
				this.generalForm.socialSecurityPictureFront = '/' + res.url
				this.generalForm.socialSecurityPictureFrontUrl = res.lsUrl
				console.log('res.url', res.url)
				console.log('res.lsUrl', res.lsUrl)
			}
			this.hideUploadEdit = true
			this.$forceUpdate()
		},
		handleAvatarSuccess2(res, file, fileList, index, val) {
			console.log('foleList', fileList)
			if (val === 'front') {
				this.generalForm.socialSecurityPictureOpposite = '/' + res.url
				this.generalForm.socialSecurityPictureOppositeUrl = res.lsUrl
			}
			this.hideUploadEdit = true
			this.$forceUpdate()
		},
		onPreview(url) {
			if (url !== '' && url !== undefined && url !== null) {
				this.url = url
				this.showViewer = true
			}
		},
		checkIsPic(file) {
			return this.commonJS.isPic(file)
		},
		validateInput() {
			// 使用正则表达式验证输入内容，禁止中文
			this.generalForm.socialSecurityNumber = this.generalForm.socialSecurityNumber.replace(/[\u4e00-\u9fa5]/g, '');
		},
		handleUploadSuccess(response, file, fileList) {
			return this.handleAvatarSuccess(response, file, fileList, null, 'front')
		},
		handleUploadSuccess2(response, file, fileList) {
			return this.handleAvatarSuccess2(response, file, fileList, null, 'front')
		},
		bankHandleUploadSuccess(response, file, fileList) {
			return this.bankHandleAvatarSuccess(response, file, fileList, null, 'front')
		},
		bankHandleAvatarSuccess(res, file, fileList, index, val) {
			if (val === 'front') {
				this.generalForm.accountHolderFront = '/' + res.url
				this.generalForm.accountHolderFrontUrl = res.lsUrl
			}
			this.bankHideUploadEdit = true
			this.$forceUpdate()
		},
		bankHandlePictureCardPreview(file) {
			this.generalForm.accountHolderFrontUrl = file.url
			this.bankDialogVisible = true;
		},
		bankHandleDownload(file) {
			let file2 = {
				url: this.generalForm.accountHolderFront
			}
			toHref(file2)
		},
		bankHandleRemove(file, fileList) {
			this.bankHideUploadEdit = false
			// 如果需要删除图片信息，可以根据file或其他标识从相应的数据结构中删除信息
			const fileIndex = this.bankFileList.indexOf(file);
			if (fileIndex !== -1) {
				this.bankFileList.splice(fileIndex, 1); // 从fileList中删除该图片信息
				this.generalForm.accountHolderFront = ""
			}
		},
		bankHandleUploadSuccess2(response, file, fileList) {
			return this.bankHandleAvatarSuccess2(response, file, fileList, null, 'front')
		},
		bankHandleAvatarSuccess2(res, file, fileList, index, val) {
			if (val === 'front') {
				this.generalForm.accountHolderOpposite = '/' + res.url
				this.generalForm.accountHolderOppositeUrl = res.lsUrl
			}
			this.bankHideUploadEdit2 = true
			this.$forceUpdate()
		},
		bankHandlePictureCardPreview2(file) {
			this.generalForm.accountHolderOppositeUrl = file.url
			this.bankDialogVisible2 = true;
		},
		bankHandleDownload2(file) {
			let file2 = {
				url: this.generalForm.accountHolderOpposite
			}
			toHref(file2)
		},
		bankHandleRemove2(file, fileList) {
			this.hideUploadEdit2 = false
			// 如果需要删除图片信息，可以根据file或其他标识从相应的数据结构中删除信息
			const fileIndex = this.bankFileList2.indexOf(file);
			if (fileIndex !== -1) {
				this.bankFileList2.splice(fileIndex, 1); // 从fileList中删除该图片信息
				this.generalForm.accountHolderOpposite = ""
			}
		},
		gsHandleUploadSuccess(response, file, fileList) {
			return this.gsHandleAvatarSuccess(response, file, fileList, null, 'front')
		},
		gsHandleUploadSuccess2(response, file, fileList) {
			return this.gsHandleAvatarSuccess2(response, file, fileList, null, 'front')
		},
		gsHandleAvatarSuccess(res, file, fileList, index, val) {
			if (val === 'front') {
				this.generalForm.gsAccountHolderFront = '/' + res.url
				this.generalForm.gsAccountHolderFrontUrl = res.lsUrl
			}
			this.hideUploadEdit = true
			this.$forceUpdate()
		},
		gsHandleAvatarSuccess2(res, file, fileList, index, val) {
			if (val === 'front') {
				this.generalForm.gsAccountHolderOpposite = '/' + res.url
				this.generalForm.gsAccountHolderOppositeUrl = res.lsUrl
			}
			this.hideUploadEdit2 = true
			this.$forceUpdate()
		},
		gsHandlePictureCardPreview(file) {
			this.dialogImageUrl = file.url;
			this.generalForm.gsAccountHolderFrontUrl = file.url
			this.gsDialogVisible = true;
		},
		gsHandlePictureCardPreview2(file) {
			this.generalForm.gsAccountHolderOppositeUrl = file.url
			this.gsDialogVisible2 = true;
		},
		gsHandleDownload(file) {
			let file2 = {
				url: this.generalForm.gsAccountHolderFront
			}
			toHref(file2)
		},
		gsHandleDownload2(file) {
			let file2 = {
				url: this.generalForm.gsAccountHolderOpposite
			}
			toHref(file2)
		},
		gsHandleRemove(file, fileList) {
			this.gsHideUploadEdit = false
			// 如果需要删除图片信息，可以根据file或其他标识从相应的数据结构中删除信息
			const fileIndex = this.gsFileList.indexOf(file);
			if (fileIndex !== -1) {
				this.gsFileList.splice(fileIndex, 1); // 从fileList中删除该图片信息
				this.generalForm.gsAccountHolderFront = ""
			}
		},
		gsHandleRemove2(file, fileList) {
			this.gsHideUploadEdit2 = false
			// 如果需要删除图片信息，可以根据file或其他标识从相应的数据结构中删除信息
			const fileIndex = this.gsFileList2.indexOf(file);
			if (fileIndex !== -1) {
				this.gsFileList2.splice(fileIndex, 1); // 从fileList中删除该图片信息
				this.generalForm.gsAccountHolderOpposite = ""
			}
		},
		// 日期格式化
		handleDateFormatter(dateStr) {
			if (!dateStr) return ''; // 如果为空，返回空字符串
			return dayjs(dateStr).format('YYYY年MM月DD日');
		},
		changeInfoList(index) {
			this.changeFlag[index] = !this.changeFlag[index]
		},
		// 教育经历处理
		handleEduInfoChange(val) {
			console.log(val);
		},
		// 教育经历
		addEdu() {
			this.$refs.EducationInfo.init("add", null, this.userId)
		},
		editEdu(row) {
			this.$refs.EducationInfo.init("edit", row, this.userId)
		},
		delEdu(id) {
			this.$confirm('确定删除此条教育经历信息吗?', '提示', {
				confirmButtonText: '确定',
				cancelButtonText: '取消',
				type: 'warning'
			}).then(() => {
				this.eduInfoList = this.eduInfoList.filter(item => item.id !== id)
			}).catch(() => {

			});
		},
		handleAddEduInfo(row) {
			const { id } = row
			let index = this.eduInfoList.findIndex(item => item.id === row.id)
			if (index === -1) {
				// 不存在就新增
				this.eduInfoList.push(row)
			} else {
				// 存在就更新
				this.eduInfoList[index] = row
				this.eduInfoList[index].degreeFile = row.degreeFile
				this.eduInfoList[index].educationFile = row.educationFile
			}
			if (!this.activeNames[0].includes(id)) {
				this.activeNames[0].push(id);
			}
			this.uploadKey = Date.now().toString();

		},
		handleGetEduInfo() {
			enrollmentRegistrationService.findEduInfo({
				userId: this.userId
			}).then(res => {
				this.eduInfoList = res
			})
		},
		// 工作经历处理
		addWork() {
			this.$refs.WorkInfo.init("add", null, this.userId)
		},
		editWork(row) {
			this.$refs.WorkInfo.init("edit", row, this.userId)
		},
		delWork(id) {
			this.$confirm('确定删除此条工作经历信息吗?', '提示', {
				confirmButtonText: '确定',
				cancelButtonText: '取消',
				type: 'warning'
			}).then(() => {
				this.workInfoList = this.workInfoList.filter(item => item.id !== id)
			}).catch(() => {

			});
		},
		handleAddWorkInfo(row) {
			const { id } = row
			let index = this.workInfoList.findIndex(item => item.id === row.id)
			if (index === -1) {
				// 不存在就新增
				this.workInfoList.push(row)
				this.activeNames[1].push(row.id)
			} else {
				// 存在就更新
				this.workInfoList[index] = row
			}
			if (!this.activeNames[1].includes(id)) {
				this.activeNames[1].push(id);
			}
			this.uploadKey = Date.now().toString();
		},
		handleGetWorkInfo() {
			enrollmentRegistrationService.findWorkInfo({
				userId: this.userId
			}).then(res => {
				this.workInfoList = res
			})
		},
		//培训经历处理
		addTraining() {
			this.$refs.TrainingInfo.init("add", null, this.userId)
		},
		editTraining(row) {
			this.$refs.TrainingInfo.init("edit", row, this.userId)
		},
		delTraining(id) {
			this.$confirm('确定删除此条培训经历信息吗?', '提示', {
				confirmButtonText: '确定',
				cancelButtonText: '取消',
				type: 'warning'
			}).then(() => {
				this.trainingInfoList = this.trainingInfoList.filter(item => item.id !== id)
			}).catch(() => {

			});
		},
		handleAddTrainingInfo(row) {
			const { id } = row;
			let index = this.trainingInfoList.findIndex(item => item.id === row.id)
			if (index === -1) {
				// 不存在就新增
				this.trainingInfoList.push(row)
			} else {
				// 存在就更新
				this.trainingInfoList[index] = row
			}

			if (!this.activeNames[2].includes(id)) {
				this.activeNames[2].push(id);
			}
			this.uploadKey = Date.now().toString();
		},
		handleGetTrainingInfo() {
			enrollmentRegistrationService.findTrainingInfo({
				userId: this.userId
			}).then(res => {
				this.trainingInfoList = res
			})
		},
		//资质证书处理
		addCertificate() {
			this.$refs.certificateInfo.init("add", null, this.userId)
		},
		editCertificate(row) {
			this.$refs.certificateInfo.init("edit", row, this.userId)
		},
		delCertificate(id) {
			this.$confirm('确定删除此条执业资格证书信息吗?', '提示', {
				confirmButtonText: '确定',
				cancelButtonText: '取消',
				type: 'warning'
			}).then(() => {
				this.certificateInfoList = this.certificateInfoList.filter(item => item.id !== id)
			}).catch(() => {

			});
		},
		handleAddCertificateInfo(row) {
			const { id } = row
			let index = this.certificateInfoList.findIndex(item => item.id === row.id)
			if (index === -1) {
				// 不存在就新增
				this.certificateInfoList.push(row)
			} else {
				// 存在就更新
				this.certificateInfoList[index] = row
			}
			if (!this.activeNames[3].includes(id)) {
				this.activeNames[3].push(id);
			}
			this.uploadKey = Date.now().toString();
		},
		handleGetCertificateInfo() {
			enrollmentRegistrationService.findCertificateInfo({
				userId: this.userId
			}).then(res => {
				this.certificateInfoList = res
			})
		},
		//职称证书处理
		addSkill() {
			this.$refs.skillInfo.init("add", null, this.userId)
		},
		editSkill(row) {
			this.$refs.skillInfo.init("edit", row, this.userId)
		},
		delSkill(id) {
			this.$confirm('确定删除此条职称证书信息吗?', '提示', {
				confirmButtonText: '确定',
				cancelButtonText: '取消',
				type: 'warning'
			}).then(() => {
				this.skillInfoList = this.skillInfoList.filter(item => item.id !== id)
			}).catch(() => {

			});
		},
		handleAddSkillInfo(row) {
			const { id } = row
			let index = this.skillInfoList.findIndex(item => item.id === id)
			if (index === -1) {
				// 不存在就新增
				this.skillInfoList.push(row)
			} else {
				// 存在就更新
				this.skillInfoList[index] = row
			}
			if (!this.activeNames[4].includes(id)) {
				this.activeNames[4].push(id);
			}
			this.uploadKey = Date.now().toString();
		},
		handleGetSkillInfo() {
			enrollmentRegistrationService.findSkillInfo({
				userId: this.userId
			}).then(res => {
				this.skillInfoList = res
			})
		},
		//外语语种处理
		addLanguage() {
			this.$refs.languageInfo.init("add", null, this.userId)
		},
		editLanguage(row) {
			this.$refs.languageInfo.init("edit", row, this.userId)
		},
		delLanguage(id) {
			this.$confirm('确定删除此条外语语种信息吗?', '提示', {
				confirmButtonText: '确定',
				cancelButtonText: '取消',
				type: 'warning'
			}).then(() => {
				this.languageInfoList = this.languageInfoList.filter(item => item.id !== id)
			}).catch(() => {

			});
		},
		handleAddLanguageInfo(row) {
			const { id } = row
			let index = this.languageInfoList.findIndex(item => item.id === id)
			if (index === -1) {
				// 不存在就新增
				this.languageInfoList.push(row)
			} else {
				// 存在就更新
				this.languageInfoList[index] = row
			}
			if (!this.activeNames[5].includes(id)) {
				this.activeNames[5].push(id);
			}
			this.uploadKey = Date.now().toString();
		},
		handleGetLanguageInfo() {
			enrollmentRegistrationService.findLanguageInfo({
				userId: this.userId
			}).then(res => {
				this.languageInfoList = res
			})
		},
		//家庭情况处理
		addFamily() {
			this.$refs.familyInfo.init("add", null, this.userId)
		},
		editFamily(row) {
			this.$refs.familyInfo.init("edit", row, this.userId)
		},
		delFamily(id) {
			this.$confirm('确定删除此条家庭情况信息吗?', '提示', {
				confirmButtonText: '确定',
				cancelButtonText: '取消',
				type: 'warning'
			}).then(() => {
				this.familyInfoList = this.familyInfoList.filter(item => item.id !== id)
			}).catch(() => {

			});
		},
		handleAddFamilyInfo(row) {
			const { id } = row
			let index = this.familyInfoList.findIndex(item => item.id === row.id)
			if (index === -1) {
				// 不存在就新增
				this.familyInfoList.push(row)
			} else {
				// 存在就更新
				this.familyInfoList[index] = row
			}
			if (!this.activeNames[6].includes(id)) {
				this.activeNames[6].push(id);
			}
			this.uploadKey = Date.now().toString();
		},
		handleGetFamilyInfo(row) {
			enrollmentRegistrationService.findFamilyInfo({
				userId: this.userId
			}).then(res => {
				this.familyInfoList = res
			})
		},
		//表彰与奖励处理
		addReward() {
			this.$refs.rewardInfo.init("add", null, this.userId)
		},
		editReward(row) {
			this.$refs.rewardInfo.init("edit", row, this.userId)
		},
		delReward(id) {
			this.$confirm('确定删除此条奖项信息吗?', '提示', {
				confirmButtonText: '确定',
				cancelButtonText: '取消',
				type: 'warning'
			}).then(() => {
				this.rewardInfoList = this.rewardInfoList.filter(item => item.id !== id)
			}).catch(() => {

			});
		},
		handleAddRewardInfo(row) {
			const { id } = row
			let index = this.rewardInfoList.findIndex(item => item.id === row.id)
			if (index === -1) {
				// 不存在就新增
				this.rewardInfoList.push(row)
			} else {
				// 存在就更新
				this.rewardInfoList[index] = row
			}
			if (!this.activeNames[7].includes(id)) {
				this.activeNames[7].push(id);
			}
			this.uploadKey = Date.now().toString();
		},
		handleGetRewardInfo() {
			enrollmentRegistrationService.findRewardInfo({
				userId: this.userId
			}).then(res => {
				this.rewardInfoList = res
			})
		},
		changeType(value, row) {

			if (value === '1' || value === '2') {
				let obj = this.$dictUtils.getDictList('sys_cert_profession_build').find(item => {
					return item.value == row.profession
				})
				if (obj) {
					row.profession = obj.label
				}
			} else if (value === '3' || value === '4') {
				let obj = this.$dictUtils.getDictList('sys_cert_profession_cost').find(item => {
					return item.value == row.profession
				})
				if (obj) {
					row.profession = obj.label
				}
			} else if (value === '5') {
				let obj = this.$dictUtils.getDictList('sys_cert_profession_supervision').find(item => {
					return item.value == row.profession
				})
				if (obj) {
					row.profession = obj.label
				}
			} else if (value === '6') {
				let obj = this.$dictUtils.getDictList('sys_cert_profession_accounting').find(item => {
					return item.value == row.profession
				})
				if (obj) {
					row.profession = obj.label
				}
			}
		},
		handleRevoke() {

			this.$confirm('确定要撤回审批吗?', '提示', {
				confirmButtonText: '确定',
				cancelButtonText: '取消',
				type: 'warning'
			}).then(() => {
				this.loading = true
				processService.revokeProcIns(this.procInsId).then(res => {
					this.generalForm.idCardFront = this.$refs.idCardFront.getDataList()
					this.generalForm.idCardBack = this.$refs.idCardBack.getDataList()
					this.generalForm.email = this.concatForm.email
					this.generalForm.eduInfoList = this.eduInfoList
					this.generalForm.workInfoList = this.workInfoList
					this.generalForm.certificateInfoList = this.certificateInfoList
					this.generalForm.skillInfoList = this.skillInfoList
					this.generalForm.rewardInfoList = this.rewardInfoList
					this.generalForm.familyInfoList = this.familyInfoList
					this.generalForm.trainingInfoList = this.trainingInfoList
					this.generalForm.languageInfoList = this.languageInfoList
					enrollmentRegistrationService.updateStatusByIdUserInfo(this.generalForm).then((data) => {
						this.close()
						this.$message.success(data.msg)
						this.$refs.idCardBack.clearUpload()
						this.$refs.idCardFront.clearUpload()
						this.getDataInfo(this.userInfo.id)
						this.loading = false
					}).catch(() => {
						this.loading = false
					})
				})
			}).catch(() => {
				this.loading = false

			});

		}

	},
};
</script>

<style lang="less">
.userInfo {
	padding: 8px 12px;

	.aside {
		width: 340px;
		margin-right: 20px;
	}

	.el-card__header {
		padding: calc(var(--el-card-padding) - 2px) var(--el-card-padding);
		border-bottom: 1px solid var(--el-card-border-color);
		box-sizing: border-box;
	}

	.person-bg {
		color: rgb(24, 144, 255);
		background-color: rgb(230, 247, 255);
		width: 24px;
		height: 24px;
		border-radius: 50%;
		text-align: center;
		vertical-align: middle;
		display: inline-block;
	}

	.person-text {
		font-size: 15px;
		margin-left: 5px;
		font-weight: 400;
	}
}

.adminui-topbar+.userInfo {
	padding: 12px 12px 8px 12px;
}

/deep/ .el-collapse-item__header {
	font-size: 16px !important;
	order: -1;
}

.collapseTitle {
	width: 100%;
	display: flex;
	align-items: center;
	order: 1;
}

.card-info {
	margin-bottom: 20px;
}
</style>
