gaoluyang
5 天以前 6c497f71f5441633099fc7a7896da8e8c7835f05
公司app
1.商机管理添加字段
已修改2个文件
68 ■■■■ 文件已修改
src/pages/opportunityManagement/detail.vue 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/opportunityManagement/index.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/opportunityManagement/detail.vue
@@ -128,7 +128,6 @@
                <up-input
                    v-model="form.contractAmount"
                    :disabled="isDetail || isAddOperation"
                    type="number"
                    placeholder="请输入合同金额"
                />
            </up-form-item>
@@ -138,7 +137,7 @@
                <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"
@@ -149,10 +148,20 @@
                />
            </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"
                :disabled="isDetail || isAddOperation"
                    placeholder="是否垫资?企业是否开票?企业是否分补贴或额外出钱?"
                    autoHeight
                    count
@@ -315,7 +324,8 @@
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 绑定列表
@@ -496,6 +506,7 @@
    businessSource: '',
    contractAmount: '',
    description: '',
    renContent: '',
    paymentDescription: '',
    entryPerson: userStore.nickName,
    entryDate: dayjs().format('YYYY-MM-DD'),
@@ -514,7 +525,7 @@
        { 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'] }
@@ -528,10 +539,13 @@
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([])
@@ -579,7 +593,7 @@
        case 'edit':
            return '编辑商机'
        case 'addOperation':
            return '添加描述'
            return '添加拜访记录'
        case 'detail':
        default:
            return '商机详情'
@@ -698,14 +712,25 @@
// 提交表单
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
@@ -759,13 +784,20 @@
        } 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()
@@ -804,8 +836,9 @@
            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)
src/pages/opportunityManagement/index.vue
@@ -84,7 +84,7 @@
                            class="action-btn"
                            @click.stop="openOpportunity('addOperation', item)"
                        >
                            添加改造内容
                            添加拜访记录
                        </u-button>
                        <u-button
                            type="default"
@@ -145,10 +145,13 @@
    const typeMap = {
        '新建': 'info',
        '项目跟踪': 'primary',
        '放弃': 'error',
        '合同签约': 'warning',
        '备案申报': 'primary',
        '项目交付': 'success',
        '项目验收': 'success'
        '项目验收': 'success',
        '项目回款': 'success',
        '回补贴': 'success'
    }
    return typeMap[status] || 'default'
}
@@ -158,10 +161,13 @@
    const textMap = {
        '新建': '新建',
        '项目跟踪': '项目跟踪',
        '放弃': '放弃',
        '合同签约': '合同签约',
        '备案申报': '备案申报',
        '项目交付': '项目交付',
        '项目验收': '项目验收'
        '项目验收': '项目验收',
        '项目回款': '项目回款',
        '回补贴': '回补贴'
    }
    return textMap[status] || '未知'
}
@@ -202,6 +208,7 @@
// 打开商机操作页面(新增、编辑、详情、添加描述)
const openOpportunity = (type, row) => {
    console.log('openOpportunity called with type:', type, 'row:', row)
    try {
        uni.setStorageSync('opportunityOperationType', type)
        if (row) {