From 694897c47038ea8abb1dc21bc8fb620f5b4424d4 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 09 二月 2026 14:32:31 +0800
Subject: [PATCH] 公司 1.商机管理附件删除修改 2.商机管理添加新状态 3.商机管理添加行业、信息化现状、主营业务收入等字段

---
 src/views/salesManagement/opportunityManagement/index.vue |  116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 110 insertions(+), 6 deletions(-)

diff --git a/src/views/salesManagement/opportunityManagement/index.vue b/src/views/salesManagement/opportunityManagement/index.vue
index 2408ac1..b656b88 100644
--- a/src/views/salesManagement/opportunityManagement/index.vue
+++ b/src/views/salesManagement/opportunityManagement/index.vue
@@ -2,7 +2,7 @@
   <div class="app-container">
     <!-- 鎼滅储鍖哄煙 -->
     <div class="search_form">
-      <el-form :model="searchForm" :inline="true" label-width="auto">
+      <el-form :model="searchForm" :inline="true">
         <el-form-item label="瀹㈡埛鍚嶇О">
           <el-input
             v-model="searchForm.customerName"
@@ -23,6 +23,23 @@
               @change="handleQuery"
           />
         </el-form-item>
+        <el-form-item label="褰曞叆浜�">
+          <el-select
+            v-model="searchForm.entryPerson"
+            placeholder="璇烽�夋嫨褰曞叆浜�"
+            clearable
+            filterable
+            style="width: 200px"
+            @change="handleQuery"
+          >
+            <el-option
+              v-for="item in userList"
+              :key="item.nickName"
+              :label="item.nickName"
+              :value="item.nickName"
+            />
+          </el-select>
+        </el-form-item>
         <el-form-item label="褰曞叆鏃ユ湡锛�">
           <el-date-picker v-model="searchForm.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange"
             placeholder="璇烽�夋嫨" clearable @change="changeDaterange" />
@@ -30,12 +47,10 @@
         <el-form-item>
           <el-button type="primary" @click="handleQuery">鎼滅储</el-button>
           <el-button @click="resetQuery">閲嶇疆</el-button>
+          <el-button type="primary" @click="handleAdd">鏂板缓</el-button>
+			<el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
         </el-form-item>
       </el-form>
-			<div class="actions">
-			<el-button type="primary" @click="handleAdd">鏂板缓</el-button>
-			<el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
-		</div>
     </div>
     <!-- 琛ㄦ牸鍖哄煙 -->
     <div class="table_list">
@@ -179,6 +194,40 @@
           </el-select>
         </el-form-item>
         
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="琛屼笟">
+              <el-input v-model="form.industry" placeholder="璇疯緭鍏ヨ涓�" clearable :disabled="operationType === 'detail' || operationType === 'addOperation'" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="淇℃伅鍖栫幇鐘�">
+              <el-input v-model="form.informationState" placeholder="璇疯緭鍏ヤ俊鎭寲鐜扮姸" clearable :disabled="operationType === 'detail' || operationType === 'addOperation'" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="涓昏惀涓氬姟鏀跺叆">
+              <el-input v-model="form.mainBusinessRevenue" placeholder="璇疯緭鍏ヤ富钀ヤ笟鍔℃敹鍏�" clearable :disabled="operationType === 'detail' || operationType === 'addOperation'" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="瀹㈡埛瑙勬ā">
+              <el-input v-model="form.customerScale" placeholder="璇疯緭鍏ュ鎴疯妯�" clearable :disabled="operationType === 'detail' || operationType === 'addOperation'" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        
+        <el-row :gutter="20">
+          <el-col :span="24">
+            <el-form-item label="涓昏惀浜у搧">
+              <el-input v-model="form.mainProducts" placeholder="璇疯緭鍏ヤ富钀ヤ骇鍝�" clearable :disabled="operationType === 'detail' || operationType === 'addOperation'" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        
         <el-form-item label="鍟嗘満鏉ユ簮" prop="businessSource">
           <el-input v-model="form.businessSource" placeholder="璇疯緭鍏ュ晢鏈烘潵婧�" :disabled="operationType === 'detail' || operationType === 'addOperation'" />
         </el-form-item>
@@ -229,6 +278,25 @@
         </el-row>
       </el-form>
       
+      <!-- 闄勪欢鏌ョ湅锛堜粎鍦ㄨ鎯呮ā寮忎笅鏄剧ず锛� -->
+      <div v-if="operationType === 'detail'" class="attachment-section">
+        <el-divider content-position="left">闄勪欢鏉愭枡</el-divider>
+        <div v-if="form.businessCommonFiles && form.businessCommonFiles.length > 0">
+          <el-table :data="form.businessCommonFiles" border stripe style="width: 100%">
+            <el-table-column label="闄勪欢鍚嶇О" prop="name" min-width="400" show-overflow-tooltip />
+            <el-table-column fixed="right" label="鎿嶄綔" width="150" align="center">
+              <template #default="scope">
+                <el-button link type="primary" size="small" @click="downloadAttachment(scope.row)">涓嬭浇</el-button>
+                <el-button link type="primary" size="small" @click="previewAttachment(scope.row)">棰勮</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+        <div v-else style="text-align: center; padding: 20px; color: #999;">
+          鏆傛棤闄勪欢
+        </div>
+      </div>
+      
       <!-- 鍙樻洿璁板綍鏃堕棿绾匡紙浠呭湪璇︽儏妯″紡涓嬫樉绀猴級 -->
       <div v-if="operationType === 'detail'" class="change-history-section">
         <el-divider content-position="left">鍙樻洿璁板綍</el-divider>
@@ -277,6 +345,8 @@
 
     <!-- 闄勪欢鍒楄〃瀵硅瘽妗� -->
     <FileList ref="fileListRef" @refresh="handleFileListRefresh" />
+    <!-- 鏂囦欢棰勮缁勪欢 -->
+    <filePreview ref="filePreviewRef" />
   </div>
 </template>
 
@@ -298,6 +368,7 @@
 import { userListNoPage } from '@/api/system/user.js'
 import {customerList, getSalesLedgerWithProducts} from '@/api/salesManagement/salesLedger.js'
 import FileList from './fileList.vue'
+import filePreview from '@/components/filePreview/index.vue'
 
 const { proxy } = getCurrentInstance()
 const userStore = useUserStore()
@@ -320,6 +391,7 @@
 const searchForm = reactive({
   customerName: '',
   city: '',
+  entryPerson: '',
   entryDate: [],
   entryDateStart: '',
   entryDateEnd: ''
@@ -335,6 +407,11 @@
   province: '',
 	city: '',
   customerName: '',
+  industry: '',
+  informationState: '',
+  mainBusinessRevenue: '',
+  customerScale: '',
+  mainProducts: '',
   businessSource: '',
   description: '',
   entryPerson: userStore.nickName,
@@ -350,6 +427,7 @@
 // FileList缁勪欢寮曠敤
 const fileListRef = ref(null)
 const currentAttachmentRow = ref(null)
+const filePreviewRef = ref(null)
 
 // 涓婁紶閰嶇疆
 const upload = reactive({
@@ -439,6 +517,8 @@
 const resetQuery = () => {
   Object.assign(searchForm, {
     customerName: '',
+    city: '',
+    entryPerson: '',
     entryDate: [],
     entryDateStart: '',
     entryDateEnd: ''
@@ -751,7 +831,13 @@
     id: undefined,
     status: '',
     province: '',
+    city: '',
     customerName: '',
+    industry: '',
+    informationState: '',
+    mainBusinessRevenue: '',
+    customerScale: '',
+    mainProducts: '',
     businessSource: '',
     description: '',
     entryPerson: userStore.nickName,
@@ -810,6 +896,21 @@
 	fileListRef.value.open(row.businessCommonFiles, row.id)
 }
 
+// 涓嬭浇闄勪欢锛堣鎯呴〉闈級
+function downloadAttachment(row) {
+	proxy.$download.name(row.url)
+}
+
+// 棰勮闄勪欢锛堣鎯呴〉闈級
+function previewAttachment(row) {
+	if (filePreviewRef.value) {
+		filePreviewRef.value.open(row.url)
+	} else {
+		// 濡傛灉娌℃湁棰勮缁勪欢锛岀洿鎺ユ墦寮�閾炬帴
+		window.open(row.url, '_blank')
+	}
+}
+
 // 闄勪欢鍒楄〃鍒锋柊
 function handleFileListRefresh(rowId) {
 	// 閲嶆柊鑾峰彇鍒楄〃鏁版嵁
@@ -826,7 +927,10 @@
 	}, 300)
 }
 
-onMounted(() => {
+onMounted(async () => {
+  // 鍔犺浇鐢ㄦ埛鍒楄〃渚涙悳绱娇鐢�
+  const userLists = await userListNoPage()
+  userList.value = userLists.data
   getList()
 })
 </script>

--
Gitblit v1.9.3