12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182 |
- <template>
- <el-container class="userInfo">
- <el-aside class="aside">
- <el-card shadow="never" body-style="height:600px">
- <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:600px" 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-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" 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;"> | </span>
- <span style="font-size: 14px;"> {{
- handleDateFormatter(item.startDate) }}</span>
- <span
- style="color: #b0b0b0;font-size: 12px;"> 至 </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;"> | </span>
- <span style="font-size: 14px;"> {{
- handleDateFormatter(item.startDate) }}</span>
- <span
- style="color: #b0b0b0;font-size: 12px;"> 至 </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="名称:">{{ item.name
- }}</el-descriptions-item>
- <el-descriptions-item label="掌握程度:">{{ item.proficiency
- }}</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 :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="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>
- <!– <el-form-item>
- <el-button type="primary" @click="submitConcatForm()">保存</el-button>
- </el-form-item> –>
- </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: []
- };
- },
- 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) {
- 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) {
- console.log(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
- }
- 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) {
- let index = this.workInfoList.findIndex(item => item.id === row.id)
- if (index === -1) {
- // 不存在就新增
- this.workInfoList.push(row)
- } else {
- // 存在就更新
- this.workInfoList[index] = row
- }
- 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) {
- let index = this.trainingInfoList.findIndex(item => item.id === row.id)
- if (index === -1) {
- // 不存在就新增
- this.trainingInfoList.push(row)
- } else {
- // 存在就更新
- this.trainingInfoList[index] = row
- }
- 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) {
- let index = this.certificateInfoList.findIndex(item => item.id === row.id)
- if (index === -1) {
- // 不存在就新增
- this.certificateInfoList.push(row)
- } else {
- // 存在就更新
- this.certificateInfoList[index] = row
- }
- 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) {
- let index = this.skillInfoList.findIndex(item => item.id === row.id)
- if (index === -1) {
- // 不存在就新增
- this.skillInfoList.push(row)
- } else {
- // 存在就更新
- this.skillInfoList[index] = row
- }
- 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) {
- let index = this.languageInfoList.findIndex(item => item.id === row.id)
- if (index === -1) {
- // 不存在就新增
- this.languageInfoList.push(row)
- } else {
- // 存在就更新
- this.languageInfoList[index] = row
- }
- 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) {
- let index = this.familyInfoList.findIndex(item => item.id === row.id)
- if (index === -1) {
- // 不存在就新增
- this.familyInfoList.push(row)
- } else {
- // 存在就更新
- this.familyInfoList[index] = row
- }
- 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) {
- console.log(row);
- let index = this.rewardInfoList.findIndex(item => item.id === row.id)
- if (index === -1) {
- // 不存在就新增
- this.rewardInfoList.push(row)
- } else {
- // 存在就更新
- this.rewardInfoList[index] = row
- }
- 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
- }
- }
- },
- },
- };
- </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>
|