| | |
| | | <script lang="ts" setup> |
| | | import type { CrmReceivableApi } from '#/api/crm/receivable'; |
| | | |
| | | import { computed, ref } from 'vue'; |
| | | import { computed, ref, watch } from 'vue'; |
| | | |
| | | import { useVbenForm, useVbenModal } from '@vben/common-ui'; |
| | | |
| | | import { message } from 'ant-design-vue'; |
| | | import { Alert, message } from 'ant-design-vue'; |
| | | |
| | | import { getContractSimpleList } from '#/api/crm/contract'; |
| | | import { |
| | |
| | | |
| | | const emit = defineEmits(['success']); |
| | | const formData = ref<Partial<CrmReceivableApi.Receivable>>(); |
| | | const showInvoiceHint = ref(false); |
| | | const getTitle = computed(() => { |
| | | return formData.value?.id |
| | | ? $t('ui.actionTitle.edit', ['回款']) |
| | |
| | | schema: useFormSchema(), |
| | | showDefaultActions: false, |
| | | }); |
| | | |
| | | /** 监听合同选择,提示先开票后回款 */ |
| | | watch( |
| | | () => formApi.form?.values?.contractId, |
| | | (val) => { |
| | | showInvoiceHint.value = !!val; |
| | | }, |
| | | ); |
| | | |
| | | /** 构建新增回款的预填表单 */ |
| | | async function buildCreateFormData( |
| | |
| | | modalApi.lock(); |
| | | // 提交表单 |
| | | const data = (await formApi.getValues()) as CrmReceivableApi.Receivable; |
| | | // 编辑时需要把 id 补回提交数据(表单 schema 不含 id 字段) |
| | | if (formData.value?.id) { |
| | | data.id = formData.value.id; |
| | | } |
| | | try { |
| | | await (formData.value?.id |
| | | ? updateReceivable(data) |
| | |
| | | |
| | | <template> |
| | | <Modal :title="getTitle" class="w-2/5"> |
| | | <Alert |
| | | v-if="showInvoiceHint" |
| | | type="warning" |
| | | message="请先完成开票并上传发票附件,再进行回款操作" |
| | | show-icon |
| | | class="mb-4" |
| | | /> |
| | | <Form class="mx-4" /> |
| | | </Modal> |
| | | </template> |