detail.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937
  1. <template>
  2. <div class="message-info">
  3. <div class="error"></div>
  4. <div style="background-color: #fff; padding: 15px; box-sizing: border-box">
  5. <el-row :gutter="24">
  6. <el-col :span="20">
  7. <div style="display: flex; align-items: center">
  8. <div class="img-title">
  9. {{ pinyin.getFullChars(operationForm.name).substring(0, 1) }}
  10. </div>
  11. <h4>{{ operationForm.name }}</h4>
  12. </div>
  13. </el-col>
  14. <el-col :span="4" v-show="operationForm.status=='4'">
  15. <el-button type="primary" @click="toExamine(operationForm, 'success')">审核通过</el-button>
  16. <el-button type="primary" @click="toExamine(operationForm, 'error')"> 审核驳回 </el-button>
  17. </el-col>
  18. </el-row>
  19. <el-row :gutter="24">
  20. <el-col :span="18">
  21. <el-descriptions title="" class="info-list" :column="2">
  22. <el-descriptions-item label="工号:">{{
  23. operationForm.userId
  24. }}</el-descriptions-item>
  25. <el-descriptions-item label="手机号:">{{
  26. operationForm.mobile
  27. }}</el-descriptions-item>
  28. <el-descriptions-item label="所在机构:">
  29. {{ operationForm.deptName }}
  30. </el-descriptions-item>
  31. <el-descriptions-item label="角色:">
  32. {{ operationForm.deptName }}
  33. </el-descriptions-item>
  34. <el-descriptions-item label="创建人:">
  35. {{ operationForm.createBy }}
  36. </el-descriptions-item>
  37. <el-descriptions-item label="创建时间:">
  38. {{ operationForm.createTime }}
  39. </el-descriptions-item>
  40. </el-descriptions>
  41. </el-col>
  42. <el-col :span="6">
  43. <h2>
  44. {{
  45. statusList
  46. .map((item) => {
  47. return item.value == operationForm.status ? item.label : "";
  48. })
  49. .join("")
  50. }}
  51. </h2>
  52. <p>状态</p>
  53. </el-col>
  54. </el-row>
  55. </div>
  56. <el-form
  57. :model="operationForm"
  58. ref="OperationFormRef"
  59. label-width="120"
  60. style="background-color: #fff; padding: 20px; box-sizing: border-box"
  61. >
  62. <el-tabs v-model="activeName" class="demo-tabs">
  63. <el-tab-pane label="基本信息" name="first">
  64. <el-descriptions title="个人信息">
  65. <el-descriptions-item>
  66. <template #default>
  67. <el-row :gutter="24">
  68. <el-col :span="12">
  69. <el-form-item prop="name" label="姓名:">
  70. {{ operationForm.name }}
  71. </el-form-item>
  72. </el-col>
  73. <el-col :span="12">
  74. <el-form-item prop="mobile" label="手机号:">
  75. {{ operationForm.mobile }}
  76. </el-form-item>
  77. </el-col>
  78. </el-row>
  79. <el-row :gutter="24">
  80. <el-col :span="12">
  81. <el-form-item prop="deptId" label="所属机构:">
  82. {{ operationForm.deptName || "--" }}
  83. </el-form-item>
  84. </el-col>
  85. <el-col :span="12">
  86. <el-form-item prop="identity" label="证件号:">
  87. {{ operationForm.identity }}
  88. </el-form-item>
  89. </el-col>
  90. </el-row>
  91. <el-row :gutter="24">
  92. <el-col :span="12">
  93. <el-form-item
  94. prop="identityTimeStart"
  95. label="证件有效期始:"
  96. >
  97. {{ operationForm.identityTimeStart }}
  98. </el-form-item>
  99. </el-col>
  100. <el-col :span="12">
  101. <el-form-item prop="identityTimeEnd" label="证件有效期止:">
  102. {{ operationForm.identityTimeEnd }}
  103. </el-form-item>
  104. </el-col>
  105. </el-row>
  106. <el-row :gutter="24">
  107. <el-col :span="12">
  108. <el-form-item prop="sex" label="性别:">
  109. {{
  110. genderList
  111. .map((item) => {
  112. return item.value == operationForm.sex
  113. ? item.label
  114. : "";
  115. })
  116. .join("")
  117. }}
  118. </el-form-item>
  119. </el-col>
  120. <el-col :span="12">
  121. <el-form-item prop="born" label="出生日期:">
  122. {{ operationForm.birthday }}
  123. </el-form-item>
  124. </el-col>
  125. </el-row>
  126. <el-row :gutter="24">
  127. <el-col :span="12">
  128. <el-form-item prop="type" label="民族:">
  129. {{
  130. nation
  131. .map((item) => {
  132. return item.value == operationForm.nations
  133. ? item.label
  134. : "";
  135. })
  136. .join("")
  137. }}
  138. </el-form-item>
  139. </el-col>
  140. <el-col :span="12">
  141. <el-form-item prop="team" label="户籍:">
  142. {{ operationForm.koseki }}
  143. </el-form-item>
  144. </el-col>
  145. </el-row>
  146. <el-row :gutter="24">
  147. <el-col :span="12">
  148. <el-form-item prop="type" label="婚姻状况:">
  149. {{
  150. marriage
  151. .map((item) => {
  152. return item.value == operationForm.maritalStatus
  153. ? item.label
  154. : "";
  155. })
  156. .join("")
  157. }}
  158. </el-form-item>
  159. </el-col>
  160. <el-col :span="12">
  161. <el-form-item prop="team" label="政治面貌:">
  162. {{
  163. political_status
  164. .map((item) => {
  165. return item.value == operationForm.politicsStatus
  166. ? item.label
  167. : "";
  168. })
  169. .join("")
  170. }}
  171. </el-form-item>
  172. </el-col>
  173. </el-row>
  174. <el-row :gutter="24">
  175. <el-col :span="12">
  176. <el-form-item prop="type" label="健康状况:">
  177. {{
  178. health_status
  179. .map((item) => {
  180. return item.value == operationForm.health
  181. ? item.label
  182. : "";
  183. })
  184. .join("")
  185. }}
  186. </el-form-item>
  187. </el-col>
  188. <el-col :span="12">
  189. <el-form-item prop="team" label="居住地区:">
  190. <!-- <el-select
  191. v-model="operationForm.address"
  192. placeholder="请选择居住地区"
  193. >
  194. <el-option key="1" value="团队1"></el-option>
  195. </el-select> -->
  196. {{ operationForm.region || "--" }}
  197. </el-form-item>
  198. </el-col>
  199. </el-row>
  200. <el-row :gutter="24">
  201. <el-col :span="12">
  202. <el-form-item prop="team" label="详细地址:">
  203. {{ operationForm.liveAddress }}
  204. </el-form-item>
  205. </el-col>
  206. <el-col :span="12">
  207. <el-form-item prop="team" label="邮政编码:">
  208. {{ operationForm.postalCode }}
  209. </el-form-item>
  210. </el-col>
  211. </el-row>
  212. </template>
  213. </el-descriptions-item>
  214. </el-descriptions>
  215. <el-descriptions title="学历信息" v-show="recordShow">
  216. <el-descriptions-item>
  217. <template #default>
  218. <el-row :gutter="24">
  219. <el-col :span="12">
  220. <el-form-item prop="sex" label="学历:">
  221. {{
  222. educational
  223. .map((item) => {
  224. return item.value == operationForm.education
  225. ? item.label
  226. : "";
  227. })
  228. .join("")
  229. }}
  230. </el-form-item>
  231. </el-col>
  232. <el-col :span="12">
  233. <el-form-item prop="born" label="毕业时间:">
  234. {{ operationForm.graduationTime }}
  235. </el-form-item>
  236. </el-col>
  237. </el-row>
  238. <el-row :gutter="24">
  239. <el-col :span="12">
  240. <el-form-item prop="type" label="毕业院校:">
  241. {{ operationForm.school }}
  242. </el-form-item>
  243. </el-col>
  244. <el-col :span="12">
  245. <el-form-item prop="team" label="是否计算机专业:">
  246. {{ operationForm.isComputer }}
  247. </el-form-item>
  248. </el-col>
  249. </el-row>
  250. </template>
  251. </el-descriptions-item>
  252. </el-descriptions>
  253. <el-descriptions title="紧急联系人信息" v-show="recordShow">
  254. <el-descriptions-item>
  255. <template #default>
  256. <el-row :gutter="24">
  257. <el-col :span="12">
  258. <el-form-item prop="team" label="姓名:">
  259. {{ operationForm.emergencyContactName }}
  260. </el-form-item>
  261. </el-col>
  262. <el-col :span="12">
  263. <el-form-item prop="team" label="手机号:">
  264. {{ operationForm.emergencyContactTel }}
  265. </el-form-item>
  266. </el-col>
  267. </el-row>
  268. </template>
  269. </el-descriptions-item>
  270. </el-descriptions>
  271. <el-descriptions title="工资信息" v-show="recordShow">
  272. <el-descriptions-item>
  273. <template #default>
  274. <el-row :gutter="24">
  275. <el-col :span="12">
  276. <el-form-item prop="team" label="工资:">
  277. {{ operationForm.salary }}
  278. </el-form-item>
  279. </el-col>
  280. <el-col :span="12">
  281. <el-form-item prop="team" label="工资等级:">
  282. {{ operationForm.salaryLevel }}
  283. </el-form-item>
  284. </el-col>
  285. </el-row>
  286. <el-row :gutter="24">
  287. <el-col :span="12">
  288. <el-form-item prop="team" label="银行卡号:">
  289. {{ operationForm.bankCardId }}
  290. </el-form-item>
  291. </el-col>
  292. <el-col :span="12">
  293. <el-form-item prop="team" label="开户行:">
  294. {{ operationForm.bankName }}
  295. </el-form-item>
  296. </el-col>
  297. </el-row>
  298. </template>
  299. </el-descriptions-item>
  300. </el-descriptions>
  301. </el-tab-pane>
  302. <el-tab-pane label="资料附件" name="second">
  303. <el-descriptions v-show="recordShow" title="资料附件">
  304. <el-descriptions-item>
  305. <template #default>
  306. <el-form-item
  307. prop=""
  308. label="身份证(人像面)"
  309. label-width="150"
  310. label-position="left"
  311. >
  312. <!-- <el-upload
  313. :auto-upload="false"
  314. v-if="!IDCardFront"
  315. action="#"
  316. :show-file-list="false"
  317. accept=".png, .jpg, .jpeg"
  318. @change="uploadImage($event, 1)"
  319. >
  320. <el-button link type="primary">上传</el-button>
  321. </el-upload> -->
  322. <div class="fileInfo" >
  323. <div class="fileName">{{ IDCardFrontName }}</div>
  324. <div class="fileBtn">
  325. <!-- <el-upload
  326. :auto-upload="false"
  327. action="#"
  328. :show-file-list="false"
  329. accept=".png, .jpg, .jpeg"
  330. @change="uploadImage($event, 1)"
  331. style="display: flex; align-items: center"
  332. >
  333. <el-icon class="btn-icon"><Upload /></el-icon>
  334. </el-upload> -->
  335. <el-icon class="btn-icon" @click="imageView(1)"
  336. ><View
  337. /></el-icon>
  338. <el-icon class="btn-icon"><Download /></el-icon>
  339. <!-- <el-icon class="btn-icon"><Delete /></el-icon> -->
  340. </div>
  341. </div>
  342. </el-form-item>
  343. <el-form-item
  344. prop=""
  345. label="身份证(国徽面)"
  346. label-width="150"
  347. label-position="left"
  348. >
  349. <!-- <el-upload
  350. :auto-upload="false"
  351. v-if="!IDCardBack"
  352. action="#"
  353. :show-file-list="false"
  354. accept=".png, .jpg, .jpeg"
  355. @change="uploadImage($event, 2)"
  356. >
  357. <el-button link type="primary">上传</el-button>
  358. </el-upload> -->
  359. <div class="fileInfo" >
  360. <div class="fileName">{{ IDCardBackName }}</div>
  361. <div class="fileBtn">
  362. <!-- <el-upload
  363. :auto-upload="false"
  364. action="#"
  365. :show-file-list="false"
  366. accept=".png, .jpg, .jpeg"
  367. @change="uploadImage($event, 2)"
  368. style="display: flex; align-items: center"
  369. >
  370. <el-icon class="btn-icon"><Upload /></el-icon>
  371. </el-upload> -->
  372. <el-icon class="btn-icon" @click="imageView(2)"
  373. ><View
  374. /></el-icon>
  375. <el-icon class="btn-icon"><Download /></el-icon>
  376. <!-- <el-icon class="btn-icon"><Delete /></el-icon> -->
  377. </div>
  378. </div>
  379. </el-form-item>
  380. <el-form-item
  381. prop=""
  382. label="银行卡"
  383. label-width="150"
  384. label-position="left"
  385. >
  386. <!-- <el-upload
  387. :auto-upload="false"
  388. v-if="!bankSize"
  389. action="#"
  390. :show-file-list="false"
  391. accept=".png, .jpg, .jpeg"
  392. @change="uploadImage($event, 3)"
  393. >
  394. <el-button link type="primary">上传</el-button>
  395. </el-upload> -->
  396. <div class="fileInfo" >
  397. <div class="fileName">{{ bankName }}</div>
  398. <div class="fileBtn">
  399. <!-- <el-upload
  400. :auto-upload="false"
  401. action="#"
  402. :show-file-list="false"
  403. accept=".png, .jpg, .jpeg"
  404. @change="uploadImage($event, 3)"
  405. style="display: flex; align-items: center"
  406. >
  407. <el-icon class="btn-icon"><Upload /></el-icon>
  408. </el-upload> -->
  409. <el-icon class="btn-icon" @click="imageView(3)"
  410. ><View
  411. /></el-icon>
  412. <el-icon class="btn-icon"><Download /></el-icon>
  413. <!-- <el-icon class="btn-icon"><Delete /></el-icon> -->
  414. </div>
  415. </div>
  416. </el-form-item>
  417. <el-form-item
  418. prop=""
  419. label="劳动合同"
  420. label-width="150"
  421. label-position="left"
  422. >
  423. <!-- <el-upload
  424. :auto-upload="false"
  425. v-if="!contract"
  426. action="#"
  427. :show-file-list="false"
  428. accept=".png, .jpg, .jpeg"
  429. @change="uploadImage($event, 4)"
  430. >
  431. <el-button link type="primary">上传</el-button>
  432. </el-upload> -->
  433. <div class="fileInfo" >
  434. <div class="fileName">{{ contractName }}</div>
  435. <div class="fileBtn">
  436. <!-- <el-upload
  437. :auto-upload="false"
  438. action="#"
  439. :show-file-list="false"
  440. accept=".png, .jpg, .jpeg"
  441. @change="uploadImage($event, 4)"
  442. style="display: flex; align-items: center"
  443. >
  444. <el-icon class="btn-icon"><Upload /></el-icon>
  445. </el-upload> -->
  446. <el-icon class="btn-icon" @click="imageView(4)"
  447. ><View
  448. /></el-icon>
  449. <el-icon class="btn-icon"><Download /></el-icon>
  450. <!-- <el-icon class="btn-icon"><Delete /></el-icon> -->
  451. </div>
  452. </div>
  453. </el-form-item>
  454. <el-form-item
  455. prop=""
  456. label="应聘表"
  457. label-width="150"
  458. label-position="left"
  459. >
  460. <!-- <el-upload
  461. :auto-upload="false"
  462. v-if="!applicant"
  463. action="#"
  464. :show-file-list="false"
  465. accept=".png, .jpg, .jpeg"
  466. @change="uploadImage($event, 5)"
  467. >
  468. <el-button link type="primary">上传</el-button>
  469. </el-upload> -->
  470. <div class="fileInfo" >
  471. <div class="fileName">{{ applicantName }}</div>
  472. <div class="fileBtn">
  473. <!-- <el-upload
  474. :auto-upload="false"
  475. action="#"
  476. :show-file-list="false"
  477. accept=".png, .jpg, .jpeg"
  478. @change="uploadImage($event, 5)"
  479. style="display: flex; align-items: center"
  480. >
  481. <el-icon class="btn-icon"><Upload /></el-icon>
  482. </el-upload> -->
  483. <el-icon class="btn-icon" @click="imageView(5)"
  484. ><View
  485. /></el-icon>
  486. <el-icon class="btn-icon"><Download /></el-icon>
  487. <!-- <el-icon class="btn-icon"><Delete /></el-icon> -->
  488. </div>
  489. </div>
  490. </el-form-item>
  491. <el-form-item
  492. prop=""
  493. label="定薪表"
  494. label-width="150"
  495. label-position="left"
  496. >
  497. <!-- <el-upload
  498. :auto-upload="false"
  499. v-if="!decidePay"
  500. action="#"
  501. :show-file-list="false"
  502. accept=".png, .jpg, .jpeg"
  503. @change="uploadImage($event, 6)"
  504. >
  505. <el-button link type="primary">上传</el-button>
  506. </el-upload> -->
  507. <div class="fileInfo" >
  508. <div class="fileName">{{ decidePayName }}</div>
  509. <div class="fileBtn">
  510. <!-- <el-upload
  511. :auto-upload="false"
  512. action="#"
  513. :show-file-list="false"
  514. accept=".png, .jpg, .jpeg"
  515. @change="uploadImage($event, 6)"
  516. style="display: flex; align-items: center"
  517. >
  518. <el-icon class="btn-icon"><Upload /></el-icon>
  519. </el-upload> -->
  520. <el-icon class="btn-icon" @click="imageView(6)"
  521. ><View
  522. /></el-icon>
  523. <el-icon class="btn-icon"><Download /></el-icon>
  524. <!-- <el-icon class="btn-icon"><Delete /></el-icon> -->
  525. </div>
  526. </div>
  527. </el-form-item>
  528. <el-form-item
  529. prop=""
  530. label="离职表"
  531. label-width="150"
  532. label-position="left"
  533. >
  534. <!-- <el-upload
  535. :auto-upload="false"
  536. v-if="!dimission"
  537. action="#"
  538. :show-file-list="false"
  539. accept=".png, .jpg, .jpeg"
  540. @change="uploadImage($event, 7)"
  541. >
  542. <el-button link type="primary">上传</el-button>
  543. </el-upload> -->
  544. <div class="fileInfo" >
  545. <div class="fileName">{{ dimissionName }}</div>
  546. <div class="fileBtn">
  547. <!-- <el-upload
  548. :auto-upload="false"
  549. action="#"
  550. :show-file-list="false"
  551. accept=".png, .jpg, .jpeg"
  552. @change="uploadImage($event, 7)"
  553. style="display: flex; align-items: center"
  554. >
  555. <el-icon class="btn-icon"><Upload /></el-icon>
  556. </el-upload> -->
  557. <el-icon class="btn-icon" @click="imageView(7)"
  558. ><View
  559. /></el-icon>
  560. <el-icon class="btn-icon"><Download /></el-icon>
  561. <!-- <el-icon class="btn-icon"><Delete /></el-icon> -->
  562. </div>
  563. </div>
  564. </el-form-item>
  565. </template>
  566. </el-descriptions-item>
  567. </el-descriptions>
  568. </el-tab-pane>
  569. </el-tabs>
  570. <!-- <div style="display: flex; justify-content: flex-end">
  571. <el-button @click="onSubmit(0)">取消</el-button>
  572. <el-button type="primary" @click="onSubmit(OperationFormRef, 1)"
  573. >确定</el-button
  574. >
  575. </div> -->
  576. </el-form>
  577. <el-image-viewer v-if="imageShow" :url-list="[imageUrl]" @close="imageShow = false" />
  578. <el-dialog :close-on-click-modal="false" v-model="dialogVisible" title="审核不通过" width="500" draggable>
  579. <el-input
  580. type="textarea"
  581. placeholder="请输入审核不通过原因"
  582. v-model="textValue"
  583. />
  584. <template #footer>
  585. <div class="dialog-footer">
  586. <el-button class="border-[#0083FF] color-[#0083FF]" plain @click="cancel()">取 消</el-button>
  587. <el-button type="primary" @click="confirm()"> 保 存 </el-button>
  588. </div>
  589. </template>
  590. </el-dialog>
  591. </div>
  592. </template>
  593. <script setup lang="ts">
  594. import { ref, defineEmits, onMounted, watch } from "vue";
  595. import { memberType } from "@/api/modules/user";
  596. import type { FormRules, FormInstance, ElTree } from "element-plus";
  597. import api from "@/api";
  598. import { Search } from "@element-plus/icons-vue";
  599. import { ElMessage, ElMessageBox } from "element-plus";
  600. import { getDictItems } from "@/api/dict";
  601. import { useRoute } from "vue-router";
  602. import pinyin from "js-pinyin";
  603. import { useRouter } from "vue-router";
  604. interface dictType {
  605. value: string;
  606. id: string;
  607. label: string;
  608. [property: string]: any;
  609. }
  610. interface institutionData {
  611. name: string;
  612. system: string;
  613. }
  614. const info = ref<institutionData>({
  615. name: "",
  616. system: "",
  617. });
  618. //转移资源
  619. const dialogVisible = ref(false);
  620. //选择交接人
  621. const route = useRoute();
  622. const activeName = ref("first");
  623. const statusList = ref<dictType[]>([]);
  624. onMounted(async () => {
  625. genderList.value = await getDictItems({ dictCode: "gender" });
  626. nation.value = await getDictItems({ dictCode: "nation" });
  627. marriage.value = await getDictItems({ dictCode: "marriage" });
  628. political_status.value = await getDictItems({ dictCode: "political_status" });
  629. health_status.value = await getDictItems({ dictCode: "health_status" });
  630. educational.value = await getDictItems({ dictCode: "educational" });
  631. statusList.value = await getDictItems({ dictCode: "person_status" });
  632. getAreaList(); //省市区级联数据
  633. api.institutionApi.institutionList(info.value).then((res) => {
  634. tableData.value = [...res.data];
  635. });
  636. api.userApi
  637. .getUserInfo({
  638. id: route.query.id || "",
  639. })
  640. .then((res: any) => {
  641. console.log(res);
  642. if (res.code === 200) {
  643. operationForm.value = res.data;
  644. }
  645. });
  646. });
  647. const areaOptins = ref([]);
  648. const getAreaList = () => {
  649. api.areaApi.areaList({}).then((res) => {
  650. areaOptins.value = res.data;
  651. });
  652. };
  653. //性别字典
  654. const genderList = ref<dictType[]>([]);
  655. //民族
  656. const nation = ref<dictType[]>([]);
  657. //婚姻状况
  658. const marriage = ref<dictType[]>([]);
  659. //政治面貌
  660. const political_status = ref<dictType[]>([]);
  661. //健康状况
  662. const health_status = ref<dictType[]>([]);
  663. //学历
  664. const educational = ref<dictType[]>([]);
  665. interface OperationFormProps extends memberType {
  666. deptId: string;
  667. leaderNumber: string;
  668. referrerNumber: string;
  669. address?: [];
  670. [key: string]: any;
  671. }
  672. // console.log(memberType,5555)
  673. let emits = defineEmits(["closeDialog"]);
  674. const OperationFormRef = ref<FormInstance>();
  675. // 添加/编辑业务员表单
  676. let operationForm = ref<OperationFormProps>({
  677. deptId: "",
  678. name: "",
  679. mobile: "",
  680. identity: "",
  681. identityTimeStart: "",
  682. identityTimeEnd: "",
  683. leaderId: "",
  684. leaderNumber: "",
  685. referrerId: "",
  686. referrerNumber: "",
  687. sex: "",
  688. birthday: "",
  689. nations: "",
  690. koseki: "",
  691. maritalStatus: "",
  692. politicsStatus: "",
  693. health: "",
  694. province: "",
  695. city: "",
  696. district: "",
  697. address: [],
  698. liveAddress: "",
  699. postalCode: "",
  700. education: "",
  701. graduationTime: "",
  702. school: "",
  703. isComputer: "",
  704. emergencyContactName: "",
  705. emergencyContactTel: "",
  706. salary: "",
  707. salaryLevel: "",
  708. bankCardId: "",
  709. bankName: "",
  710. });
  711. // 身份证人像面
  712. let IDCardFrontName = ref("");
  713. let IDCardFront = ref("");
  714. let sfz1 = ref("");
  715. // 身份证国徽面
  716. let IDCardBackName = ref("");
  717. let IDCardBack = ref("");
  718. let sfz2 = ref("");
  719. // 银行卡
  720. let bankName = ref("");
  721. let bankSize = ref("");
  722. let bankCard = ref("");
  723. // 劳务合同
  724. let contractName = ref("");
  725. let contract = ref("");
  726. let contractId = ref("");
  727. // 应聘表
  728. let applicantName = ref("");
  729. let applicant = ref("");
  730. let applicantId = ref("");
  731. // 定薪表
  732. let decidePayName = ref("");
  733. let decidePay = ref("");
  734. let salaryTable = ref("");
  735. // 离职表
  736. let dimissionName = ref("");
  737. let dimission = ref("");
  738. let leaveTable = ref("");
  739. // 图片预览地址
  740. let imageShow = ref(false);
  741. let imageUrl = ref("");
  742. //机构列表
  743. type tableType = {
  744. id: string;
  745. name: string;
  746. };
  747. const tableData = ref<tableType[]>([]);
  748. const router = useRouter();
  749. const userInfoId=ref('')
  750. const toExamine = (item: any, type: string) => {
  751. if (type == "success") {
  752. ElMessageBox.confirm(`确定审核通过${item.name}账号吗?`, "审核通过", {
  753. confirmButtonText: "确认",
  754. cancelButtonText: "取消",
  755. type: "warning",
  756. center: true,
  757. })
  758. .then(() => {
  759. api.representativeApi
  760. .salesmanAuthSuccess({
  761. userInfoId: item.id,
  762. })
  763. .then((res: any) => {
  764. if (res.code == 200) {
  765. ElMessage.success("操作成功");
  766. } else {
  767. ElMessage.error(res.msg);
  768. }
  769. });
  770. })
  771. .catch(() => {
  772. ElMessage.warning("用户取消操作");
  773. });
  774. } else {
  775. dialogVisible.value = true;
  776. userInfoId.value = item.id;
  777. // ElMessageBox.confirm(`<textarea placeholder='请输入审核不通过原因' oninput='handleText()' style="width:300px"></textarea>`, "审核不通过", {
  778. // confirmButtonText: "确认",
  779. // cancelButtonText: "取消",
  780. // dangerouslyUseHTMLString: true ,
  781. // type: "warning",
  782. // center: true,
  783. // })
  784. // .then(() => {
  785. // api.representativeApi.salesmanAuthFailed({}).then((res: any) => {
  786. // if (res.code == 200) {
  787. // ElMessage.success("操作成功");
  788. // salesmanAuth(); //业务员列表
  789. // } else {
  790. // ElMessage.error(res.msg);
  791. // // salesmanAuth(); //业务员列表
  792. // }
  793. // });
  794. // })
  795. // .catch(() => {
  796. // ElMessage.warning("用户取消操作");
  797. // });
  798. }
  799. };
  800. function cancel() {
  801. ElMessage.warning("用户取消操作");
  802. dialogVisible.value = false;
  803. }
  804. const textValue = ref("");
  805. //审核不通过
  806. function confirm() {
  807. api.representativeApi
  808. .salesmanAuthFailed({
  809. userInfoId: userInfoId.value,
  810. approvalOpinion: textValue.value,
  811. })
  812. .then((res: any) => {
  813. if (res.code == 200) {
  814. ElMessage.success("操作成功");
  815. dialogVisible.value = false;
  816. }
  817. });
  818. }
  819. //变更机构弹框
  820. interface Tree {
  821. [key: string]: any;
  822. }
  823. const filterText = ref("");
  824. const treeRef = ref<InstanceType<typeof ElTree>>();
  825. watch(filterText, (val) => {
  826. treeRef.value!.filter(val);
  827. });
  828. </script>
  829. <style scoped lang="scss">
  830. .message-info {
  831. // background: #fff;
  832. padding: 15px;
  833. box-sizing: border-box;
  834. h4 {
  835. margin: 0;
  836. }
  837. }
  838. .img-title {
  839. border-radius: 50%;
  840. width: 30px;
  841. height: 30px;
  842. color: #fff;
  843. background: #00a0f4;
  844. display: flex;
  845. align-items: center;
  846. justify-content: center;
  847. margin-right: 20px;
  848. }
  849. .fileInfo {
  850. display: flex;
  851. align-items: center;
  852. justify-content: flex-start;
  853. padding: 2px 20px;
  854. border-radius: 5px;
  855. margin: 0 10px;
  856. &:hover {
  857. background: #ccc;
  858. }
  859. .fileName {
  860. width: 200px;
  861. overflow: hidden;
  862. text-overflow: ellipsis;
  863. white-space: nowrap;
  864. }
  865. .fileBtn {
  866. display: flex;
  867. align-items: center;
  868. .btn-icon {
  869. margin: 0 10px;
  870. font-size: 16px;
  871. cursor: pointer;
  872. &:hover {
  873. color: #00a0f4;
  874. }
  875. }
  876. }
  877. }
  878. .custom-tree-node {
  879. flex: 1;
  880. display: flex;
  881. align-items: center;
  882. justify-content: space-between;
  883. font-size: 14px;
  884. padding-right: 8px;
  885. }
  886. </style>