index.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580
  1. <template>
  2. <div class="app-container">
  3. <el-form
  4. :model="queryParams"
  5. ref="queryForm"
  6. size="small"
  7. :inline="true"
  8. v-show="showSearch"
  9. label-width="68px"
  10. >
  11. <el-form-item label="姓名" prop="userName">
  12. <el-input
  13. v-model="queryParams.userName"
  14. placeholder="请输入姓名"
  15. clearable
  16. @keyup.enter.native="handleQuery"
  17. />
  18. </el-form-item>
  19. <el-form-item label="岗位" prop="position">
  20. <el-input
  21. v-model="queryParams.position"
  22. placeholder="请输入岗位"
  23. clearable
  24. @keyup.enter.native="handleQuery"
  25. />
  26. </el-form-item>
  27. <el-form-item label="学历" prop="degree">
  28. <el-input
  29. v-model="queryParams.degree"
  30. placeholder="请输入学历"
  31. clearable
  32. @keyup.enter.native="handleQuery"
  33. />
  34. </el-form-item>
  35. <el-form-item label="毕业院校" prop="graduateCollege">
  36. <el-input
  37. v-model="queryParams.graduateCollege"
  38. placeholder="请输入毕业院校"
  39. clearable
  40. @keyup.enter.native="handleQuery"
  41. />
  42. </el-form-item>
  43. <el-form-item label="专业" prop="major">
  44. <el-input
  45. v-model="queryParams.major"
  46. placeholder="请输入专业"
  47. clearable
  48. @keyup.enter.native="handleQuery"
  49. />
  50. </el-form-item>
  51. <el-form-item label="求职意向" prop="jobObjective">
  52. <el-input
  53. v-model="queryParams.jobObjective"
  54. placeholder="请输入求职意向"
  55. clearable
  56. @keyup.enter.native="handleQuery"
  57. />
  58. </el-form-item>
  59. <el-form-item label="导入人" prop="createUserName">
  60. <el-input
  61. v-model="queryParams.createUserName"
  62. placeholder="请输入导入人"
  63. clearable
  64. @keyup.enter.native="handleQuery"
  65. />
  66. </el-form-item>
  67. <el-form-item label="导入开始时间" prop="startTime">
  68. <el-date-picker
  69. clearable
  70. v-model="queryParams.startTime"
  71. type="date"
  72. value-format="yyyy-MM-dd"
  73. placeholder="请选择导入开始时间"
  74. >
  75. </el-date-picker>
  76. </el-form-item>
  77. <el-form-item label="导入结束时间" prop="endTime">
  78. <el-date-picker
  79. clearable
  80. v-model="queryParams.endTime"
  81. type="date"
  82. value-format="yyyy-MM-dd"
  83. placeholder="请选择导入结束时间"
  84. >
  85. </el-date-picker>
  86. </el-form-item>
  87. <el-form-item>
  88. <el-button
  89. type="primary"
  90. icon="el-icon-search"
  91. size="mini"
  92. @click="handleQuery"
  93. >搜索</el-button
  94. >
  95. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  96. >重置</el-button
  97. >
  98. </el-form-item>
  99. </el-form>
  100. <el-row :gutter="10" class="mb8">
  101. <el-col :span="1.5">
  102. <el-button
  103. type="primary"
  104. plain
  105. icon="el-icon-plus"
  106. size="mini"
  107. @click="handleAdd"
  108. v-hasPermi="['system:resume:add']"
  109. >新增</el-button
  110. >
  111. </el-col>
  112. <el-col :span="1.5">
  113. <el-button
  114. type="success"
  115. plain
  116. icon="el-icon-edit"
  117. size="mini"
  118. :disabled="single"
  119. @click="handleUpdate"
  120. v-hasPermi="['system:resume:edit']"
  121. >修改</el-button
  122. >
  123. </el-col>
  124. <el-col :span="1.5">
  125. <el-button
  126. type="danger"
  127. plain
  128. icon="el-icon-delete"
  129. size="mini"
  130. :disabled="multiple"
  131. @click="handleDelete"
  132. v-hasPermi="['system:resume:remove']"
  133. >删除</el-button
  134. >
  135. </el-col>
  136. <el-col :span="1.5">
  137. <el-button
  138. type="warning"
  139. plain
  140. icon="el-icon-download"
  141. size="mini"
  142. @click="handleExport"
  143. v-hasPermi="['system:resume:export']"
  144. >导出</el-button
  145. >
  146. </el-col>
  147. <right-toolbar
  148. :showSearch.sync="showSearch"
  149. @queryTable="getList"
  150. ></right-toolbar>
  151. </el-row>
  152. <el-table
  153. v-loading="loading"
  154. :data="resumeList"
  155. @selection-change="handleSelectionChange"
  156. >
  157. <el-table-column type="selection" width="55" align="center" />
  158. <el-table-column
  159. label="基本信息"
  160. width="300"
  161. align="center"
  162. prop="resumeId"
  163. >
  164. <template slot-scope="scope">
  165. <span
  166. >{{ scope.row.userName }}|{{
  167. parseTime(scope.row.birthday, "{y}-{m}-{d}")
  168. }}|{{ scope.row.gender }} |{{ scope.row.experience }}|{{
  169. scope.row.degree
  170. }}|{{ scope.row.graduateCollege }} |{{ scope.row.major }}|{{
  171. scope.row.jobObjective
  172. }}|{{ scope.row.residence }} |{{ scope.row.mobile }}|{{
  173. scope.row.email
  174. }}</span
  175. >
  176. </template>
  177. </el-table-column>
  178. <el-table-column
  179. label="职位"
  180. align="center"
  181. prop="position"
  182. width="100"
  183. />
  184. <el-table-column
  185. label="导入时间"
  186. align="center"
  187. prop="createDate"
  188. width="150"
  189. >
  190. <template slot-scope="scope">
  191. <span>{{ parseTime(scope.row.createDate, "{y}-{m}-{d}") }}</span>
  192. </template>
  193. </el-table-column>
  194. <el-table-column
  195. label="导入人"
  196. align="center"
  197. prop="createUserName"
  198. width="100"
  199. />
  200. <el-table-column
  201. label="操作"
  202. align="center"
  203. class-name="small-padding fixed-width"
  204. >
  205. <template slot-scope="scope">
  206. <el-button
  207. size="mini"
  208. type="text"
  209. icon="el-icon-edit"
  210. @click="handleUpdate(scope.row)"
  211. v-hasPermi="['system:resume:edit']"
  212. >修改</el-button
  213. >
  214. <el-button
  215. size="mini"
  216. type="text"
  217. icon="el-icon-delete"
  218. @click="handleDelete(scope.row)"
  219. v-hasPermi="['system:resume:remove']"
  220. >删除</el-button
  221. >
  222. </template>
  223. </el-table-column>
  224. </el-table>
  225. <pagination
  226. v-show="total > 0"
  227. :total="total"
  228. :page.sync="queryParams.pageNum"
  229. :limit.sync="queryParams.pageSize"
  230. @pagination="getList"
  231. />
  232. <!-- 添加或修改简历管理对话框 -->
  233. <!-- <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  234. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  235. <el-form-item label="候选人姓名" prop="userName">
  236. <el-input v-model="form.userName" placeholder="请输入姓名" />
  237. </el-form-item>
  238. <el-form-item label="手机号码" prop="mobile">
  239. <el-input v-model="form.mobile" placeholder="请输入手机号码" />
  240. </el-form-item>
  241. <el-form-item label="简历附件" prop="resumeFile">
  242. <file-upload v-model="form.resumeFile" />
  243. </el-form-item>
  244. <el-form-item label="工作地" prop="workingPlace">
  245. <el-input v-model="form.workingPlace" placeholder="请输入工作地" />
  246. </el-form-item>
  247. <el-form-item label="学历" prop="degree">
  248. <el-input v-model="form.degree" placeholder="请输入学历" />
  249. </el-form-item>
  250. <el-form-item label="性别" prop="gender">
  251. <el-input v-model="form.gender" placeholder="请输入性别" />
  252. </el-form-item>
  253. <el-form-item label="年龄" prop="age">
  254. <el-input v-model="form.age" placeholder="请输入年龄" />
  255. </el-form-item>
  256. <el-form-item label="居住地" prop="residence">
  257. <el-input v-model="form.residence" placeholder="请输入居住地" />
  258. </el-form-item>
  259. <el-form-item label="专业" prop="major">
  260. <el-input v-model="form.major" placeholder="请输入专业" />
  261. </el-form-item>
  262. <el-form-item label="行业经验" prop="industryExperience">
  263. <el-input v-model="form.industryExperience" type="textarea" placeholder="请输入内容" />
  264. </el-form-item>
  265. <el-form-item label="毕业院校" prop="graduateCollege">
  266. <el-input v-model="form.graduateCollege" placeholder="请输入毕业院校" />
  267. </el-form-item>
  268. <el-form-item label="岗位" prop="position">
  269. <el-input v-model="form.position" placeholder="请输入岗位" />
  270. </el-form-item>
  271. <el-form-item label="语言能力" prop="languageAbility">
  272. <el-input v-model="form.languageAbility" type="textarea" placeholder="请输入内容" />
  273. </el-form-item>
  274. <el-form-item label="证书" prop="certificate">
  275. <el-input v-model="form.certificate" type="textarea" placeholder="请输入内容" />
  276. </el-form-item>
  277. <el-form-item label="电子邮箱" prop="email">
  278. <el-input v-model="form.email" placeholder="请输入电子邮箱" />
  279. </el-form-item>
  280. <el-form-item label="生日" prop="birthday">
  281. <el-date-picker clearable
  282. v-model="form.birthday"
  283. type="date"
  284. value-format="yyyy-MM-dd"
  285. placeholder="请选择生日">
  286. </el-date-picker>
  287. </el-form-item>
  288. <el-form-item label="工作年限" prop="experience">
  289. <el-input v-model="form.experience" type="textarea" placeholder="请输入内容" />
  290. </el-form-item>
  291. <el-form-item label="期望薪资" prop="exceptedSalary">
  292. <el-input v-model="form.exceptedSalary" type="textarea" placeholder="请输入内容" />
  293. </el-form-item>
  294. <el-form-item label="最近工作公司" prop="lastCompany">
  295. <el-input v-model="form.lastCompany" placeholder="请输入最近工作公司" />
  296. </el-form-item>
  297. <el-form-item label="最近工作行业" prop="lastIndustry">
  298. <el-input v-model="form.lastIndustry" placeholder="请输入最近工作行业" />
  299. </el-form-item>
  300. <el-form-item label="最近工作职位" prop="lastPosition">
  301. <el-input v-model="form.lastPosition" placeholder="请输入最近工作职位" />
  302. </el-form-item>
  303. <el-form-item label="专业技能" prop="keyWords">
  304. <el-input v-model="form.keyWords" type="textarea" placeholder="请输入内容" />
  305. </el-form-item>
  306. <el-form-item label="自我评价" prop="selfEvaluation">
  307. <el-input v-model="form.selfEvaluation" type="textarea" placeholder="请输入内容" />
  308. </el-form-item>
  309. <el-form-item label="工作履历" prop="resumeWork">
  310. <el-input v-model="form.resumeWork" type="textarea" placeholder="请输入内容" />
  311. </el-form-item>
  312. <el-form-item label="项目经验" prop="resumeProject">
  313. <el-input v-model="form.resumeProject" type="textarea" placeholder="请输入内容" />
  314. </el-form-item>
  315. <el-form-item label="教育经历" prop="resumeEducation">
  316. <el-input v-model="form.resumeEducation" type="textarea" placeholder="请输入内容" />
  317. </el-form-item>
  318. </el-form>
  319. <div slot="footer" class="dialog-footer">
  320. <el-button type="primary" @click="submitForm">确 定</el-button>
  321. <el-button @click="cancel">取 消</el-button>
  322. </div>
  323. </el-dialog> -->
  324. </div>
  325. </template>
  326. <script>
  327. import {
  328. listResume,
  329. getResume,
  330. delResume,
  331. addResume,
  332. updateResume,
  333. } from "@/api/system/resume";
  334. export default {
  335. name: "Resume",
  336. data() {
  337. return {
  338. // 遮罩层
  339. loading: true,
  340. // 选中数组
  341. ids: [],
  342. // 非单个禁用
  343. single: true,
  344. // 非多个禁用
  345. multiple: true,
  346. // 显示搜索条件
  347. showSearch: true,
  348. // 总条数
  349. total: 0,
  350. // 简历管理表格数据
  351. resumeList: [],
  352. // 弹出层标题
  353. title: "",
  354. // 是否显示弹出层
  355. open: false,
  356. // 查询参数
  357. queryParams: {
  358. pageNum: 1,
  359. pageSize: 10,
  360. resumeName: null,
  361. userName: null,
  362. gender: null,
  363. birthday: null,
  364. age: null,
  365. degree: null,
  366. experience: null,
  367. mobile: null,
  368. cardNo: null,
  369. email: null,
  370. isMarryed: null,
  371. residence: null,
  372. origin: null,
  373. nationality: null,
  374. graduateCollege: null,
  375. major: null,
  376. lanuage: null,
  377. graduateDate: null,
  378. positionRating: null,
  379. keyWords: null,
  380. jobObjective: null,
  381. salary: null,
  382. selfIntroduce: null,
  383. userId: null,
  384. headUrl: null,
  385. isPrivate: null,
  386. isDeleted: null,
  387. createDate: null,
  388. createUserName: null,
  389. updateUserId: null,
  390. updateDate: null,
  391. resumeDownloadUrl: null,
  392. status: null,
  393. currentCompany: null,
  394. industry: null,
  395. workingPlace: null,
  396. certificate: null,
  397. languageAbility: null,
  398. industryExperience: null,
  399. workExperience: null,
  400. post: null,
  401. lastCompany: null,
  402. lastIndustry: null,
  403. lastPosition: null,
  404. position: null,
  405. selfEvaluation: null,
  406. exceptedSalary: null,
  407. isEnabled: null,
  408. startTime: null,
  409. endTime: null,
  410. },
  411. // 表单参数
  412. form: {},
  413. // 表单校验
  414. rules: {},
  415. };
  416. },
  417. created() {
  418. this.getList();
  419. },
  420. methods: {
  421. /** 查询简历管理列表 */
  422. getList() {
  423. this.loading = true;
  424. listResume(this.queryParams).then((response) => {
  425. this.resumeList = response.rows;
  426. this.total = response.total;
  427. this.loading = false;
  428. });
  429. },
  430. // 取消按钮
  431. cancel() {
  432. this.open = false;
  433. this.reset();
  434. },
  435. // 表单重置
  436. reset() {
  437. this.form = {
  438. resumeId: null,
  439. resumeName: null,
  440. userName: null,
  441. gender: null,
  442. birthday: null,
  443. age: null,
  444. degree: null,
  445. experience: null,
  446. mobile: null,
  447. cardNo: null,
  448. email: null,
  449. isMarryed: null,
  450. residence: null,
  451. origin: null,
  452. nationality: null,
  453. graduateCollege: null,
  454. major: null,
  455. lanuage: null,
  456. graduateDate: null,
  457. positionRating: null,
  458. keyWords: null,
  459. jobObjective: null,
  460. salary: null,
  461. selfIntroduce: null,
  462. userId: null,
  463. headUrl: null,
  464. isPrivate: null,
  465. isDeleted: null,
  466. createDate: null,
  467. createUserName: null,
  468. updateUserId: null,
  469. updateDate: null,
  470. resumeDownloadUrl: null,
  471. status: null,
  472. currentCompany: null,
  473. industry: null,
  474. workingPlace: null,
  475. certificate: null,
  476. languageAbility: null,
  477. industryExperience: null,
  478. workExperience: null,
  479. post: null,
  480. lastCompany: null,
  481. lastIndustry: null,
  482. lastPosition: null,
  483. position: null,
  484. selfEvaluation: null,
  485. exceptedSalary: null,
  486. isEnabled: null,
  487. startTime: null,
  488. endTime: null,
  489. };
  490. this.resetForm("form");
  491. },
  492. /** 搜索按钮操作 */
  493. handleQuery() {
  494. this.queryParams.pageNum = 1;
  495. this.getList();
  496. },
  497. /** 重置按钮操作 */
  498. resetQuery() {
  499. this.resetForm("queryForm");
  500. this.handleQuery();
  501. },
  502. // 多选框选中数据
  503. handleSelectionChange(selection) {
  504. this.ids = selection.map((item) => item.resumeId);
  505. this.single = selection.length !== 1;
  506. this.multiple = !selection.length;
  507. },
  508. /** 新增按钮操作 */
  509. handleAdd() {
  510. this.$router.push({ path: "/system/resume/add" });
  511. // this.reset();
  512. // this.open = true;
  513. // this.title = "添加简历管理";
  514. },
  515. /** 修改按钮操作 */
  516. handleUpdate(row) {
  517. this.reset();
  518. const resumeId = row.resumeId || this.ids;
  519. getResume(resumeId).then((response) => {
  520. this.form = response.data;
  521. this.open = true;
  522. this.title = "修改简历管理";
  523. });
  524. },
  525. /** 提交按钮 */
  526. submitForm() {
  527. this.$refs["form"].validate((valid) => {
  528. if (valid) {
  529. if (this.form.resumeId != null) {
  530. updateResume(this.form).then((response) => {
  531. this.$modal.msgSuccess("修改成功");
  532. this.open = false;
  533. this.getList();
  534. });
  535. } else {
  536. addResume(this.form).then((response) => {
  537. this.$modal.msgSuccess("新增成功");
  538. this.open = false;
  539. this.getList();
  540. });
  541. }
  542. }
  543. });
  544. },
  545. /** 删除按钮操作 */
  546. handleDelete(row) {
  547. const resumeIds = row.resumeId || this.ids;
  548. this.$modal
  549. .confirm('是否确认删除简历管理编号为"' + resumeIds + '"的数据项?')
  550. .then(function () {
  551. return delResume(resumeIds);
  552. })
  553. .then(() => {
  554. this.getList();
  555. this.$modal.msgSuccess("删除成功");
  556. })
  557. .catch(() => {});
  558. },
  559. /** 导出按钮操作 */
  560. handleExport() {
  561. this.download(
  562. "system/resume/export",
  563. {
  564. ...this.queryParams,
  565. },
  566. `resume_${new Date().getTime()}.xlsx`
  567. );
  568. },
  569. },
  570. };
  571. </script>