lifanagju_citu 7 hónapja
szülő
commit
a3226c9f87

+ 6 - 1
src/components/FormUI/TextInput/index.vue

@@ -30,6 +30,7 @@
       @keyup.enter="handleKeyup"
       @click:clear="handleClear"
       @blur="handleBlur"
+      @focus="handleFocus"
     >
       <slot name="default"></slot>
     </v-text-field>
@@ -42,7 +43,7 @@ import { ref, watch } from 'vue';
 defineOptions({ name:'FormUI-v-text-field'})
 
 const props = defineProps({item: Object, modelValue: [String, Number]})
-const emit = defineEmits(['update:modelValue', 'change', 'appendClick', 'appendInnerClick', 'enter', 'blur'])
+const emit = defineEmits(['update:modelValue', 'change', 'appendClick', 'appendInnerClick', 'enter', 'blur', 'focus'])
 const item = props.item
 const value = ref(props.modelValue)
 const searchDebouncedTime = item?.searchDebouncedTime === 0 ? ref(0) : ref(500)
@@ -101,6 +102,10 @@ const handleBlur = () => {
   emit('blur', props.item, value.value)
 }
 
+const handleFocus = () => {
+  emit('focus', props.item, value.value)
+}
+
 const handleWheel = (event, item) => {
   if (item.type !== 'number') return
   event.preventDefault()

+ 1 - 0
src/components/FormUI/textArea/index.vue

@@ -11,6 +11,7 @@
       :validate-on="item.validateOn"
       :rows="item.rows || 3"
       :disabled="item.disabled"
+      :autofocus="item.autofocus"
       :density="item.dense || 'compact'"
       :placeholder="item.placeholder || item.label"
       :no-resize="!item.resize"

+ 3 - 1
src/views/recruit/enterprise/talentMap/components/filter.vue

@@ -32,10 +32,11 @@ const formItems = ref({
       counter: 500,
       rows: 5,
       resize: true,
-      label: '匹配内容',
+      label: '请输入匹配内容',
       placeholder: '请输入要匹配内容',
       clearable: true,
       outlined: true,
+      autofocus: false,
     },
     {
       type: 'autocomplete',
@@ -81,6 +82,7 @@ const resetValue = () => {
 const setValue = (query) => {
   formItems.value.options.forEach(e => {
     if (query[e.key] !== undefined) e.value = query[e.key]
+    // if (e.key === 'content') e.autofocus = true
   })
 }
 

+ 15 - 3
src/views/recruit/enterprise/talentMap/index.vue

@@ -1,8 +1,8 @@
 <template>
   <v-card class="card-box pa-5" style="height: 100%;">
-    <div class="d-flex justify-space-between">
-      <div></div>
-      <v-btn color="primary" class="half-button" variant="tonal" @click="openDrawer">职位匹配</v-btn>
+    <div class="d-flex justify-center">
+      <TextUI :item="textItem" @focus="openDrawer" @appendInnerClick="openDrawer"></TextUI>
+      <!-- <v-btn color="primary" class="half-button" variant="tonal" @click="openDrawer">职位匹配</v-btn> -->
     </div>
     <!-- 人员信息表单 -->
     <v-data-table
@@ -69,6 +69,8 @@ import { dealDictArrayData } from '@/utils/position'
 import { getUserAvatar } from '@/utils/avatar'
 import { timesTampChange } from '@/utils/date'
 import FilterPage from './components/filter.vue'
+import TextUI from '@/components/FormUI/TextInput'
+
 import { computed, reactive, ref } from 'vue'
 
 const screen = ref(false)
@@ -141,6 +143,16 @@ const badgeColor = computed(() => (item) => {
 const badgeIcon = computed(() => (item) => {
   return (item && item.sex) ? (item.sex === '1' ? 'mdi-gender-male' : 'mdi-gender-female') : 'mdi-gender-female'
 })
+
+const textItem = ref({
+  type: 'text',
+  width: 600,
+  value: '',
+  label: '职位匹配',
+  clearable: true,
+  appendInnerIcon: 'mdi-magnify'
+})
+
 </script>
 
 <style scoped lang="scss">