|
|
@@ -4,9 +4,9 @@
|
|
|
:placeholder="'请选择' + taskFieldConfig.taskFiledValue"
|
|
|
:title="taskFieldConfig.taskFiledValue"
|
|
|
:required="taskFieldConfig.isMustfill === '1'"
|
|
|
+ :value="cellValue"
|
|
|
+ :is-link="!isDisabled"
|
|
|
@click="pickerClick"
|
|
|
- is-link
|
|
|
- :value="label"
|
|
|
/>
|
|
|
|
|
|
<wd-picker
|
|
|
@@ -19,9 +19,17 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
+import { computed, ref } from 'vue'
|
|
|
+
|
|
|
import type { DictItem } from '@/services/modules/common/type'
|
|
|
import type { TaskFieldConfigItem, TaskFieldDictMap } from '@/services/modules/task/taskFrom/type'
|
|
|
|
|
|
+type FieldValue = string | number | undefined
|
|
|
+
|
|
|
+interface PickerConfirmEvent {
|
|
|
+ selectedItems: DictItem[]
|
|
|
+}
|
|
|
+
|
|
|
interface Props {
|
|
|
taskFieldConfig: TaskFieldConfigItem
|
|
|
taskFieldDict: TaskFieldDictMap
|
|
|
@@ -34,17 +42,20 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
selectDisabled: false,
|
|
|
})
|
|
|
|
|
|
-const label = defineModel<string>('label')
|
|
|
-
|
|
|
-const value = defineModel<string | number>('value')
|
|
|
+const label = defineModel<FieldValue>('label')
|
|
|
+const value = defineModel<FieldValue>('value')
|
|
|
|
|
|
const dict = ref<DictItem[]>([])
|
|
|
-
|
|
|
const pickerShow = ref(false)
|
|
|
-
|
|
|
const pickerValue = ref<(string | number)[]>([])
|
|
|
|
|
|
+const isDisabled = computed(() => props.disabled || props.selectDisabled)
|
|
|
+
|
|
|
+const cellValue = computed(() => label.value ?? '')
|
|
|
+
|
|
|
const pickerClick = () => {
|
|
|
+ if (isDisabled.value) return
|
|
|
+
|
|
|
const dictName = props.taskFieldConfig.dictGroupName
|
|
|
dict.value = dictName ? (props.taskFieldDict[dictName] ?? []) : []
|
|
|
pickerShow.value = true
|
|
|
@@ -52,10 +63,10 @@ const pickerClick = () => {
|
|
|
|
|
|
const handleSelect = (option: PickerConfirmEvent) => {
|
|
|
const selected = option.selectedItems[0]
|
|
|
+ if (!selected) return
|
|
|
+
|
|
|
pickerValue.value = [selected.value]
|
|
|
label.value = selected.label
|
|
|
value.value = selected.value
|
|
|
}
|
|
|
</script>
|
|
|
-
|
|
|
-<style lang="scss" scoped></style>
|