zhou zhou
11 小时以前 7c2bffa1a495cc4a3a263f654c08c231009c5c4e
rsf-design/src/views/orders/transfer/modules/transfer-dialog.vue
@@ -1,40 +1,6 @@
<template>
  <ElDialog
    :title="dialogTitle"
    :model-value="visible"
    width="760px"
    align-center
    destroy-on-close
    @update:model-value="handleCancel"
    @closed="handleClosed"
  >
    <div class="mb-3 rounded-lg border border-[var(--art-border-color)] bg-[var(--art-bg-color)] px-3 py-2 text-xs text-[var(--art-text-gray-600)]">
      调拨单号由系统生成,新增时只需维护调拨类型、源/目标库区和备注。
    </div>
    <ArtForm
      ref="formRef"
      v-model="form"
      :items="formItems"
      :rules="rules"
      :span="12"
      :gutter="20"
      label-width="110px"
      :show-reset="false"
      :show-submit="false"
    />
    <template #footer>
      <span class="dialog-footer">
        <ElButton @click="handleCancel">取消</ElButton>
        <ElButton type="primary" :loading="submitLoading" @click="handleSubmit">确定</ElButton>
      </span>
    </template>
  </ElDialog>
</template>
<script setup>
  import { computed, nextTick, reactive, ref, watch } from 'vue'
  import { useI18n } from 'vue-i18n'
  import ArtForm from '@/components/core/forms/art-form/index.vue'
  import {
    buildTransferDialogModel,
@@ -54,79 +20,82 @@
  const emit = defineEmits(['update:visible', 'submit'])
  const formRef = ref()
  const form = reactive(createTransferFormState())
  const { t } = useI18n()
  const isEdit = computed(() => props.dialogType === 'edit')
  const dialogTitle = computed(() => (isEdit.value ? '编辑调拨单' : '新增调拨单'))
  const dialogTitle = computed(() =>
    isEdit.value ? t('pages.orders.transfer.dialog.titleEdit') : t('pages.orders.transfer.dialog.titleAdd')
  )
  const rules = computed(() => ({
    type: [{ required: true, message: '请选择调拨类型', trigger: 'change' }],
    orgAreaId: [{ required: true, message: '请选择源库区', trigger: 'change' }],
    tarAreaId: [{ required: true, message: '请选择目标库区', trigger: 'change' }]
    type: [{ required: true, message: t('pages.orders.transfer.dialog.validation.type'), trigger: 'change' }],
    orgAreaId: [{ required: true, message: t('pages.orders.transfer.dialog.validation.orgAreaId'), trigger: 'change' }],
    tarAreaId: [{ required: true, message: t('pages.orders.transfer.dialog.validation.tarAreaId'), trigger: 'change' }]
  }))
  const formItems = computed(() => [
    {
      label: '调拨单号',
      label: t('pages.orders.transfer.dialog.code'),
      key: 'code',
      type: 'input',
      span: 24,
      props: {
        disabled: true,
        placeholder: '保存后自动生成'
        placeholder: t('pages.orders.transfer.dialog.placeholderCode')
      }
    },
    {
      label: '调拨类型',
      label: t('pages.orders.transfer.dialog.type'),
      key: 'type',
      type: 'select',
      props: {
        placeholder: '请选择调拨类型',
        placeholder: t('pages.orders.transfer.dialog.placeholderType'),
        clearable: true,
        filterable: true,
        options: props.typeOptions
      }
    },
    {
      label: '源库区',
      label: t('pages.orders.transfer.dialog.orgAreaId'),
      key: 'orgAreaId',
      type: 'select',
      props: {
        placeholder: '请选择源库区',
        placeholder: t('pages.orders.transfer.dialog.placeholderOrgAreaId'),
        clearable: true,
        filterable: true,
        options: props.areaOptions
      }
    },
    {
      label: '目标库区',
      label: t('pages.orders.transfer.dialog.tarAreaId'),
      key: 'tarAreaId',
      type: 'select',
      props: {
        placeholder: '请选择目标库区',
        placeholder: t('pages.orders.transfer.dialog.placeholderTarAreaId'),
        clearable: true,
        filterable: true,
        options: props.areaOptions
      }
    },
    {
      label: '状态',
      label: t('pages.orders.transfer.dialog.status'),
      key: 'status',
      type: 'select',
      props: {
        placeholder: '请选择状态',
        placeholder: t('pages.orders.transfer.dialog.placeholderStatus'),
        clearable: true,
        options: getTransferStatusOptions()
      }
    },
    {
      label: '备注',
      label: t('pages.orders.transfer.dialog.memo'),
      key: 'memo',
      type: 'input',
      span: 24,
      props: {
        type: 'textarea',
        rows: 3,
        placeholder: '请输入备注',
        placeholder: t('pages.orders.transfer.dialog.placeholderMemo'),
        clearable: true
      }
    }
@@ -182,3 +151,38 @@
    { deep: true }
  )
</script>
<template>
  <ElDialog
    :title="dialogTitle"
    :model-value="visible"
    width="760px"
    align-center
    destroy-on-close
    @update:model-value="handleCancel"
    @closed="handleClosed"
  >
    <div class="mb-3 rounded-lg border border-[var(--art-border-color)] bg-[var(--art-bg-color)] px-3 py-2 text-xs text-[var(--art-text-gray-600)]">
      {{ t('pages.orders.transfer.dialog.tip') }}
    </div>
    <ArtForm
      ref="formRef"
      v-model="form"
      :items="formItems"
      :rules="rules"
      :span="12"
      :gutter="20"
      label-width="110px"
      :show-reset="false"
      :show-submit="false"
    />
    <template #footer>
      <span class="dialog-footer">
        <ElButton @click="handleCancel">{{ t('common.cancel') }}</ElButton>
        <ElButton type="primary" :loading="submitLoading" @click="handleSubmit">{{ t('common.confirm') }}</ElButton>
      </span>
    </template>
  </ElDialog>
</template>