@@ -89,7 +89,7 @@ export default {
8989import { getCurrentInstance , onBeforeMount , ref , watch , computed , onMounted , nextTick } from ' vue'
9090import { deepClone , defaultDisplayFormat , getType , isArray , isDef , isFunction } from ' ../common/util'
9191import { useCell } from ' ../composables/useCell'
92- import { type ColumnItem , formatArray } from ' ../wd-picker-view/types'
92+ import { type ColumnItem , formatArray , type PickerViewInstance } from ' ../wd-picker-view/types'
9393import { FORM_KEY , type FormItemRule } from ' ../wd-form/types'
9494import { useParent } from ' ../composables/useParent'
9595import { useTranslate } from ' ../composables/useTranslate'
@@ -99,7 +99,7 @@ const { translate } = useTranslate('picker')
9999const props = defineProps (pickerProps )
100100const emit = defineEmits ([' confirm' , ' open' , ' cancel' , ' update:modelValue' ])
101101
102- const pickerViewWd = ref <any >(null )
102+ const pickerViewWd = ref <PickerViewInstance | null >(null )
103103const cell = useCell ()
104104
105105const innerLoading = ref <boolean >(false ) // 内部控制是否loading
@@ -124,12 +124,8 @@ watch(
124124 if (fn && ! isFunction (fn )) {
125125 console .error (' The type of displayFormat must be Function' )
126126 }
127- if (pickerViewWd .value && pickerViewWd .value .selectedIndex && pickerViewWd .value .selectedIndex .length !== 0 ) {
128- if (isDef (props .modelValue ) && props .modelValue !== ' ' ) {
129- setShowValue (pickerViewWd .value .getSelects ())
130- } else {
131- showValue .value = ' '
132- }
127+ if (pickerViewWd .value && pickerViewWd .value .getSelectedIndex ().length !== 0 ) {
128+ handleShowValueUpdate (props .modelValue )
133129 }
134130 },
135131 {
@@ -143,17 +139,7 @@ watch(
143139 (newValue ) => {
144140 pickerValue .value = newValue
145141 // 获取初始选中项,并展示初始选中文案
146- if (isDef (newValue ) && newValue !== ' ' ) {
147- if (pickerViewWd .value && pickerViewWd .value .getSelects ) {
148- nextTick (() => {
149- setShowValue (pickerViewWd .value ! .getSelects ())
150- })
151- } else {
152- setShowValue (getSelects (newValue )! )
153- }
154- } else {
155- showValue .value = ' '
156- }
142+ handleShowValueUpdate (newValue )
157143 },
158144 {
159145 deep: true ,
@@ -167,17 +153,7 @@ watch(
167153 displayColumns .value = newValue
168154 resetColumns .value = newValue
169155 // 获取初始选中项,并展示初始选中文案
170- if (isDef (props .modelValue ) && props .modelValue !== ' ' ) {
171- if (pickerViewWd .value && pickerViewWd .value .getSelects ) {
172- nextTick (() => {
173- setShowValue (pickerViewWd .value ! .getSelects ())
174- })
175- } else {
176- setShowValue (getSelects (props .modelValue )! )
177- }
178- } else {
179- showValue .value = ' '
180- }
156+ handleShowValueUpdate (props .modelValue )
181157 },
182158 {
183159 deep: true ,
@@ -226,17 +202,33 @@ const isRequired = computed(() => {
226202const { proxy } = getCurrentInstance () as any
227203
228204onMounted (() => {
229- isDef (props .modelValue ) && props .modelValue !== ' ' && setShowValue (getSelects (props .modelValue )! )
230- if (isDef (props .modelValue ) && props .modelValue !== ' ' && pickerViewWd .value && pickerViewWd .value .getSelects ) {
231- setShowValue (pickerViewWd .value ! .getSelects ())
232- }
205+ handleShowValueUpdate (props .modelValue )
233206})
234207
235208onBeforeMount (() => {
236209 displayColumns .value = deepClone (props .columns )
237210 resetColumns .value = deepClone (props .columns )
238211})
239212
213+ /**
214+ * 值变更时更新显示内容
215+ * @param value
216+ */
217+ function handleShowValueUpdate(value : string | number | Array <string | number >) {
218+ // 获取初始选中项,并展示初始选中文案
219+ if ((isArray (value ) && value .length > 0 ) || (isDef (value ) && ! isArray (value ) && value !== ' ' )) {
220+ if (pickerViewWd .value ) {
221+ nextTick (() => {
222+ setShowValue (pickerViewWd .value ! .getSelects ())
223+ })
224+ } else {
225+ setShowValue (getSelects (value )! )
226+ }
227+ } else {
228+ showValue .value = ' '
229+ }
230+ }
231+
240232/**
241233 * @description 根据传入的value,picker组件获取当前cell展示值。
242234 * @param {String|Number|Array<String|Number|Array<any>>} value
@@ -344,6 +336,7 @@ function handleConfirm() {
344336 popupShow .value = false
345337 resetColumns .value = deepClone (columns )
346338 emit (' update:modelValue' , values )
339+
347340 setShowValue (selects )
348341 emit (' confirm' , {
349342 value: values ,
0 commit comments