feat:引入包:sv-focus-no-keyboard

master
ck-chenkang 5 days ago
parent dae5297e22
commit c37853f571

@ -9,12 +9,11 @@
</view>
<view class="keyword-box">
<input
id="equipment-inspection-record-keyword-input"
v-model="searchKeyword"
class="keyword-input"
:placeholder="t('equipmentInspectionRecord.searchPlaceholder')"
:focus="keywordFocus"
confirm-type="search"
@blur="keywordFocus = false"
@input="handleKeywordInput"
@confirm="handleSearch"
/>
@ -91,12 +90,14 @@
:auto-close="false"
@confirm="onLineCascaderConfirm"
/>
<sv-focus-no-keyboard ref="focusNoKeyboardRef"></sv-focus-no-keyboard>
</view>
</template>
<script setup>
import { computed, nextTick, ref } from 'vue'
import { onLoad, onReachBottom, onShow, onUnload } from '@dcloudio/uni-app'
import { onLoad, onReachBottom, onReady, onShow, onUnload } from '@dcloudio/uni-app'
import { useI18n } from 'vue-i18n'
import NavBar from '@/components/common/NavBar.vue'
import { getEquipmentInspectionRecordPage } from '@/api/mes/equipmentInspectionRecord'
@ -126,7 +127,8 @@ const pageNo = ref(1)
const pageSize = ref(10)
const scrollTop = ref(0)
const showGoTop = ref(false)
const keywordFocus = ref(false)
const focusNoKeyboardRef = ref(null)
const keywordInputSelector = '#equipment-inspection-record-keyword-input input, input#equipment-inspection-record-keyword-input'
let searchTimer = null
@ -170,6 +172,7 @@ const currentJobStatusLabel = computed(() => {
})
onLoad(async () => {
activateKeywordFocus()
await initAllDict()
await loadLineTree()
await fetchList(true)
@ -181,6 +184,12 @@ onShow(() => {
if (!lineTree.value.length) loadLineTree()
})
onReady(() => {
focusKeywordNoKeyboard()
setTimeout(focusKeywordNoKeyboard, 300)
setTimeout(focusKeywordNoKeyboard, 800)
})
onUnload(() => {
clearSearchTimer()
})
@ -388,9 +397,14 @@ function goTop() {
}
function activateKeywordFocus() {
keywordFocus.value = false
focusKeywordNoKeyboard()
}
function focusKeywordNoKeyboard() {
nextTick(() => {
keywordFocus.value = true
setTimeout(() => {
focusNoKeyboardRef.value?.focus(keywordInputSelector)
}, 80)
})
}

@ -9,12 +9,11 @@
</view>
<view class="keyword-box">
<input
id="equipment-inspection-tasks-keyword-input"
v-model="searchKeyword"
class="keyword-input"
:placeholder="t('equipmentInspectionTasks.searchPlaceholder')"
:focus="keywordFocus"
confirm-type="search"
@blur="keywordFocus = false"
@input="handleKeywordInput"
@confirm="handleSearch"
/>
@ -77,12 +76,14 @@
:auto-close="false"
@confirm="onLineCascaderConfirm"
/>
<sv-focus-no-keyboard ref="focusNoKeyboardRef"></sv-focus-no-keyboard>
</view>
</template>
<script setup>
import { computed, nextTick, ref } from 'vue'
import { onLoad, onReachBottom, onShow, onUnload } from '@dcloudio/uni-app'
import { onLoad, onReachBottom, onReady, onShow, onUnload } from '@dcloudio/uni-app'
import { useI18n } from 'vue-i18n'
import NavBar from '@/components/common/NavBar.vue'
import { getTaskManagementPage, createTaskManagementTicket } from '@/api/mes/taskManagement'
@ -103,7 +104,8 @@ const scrollTop = ref(0)
const showGoTop = ref(false)
const ticketLoadingId = ref(null)
const deviceOptions = ref([])
const keywordFocus = ref(false)
const focusNoKeyboardRef = ref(null)
const keywordInputSelector = '#equipment-inspection-tasks-keyword-input input, input#equipment-inspection-tasks-keyword-input'
const selectedLineId = ref('')
const lineTree = ref([])
const lineCascaderShow = ref(false)
@ -152,6 +154,12 @@ onShow(() => {
activateKeywordFocus()
})
onReady(() => {
focusKeywordNoKeyboard()
setTimeout(focusKeywordNoKeyboard, 300)
setTimeout(focusKeywordNoKeyboard, 800)
})
onUnload(() => {
clearSearchTimer()
})
@ -359,9 +367,14 @@ function goTop() {
}
function activateKeywordFocus() {
keywordFocus.value = false
focusKeywordNoKeyboard()
}
function focusKeywordNoKeyboard() {
nextTick(() => {
keywordFocus.value = true
setTimeout(() => {
focusNoKeyboardRef.value?.focus(keywordInputSelector)
}, 80)
})
}

@ -9,14 +9,13 @@
</view>
<view class="keyword-box">
<input
id="equipment-maintenance-keyword-input"
v-model="searchKeyword"
class="keyword-input"
type="text"
:placeholder="t('equipmentMaintenance.searchPlaceholder')"
placeholder-class="placeholder"
:focus="keywordFocus"
confirm-type="search"
@blur="keywordFocus = false"
@confirm="handleSearch"
/>
</view>
@ -96,12 +95,14 @@
:auto-close="false"
@confirm="onLineCascaderConfirm"
/>
<sv-focus-no-keyboard ref="focusNoKeyboardRef"></sv-focus-no-keyboard>
</view>
</template>
<script setup>
import { computed, nextTick, ref } from 'vue'
import { onLoad, onReachBottom, onShow } from '@dcloudio/uni-app'
import { onLoad, onReachBottom, onReady, onShow } from '@dcloudio/uni-app'
import { useI18n } from 'vue-i18n'
import NavBar from '@/components/common/NavBar.vue'
import {
@ -128,7 +129,8 @@ const total = ref(0)
const initialized = ref(false)
const scrollTop = ref(0)
const showGoTop = ref(false)
const keywordFocus = ref(false)
const focusNoKeyboardRef = ref(null)
const keywordInputSelector = '#equipment-maintenance-keyword-input input, input#equipment-maintenance-keyword-input'
const statusOptions = computed(() => [
{ label: t('functionCommon.all'), value: '' },
@ -278,23 +280,36 @@ function onFetchResult(result) {
onLoad(async () => {
initialized.value = true
activateKeywordFocus()
await fetchDeviceLineTree()
await fetchList(true)
})
onShow(async () => {
if (!initialized.value) return
activateKeywordFocus()
await fetchList(true)
})
onReady(() => {
focusKeywordNoKeyboard()
setTimeout(focusKeywordNoKeyboard, 300)
setTimeout(focusKeywordNoKeyboard, 800)
})
onReachBottom(() => {
loadMore()
})
function activateKeywordFocus() {
keywordFocus.value = false
focusKeywordNoKeyboard()
}
function focusKeywordNoKeyboard() {
nextTick(() => {
keywordFocus.value = true
setTimeout(() => {
focusNoKeyboardRef.value?.focus(keywordInputSelector)
}, 80)
})
}

Loading…
Cancel
Save