From 6c497f71f5441633099fc7a7896da8e8c7835f05 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 09 三月 2026 15:46:37 +0800
Subject: [PATCH] 公司app 1.商机管理添加字段
---
src/pages/opportunityManagement/detail.vue | 83 +++++++++++++++++++++++++++++------------
src/pages/opportunityManagement/index.vue | 13 +++++-
2 files changed, 68 insertions(+), 28 deletions(-)
diff --git a/src/pages/opportunityManagement/detail.vue b/src/pages/opportunityManagement/detail.vue
index 14152bb..4364bd7 100644
--- a/src/pages/opportunityManagement/detail.vue
+++ b/src/pages/opportunityManagement/detail.vue
@@ -125,20 +125,19 @@
</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"
@@ -149,16 +148,26 @@
/>
</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">
@@ -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)
diff --git a/src/pages/opportunityManagement/index.vue b/src/pages/opportunityManagement/index.vue
index 5a39f58..9ff7533 100644
--- a/src/pages/opportunityManagement/index.vue
+++ b/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) {
--
Gitblit v1.9.3