extend.vue 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <!-- -->
  2. <template>
  3. <view class="f-straight wrapper">
  4. <uni-forms ref="form" :modelValue="formData" validateTrigger="bind" label-width="90px" label-align="right">
  5. <uni-forms-item label="招聘部门" name="dept">
  6. <uni-easyinput v-model="formData.dept" placeholder="请填写招聘部门"></uni-easyinput>
  7. </uni-forms-item>
  8. <uni-forms-item label="专业要求" name="majorName">
  9. <uni-combox placeholder="请选择专业要求" v-model="majorName" :candidates="majorData" @input="handleSearchMajor"></uni-combox>
  10. </uni-forms-item>
  11. <uni-forms-item label="工作频率" name="dateType">
  12. <uni-data-picker popup-title="请选择工作频率" v-model="formData.dateType" :localdata="dateTypeArr" :clear-icon="false" :map="{ text: 'label', value: 'value'}"></uni-data-picker>
  13. </uni-forms-item>
  14. <uni-forms-item label="出勤天数" name="frequendayay">
  15. <uni-number-box v-model="formData.day" :width="100"></uni-number-box>
  16. </uni-forms-item>
  17. </uni-forms>
  18. </view>
  19. </template>
  20. <script setup>
  21. import { ref } from 'vue'
  22. import { schoolMajorByName, schoolMajorById } from '@/api/resume'
  23. const props = defineProps({
  24. data: {
  25. type: Object,
  26. default: () => {}
  27. }
  28. })
  29. const formData = ref({
  30. dept: props.data?.dept || '',
  31. dateType: props.data?.frequency?.dateType || '',
  32. day: props.data?.frequency?.day-0 || 0,
  33. })
  34. const dateTypeArr = [
  35. { label: '每周', value: 'week' },
  36. { label: '每月', value: 'month' },
  37. { label: '每年', value: 'year' }
  38. ]
  39. const majorData = ref([])
  40. const majorDataClone = ref([])
  41. const majorName = ref(props.data?.major || '')
  42. const handleSearchMajor = (e) => {
  43. if (!e) return majorData.value = []
  44. schoolMajorByName({ name: e }).then(res => {
  45. const list = res?.data && res.data?.length ? res.data : []
  46. setMajorData(list)
  47. if (!list?.length) {
  48. // majorName.value = ''
  49. uni.showToast({ title: '未找到相关专业,请重新输入', icon: 'none', duration: 2000 })
  50. }
  51. })
  52. }
  53. function setMajorData (list) {
  54. majorData.value = list.map(e => e.nameCn)
  55. majorDataClone.value = list
  56. }
  57. // if (majorName.value) handleSearchMajor(majorName.value)
  58. async function getMajorById (id) {
  59. if (!id) return
  60. const { data } = await schoolMajorById({ id })
  61. if (!data) return
  62. majorName.value = data.nameCn
  63. setMajorData([data])
  64. }
  65. if (props.data?.majorId) getMajorById(props.data.majorId)
  66. const form = ref()
  67. const getQuery = () => {
  68. const obj = {
  69. dept: formData.value.dept,
  70. frequency: {
  71. dateType: formData.value.dateType,
  72. day: formData.value.day
  73. },
  74. major: majorDataClone.value?.length ? majorName.value : '',
  75. majorId: majorDataClone.value?.length ? majorDataClone.value.find(e => e.nameCn === majorName.value)?.id : ''
  76. }
  77. console.log('扩展信息:', obj)
  78. return obj
  79. }
  80. defineExpose({
  81. getQuery
  82. })
  83. </script>
  84. <style lang="scss" scoped>
  85. </style>