candidateAll.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. <!--
  2. * @Description: create
  3. * @Version: 1.0
  4. * @Autor: XuTongZhang
  5. * @Date: 2020-07-30 10:17:25
  6. * @LastEditors: XuTongZhang
  7. * @LastEditTime: 2020-08-12 17:59:30
  8. -->
  9. <template>
  10. <div class="indexPage">
  11. <v-input :btn="btn" :list="list" @search="search" @exports="exports"></v-input>
  12. <v-table
  13. :table="table"
  14. :tableList="tableList"
  15. :sortType="true"
  16. :queryData="queryData"
  17. :form="searchForm"
  18. @details="details"
  19. ></v-table>
  20. <v-pager @page="callPage" :total="totalrecords"></v-pager>
  21. <resume :dialogFormVisible="dialogFormVisible" :close="close" :info="info" :searchForm="searchForm" :queryData="queryData"></resume>
  22. </div>
  23. </template>
  24. <script>
  25. import resume from './resume'
  26. export default {
  27. data () {
  28. return {
  29. tableList: [],
  30. dialogFormVisible: false,
  31. page: 1,
  32. totalrecords: 0,
  33. pickList: [],
  34. downList1: [],
  35. searchForm: {},
  36. info: {},
  37. list: [
  38. {
  39. placeholder: '请输入关键字查询',
  40. props: 'condition'
  41. },
  42. {
  43. type: 'select',
  44. placeholder: '性别',
  45. props: 'delivererSex',
  46. options: [{ label: '男', value: 1 }, { label: '女', value: 0 }]
  47. },
  48. {
  49. type: 'select',
  50. placeholder: '来源',
  51. props: 'resumeFrom',
  52. options: [{ label: '51job', value: 0 }, { label: '智联', value: 1 }, { label: '58同城', value: 2 }]
  53. },
  54. {
  55. placeholder: '请输入投递职位',
  56. props: 'positionApplied'
  57. },
  58. {
  59. type: 'select',
  60. placeholder: '应聘职位',
  61. props: 'desiredPositionId',
  62. options: []
  63. }
  64. ],
  65. btn: [
  66. {
  67. name: '确定',
  68. type: 'primary',
  69. method: 'search'
  70. },
  71. {
  72. name: '导出',
  73. type: 'primary',
  74. method: 'exports'
  75. }
  76. ],
  77. table: {
  78. selection: true,
  79. column: [
  80. {
  81. label: '编号',
  82. props: 'id'
  83. },
  84. {
  85. label: '姓名',
  86. props: 'delivererName'
  87. },
  88. {
  89. label: '性别',
  90. props: 'delivererSex',
  91. options: ['女', '男']
  92. },
  93. {
  94. label: '简历来源',
  95. props: 'resumeFrom',
  96. options: ['51job', '智联招聘', '58同城']
  97. },
  98. {
  99. label: '招聘类型',
  100. props: 'recruitType',
  101. options: ['社招', '校招', '直接校招']
  102. },
  103. {
  104. label: '简历投递职位',
  105. props: 'positionApplied'
  106. },
  107. {
  108. label: '简历状态',
  109. props: 'state'
  110. },
  111. {
  112. label: '工作年限',
  113. props: 'delivererWorkExp'
  114. },
  115. {
  116. label: '学历',
  117. props: 'delivererEducation'
  118. },
  119. {
  120. label: '联系电话',
  121. props: 'delivererPhone'
  122. },
  123. {
  124. label: '面试应聘职位',
  125. props: 'desiredPositionId'
  126. },
  127. {
  128. label: '通知面试时间',
  129. props: 'sendMailTime'
  130. },
  131. {
  132. label: '完成面试时间',
  133. props: 'confirmInterviewTime'
  134. },
  135. {
  136. label: '面试状态',
  137. props: 'interviewStatus',
  138. options: ['未面试', '已面试']
  139. },
  140. {
  141. label: '面试结果',
  142. props: 'interviewResult',
  143. options: ['未通过', '已通过', '已淘汰']
  144. }
  145. ],
  146. fixed: true,
  147. width: 100,
  148. handle: [
  149. {
  150. title: '查看简历',
  151. method: 'details',
  152. type: 'info'
  153. }
  154. ]
  155. }
  156. }
  157. },
  158. components: {
  159. resume
  160. },
  161. mounted () {
  162. this.queryData()
  163. this.queryDownList()
  164. },
  165. methods: {
  166. queryData (form = {}) {
  167. let page = this.page
  168. this.searchForm = form
  169. let reqdata = form
  170. this.$api
  171. .post('/resumeInfo/queryTalentPoolList', {
  172. reqdata,
  173. page
  174. })
  175. .then((res) => {
  176. this.totalrecords = res.totalrecords
  177. this.tableList = res.list.map(item => {
  178. item.desiredPositionId = item.desiredPositionId ? this.downList1.some(i => i.id === item.desiredPositionId) ? this.downList1.find(i => i.id === item.desiredPositionId).positionName : '' : ''
  179. item.state = item.interviewResult ? ['', '已通过', '未通过'][item.interviewResult] : item.isSendInviteMail ? '已通知' : ['未通过', '已通过', '已淘汰', '待定'][item.isPass]
  180. return item
  181. })
  182. })
  183. },
  184. queryDownList () {
  185. this.$api
  186. .post('/position/queryPositionList', {
  187. reqdata: {}
  188. })
  189. .then((res) => {
  190. this.list[4].options = res.list.map((item) => ({
  191. value: item.id,
  192. label: item.positionName
  193. }))
  194. this.downList1 = res.list
  195. })
  196. },
  197. search (form) {
  198. this.queryData(form)
  199. },
  200. details (row) {
  201. this.open()
  202. this.info = row
  203. },
  204. exports () {
  205. this.$api
  206. .post('/export/export2Web', {
  207. reqdata: this.searchForm
  208. })
  209. .then((res) => {
  210. console.log(res)
  211. })
  212. },
  213. open () {
  214. this.dialogFormVisible = true
  215. },
  216. close () {
  217. this.dialogFormVisible = false
  218. this.form = {}
  219. },
  220. callPage (val) {
  221. this.page = val
  222. this.queryData(this.searchForm)
  223. }
  224. }
  225. }
  226. </script>