订单信息 材质远程搜索优化

pull/4/head
qiuhongwu 8 months ago
parent 840f562afa
commit cea7aab719

@ -1,70 +1,106 @@
<template> <template>
<!-- 材质选择 --> <!-- 材质选择 -->
<el-select <el-select v-model="valueName" placeholder="请输入材质" :remote-method="remoteMethod" remote-show-suffix remote clearable reserve-keyword filterable :loading="Loading" @change="onSelectChange" @visible-change="onVisibleChange">
v-model="valueName" <el-option v-for="item in compositionSelectList" :key="item.id" :label="item.name" :value="item.id" />
placeholder="请输入材质"
:remote-method="remoteMethod"
remote-show-suffix
remote
clearable
reserve-keyword
filterable
:loading="Loading"
@change="onSelectChange"
>
<el-option
v-for="item in compositionSelectList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select> </el-select>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, onMounted, toRefs } from 'vue' import { ref, onMounted, toRefs } from 'vue'
import * as CompositionApi from '@/api/heli/composition' import * as CompositionApi from '@/api/heli/composition'
//
const props = defineProps({
modelValue: {
type: [Number, String],
required: true // true
}
})
const queryParams = {
pageNo: 1,
pageSize: 10,
id: undefined,
name: undefined,
code: undefined,
description: undefined,
status: undefined,
original: undefined,
density: undefined,
}
const valueName: any = ref() // const valueName: any = ref() //
const valueNameObject: any = ref() // const valueNameObject: any = ref() //
const emit = defineEmits(['update:newValue']) const emit = defineEmits(['update:newValue'])
const compositionList = ref<CompositionApi.CompositionVO[]>([]) // const compositionList = ref<CompositionApi.CompositionVO[]>([]) //
const compositionSelectList = ref<CompositionApi.CompositionVO[]>([]) const compositionSelectList = ref<CompositionApi.CompositionVO[]>([])
const Loading = ref(false) const loading = ref(false)
const SelectLoading = ref(false)
const propsmodelValue = toRefs(props).modelValue // props modelValue
const initialValue: any = ref(null) // ID
const gitlist = async () => {
const data = await CompositionApi.getCompositionPage(queryParams)
compositionList.value = [...compositionList.value, ...data.list]
//
if (propsmodelValue.value) {
valueName.value = propsmodelValue.value
const initialUser = await CompositionApi.getComposition(valueName.value)
// compositionList
let foundInitialUserInList = false
for (const composition of compositionList.value) {
if (composition.id === initialUser.id) {
foundInitialUserInList = true
break
}
}
//
if (!foundInitialUserInList && !compositionSelectList.value.length) {
compositionList.value.unshift(initialUser)
}
// loading.value = false
}
compositionSelectList.value = compositionList.value
loading.value = false
}
const remoteMethod = async (query: any) => {
loading.value = true
compositionSelectList.value = []
try {
if (query) {
queryParams.name = query
const data = await CompositionApi.getCompositionPage(queryParams)
compositionList.value = data.list
compositionSelectList.value = data.list
} else {
gitlist()
}
} catch (error) {
console.error(error)
} finally {
loading.value = false
}
}
// //
onMounted(async () => { onMounted(async () => {
const queryParams = {
pageNo: 1,
pageSize: 10,
code: undefined,
brief: undefined,
status: undefined
}
try { try {
const data = await CompositionApi.getCompositionPage(queryParams) await gitlist()
compositionList.value = data.list
//
remoteMethod('')
} catch (error) { } catch (error) {
console.error(error) console.error(error)
} }
}) })
const remoteMethod = (query: any) => { const onVisibleChange = (isVisible: boolean) => {
if (query) { if (!isVisible) {
Loading.value = true //
setTimeout(() => { queryParams.name = undefined
Loading.value = false compositionList.value = []
compositionSelectList.value = compositionList.value compositionSelectList.value = []
.filter((item) => item.name.toLowerCase().includes(query.toLowerCase()))
.slice(0, 10) //10
}, 200)
} else {
compositionSelectList.value = compositionList.value.slice(0, 10)
} }
} }
const onSelectChange = (newValue: any) => { const onSelectChange = (newValue: any) => {
valueNameObject.value = compositionList.value.find( composition => composition.id === newValue); // valueNameObject.value = compositionList.value.find((composition) => composition.id === newValue) //
emit('update:newValue', valueNameObject.value) emit('update:newValue', valueNameObject.value)
} }
</script> </script>

@ -321,7 +321,7 @@
<template #header> <span class="hl-table_header">*</span>材质 </template> <template #header> <span class="hl-table_header">*</span>材质 </template>
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.compositionId`" :rules="subFormRules.compositionId" class="mb-0px!"> <el-form-item :prop="`${$index}.compositionId`" :rules="subFormRules.compositionId" class="mb-0px!">
<CompositionSelect v-model="row.compositionId" :disabled="detailDisabled" :class="{ 'alter-class': fieldHasAlterInRow('compositionId', row) }"/> <CompositionSelect v-model="row.compositionId" @update:newValue="handleSelected($index, $event)" :disabled="detailDisabled" :class="{ 'alter-class': fieldHasAlterInRow('compositionId', row) }" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
@ -943,6 +943,24 @@ onMounted(() => {
} }
queryData(query.active, query.id) queryData(query.active, query.id)
}) })
//
const handleSelected = (currentIndex: number,newValue: any) => {
console.log('当前行索引:', currentIndex);
// console.log('', newValue);
formData.value.projectOrderSubs[currentIndex].compositionId = newValue?.id
console.log(formData.value.projectOrderSubs[currentIndex].compositionId);
//
// formData.value.projectOrderSubs.forEach((row, index) => {
// console.log(row);
// row.compositionId = newValue?.id; // compositionId
// });
}
</script> </script>
<style> <style>
a { a {

Loading…
Cancel
Save