skillSelector.vue 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <template>
  2. <el-drawer title="技能要求" :visible.sync="isSkillShow" :direction="direction" size="80vh" @closed="close()">
  3. <div class="app__h_100p app__pd_10 app__f_c app__ps_r">
  4. <div class="app__h_70 app__f_r_n app__bd_b_eee" style="overflow:scroll">
  5. <div v-for="(skill,index) in selectSkills"
  6. class="app__h_30 app__bd_a_308EFF app__mr_15 app__fs_13 app__lh_30 app__ta_c app__fc_308EFF app_br_5 app__txt_ellipsis"
  7. style="min-width: 70px;max-width: 120px;padding:0 5px;">{{skill.name}}
  8. </div>
  9. </div>
  10. <el-input class="app__w_100p app_br_5 app__h_40 app__fs_13 app__mt_10" placeholder="请输入技能名" placeholderStyle="font-size:19px"
  11. v-model="skillKeyword" @change="getSkillMap()"/>
  12. <div class="app__mt_10" style="overflow:scroll;height:calc(100% - 250px)">
  13. <div class="app__f_r app__al_c" v-for="skill in skillDatas">
  14. <p class="app__h_45 app__lh_45 app__fs_15 app__bd_b_eee app__f_g_1" :class="{'app__fc_308EFF':skill.isChecked}">{{skill.name}}</p>
  15. <el-checkbox size="medium" v-model="skill.isChecked" @change="skillCheckChange(skill)"/>
  16. </div>
  17. </div>
  18. </div>
  19. </el-drawer>
  20. </template>
  21. <script>
  22. export default {
  23. name: "skillSelector",
  24. props: {
  25. isSkillShow: Boolean,
  26. selectSkills: Array
  27. },
  28. data() {
  29. return {
  30. skillDatas: [],
  31. direction: 'btt',
  32. skillKeyword: "",
  33. isShow: this.isSkillShow,
  34. }
  35. },
  36. computed: {
  37. initIsShow: function () {
  38. return this.isSkillShow;
  39. }
  40. },
  41. mounted() {
  42. },
  43. methods: {
  44. /**
  45. * 技能要求
  46. * @return {Promise<void>}
  47. */
  48. getSkillMap() {
  49. let res = this.$axios.$post(`/api/simple_data/select_skill`, {keyword: this.skillKeyword});
  50. res.then(result => {
  51. console.log("skills", res);
  52. if (Number(result.status) === 1) {
  53. this.skillDatas = result.data;
  54. if (this.selectSkills.length > 0) {
  55. this.selectSkills.forEach(skill => {
  56. let s = this.skillDatas.find(p => p.id === skill, id);
  57. if (s) s.isChecked = true;
  58. })
  59. }
  60. }
  61. }).catch(err => {
  62. });
  63. },
  64. /**
  65. * 技能勾选事件
  66. * @param skill
  67. */
  68. skillCheckChange(skill) {
  69. console.log(skill);
  70. if (skill.isChecked) {
  71. this.selectSkills.push(skill);
  72. } else {
  73. this.selectSkills = this.selectSkills.filter(p => p.id !== skill.id);
  74. }
  75. this.$emit('update:selctSkills', this.selectSkills);
  76. },
  77. close() {
  78. this.$emit('close');
  79. }
  80. }
  81. }
  82. </script>
  83. <style scoped>
  84. @import "../../assets/css/public.css";
  85. </style>