candidateList.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945
  1. <!--
  2. * @Description: create
  3. * @Version: 1.0
  4. * @Autor: XuTongZhang
  5. * @Date: 2020-07-28 15:25:06
  6. * @LastEditors: XuTongZhang
  7. * @LastEditTime: 2020-08-18 17:00:57
  8. -->
  9. <template>
  10. <div class="candidateList">
  11. <v-input :btn="isCollapse==1?btn1:isCollapse===2?btn2:isCollapse===3?btn3:btn0" :list="list" :key="isCollapse+3" @del="delAll" @search="search" @through="throughAll" @notice="noticeAll" @eliminate="eliminateAll" @undetermined="undeterminedAll"></v-input>
  12. <el-radio-group v-model="isCollapse" size="medium" style="margin-bottom: 20px;">
  13. <el-radio-button :label="0">候选人列表</el-radio-button>
  14. <el-radio-button :label="1">已通过候选人</el-radio-button>
  15. <el-radio-button :label="2">已淘汰候选人</el-radio-button>
  16. <el-radio-button :label="3">待定候选人</el-radio-button>
  17. </el-radio-group>
  18. <v-table :key="isCollapse" :table="isCollapse===2?table2:isCollapse===3?table3:table" :tableList="tableList" :sortType="true" :form="searchForm" :queryData="queryData" @details="details" @eliminate="eliminate" @through="through" @notice="notice" @del="del" @undetermined="undetermined" @openDia="openDia" @update="update" @selection-change="selection" id="id"></v-table>
  19. <v-pager @page="callPage" :total="totalrecords"></v-pager>
  20. <el-dialog :visible.sync="dialogFormVisible" width="600px" :before-close="close" :close-on-click-modal="false">
  21. <el-form :model="form" ref="form" label-width="140px" :rules="rules" label-position="left">
  22. <el-form-item label-width="0">
  23. <div class="title">通知群发列表</div>
  24. <div class="content">
  25. <el-tag v-for="(item, index) in copyPickList" :key="item" closable @close="copyPickList.splice(index, 1)" :type="errorlist.includes(item)?'danger':'success'">
  26. {{tableList.some(i => i.id === item) ? tableList.find(i => i.id === item).delivererName + (tableList.find(i => i.id === item).delivererMail || '(无邮箱)') : ''}}
  27. </el-tag>
  28. </div>
  29. </el-form-item>
  30. <el-form-item label="选择邀约岗位" prop="templateId">
  31. <el-select v-model="form.templateId" placeholder="请选择邀约岗位">
  32. <el-option v-for="item in downList" :key="item.id" :label="item.templateName" :value="item.id"></el-option>
  33. </el-select>
  34. <!-- <div v-else>{{this.downList1.some(i => i.id === form.processId) ? this.downList1.find(i => i.id === form.processId).processName : ''}}</div> -->
  35. </el-form-item>
  36. <el-form-item label="群发邮箱">{{email}}</el-form-item>
  37. <el-form-item>
  38. <el-button @click="close">取消</el-button>
  39. <el-button type="primary" @click="launch">立即发出</el-button>
  40. </el-form-item>
  41. </el-form>
  42. </el-dialog>
  43. <el-dialog :visible.sync="dialogVisible" width="600px" :before-close="closeDia" :close-on-click-modal="false">
  44. <div class="title" slot="title">{{info.delivererName}}的面试视频</div>
  45. <div class="content">
  46. <div class="video">
  47. <video width="100%" controls :src="info.answerVideoList && info.answerVideoList.length ? $img + vedioUrl : ''"></video>
  48. </div>
  49. <div class="list" v-if="info.answerVideoList && info.answerVideoList.length">
  50. <div v-for="(item, index) in info.answerVideoList" :key="item.id" class="active" @click="detActive(index)" :class="info.active === index ? 'is-active' : ''">第{{index + 1}}段</div>
  51. </div>
  52. <div v-else class="prompt">暂无视频</div>
  53. </div>
  54. </el-dialog>
  55. <el-dialog :visible.sync="visible" width="600px" :before-close="closeVisible" :close-on-click-modal="false">
  56. <el-form :model="uform" ref="uform" label-width="140px" :rules="rule" label-position="right">
  57. <el-form-item label="姓名" prop="delivererName">
  58. <el-input placeholder="请输入姓名" v-model="uform.delivererName" maxlength="32" show-word-limit></el-input>
  59. </el-form-item>
  60. <el-form-item label="性别" prop="delivererSex">
  61. <el-select v-model="uform.delivererSex" class="select" placeholder="请选择性别">
  62. <el-option v-for="item in [{ value: 0, label: '女' }, { value: 1, label: '男' }]" :key="item.value" :label="item.label" :value="item.value">
  63. </el-option>
  64. </el-select>
  65. </el-form-item>
  66. <!-- <el-form-item label="简历投递职位" prop="positionApplied">
  67. <el-input placeholder="请输入投递职位" v-model="uform.positionApplied"></el-input>
  68. </el-form-item> -->
  69. <el-form-item label="工作年限" prop="delivererWorkExp">
  70. <el-input placeholder="请输入工作年限" v-model="uform.delivererWorkExp" maxlength="200" show-word-limit></el-input>
  71. </el-form-item>
  72. <el-form-item label="学历" prop="delivererEducation">
  73. <el-select class="select" v-model="uform.delivererEducation" placeholder="请选择学历">
  74. <el-option v-for="item in ['大专', '本科', '研究生', '博士', '其他']" :key="item" :label="item" :value="item">
  75. </el-option>
  76. </el-select>
  77. </el-form-item>
  78. <el-form-item label="联系电话" prop="delivererPhone">
  79. <el-input placeholder="请输入联系电话" v-model.number="uform.delivererPhone" maxlength="11" show-word-limit></el-input>
  80. </el-form-item>
  81. <el-form-item label="邮箱地址" prop="delivererMail">
  82. <el-input placeholder="请输入邮箱地址" v-model="uform.delivererMail" maxlength="32" show-word-limit></el-input>
  83. </el-form-item>
  84. <el-form-item label="面试应聘职位" prop="desiredPositionId">
  85. <el-select class="select" v-model="uform.desiredPositionId" placeholder="请选择应聘职位">
  86. <el-option v-for="item in positionList" :key="item.value" :label="item.label" :value="item.value">
  87. </el-option>
  88. </el-select>
  89. </el-form-item>
  90. <el-form-item>
  91. <el-button @click="closeVisible">取 消</el-button>
  92. <el-button type="primary" @click="submit">修 改</el-button>
  93. </el-form-item>
  94. </el-form>
  95. </el-dialog>
  96. <resume :dialogFormVisible="visibleTwo" :close="closeTwo" :info="infoTwo" :searchForm="searchForm" :queryData="queryData"></resume>
  97. </div>
  98. </template>
  99. <script>
  100. import resume from './resume'
  101. export default {
  102. data () {
  103. let validator = (rule, value, callback) => {
  104. if (value === '') {
  105. callback(new Error('请输入手机号'))
  106. } else {
  107. if (!(/^1[3456789]\d{9}$/.test(value))) {
  108. callback(new Error('请输入正确的手机格式'))
  109. }
  110. callback()
  111. }
  112. }
  113. return {
  114. dialogFormVisible: false,
  115. dialogVisible: false,
  116. visible: false,
  117. visibleTwo: false,
  118. tableList: [],
  119. page: 1,
  120. isCollapse: 0,
  121. totalrecords: 0,
  122. pickList: [],
  123. copyPickList: [],
  124. downList: [],
  125. positionList: [],
  126. errorlist: [],
  127. searchForm: {},
  128. form: {},
  129. uform: {},
  130. email: '',
  131. info: {},
  132. infoTwo: {},
  133. vedioUrl: '',
  134. rules: {
  135. templateId: [{
  136. required: true,
  137. message: '请选择选择邀约岗位',
  138. trigger: 'blur'
  139. }]
  140. },
  141. rule: {
  142. delivererEducation: [{
  143. required: true,
  144. message: '请选择学历',
  145. trigger: 'change'
  146. }],
  147. delivererName: [{
  148. required: true,
  149. message: '请输入姓名',
  150. trigger: 'change'
  151. }],
  152. delivererPhone: [{
  153. required: true,
  154. validator,
  155. trigger: 'change'
  156. }],
  157. delivererMail: [{
  158. required: true,
  159. message: '请输入邮箱',
  160. trigger: 'change'
  161. }],
  162. delivererSex: [{
  163. required: true,
  164. message: '请选择性别',
  165. trigger: 'change'
  166. }],
  167. delivererWorkExp: [{
  168. required: true,
  169. message: '请填写工作经验',
  170. trigger: 'change'
  171. }],
  172. // desiredPositionId: [
  173. // { required: true, message: '请选择应聘职位', trigger: 'change' }
  174. // ],
  175. positionApplied: [{
  176. required: true,
  177. message: '请填写投递职位',
  178. trigger: 'change'
  179. }]
  180. },
  181. list: [{
  182. placeholder: '请输入关键字查询',
  183. props: 'condition'
  184. },
  185. {
  186. type: 'select',
  187. placeholder: '性别',
  188. props: 'delivererSex',
  189. options: [{
  190. label: '全部',
  191. value: null
  192. }, {
  193. label: '男',
  194. value: 1
  195. }, {
  196. label: '女',
  197. value: 0
  198. }]
  199. },
  200. {
  201. type: 'select',
  202. placeholder: '来源',
  203. props: 'resumeFrom',
  204. options: [{
  205. label: '全部',
  206. value: null
  207. },
  208. {
  209. label: '51job',
  210. value: 0
  211. },
  212. {
  213. label: '智联',
  214. value: 1
  215. },
  216. {
  217. label: '58同城',
  218. value: 2
  219. },
  220. {
  221. label: '平台',
  222. value: 3
  223. }
  224. ]
  225. },
  226. {
  227. type: 'date'
  228. }
  229. ],
  230. btn0: [{
  231. name: '确定',
  232. type: 'primary',
  233. method: 'search'
  234. },
  235. {
  236. name: '通过',
  237. type: 'success',
  238. method: 'through'
  239. },
  240. {
  241. name: '淘汰',
  242. type: 'danger',
  243. method: 'eliminate'
  244. },
  245. {
  246. name: '待定',
  247. type: 'warning',
  248. method: 'undetermined'
  249. }
  250. ],
  251. btn1: [{
  252. name: '确定',
  253. type: 'primary',
  254. method: 'search'
  255. },
  256. {
  257. name: '通知成功',
  258. type: 'success',
  259. method: 'notice'
  260. }
  261. ],
  262. btn2: [{
  263. name: '确定',
  264. type: 'primary',
  265. method: 'search'
  266. },
  267. {
  268. name: '通过',
  269. type: 'success',
  270. method: 'through'
  271. },
  272. {
  273. name: '删除',
  274. type: 'danger',
  275. method: 'del'
  276. }
  277. ],
  278. btn3: [{
  279. name: '确定',
  280. type: 'primary',
  281. method: 'search'
  282. },
  283. {
  284. name: '通过',
  285. type: 'success',
  286. method: 'through'
  287. },
  288. {
  289. name: '淘汰',
  290. type: 'danger',
  291. method: 'eliminate'
  292. }
  293. ],
  294. table: {
  295. selection: true,
  296. column: [{
  297. label: '编号',
  298. props: 'id'
  299. },
  300. {
  301. label: '姓名',
  302. props: 'delivererName'
  303. },
  304. {
  305. label: '性别',
  306. props: 'delivererSex',
  307. options: ['女', '男']
  308. },
  309. {
  310. label: '简历来源',
  311. props: 'resumeFrom',
  312. options: ['51job', '智联招聘', '58同城', '平台']
  313. },
  314. {
  315. label: '招聘类型',
  316. props: 'recruitType',
  317. options: ['社招', '校招', '直接校招']
  318. },
  319. // {
  320. // label: '简历投递职位',
  321. // props: 'positionApplied'
  322. // },
  323. {
  324. label: '面试应聘职位',
  325. props: 'positionName'
  326. },
  327. {
  328. label: '工作年限',
  329. props: 'delivererWorkExp'
  330. },
  331. {
  332. label: '学历',
  333. props: 'delivererEducation'
  334. },
  335. {
  336. label: '联系电话',
  337. props: 'delivererPhone'
  338. },
  339. {
  340. label: '邮箱',
  341. props: 'delivererMail'
  342. },
  343. {
  344. label: '通知面试时间',
  345. props: 'sendMailTime'
  346. },
  347. {
  348. label: '完成面试时间',
  349. props: 'confirmInterviewTime'
  350. }
  351. ],
  352. width: 500,
  353. handle: [{
  354. title: '查看',
  355. method: 'details',
  356. type: 'info'
  357. },
  358. // {
  359. // title: '查看视频',
  360. // method: 'openDia',
  361. // type: 'info'
  362. // },
  363. {
  364. title: '通过',
  365. method: 'through',
  366. type: 'success'
  367. },
  368. {
  369. title: '淘汰',
  370. method: 'eliminate',
  371. type: 'danger'
  372. },
  373. {
  374. title: '待定',
  375. method: 'undetermined',
  376. type: 'warning'
  377. },
  378. {
  379. title: '修改信息',
  380. method: 'update',
  381. type: 'warning'
  382. }
  383. ]
  384. },
  385. table2: {
  386. selection: true,
  387. column: [{
  388. label: '编号',
  389. props: 'id'
  390. },
  391. {
  392. label: '姓名',
  393. props: 'delivererName'
  394. },
  395. {
  396. label: '性别',
  397. props: 'delivererSex',
  398. options: ['女', '男']
  399. },
  400. {
  401. label: '简历来源',
  402. props: 'resumeFrom',
  403. options: ['51job', '智联招聘', '58同城', '平台']
  404. },
  405. // {
  406. // label: '简历投递职位',
  407. // props: 'positionApplied'
  408. // },
  409. {
  410. label: '面试应聘职位',
  411. props: 'positionName'
  412. },
  413. {
  414. label: '工作年限',
  415. props: 'delivererWorkExp'
  416. },
  417. {
  418. label: '学历',
  419. props: 'delivererEducation'
  420. },
  421. {
  422. label: '联系电话',
  423. props: 'delivererPhone'
  424. },
  425. {
  426. label: '邮箱',
  427. props: 'delivererMail'
  428. },
  429. {
  430. label: '被标记未通过时间',
  431. props: 'rejectTime'
  432. },
  433. {
  434. label: '理由',
  435. props: 'rejectReason'
  436. }
  437. ],
  438. width: 360,
  439. handle: [{
  440. title: '查看',
  441. method: 'details',
  442. type: 'info'
  443. },
  444. {
  445. title: '通过',
  446. method: 'through',
  447. type: 'success'
  448. },
  449. {
  450. title: '删除',
  451. method: 'del',
  452. type: 'danger'
  453. },
  454. {
  455. title: '修改信息',
  456. method: 'update',
  457. type: 'warning'
  458. }
  459. ]
  460. },
  461. table3: {
  462. selection: true,
  463. column: [{
  464. label: '编号',
  465. props: 'id'
  466. },
  467. {
  468. label: '姓名',
  469. props: 'delivererName'
  470. },
  471. {
  472. label: '性别',
  473. props: 'delivererSex',
  474. options: ['女', '男']
  475. },
  476. {
  477. label: '简历来源',
  478. props: 'resumeFrom',
  479. options: ['51job', '智联招聘', '58同城', '平台']
  480. },
  481. // {
  482. // label: '简历投递职位',
  483. // props: 'positionApplied'
  484. // },
  485. {
  486. label: '面试应聘职位',
  487. props: 'positionName'
  488. },
  489. {
  490. label: '工作年限',
  491. props: 'delivererWorkExp'
  492. },
  493. {
  494. label: '学历',
  495. props: 'delivererEducation'
  496. },
  497. {
  498. label: '联系电话',
  499. props: 'delivererPhone'
  500. },
  501. {
  502. label: '邮箱',
  503. props: 'delivererMail'
  504. }
  505. ],
  506. width: 420,
  507. handle: [{
  508. title: '查看',
  509. method: 'details',
  510. type: 'info'
  511. },
  512. // {
  513. // title: '查看视频',
  514. // method: 'openDia',
  515. // type: 'info'
  516. // },
  517. {
  518. title: '通过',
  519. method: 'through',
  520. type: 'success'
  521. },
  522. {
  523. title: '淘汰',
  524. method: 'eliminate',
  525. type: 'danger'
  526. },
  527. {
  528. title: '修改信息',
  529. method: 'update',
  530. type: 'warning'
  531. }
  532. ]
  533. }
  534. }
  535. },
  536. components: {
  537. resume
  538. },
  539. mounted () {
  540. this.queryDownList()
  541. this.queryEmail()
  542. },
  543. methods: {
  544. queryData (form = {}) {
  545. let page = this.page
  546. this.searchForm = form
  547. let reqdata = form
  548. reqdata.interviewResult = this.isCollapse
  549. reqdata.isPass = 1
  550. reqdata.isSendInviteMail = 1
  551. this.$api
  552. .post('/resumeInfo/queryCandidateList', {
  553. reqdata,
  554. page
  555. })
  556. .then((res) => {
  557. this.totalrecords = res.totalrecords
  558. this.tableList = res.list.map(item => {
  559. item.delivererSex = item.delivererSex - 0 || 0
  560. item.desiredPositionId = item.desiredPositionId - 0 || null
  561. // item.desiredPositionId = item.desiredPositionId ? this.downList1.some(i => i.id === item.desiredPositionId) ? this.downList1.find(i => i.id === item.desiredPositionId).positionName : '' : ''
  562. return item
  563. })
  564. })
  565. },
  566. queryDownList () {
  567. this.$api
  568. .post('/position/queryPositionList', {
  569. reqdata: {}
  570. })
  571. .then((res) => {
  572. this.positionList = res.list.map((item) => ({
  573. value: item.id,
  574. label: item.positionName
  575. }))
  576. this.downList1 = res.list
  577. this.queryData()
  578. })
  579. this.$api
  580. .post('/template/queryTemplateList', {
  581. reqdata: {},
  582. rows: 50
  583. })
  584. .then((res) => {
  585. this.downList = res.list
  586. })
  587. },
  588. queryEmail () {
  589. this.$api
  590. .post('/companyAccount/queryCompanyAccountList', {
  591. reqdata: {}
  592. }).then(res => {
  593. this.email = res.list.some(item => item.useType === 1) ? res.list.find(item => item.useType === 1).cmpMailAccount : ''
  594. })
  595. },
  596. search (form) {
  597. this.queryData(form)
  598. },
  599. details (row) {
  600. // row.filePath ? window.open(this.$img + row.filePath) : this.$message({
  601. // type: 'info',
  602. // message: '无此人简历'
  603. // })
  604. this.openTwo()
  605. this.infoTwo = row
  606. },
  607. launch () {
  608. let a
  609. this.$refs['form'].validate((valid) => {
  610. a = valid
  611. })
  612. if (!a) return
  613. let resumeInfoStatusList = this.copyPickList.map(item => ({
  614. id: item,
  615. templateId: this.form.templateId
  616. }))
  617. this.copyPickList.length
  618. ? this.$api
  619. .post('/resumeInfo/sendSuccessMail', {
  620. reqdata: {
  621. resumeInfoStatusList
  622. }
  623. })
  624. .then((res) => {
  625. this.$alert(`${res.object.successTotal}条发送成功,${res.object.failTotal}条发送失败!`, '发送结果', {
  626. confirmButtonText: '确定',
  627. callback: action => {
  628. }
  629. })
  630. this.errorlist = res.object.sendMailFailList.map(item => {
  631. return item.id
  632. })
  633. })
  634. : this.$message({
  635. type: 'info',
  636. message: '请添加需要通知的对象!'
  637. })
  638. },
  639. notice (row) {
  640. this.open()
  641. this.copyPickList = [row.id]
  642. },
  643. noticeAll () {
  644. this.pickList.length
  645. ? this.open()
  646. : this.$message({
  647. type: 'info',
  648. message: '请选择需要通知的对象!'
  649. })
  650. },
  651. through (row, type = false) {
  652. let ids = type ? row : [row.id]
  653. let resumeInfoStatusList = ids.map(item => ({
  654. id: item,
  655. interviewResult: 1
  656. }))
  657. this.$api
  658. .post('/resumeInfo/changeInterviewResult', {
  659. reqdata: {
  660. resumeInfoStatusList
  661. }
  662. })
  663. .then((res) => {
  664. this.queryData(this.searchForm)
  665. })
  666. },
  667. throughAll () {
  668. this.pickList.length
  669. ? this.through(this.pickList, true)
  670. : this.$message({
  671. type: 'info',
  672. message: '请选择通过的应聘者!'
  673. })
  674. },
  675. eliminate (row, type = false) {
  676. let ids = type ? row : [row.id]
  677. let resumeInfoStatusList = ids.map(item => ({
  678. id: item,
  679. interviewResult: 2
  680. }))
  681. this.$api
  682. .post('/resumeInfo/changeInterviewResult', {
  683. reqdata: {
  684. resumeInfoStatusList
  685. }
  686. })
  687. .then((res) => {
  688. this.queryData(this.searchForm)
  689. })
  690. },
  691. eliminateAll () {
  692. this.pickList.length
  693. ? this.eliminate(this.pickList, true)
  694. : this.$message({
  695. type: 'info',
  696. message: '请选择被淘汰的应聘者!'
  697. })
  698. },
  699. del (row, type = false) {
  700. let ids = type ? row : [row.id]
  701. let resumeInfoStatusList = ids.map(item => ({
  702. id: item,
  703. status: 1
  704. }))
  705. this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
  706. confirmButtonText: '确定',
  707. cancelButtonText: '取消',
  708. type: 'warning'
  709. })
  710. .then(() => {
  711. this.$api
  712. .post('/resumeInfo/deleteResumeInfo', {
  713. reqdata: {
  714. resumeInfoStatusList
  715. }
  716. })
  717. .then((res) => {
  718. this.queryData(this.searchForm)
  719. this.$message({
  720. type: 'success',
  721. message: '删除成功!'
  722. })
  723. })
  724. })
  725. .catch(() => {
  726. this.$message({
  727. type: 'info',
  728. message: '已取消删除'
  729. })
  730. })
  731. },
  732. delAll () {
  733. this.pickList.length
  734. ? this.del(this.pickList, true)
  735. : this.$message({
  736. type: 'info',
  737. message: '请选择需要删除的内容'
  738. })
  739. },
  740. undetermined (row, type = false) {
  741. let ids = type ? row : [row.id]
  742. let resumeInfoStatusList = ids.map(item => ({
  743. id: item,
  744. interviewResult: 3
  745. }))
  746. this.$api
  747. .post('/resumeInfo/changeInterviewResult', {
  748. reqdata: {
  749. resumeInfoStatusList
  750. }
  751. })
  752. .then((res) => {
  753. this.queryData(this.searchForm)
  754. })
  755. },
  756. undeterminedAll () {
  757. this.pickList.length
  758. ? this.undetermined(this.pickList, true)
  759. : this.$message({
  760. type: 'info',
  761. message: '请选择待定的应聘者'
  762. })
  763. },
  764. selection (val) {
  765. this.$set(this.$data, 'pickList', val)
  766. },
  767. detActive (index) {
  768. this.$set(this.info, 'active', index)
  769. this.vedioUrl = this.info.answerVideoList[this.info.active || 0] ? this.info.answerVideoList[this.info.active || 0].answerVideoPath : ''
  770. },
  771. update (row) {
  772. this.openVisible()
  773. console.log(row)
  774. this.uform = Object.assign({}, row)
  775. },
  776. submit () {
  777. let a
  778. this.$refs['uform'].validate((valid) => {
  779. a = valid
  780. })
  781. if (!a) return
  782. let reqdata = this.uform
  783. this.$api
  784. .post('/resumeInfo/updateResumeInfo', {
  785. reqdata
  786. })
  787. .then((res) => {
  788. this.$message({
  789. message: '修改成功!',
  790. type: 'success'
  791. })
  792. this.closeVisible()
  793. this.queryData(this.searchForm)
  794. })
  795. },
  796. open () {
  797. this.dialogFormVisible = true
  798. },
  799. close () {
  800. this.dialogFormVisible = false
  801. this.form = {}
  802. this.queryData(this.searchForm)
  803. this.copyPickList = Array.from(this.pickList)
  804. },
  805. closeDia () {
  806. this.dialogVisible = false
  807. },
  808. openDia (row) {
  809. this.info = row
  810. this.info.active = 0
  811. this.vedioUrl = this.info.answerVideoList[this.info.active || 0] ? this.info.answerVideoList[this.info.active || 0].answerVideoPath : ''
  812. this.dialogVisible = true
  813. },
  814. openVisible () {
  815. this.visible = true
  816. },
  817. openTwo () {
  818. this.visibleTwo = true
  819. },
  820. closeTwo () {
  821. this.visibleTwo = false
  822. },
  823. closeVisible () {
  824. this.visible = false
  825. this.uform = {}
  826. },
  827. callPage (val) {
  828. this.page = val
  829. this.queryData(this.searchForm)
  830. }
  831. },
  832. watch: {
  833. isCollapse () {
  834. this.queryData(this.searchForm)
  835. this.isCollapse === 1
  836. ? this.$set(this.table, 'handle', [{
  837. title: '查看',
  838. method: 'details',
  839. type: 'info'
  840. },
  841. // {
  842. // title: '查看视频',
  843. // method: 'openDia',
  844. // type: 'info'
  845. // },
  846. {
  847. title: '通知成功',
  848. method: 'notice',
  849. type: 'success'
  850. },
  851. {
  852. title: '修改信息',
  853. method: 'update',
  854. type: 'warning'
  855. }
  856. ])
  857. : this.isCollapse === 0 && this.$set(this.table, 'handle',
  858. [{
  859. title: '查看',
  860. method: 'details',
  861. type: 'info'
  862. },
  863. // {
  864. // title: '查看视频',
  865. // method: 'openDia',
  866. // type: 'info'
  867. // },
  868. {
  869. title: '通过',
  870. method: 'through',
  871. type: 'success'
  872. },
  873. {
  874. title: '淘汰',
  875. method: 'eliminate',
  876. type: 'danger'
  877. },
  878. {
  879. title: '待定',
  880. method: 'undetermined',
  881. type: 'warning'
  882. },
  883. {
  884. title: '修改信息',
  885. method: 'update',
  886. type: 'warning'
  887. }
  888. ]
  889. )
  890. },
  891. pickList () {
  892. this.copyPickList = Array.from(this.pickList)
  893. }
  894. }
  895. }
  896. </script>
  897. <style lang="scss" scoped>
  898. .title {
  899. font-size: 20px;
  900. font-weight: bold;
  901. }
  902. .prompt {
  903. text-align: center;
  904. height: 30px;
  905. line-height: 40px;
  906. font-size: 20px;
  907. color: #888;
  908. }
  909. </style><style lang="scss">
  910. .candidateList {
  911. .el-dialog__body {
  912. padding-top: 10px;
  913. }
  914. }
  915. .list {
  916. margin-top: 10px;
  917. font-size: 14px;
  918. display: flex;
  919. color: rgb(42, 117, 216);
  920. >div {
  921. cursor: pointer;
  922. margin: 10px;
  923. }
  924. .is-active {
  925. color: #000;
  926. font-size: 16px;
  927. margin-top: 7px;
  928. }
  929. }
  930. .content {
  931. min-height: 50px;
  932. >span {
  933. margin: 5px;
  934. }
  935. }
  936. </style>