UserInfo.vue 143 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063
  1. <template>
  2. <el-container class="userInfo">
  3. <el-aside class="aside">
  4. <el-card shadow="never" body-style="height:700px">
  5. <template #header>
  6. <div class="card-header">
  7. <span>
  8. <div class="person-bg">
  9. <el-icon size="14"><user-filled></user-filled></el-icon>
  10. </div>
  11. <label class="person-text">基本信息</label>
  12. </span>
  13. </div>
  14. </template>
  15. <div class="user-info">
  16. <div class="user-info-top">
  17. <el-avatar :size="80" :src="userInfo.photo"></el-avatar>
  18. <h2>{{ userInfo.name || "-" }}</h2>
  19. <p>{{ userInfo.sign || "无签名" }}</p>
  20. <el-button type="primary" round icon="collection-tag">{{
  21. userInfo.loginName
  22. }}</el-button>
  23. </div>
  24. <div class="user-info-main">
  25. <el-descriptions :column="1">
  26. <el-descriptions-item>
  27. <template #label>
  28. <el-icon :size="14">
  29. <Iphone />
  30. </el-icon>
  31. </template>
  32. {{ userInfo.mobile }}
  33. </el-descriptions-item>
  34. <el-descriptions-item>
  35. <template #label>
  36. <el-icon :size="14">
  37. <youjian />
  38. </el-icon>
  39. </template>
  40. {{ userInfo.email }}
  41. </el-descriptions-item>
  42. <el-descriptions-item>
  43. <template #label>
  44. <el-icon :size="14">
  45. <location />
  46. </el-icon>
  47. </template>
  48. {{ userInfo.companyDTO?.name }}
  49. </el-descriptions-item>
  50. <el-descriptions-item>
  51. <template #label>
  52. <el-icon :size="14"><office-building /></el-icon>
  53. </template>
  54. {{ userInfo.officeDTO?.name }}
  55. </el-descriptions-item>
  56. <el-descriptions-item>
  57. <template #label>
  58. <el-icon :size="14">
  59. <coin />
  60. </el-icon>
  61. </template>
  62. {{ userInfo.roleNames }}
  63. </el-descriptions-item>
  64. </el-descriptions>
  65. </div>
  66. </div>
  67. </el-card>
  68. </el-aside>
  69. <el-main style="padding: 0">
  70. <el-card shadow="never" body-style="height:700px" v-loading="loading">
  71. <template #header>
  72. <div class="card-header">
  73. <span>
  74. <div class="person-bg">
  75. <el-icon size="14">
  76. <bianji></bianji>
  77. </el-icon>
  78. </div>
  79. <label class="person-text">资料修改</label>
  80. </span>
  81. <div style="float: right;display: flex;justify-content: center;align-items: center;">
  82. <el-button type="primary" @click="submitUserInfo"
  83. v-if="auditStatus != 2 && auditStatus != 4">提交审批</el-button>
  84. <el-tag size="large" style="margin-left: 10px;font-size: 12px; " v-if="auditStatus == 5"
  85. type="success">
  86. <span>审核通过,修改成功</span>
  87. </el-tag>
  88. <el-button type="primary" @click="submitUserInfo"
  89. v-else-if="auditStatus == 4">重新提交</el-button>
  90. <el-popover placement="left" :width="400" trigger="hover">
  91. <template #reference>
  92. <el-button style="margin-left: 10px;" v-if="auditStatus == 2"
  93. type="primary">审批中</el-button>
  94. </template>
  95. <!-- <el-table :data="flowData" ref="flowRef" style="width: 100%;"
  96. highlight-current-row="true">
  97. <el-table-column property="comment.status" label="节点" align="center" />
  98. <el-table-column property="assigneeName" label="审核人" align="center" />
  99. </el-table> -->
  100. <el-timeline style="max-width: 600px" v-if="flowData && flowData.length">
  101. <el-timeline-item v-for="(activity, index) in flowData" :key="index"
  102. :color="index === flowData.length - 1 ? '#0bbd87' : '#dcdfe6'"
  103. :timestamp="activity.histIns.startTime">
  104. 状态:{{ activity.comment.status }}<br />
  105. 审批人:{{ activity.assigneeName }}<br />
  106. </el-timeline-item>
  107. </el-timeline>
  108. <el-result v-else icon="info" title="暂未查询到审批信息">
  109. <template #sub-title>
  110. <span>请刷新后重试</span>
  111. </template>
  112. <template #extra>
  113. </template>
  114. </el-result>
  115. </el-popover>
  116. <el-button style="margin-left: 10px;" v-if="auditStatus == 2" type="warning"
  117. @click="handleRevoke">撤回</el-button>
  118. <el-popover width="300" class="box-item" title="" :content="rejectMessage"
  119. placement="top-start">
  120. <template #reference>
  121. <el-tag size="large" style="margin-left: 10px; max-width: 200px;font-size: 12px;"
  122. v-if="auditStatus == 4 && this.procInsId" type="danger">
  123. <span>已驳回,原因:</span>
  124. <span style="
  125. display: inline-block;
  126. vertical-align: bottom;
  127. max-width: 50px;
  128. overflow: hidden;
  129. white-space: nowrap;
  130. text-overflow: ellipsis;
  131. ">
  132. {{ rejectMessage }}
  133. </span>
  134. </el-tag>
  135. </template>
  136. </el-popover>
  137. </div>
  138. </div>
  139. </template>
  140. <el-tabs tab-position="top" v-model="activeName">
  141. <el-form :model="generalForm" ref="generalForm" label-width="130px" :disabled="auditStatus == 2">
  142. <el-tab-pane label="基本信息" name="basicInfo">
  143. <el-row :gutter="26">
  144. <el-col :span="12">
  145. <!-- :style="generalForm.status == 1 ? `--el-input-text-color:red` : ''" -->
  146. <el-form-item label="姓名" prop="name"
  147. :rules="[{ required: true, message: '姓名不能为空', trigger: 'blur' }]">
  148. <el-input v-model="generalForm.name"></el-input>
  149. </el-form-item>
  150. </el-col>
  151. <el-col :span="12">
  152. <el-form-item label="身份证号码" prop="idCard"
  153. :rules="[{ required: true, validator: validator.isCardId, trigger: 'blur' }]">
  154. <el-input v-model="generalForm.idCard"
  155. @blur="idCardOnly(generalForm.idCard, generalForm.id)"></el-input>
  156. </el-form-item>
  157. </el-col>
  158. <el-col :span="12">
  159. <el-form-item label="性别" prop="sex" :rules="[
  160. { required: true, message: '性别不能为空', trigger: 'change' }
  161. ]">
  162. <el-radio-group :disabled="true" v-model="generalForm.sex">
  163. <el-radio v-for="item in $dictUtils.getDictList('sex')" :label="item.value"
  164. :key="item.value">{{ item.label
  165. }}</el-radio>
  166. </el-radio-group>
  167. </el-form-item>
  168. </el-col>
  169. <el-col :span="12">
  170. <el-form-item label="年龄" prop="age"
  171. :rules="[{ required: true, message: '年龄不能为空', trigger: 'change' }]">
  172. <el-input :disabled="true" v-model="generalForm.age" type="number"></el-input>
  173. </el-form-item>
  174. </el-col>
  175. <el-col :span="12">
  176. <el-form-item label="出生日期" prop="birthday" :rules="[
  177. { required: true, message: '请填写出生日期', trigger: 'blur' }
  178. ]">
  179. <el-date-picker :disabled="true" style="width: 100%"
  180. v-model="generalForm.birthday" value-format="YYYY-MM-DD" placeholder="选择日期">
  181. </el-date-picker>
  182. </el-form-item>
  183. </el-col>
  184. <el-col :span="12">
  185. <el-form-item label="政治面貌" prop="politicalOutlook" :rules="[]">
  186. <!-- <el-input v-model="generalForm.politicalOutlook"></el-input>-->
  187. <el-select v-model="generalForm.politicalOutlook" placeholder="请选择政治面貌"
  188. style="width:100%;">
  189. <el-option v-for="item in $dictUtils.getDictList('political_outlook')"
  190. :key="item.value" :label="item.label" :value="item.value">
  191. </el-option>
  192. </el-select>
  193. </el-form-item>
  194. </el-col>
  195. <!-- <el-col :span="12">
  196. <el-form-item label="籍贯" prop="nativePlace" :rules="[]">
  197. <el-input v-model="generalForm.nativePlace"></el-input>
  198. </el-form-item>
  199. </el-col>-->
  200. <el-col :span="12">
  201. <el-form-item label="籍贯" prop="nativePlace" :rules="[
  202. { required: true, message: '籍贯不能为空', trigger: 'change' }
  203. ]">
  204. <SelectTree ref="areaTree" :props="{
  205. value: 'id', // ID字段名
  206. label: 'name', // 显示名称
  207. children: 'children' // 子级字段名
  208. }" url="/system-server/sys/area/treeData" :value="generalForm.nativePlace" :clearable="true" size="large"
  209. :accordion="true"
  210. @getValue="(value) => { generalForm.nativePlace = value }" />
  211. </el-form-item>
  212. </el-col>
  213. <!-- <el-col :span="12">
  214. <el-form-item label="民族" prop="nation" :rules="[]">
  215. <el-input v-model="generalForm.nation"></el-input>
  216. </el-form-item>
  217. </el-col>-->
  218. <el-col :span="12">
  219. <el-form-item label="民族" prop="nation" :rules="[]">
  220. <el-select v-model="generalForm.nation" placeholder="请选择民族" clearable
  221. style="width: 100%;">
  222. <el-option v-for="item in $dictUtils.getDictList('sys_nation')"
  223. :key="item.value" :label="item.label" :value="item.value">
  224. </el-option>
  225. </el-select>
  226. </el-form-item>
  227. </el-col>
  228. <el-col :span="12">
  229. <el-form-item label="婚姻状况" prop="maritalStatus" :rules="[]">
  230. <el-select v-model="generalForm.maritalStatus" placeholder="请选择婚姻状况" clearable
  231. style="width: 100%;">
  232. <el-option v-for="item in $dictUtils.getDictList('marital_status')"
  233. :key="item.value" :label="item.label" :value="item.value">
  234. </el-option>
  235. </el-select>
  236. </el-form-item>
  237. </el-col>
  238. <el-col :span="12">
  239. <el-form-item label="邮箱" :rules="[
  240. {
  241. type: 'email',
  242. message: '请输入正确的邮箱地址',
  243. trigger: 'blur',
  244. },
  245. ]" prop="email">
  246. <el-input @blur="checkEmail(concatForm.email)"
  247. v-model="concatForm.email"></el-input>
  248. </el-form-item>
  249. </el-col>
  250. <el-col :span="12">
  251. <el-form-item label="联系电话" prop="mobilePhone"
  252. :rules="[{ required: true, message: '联系电话不能为空', trigger: 'change' }]">
  253. <el-input v-model="generalForm.mobilePhone"
  254. @blur="mobilePhoneOnly(generalForm.mobilePhone)"></el-input>
  255. </el-form-item>
  256. </el-col>
  257. <!-- <el-col :span="12">
  258. <el-form-item label="家庭住址" prop="homeAddress" :rules="[]">
  259. <el-input v-model="generalForm.homeAddress"></el-input>
  260. </el-form-item>
  261. </el-col> -->
  262. <el-col :span="12">
  263. <el-form-item label="常住住址" prop="permanentAddress" :rules="[]">
  264. <el-input v-model="generalForm.permanentAddress"></el-input>
  265. </el-form-item>
  266. </el-col>
  267. <el-col :span="12">
  268. <el-form-item label="参加工作日期" prop="joinWorkDate" :rules="[
  269. ]">
  270. <el-date-picker style="width: 100%" v-model="generalForm.joinWorkDate"
  271. value-format="x" placeholder="">
  272. </el-date-picker>
  273. </el-form-item>
  274. </el-col>
  275. <el-col :span="12">
  276. <el-form-item label="从事行业日期" prop="joinIndustryDate" :rules="[
  277. ]">
  278. <el-date-picker style="width: 100%" v-model="generalForm.joinIndustryDate"
  279. value-format="x" placeholder="">
  280. </el-date-picker>
  281. </el-form-item>
  282. </el-col>
  283. <!--
  284. <el-col :span="24">
  285. <el-form-item label="个人简介" prop="remarks" :rules="[]">
  286. <el-input type="textarea" maxlength="200" show-word-limit
  287. v-model="generalForm.remarks"></el-input>
  288. </el-form-item>
  289. </el-col> -->
  290. </el-row>
  291. <el-row :gutter="26">
  292. <el-col :span="12">
  293. <el-form-item class="star-require" label="身份证人像面" prop="idCardFront" :rules="[]">
  294. <UpLoadComponent ref="idCardFront"></UpLoadComponent>
  295. </el-form-item>
  296. </el-col>
  297. <el-col :span="12">
  298. <el-form-item class="star-require" label="身份证国徽面" prop="idCardBack" :rules="[]">
  299. <UpLoadComponent ref="idCardBack"></UpLoadComponent>
  300. </el-form-item>
  301. </el-col>
  302. </el-row>
  303. <el-row>
  304. <el-col :span="10" :offset="14" style="display: flex;justify-content: flex-end;">
  305. <el-tag size="large"
  306. style="border-color:#e6a23c;background-color: #e6a23c;color: #fff !important;;margin-right: 10px;"
  307. v-if="generalForm.status == 1" type="warning">
  308. 暂存中
  309. </el-tag>
  310. <el-button type="primary" @click="updateInfoTemporary"
  311. v-if="auditStatus != 2">暂存</el-button>
  312. </el-col>
  313. </el-row>
  314. </el-tab-pane>
  315. <!-- <el-tab-pane label="学历信息">
  316. <el-row :gutter="26">
  317. <el-col :span="12">
  318. <el-form-item label="毕业院校" prop="graduatedFrom" :rules="[]">
  319. <el-input v-model="generalForm.graduatedFrom"></el-input>
  320. </el-form-item>
  321. </el-col>
  322. <el-col :span="12">
  323. <el-form-item label="专业" prop="speciality" :rules="[]">
  324. <el-input v-model="generalForm.speciality"></el-input>
  325. </el-form-item>
  326. </el-col>
  327. <el-col :span="12">
  328. <el-form-item label="开始时间" prop="startTime" :rules="[
  329. ]">
  330. <el-date-picker style="width: 100%" v-model="generalForm.startTime"
  331. value-format="YYYY-MM-DD" placeholder="选择日期">
  332. </el-date-picker>
  333. </el-form-item>
  334. </el-col>
  335. <el-col :span="12">
  336. <el-form-item label="毕业时间" prop="endTime" :rules="[
  337. ]">
  338. <el-date-picker style="width: 100%" v-model="generalForm.endTime"
  339. value-format="YYYY-MM-DD" placeholder="选择日期">
  340. </el-date-picker>
  341. </el-form-item>
  342. </el-col>
  343. <el-col :span="12">
  344. <el-form-item label="学历" prop="education" :rules="[]">
  345. <el-select v-model="generalForm.education" placeholder="请选择学历" clearable
  346. style="width: 100%;">
  347. <el-option v-for="item in $dictUtils.getDictList('education')"
  348. :key="item.value" :label="item.label" :value="item.value">
  349. </el-option>
  350. </el-select>
  351. </el-form-item>
  352. </el-col>
  353. <el-col :span="12">
  354. <el-form-item label="学历性质" prop="educationNature" :rules="[]">
  355. <el-select v-model="generalForm.educationNature" placeholder="请选择学历性质" clearable
  356. style="width: 100%;">
  357. <el-option v-for="item in $dictUtils.getDictList('education_nature')"
  358. :key="item.value" :label="item.label" :value="item.value">
  359. </el-option>
  360. </el-select>
  361. </el-form-item>
  362. </el-col>
  363. <el-col :span="12">
  364. <el-form-item label="是否毕业" prop="graduatedOrNot" :rules="[]">
  365. <el-radio-group v-model="generalForm.graduatedOrNot">
  366. <el-radio v-for="item in $dictUtils.getDictList('graduated_or_not')"
  367. :label="item.value" :key="item.value">{{ item.label }}</el-radio>
  368. </el-radio-group>
  369. </el-form-item>
  370. </el-col>
  371. <el-col :span="12">
  372. <el-form-item label="英语等级" prop="englishLevel" :rules="[]">
  373. <el-select v-model="generalForm.englishLevel" placeholder="请选择英语等级" clearable
  374. style="width: 100%;">
  375. <el-option v-for="item in $dictUtils.getDictList('english_level')"
  376. :key="item.value" :label="item.label" :value="item.value">
  377. </el-option>
  378. </el-select>
  379. </el-form-item>
  380. </el-col>
  381. <el-col :span="12">
  382. <el-form-item label="计算机等级" prop="ncre" :rules="[]">
  383. <el-select v-model="generalForm.ncre" placeholder="请选择英语等级" clearable
  384. style="width: 100%;">
  385. <el-option v-for="item in $dictUtils.getDictList('computer_level')"
  386. :key="item.value" :label="item.label" :value="item.value">
  387. </el-option>
  388. </el-select>
  389. </el-form-item>
  390. </el-col>
  391. </el-row>
  392. </el-tab-pane> -->
  393. <el-tab-pane label="部门信息">
  394. <el-row :gutter="26">
  395. <el-col :span="24">
  396. <el-form-item label="所属部门" prop="department" :rules="[
  397. ]">
  398. <SelectTree ref="officeTree" :disabled="true" :props="{
  399. value: 'id', // ID字段名
  400. label: 'name', // 显示名称
  401. children: 'children' // 子级字段名
  402. }" :url="`/system-server/sys/office/treeData?type=2`" :value="generalForm.department" :accordion="true"
  403. size="default" @getValue="(value) => { generalForm.department = value }" />
  404. </el-form-item>
  405. </el-col>
  406. <el-col :span="24">
  407. <el-form-item label="员工类型" prop="onJobStatus" :rules="[
  408. ]">
  409. <!-- <el-input v-model="generalForm.politicalOutlook"></el-input>-->
  410. <el-select :disabled="true" v-model="generalForm.onJobStatus"
  411. placeholder="请选择员工类型" style="width:100%;">
  412. <el-option v-for="item in $dictUtils.getDictList('on_job_status')"
  413. :key="item.value" :label="item.label" :value="item.value">
  414. </el-option>
  415. </el-select>
  416. </el-form-item>
  417. </el-col>
  418. <!-- <el-col :span="24">
  419. <el-form-item label="岗位" prop="postIdList" :rules="[]">
  420. <el-select :disabled="true" v-model="generalForm.postIdList" style="width: 100%"
  421. multiple placeholder="请选择">
  422. <el-option v-for="item in postList" :key="item.id" :label="item.name"
  423. :value="item.id">
  424. </el-option>
  425. </el-select>
  426. </el-form-item>
  427. </el-col> -->
  428. <!-- <el-col :span="24">
  429. <el-form-item label="角色" prop="roleIdList"
  430. :rules="[{ required: true, message: '角色不能为空', trigger: 'change' }]">
  431. <el-select :disabled="true" v-model="generalForm.roleIdList" style="width: 100%"
  432. multiple placeholder="请选择">
  433. <el-option v-for="role in roleList" :key="role.id" :label="role.name"
  434. :value="role.id">
  435. </el-option>
  436. </el-select>
  437. </el-form-item>
  438. </el-col> -->
  439. <el-col :span="24">
  440. <el-form-item label="进所日期" prop="entryDate" :rules="[
  441. ]">
  442. <el-date-picker :disabled="true" style="width: 100%"
  443. v-model="generalForm.entryDate" value-format="YYYY-MM-DD"
  444. placeholder="选择日期">
  445. </el-date-picker>
  446. </el-form-item>
  447. </el-col>
  448. <el-col :span="24">
  449. <el-form-item label="合同开始日期" prop="contractStartDate" :rules="[
  450. ]">
  451. <el-date-picker :disabled="true" style="width: 100%"
  452. v-model="generalForm.contractStartDate" value-format="YYYY-MM-DD"
  453. placeholder="选择日期">
  454. </el-date-picker>
  455. </el-form-item>
  456. </el-col>
  457. <el-col :span="24">
  458. <el-form-item label="合同结束日期" prop="contractEndDate" :rules="[
  459. ]">
  460. <el-date-picker :disabled="true" style="width: 100%"
  461. v-model="generalForm.contractEndDate" value-format="YYYY-MM-DD"
  462. placeholder="选择日期">
  463. </el-date-picker>
  464. </el-form-item>
  465. </el-col>
  466. </el-row>
  467. </el-tab-pane>
  468. <!-- <el-tab-pane label="社保信息">
  469. <el-row :gutter="26" v-if="status === 'audit' || status === 'taskFormDetail'">
  470. <el-col :span="12">
  471. <el-form-item label="社保编号" prop="socialSecurityNumber" :rules="[]">
  472. <el-input v-model="generalForm.socialSecurityNumber" maxlength="10"
  473. @input="validateInput"></el-input>
  474. </el-form-item>
  475. </el-col>
  476. <el-col :span="12">
  477. <el-form-item label="社保银行卡号" prop="socialSecurityBankNumber" :rules="[]">
  478. <el-input v-model="generalForm.socialSecurityBankNumber"
  479. @change="checkBankNumber(generalForm.socialSecurityBankNumber)"
  480. maxlength="19"></el-input>
  481. </el-form-item>
  482. </el-col>
  483. <el-col :span="12">
  484. <el-form-item label="社保卡照片正面" prop="socialSecurityPictureFront" :rules="[]">
  485. <el-upload
  486. :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
  487. :limit="limitNum" :disabled="hideUploadEdit" list-type="picture-card"
  488. :auto-upload="true" :on-success="handleUploadSuccess"
  489. v-model:file-list="fileList">
  490. <el-icon>
  491. <Plus />
  492. </el-icon>
  493. <template #file="{ file }">
  494. <div>
  495. <img class="el-upload-list__item-thumbnail" :src="file.url"
  496. alt="" />
  497. <span class="el-upload-list__item-actions">
  498. <span class="el-upload-list__item-preview"
  499. @click="handlePictureCardPreview(file)">
  500. <el-icon><zoom-in /></el-icon>
  501. </span>
  502. <span v-if="!disabled" class="el-upload-list__item-delete"
  503. @click="handleDownload(file)">
  504. <el-icon>
  505. <Download />
  506. </el-icon>
  507. </span>
  508. <span v-if="!disabled" style="display:none;"
  509. class="el-upload-list__item-delete"
  510. @click="handleRemove(file, fileList)">
  511. <el-icon>
  512. <Delete />
  513. </el-icon>
  514. </span>
  515. </span>
  516. </div>
  517. </template>
  518. </el-upload>
  519. <el-dialog v-model="dialogVisible">
  520. <img w-full :src="generalForm.socialSecurityPictureFrontUrl"
  521. alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }" />
  522. </el-dialog>
  523. </el-form-item>
  524. </el-col>
  525. <el-col :span="12">
  526. <el-form-item label="社保卡照片反面" prop="socialSecurityPictureOpposite" :rules="[]">
  527. <el-upload
  528. :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
  529. :limit="limitNum" :disabled="hideUploadEdit2" list-type="picture-card"
  530. :auto-upload="true" :on-success="handleUploadSuccess2"
  531. v-model:file-list="fileList2">
  532. <el-icon>
  533. <Plus />
  534. </el-icon>
  535. <template #file="{ file }">
  536. <div>
  537. <img class="el-upload-list__item-thumbnail" :src="file.url"
  538. alt="" />
  539. <span class="el-upload-list__item-actions">
  540. <span class="el-upload-list__item-preview"
  541. @click="handlePictureCardPreview2(file)">
  542. <el-icon><zoom-in /></el-icon>
  543. </span>
  544. <span v-if="!disabled" class="el-upload-list__item-delete"
  545. @click="handleDownload2(file)">
  546. <el-icon>
  547. <Download />
  548. </el-icon>
  549. </span>
  550. <span v-if="!disabled" style="display:none;"
  551. class="el-upload-list__item-delete"
  552. @click="handleRemove2(file, fileList2)">
  553. <el-icon>
  554. <Delete />
  555. </el-icon>
  556. </span>
  557. </span>
  558. </div>
  559. </template>
  560. </el-upload>
  561. <el-dialog v-model="dialogVisible2">
  562. <img w-full :src="generalForm.socialSecurityPictureOppositeUrl"
  563. alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }" />
  564. </el-dialog>
  565. </el-form-item>
  566. </el-col>
  567. </el-row>
  568. <el-row :gutter="26" v-else>
  569. <el-col :span="12">
  570. <el-form-item label="社保编号" prop="socialSecurityNumber" :rules="[]">
  571. <el-input v-model="generalForm.socialSecurityNumber" maxlength="10"
  572. @input="validateInput"></el-input>
  573. </el-form-item>
  574. </el-col>
  575. <el-col :span="12">
  576. <el-form-item label="社保银行卡号" prop="socialSecurityBankNumber" :rules="[]">
  577. <el-input v-model="generalForm.socialSecurityBankNumber"
  578. @change="checkBankNumber(generalForm.socialSecurityBankNumber)"
  579. maxlength="19"></el-input>
  580. </el-form-item>
  581. </el-col>
  582. <el-col :span="12">
  583. <el-form-item label="社保卡照片正面" prop="socialSecurityPictureFront" :rules="[]">
  584. <el-upload
  585. :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
  586. :limit="limitNum" :disabled="hideUploadEdit" list-type="picture-card"
  587. :auto-upload="true" :on-success="handleUploadSuccess" :file-list="fileList">
  588. <el-icon>
  589. <Plus />
  590. </el-icon>
  591. <template #file="{ file }">
  592. <div>
  593. <img class="el-upload-list__item-thumbnail" :src="file.url"
  594. alt="" />
  595. <span class="el-upload-list__item-actions">
  596. <span class="el-upload-list__item-preview"
  597. @click="handlePictureCardPreview(file)">
  598. <el-icon><zoom-in /></el-icon>
  599. </span>
  600. <span v-if="!disabled" class="el-upload-list__item-delete"
  601. @click="handleDownload(file)">
  602. <el-icon>
  603. <Download />
  604. </el-icon>
  605. </span>
  606. <span v-if="!disabled" class="el-upload-list__item-delete"
  607. @click="handleRemove(file, fileList)">
  608. <el-icon>
  609. <Delete />
  610. </el-icon>
  611. </span>
  612. </span>
  613. </div>
  614. </template>
  615. </el-upload>
  616. <el-dialog v-model="dialogVisible">
  617. <img w-full :src="generalForm.socialSecurityPictureFrontUrl"
  618. alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }" />
  619. </el-dialog>
  620. </el-form-item>
  621. </el-col>
  622. <el-col :span="12">
  623. <el-form-item label="社保卡照片反面" prop="socialSecurityPictureOpposite" :rules="[]">
  624. <el-upload
  625. :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
  626. :limit="limitNum" :disabled="hideUploadEdit2" list-type="picture-card"
  627. :auto-upload="true" :on-success="handleUploadSuccess2"
  628. v-model:file-list="fileList2">
  629. <el-icon>
  630. <Plus />
  631. </el-icon>
  632. <template #file="{ file }">
  633. <div>
  634. <img class="el-upload-list__item-thumbnail" :src="file.url"
  635. alt="" />
  636. <span class="el-upload-list__item-actions">
  637. <span class="el-upload-list__item-preview"
  638. @click="handlePictureCardPreview2(file)">
  639. <el-icon><zoom-in /></el-icon>
  640. </span>
  641. <span v-if="!disabled" class="el-upload-list__item-delete"
  642. @click="handleDownload2(file)">
  643. <el-icon>
  644. <Download />
  645. </el-icon>
  646. </span>
  647. <span v-if="!disabled" class="el-upload-list__item-delete"
  648. @click="handleRemove2(file, fileList2)">
  649. <el-icon>
  650. <Delete />
  651. </el-icon>
  652. </span>
  653. </span>
  654. </div>
  655. </template>
  656. </el-upload>
  657. <el-dialog v-model="dialogVisible2">
  658. <img w-full :src="generalForm.socialSecurityPictureOppositeUrl"
  659. alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }" />
  660. </el-dialog>
  661. </el-form-item>
  662. </el-col>
  663. </el-row>
  664. </el-tab-pane>
  665. <el-tab-pane label="中信银行卡信息">
  666. <el-row :gutter="26">
  667. <el-col :span="12">
  668. <el-form-item label="中信银行卡号" prop="zxBankCardNumber">
  669. <el-input v-model="generalForm.zxBankCardNumber"
  670. @change="checkBankNumber(generalForm.zxBankCardNumber, 'zx')"
  671. maxlength="19"></el-input>
  672. </el-form-item>
  673. </el-col>
  674. <el-col :span="12">
  675. <el-form-item label="开户行" prop="zxAccountHolder">
  676. <el-input v-model="generalForm.zxAccountHolder"></el-input>
  677. </el-form-item>
  678. </el-col>
  679. <el-col :span="12">
  680. <el-form-item label="银行卡正面" prop="accountHolderFront">
  681. <el-upload
  682. :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
  683. :limit="limitNum" :disabled="bankHideUploadEdit" list-type="picture-card"
  684. :auto-upload="true" :on-success="bankHandleUploadSuccess"
  685. v-model:file-list="bankFileList">
  686. <el-icon>
  687. <Plus />
  688. </el-icon>
  689. <template #file="{ file }">
  690. <div>
  691. <img class="el-upload-list__item-thumbnail" :src="file.url"
  692. alt="" />
  693. <span class="el-upload-list__item-actions">
  694. <span class="el-upload-list__item-preview"
  695. @click="bankHandlePictureCardPreview(file)">
  696. <el-icon><zoom-in /></el-icon>
  697. </span>
  698. <span v-if="!disabled" class="el-upload-list__item-delete"
  699. @click="bankHandleDownload(file)">
  700. <el-icon>
  701. <Download />
  702. </el-icon>
  703. </span>
  704. <span v-if="!(method === 'view')"
  705. class="el-upload-list__item-delete"
  706. @click="bankHandleRemove(file, fileList)">
  707. <el-icon>
  708. <Delete />
  709. </el-icon>
  710. </span>
  711. </span>
  712. </div>
  713. </template>
  714. </el-upload>
  715. <el-dialog v-model="bankDialogVisible">
  716. <img w-full :src="generalForm.accountHolderFrontUrl" alt="Preview Image"
  717. :style="{ maxWidth: '100%', maxHeight: '100%' }" />
  718. </el-dialog>
  719. </el-form-item>
  720. </el-col>
  721. <el-col :span="12">
  722. <el-form-item label="银行卡反面" prop="accountHolderOpposite">
  723. <el-upload
  724. :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
  725. :limit="limitNum" :disabled="bankHideUploadEdit2" list-type="picture-card"
  726. :auto-upload="true" :on-success="bankHandleUploadSuccess2"
  727. v-model:file-list="bankFileList2">
  728. <el-icon>
  729. <Plus />
  730. </el-icon>
  731. <template #file="{ file }">
  732. <div>
  733. <img class="el-upload-list__item-thumbnail" :src="file.url"
  734. alt="" />
  735. <span class="el-upload-list__item-actions">
  736. <span class="el-upload-list__item-preview"
  737. @click="bankHandlePictureCardPreview2(file)">
  738. <el-icon><zoom-in /></el-icon>
  739. </span>
  740. <span v-if="!disabled" class="el-upload-list__item-delete"
  741. @click="bankHandleDownload2(file)">
  742. <el-icon>
  743. <Download />
  744. </el-icon>
  745. </span>
  746. <span v-if="!(method === 'view')"
  747. class="el-upload-list__item-delete"
  748. @click="bankHandleRemove2(file, fileList)">
  749. <el-icon>
  750. <Delete />
  751. </el-icon>
  752. </span>
  753. </span>
  754. </div>
  755. </template>
  756. </el-upload>
  757. <el-dialog v-model="bankDialogVisible2">
  758. <img w-full :src="generalForm.accountHolderOppositeUrl" alt="Preview Image"
  759. :style="{ maxWidth: '100%', maxHeight: '100%' }" />
  760. </el-dialog>
  761. </el-form-item>
  762. </el-col>
  763. </el-row>
  764. </el-tab-pane>
  765. <el-tab-pane label="招商银行卡信息">
  766. <el-row :gutter="26">
  767. <el-col :span="12">
  768. <el-form-item label="招商银行卡号" prop="gsBankCardNumber">
  769. <el-input v-model="generalForm.gsBankCardNumber"
  770. @change="checkBankNumber(generalForm.gsBankCardNumber, 'gs')"
  771. maxlength="19"></el-input>
  772. </el-form-item>
  773. </el-col>
  774. <el-col :span="12">
  775. <el-form-item label="开户行" prop="gsAccountHolder">
  776. <el-input v-model="generalForm.gsAccountHolder"></el-input>
  777. </el-form-item>
  778. </el-col>
  779. <el-col :span="12">
  780. <el-form-item label="银行卡正面" prop="gsAccountHolderFront">
  781. <el-upload
  782. :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
  783. :limit="limitNum" :disabled="gsHideUploadEdit" list-type="picture-card"
  784. :auto-upload="true" :on-success="gsHandleUploadSuccess"
  785. v-model:file-list="gsFileList">
  786. <el-icon>
  787. <Plus />
  788. </el-icon>
  789. <template #file="{ file }">
  790. <div>
  791. <img class="el-upload-list__item-thumbnail" :src="file.url"
  792. alt="" />
  793. <span class="el-upload-list__item-actions">
  794. <span class="el-upload-list__item-preview"
  795. @click="gsHandlePictureCardPreview(file)">
  796. <el-icon><zoom-in /></el-icon>
  797. </span>
  798. <span v-if="!disabled" class="el-upload-list__item-delete"
  799. @click="gsHandleDownload(file)">
  800. <el-icon>
  801. <Download />
  802. </el-icon>
  803. </span>
  804. <span v-if="!(method === 'view')"
  805. class="el-upload-list__item-delete"
  806. @click="gsHandleRemove(file, fileList)">
  807. <el-icon>
  808. <Delete />
  809. </el-icon>
  810. </span>
  811. </span>
  812. </div>
  813. </template>
  814. </el-upload>
  815. <el-dialog v-model="gsDialogVisible">
  816. <img w-full :src="generalForm.gsAccountHolderFrontUrl" alt="Preview Image"
  817. :style="{ maxWidth: '100%', maxHeight: '100%' }" />
  818. </el-dialog>
  819. </el-form-item>
  820. </el-col>
  821. <el-col :span="12">
  822. <el-form-item label="银行卡反面" prop="gsAccountHolderOpposite">
  823. <el-upload
  824. :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
  825. :limit="limitNum" :disabled="gsHideUploadEdit2" list-type="picture-card"
  826. :auto-upload="true" :on-success="gsHandleUploadSuccess2"
  827. v-model:file-list="gsFileList2">
  828. <el-icon>
  829. <Plus />
  830. </el-icon>
  831. <template #file="{ file }">
  832. <div>
  833. <img class="el-upload-list__item-thumbnail" :src="file.url"
  834. alt="" />
  835. <span class="el-upload-list__item-actions">
  836. <span class="el-upload-list__item-preview"
  837. @click="gsHandlePictureCardPreview2(file)">
  838. <el-icon><zoom-in /></el-icon>
  839. </span>
  840. <span v-if="!disabled" class="el-upload-list__item-delete"
  841. @click="gsHandleDownload2(file)">
  842. <el-icon>
  843. <Download />
  844. </el-icon>
  845. </span>
  846. <span v-if="!(method === 'view')"
  847. class="el-upload-list__item-delete"
  848. @click="gsHandleRemove2(file, fileList)">
  849. <el-icon>
  850. <Delete />
  851. </el-icon>
  852. </span>
  853. </span>
  854. </div>
  855. </template>
  856. </el-upload>
  857. <el-dialog v-model="gsDialogVisible2">
  858. <img w-full :src="generalForm.gsAccountHolderOppositeUrl"
  859. alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }" />
  860. </el-dialog>
  861. </el-form-item>
  862. </el-col>
  863. </el-row>
  864. </el-tab-pane> -->
  865. </el-form>
  866. <el-tab-pane label="教育经历">
  867. <el-card style="width: 100%;transition: all 0.3s ease;" shadow="hover" class="card-info">
  868. <template #header>
  869. <el-divider content-position="left"><i class="el-icon-document"></i> <span
  870. style="font-weight: 900; font-size: 16px; color: #606266;">教育经历</span>
  871. <el-divider direction="vertical" />
  872. <el-button type="primary" @click="addEdu()"
  873. :disabled="auditStatus == 2">新增</el-button>
  874. <el-divider direction="vertical" />
  875. <el-button :type="changeFlag[0] ? 'warning' : 'success'"
  876. @click="changeInfoList(0)">{{
  877. changeFlag[0] ? "收起" : "展开"
  878. }}</el-button>
  879. </el-divider>
  880. </template>
  881. <el-collapse-transition>
  882. <el-row :gutter="26" v-if="changeFlag[0]">
  883. <el-col :span="24">
  884. <el-collapse v-if="eduInfoList && eduInfoList.length > 0"
  885. v-model="activeNames[0]">
  886. <div style="padding: 0 30px;" v-for="(item, index) in eduInfoList">
  887. <el-collapse-item :name="item.id">
  888. <template #title="{ isActive }">
  889. <div :class="{
  890. collapseTitle: true,
  891. auditInfo: item.status == '1' ? true : false
  892. }">
  893. <el-tag
  894. style="border-color:#e6a23c;background-color: #e6a23c;color: #fff !important;;margin-right: 10px;"
  895. v-if="item.status == '1'" type="warning">
  896. 暂存中
  897. </el-tag>
  898. <span style="font-size: 16px;"> {{
  899. $dictUtils.getDictLabel("education",
  900. item.education, '-') + ' - ' +
  901. item.graduatedFrom +
  902. ' - ' + item.cultureMethod }}</span>
  903. <span
  904. style="color: #b0b0b0;font-size: 12px;">&nbsp;|&nbsp;</span>
  905. <span style="font-size: 14px;"> {{
  906. handleDateFormatter(item.startDate) }}</span>
  907. <span :style="{
  908. fontSize: '12px',
  909. color: item.status == '1' ? 'red' : '#b0b0b0'
  910. }">&nbsp;至&nbsp;</span>
  911. <span style="font-size: 14px;"> {{
  912. handleDateFormatter(item.endDate) }}</span>
  913. <el-tag v-if="item.isHighestEducation == 1" size="small"
  914. style="margin-left: 10px;">最高学历</el-tag>
  915. <div style="margin-left: auto;">
  916. <el-button type="text" @click.stop="editEdu(item)"
  917. :disabled="auditStatus == 2">修改</el-button>
  918. <el-button type="text" @click.stop="delEdu(item)"
  919. style="color: red;"
  920. :disabled="auditStatus == 2">删除</el-button>
  921. </div>
  922. </div>
  923. </template>
  924. <el-descriptions title="" border :column="2">
  925. <el-descriptions-item
  926. :class-name="item.status == '1' ? 'auditInfo' : ''"
  927. label="开始日期:">{{
  928. handleDateFormatter(item.startDate)
  929. }}</el-descriptions-item>
  930. <el-descriptions-item
  931. :class-name="item.status == '1' ? 'auditInfo' : ''"
  932. label="结束日期:">{{
  933. handleDateFormatter(item.endDate)
  934. }}</el-descriptions-item>
  935. <el-descriptions-item
  936. :class-name="item.status == '1' ? 'auditInfo' : ''"
  937. label="毕业院校:">{{
  938. item.graduatedFrom
  939. }}</el-descriptions-item>
  940. <!-- <el-descriptions-item label="其他毕业院校:">{{
  941. item.otherGraduatedFrom
  942. }}</el-descriptions-item> -->
  943. <el-descriptions-item
  944. :class-name="item.status == '1' ? 'auditInfo' : ''"
  945. label="专业:">{{
  946. item.speciality
  947. }}</el-descriptions-item>
  948. <el-descriptions-item
  949. :class-name="item.status == '1' ? 'auditInfo' : ''"
  950. label="学历:">{{
  951. $dictUtils.getDictLabel("education",
  952. item.education, '-')
  953. }}</el-descriptions-item>
  954. <el-descriptions-item
  955. :class-name="item.status == '1' ? 'auditInfo' : ''"
  956. label="学位:">{{
  957. $dictUtils.getDictLabel("degree", item.degree, '-')
  958. }}</el-descriptions-item>
  959. <el-descriptions-item
  960. :class-name="item.status == '1' ? 'auditInfo' : ''"
  961. label="是否最高学历:">
  962. <el-tag v-if="item.isHighestEducation == 1">是</el-tag>
  963. <el-tag type="warning" v-else>否</el-tag>
  964. </el-descriptions-item>
  965. <el-descriptions-item
  966. :class-name="item.status == '1' ? 'auditInfo' : ''"
  967. label="是否最高学位:">
  968. <el-tag v-if="item.isHighestDegree == 1">是</el-tag>
  969. <el-tag type="warning" v-else>否</el-tag>
  970. </el-descriptions-item>
  971. <el-descriptions-item
  972. :class-name="item.status == '1' ? 'auditInfo' : ''"
  973. label="学习形式:">{{
  974. $dictUtils.getDictLabel("learn_form",
  975. item.learnForms, '-')
  976. }}</el-descriptions-item>
  977. <el-descriptions-item
  978. :class-name="item.status == '1' ? 'auditInfo' : ''"
  979. label="毕业类型:">{{
  980. $dictUtils.getDictLabel("graduation_type",
  981. item.graduationType, '-')
  982. }}</el-descriptions-item>
  983. <!-- <el-descriptions-item label="培养方式:">{{ item.cultureMethod
  984. }}</el-descriptions-item> -->
  985. <!-- <el-descriptions-item label="专业描述:">{{
  986. item.specialityDesc
  987. }}</el-descriptions-item> -->
  988. <el-descriptions-item label="学历证明:">
  989. <AttachmentView :fileList="item.educationFile"
  990. :key="uploadKey">
  991. </AttachmentView>
  992. </el-descriptions-item>
  993. <el-descriptions-item label="学位证明:">
  994. <AttachmentView :fileList="item.degreeFile"
  995. :key="uploadKey">
  996. </AttachmentView>
  997. </el-descriptions-item>
  998. </el-descriptions>
  999. </el-collapse-item>
  1000. </div>
  1001. </el-collapse>
  1002. <el-empty image-size="80px"
  1003. style="margin-top: 0 !important;padding: 0 !important;" v-else
  1004. description="暂无教育经历"></el-empty>
  1005. </el-col>
  1006. </el-row>
  1007. </el-collapse-transition>
  1008. </el-card>
  1009. </el-tab-pane>
  1010. <el-tab-pane label="工作经历">
  1011. <el-card style="width: 100%" shadow="hover" class="card-info">
  1012. <template #header>
  1013. <el-divider content-position="left"><i class="el-icon-document"></i> <span
  1014. style="font-weight: 900; font-size: 16px; color: #606266;">工作经历</span>
  1015. <el-divider direction="vertical" />
  1016. <el-button type="primary" @click="addWork()"
  1017. :disabled="auditStatus == 2">新增</el-button>
  1018. <el-divider direction="vertical" />
  1019. <el-button :type="changeFlag[1] ? 'warning' : 'success'"
  1020. @click="changeInfoList(1)">{{
  1021. changeFlag[1] ? "收起" : "展开"
  1022. }}</el-button>
  1023. </el-divider>
  1024. </template>
  1025. <el-collapse-transition>
  1026. <el-row :gutter="26" v-if="changeFlag[1]">
  1027. <el-col :span="24">
  1028. <el-collapse v-model="activeNames[1]"
  1029. v-if="workInfoList && workInfoList.length > 0">
  1030. <div style="padding: 0 30px;" v-for="(item, index) in workInfoList">
  1031. <el-collapse-item :name="item.id">
  1032. <template #title="{ isActive }">
  1033. <div :class="{
  1034. collapseTitle: true,
  1035. auditInfo: item.status == '1' ? true : false
  1036. }">
  1037. <el-tag
  1038. style="border-color:#e6a23c;background-color: #e6a23c;color: #fff !important;;margin-right: 10px;"
  1039. v-if="item.status == '1'" type="warning">
  1040. 暂存中
  1041. </el-tag>
  1042. <span style="font-size: 16px;"> {{ item.companyName
  1043. + ' - '
  1044. +
  1045. item.position }}</span>
  1046. <span
  1047. style="color: #b0b0b0;font-size: 12px;">&nbsp;|&nbsp;</span>
  1048. <span style="font-size: 14px;"> {{
  1049. handleDateFormatter(item.startDate) }}</span>
  1050. <span
  1051. style="color: #b0b0b0;font-size: 12px;">&nbsp;至&nbsp;</span>
  1052. <span style="font-size: 14px;"> {{
  1053. handleDateFormatter(item.endDate) }}</span>
  1054. <div style="margin-left: auto;">
  1055. <el-button type="text" @click.stop="editWork(item)"
  1056. :disabled="auditStatus == 2">修改</el-button>
  1057. <el-button type="text" @click.stop="delWork(item)"
  1058. style="color: red;"
  1059. :disabled="auditStatus == 2">删除</el-button>
  1060. </div>
  1061. </div>
  1062. </template>
  1063. <el-descriptions title="" border>
  1064. <el-descriptions-item
  1065. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1066. label="单位名称:">{{
  1067. item.companyName
  1068. }}</el-descriptions-item>
  1069. <el-descriptions-item
  1070. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1071. label="职务:">{{
  1072. item.position
  1073. }}</el-descriptions-item>
  1074. <el-descriptions-item
  1075. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1076. label="证明人:">{{
  1077. item.certifier
  1078. }}</el-descriptions-item>
  1079. <el-descriptions-item
  1080. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1081. label="开始日期:">{{
  1082. handleDateFormatter(item.startDate)
  1083. }}</el-descriptions-item>
  1084. <el-descriptions-item
  1085. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1086. label="结束日期:">{{
  1087. handleDateFormatter(item.endDate)
  1088. }}</el-descriptions-item>
  1089. <el-descriptions-item
  1090. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1091. label="是否本单位工作经历">
  1092. <el-tag
  1093. v-if="item.isCurrentCompanyExperience == 1">是</el-tag>
  1094. <el-tag type="warning" v-else>否</el-tag>
  1095. </el-descriptions-item>
  1096. </el-descriptions>
  1097. </el-collapse-item>
  1098. </div>
  1099. </el-collapse>
  1100. <el-empty image-size="80px"
  1101. style="margin-top: 0 !important;padding: 0 !important;" v-else
  1102. description="暂无工作经历"></el-empty>
  1103. </el-col>
  1104. </el-row>
  1105. </el-collapse-transition>
  1106. </el-card>
  1107. </el-tab-pane>
  1108. <el-tab-pane label="培训经历">
  1109. <!-- 培训经历 -->
  1110. <el-card style="width: 100%" shadow="hover" class="card-info">
  1111. <template #header>
  1112. <el-divider content-position="left"><i class="el-icon-document"></i> <span
  1113. style="font-weight: 900; font-size: 16px; color: #606266;">培训经历</span>
  1114. <el-divider direction="vertical" />
  1115. <el-button type="primary" @click="addTraining()"
  1116. :disabled="auditStatus == 2">新增</el-button>
  1117. <el-divider direction="vertical" />
  1118. <el-button :type="changeFlag[2] ? 'warning' : 'success'"
  1119. @click="changeInfoList(2)">{{
  1120. changeFlag[2] ? "收起" : "展开"
  1121. }}</el-button>
  1122. </el-divider>
  1123. </template>
  1124. <el-collapse-transition>
  1125. <el-row :gutter="26" v-if="changeFlag[2]">
  1126. <el-col :span="24">
  1127. <el-collapse v-model="activeNames[2]"
  1128. v-if="trainingInfoList && trainingInfoList.length > 0">
  1129. <div style="padding: 0 30px;" v-for="(item, index) in trainingInfoList">
  1130. <el-collapse-item :name="item.id">
  1131. <template #title="{ isActive }">
  1132. <div :class="{
  1133. collapseTitle: true,
  1134. auditInfo: item.status == '1' ? true : false
  1135. }">
  1136. <el-tag
  1137. style="border-color:#e6a23c;background-color: #e6a23c;color: #fff !important;;margin-right: 10px;"
  1138. v-if="item.status == '1'" type="warning">
  1139. 暂存中
  1140. </el-tag>
  1141. <span style="font-size: 16px;"> {{ item.name + ' - '
  1142. +
  1143. item.trainingInstitution }}</span>
  1144. <div style="margin-left: auto;">
  1145. <el-button type="text" @click.stop="editTraining(item)"
  1146. :disabled="auditStatus == 2">修改</el-button>
  1147. <el-button type="text" @click.stop="delTraining(item)"
  1148. style="color: red;"
  1149. :disabled="auditStatus == 2">删除</el-button>
  1150. </div>
  1151. </div>
  1152. </template>
  1153. <el-descriptions title="" border>
  1154. <el-descriptions-item
  1155. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1156. label="名称:">{{
  1157. item.name
  1158. }}</el-descriptions-item>
  1159. <el-descriptions-item
  1160. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1161. label="培训机构:">{{
  1162. item.trainingInstitution
  1163. }}</el-descriptions-item>
  1164. <el-descriptions-item
  1165. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1166. label="培训成绩:">{{
  1167. item.trainingResult
  1168. }}</el-descriptions-item>
  1169. <el-descriptions-item label="附件:">
  1170. <AttachmentView :key="uploadKey" :fileList="item.files">
  1171. </AttachmentView>
  1172. </el-descriptions-item>
  1173. </el-descriptions>
  1174. </el-collapse-item>
  1175. </div>
  1176. </el-collapse>
  1177. <el-empty image-size="80px"
  1178. style="margin-top: 0 !important;padding: 0 !important;" v-else
  1179. description="暂无培训经历"></el-empty>
  1180. </el-col>
  1181. </el-row>
  1182. </el-collapse-transition>
  1183. </el-card>
  1184. </el-tab-pane>
  1185. <el-tab-pane label="执业资格证书">
  1186. <!-- 执业资格证书 -->
  1187. <el-card style="width: 100%" shadow="hover" class="card-info">
  1188. <template #header>
  1189. <el-divider content-position="left"><i class="el-icon-document"></i> <span
  1190. style="font-weight: 900; font-size: 16px; color: #606266;">执业资格证书</span>
  1191. <el-divider direction="vertical" />
  1192. <el-button type="primary" @click="addCertificate()"
  1193. :disabled="auditStatus == 2">新增</el-button>
  1194. <el-divider direction="vertical" />
  1195. <el-button :type="changeFlag[3] ? 'warning' : 'success'"
  1196. @click="changeInfoList(3)">{{
  1197. changeFlag[3] ? "收起" : "展开"
  1198. }}</el-button>
  1199. </el-divider>
  1200. </template>
  1201. <el-collapse-transition>
  1202. <el-row :gutter="26" v-if="changeFlag[3]">
  1203. <el-col :span="24">
  1204. <el-collapse v-model="activeNames[3]"
  1205. v-if="certificateInfoList && certificateInfoList.length > 0">
  1206. <div style="padding: 0 30px;" v-for="(item, index) in certificateInfoList">
  1207. <el-collapse-item :name="item.id">
  1208. <template #title="{ isActive }">
  1209. <div :class="{
  1210. collapseTitle: true,
  1211. auditInfo: item.status == '1' ? true : false
  1212. }">
  1213. <el-tag
  1214. style="border-color:#e6a23c;background-color: #e6a23c;color: #fff !important;;margin-right: 10px;"
  1215. v-if="item.status == '1'" type="warning">
  1216. 暂存中
  1217. </el-tag>
  1218. <span style="font-size: 16px;"> {{
  1219. $dictUtils.getDictLabel('sys_cert_type', item.type, '-')
  1220. }}</span>
  1221. <div style="margin-left: auto;">
  1222. <el-button type="text"
  1223. @click.stop="editCertificate(item)"
  1224. :disabled="auditStatus == 2">修改</el-button>
  1225. <el-button type="text"
  1226. @click.stop="delCertificate(item)"
  1227. style="color: red;"
  1228. :disabled="auditStatus == 2">删除</el-button>
  1229. </div>
  1230. </div>
  1231. </template>
  1232. <el-descriptions title="" border>
  1233. <el-descriptions-item
  1234. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1235. label="证书类型:">
  1236. {{ $dictUtils.getDictLabel('sys_cert_type', item.type, '-')
  1237. }}
  1238. </el-descriptions-item>
  1239. <el-descriptions-item
  1240. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1241. label="证书编号:">
  1242. {{ item.no }}
  1243. </el-descriptions-item>
  1244. <el-descriptions-item
  1245. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1246. label="发证机关:">
  1247. {{ item.authorities }}
  1248. </el-descriptions-item>
  1249. <el-descriptions-item
  1250. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1251. label="发证日期:">
  1252. {{ handleDateFormatter(item.issuedDate) }}
  1253. </el-descriptions-item>
  1254. <el-descriptions-item
  1255. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1256. label="注册日期:">
  1257. {{ handleDateFormatter(item.enrollDate) }}
  1258. </el-descriptions-item>
  1259. <el-descriptions-item
  1260. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1261. label="到期日期:">
  1262. {{ handleDateFormatter(item.expireDate) }}
  1263. </el-descriptions-item>
  1264. <el-descriptions-item
  1265. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1266. label="注册证书编号:">
  1267. {{ item.enrollCertNo }}
  1268. </el-descriptions-item>
  1269. <el-descriptions-item
  1270. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1271. label="专业:">
  1272. {{ item.profession }}
  1273. </el-descriptions-item>
  1274. <el-descriptions-item label="附件:">
  1275. <AttachmentView :key="uploadKey"
  1276. :fileList="item.certificateAttachment">
  1277. </AttachmentView>
  1278. </el-descriptions-item>
  1279. </el-descriptions>
  1280. </el-collapse-item>
  1281. </div>
  1282. </el-collapse>
  1283. <el-empty image-size="80px"
  1284. style="margin-top: 0 !important;padding: 0 !important;" v-else
  1285. description="暂无执业资格证书"></el-empty>
  1286. </el-col>
  1287. </el-row>
  1288. </el-collapse-transition>
  1289. </el-card>
  1290. </el-tab-pane>
  1291. <el-tab-pane label="职称证书">
  1292. <!-- 专业技能 -->
  1293. <el-card style="width: 100%" shadow="hover" class="card-info">
  1294. <template #header>
  1295. <el-divider content-position="left"><i class="el-icon-document"></i> <span
  1296. style="font-weight: 900; font-size: 16px; color: #606266;">职称证书</span>
  1297. <el-divider direction="vertical" />
  1298. <el-button type="primary" @click="addSkill()"
  1299. :disabled="auditStatus == 2">新增</el-button>
  1300. <el-divider direction="vertical" />
  1301. <el-button :type="changeFlag[4] ? 'warning' : 'success'"
  1302. @click="changeInfoList(4)">{{
  1303. changeFlag[4] ? "收起" : "展开"
  1304. }}</el-button>
  1305. </el-divider>
  1306. </template>
  1307. <el-collapse-transition>
  1308. <el-row :gutter="26" v-if="changeFlag[4]">
  1309. <el-col :span="24">
  1310. <el-collapse v-model="activeNames[4]"
  1311. v-if="skillInfoList && skillInfoList.length > 0">
  1312. <div style="padding: 0 30px;" v-for="(item, index) in skillInfoList">
  1313. <el-collapse-item :name="item.id">
  1314. <template #title="{ isActive }">
  1315. <div :class="{
  1316. collapseTitle: true,
  1317. auditInfo: item.status == '1' ? true : false
  1318. }">
  1319. <el-tag
  1320. style="border-color:#e6a23c;background-color: #e6a23c;color: #fff !important;;margin-right: 10px;"
  1321. v-if="item.status == '1'" type="warning">
  1322. 暂存中
  1323. </el-tag>
  1324. <span style="font-size: 16px;"> {{
  1325. $dictUtils.getDictLabel('professional_certificate',
  1326. item.name, '-')
  1327. }}</span>
  1328. <span style="font-size: 16px;" v-if="item.proficiency"> {{
  1329. '-' +
  1330. item.proficiency }}</span>
  1331. <div style="margin-left: auto;">
  1332. <el-button type="text" @click.stop="editSkill(item)"
  1333. :disabled="auditStatus == 2">修改</el-button>
  1334. <el-button type="text" @click.stop="delSkill(item)"
  1335. style="color: red;"
  1336. :disabled="auditStatus == 2">删除</el-button>
  1337. </div>
  1338. </div>
  1339. </template>
  1340. <el-descriptions title="" border>
  1341. <el-descriptions-item
  1342. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1343. label="职称名称:">{{
  1344. $dictUtils.getDictLabel('professional_certificate',
  1345. item.name, '-')
  1346. }}</el-descriptions-item>
  1347. <el-descriptions-item
  1348. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1349. label="职称等级:">{{
  1350. item.proficiency
  1351. }}</el-descriptions-item>
  1352. <el-descriptions-item
  1353. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1354. label="取得日期:">{{
  1355. handleDateFormatter(item.obtainDate)
  1356. }}</el-descriptions-item>
  1357. <el-descriptions-item
  1358. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1359. label="取得途径:">{{
  1360. item.category
  1361. }}</el-descriptions-item>
  1362. <el-descriptions-item
  1363. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1364. label="审批单位:">{{
  1365. item.usageTime
  1366. }}</el-descriptions-item>
  1367. <el-descriptions-item label="附件:">
  1368. <AttachmentView :fileList="item.files">
  1369. </AttachmentView>
  1370. </el-descriptions-item>
  1371. </el-descriptions>
  1372. </el-collapse-item>
  1373. </div>
  1374. </el-collapse>
  1375. <el-empty image-size="80px"
  1376. style="margin-top: 0 !important;padding: 0 !important;" v-else
  1377. description="暂无职称证书"></el-empty>
  1378. </el-col>
  1379. </el-row>
  1380. </el-collapse-transition>
  1381. </el-card>
  1382. </el-tab-pane>
  1383. <el-tab-pane label="外语语种">
  1384. <!-- 外语语种 -->
  1385. <el-card style="width: 100%" shadow="hover" class="card-info">
  1386. <template #header>
  1387. <el-divider content-position="left"><i class="el-icon-document"></i> <span
  1388. style="font-weight: 900; font-size: 16px; color: #606266;">外语语种</span>
  1389. <el-divider direction="vertical" />
  1390. <el-button type="primary" @click="addLanguage()"
  1391. :disabled="auditStatus == 2">新增</el-button>
  1392. <el-divider direction="vertical" />
  1393. <el-button :type="changeFlag[5] ? 'warning' : 'success'"
  1394. @click="changeInfoList(5)">{{
  1395. changeFlag[5] ? "收起" : "展开"
  1396. }}</el-button>
  1397. </el-divider>
  1398. </template>
  1399. <el-collapse-transition>
  1400. <el-row :gutter="26" v-if="changeFlag[5]">
  1401. <el-col :span="24">
  1402. <el-collapse v-model="activeNames[5]"
  1403. v-if="languageInfoList && languageInfoList.length > 0">
  1404. <div style="padding: 0 30px;" v-for="(item, index) in languageInfoList">
  1405. <el-collapse-item :name="item.id">
  1406. <template #title="{ isActive }">
  1407. <div :class="{
  1408. collapseTitle: true,
  1409. auditInfo: item.status == '1' ? true : false
  1410. }">
  1411. <el-tag
  1412. style="border-color:#e6a23c;background-color: #e6a23c;color: #fff !important;;margin-right: 10px;"
  1413. v-if="item.status == '1'" type="warning">
  1414. 暂存中
  1415. </el-tag>
  1416. <span style="font-size: 16px;"> {{
  1417. $dictUtils.getDictLabel("user_info_language",
  1418. item.language, '-')
  1419. }}</span>
  1420. <div style="margin-left: auto;">
  1421. <el-button type="text" @click.stop="editLanguage(item)"
  1422. :disabled="auditStatus == 2">修改</el-button>
  1423. <el-button type="text" @click.stop="delLanguage(item)"
  1424. style="color: red;"
  1425. :disabled="auditStatus == 2">删除</el-button>
  1426. </div>
  1427. </div>
  1428. </template>
  1429. <el-descriptions title="" border>
  1430. <el-descriptions-item
  1431. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1432. label="语种:">{{
  1433. $dictUtils.getDictLabel("user_info_language",
  1434. item.language, '-')
  1435. }}</el-descriptions-item>
  1436. <el-descriptions-item
  1437. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1438. label="是否母语:">
  1439. <el-tag v-if="item.isNative == 1">是</el-tag>
  1440. <el-tag type="warning" v-else>否</el-tag>
  1441. </el-descriptions-item>
  1442. <el-descriptions-item
  1443. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1444. label="掌握程度:">{{
  1445. item.proficiency
  1446. }}</el-descriptions-item>
  1447. <el-descriptions-item
  1448. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1449. label="书写能力:">{{
  1450. item.writingAbility
  1451. }}</el-descriptions-item>
  1452. <el-descriptions-item
  1453. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1454. label="阅读能力:">{{
  1455. item.readingAbility
  1456. }}</el-descriptions-item>
  1457. <el-descriptions-item
  1458. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1459. label="口语能力:">{{
  1460. item.speakingAbility
  1461. }}</el-descriptions-item>
  1462. <el-descriptions-item label="附件:">
  1463. <AttachmentView :key="uploadKey" :fileList="item.files">
  1464. </AttachmentView>
  1465. </el-descriptions-item>
  1466. </el-descriptions>
  1467. </el-collapse-item>
  1468. </div>
  1469. </el-collapse>
  1470. <el-empty image-size="80px"
  1471. style="margin-top: 0 !important;padding: 0 !important;" v-else
  1472. description="暂无外语语种信息"></el-empty>
  1473. </el-col>
  1474. </el-row>
  1475. </el-collapse-transition>
  1476. </el-card>
  1477. </el-tab-pane>
  1478. <el-tab-pane label="家庭情况">
  1479. <!-- 家庭情况 -->
  1480. <el-card style="width: 100%" shadow="hover" class="card-info">
  1481. <template #header>
  1482. <el-divider content-position="left"><i class="el-icon-document"></i> <span
  1483. style="font-weight: 900; font-size: 16px; color: #606266;">家庭情况</span>
  1484. <el-divider direction="vertical" />
  1485. <el-button type="primary" @click="addFamily()"
  1486. :disabled="auditStatus == 2">新增</el-button>
  1487. <el-divider direction="vertical" />
  1488. <el-button :type="changeFlag[6] ? 'warning' : 'success'"
  1489. @click="changeInfoList(6)">{{
  1490. changeFlag[6] ? "收起" : "展开"
  1491. }}</el-button>
  1492. </el-divider>
  1493. </template>
  1494. <el-collapse-transition>
  1495. <el-row :gutter="26" v-if="changeFlag[6]">
  1496. <el-col :span="24">
  1497. <el-collapse v-model="activeNames[6]"
  1498. v-if="familyInfoList && familyInfoList.length > 0">
  1499. <div style="padding: 0 30px;" v-for="(item, index) in familyInfoList">
  1500. <el-collapse-item :name="item.id">
  1501. <template #title="{ isActive }">
  1502. <div :class="{
  1503. collapseTitle: true,
  1504. auditInfo: item.status == '1' ? true : false
  1505. }">
  1506. <el-tag
  1507. style="border-color:#e6a23c;background-color: #e6a23c;color: #fff !important;;margin-right: 10px;"
  1508. v-if="item.status == '1'" type="warning">
  1509. 暂存中
  1510. </el-tag>
  1511. <span style="font-size: 16px;"> {{ item.relation +
  1512. "-"
  1513. }}</span>
  1514. <span style="font-size: 16px;"> {{ item.name
  1515. }}</span>
  1516. <div style="margin-left: auto;">
  1517. <el-button type="text" @click.stop="editFamily(item)"
  1518. :disabled="auditStatus == 2">修改</el-button>
  1519. <el-button type="text" @click.stop="delFamily(item)"
  1520. style="color: red;"
  1521. :disabled="auditStatus == 2">删除</el-button>
  1522. </div>
  1523. </div>
  1524. </template>
  1525. <el-descriptions title="" border>
  1526. <el-descriptions-item
  1527. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1528. label="姓名:">{{
  1529. item.name
  1530. }}</el-descriptions-item>
  1531. <el-descriptions-item
  1532. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1533. label="出生日期:">{{
  1534. handleDateFormatter(item.birthDate)
  1535. }}</el-descriptions-item>
  1536. <el-descriptions-item
  1537. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1538. label="与本人关系名称:">{{ item.relation
  1539. }}</el-descriptions-item>
  1540. <el-descriptions-item
  1541. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1542. label="性别:">{{
  1543. $dictUtils.getDictLabel("sex",
  1544. item.gender, '-')
  1545. }}</el-descriptions-item>
  1546. <el-descriptions-item
  1547. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1548. label="手机号码:">{{
  1549. item.mobile
  1550. }}</el-descriptions-item>
  1551. <!-- <el-descriptions-item label="工作单位:">{{ item.workUnit
  1552. }}</el-descriptions-item>
  1553. <el-descriptions-item label="联系电话:">{{
  1554. item.contactNumber
  1555. }}</el-descriptions-item> -->
  1556. </el-descriptions>
  1557. </el-collapse-item>
  1558. </div>
  1559. </el-collapse>
  1560. <el-empty image-size="80px"
  1561. style="margin-top: 0 !important;padding: 0 !important;" v-else
  1562. description="暂无家庭情况信息"></el-empty>
  1563. </el-col>
  1564. </el-row>
  1565. </el-collapse-transition>
  1566. </el-card>
  1567. </el-tab-pane>
  1568. <el-tab-pane label="表彰与奖励">
  1569. <el-card style="width: 100%" shadow="hover" class="card-info">
  1570. <template #header>
  1571. <el-divider content-position="left"><i class="el-icon-document"></i> <span
  1572. style="font-weight: 900; font-size: 16px; color: #606266;">表彰与奖励</span>
  1573. <el-divider direction="vertical" />
  1574. <el-button type="primary" @click="addReward()"
  1575. :disabled="auditStatus == 2">新增</el-button>
  1576. <el-divider direction="vertical" />
  1577. <el-button :type="changeFlag[7] ? 'warning' : 'success'"
  1578. @click="changeInfoList(7)">{{
  1579. changeFlag[7] ? "收起" : "展开"
  1580. }}</el-button>
  1581. </el-divider>
  1582. </template>
  1583. <el-collapse-transition>
  1584. <el-row :gutter="26" v-if="changeFlag[7]">
  1585. <el-col :span="24">
  1586. <el-collapse v-model="activeNames[7]"
  1587. v-if="rewardInfoList && rewardInfoList.length > 0">
  1588. <div style="padding: 0 30px;" v-for="(item, index) in rewardInfoList">
  1589. <el-collapse-item :name="item.id">
  1590. <template #title="{ isActive }">
  1591. <div :class="{
  1592. collapseTitle: true,
  1593. auditInfo: item.status == '1' ? true : false
  1594. }">
  1595. <el-tag
  1596. style="border-color:#e6a23c;background-color: #e6a23c;color: #fff !important;;margin-right: 10px;"
  1597. v-if="item.status == '1'" type="warning">
  1598. 暂存中
  1599. </el-tag>
  1600. <span style="font-size: 16px;"> {{ item.name
  1601. }}</span>
  1602. <span style="font-size: 16px;"> {{ "-" +
  1603. handleDateFormatter(item.rewardDate)
  1604. }}</span>
  1605. <div style="margin-left: auto;">
  1606. <el-button type="text" @click.stop="editReward(item)"
  1607. :disabled="auditStatus == 2">修改</el-button>
  1608. <el-button type="text" @click.stop="delReward(item)"
  1609. style="color: red;"
  1610. :disabled="auditStatus == 2">删除</el-button>
  1611. </div>
  1612. </div>
  1613. </template>
  1614. <el-descriptions title="" border :column="2">
  1615. <el-descriptions-item
  1616. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1617. label="奖项:">{{
  1618. item.name
  1619. }}</el-descriptions-item>
  1620. <el-descriptions-item
  1621. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1622. label="获奖日期:">{{
  1623. handleDateFormatter(item.rewardDate)
  1624. }}</el-descriptions-item>
  1625. <el-descriptions-item
  1626. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1627. :span="2" label="简述:">{{
  1628. item.description
  1629. }}</el-descriptions-item>
  1630. <el-descriptions-item label="附件:">
  1631. <AttachmentView :key="uploadKey" :fileList="item.files">
  1632. </AttachmentView>
  1633. </el-descriptions-item>
  1634. </el-descriptions>
  1635. </el-collapse-item>
  1636. </div>
  1637. </el-collapse>
  1638. <el-empty image-size="80px"
  1639. style="margin-top: 0 !important;padding: 0 !important;" v-else
  1640. description="暂无表彰与奖励"></el-empty>
  1641. </el-col>
  1642. </el-row>
  1643. </el-collapse-transition>
  1644. </el-card>
  1645. </el-tab-pane>
  1646. <el-tab-pane label="社会及行业职务">
  1647. <el-card style="width: 100%" shadow="hover" class="card-info">
  1648. <template #header>
  1649. <el-divider content-position="left"><i class="el-icon-document"></i> <span
  1650. style="font-weight: 900; font-size: 16px; color: #606266;">社会及行业职务</span>
  1651. <el-divider direction="vertical" />
  1652. <el-button type="primary" @click="addSociety()"
  1653. :disabled="auditStatus == 2">新增</el-button>
  1654. <el-divider direction="vertical" />
  1655. <el-button :type="changeFlag[9] ? 'warning' : 'success'"
  1656. @click="changeInfoList(9)">{{
  1657. changeFlag[9] ? "收起" : "展开"
  1658. }}</el-button>
  1659. </el-divider>
  1660. </template>
  1661. <el-collapse-transition>
  1662. <el-row :gutter="26" v-if="changeFlag[9]">
  1663. <el-col :span="24">
  1664. <el-collapse v-model="activeNames[9]"
  1665. v-if="societyInfoList && societyInfoList.length > 0">
  1666. <div style="padding: 0 30px;" v-for="(item, index) in societyInfoList">
  1667. <el-collapse-item :name="item.id">
  1668. <template #title="{ isActive }">
  1669. <div :class="{
  1670. collapseTitle: true,
  1671. auditInfo: item.status == '1' ? true : false
  1672. }">
  1673. <el-tag
  1674. style="border-color:#e6a23c;background-color: #e6a23c;color: #fff !important;;margin-right: 10px;"
  1675. v-if="item.status == '1'" type="warning">
  1676. 暂存中
  1677. </el-tag>
  1678. <span style="font-size: 16px;"> {{ item.name }}</span>
  1679. <div style="margin-left: auto;">
  1680. <el-button type="text" @click.stop="editSociety(item)"
  1681. :disabled="auditStatus == 2">修改</el-button>
  1682. <el-button type="text" @click.stop="delSociety(item)"
  1683. style="color: red;"
  1684. :disabled="auditStatus == 2">删除</el-button>
  1685. </div>
  1686. </div>
  1687. </template>
  1688. <el-descriptions title="" border>
  1689. <el-descriptions-item
  1690. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1691. label="职务名称:">{{
  1692. item.name
  1693. }}</el-descriptions-item>
  1694. <el-descriptions-item
  1695. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1696. label="任职开始日期:">{{
  1697. handleDateFormatter(item.startDate)
  1698. }}</el-descriptions-item>
  1699. <el-descriptions-item
  1700. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1701. label="任职开始日期:">{{
  1702. handleDateFormatter(item.endDate)
  1703. }}</el-descriptions-item>
  1704. <el-descriptions-item
  1705. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1706. label="任职机构:">{{
  1707. item.institution
  1708. }}</el-descriptions-item>
  1709. </el-descriptions>
  1710. </el-collapse-item>
  1711. </div>
  1712. </el-collapse>
  1713. <el-empty image-size="80px"
  1714. style="margin-top: 0 !important;padding: 0 !important;" v-else
  1715. description="暂无社会及行业职务信息"></el-empty>
  1716. </el-col>
  1717. </el-row>
  1718. </el-collapse-transition>
  1719. </el-card>
  1720. </el-tab-pane>
  1721. <el-tab-pane label="工作业绩">
  1722. <el-card style="width: 100%" shadow="hover" class="card-info">
  1723. <template #header>
  1724. <el-divider content-position="left"><i class="el-icon-document"></i> <span
  1725. style="font-weight: 900; font-size: 16px; color: #606266;">工作业绩</span>
  1726. <el-divider direction="vertical" />
  1727. <el-button type="primary" @click="addPerformance()"
  1728. :disabled="auditStatus == 2">新增</el-button>
  1729. <el-divider direction="vertical" />
  1730. <el-button :type="changeFlag[10] ? 'warning' : 'success'"
  1731. @click="changeInfoList(10)">{{
  1732. changeFlag[10] ? "收起" : "展开"
  1733. }}</el-button>
  1734. </el-divider>
  1735. </template>
  1736. <el-collapse-transition>
  1737. <el-row :gutter="26" v-if="changeFlag[10]">
  1738. <el-col :span="24">
  1739. <el-collapse v-model="activeNames[10]"
  1740. v-if="performanceInfoList && performanceInfoList.length > 0">
  1741. <div style="padding: 0 30px;" v-for="(item, index) in performanceInfoList">
  1742. <el-collapse-item :name="item.id">
  1743. <template #title="{ isActive }">
  1744. <div :class="{
  1745. collapseTitle: true,
  1746. auditInfo: item.status == '1' ? true : false
  1747. }">
  1748. <el-tag
  1749. style="border-color:#e6a23c;background-color: #e6a23c;color: #fff !important;;margin-right: 10px;"
  1750. v-if="item.status == '1'" type="warning">
  1751. 暂存中
  1752. </el-tag>
  1753. <span style="font-size: 16px;"> {{ item.name }}</span>
  1754. <div style="margin-left: auto;">
  1755. <el-button type="text"
  1756. @click.stop="editPerformance(item)"
  1757. :disabled="auditStatus == 2">修改</el-button>
  1758. <el-button type="text"
  1759. @click.stop="delPerformance(item)"
  1760. style="color: red;"
  1761. :disabled="auditStatus == 2">删除</el-button>
  1762. </div>
  1763. </div>
  1764. </template>
  1765. <el-descriptions title="" border>
  1766. <el-descriptions-item
  1767. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1768. label="项目名称:">{{
  1769. item.name
  1770. }}</el-descriptions-item>
  1771. <el-descriptions-item
  1772. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1773. label="委托方:">{{
  1774. item.client
  1775. }}</el-descriptions-item>
  1776. <el-descriptions-item
  1777. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1778. label="工程分类:">{{
  1779. item.type
  1780. }}</el-descriptions-item>
  1781. <el-descriptions-item
  1782. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1783. label="规模类型/单位/数量:">{{ item.info
  1784. }}</el-descriptions-item>
  1785. <el-descriptions-item
  1786. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1787. label="担任职务:">{{
  1788. $dictUtils.getDictLabel("position_held",
  1789. item.position,
  1790. '-')
  1791. }}</el-descriptions-item>
  1792. <el-descriptions-item
  1793. :class-name="item.status == '1' ? 'auditInfo' : ''"
  1794. label="参与内容:">{{
  1795. item.participateContent
  1796. }}</el-descriptions-item>
  1797. </el-descriptions>
  1798. </el-collapse-item>
  1799. </div>
  1800. </el-collapse>
  1801. <el-empty image-size="80px"
  1802. style="margin-top: 0 !important;padding: 0 !important;" v-else
  1803. description="暂无工作业绩信息"></el-empty>
  1804. </el-col>
  1805. </el-row>
  1806. </el-collapse-transition>
  1807. </el-card>
  1808. </el-tab-pane>
  1809. <el-tab-pane label="劳动合同">
  1810. <el-card style="width: 100%" shadow="hover" class="card-info">
  1811. <template #header>
  1812. <el-divider content-position="left"><i class="el-icon-document"></i> <span
  1813. style="font-weight: 900; font-size: 16px; color: #606266;">劳动合同</span>
  1814. <!-- <el-button type="primary" @click="addReward()"
  1815. :disabled="auditStatus == 2">新增</el-button> -->
  1816. <el-divider direction="vertical" />
  1817. <el-button :type="changeFlag[8] ? 'warning' : 'success'"
  1818. @click="changeInfoList(8)">{{
  1819. changeFlag[8] ? "收起" : "展开"
  1820. }}</el-button>
  1821. </el-divider>
  1822. </template>
  1823. <el-collapse-transition>
  1824. <el-row :gutter="26" v-if="changeFlag[8]">
  1825. <el-col :span="24">
  1826. <el-collapse v-model="activeNames[8]"
  1827. v-if="laborContractInfoList && laborContractInfoList.length > 0">
  1828. <div style="padding: 0 30px;"
  1829. v-for="(item, index) in laborContractInfoList">
  1830. <el-collapse-item :name="item.id">
  1831. <template #title="{ isActive }">
  1832. <div :class="{
  1833. collapseTitle: true,
  1834. auditInfo: item.status == '1' ? true : false
  1835. }">
  1836. <el-tag
  1837. style="border-color:#e6a23c;background-color: #e6a23c;color: #fff !important;;margin-right: 10px;"
  1838. v-if="item.status == '1'" type="warning">
  1839. 暂存中
  1840. </el-tag>
  1841. <span style="font-size: 16px;"> {{
  1842. $dictUtils.getDictLabel("labor_contract_type",
  1843. item.type, '-')
  1844. }}</span>
  1845. <span style="font-size: 16px;"> {{ "-" +
  1846. $dictUtils.getDictLabel("labor_contract_term",
  1847. item.term,
  1848. '-')
  1849. }}</span>
  1850. </div>
  1851. </template>
  1852. <el-descriptions title="" border :column="2">
  1853. <el-descriptions-item label="合同类型:">{{
  1854. $dictUtils.getDictLabel("labor_contract_type", item.type,
  1855. '-')
  1856. }}</el-descriptions-item>
  1857. <!-- <el-descriptions-item label="合同编号:">{{ item.code
  1858. }}</el-descriptions-item> -->
  1859. <el-descriptions-item label="合同期限:">{{
  1860. $dictUtils.getDictLabel("labor_contract_term",
  1861. item.term,
  1862. '-')
  1863. }}</el-descriptions-item>
  1864. <el-descriptions-item label="合同起始日期:">{{
  1865. handleDateFormatter(item.startDate)
  1866. }}</el-descriptions-item>
  1867. <el-descriptions-item label="合同终止日期:">{{
  1868. handleDateFormatter(item.endDate)
  1869. }}</el-descriptions-item>
  1870. <el-descriptions-item label="试用期结束日期:">{{
  1871. handleDateFormatter(item.trialEndDate)
  1872. }}</el-descriptions-item>
  1873. <!-- <el-descriptions-item label="办理日期:">{{
  1874. handleDateFormatter(item.processeDate)
  1875. }}</el-descriptions-item> -->
  1876. <el-descriptions-item label="附件:">
  1877. <AttachmentView :fileList="item.files">
  1878. </AttachmentView>
  1879. </el-descriptions-item>
  1880. </el-descriptions>
  1881. </el-collapse-item>
  1882. </div>
  1883. </el-collapse>
  1884. <el-empty image-size="80px"
  1885. style="margin-top: 0 !important;padding: 0 !important;" v-else
  1886. description="暂无表彰与奖励"></el-empty>
  1887. </el-col>
  1888. </el-row>
  1889. </el-collapse-transition>
  1890. </el-card>
  1891. </el-tab-pane>
  1892. <el-tab-pane label="上传头像">
  1893. <el-form :model="photoForm" ref="photoForm" label-width="100px">
  1894. <el-form-item prop="photo">
  1895. <image-select v-model="photoForm.photo" round icon="el-icon-avatar"
  1896. title="头像"></image-select>
  1897. </el-form-item>
  1898. <!-- <el-form-item>
  1899. <el-button style="width: 148px" type="primary" @click="submitPhotoForm()">保存</el-button>
  1900. </el-form-item> -->
  1901. </el-form>
  1902. </el-tab-pane>
  1903. <!-- <el-tab-pane label="联系方式">
  1904. <el-form :model="concatForm" ref="concatForm" label-width="100px">
  1905. <el-form-item label="手机" prop="mobile" :rules="[
  1906. {
  1907. validator: validator.isMobile,
  1908. trigger: 'blur',
  1909. },
  1910. ]">
  1911. <el-input v-model="concatForm.mobile"></el-input>
  1912. </el-form-item>
  1913. <el-form-item label="电话" prop="phone" :rules="[
  1914. {
  1915. validator: validator.isPhone,
  1916. trigger: 'blur',
  1917. },
  1918. ]">
  1919. <el-input v-model="concatForm.phone"></el-input>
  1920. </el-form-item>
  1921. &lt;!&ndash; <el-form-item>
  1922. <el-button type="primary" @click="submitConcatForm()">保存</el-button>
  1923. </el-form-item> &ndash;&gt;
  1924. </el-form>
  1925. </el-tab-pane>-->
  1926. <!--<el-tab-pane label="修改密码">
  1927. <el-form
  1928. :rules="dataRule"
  1929. :model="pwdForm"
  1930. ref="pwdForm"
  1931. label-width="100px"
  1932. >
  1933. <el-form-item
  1934. label="旧密码"
  1935. :rules="[
  1936. {
  1937. required: true,
  1938. message: '必填项不能为空',
  1939. trigger: 'blur',
  1940. },
  1941. ]"
  1942. prop="oldPassword"
  1943. >
  1944. <el-input
  1945. v-model="pwdForm.oldPassword"
  1946. show-password
  1947. ></el-input>
  1948. </el-form-item>
  1949. <el-form-item
  1950. label="新密码"
  1951. :rules="[
  1952. {
  1953. required: true,
  1954. message: '必填项不能为空',
  1955. trigger: 'blur',
  1956. },
  1957. ]"
  1958. prop="newPassword"
  1959. >
  1960. <el-input
  1961. v-model="pwdForm.newPassword"
  1962. show-password
  1963. ></el-input>
  1964. </el-form-item>
  1965. <el-form-item
  1966. label="确认新密码"
  1967. :rules="rule"
  1968. prop="confirmNewPassword"
  1969. >
  1970. <el-input
  1971. v-model="pwdForm.confirmNewPassword"
  1972. show-password
  1973. ></el-input>
  1974. </el-form-item>
  1975. <el-form-item>
  1976. <el-button
  1977. type="primary"
  1978. @click="submitPwdForm()"
  1979. >保存</el-button
  1980. >
  1981. </el-form-item>
  1982. </el-form>
  1983. </el-tab-pane>-->
  1984. <!--<el-tab-pane label="我的日志">
  1985. <el-menu
  1986. default-active="1"
  1987. mode="horizontal"
  1988. @select="changeLog"
  1989. >
  1990. <el-menu-item index="1">
  1991. <template #title>登陆日志</template>
  1992. </el-menu-item>
  1993. <el-menu-item index="2">
  1994. <template #title>访问日志</template>
  1995. </el-menu-item>
  1996. </el-menu>
  1997. <vxe-table
  1998. auto-resize
  1999. resizable
  2000. height="400px"
  2001. :loading="loading"
  2002. size="mini"
  2003. ref="logTable"
  2004. show-header-overflow
  2005. show-overflow
  2006. highlight-hover-row
  2007. :menu-config="{}"
  2008. :print-config="{}"
  2009. :import-config="{}"
  2010. :export-config="{}"
  2011. @sort-change="sortChangeHandle"
  2012. :sort-config="{ remote: true }"
  2013. :data="dataList"
  2014. :checkbox-config="{}"
  2015. >
  2016. <vxe-column type="seq" width="40"></vxe-column>
  2017. <vxe-column
  2018. title="操作菜单"
  2019. field="title"
  2020. sortable
  2021. ></vxe-column>
  2022. <vxe-column
  2023. title="耗时(毫秒)"
  2024. field="recordTime"
  2025. sortable
  2026. ></vxe-column>
  2027. <vxe-column
  2028. title="请求参数"
  2029. field="params"
  2030. sortable
  2031. ></vxe-column>
  2032. <vxe-column
  2033. title="返回结果"
  2034. field="result"
  2035. sortable
  2036. ></vxe-column>
  2037. <vxe-column
  2038. title="公司"
  2039. field="createBy.companyDTO.name"
  2040. sort-by="c.name"
  2041. sortable
  2042. ></vxe-column>
  2043. <vxe-column
  2044. title="部门"
  2045. field="createBy.officeDTO.name"
  2046. sort-by="o.name"
  2047. sortable
  2048. ></vxe-column>
  2049. <vxe-column
  2050. title="用户"
  2051. field="createBy.name"
  2052. sort-by="u.name"
  2053. sortable
  2054. ></vxe-column>
  2055. <vxe-column
  2056. title="IP地址"
  2057. field="remoteAddr"
  2058. sortable
  2059. ></vxe-column>
  2060. <vxe-column
  2061. title="访问时间"
  2062. field="createTime"
  2063. sort-by="a.create_time"
  2064. sortable
  2065. ></vxe-column>
  2066. </vxe-table>
  2067. <vxe-pager
  2068. background
  2069. size="mini"
  2070. :current-page="tablePage.currentPage"
  2071. :page-size="tablePage.pageSize"
  2072. :total="tablePage.total"
  2073. :page-sizes="[
  2074. 10,
  2075. 20,
  2076. 100,
  2077. 1000,
  2078. { label: '全量数据', value: 1000000 },
  2079. ]"
  2080. :layouts="[
  2081. 'PrevPage',
  2082. 'JumpNumber',
  2083. 'NextPage',
  2084. 'FullJump',
  2085. 'Sizes',
  2086. 'Total',
  2087. ]"
  2088. @page-change="currentChangeHandle"
  2089. >
  2090. </vxe-pager>
  2091. </el-tab-pane>-->
  2092. </el-tabs>
  2093. </el-card>
  2094. </el-main>
  2095. <!-- 教育经历 -->
  2096. <EducationInfo ref="EducationInfo" @addEduInfo="handleAddEduInfo"></EducationInfo>
  2097. <!-- 工作经历 -->
  2098. <WorkInfo ref="WorkInfo" @addWorkInfo="handleAddWorkInfo"></WorkInfo>
  2099. <!-- 培训经历 -->
  2100. <TrainingInfo ref="TrainingInfo" @addTrainingInfo="handleAddTrainingInfo"></TrainingInfo>
  2101. <!-- 执业资格证书 -->
  2102. <CertificateInfo ref="certificateInfo" @addCertificateInfo="handleAddCertificateInfo"></CertificateInfo>
  2103. <!-- 职称证书 -->
  2104. <SkillInfo ref="skillInfo" @addSkillInfo="handleAddSkillInfo"></SkillInfo>
  2105. <!--外语语种 -->
  2106. <LanguageInfo ref="languageInfo" @addLanguageInfo="handleAddLanguageInfo"></LanguageInfo>
  2107. <!-- 家庭情况 -->
  2108. <FamilyInfo ref="familyInfo" @addFamilyInfo="handleAddFamilyInfo"></FamilyInfo>
  2109. <!-- 表彰与奖励 -->
  2110. <RewardInfo ref="rewardInfo" @addRewardInfo="handleAddRewardInfo"></RewardInfo>
  2111. <!-- 社会及行业职务 -->
  2112. <SocietyInfo ref="societyInfo" @addSocietyInfo="handleAddSocietyInfo"></SocietyInfo>
  2113. <!-- 工作业绩 -->
  2114. <PerformanceInfo ref="performanceInfo" @addPerformanceInfo="handleAddPerformanceInfo"></PerformanceInfo>
  2115. </el-container>
  2116. </template>
  2117. <script>
  2118. import colorTool from "@/utils/color";
  2119. import userService from "@/api/sys/userService";
  2120. import logService from "@/api/sys/logService";
  2121. import postService from "@/api/sys/postService";
  2122. import roleService from "@/api/sys/roleService";
  2123. import enrollmentRegistrationService from '@/api/human/enrollment/EnrollmentRegistrationService'
  2124. import SelectTree from '@/components/treeSelect/treeSelect.vue'
  2125. import dayjs from 'dayjs'
  2126. import EducationInfo from "./components/EducationInfo";
  2127. import WorkInfo from "./components/WorkInfo";
  2128. import TrainingInfo from "./components/TrainingInfo";
  2129. import CertificateInfo from "./components/CertificateInfo";
  2130. import SkillInfo from "./components/SkillInfo";
  2131. import LanguageInfo from "./components/LanguageInfo";
  2132. import FamilyInfo from "./components/FamilyInfo";
  2133. import RewardInfo from "./components/RewardInfo";
  2134. import SocietyInfo from "./components/SocietyInfo";
  2135. import PerformanceInfo from "./components/PerformanceInfo";
  2136. import AttachmentView from './components/AttachmentView'
  2137. import UpLoadComponent from '@/views/common/SFZUpLoadComponent'
  2138. import processService from '@/api/flowable/processService'
  2139. import taskService from '@/api/flowable/taskService'
  2140. import OSSSerivce, {
  2141. httpRequest,
  2142. fileName,
  2143. toHref,
  2144. } from '@/api/sys/OSSService'
  2145. import { flow } from "lodash";
  2146. export default {
  2147. components: {
  2148. SelectTree,
  2149. EducationInfo,
  2150. WorkInfo,
  2151. TrainingInfo,
  2152. CertificateInfo,
  2153. SkillInfo,
  2154. LanguageInfo,
  2155. FamilyInfo,
  2156. RewardInfo,
  2157. SocietyInfo,
  2158. PerformanceInfo,
  2159. AttachmentView,
  2160. UpLoadComponent
  2161. },
  2162. data() {
  2163. var validatePass2 = (rule, value, callback) => {
  2164. if (value !== this.pwdForm.newPassword) {
  2165. callback(new Error("两次输入密码不一致!"));
  2166. } else {
  2167. callback();
  2168. }
  2169. };
  2170. return {
  2171. activeName: "basicInfo",
  2172. rejectMessage: "无",
  2173. uploadKey: "",
  2174. fileType: ['jpg', 'jpeg', 'png', 'webp'],
  2175. bankHideUploadEdit: false, //控制上传点击
  2176. bankHideUploadEdit2: false, //控制上传点击
  2177. bankFileList: [],
  2178. bankFileList2: [],
  2179. bankDialogVisible: false,
  2180. bankDialogVisible2: false,
  2181. gsDialogVisible: false,
  2182. gsDialogVisible2: false,
  2183. gsHideUploadEdit: false, //控制上传点击
  2184. gsHideUploadEdit2: false, //控制上传点击
  2185. gsFileList: [],
  2186. gsFileList2: [],
  2187. hideUploadEdit: false, //隐藏上传按钮
  2188. hideUploadEdit2: false, //隐藏上传按钮
  2189. limitNum: 1,
  2190. fileList: [],
  2191. fileList2: [],
  2192. dialogImageUrl: '',
  2193. dialogVisible: false,
  2194. dialogVisible2: false,
  2195. disabled: false,
  2196. ossService: null,
  2197. roleList: [],
  2198. postList: [],
  2199. fileList: [],
  2200. fileList2: [],
  2201. type: "1",
  2202. colorList: [
  2203. "#409EFF",
  2204. "#009688",
  2205. "#536dfe",
  2206. "#ff5c93",
  2207. "#c62f2f",
  2208. "#fd726d",
  2209. ],
  2210. config: {
  2211. lang: this.$TOOL.data.get("APP_LANG") || this.$CONFIG.LANG,
  2212. theme: this.$TOOL.data.get("APP_THEME") || "default",
  2213. colorPrimary:
  2214. this.$TOOL.data.get("APP_COLOR") ||
  2215. this.$CONFIG.COLOR ||
  2216. "#409EFF",
  2217. },
  2218. userInfo: {},
  2219. generalForm: {
  2220. id: "",
  2221. name: "",
  2222. sign: "",
  2223. loginName: "",
  2224. companyDTO: {
  2225. name: "",
  2226. },
  2227. officeDTO: {
  2228. name: "",
  2229. },
  2230. remarks: "",
  2231. wageCardId: '',//银行卡信息id
  2232. zxBankCardNumber: '',//银行卡信息
  2233. zxAccountHolder: '',
  2234. accountHolderFront: '',
  2235. accountHolderFrontUrl: '',
  2236. accountHolderOpposite: '',
  2237. accountHolderOppositeUrl: '',
  2238. gsAccountHolder: '',
  2239. gsBankCardNumber: '',
  2240. gsAccountHolderFront: '',
  2241. gsAccountHolderFrontUrl: '',
  2242. gsAccountHolderOpposite: '',
  2243. gsAccountHolderOppositeUrl: '',
  2244. id: '',
  2245. userId: '',
  2246. name: '', //姓名
  2247. sex: '', // 性别
  2248. age: '',//年龄
  2249. birthday: '',//生日
  2250. joinIndustryDate: null, // 参加工作日期
  2251. joinWorkDate: null, // 参加行业日期
  2252. politicalOutlook: '',//政治面貌
  2253. nativePlace: '',//籍贯
  2254. nation: '', //民族
  2255. maritalStatus: '',//婚姻
  2256. mobilePhone: '',//联系电话
  2257. idCard: '', //身份证
  2258. idCardFront: [],
  2259. idCardBack: [],
  2260. homeAddress: '',//家庭住址
  2261. permanentAddress: '',//常驻地址
  2262. email: "",
  2263. graduatedFrom: '',
  2264. speciality: '',
  2265. startTime: '',
  2266. endTime: '',
  2267. education: '',
  2268. educationNature: '',
  2269. graduatedOrNot: '',
  2270. englishLevel: '',
  2271. ncre: '',
  2272. department: '',
  2273. entryDate: '',
  2274. contractStartDate: '',
  2275. contractEndDate: '',
  2276. remarks: '',
  2277. type: '',
  2278. onJobStatus: '',
  2279. socialSecurityNumber: '',
  2280. socialSecurityBankNumber: '',
  2281. socialSecurityPictureFront: '',
  2282. socialSecurityPictureFrontUrl: '',
  2283. socialSecurityPictureOpposite: '',
  2284. socialSecurityPictureOppositeUrl: '',
  2285. roleIdList: [],
  2286. postIdList: [],
  2287. ddId: '',
  2288. registrationId: "",
  2289. status: ""
  2290. },
  2291. concatForm: {
  2292. id: "",
  2293. email: "",
  2294. phone: "",
  2295. mobile: "",
  2296. },
  2297. photoForm: {
  2298. id: "",
  2299. photo: "",
  2300. },
  2301. pwdForm: {
  2302. id: this.$store.state.user.id,
  2303. oldPassword: "",
  2304. newPassword: "",
  2305. confirmNewPassword: "",
  2306. },
  2307. dataRule: {
  2308. password: [
  2309. { required: true, message: '原密码不能为空', trigger: 'blur' }
  2310. ],
  2311. newPassword: [
  2312. { required: true, message: '新密码不能为空', trigger: 'blur' },
  2313. {
  2314. validator: (rule, value, callback) => {
  2315. const passwordRegex = /^(?=(.*[A-Z]))(?=(.*[a-z]))(?=(.*\d))|(?=(.*[A-Z]))(?=(.*[a-z]))(?=(.*[!@#$%^&*.,]))|(?=(.*[A-Z]))(?=(.*\d))(?=(.*[!@#$%^&*.,]))|(?=(.*[a-z]))(?=(.*\d))(?=(.*[!@#$%^&*.,]))[A-Za-z\d!@#$%^&*.,]{8,20}$/;
  2316. if (!value) {
  2317. callback(new Error('新的密码不能为空'));
  2318. } else if (!passwordRegex.test(value)) {
  2319. callback(new Error('密码必须包含大写字母、小写字母、数字或特殊字符中的三种,且长度为8到20个字符'));
  2320. } else {
  2321. callback(); // 验证通过
  2322. }
  2323. },
  2324. trigger: 'blur'
  2325. }
  2326. ],
  2327. confirmNewPassword: [
  2328. { required: true, message: '确认密码不能为空', trigger: 'blur' },
  2329. { validator: validatePass2, trigger: 'blur' },
  2330. {
  2331. validator: (rule, value, callback) => {
  2332. const passwordRegex = /^(?=(.*[A-Z]))(?=(.*[a-z]))(?=(.*\d))|(?=(.*[A-Z]))(?=(.*[a-z]))(?=(.*[!@#$%^&*.,]))|(?=(.*[A-Z]))(?=(.*\d))(?=(.*[!@#$%^&*.,]))|(?=(.*[a-z]))(?=(.*\d))(?=(.*[!@#$%^&*.,]))[A-Za-z\d!@#$%^&*.,]{8,20}$/;
  2333. if (!value) {
  2334. callback(new Error('确认密码不能为空'));
  2335. } else if (!passwordRegex.test(value)) {
  2336. callback(new Error('密码必须包含大写字母、小写字母、数字或特殊字符中的三种,且长度为8到20个字符'));
  2337. } else {
  2338. callback(); // 验证通过
  2339. }
  2340. },
  2341. trigger: 'blur'
  2342. }
  2343. ]
  2344. },
  2345. dataList: [],
  2346. tablePage: {
  2347. total: 0,
  2348. currentPage: 1,
  2349. pageSize: 10,
  2350. orders: [{ column: "a.create_time", asc: false }],
  2351. },
  2352. loading: false,
  2353. rule: [
  2354. { required: true, message: "必填项不能为空", trigger: "blur" },
  2355. { validator: validatePass2, trigger: "blur" },
  2356. ],
  2357. changeFlag: [
  2358. true, true, true, true, true, true, true, true, true, true, true
  2359. ],
  2360. activeNames: [],
  2361. //教育经历
  2362. eduInfoList: [
  2363. ],
  2364. // 工作经历
  2365. workInfoList: [
  2366. ],
  2367. // 培训经历
  2368. trainingInfoList: [
  2369. ],
  2370. // 资质证书
  2371. certificateInfoList: [
  2372. ],
  2373. // 专业技能
  2374. skillInfoList: [
  2375. ],
  2376. languageInfoList: [
  2377. ],
  2378. familyInfoList: [
  2379. ],
  2380. rewardInfoList: [
  2381. ],
  2382. societyInfoList: [],
  2383. performanceInfoList: [],
  2384. laborContractInfoList: [],
  2385. auditStatus: "0",
  2386. flowData: [],
  2387. procInsId: ""
  2388. };
  2389. },
  2390. created() {
  2391. this.ossService = new OSSSerivce()
  2392. this.userInfo = this.$TOOL.data.get("USER_INFO");
  2393. var userId = this.userInfo.id;
  2394. if (userId) {
  2395. this.getDataInfo(userId)
  2396. // this.refreshList(userId);
  2397. }
  2398. },
  2399. computed: {
  2400. userId() {
  2401. return this.$store.state.user.id
  2402. }
  2403. },
  2404. watch: {
  2405. "config.theme"(val) {
  2406. document.body.setAttribute("data-theme", val);
  2407. this.$TOOL.data.set("APP_THEME", val);
  2408. },
  2409. "config.lang"(val) {
  2410. this.$i18n.locale = val;
  2411. this.$TOOL.data.set("APP_LANG", val);
  2412. },
  2413. "config.colorPrimary"(val) {
  2414. colorTool.setAppColors(val);
  2415. this.$TOOL.data.set("APP_COLOR", val);
  2416. },
  2417. },
  2418. methods: {
  2419. getDataInfo(userId) {
  2420. this.loading = true
  2421. enrollmentRegistrationService.getUserInfoAudit({ userId: userId }).then(res => {
  2422. if (res) {
  2423. this.procInsId = res.procInsId
  2424. if (res.procInsId) {
  2425. taskService.historicTaskList(
  2426. res.procInsId
  2427. ).then(result => {
  2428. if (res.status == 4) {
  2429. let rejectObj = result.find(temp => {
  2430. return temp.comment.status == "驳回"
  2431. })
  2432. if (rejectObj && rejectObj.comment.message != "") {
  2433. this.rejectMessage = rejectObj.comment.message
  2434. }
  2435. } else if (res.status == 2) {
  2436. this.flowData = result
  2437. // this.$refs.flowRef.setCurrentRow(this.flowData[this.flowData.length - 1]);
  2438. }
  2439. })
  2440. }
  2441. //审核中就展示提交审核的信息
  2442. if (res.status == 2 || res.status == 4) {
  2443. this.auditStatus = res.status
  2444. this.initAudit(res.id, res.status)
  2445. // 完成审核或者已经驳回,就展示最终信息
  2446. } else if (res.status == 1) {
  2447. this.auditStatus = "6"
  2448. this.initAudit(res.id, res.status)
  2449. } else {
  2450. this.auditStatus = "5"
  2451. userService.queryById(userId).then((data) => {
  2452. // this.recover(this.generalForm, data);
  2453. this.recover(this.concatForm, data);
  2454. this.recover(this.photoForm, data);
  2455. });
  2456. this.init(userId)
  2457. }
  2458. } else {
  2459. this.auditStatus = "6"
  2460. userService.queryById(userId).then((data) => {
  2461. // this.recover(this.generalForm, data);
  2462. this.recover(this.concatForm, data);
  2463. this.recover(this.photoForm, data);
  2464. });
  2465. this.init(userId)
  2466. }
  2467. }).catch(() => {
  2468. this.loading = false
  2469. })
  2470. },
  2471. init(userId) {
  2472. this.loading = true;
  2473. enrollmentRegistrationService.findInfoByUserId(userId).then(async (data) => {
  2474. this.fileList = []
  2475. this.fileList2 = []
  2476. this.generalForm = this.recover(this.generalForm, data)
  2477. this.generalForm = JSON.parse(JSON.stringify(this.generalForm))
  2478. if (this.commonJS.isEmpty(this.generalForm.roleIdList)) {
  2479. this.generalForm.roleIdList = []
  2480. }
  2481. if (this.commonJS.isEmpty(this.generalForm.postIdList)) {
  2482. this.generalForm.postIdList = []
  2483. }
  2484. // 教育经历
  2485. if (this.commonJS.isNotEmpty(data.eduInfoList)) {
  2486. this.eduInfoList = data.eduInfoList
  2487. }
  2488. // 工作经历
  2489. if (this.commonJS.isNotEmpty(data.workInfoList)) {
  2490. this.workInfoList = data.workInfoList
  2491. }
  2492. // 培训经历
  2493. if (this.commonJS.isNotEmpty(data.trainingInfoList)) {
  2494. this.trainingInfoList = data.trainingInfoList
  2495. }
  2496. // 资质证书
  2497. if (this.commonJS.isNotEmpty(data.certificateInfoList)) {
  2498. this.certificateInfoList = data.certificateInfoList
  2499. }
  2500. // 专业技能
  2501. if (this.commonJS.isNotEmpty(data.skillInfoList)) {
  2502. this.skillInfoList = data.skillInfoList
  2503. }
  2504. // 外语语种
  2505. if (this.commonJS.isNotEmpty(data.languageInfoList)) {
  2506. this.languageInfoList = data.languageInfoList
  2507. }
  2508. // 家庭情况
  2509. if (this.commonJS.isNotEmpty(data.familyInfoList)) {
  2510. this.familyInfoList = data.familyInfoList
  2511. }
  2512. // 表彰与奖励
  2513. if (this.commonJS.isNotEmpty(data.rewardInfoList)) {
  2514. this.rewardInfoList = data.rewardInfoList
  2515. }
  2516. // 劳动合同
  2517. if (this.commonJS.isNotEmpty(data.laborContractInfoList)) {
  2518. this.laborContractInfoList = data.laborContractInfoList
  2519. }
  2520. // 社会及行业职务
  2521. if (this.commonJS.isNotEmpty(data.societyInfoList)) {
  2522. this.societyInfoList = data.societyInfoList
  2523. }
  2524. //工作业绩
  2525. if (this.commonJS.isNotEmpty(data.performanceInfoList)) {
  2526. this.performanceInfoList = data.performanceInfoList
  2527. }
  2528. if (this.commonJS.isEmpty(this.generalForm.idCardFront)) {
  2529. this.generalForm.idCardFront = []
  2530. }
  2531. if (this.commonJS.isEmpty(this.generalForm.idCardBack)) {
  2532. this.generalForm.idCardBack = []
  2533. }
  2534. this.certificateInfoList.forEach(temp => {
  2535. this.changeType(temp.type, temp)
  2536. })
  2537. this.activeNames[0] = this.eduInfoList.map(item => item.id)
  2538. this.activeNames[1] = this.workInfoList.map(item => item.id)
  2539. this.activeNames[2] = this.trainingInfoList.map(item => item.id)
  2540. this.activeNames[3] = this.certificateInfoList.map(item => item.id)
  2541. this.activeNames[4] = this.skillInfoList.map(item => item.id)
  2542. this.activeNames[5] = this.languageInfoList.map(item => item.id)
  2543. this.activeNames[6] = this.familyInfoList.map(item => item.id)
  2544. this.activeNames[7] = this.rewardInfoList.map(item => item.id)
  2545. this.activeNames[8] = this.laborContractInfoList.map(item => item.id)
  2546. this.activeNames[9] = this.societyInfoList.map(item => item.id)
  2547. this.activeNames[10] = this.performanceInfoList.map(item => item.id)
  2548. //后面的fileType是限制上传类型
  2549. this.$refs.idCardBack.clearUpload()
  2550. this.$refs.idCardFront.clearUpload()
  2551. this.$refs.idCardFront.newUpload('edit', this.generalForm.idCardFront, 'idCard', null, null, null, null, null, [...this.fileType])
  2552. this.$refs.idCardBack.newUpload('edit', this.generalForm.idCardBack, 'idCard', null, null, null, null, null, [...this.fileType])
  2553. if (this.commonJS.isNotEmpty(this.generalForm.socialSecurityPictureFront)) {
  2554. await this.ossService.getTemporaryUrl(this.generalForm.socialSecurityPictureFront).then((data) => {
  2555. let file = {
  2556. url: data
  2557. }
  2558. this.fileList.push(file)
  2559. })
  2560. }
  2561. if (this.commonJS.isNotEmpty(this.generalForm.socialSecurityPictureOpposite)) {
  2562. await this.ossService.getTemporaryUrl(this.generalForm.socialSecurityPictureOpposite).then((data) => {
  2563. let file = {
  2564. url: data
  2565. }
  2566. this.fileList2.push(file)
  2567. })
  2568. }
  2569. if (this.commonJS.isNotEmpty(this.generalForm.accountHolderFront)) {
  2570. await this.ossService.getTemporaryUrl(this.generalForm.accountHolderFront).then((data) => {
  2571. console.log('data', data)
  2572. let file = {
  2573. url: data
  2574. }
  2575. this.bankFileList.push(file)
  2576. })
  2577. }
  2578. if (this.commonJS.isNotEmpty(this.generalForm.accountHolderOpposite)) {
  2579. console.log('123')
  2580. await this.ossService.getTemporaryUrl(this.generalForm.accountHolderOpposite).then((data) => {
  2581. let file = {
  2582. url: data
  2583. }
  2584. this.bankFileList2.push(file)
  2585. })
  2586. }
  2587. if (this.commonJS.isNotEmpty(this.generalForm.gsAccountHolderFront)) {
  2588. await this.ossService.getTemporaryUrl(this.generalForm.gsAccountHolderFront).then((data) => {
  2589. let file = {
  2590. url: data
  2591. }
  2592. this.gsFileList.push(file)
  2593. })
  2594. }
  2595. if (this.commonJS.isNotEmpty(this.generalForm.gsAccountHolderOpposite)) {
  2596. await this.ossService.getTemporaryUrl(this.generalForm.gsAccountHolderOpposite).then((data) => {
  2597. let file = {
  2598. url: data
  2599. }
  2600. this.gsFileList2.push(file)
  2601. })
  2602. }
  2603. if (this.generalForm.type == 5) {
  2604. roleService.list2(this.generalForm.department).then((data) => {
  2605. this.roleList = data
  2606. })
  2607. postService.list2(this.generalForm.department).then((data) => {
  2608. this.postList = data
  2609. })
  2610. }
  2611. this.uploadKey = Date.now().toString();
  2612. this.loading = false
  2613. }).catch(err => {
  2614. this.loading = false;
  2615. })
  2616. },
  2617. initAudit(id, status) {
  2618. this.generalForm = {
  2619. id: '',
  2620. userId: '',
  2621. name: '', //姓名
  2622. sex: '', // 性别
  2623. age: '',//年龄
  2624. birthday: '',//生日
  2625. joinIndustryDate: null, // 参加工作日期
  2626. joinWorkDate: null, // 参加行业日期
  2627. politicalOutlook: '',//政治面貌
  2628. nativePlace: '',//籍贯
  2629. nation: '', //民族
  2630. maritalStatus: '',//婚姻
  2631. mobilePhone: '',//联系电话
  2632. idCard: '', //身份证
  2633. idCardFront: [],
  2634. idCardBack: [],
  2635. homeAddress: '',//家庭住址
  2636. permanentAddress: '',//常驻地址
  2637. email: "",
  2638. registrationId: "",
  2639. status: ""
  2640. }
  2641. this.generalForm.id = id
  2642. this.visible = true
  2643. this.loading = false
  2644. this.$nextTick(() => {
  2645. this.loading = true
  2646. enrollmentRegistrationService.findAuditInfoById(
  2647. {
  2648. id: this.generalForm.id,
  2649. status: status
  2650. }
  2651. ).then(async (data) => {
  2652. this.generalForm = this.recover(this.generalForm, data)
  2653. this.generalForm = JSON.parse(JSON.stringify(this.generalForm))
  2654. this.eduInfoList = data.eduInfoList
  2655. this.certificateInfoList = data.certificateInfoList
  2656. this.skillInfoList = data.skillInfoList
  2657. this.familyInfoList = data.familyInfoList
  2658. this.languageInfoList = data.languageInfoList
  2659. this.trainingInfoList = data.trainingInfoList
  2660. this.rewardInfoList = data.rewardInfoList
  2661. this.laborContractInfoList = data.laborContractInfoList
  2662. this.workInfoList = data.workInfoList
  2663. this.societyInfoList = data.societyInfoList
  2664. this.performanceInfoList = data.performanceInfoList
  2665. this.concatForm.email = data.email
  2666. this.activeNames[0] = this.eduInfoList.map(item => item.id)
  2667. this.activeNames[1] = this.workInfoList.map(item => item.id)
  2668. this.activeNames[2] = this.trainingInfoList.map(item => item.id)
  2669. this.activeNames[3] = this.certificateInfoList.map(item => item.id)
  2670. this.activeNames[4] = this.skillInfoList.map(item => item.id)
  2671. this.activeNames[5] = this.languageInfoList.map(item => item.id)
  2672. this.activeNames[6] = this.familyInfoList.map(item => item.id)
  2673. this.activeNames[7] = this.rewardInfoList.map(item => item.id)
  2674. this.activeNames[8] = this.laborContractInfoList.map(item => item.id)
  2675. this.activeNames[9] = this.societyInfoList.map(item => item.id)
  2676. this.activeNames[10] = this.performanceInfoList.map(item => item.id)
  2677. if (this.commonJS.isEmpty(this.generalForm.idCardFront)) {
  2678. this.generalForm.idCardFront = []
  2679. }
  2680. if (this.commonJS.isEmpty(this.generalForm.idCardBack)) {
  2681. this.generalForm.idCardBack = []
  2682. }
  2683. //后面的fileType是限制上传类型
  2684. let method = ""
  2685. if (this.auditStatus == 2) {
  2686. method = "view"
  2687. }
  2688. if (this.auditStatus == 4) {
  2689. method = "edit"
  2690. }
  2691. this.certificateInfoList.forEach(temp => {
  2692. this.changeType(temp.type, temp)
  2693. })
  2694. this.$refs.idCardFront.clearUpload()
  2695. this.$refs.idCardBack.clearUpload()
  2696. this.$refs.idCardFront.newUpload(method, this.generalForm.idCardFront, 'idCard', null, null, null, null, null, [...this.fileType])
  2697. this.$refs.idCardBack.newUpload(method, this.generalForm.idCardBack, 'idCard', null, null, null, null, null, [...this.fileType])
  2698. this.uploadKey = Date.now().toString();
  2699. this.loading = false
  2700. })
  2701. })
  2702. },
  2703. async submitGeneralForm() {
  2704. let valid = await this.$refs["generalForm"].validate();
  2705. if (valid) {
  2706. const loading = this.$loading();
  2707. let data = await userService.saveInfo(this.generalForm);
  2708. let { user } = await userService.info();
  2709. this.userInfo = user;
  2710. this.$TOOL.data.set("USER_INFO", user);
  2711. loading.close();
  2712. this.$message.success(data);
  2713. }
  2714. },
  2715. async submitConcatForm() {
  2716. // let valid = await this.$refs["concatForm"].validate();
  2717. // if (valid) {
  2718. const loading = this.$loading();
  2719. let data = await userService.saveInfo(this.concatForm);
  2720. let { user } = await userService.info();
  2721. this.userInfo = user;
  2722. // this.$TOOL.data.set("USER_INFO", user);
  2723. localStorage.setItem("USER_INFO", JSON.stringify(user))
  2724. loading.close();
  2725. // this.$message.success(data);
  2726. // }
  2727. },
  2728. async submitUserInfo() {
  2729. this.$confirm('确定提交审批吗?', '提示', {
  2730. confirmButtonText: '确定',
  2731. cancelButtonText: '取消',
  2732. type: 'warning'
  2733. }).then(() => {
  2734. if (this.$refs.idCardFront.checkProgress() || this.$refs.idCardBack.checkProgress()) {
  2735. return
  2736. }
  2737. if (this.$refs.idCardFront.getDataList().length == 0 || this.$refs.idCardBack.getDataList().length == 0) {
  2738. this.$message.error("请确保已完整上传身份证正反面照片,再进行提交")
  2739. return
  2740. }
  2741. // if (!this.generalForm.idCard || this.generalForm.idCard == "" || this.generalForm.idCard == null) {
  2742. // this.$message.error("身份证号码未填写")
  2743. // return
  2744. // }
  2745. this.$refs['generalForm'].validate((valid) => {
  2746. if (valid) {
  2747. this.loading = true
  2748. this.submitConcatForm()
  2749. this.submitPhotoForm()
  2750. this.generalForm.idCardFront = this.$refs.idCardFront.getDataList()
  2751. this.generalForm.idCardBack = this.$refs.idCardBack.getDataList()
  2752. this.generalForm.email = this.concatForm.email
  2753. this.generalForm.eduInfoList = this.eduInfoList
  2754. this.generalForm.workInfoList = this.workInfoList
  2755. this.generalForm.certificateInfoList = this.certificateInfoList
  2756. this.generalForm.skillInfoList = this.skillInfoList
  2757. this.generalForm.rewardInfoList = this.rewardInfoList
  2758. this.generalForm.familyInfoList = this.familyInfoList
  2759. this.generalForm.trainingInfoList = this.trainingInfoList
  2760. this.generalForm.languageInfoList = this.languageInfoList
  2761. this.generalForm.societyInfoList = this.societyInfoList
  2762. this.generalForm.performanceInfoList = this.performanceInfoList
  2763. enrollmentRegistrationService.updateInfoAudit(this.generalForm).then((data) => {
  2764. this.close()
  2765. this.$message.success(data.msg)
  2766. this.$refs.idCardBack.clearUpload()
  2767. this.$refs.idCardFront.clearUpload()
  2768. this.getDataInfo(this.userInfo.id)
  2769. this.loading = false
  2770. }).catch(() => {
  2771. this.loading = false
  2772. })
  2773. } else {
  2774. if (!this.generalForm.idCard || this.generalForm.idCard == "" || this.generalForm.idCard == null) {
  2775. this.$message.error("身份证号码未填写")
  2776. }
  2777. this.activeName = "basicInfo"
  2778. }
  2779. })
  2780. }).catch(() => {
  2781. });
  2782. },
  2783. async updateInfoTemporary() {
  2784. this.$confirm('确定暂存信息吗?', '提示', {
  2785. confirmButtonText: '确定',
  2786. cancelButtonText: '取消',
  2787. type: 'warning'
  2788. }).then(() => {
  2789. this.loading = true
  2790. this.submitConcatForm()
  2791. this.submitPhotoForm()
  2792. this.generalForm.idCardFront = this.$refs.idCardFront.getDataList()
  2793. this.generalForm.idCardBack = this.$refs.idCardBack.getDataList()
  2794. this.generalForm.email = this.concatForm.email
  2795. enrollmentRegistrationService.updateInfoTemporary(this.generalForm).then((data) => {
  2796. this.close()
  2797. this.$message.success(data.msg)
  2798. this.$refs.idCardBack.clearUpload()
  2799. this.$refs.idCardFront.clearUpload()
  2800. this.getDataInfo(this.userInfo.id)
  2801. this.loading = false
  2802. }).catch(() => {
  2803. this.loading = false
  2804. })
  2805. }).catch(() => {
  2806. });
  2807. },
  2808. close() {
  2809. this.$refs.generalForm.resetFields()
  2810. this.fileList = []
  2811. this.fileList2 = []
  2812. this.bankFileList = []
  2813. this.bankFileList2 = []
  2814. this.gsFileList = []
  2815. this.gsFileList2 = []
  2816. this.visible = false
  2817. },
  2818. async submitPhotoForm() {
  2819. const loading = this.$loading();
  2820. let data = await userService.saveInfo(this.photoForm);
  2821. let { user } = await userService.info();
  2822. this.userInfo = user;
  2823. this.$TOOL.data.set("USER_INFO", user);
  2824. loading.close();
  2825. // this.$message.success(data);
  2826. },
  2827. async submitPwdForm() {
  2828. console.log(this.pwdForm)
  2829. let valid = await this.$refs["pwdForm"].validate();
  2830. console.log(valid)
  2831. if (valid) {
  2832. const loading = this.$loading();
  2833. try {
  2834. let data = await userService.saveInfo(this.pwdForm); // 可能抛出错误的请求
  2835. // 更新用户信息
  2836. let { user } = await userService.info();
  2837. this.userInfo = user;
  2838. this.$TOOL.data.set("USER_INFO", user);
  2839. this.$message.success(data); // 成功信息提示
  2840. } catch (error) {
  2841. // 捕获请求中的异常
  2842. /*if (error.response && error.response.status === 400) {
  2843. // 使用后端返回的错误信息提示用户
  2844. this.$message.error(error.response.data); // 比如 "修改密码失败,旧密码错误!"
  2845. } else {
  2846. this.$message.error("请求失败,请稍后重试");
  2847. console.error("请求失败", error);
  2848. }*/
  2849. } finally {
  2850. loading.close(); // 确保 loading 状态关闭
  2851. }
  2852. }
  2853. }
  2854. ,
  2855. // 获取数据列表
  2856. refreshList() {
  2857. this.loading = true;
  2858. logService
  2859. .mine({
  2860. current: this.tablePage.currentPage,
  2861. size: this.tablePage.pageSize,
  2862. orders: this.tablePage.orders,
  2863. })
  2864. .then((data) => {
  2865. this.dataList = data.records;
  2866. this.tablePage.total = data.total;
  2867. this.loading = false;
  2868. });
  2869. },
  2870. changeLog(index) {
  2871. this.type = index;
  2872. this.refreshList();
  2873. },
  2874. // 当前页
  2875. currentChangeHandle({ currentPage, pageSize }) {
  2876. this.tablePage.currentPage = currentPage;
  2877. this.tablePage.pageSize = pageSize;
  2878. this.refreshList();
  2879. },
  2880. // 排序
  2881. sortChangeHandle(obj) {
  2882. this.tablePage.orders = [];
  2883. if (obj.order != null) {
  2884. this.tablePage.orders.push({
  2885. column:
  2886. obj.column.sortBy || this.$utils.toLine(obj.property),
  2887. asc: obj.order === "asc",
  2888. });
  2889. } else {
  2890. this.tablePage.orders = [
  2891. { column: "a.create_time", asc: false },
  2892. ];
  2893. }
  2894. this.refreshList();
  2895. },
  2896. //身份证号码唯一性判断
  2897. idCardOnly(idCard, id) {
  2898. enrollmentRegistrationService.findIdCardOnly(idCard, this.userInfo.id).then((data) => {
  2899. if (data != 0) {
  2900. this.$message.error('身份证号码已存在,请重新确认')
  2901. this.generalForm.idCard = ''
  2902. throw new Error('身份证号码已存在,请重新确认')
  2903. } else {
  2904. let sex = null
  2905. let birth = null
  2906. let myDate = new Date()
  2907. let month = myDate.getMonth() + 1
  2908. let day = myDate.getDate()
  2909. let age = 0
  2910. if (idCard.length === 18) {
  2911. let birthMonth = parseInt(idCard.substring(10, 12))
  2912. let birthDay = parseInt(idCard.substring(12, 14))
  2913. age = myDate.getFullYear() - idCard.substring(6, 10) - 1
  2914. sex = idCard.substring(16, 17)
  2915. birth = idCard.substring(6, 10) + '-' + idCard.substring(10, 12) + '-' + idCard.substring(12, 14)
  2916. // eslint-disable-next-line no-mixed-operators
  2917. if (birthMonth < month ||
  2918. (birthMonth === month && birthDay <= day)) {
  2919. age++;
  2920. }
  2921. }
  2922. if (idCard.length === 15) {
  2923. age = myDate.getFullYear() - idCard.substring(6, 8) - 1901
  2924. sex = idCard.substring(13, 14)
  2925. birth = '19' + idCard.substring(6, 8) + '-' + idCard.substring(8, 10) + '-' + idCard.substring(10, 12)
  2926. // eslint-disable-next-line no-mixed-operators
  2927. if (idCard.substring(8, 10) < month || idCard.substring(8, 10) === month && idCard.substring(10, 12) <= day) age++
  2928. }
  2929. if (sex % 2 === 0) {
  2930. sex = '2' // 性别代码 1代表男,2代表女,暂时不涉及其他类型性别
  2931. } else {
  2932. sex = '1'
  2933. }
  2934. //获取户籍所在地
  2935. const regionCode = idCard.substring(0, 6);
  2936. this.generalForm.nativePlace = regionCode
  2937. this.generalForm.age = age
  2938. this.generalForm.sex = sex
  2939. this.generalForm.birthday = birth
  2940. return { age, sex, birth }
  2941. }
  2942. })
  2943. },
  2944. //联系电话唯一性判断
  2945. mobilePhoneOnly(mobilePhone) {
  2946. if (!this.validateXG.isPhoneOrMobile(mobilePhone)) {
  2947. this.$message.error('”联系电话“填写不正确,请重新填写')
  2948. this.loading = false
  2949. this.generalForm.mobilePhone = ''
  2950. throw new Error('”联系电话“填写不正确,请重新填写')
  2951. }
  2952. enrollmentRegistrationService.findMobilePhoneOnly(mobilePhone).then((data) => {
  2953. if (data !== 0) {
  2954. this.$message.error('联系电话已存在,请重新确认')
  2955. this.generalForm.mobilePhone = ''
  2956. throw new Error('联系电话已存在,请重新确认')
  2957. }
  2958. })
  2959. },
  2960. //邮箱验证
  2961. checkEmail(email) {
  2962. if (!this.validateXG.isEmail(email)) {
  2963. this.$message.error('邮箱格式不正确,请重新填写')
  2964. this.loading = false
  2965. this.concatForm.email = ''
  2966. throw new Error('邮箱格式不正确,请重新填写')
  2967. }
  2968. },
  2969. checkBankNumber(bankNumber, type) {
  2970. if (!this.validateXG.isBankNum(bankNumber)) {
  2971. if (type === 'zx') {
  2972. this.generalForm.zxBankCardNumber = ''
  2973. } else if (type === 'gs') {
  2974. this.generalForm.gsBankCardNumber = ''
  2975. } else {
  2976. this.$message.error('请输入正确的社保银行卡号')
  2977. this.generalForm.socialSecurityBankNumber = ''
  2978. throw new Error('请输入正确的社保银行卡号')
  2979. }
  2980. this.$message.error('请输入正确的银行卡号')
  2981. throw new Error('请输入正确的银行卡号')
  2982. }
  2983. },
  2984. handleAvatarSuccess(res, file, fileList, index, val) {
  2985. console.log('foleList', fileList)
  2986. if (val === 'front') {
  2987. this.generalForm.socialSecurityPictureFront = '/' + res.url
  2988. this.generalForm.socialSecurityPictureFrontUrl = res.lsUrl
  2989. console.log('res.url', res.url)
  2990. console.log('res.lsUrl', res.lsUrl)
  2991. }
  2992. this.hideUploadEdit = true
  2993. this.$forceUpdate()
  2994. },
  2995. handleAvatarSuccess2(res, file, fileList, index, val) {
  2996. console.log('foleList', fileList)
  2997. if (val === 'front') {
  2998. this.generalForm.socialSecurityPictureOpposite = '/' + res.url
  2999. this.generalForm.socialSecurityPictureOppositeUrl = res.lsUrl
  3000. }
  3001. this.hideUploadEdit = true
  3002. this.$forceUpdate()
  3003. },
  3004. onPreview(url) {
  3005. if (url !== '' && url !== undefined && url !== null) {
  3006. this.url = url
  3007. this.showViewer = true
  3008. }
  3009. },
  3010. checkIsPic(file) {
  3011. return this.commonJS.isPic(file)
  3012. },
  3013. validateInput() {
  3014. // 使用正则表达式验证输入内容,禁止中文
  3015. this.generalForm.socialSecurityNumber = this.generalForm.socialSecurityNumber.replace(/[\u4e00-\u9fa5]/g, '');
  3016. },
  3017. handleUploadSuccess(response, file, fileList) {
  3018. return this.handleAvatarSuccess(response, file, fileList, null, 'front')
  3019. },
  3020. handleUploadSuccess2(response, file, fileList) {
  3021. return this.handleAvatarSuccess2(response, file, fileList, null, 'front')
  3022. },
  3023. bankHandleUploadSuccess(response, file, fileList) {
  3024. return this.bankHandleAvatarSuccess(response, file, fileList, null, 'front')
  3025. },
  3026. bankHandleAvatarSuccess(res, file, fileList, index, val) {
  3027. if (val === 'front') {
  3028. this.generalForm.accountHolderFront = '/' + res.url
  3029. this.generalForm.accountHolderFrontUrl = res.lsUrl
  3030. }
  3031. this.bankHideUploadEdit = true
  3032. this.$forceUpdate()
  3033. },
  3034. bankHandlePictureCardPreview(file) {
  3035. this.generalForm.accountHolderFrontUrl = file.url
  3036. this.bankDialogVisible = true;
  3037. },
  3038. bankHandleDownload(file) {
  3039. let file2 = {
  3040. url: this.generalForm.accountHolderFront
  3041. }
  3042. toHref(file2)
  3043. },
  3044. bankHandleRemove(file, fileList) {
  3045. this.bankHideUploadEdit = false
  3046. // 如果需要删除图片信息,可以根据file或其他标识从相应的数据结构中删除信息
  3047. const fileIndex = this.bankFileList.indexOf(file);
  3048. if (fileIndex !== -1) {
  3049. this.bankFileList.splice(fileIndex, 1); // 从fileList中删除该图片信息
  3050. this.generalForm.accountHolderFront = ""
  3051. }
  3052. },
  3053. bankHandleUploadSuccess2(response, file, fileList) {
  3054. return this.bankHandleAvatarSuccess2(response, file, fileList, null, 'front')
  3055. },
  3056. bankHandleAvatarSuccess2(res, file, fileList, index, val) {
  3057. if (val === 'front') {
  3058. this.generalForm.accountHolderOpposite = '/' + res.url
  3059. this.generalForm.accountHolderOppositeUrl = res.lsUrl
  3060. }
  3061. this.bankHideUploadEdit2 = true
  3062. this.$forceUpdate()
  3063. },
  3064. bankHandlePictureCardPreview2(file) {
  3065. this.generalForm.accountHolderOppositeUrl = file.url
  3066. this.bankDialogVisible2 = true;
  3067. },
  3068. bankHandleDownload2(file) {
  3069. let file2 = {
  3070. url: this.generalForm.accountHolderOpposite
  3071. }
  3072. toHref(file2)
  3073. },
  3074. bankHandleRemove2(file, fileList) {
  3075. this.hideUploadEdit2 = false
  3076. // 如果需要删除图片信息,可以根据file或其他标识从相应的数据结构中删除信息
  3077. const fileIndex = this.bankFileList2.indexOf(file);
  3078. if (fileIndex !== -1) {
  3079. this.bankFileList2.splice(fileIndex, 1); // 从fileList中删除该图片信息
  3080. this.generalForm.accountHolderOpposite = ""
  3081. }
  3082. },
  3083. gsHandleUploadSuccess(response, file, fileList) {
  3084. return this.gsHandleAvatarSuccess(response, file, fileList, null, 'front')
  3085. },
  3086. gsHandleUploadSuccess2(response, file, fileList) {
  3087. return this.gsHandleAvatarSuccess2(response, file, fileList, null, 'front')
  3088. },
  3089. gsHandleAvatarSuccess(res, file, fileList, index, val) {
  3090. if (val === 'front') {
  3091. this.generalForm.gsAccountHolderFront = '/' + res.url
  3092. this.generalForm.gsAccountHolderFrontUrl = res.lsUrl
  3093. }
  3094. this.hideUploadEdit = true
  3095. this.$forceUpdate()
  3096. },
  3097. gsHandleAvatarSuccess2(res, file, fileList, index, val) {
  3098. if (val === 'front') {
  3099. this.generalForm.gsAccountHolderOpposite = '/' + res.url
  3100. this.generalForm.gsAccountHolderOppositeUrl = res.lsUrl
  3101. }
  3102. this.hideUploadEdit2 = true
  3103. this.$forceUpdate()
  3104. },
  3105. gsHandlePictureCardPreview(file) {
  3106. this.dialogImageUrl = file.url;
  3107. this.generalForm.gsAccountHolderFrontUrl = file.url
  3108. this.gsDialogVisible = true;
  3109. },
  3110. gsHandlePictureCardPreview2(file) {
  3111. this.generalForm.gsAccountHolderOppositeUrl = file.url
  3112. this.gsDialogVisible2 = true;
  3113. },
  3114. gsHandleDownload(file) {
  3115. let file2 = {
  3116. url: this.generalForm.gsAccountHolderFront
  3117. }
  3118. toHref(file2)
  3119. },
  3120. gsHandleDownload2(file) {
  3121. let file2 = {
  3122. url: this.generalForm.gsAccountHolderOpposite
  3123. }
  3124. toHref(file2)
  3125. },
  3126. gsHandleRemove(file, fileList) {
  3127. this.gsHideUploadEdit = false
  3128. // 如果需要删除图片信息,可以根据file或其他标识从相应的数据结构中删除信息
  3129. const fileIndex = this.gsFileList.indexOf(file);
  3130. if (fileIndex !== -1) {
  3131. this.gsFileList.splice(fileIndex, 1); // 从fileList中删除该图片信息
  3132. this.generalForm.gsAccountHolderFront = ""
  3133. }
  3134. },
  3135. gsHandleRemove2(file, fileList) {
  3136. this.gsHideUploadEdit2 = false
  3137. // 如果需要删除图片信息,可以根据file或其他标识从相应的数据结构中删除信息
  3138. const fileIndex = this.gsFileList2.indexOf(file);
  3139. if (fileIndex !== -1) {
  3140. this.gsFileList2.splice(fileIndex, 1); // 从fileList中删除该图片信息
  3141. this.generalForm.gsAccountHolderOpposite = ""
  3142. }
  3143. },
  3144. // 日期格式化
  3145. handleDateFormatter(dateStr) {
  3146. if (!dateStr) return ''; // 如果为空,返回空字符串
  3147. return dayjs(dateStr).format('YYYY年MM月DD日');
  3148. },
  3149. changeInfoList(index) {
  3150. this.changeFlag[index] = !this.changeFlag[index]
  3151. },
  3152. // 教育经历
  3153. addEdu() {
  3154. this.$refs.EducationInfo.init("add", null, this.userId)
  3155. },
  3156. editEdu(row) {
  3157. this.$refs.EducationInfo.init("edit", row.id, this.userId)
  3158. },
  3159. delEdu(row) {
  3160. this.$confirm('确定删除此条教育经历信息吗?', '提示', {
  3161. confirmButtonText: '确定',
  3162. cancelButtonText: '取消',
  3163. type: 'warning'
  3164. }).then(() => {
  3165. // 暂存数据删除
  3166. if (row.status == "1") {
  3167. this.loading = true
  3168. enrollmentRegistrationService.deleteEduInfoById(row.id).then(res => {
  3169. this.$message.success(res)
  3170. this.loading = false
  3171. this.handleGetEduInfo()
  3172. })
  3173. } else {
  3174. this.eduInfoList = this.eduInfoList.filter(item => item.id != row.id)
  3175. this.$message.success("操作成功")
  3176. }
  3177. }).catch(() => {
  3178. });
  3179. },
  3180. handleAddEduInfo(id) {
  3181. // const { id } = row
  3182. // let index = this.eduInfoList.findIndex(item => item.id === row.id)
  3183. // if (index === -1) {
  3184. // // 不存在就新增
  3185. // this.eduInfoList.push(row)
  3186. // } else {
  3187. // // 存在就更新
  3188. // this.eduInfoList[index] = row
  3189. // this.eduInfoList[index].degreeFile = row.degreeFile
  3190. // this.eduInfoList[index].educationFile = row.educationFile
  3191. // }
  3192. // if (!this.activeNames[0].includes(id)) {
  3193. // this.activeNames[0].push(id);
  3194. // }
  3195. // this.loading = true
  3196. // enrollmentRegistrationService.findEduAuditList({
  3197. // userId: this.userInfo.id
  3198. // }).then(res => {
  3199. // this.eduInfoList = res
  3200. // this.loading = false
  3201. // this.uploadKey = Date.now().toString();
  3202. // this.activeNames[0] = []
  3203. // res.forEach(item => {
  3204. // this.activeNames[0].push(item.id);
  3205. // })
  3206. // }).catch(err => {
  3207. // this.loading = false
  3208. // })
  3209. this.getDataInfo(this.userInfo.id)
  3210. },
  3211. handleGetEduInfo() {
  3212. // this.loading = true
  3213. // enrollmentRegistrationService.findEduAuditList({
  3214. // userId: this.userId
  3215. // }).then(res => {
  3216. // this.eduInfoList = res
  3217. // this.loading = false
  3218. // }).catch(err => {
  3219. // this.loading = false
  3220. // })
  3221. this.getDataInfo(this.userInfo.id)
  3222. },
  3223. // 工作经历处理
  3224. addWork() {
  3225. this.$refs.WorkInfo.init("add", null, this.userId)
  3226. },
  3227. editWork(row) {
  3228. this.$refs.WorkInfo.init("edit", row.id, this.userId)
  3229. },
  3230. delWork(row) {
  3231. this.$confirm('确定删除此条工作经历信息吗?', '提示', {
  3232. confirmButtonText: '确定',
  3233. cancelButtonText: '取消',
  3234. type: 'warning'
  3235. }).then(() => {
  3236. // 暂存数据删除
  3237. if (row.status == "1") {
  3238. this.loading = true
  3239. enrollmentRegistrationService.deleteWorkInfoById(row.id).then(res => {
  3240. this.$message.success(res)
  3241. this.loading = false
  3242. this.handleGetWorkInfo()
  3243. })
  3244. } else {
  3245. this.workInfoList = this.workInfoList.filter(item => item.id != row.id)
  3246. this.$message.success("操作成功")
  3247. }
  3248. }).catch(() => {
  3249. });
  3250. },
  3251. handleAddWorkInfo(row) {
  3252. // const { id } = row
  3253. // let index = this.workInfoList.findIndex(item => item.id === row.id)
  3254. // if (index === -1) {
  3255. // // 不存在就新增
  3256. // this.workInfoList.push(row)
  3257. // this.activeNames[1].push(row.id)
  3258. // } else {
  3259. // // 存在就更新
  3260. // this.workInfoList[index] = row
  3261. // }
  3262. // if (!this.activeNames[1].includes(id)) {
  3263. // this.activeNames[1].push(id);
  3264. // }
  3265. // this.uploadKey = Date.now().toString();
  3266. this.loading = true
  3267. // enrollmentRegistrationService.findWorkAuditList({
  3268. // userId: this.userInfo.id,
  3269. // }).then(res => {
  3270. // this.workInfoList = res
  3271. // this.loading = false
  3272. // this.uploadKey = Date.now().toString();
  3273. // this.activeNames[1] = []
  3274. // res.forEach(item => {
  3275. // this.activeNames[1].push(item.id);
  3276. // })
  3277. // }).catch(err => {
  3278. // this.loading = false
  3279. // })
  3280. this.getDataInfo(this.userInfo.id)
  3281. },
  3282. handleGetWorkInfo() {
  3283. this.getDataInfo(this.userInfo.id)
  3284. // enrollmentRegistrationService.findWorkAuditList({
  3285. // userId: this.userId,
  3286. // }).then(res => {
  3287. // this.workInfoList = res
  3288. // })
  3289. },
  3290. //培训经历处理
  3291. addTraining() {
  3292. this.$refs.TrainingInfo.init("add", null, this.userId)
  3293. },
  3294. editTraining(row) {
  3295. this.$refs.TrainingInfo.init("edit", row.id, this.userId)
  3296. },
  3297. delTraining(row) {
  3298. this.$confirm('确定删除此条培训经历信息吗?', '提示', {
  3299. confirmButtonText: '确定',
  3300. cancelButtonText: '取消',
  3301. type: 'warning'
  3302. }).then(() => {
  3303. // 暂存数据删除
  3304. if (row.status == "1") {
  3305. this.loading = true
  3306. enrollmentRegistrationService.deleteTrainingInfoById(row.id).then(res => {
  3307. this.$message.success(res)
  3308. this.loading = false
  3309. this.handleGetTrainingInfo()
  3310. })
  3311. } else {
  3312. this.trainingInfoList = this.trainingInfoList.filter(item => item.id !== row.id)
  3313. this.$message.success("操作成功")
  3314. }
  3315. }).catch(() => {
  3316. });
  3317. },
  3318. handleAddTrainingInfo(row) {
  3319. // const { id } = row;
  3320. // let index = this.trainingInfoList.findIndex(item => item.id === row.id)
  3321. // if (index === -1) {
  3322. // // 不存在就新增
  3323. // this.trainingInfoList.push(row)
  3324. // } else {
  3325. // // 存在就更新
  3326. // this.trainingInfoList[index] = row
  3327. // }
  3328. // if (!this.activeNames[2].includes(id)) {
  3329. // this.activeNames[2].push(id);
  3330. // }
  3331. // this.uploadKey = Date.now().toString();
  3332. // this.loading = true
  3333. // enrollmentRegistrationService.findTrainingAuditList({
  3334. // userId: this.userInfo.id
  3335. // }).then(res => {
  3336. // this.trainingInfoList = res
  3337. // this.loading = false
  3338. // this.uploadKey = Date.now().toString();
  3339. // this.activeNames[2] = []
  3340. // res.forEach(item => {
  3341. // this.activeNames[2].push(item.id);
  3342. // })
  3343. // }).catch(err => {
  3344. // this.loading = false
  3345. // })
  3346. this.getDataInfo(this.userInfo.id)
  3347. },
  3348. handleGetTrainingInfo() {
  3349. this.getDataInfo(this.userInfo.id)
  3350. // enrollmentRegistrationService.findTrainingAuditList({
  3351. // userId: this.userId
  3352. // }).then(res => {
  3353. // console.log(res);
  3354. // this.trainingInfoList = res
  3355. // })
  3356. },
  3357. //资质证书处理
  3358. addCertificate() {
  3359. this.$refs.certificateInfo.init("add", null, this.userId)
  3360. },
  3361. editCertificate(row) {
  3362. this.$refs.certificateInfo.init("edit", row.id, this.userId)
  3363. },
  3364. delCertificate(row) {
  3365. this.$confirm('确定删除此条执业资格证书信息吗?', '提示', {
  3366. confirmButtonText: '确定',
  3367. cancelButtonText: '取消',
  3368. type: 'warning'
  3369. }).then(() => {
  3370. // 暂存数据删除
  3371. if (row.status == "1") {
  3372. this.loading = true
  3373. enrollmentRegistrationService.deleteCertificateInfoById(row.id).then(res => {
  3374. this.$message.success(res)
  3375. this.loading = false
  3376. this.handleGetCertificateInfo()
  3377. })
  3378. } else {
  3379. this.certificateInfoList = this.certificateInfoList.filter(item => item.id !== row.id)
  3380. this.$message.success("操作成功")
  3381. }
  3382. }).catch(() => {
  3383. });
  3384. },
  3385. handleAddCertificateInfo(row) {
  3386. // const { id } = row
  3387. // let index = this.certificateInfoList.findIndex(item => item.id === row.id)
  3388. // if (index === -1) {
  3389. // // 不存在就新增
  3390. // this.certificateInfoList.push(row)
  3391. // } else {
  3392. // // 存在就更新
  3393. // this.certificateInfoList[index] = row
  3394. // }
  3395. // if (!this.activeNames[3].includes(id)) {
  3396. // this.activeNames[3].push(id);
  3397. // }
  3398. // this.uploadKey = Date.now().toString();
  3399. // this.loading = true
  3400. // enrollmentRegistrationService.findCertificateAuditList({
  3401. // userId: this.userId
  3402. // }).then(res => {
  3403. // this.certificateInfoList = res
  3404. // this.loading = false
  3405. // this.uploadKey = Date.now().toString();
  3406. // this.activeNames[3] = []
  3407. // res.forEach(item => {
  3408. // this.activeNames[3].push(item.id);
  3409. // })
  3410. // }).catch(err => {
  3411. // this.loading = false
  3412. // })
  3413. this.getDataInfo(this.userInfo.id)
  3414. },
  3415. handleGetCertificateInfo() {
  3416. this.getDataInfo(this.userInfo.id)
  3417. // enrollmentRegistrationService.findCertificateAuditList({
  3418. // userId: this.userId
  3419. // }).then(res => {
  3420. // this.certificateInfoList = res
  3421. // })
  3422. },
  3423. //职称证书处理
  3424. addSkill() {
  3425. this.$refs.skillInfo.init("add", null, this.userId)
  3426. },
  3427. editSkill(row) {
  3428. this.$refs.skillInfo.init("edit", row.id, this.userId)
  3429. },
  3430. delSkill(row) {
  3431. this.$confirm('确定删除此条职称证书信息吗?', '提示', {
  3432. confirmButtonText: '确定',
  3433. cancelButtonText: '取消',
  3434. type: 'warning'
  3435. }).then(() => {
  3436. // 暂存数据删除
  3437. if (row.status == "1") {
  3438. this.loading = true
  3439. enrollmentRegistrationService.deleteSkillInfoById(row.id).then(res => {
  3440. this.$message.success(res)
  3441. this.loading = false
  3442. this.handleGetSkillInfo()
  3443. })
  3444. } else {
  3445. this.skillInfoList = this.skillInfoList.filter(item => item.id !== row.id)
  3446. this.$message.success("操作成功")
  3447. }
  3448. }).catch(() => {
  3449. });
  3450. },
  3451. handleAddSkillInfo(row) {
  3452. // const { id } = row
  3453. // let index = this.skillInfoList.findIndex(item => item.id === id)
  3454. // if (index === -1) {
  3455. // // 不存在就新增
  3456. // this.skillInfoList.push(row)
  3457. // } else {
  3458. // // 存在就更新
  3459. // this.skillInfoList[index] = row
  3460. // }
  3461. // if (!this.activeNames[4].includes(id)) {
  3462. // this.activeNames[4].push(id);
  3463. // }
  3464. // this.uploadKey = Date.now().toString();
  3465. // this.loading = true
  3466. // enrollmentRegistrationService.findSkillAuditList({
  3467. // userId: this.userId
  3468. // }).then(res => {
  3469. // this.skillInfoList = res
  3470. // this.loading = false
  3471. // this.uploadKey = Date.now().toString();
  3472. // this.activeNames[4] = []
  3473. // res.forEach(item => {
  3474. // this.activeNames[4].push(item.id);
  3475. // })
  3476. // }).catch(err => {
  3477. // this.loading = false
  3478. // })
  3479. this.getDataInfo(this.userInfo.id)
  3480. },
  3481. handleGetSkillInfo() {
  3482. this.getDataInfo(this.userInfo.id)
  3483. // enrollmentRegistrationService.findSkillAuditList({
  3484. // userId: this.userId
  3485. // }).then(res => {
  3486. // this.skillInfoList = res
  3487. // })
  3488. },
  3489. //外语语种处理
  3490. addLanguage() {
  3491. this.$refs.languageInfo.init("add", null, this.userId)
  3492. },
  3493. editLanguage(row) {
  3494. this.$refs.languageInfo.init("edit", row.id, this.userId)
  3495. },
  3496. delLanguage(row) {
  3497. this.$confirm('确定删除此条外语语种信息吗?', '提示', {
  3498. confirmButtonText: '确定',
  3499. cancelButtonText: '取消',
  3500. type: 'warning'
  3501. }).then(() => {
  3502. // 暂存数据删除
  3503. if (row.status == "1") {
  3504. this.loading = true
  3505. enrollmentRegistrationService.deleteLanguageInfoById(row.id).then(res => {
  3506. this.$message.success(res)
  3507. this.loading = false
  3508. this.handleGetLanguageInfo()
  3509. })
  3510. } else {
  3511. this.languageInfoList = this.languageInfoList.filter(item => item.id !== row.id)
  3512. this.$message.success("操作成功")
  3513. }
  3514. }).catch(() => {
  3515. });
  3516. },
  3517. handleAddLanguageInfo(row) {
  3518. // const { id } = row
  3519. // let index = this.languageInfoList.findIndex(item => item.id === id)
  3520. // if (index === -1) {
  3521. // // 不存在就新增
  3522. // this.languageInfoList.push(row)
  3523. // } else {
  3524. // // 存在就更新
  3525. // this.languageInfoList[index] = row
  3526. // }
  3527. // if (!this.activeNames[5].includes(id)) {
  3528. // this.activeNames[5].push(id);
  3529. // }
  3530. // this.uploadKey = Date.now().toString();
  3531. // this.loading = true
  3532. // enrollmentRegistrationService.findLanguageAuditList({
  3533. // userId: this.userId
  3534. // }).then(res => {
  3535. // this.languageInfoList = res
  3536. // this.loading = false
  3537. // this.uploadKey = Date.now().toString();
  3538. // this.activeNames[5] = []
  3539. // res.forEach(item => {
  3540. // this.activeNames[5].push(item.id);
  3541. // })
  3542. // }).catch(err => {
  3543. // this.loading = false
  3544. // })
  3545. this.getDataInfo(this.userInfo.id)
  3546. },
  3547. handleGetLanguageInfo() {
  3548. this.getDataInfo(this.userInfo.id)
  3549. // enrollmentRegistrationService.findLanguageAuditList({
  3550. // userId: this.userId
  3551. // }).then(res => {
  3552. // this.languageInfoList = res
  3553. // })
  3554. },
  3555. //家庭情况处理
  3556. addFamily() {
  3557. this.$refs.familyInfo.init("add", null, this.userId)
  3558. },
  3559. editFamily(row) {
  3560. this.$refs.familyInfo.init("edit", row.id, this.userId)
  3561. },
  3562. delFamily(row) {
  3563. this.$confirm('确定删除此条家庭情况信息吗?', '提示', {
  3564. confirmButtonText: '确定',
  3565. cancelButtonText: '取消',
  3566. type: 'warning'
  3567. }).then(() => {
  3568. // 暂存数据删除
  3569. if (row.status == "1") {
  3570. this.loading = true
  3571. enrollmentRegistrationService.deleteFamilyInfoById(row.id).then(res => {
  3572. this.$message.success(res)
  3573. this.loading = false
  3574. this.handleGetFamilyInfo()
  3575. })
  3576. } else {
  3577. this.familyInfoList = this.familyInfoList.filter(item => item.id !== row.id)
  3578. this.$message.success("操作成功")
  3579. }
  3580. }).catch(() => {
  3581. });
  3582. },
  3583. handleAddFamilyInfo(row) {
  3584. // const { id } = row
  3585. // let index = this.familyInfoList.findIndex(item => item.id === row.id)
  3586. // if (index === -1) {
  3587. // // 不存在就新增
  3588. // this.familyInfoList.push(row)
  3589. // } else {
  3590. // // 存在就更新
  3591. // this.familyInfoList[index] = row
  3592. // }
  3593. // if (!this.activeNames[6].includes(id)) {
  3594. // this.activeNames[6].push(id);
  3595. // }
  3596. // this.uploadKey = Date.now().toString();
  3597. // this.loading = true
  3598. // enrollmentRegistrationService.findFamilyAuditList({
  3599. // userId: this.userId
  3600. // }).then(res => {
  3601. // this.familyInfoList = res
  3602. // this.loading = false
  3603. // this.uploadKey = Date.now().toString();
  3604. // this.activeNames[6] = []
  3605. // res.forEach(item => {
  3606. // this.activeNames[6].push(item.id);
  3607. // })
  3608. // }).catch(err => {
  3609. // this.loading = false
  3610. // })
  3611. this.getDataInfo(this.userInfo.id)
  3612. },
  3613. handleGetFamilyInfo(row) {
  3614. this.getDataInfo(this.userInfo.id)
  3615. // enrollmentRegistrationService.findFamilyAuditList({
  3616. // userId: this.userId
  3617. // }).then(res => {
  3618. // this.familyInfoList = res
  3619. // })
  3620. },
  3621. //表彰与奖励处理
  3622. addReward() {
  3623. this.$refs.rewardInfo.init("add", null, this.userId)
  3624. },
  3625. editReward(row) {
  3626. this.$refs.rewardInfo.init("edit", row.id, this.userId)
  3627. },
  3628. delReward(row) {
  3629. this.$confirm('确定删除此条奖项信息吗?', '提示', {
  3630. confirmButtonText: '确定',
  3631. cancelButtonText: '取消',
  3632. type: 'warning'
  3633. }).then(() => {
  3634. // 暂存数据删除
  3635. if (row.status == "1") {
  3636. this.loading = true
  3637. enrollmentRegistrationService.deleteRewardInfoById(row.id).then(res => {
  3638. this.$message.success(res)
  3639. this.loading = false
  3640. this.handleGetRewardInfo()
  3641. })
  3642. } else {
  3643. this.rewardInfoList = this.rewardInfoList.filter(item => item.id !== row.id)
  3644. this.$message.success("操作成功")
  3645. }
  3646. }).catch(() => {
  3647. });
  3648. },
  3649. handleAddRewardInfo(row) {
  3650. // const { id } = row
  3651. // let index = this.rewardInfoList.findIndex(item => item.id === row.id)
  3652. // if (index === -1) {
  3653. // // 不存在就新增
  3654. // this.rewardInfoList.push(row)
  3655. // } else {
  3656. // // 存在就更新
  3657. // this.rewardInfoList[index] = row
  3658. // }
  3659. // if (!this.activeNames[7].includes(id)) {
  3660. // this.activeNames[7].push(id);
  3661. // }
  3662. // this.uploadKey = Date.now().toString();
  3663. // this.loading = true
  3664. // enrollmentRegistrationService.findRewardAuditList({
  3665. // userId: this.userId
  3666. // }).then(res => {
  3667. // this.rewardInfoList = res
  3668. // this.loading = false
  3669. // this.uploadKey = Date.now().toString();
  3670. // this.activeNames[7] = []
  3671. // res.forEach(item => {
  3672. // this.activeNames[7].push(item.id);
  3673. // })
  3674. // }).catch(err => {
  3675. // this.loading = false
  3676. // })
  3677. this.getDataInfo(this.userInfo.id)
  3678. },
  3679. handleGetRewardInfo() {
  3680. this.getDataInfo(this.userInfo.id)
  3681. // enrollmentRegistrationService.findRewardAuditList({
  3682. // userId: this.userId
  3683. // }).then(res => {
  3684. // this.rewardInfoList = res
  3685. // })
  3686. },
  3687. //社会及行业职务
  3688. addSociety() {
  3689. this.$refs.societyInfo.init("add", null, this.userId)
  3690. },
  3691. editSociety(row) {
  3692. this.$refs.societyInfo.init("edit", row.id, this.userId)
  3693. },
  3694. delSociety(row) {
  3695. this.$confirm('确定删除此条社会及行业职务信息吗?', '提示', {
  3696. confirmButtonText: '确定',
  3697. cancelButtonText: '取消',
  3698. type: 'warning'
  3699. }).then(() => {
  3700. // 暂存数据删除
  3701. if (row.status == "1") {
  3702. this.loading = true
  3703. enrollmentRegistrationService.deleteSocietyInfoById(row.id).then(res => {
  3704. this.$message.success(res)
  3705. this.loading = false
  3706. this.handleGetSocietyInfo()
  3707. })
  3708. } else {
  3709. this.societyInfoList = this.societyInfoList.filter(item => item.id !== row.id)
  3710. this.$message.success("操作成功")
  3711. }
  3712. }).catch(() => {
  3713. });
  3714. },
  3715. handleAddSocietyInfo(row) {
  3716. // const { id } = row
  3717. // let index = this.societyInfoList.findIndex(item => item.id === row.id)
  3718. // if (index === -1) {
  3719. // // 不存在就新增
  3720. // this.societyInfoList.push(row)
  3721. // } else {
  3722. // // 存在就更新
  3723. // this.societyInfoList[index] = row
  3724. // }
  3725. // if (!this.activeNames[9].includes(id)) {
  3726. // this.activeNames[9].push(id);
  3727. // }
  3728. // this.uploadKey = Date.now().toString();
  3729. // this.loading = true
  3730. // enrollmentRegistrationService.findSocietyAuditList({
  3731. // userId: this.userId
  3732. // }).then(res => {
  3733. // this.societyInfoList = res
  3734. // this.loading = false
  3735. // this.uploadKey = Date.now().toString();
  3736. // this.activeNames[9] = []
  3737. // res.forEach(item => {
  3738. // this.activeNames[9].push(item.id);
  3739. // })
  3740. // }).catch(err => {
  3741. // this.loading = false
  3742. // })
  3743. this.getDataInfo(this.userInfo.id)
  3744. this.uploadKey = Date.now().toString();
  3745. },
  3746. handleGetSocietyInfo(row) {
  3747. this.getDataInfo(this.userInfo.id)
  3748. // enrollmentRegistrationService.findSocietyAuditList({
  3749. // userId: this.userId
  3750. // }).then(res => {
  3751. // this.societyInfoList = res
  3752. // })
  3753. },
  3754. //工作业绩
  3755. addPerformance() {
  3756. this.$refs.performanceInfo.init("add", null, this.userId)
  3757. },
  3758. editPerformance(row) {
  3759. this.$refs.performanceInfo.init("edit", row.id, this.userId)
  3760. },
  3761. delPerformance(row) {
  3762. this.$confirm('确定删除此条工作业绩信息吗?', '提示', {
  3763. confirmButtonText: '确定',
  3764. cancelButtonText: '取消',
  3765. type: 'warning'
  3766. }).then(() => {
  3767. // 暂存数据删除
  3768. if (row.status == "1") {
  3769. this.loading = true
  3770. enrollmentRegistrationService.deletePerformanceInfoById(row.id).then(res => {
  3771. this.$message.success(res)
  3772. this.loading = false
  3773. this.handleGetPerformanceInfo()
  3774. })
  3775. } else {
  3776. this.performanceInfoList = this.performanceInfoList.filter(item => item.id !== row.id)
  3777. this.$message.success("操作成功")
  3778. }
  3779. }).catch(() => {
  3780. });
  3781. },
  3782. handleAddPerformanceInfo(row) {
  3783. // const { id } = row
  3784. // let index = this.performanceInfoList.findIndex(item => item.id === row.id)
  3785. // if (index === -1) {
  3786. // // 不存在就新增
  3787. // this.performanceInfoList.push(row)
  3788. // } else {
  3789. // // 存在就更新
  3790. // this.performanceInfoList[index] = row
  3791. // }
  3792. // if (!this.activeNames[10].includes(id)) {
  3793. // this.activeNames[10].push(id);
  3794. // }
  3795. // this.uploadKey = Date.now().toString();
  3796. // this.loading = true
  3797. // enrollmentRegistrationService.findPerformanceAuditList({
  3798. // userId: this.userId
  3799. // }).then(res => {
  3800. // this.performanceInfoList = res
  3801. // this.loading = false
  3802. // this.uploadKey = Date.now().toString();
  3803. // this.activeNames[10] = []
  3804. // res.forEach(item => {
  3805. // this.activeNames[10].push(item.id);
  3806. // })
  3807. // }).catch(err => {
  3808. // this.loading = false
  3809. // })
  3810. this.getDataInfo(this.userInfo.id)
  3811. },
  3812. handleGetPerformanceInfo(row) {
  3813. this.getDataInfo(this.userInfo.id)
  3814. // enrollmentRegistrationService.findPerformanceAuditList({
  3815. // userId: this.userId
  3816. // }).then(res => {
  3817. // this.performanceInfoList = res
  3818. // })
  3819. },
  3820. changeType(value, row) {
  3821. if (value === '1' || value === '2') {
  3822. let obj = this.$dictUtils.getDictList('sys_cert_profession_build').find(item => {
  3823. return item.value == row.profession
  3824. })
  3825. if (obj) {
  3826. row.profession = obj.label
  3827. }
  3828. } else if (value === '3' || value === '4') {
  3829. let obj = this.$dictUtils.getDictList('sys_cert_profession_cost').find(item => {
  3830. return item.value == row.profession
  3831. })
  3832. if (obj) {
  3833. row.profession = obj.label
  3834. }
  3835. } else if (value === '5') {
  3836. let obj = this.$dictUtils.getDictList('sys_cert_profession_supervision').find(item => {
  3837. return item.value == row.profession
  3838. })
  3839. if (obj) {
  3840. row.profession = obj.label
  3841. }
  3842. } else if (value === '6') {
  3843. let obj = this.$dictUtils.getDictList('sys_cert_profession_accounting').find(item => {
  3844. return item.value == row.profession
  3845. })
  3846. if (obj) {
  3847. row.profession = obj.label
  3848. }
  3849. }
  3850. },
  3851. handleRevoke() {
  3852. this.$confirm('确定要撤回审批吗?', '提示', {
  3853. confirmButtonText: '确定',
  3854. cancelButtonText: '取消',
  3855. type: 'warning'
  3856. }).then(() => {
  3857. this.loading = true
  3858. processService.revokeProcIns(this.procInsId).then(res => {
  3859. this.generalForm.idCardFront = this.$refs.idCardFront.getDataList()
  3860. this.generalForm.idCardBack = this.$refs.idCardBack.getDataList()
  3861. this.generalForm.email = this.concatForm.email
  3862. this.generalForm.eduInfoList = this.eduInfoList
  3863. this.generalForm.workInfoList = this.workInfoList
  3864. this.generalForm.certificateInfoList = this.certificateInfoList
  3865. this.generalForm.skillInfoList = this.skillInfoList
  3866. this.generalForm.rewardInfoList = this.rewardInfoList
  3867. this.generalForm.familyInfoList = this.familyInfoList
  3868. this.generalForm.trainingInfoList = this.trainingInfoList
  3869. this.generalForm.languageInfoList = this.languageInfoList
  3870. enrollmentRegistrationService.updateStatusByIdUserInfo(this.generalForm).then((data) => {
  3871. this.close()
  3872. this.$message.success(data.msg)
  3873. this.$refs.idCardBack.clearUpload()
  3874. this.$refs.idCardFront.clearUpload()
  3875. this.getDataInfo(this.userInfo.id)
  3876. this.loading = false
  3877. }).catch(() => {
  3878. this.loading = false
  3879. })
  3880. })
  3881. }).catch(() => {
  3882. this.loading = false
  3883. });
  3884. }
  3885. },
  3886. };
  3887. </script>
  3888. <style lang="less">
  3889. .userInfo {
  3890. padding: 8px 12px;
  3891. .aside {
  3892. width: 340px;
  3893. margin-right: 20px;
  3894. }
  3895. .el-card__header {
  3896. padding: calc(var(--el-card-padding) - 2px) var(--el-card-padding);
  3897. border-bottom: 1px solid var(--el-card-border-color);
  3898. box-sizing: border-box;
  3899. }
  3900. .person-bg {
  3901. color: rgb(24, 144, 255);
  3902. background-color: rgb(230, 247, 255);
  3903. width: 24px;
  3904. height: 24px;
  3905. border-radius: 50%;
  3906. text-align: center;
  3907. vertical-align: middle;
  3908. display: inline-block;
  3909. }
  3910. .person-text {
  3911. font-size: 15px;
  3912. margin-left: 5px;
  3913. font-weight: 400;
  3914. }
  3915. }
  3916. .adminui-topbar+.userInfo {
  3917. padding: 12px 12px 8px 12px;
  3918. }
  3919. /deep/ .el-collapse-item__header {
  3920. font-size: 16px !important;
  3921. order: -1;
  3922. }
  3923. .collapseTitle {
  3924. width: 100%;
  3925. display: flex;
  3926. align-items: center;
  3927. order: 1;
  3928. }
  3929. .auditInfo {
  3930. color: red !important;
  3931. }
  3932. .card-info {
  3933. margin-bottom: 20px;
  3934. }
  3935. .star-require .el-form-item__label::before {
  3936. content: "*";
  3937. color: red;
  3938. }
  3939. </style>