3 小时以前 5367b3b4d92588c4e76728e6bd4ad6aae0cbb967
src/views/mes/md/vendor/components/select.vue
@@ -1,13 +1,11 @@
<script lang="ts" setup>
import type { MesMdVendorApi } from '#/api/mes/md/vendor';
import { computed, ref, useAttrs, watch } from 'vue';
import { computed, ref, useAttrs } from 'vue';
import { IconifyIcon } from '..\..\..\..\..\packages\icons\src';
import { IconifyIcon } from '@vben/icons';
import { Input, Tooltip } from 'ant-design-vue';
import { getVendor } from '#/api/mes/md/vendor';
import MdVendorSelectDialog from './select-dialog.vue';
@@ -19,24 +17,26 @@
    disabled?: boolean;
    modelValue?: number;
    placeholder?: string;
    vendorName?: string;
  }>(),
  {
    allowClear: true,
    disabled: false,
    modelValue: undefined,
    placeholder: '请选择供应商',
    vendorName: undefined,
  },
);
const emit = defineEmits<{
  change: [item: MesMdVendorApi.Vendor | undefined];
  'update:modelValue': [value: number | undefined];
}>();
const attrs = useAttrs(); // 透传属性
const dialogRef = ref<InstanceType<typeof MdVendorSelectDialog>>(); // 供应商选择弹窗
const hovering = ref(false); // 是否悬停
const selectedItem = ref<MesMdVendorApi.Vendor>(); // 当前选中供应商
const attrs = useAttrs();
const dialogRef = ref<InstanceType<typeof MdVendorSelectDialog>>();
const hovering = ref(false);
const selectedItem = ref<MesMdVendorApi.Vendor>();
const displayLabel = computed(() => selectedItem.value?.name ?? ''); // 选择器展示名称
const displayLabel = computed(() => props.vendorName || selectedItem.value?.name || '');
const showClear = computed(
  () =>
    props.allowClear &&
@@ -45,34 +45,12 @@
    props.modelValue !== null,
);
/** 根据供应商编号回显选择器 */
async function resolveItemById(id: number | undefined) {
  if (!id) {
    selectedItem.value = undefined;
    return;
  }
  if (selectedItem.value?.id === id) {
    return;
  }
  selectedItem.value = await getVendor(id);
}
watch(
  () => props.modelValue,
  (value) => {
    resolveItemById(value);
  },
  { immediate: true },
);
/** 清空已选供应商 */
function clearSelected() {
  selectedItem.value = undefined;
  emit('update:modelValue', undefined);
  emit('change', undefined);
}
/** 打开供应商选择弹窗 */
function handleClick(event: MouseEvent) {
  if (props.disabled) {
    return;
@@ -89,7 +67,6 @@
  dialogRef.value?.open(selectedIds, { multiple: false });
}
/** 回填选中的供应商 */
function handleSelected(rows: MesMdVendorApi.Vendor[]) {
  const item = rows[0];
  if (!item) {