| | |
| | | </up-form-item> |
| | | |
| | | <up-form-item label="合同金额(元)" prop="contractAmount" :required="isAddOrEdit"> |
| | | <up-input |
| | | v-model="form.contractAmount" |
| | | :disabled="isDetail || isAddOperation" |
| | | type="number" |
| | | placeholder="请输入合同金额" |
| | | /> |
| | | </up-form-item> |
| | | <up-input |
| | | v-model="form.contractAmount" |
| | | :disabled="isDetail || isAddOperation" |
| | | placeholder="请输入合同金额" |
| | | /> |
| | | </up-form-item> |
| | | |
| | | <!-- 描述信息 --> |
| | | <view class="section-header section-header-inner"> |
| | | <text class="section-title">描述信息</text> |
| | | <text class="section-subtitle">补充商机说明,便于后续跟进</text> |
| | | </view> |
| | | <up-form-item label="改造内容" prop="description" :required="isAddOrAddOperation"> |
| | | <up-form-item label="拜访记录" prop="description" :required="isAddOrAddOperation"> |
| | | <up-textarea |
| | | v-model="form.description" |
| | | :disabled="isDetail" |
| | |
| | | /> |
| | | </up-form-item> |
| | | |
| | | <up-form-item label="改造内容" prop="renContent"> |
| | | <up-textarea |
| | | v-model="form.renContent" |
| | | :disabled="isDetail || isAddOperation" |
| | | :placeholder="renContentPlaceholder" |
| | | autoHeight |
| | | maxlength="500" |
| | | /> |
| | | </up-form-item> |
| | | |
| | | <up-form-item label="付款描述" prop="paymentDescription"> |
| | | <up-textarea |
| | | v-model="form.paymentDescription" |
| | | :disabled="isDetail" |
| | | placeholder="是否垫资?企业是否开票?企业是否分补贴或额外出钱?" |
| | | autoHeight |
| | | count |
| | | maxlength="500" |
| | | /> |
| | | </up-form-item> |
| | | <up-textarea |
| | | v-model="form.paymentDescription" |
| | | :disabled="isDetail || isAddOperation" |
| | | placeholder="是否垫资?企业是否开票?企业是否分补贴或额外出钱?" |
| | | autoHeight |
| | | count |
| | | maxlength="500" |
| | | /> |
| | | </up-form-item> |
| | | |
| | | <!-- 附件材料 --> |
| | | <view class="section-header section-header-inner"> |
| | |
| | | const formRef = ref(null) |
| | | const loading = ref(false) |
| | | const operationType = ref('add') |
| | | const renovationPlaceholder = '1.标准化:\n2.定制化:\n3.外采:' |
| | | const renovationPlaceholder = '请输入拜访记录' |
| | | const renContentPlaceholder = '1.标准化:\n2.定制化:\n3.外采:' |
| | | |
| | | // 附件上传 |
| | | const uploadFileList = ref([]) // up-upload 绑定列表 |
| | |
| | | businessSource: '', |
| | | contractAmount: '', |
| | | description: '', |
| | | renContent: '', |
| | | paymentDescription: '', |
| | | entryPerson: userStore.nickName, |
| | | entryDate: dayjs().format('YYYY-MM-DD'), |
| | |
| | | { required: true, message: '请输入合同金额', trigger: ['blur', 'change'] } |
| | | ], |
| | | description: [ |
| | | { required: true, message: '请输入改造内容', trigger: ['blur', 'change'] } |
| | | { required: true, message: '请输入拜访记录', trigger: ['blur', 'change'] } |
| | | ], |
| | | entryPerson: [ |
| | | { required: true, message: '请输入录入人', trigger: ['blur', 'change'] } |
| | |
| | | const statusOptions = [ |
| | | { value: '新建', label: '新建' }, |
| | | { value: '项目跟踪', label: '项目跟踪' }, |
| | | { value: '放弃', label: '放弃' }, |
| | | { value: '合同签约', label: '合同签约' }, |
| | | { value: '备案申报', label: '备案申报' }, |
| | | { value: '项目交付', label: '项目交付' }, |
| | | { value: '项目验收', label: '项目验收' } |
| | | { value: '项目验收', label: '项目验收' }, |
| | | { value: '项目回款', label: '项目回款' }, |
| | | { value: '回补贴', label: '回补贴' } |
| | | ] |
| | | |
| | | const provinceOptions = ref([]) |
| | |
| | | case 'edit': |
| | | return '编辑商机' |
| | | case 'addOperation': |
| | | return '添加描述' |
| | | return '添加拜访记录' |
| | | case 'detail': |
| | | default: |
| | | return '商机详情' |
| | |
| | | |
| | | // 提交表单 |
| | | const onSubmit = () => { |
| | | if (isDetail.value) return |
| | | if (!formRef.value) return |
| | | console.log('onSubmit called, isDetail:', isDetail.value, 'operationType:', operationType.value) |
| | | console.log('formRef.value:', formRef.value) |
| | | if (isDetail.value) { |
| | | console.log('Blocked: isDetail is true') |
| | | return |
| | | } |
| | | if (!formRef.value) { |
| | | console.log('Blocked: formRef is null') |
| | | return |
| | | } |
| | | |
| | | console.log('Starting validation...') |
| | | formRef.value.validate().then(async () => { |
| | | loading.value = true |
| | | try { |
| | | let api |
| | | let params |
| | | console.log('Submitting with operationType:', operationType.value) |
| | | console.log('Form data:', form.value) |
| | | |
| | | if (operationType.value === 'add') { |
| | | api = addOpportunity |
| | |
| | | } finally { |
| | | loading.value = false |
| | | } |
| | | }).catch(() => {}) |
| | | }).catch((err) => { |
| | | console.log('Validation failed:', err) |
| | | uni.showToast({ |
| | | title: '请检查表单填写是否正确', |
| | | icon: 'none' |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | onLoad(async () => { |
| | | // 读取操作类型和数据 |
| | | const type = uni.getStorageSync('opportunityOperationType') || 'add' |
| | | operationType.value = type |
| | | console.log('onLoad - operationType set to:', operationType.value) |
| | | |
| | | // 加载省份列表 |
| | | await loadProvinces() |
| | |
| | | form.value.mainBusinessRevenue = nullToEmpty(form.value.mainBusinessRevenue) |
| | | form.value.customerScale = nullToEmpty(form.value.customerScale) |
| | | form.value.informationState = nullToEmpty(form.value.informationState) |
| | | form.value.contractAmount = nullToEmpty(form.value.contractAmount) |
| | | form.value.contractAmount = form.value.contractAmount !== null && form.value.contractAmount !== undefined ? String(form.value.contractAmount) : '' |
| | | form.value.description = nullToEmpty(form.value.description) |
| | | form.value.renContent = nullToEmpty(form.value.renContent) |
| | | form.value.paymentDescription = nullToEmpty(form.value.paymentDescription) |
| | | form.value.entryPerson = nullToEmpty(form.value.entryPerson) |
| | | form.value.entryDate = nullToEmpty(form.value.entryDate) |