From f87ee0b51dc7e1c4455af4232693fe4516016204 Mon Sep 17 00:00:00 2001 From: zhangjf Date: Mon, 23 Feb 2026 14:07:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=A7=BB=E5=8A=A8=E7=AB=AF=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=A1=B9=E7=9B=AE=E6=B7=BB=E5=8A=A0=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E7=BC=96=E7=A0=81=E5=92=8C=E9=A1=B9=E7=9B=AE=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fund-mobile/src/views/project/Add.vue | 141 ++++++++++++++++++-------- 1 file changed, 98 insertions(+), 43 deletions(-) diff --git a/fund-mobile/src/views/project/Add.vue b/fund-mobile/src/views/project/Add.vue index 09b43bf..aa186da 100644 --- a/fund-mobile/src/views/project/Add.vue +++ b/fund-mobile/src/views/project/Add.vue @@ -4,6 +4,15 @@ + + - - + v-model="projectTypeText" + is-link + readonly + name="projectType" + label="项目类型" + placeholder="请选择类型" + :rules="[{ required: true, message: '请选择项目类型' }]" + required + @click="showTypePicker = true" + /> + + @@ -85,6 +103,15 @@ + + + + + - - - + + @@ -123,18 +150,21 @@ import { createProject, getCustomerList } from '@/api' const router = useRouter() const submitting = ref(false) const showStartPicker = ref(false) -const showStatusPicker = ref(false) +const showEndPicker = ref(false) +const showTypePicker = ref(false) const showCustomerPicker = ref(false) const form = ref({ + projectCode: '', projectName: '', customerId: null as number | null, customerName: '', - contractAmount: '', + projectType: '', budgetAmount: '', startDate: '', - status: 'preparing', - description: '' + endDate: '', + projectManager: '', + remark: '' }) const selectedStartDate = ref([ @@ -143,29 +173,40 @@ const selectedStartDate = ref([ new Date().getDate().toString().padStart(2, '0') ]) -const statusOptions = [ - { text: '筹备中', value: 'preparing' }, - { text: '进行中', value: 'ongoing' }, - { text: '已完成', value: 'completed' }, - { text: '已归档', value: 'archived' }, - { text: '已取消', value: 'cancelled' } +const selectedEndDate = ref([ + new Date().getFullYear().toString(), + (new Date().getMonth() + 1).toString().padStart(2, '0'), + new Date().getDate().toString().padStart(2, '0') +]) + +const projectTypeOptions = [ + { text: '开发项目', value: '开发项目' }, + { text: '运维项目', value: '运维项目' }, + { text: '咨询项目', value: '咨询项目' }, + { text: '集成项目', value: '集成项目' }, + { text: '其他项目', value: '其他项目' } ] -const statusText = computed(() => { - const item = statusOptions.find(s => s.value === form.value.status) +const projectTypeText = computed(() => { + const item = projectTypeOptions.find(t => t.value === form.value.projectType) return item?.text || '' }) const customerOptions = ref<{ text: string; value: number }[]>([]) +const onTypeConfirm = ({ selectedOptions }: any) => { + form.value.projectType = selectedOptions[0].value + showTypePicker.value = false +} + const onStartDateConfirm = ({ selectedValues }: any) => { form.value.startDate = selectedValues.join('-') showStartPicker.value = false } -const onStatusConfirm = ({ selectedOptions }: any) => { - form.value.status = selectedOptions[0].value - showStatusPicker.value = false +const onEndDateConfirm = ({ selectedValues }: any) => { + form.value.endDate = selectedValues.join('-') + showEndPicker.value = false } const onCustomerConfirm = ({ selectedOptions }: any) => { @@ -187,21 +228,35 @@ const loadOptions = async () => { } const onSubmit = async () => { + if (!form.value.projectCode) { + showFailToast('请输入项目编码') + return + } if (!form.value.projectName) { showFailToast('请输入项目名称') return } + if (!form.value.customerId) { + showFailToast('请选择客户') + return + } + if (!form.value.projectType) { + showFailToast('请选择项目类型') + return + } submitting.value = true try { await createProject({ + projectCode: form.value.projectCode, projectName: form.value.projectName, customerId: form.value.customerId, - contractAmount: form.value.contractAmount ? parseFloat(form.value.contractAmount) : null, + projectType: form.value.projectType, budgetAmount: form.value.budgetAmount ? parseFloat(form.value.budgetAmount) : null, startDate: form.value.startDate || null, - status: form.value.status, - description: form.value.description + endDate: form.value.endDate || null, + projectManager: form.value.projectManager || null, + remark: form.value.remark || null }) showSuccessToast('提交成功') router.back()