| | |
| | | <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, |
| | |
| | | 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 |
| | | } |
| | | } |
| | |
| | | { 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> |