From e34c2e67208bd63e320a4504ce8cf40a83ba7cbb Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期五, 07 七月 2023 18:48:09 +0800
Subject: [PATCH] 销售模块剩余部分新建页面

---
 src/views/sales/generatePlan/AddGeneratePlanDialog.vue           |  279 +++++++
 src/views/service/serviceFollowup/AddServiceFollowupDialog.vue   |   15 
 src/views/service/serviceFeeManage/index.vue                     |    5 
 src/views/sales/salesDetails/AddSalesDetailsDialog.vue           |   65 +
 src/components/makepager/TableCommonView.vue                     |   11 
 src/views/custom/salesLead/index.vue                             |    6 
 src/views/service/orderManage/AddOrderManageDialog.vue           |   15 
 src/views/sales/salesReturn/index.vue                            |   52 
 src/views/custom/followupRecords/AddFollowupRecordsDialog.vue    |   15 
 src/components/layout/components/appsidebar/index.vue            |    5 
 src/views/sales/contractManage/index.vue                         |   56 
 src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue |   15 
 src/views/service/serviceContract/AddServiceContractDialog.vue   |   74 +
 src/components/makepager/CommonFormTableView.vue                 |  196 +++-
 src/views/sales/masterOrder/AddMasterOrderDialog.vue             |   15 
 src/views/sales/salesReturn/AddSalesReturnDialog.vue             |  357 +++++++++
 src/views/custom/contacts/AddContactsDialog.vue                  |   15 
 src/views/sales/refundForm/AddRefundFormDialog.vue               |  408 ++++++++++
 src/router/index.js                                              |    2 
 src/views/sales/refundForm/index.vue                             |   60 
 src/views/custom/customManage/AddCustomManageDialog.vue          |   15 
 src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue   |   15 
 src/views/custom/customManage/index.vue                          |   18 
 src/views/sales/quotation/AddQuotationDialog.vue                 |   73 +
 src/views/sales/subOrder/AddSubOrderDialog.vue                   |   66 +
 src/router/sales/index.js                                        |   10 
 src/views/sales/contractManage/AddContractManageDialog.vue       |  301 +++++++
 src/views/sales/generatePlan/index.vue                           |   64 
 28 files changed, 1,947 insertions(+), 281 deletions(-)

diff --git a/src/components/layout/components/appsidebar/index.vue b/src/components/layout/components/appsidebar/index.vue
index db1ae8b..d2d5ea1 100644
--- a/src/components/layout/components/appsidebar/index.vue
+++ b/src/components/layout/components/appsidebar/index.vue
@@ -4,6 +4,7 @@
     <div class="box">
       <el-menu
         router
+        unique-opened
         :default-active="$route.path"
         class="el-menu-vertical-demo"
         @select="handleOpen"
@@ -12,7 +13,7 @@
         text-color="#fff"
         active-text-color="#ffd04b"
       >
-        <el-submenu index="">
+        <el-submenu index="1">
           <template slot="title">
             <i class="el-icon-location"></i>
             <span>瀹㈡埛绠$悊</span>
@@ -35,7 +36,7 @@
           <el-menu-item index="/sales/salesReturn">閿�鍞��璐у崟</el-menu-item>
           <el-menu-item index="/sales/refundForm">閿�鍞��娆惧崟</el-menu-item>
           <el-menu-item index="/sales/contractManage">鍚堝悓绠$悊</el-menu-item>
-          <el-menu-item index="/sales/productPlan">鐢熶骇璁″垝</el-menu-item>
+          <el-menu-item index="/sales/generatePlan">鐢熸垚璁″垝</el-menu-item>
         </el-submenu>
         <el-submenu index="3">
           <template slot="title">
diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue
index 125520c..c8ce837 100644
--- a/src/components/makepager/CommonFormTableView.vue
+++ b/src/components/makepager/CommonFormTableView.vue
@@ -1,65 +1,50 @@
 <template>
   <div class="page-view">
     <el-form ref="form" :model="productTableList" :show-message="false" label-position="right">
-      <el-table :data="productTableList.tableData" style="width: 100%">
-        <el-table-column prop="id" label="#" width="30"></el-table-column>
-        <el-table-column prop="productName" label="浜у搧鍚嶇О">
-          <template slot-scope="scope">
-            <el-form-item
-              label=" "
-              :prop="'tableData.' + scope.$index + '.productName'"
-              :rules="[{ required: true, message: '杈撳叆涓嶈兘涓虹┖' }]"
-            >
-              <el-input v-model.trim="scope.row.productName" maxlength="50" size="mini" style="width: 70px"></el-input>
-            </el-form-item>
+      <el-table
+        :data="productTableList.tableData"
+        :show-summary="showSummary.show"
+        :summary-method="getSummaries"
+        :span-method="arraySpanMethod"
+        style="width: 100%"
+      >
+        <el-table-column
+          v-for="(item, i) in productTableList.tableColumn"
+          :key="i"
+          :prop="item.prop"
+          :label="item.label"
+          :width="item.width"
+          :min-width="item.min"
+          align="right"
+        >
+          <!-- 琛ㄥご鏍峰紡 -->
+          <template slot="header">
+            <span v-if="item.isRequird" style="color: #f56c6c">*</span>
+            <span>{{ item.label }}</span>
           </template>
-        </el-table-column>
-        <el-table-column prop="productNumber" label="浜у搧缂栧彿"></el-table-column>
-        <el-table-column prop="startDate" label="鏈嶅姟寮�濮嬫棩" width="140">
+          <!-- column鏍峰紡 -->
           <template slot-scope="scope">
             <el-form-item
+              v-if="item.input"
               label=" "
-              :prop="'tableData.' + scope.$index + '.startDate'"
-              :rules="[{ required: true, message: '杈撳叆涓嶈兘涓虹┖' }]"
+              :prop="'tableData.' + scope.$index + '.' + item.prop"
+              :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
             >
-              <el-date-picker
-                v-model="scope.row.startDate"
-                size="mini"
-                type="date"
-                placeholder="閫夋嫨鏃ユ湡"
-                style="width: 90px"
-              >
+              <el-input v-model.trim="scope.row[item.prop]" maxlength="50" size="mini"></el-input>
+            </el-form-item>
+            <el-form-item
+              v-else-if="item.date"
+              label=" "
+              :prop="'tableData.' + scope.$index + '.' + item.prop"
+              :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
+            >
+              <!-- <el-input v-model.trim="scope.row[item.prop]" maxlength="50" size="mini"></el-input> -->
+              <el-date-picker v-model="scope.row[item.prop]" type="date" size="mini" style="width: 110px">
               </el-date-picker>
             </el-form-item>
+            <span v-else>{{ scope.row[item.prop] }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="endDate" label="鏈嶅姟鍒版湡鏃�" width="140">
-          <template slot-scope="scope">
-            <el-form-item
-              label=" "
-              :prop="'tableData.' + scope.$index + '.endDate'"
-              :rules="[{ required: true, message: '杈撳叆涓嶈兘涓虹┖' }]"
-            >
-              <el-date-picker
-                v-model="scope.row.endDate"
-                size="mini"
-                type="date"
-                placeholder="閫夋嫨鏃ユ湡"
-                style="width: 90px"
-              >
-              </el-date-picker>
-            </el-form-item>
-          </template>
-        </el-table-column>
-        <el-table-column prop="number" label="鏁伴噺"></el-table-column>
-        <el-table-column prop="" label="鍚◣鍗曚环"> </el-table-column>
-        <el-table-column prop="" label="涓嶅惈绋庡崟浠�"> </el-table-column>
-        <el-table-column prop="" label="鎶樻墸鐜�(%)"></el-table-column>
-        <el-table-column prop="" label="鎶樻墸棰�"> </el-table-column>
-        <el-table-column prop="" label="绋�(閿�鍞�)"> </el-table-column>
-        <el-table-column prop="" label="瀹為檯鍚◣鍗曚环"></el-table-column>
-        <el-table-column prop="" label="浠风◣鍚堣"> </el-table-column>
-        <el-table-column prop="" label="鎻忚堪"> </el-table-column>
       </el-table>
     </el-form>
     <div style="margin: 10px">
@@ -67,6 +52,18 @@
       <el-button size="small" type="primary">瀵煎叆鏄庣粏</el-button>
       <el-button size="small" type="primary">娓呯┖</el-button>
       <el-button size="small" type="primary">閲嶇畻</el-button>
+    </div>
+    <div v-if="showSummary.total || showSummary.refundable" style="height: 42px; line-height: 42px">
+      <el-row :gutter="10">
+        <el-col v-if="showSummary.total" :span="2" :offset="22">
+          <span style="font-weight: bold">鍚堣</span>
+          <span style="margin-left: 10px">0.00</span>
+        </el-col>
+        <el-col v-if="showSummary.refundable" :span="2" :offset="22">
+          <span style="font-weight: bold">搴旈��娆�</span>
+          <span style="margin-left: 10px">0.00</span>
+        </el-col>
+      </el-row>
     </div>
   </div>
 </template>
@@ -84,6 +81,18 @@
             // table琛ㄥ崟
             { label: "", prop: "", min: 200, tooltip: true }
           ]
+        }
+      }
+    },
+    showSummary: {
+      type: Object,
+      default: () => {
+        return {
+          show: false,
+          total: false,
+          refundable: false,
+          sumProp: [],
+          mergeNumber: 1
         }
       }
     }
@@ -105,6 +114,76 @@
     },
     handleSelectionChange(val) {
       this.$emit("getSelectArray", val)
+    },
+    // 琛屽悎骞�
+    arraySpanMethod() {
+      if (this.showSummary.show) {
+        this.$nextTick(() => {
+          if (this.$refs.table) {
+            var current = this.$refs.table.querySelector(".el-table__footer-wrapper").querySelector(".el-table__footer")
+            var cell = current.rows[0].cells
+            for (let i = 0; i < this.showSummary.mergeNumber; i++) {
+              cell[i].style.display = "none"
+            }
+            cell[this.showSummary.mergeNumber].classList.remove("is-left")
+            cell[this.showSummary.mergeNumber].colSpan = this.showSummary.mergeNumber.toString()
+          }
+        })
+      }
+    },
+    // 鍚堣
+    getSummaries(param) {
+      if (this.showSummary.show) {
+        const { columns, data } = param
+        const sums = []
+        columns.forEach((column, index) => {
+          if (index === this.showSummary.mergeNumber) {
+            sums[index] = "灏忚"
+          }
+          const values = data.map((item) => Number(item[column.property]))
+          // if (column.property === this.showSummary.sumProp) {
+          if (this.showSummary.sumProp.includes(column.property)) {
+            sums[index] = values.reduce((prev, curr) => {
+              const value = Number(curr)
+              if (!isNaN(value)) {
+                return this.number_format(prev + curr, 2, ".", ",")
+              } else {
+                return this.number_format(prev, 2, ".", ",")
+              }
+            }, 0)
+            sums[index]
+          }
+        })
+        return sums
+      }
+    },
+    // 鏁板瓧鎹㈣涓洪噾棰濇樉绀烘牸寮�
+    number_format(number, decimals, dec_point, thousands_sep) {
+      decimals = 2 //杩欓噷榛樿璁剧疆淇濈暀涓や綅灏忔暟锛屼篃鍙互娉ㄩ噴杩欏彞閲囩敤浼犲叆鐨勫弬鏁�
+      /*
+       * 鍙傛暟璇存槑锛�
+       * number锛氳鏍煎紡鍖栫殑鏁板瓧
+       * decimals锛氫繚鐣欏嚑浣嶅皬鏁�
+       * dec_point锛氬皬鏁扮偣绗﹀彿
+       * thousands_sep锛氬崈鍒嗕綅绗﹀彿
+       * */
+      number = (number + "").replace(/[^0-9+-Ee.]/g, "")
+      var n = !isFinite(+number) ? 0 : +number,
+        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
+        sep = typeof thousands_sep === "undefined" ? "," : thousands_sep,
+        dec = typeof dec_point === "undefined" ? "." : dec_point
+      var s = n.toString().split(".")
+      var re = /(-?\d+)(\d{3})/
+      while (re.test(s[0])) {
+        s[0] = s[0].replace(re, "$1" + sep + "$2")
+      }
+      if ((s[1] || "").length < prec) {
+        s[1] = s[1] || ""
+        s[1] += new Array(prec - s[1].length + 1).join("0")
+      } else {
+        s[1] = s[1].substring(0, prec) //灏忔暟鐐逛綅鏁拌秴鍑洪暱搴︽椂鎴彇鍓嶉潰鐨勪綅鏁�
+      }
+      return s.join(dec)
     }
   }
 }
@@ -117,4 +196,21 @@
     margin-bottom: 0;
   }
 }
+::v-deep {
+  .el-form-item__label {
+    display: none;
+  }
+  .el-table__footer-wrapper tbody td.el-table__cell {
+    background-color: #fff;
+    text-align: right;
+    font-weight: bold;
+  }
+  .el-input--suffix .el-input__inner {
+    padding-right: 0px;
+  }
+  .el-table .cell,
+  .el-table th.el-table__cell > .cell {
+    padding: 0 5px;
+  }
+}
 </style>
diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue
index ee1728d..9db25d6 100644
--- a/src/components/makepager/TableCommonView.vue
+++ b/src/components/makepager/TableCommonView.vue
@@ -21,10 +21,12 @@
         :label="item.label"
         :width="item.width"
         :min-width="item.min"
+        show-overflow-tooltip="true"
         sortable
       >
         <template slot-scope="scope">
           <span v-if="item.price">{{ "锟�" + number_format(scope.row[item.prop], 2, ".", ",") }}</span>
+          <span v-else-if="item.status" :class="scope.row.status">{{ scope.row[item.prop] }}</span>
           <span v-else>{{ scope.row[item.prop] }}</span>
         </template>
       </el-table-column>
@@ -93,7 +95,6 @@
     getSummaries(param) {
       if (this.showSummary.show) {
         const { columns, data } = param
-        console.log(param)
         const sums = []
         columns.forEach((column, index) => {
           if (index === this.showSummary.mergeNumber) {
@@ -116,7 +117,7 @@
         return sums
       }
     },
-    //瀹氫箟number_format鏂规硶
+    // 鏁板瓧鎹㈣涓洪噾棰濇樉绀烘牸寮�
     number_format(number, decimals, dec_point, thousands_sep) {
       decimals = 2 //杩欓噷榛樿璁剧疆淇濈暀涓や綅灏忔暟锛屼篃鍙互娉ㄩ噴杩欏彞閲囩敤浼犲叆鐨勫弬鏁�
       /*
@@ -154,6 +155,12 @@
   margin-top: 20px;
   margin-right: 10px;
   margin-bottom: 40px;
+  .blue {
+    padding: 10px;
+    color: #fff;
+    background-color: blue;
+    border-radius: 4px;
+  }
 }
 ::v-deep {
   .el-table__footer-wrapper tbody td.el-table__cell {
diff --git a/src/router/index.js b/src/router/index.js
index f634154..6effbfa 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -55,7 +55,7 @@
       insIndex: true
     },
     redirect: {
-      name: "custom"
+      name: "salesLead"
     },
     children: routes
   },
diff --git a/src/router/sales/index.js b/src/router/sales/index.js
index f21c624..48fdcd9 100644
--- a/src/router/sales/index.js
+++ b/src/router/sales/index.js
@@ -8,7 +8,7 @@
 const salesReturn = (resolve) => require(["@/views/sales/salesReturn/index"], resolve) // 閿�鍞��璐у崟
 const refundForm = (resolve) => require(["@/views/sales/refundForm/index"], resolve) // 閿�鍞��娆惧崟
 const contractManage = (resolve) => require(["@/views/sales/contractManage/index"], resolve) // 鍚堝悓绠$悊
-const productPlan = (resolve) => require(["@/views/sales/productPlan/index"], resolve) // 鐢熶骇璁″垝
+const generatePlan = (resolve) => require(["@/views/sales/generatePlan/index"], resolve) // 鐢熸垚璁″垝
 
 const appconfig = [
   {
@@ -76,11 +76,11 @@
     }
   },
   {
-    path: "/sales/productPlan",
-    name: "productPlan",
-    component: productPlan,
+    path: "/sales/generatePlan",
+    name: "generatePlan",
+    component: generatePlan,
     meta: {
-      title: "鐢熶骇璁″垝"
+      title: "鐢熸垚璁″垝"
     }
   }
 ]
diff --git a/src/views/custom/contacts/AddContactsDialog.vue b/src/views/custom/contacts/AddContactsDialog.vue
index f1efe13..3c83421 100644
--- a/src/views/custom/contacts/AddContactsDialog.vue
+++ b/src/views/custom/contacts/AddContactsDialog.vue
@@ -149,8 +149,21 @@
             <el-row>
               <el-col :span="12">
                 <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
                   <div class="annex-view">
-                    <div @click="addAnnexClick">娣诲姞</div>
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
                     <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
                   </div>
                 </el-form-item>
diff --git a/src/views/custom/customManage/AddCustomManageDialog.vue b/src/views/custom/customManage/AddCustomManageDialog.vue
index 3f1ca68..1617898 100644
--- a/src/views/custom/customManage/AddCustomManageDialog.vue
+++ b/src/views/custom/customManage/AddCustomManageDialog.vue
@@ -272,8 +272,21 @@
             <el-row>
               <el-col :span="12">
                 <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
                   <div class="annex-view">
-                    <div @click="addAnnexClick">娣诲姞</div>
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
                     <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
                   </div>
                 </el-form-item>
diff --git a/src/views/custom/customManage/index.vue b/src/views/custom/customManage/index.vue
index 629d3b7..83f429a 100644
--- a/src/views/custom/customManage/index.vue
+++ b/src/views/custom/customManage/index.vue
@@ -31,7 +31,7 @@
     </div>
     <TableCommonView ref="tableListRef" :table-list="tableList">
       <template slot="tableButton">
-        <el-table-column label="鎿嶄綔" width="120" fixed="right">
+        <el-table-column label="鎿嶄綔" width="150" fixed="right">
           <template slot-scope="scope">
             <el-button type="text" size="small">鍙樻洿鍏捣</el-button>
             <el-button @click="handleClick(scope.row)" type="text" size="small">缂栬緫</el-button>
@@ -118,15 +118,15 @@
           }
         ],
         tableColumn: [
-          { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 190 }, // 瀹㈡埛鍚嶇О
-          { label: "閿�鍞礋璐d汉", prop: "saleLeadOwner", min: 120 }, // 閿�鍞礋璐d汉
-          { label: "閲嶈绾у埆", prop: "importantLevel", min: 120 }, // 閲嶈绾у埆
+          { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 100 }, // 瀹㈡埛鍚嶇О
+          { label: "閿�鍞礋璐d汉", prop: "saleLeadOwner" }, // 閿�鍞礋璐d汉
+          { label: "閲嶈绾у埆", prop: "importantLevel" }, // 閲嶈绾у埆
           { label: "涓嬫鍥炶鏃ユ湡", prop: "notContactDay", min: 90 }, // 鏈仈绯讳汉澶╂暟
-          { label: "鎵嬫満鍙风爜", prop: "nextFollowDate", min: 150 }, // 涓嬫鍥炶鏃ユ湡
-          { label: "璇︾粏鍦板潃", prop: "detailAddress", min: 290 }, // 璇︾粏鍦板潃
-          { label: "瀹㈡埛鐘舵��", prop: "customStatus", min: 100 }, // 瀹㈡埛鐘舵��
-          { label: "鑱旂郴浜哄鍚�", prop: "contactName", min: 100 }, // 鑱旂郴浜哄鍚�
-          { label: "鎵嬫満", prop: "phoneNumber", min: 100 } // 鎵嬫満鍙风爜
+          { label: "鎵嬫満鍙风爜", prop: "nextFollowDate" }, // 涓嬫鍥炶鏃ユ湡
+          { label: "璇︾粏鍦板潃", prop: "detailAddress", min: 200 }, // 璇︾粏鍦板潃
+          { label: "瀹㈡埛鐘舵��", prop: "customStatus" }, // 瀹㈡埛鐘舵��
+          { label: "鑱旂郴浜哄鍚�", prop: "contactName" }, // 鑱旂郴浜哄鍚�
+          { label: "鎵嬫満", prop: "phoneNumber" } // 鎵嬫満鍙风爜
         ]
       }
       this.searchOptions = []
diff --git a/src/views/custom/followupRecords/AddFollowupRecordsDialog.vue b/src/views/custom/followupRecords/AddFollowupRecordsDialog.vue
index c3a0965..dc48051 100644
--- a/src/views/custom/followupRecords/AddFollowupRecordsDialog.vue
+++ b/src/views/custom/followupRecords/AddFollowupRecordsDialog.vue
@@ -142,8 +142,21 @@
             <el-row>
               <el-col :span="12">
                 <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
                   <div class="annex-view">
-                    <div @click="addAnnexClick">娣诲姞</div>
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
                     <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
                   </div>
                 </el-form-item>
diff --git a/src/views/custom/salesLead/index.vue b/src/views/custom/salesLead/index.vue
index 8579098..5cbb5a0 100644
--- a/src/views/custom/salesLead/index.vue
+++ b/src/views/custom/salesLead/index.vue
@@ -38,11 +38,7 @@
     TableCommonView,
     AddSalesLeadDialog
   },
-  computed: {
-    searchCommonHeight() {
-      return this.$refs.searchCommonView.offsetHeight
-    }
-  },
+  computed: {},
   data() {
     return {
       tableList: {},
diff --git a/src/views/sales/contractManage/AddContractManageDialog.vue b/src/views/sales/contractManage/AddContractManageDialog.vue
new file mode 100644
index 0000000..57a719b
--- /dev/null
+++ b/src/views/sales/contractManage/AddContractManageDialog.vue
@@ -0,0 +1,301 @@
+<template>
+  <div class="add-contract-manage">
+    <el-dialog
+      :title="editCommonConfig.title + '鍚堝悓绠$悊'"
+      :visible.sync="editConfig.visible"
+      :width="dialogWidth"
+      :before-close="handleClose"
+    >
+      <el-form
+        ref="form"
+        :model="editConfig.infomation"
+        :rules="rules"
+        label-position="right"
+        label-width="308px"
+        size="mini"
+      >
+        <!-- 淇℃伅 -->
+        <div class="basic-info">
+          <!-- 鍩烘湰淇℃伅 -->
+          <div class="basic-info-title">鍩烘湰淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="瀹㈡埛鍚嶇О" prop="customName">
+                  <div class="custom-name">
+                    <el-input v-model="editConfig.infomation.customName"></el-input>
+                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div>
+                    <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鍗曟嵁缂栧彿" prop="documentNumber">
+                  <el-input v-model="editConfig.infomation.documentNumber"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="璐熻矗浜�" prop="owner">
+                  <el-select v-model="editConfig.infomation.owner" placeholder="璇烽�夋嫨" size="mini" style="width: 63%">
+                    <el-option v-for="item in ownerOptions" :key="item.value" :label="item.label" :value="item.value">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鍚堝悓鐘舵��" prop="contractStatus">
+                  <CommonSelectView
+                    :common-value="editConfig.infomation.contractStatus"
+                    :common-options="contractStatusOptions"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閿�鍞姤浠峰崟" prop="salesQuotation">
+                  <div class="custom-name">
+                    <el-input v-model="editConfig.infomation.salesQuotation"></el-input>
+                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div>
+                    <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 闄勪欢淇℃伅 -->
+          <div v-if="isUnflod" class="basic-info-title">闄勪欢淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">鍚堝悓鎵弿浠�</span>
+                    </div>
+                  </template>
+                  <div class="annex-view">
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
+                    <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
+                  </div>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 灞曞紑鏀惰捣 -->
+          <div v-if="editConfig.title === '鏂板缓'" class="unflod-collapse" @click="unflodCollapseClick">
+            <div>{{ unflodCollapseStr }}</div>
+            <div v-if="isUnflod"><i class="el-icon-arrow-up"></i></div>
+            <div v-else><i class="el-icon-arrow-down"></i></div>
+          </div>
+          <!-- 閫夋嫨瀹℃壒娴佺▼ -->
+          <div class="basic-info-title">閫夋嫨瀹℃壒娴佺▼</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="20">
+                <el-form-item label="瀹℃壒娴佺▼" prop="approvalWorkflow">
+                  <el-select
+                    v-model="editConfig.infomation.approvalWorkflow"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 100%"
+                  >
+                    <el-option
+                      v-for="item in approvalWorkflowOptions"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="20">
+                <el-form-item label="瀹℃壒姝ラ" prop="approvalSteps">
+                  <el-input v-model="editConfig.infomation.approvalSteps"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="20">
+                <el-form-item label="瀹℃壒浜�" prop="approvalPerson">
+                  <el-input v-model="editConfig.infomation.approvalPerson"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="20">
+                <el-form-item label="瀹℃壒鎰忚" prop="approvalOpinion">
+                  <el-input v-model="editConfig.infomation.approvalOpinion" type="textarea" :rows="2"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+        </div>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆苟鎻愪氦瀹℃壒</el-button>
+        <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆瓨</el-button>
+        <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import CommonSelectView from "@/components/makepager/CommonSelectView"
+export default {
+  name: "AddContractManageDialog",
+  props: {
+    editCommonConfig: {
+      type: Object,
+      default: () => {
+        return {
+          visible: false,
+          title: "鏂板缓",
+          infomation: {
+            customName: "",
+            documentNumber: "TKD20230521-12",
+            owner: "",
+            contractStatus: "",
+            salesQuotation: "",
+            approvalWorkflow: "",
+            approvalSteps: "",
+            approvalPerson: "",
+            approvalOpinion: ""
+          }
+        }
+      }
+    }
+  },
+  components: { CommonSelectView },
+  computed: {},
+  data() {
+    return {
+      dialogWidth: "80%",
+      editConfig: this.editCommonConfig,
+      rules: {
+        documentNumber: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+        owner: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }]
+      },
+      ownerOptions: [
+        // 璐熻矗浜�
+        { value: "1", label: "BOSS" },
+        { value: "2", label: "Mia" },
+        { value: "3", label: "璐㈠姟" },
+        { value: "4", label: "甯傚満" },
+        { value: "5", label: "绯荤粺绠$悊鍛�" },
+        { value: "6", label: "閿�鍞�" },
+        { value: "7", label: "閿�鍞�荤洃" }
+      ],
+      contractStatusOptions: [
+        { value: "1", label: "寰呭鎵�" },
+        { value: "2", label: "瀹℃壒涓�" },
+        { value: "3", label: "宸插鎵�" },
+        { value: "4", label: "宸插綊妗�" }
+      ], // 鍚堝悓鐘舵��
+      approvalWorkflowOptions: [], // 瀹℃壒娴佺▼
+      unflodCollapseStr: "鏀惰捣",
+      isUnflod: true
+    }
+  },
+  created() {},
+  methods: {
+    handleClose() {
+      this.editConfig.visible = false
+    },
+    // 娣诲姞闄勪欢
+    addAnnexClick() {},
+    // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡
+    setFormatClick() {},
+    // 灞曞紑鏀惰捣
+    unflodCollapseClick() {
+      if (this.unflodCollapseStr === "鏀惰捣") {
+        this.unflodCollapseStr = "灞曞紑鏇村鏍忕洰"
+        this.isUnflod = false
+      } else {
+        this.unflodCollapseStr = "鏀惰捣"
+        this.isUnflod = true
+      }
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.add-contract-manage {
+  .basic-info {
+    .basic-info-title {
+      background-color: #f4f8fe;
+      padding-left: 10px;
+      font-size: 15px;
+      font-weight: bold;
+      color: #666;
+      height: 42px;
+      line-height: 42px;
+    }
+    .basic-info-view {
+      margin-top: 10px;
+      padding-right: 40px;
+      .custom-name {
+        display: flex;
+        .common-select-btn {
+          margin-left: 5px;
+          font-size: 18px;
+        }
+      }
+    }
+    .address-view {
+      margin-top: 10px;
+      padding-right: 40px;
+    }
+    .annex-view {
+      display: flex;
+      color: #6166d3;
+      .setFormat {
+        margin-left: 10px;
+      }
+    }
+  }
+  .unflod-collapse {
+    display: flex;
+    height: 30px;
+    justify-content: center;
+    align-items: center;
+    color: #6166d3;
+  }
+  .dialog-footer {
+    background-color: #f5f5f5;
+    height: 55px;
+    line-height: 55px;
+  }
+}
+::v-deep {
+  .el-dialog__header {
+    padding: 12.5px 10px;
+    border-bottom: 1px solid #e5e5e5;
+    .el-dialog__title {
+      font-size: 15px;
+      color: #323232;
+      font-weight: bold;
+    }
+  }
+  .el-dialog__body {
+    padding: 0px;
+  }
+  .el-dialog__footer {
+    padding: 0px;
+    text-align: center;
+    box-sizing: border-box;
+    border-top: 1px solid #dadee5;
+  }
+  .product-view {
+    .el-form-item__label {
+      padding: 0;
+    }
+  }
+}
+</style>
diff --git a/src/views/sales/contractManage/index.vue b/src/views/sales/contractManage/index.vue
index 6e5af75..eae7b40 100644
--- a/src/views/sales/contractManage/index.vue
+++ b/src/views/sales/contractManage/index.vue
@@ -25,7 +25,7 @@
       </template>
     </TableCommonView>
     <!-- 鏂板缓/缂栬緫 -->
-    <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" />
+    <AddContractManageDialog v-if="editConfig.visible" :edit-common-config="editConfig" />
   </div>
 </template>
 
@@ -34,17 +34,17 @@
 import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView"
 import PagerView from "@/components/makepager/PagerView"
 import TableCommonView from "@/components/makepager/TableCommonView"
-import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog"
+import AddContractManageDialog from "@/views/sales/contractManage/AddContractManageDialog"
 
 export default {
-  name: "ContractManage ",
+  name: "ContractManage",
   props: {},
   components: {
     SearchCommonView,
     PublicFunctionBtnView,
     PagerView,
     TableCommonView,
-    AddSalesLeadDialog
+    AddContractManageDialog
   },
   computed: {
     searchCommonHeight() {
@@ -59,8 +59,8 @@
         { value: "2", label: "宸叉壒鍑�" },
         { value: "3", label: "瀹℃壒涓�" },
         { value: "4", label: "鏈彁浜�" },
-        { value: "3", label: "宸查┏鍥�" },
-        { value: "4", label: "宸叉嫆缁�" }
+        { value: "5", label: "宸查┏鍥�" },
+        { value: "6", label: "宸叉嫆缁�" }
       ],
       searchOptions: [],
       operatesList: [
@@ -115,20 +115,14 @@
       this.editConfig.title = "鏂板缓"
       this.editConfig.infomation = {
         customName: "",
-        saleLeadNumber: "LEA50",
-        contactName: "",
-        contactDuties: "",
-        phoneNumber: "",
-        businessStatus: "鏂板缓",
-        businessSource: "1",
+        documentNumber: "ZDYBD01-3",
         owner: "",
-        position: "",
-        map: "",
-        country: "1",
-        province: "1",
-        city: "1",
-        region: "1",
-        address: ""
+        contractStatus: "",
+        salesQuotation: "",
+        approvalWorkflow: "",
+        approvalSteps: "",
+        approvalPerson: "",
+        approvalOpinion: ""
       }
     },
     // 缂栬緫
@@ -137,21 +131,15 @@
       this.editConfig.visible = true
       this.editConfig.title = "缂栬緫"
       this.editConfig.infomation = {
-        customName: row.customName,
-        saleLeadNumber: row.saleLeadNumber,
-        contactName: row.contactName,
-        contactDuties: row.contactDuties,
-        phoneNumber: row.phoneNumber,
-        businessStatus: "鏂板缓",
-        businessSource: row.businessSource,
-        owner: row.owner,
-        position: "",
-        map: "",
-        country: "1",
-        province: "1",
-        city: "1",
-        region: "1",
-        address: ""
+        customName: "",
+        documentNumber: "TKD20230521-12",
+        owner: "",
+        contractStatus: "",
+        salesQuotation: "",
+        approvalWorkflow: "",
+        approvalSteps: "",
+        approvalPerson: "",
+        approvalOpinion: ""
       }
     }
   }
diff --git a/src/views/sales/generatePlan/AddGeneratePlanDialog.vue b/src/views/sales/generatePlan/AddGeneratePlanDialog.vue
new file mode 100644
index 0000000..573207a
--- /dev/null
+++ b/src/views/sales/generatePlan/AddGeneratePlanDialog.vue
@@ -0,0 +1,279 @@
+<template>
+  <div class="add-generate-plan">
+    <el-dialog
+      :title="editCommonConfig.title + '鐢熸垚璁″垝'"
+      :visible.sync="editConfig.visible"
+      :width="dialogWidth"
+      :before-close="handleClose"
+    >
+      <el-form
+        ref="form"
+        :model="editConfig.infomation"
+        :rules="rules"
+        label-position="right"
+        label-width="308px"
+        size="mini"
+      >
+        <!-- 淇℃伅 -->
+        <div class="basic-info">
+          <!-- 鍩烘湰淇℃伅 -->
+          <div class="basic-info-title">鍩烘湰淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col v-if="isUnflod" :span="12">
+                <el-form-item label="瀹㈡埛鍚嶇О" prop="customName">
+                  <div class="custom-name">
+                    <el-input v-model="editConfig.infomation.customName"></el-input>
+                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div>
+                    <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col v-if="isUnflod" :span="12">
+                <el-form-item label="鍗曟嵁缂栧彿" prop="documentNumber">
+                  <el-input v-model="editConfig.infomation.documentNumber"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col v-if="isUnflod" :span="12">
+                <el-form-item label="璐熻矗浜�" prop="owner">
+                  <el-select v-model="editConfig.infomation.owner" placeholder="璇烽�夋嫨" size="mini" style="width: 63%">
+                    <el-option v-for="item in ownerOptions" :key="item.value" :label="item.label" :value="item.value">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閿�鍞瓙鍗�" prop="subOrder">
+                  <div class="custom-name">
+                    <el-input v-model="editConfig.infomation.subOrder"></el-input>
+                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div>
+                    <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閿�鍞槑缁嗗崟" prop="salesDetails">
+                  <div class="custom-name">
+                    <el-input v-model="editConfig.infomation.salesDetails"></el-input>
+                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div>
+                    <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 璁″垝鐩稿叧 -->
+          <div v-if="isUnflod" class="basic-info-title">璁″垝鐩稿叧</div>
+          <div class="address-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="璁″垝寮�濮嬫椂闂�" prop="planStartTime">
+                  <el-date-picker v-model="editConfig.infomation.planStartTime" type="datetime" default-time="12:00:00">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="璁″垝鎴鏃堕棿" prop="planDeadline">
+                  <el-date-picker v-model="editConfig.infomation.planDeadline" type="datetime" default-time="12:00:00">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item label="璁″垝鍐呭" prop="refundReason">
+                  <el-input
+                    type="textarea"
+                    :autosize="{ minRows: 2 }"
+                    v-model="editConfig.infomation.refundReason"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 闄勪欢淇℃伅 -->
+          <div v-if="isUnflod" class="basic-info-title">闄勪欢淇℃伅</div>
+          <div v-if="isUnflod" class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
+                  <div class="annex-view">
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
+                    <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
+                  </div>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 灞曞紑鏀惰捣 -->
+          <div v-if="editConfig.title === '鏂板缓'" class="unflod-collapse" @click="unflodCollapseClick">
+            <div>{{ unflodCollapseStr }}</div>
+            <div v-if="isUnflod"><i class="el-icon-arrow-up"></i></div>
+            <div v-else><i class="el-icon-arrow-down"></i></div>
+          </div>
+        </div>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆瓨</el-button>
+        <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "AddGeneratePlanDialog",
+  props: {
+    editCommonConfig: {
+      type: Object,
+      default: () => {
+        return {
+          visible: false,
+          title: "鏂板缓",
+          infomation: {
+            customName: "",
+            documentNumber: "",
+            owner: "",
+            subOrder: "",
+            salesDetails: "",
+            planStartTime: "",
+            planDeadline: ""
+          }
+        }
+      }
+    }
+  },
+  components: {},
+  computed: {},
+  data() {
+    return {
+      dialogWidth: "80%",
+      editConfig: this.editCommonConfig,
+      rules: {
+        documentNumber: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+        owner: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }]
+      },
+      ownerOptions: [
+        // 璐熻矗浜�
+        { value: "1", label: "BOSS" },
+        { value: "2", label: "Mia" },
+        { value: "3", label: "璐㈠姟" },
+        { value: "4", label: "甯傚満" },
+        { value: "5", label: "绯荤粺绠$悊鍛�" },
+        { value: "6", label: "閿�鍞�" },
+        { value: "7", label: "閿�鍞�荤洃" }
+      ],
+      unflodCollapseStr: "鏀惰捣",
+      isUnflod: true
+    }
+  },
+  created() {},
+  methods: {
+    handleClose() {
+      this.editConfig.visible = false
+    },
+    // 娣诲姞闄勪欢
+    addAnnexClick() {},
+    // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡
+    setFormatClick() {},
+    // 灞曞紑鏀惰捣
+    unflodCollapseClick() {
+      if (this.unflodCollapseStr === "鏀惰捣") {
+        this.unflodCollapseStr = "灞曞紑鏇村鏍忕洰"
+        this.isUnflod = false
+      } else {
+        this.unflodCollapseStr = "鏀惰捣"
+        this.isUnflod = true
+      }
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.add-generate-plan {
+  .basic-info {
+    .basic-info-title {
+      background-color: #f4f8fe;
+      padding-left: 10px;
+      font-size: 15px;
+      font-weight: bold;
+      color: #666;
+      height: 42px;
+      line-height: 42px;
+    }
+    .basic-info-view {
+      margin-top: 10px;
+      padding-right: 40px;
+      .custom-name {
+        display: flex;
+        .common-select-btn {
+          margin-left: 5px;
+          font-size: 18px;
+        }
+      }
+    }
+    .address-view {
+      margin-top: 10px;
+      padding-right: 40px;
+    }
+    .annex-view {
+      display: flex;
+      color: #6166d3;
+      .setFormat {
+        margin-left: 10px;
+      }
+    }
+  }
+  .unflod-collapse {
+    display: flex;
+    height: 30px;
+    justify-content: center;
+    align-items: center;
+    color: #6166d3;
+  }
+  .dialog-footer {
+    background-color: #f5f5f5;
+    height: 55px;
+    line-height: 55px;
+  }
+}
+::v-deep {
+  .el-dialog__header {
+    padding: 12.5px 10px;
+    border-bottom: 1px solid #e5e5e5;
+    .el-dialog__title {
+      font-size: 15px;
+      color: #323232;
+      font-weight: bold;
+    }
+  }
+  .el-dialog__body {
+    padding: 0px;
+  }
+  .el-dialog__footer {
+    padding: 0px;
+    text-align: center;
+    box-sizing: border-box;
+    border-top: 1px solid #dadee5;
+  }
+  .product-view {
+    .el-form-item__label {
+      padding: 0;
+    }
+  }
+}
+</style>
diff --git a/src/views/sales/productPlan/index.vue b/src/views/sales/generatePlan/index.vue
similarity index 76%
rename from src/views/sales/productPlan/index.vue
rename to src/views/sales/generatePlan/index.vue
index 4b9f479..5ed0740 100644
--- a/src/views/sales/productPlan/index.vue
+++ b/src/views/sales/generatePlan/index.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="product-plan">
+  <div class="generate-plan">
     <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" />
     <div class="btn-pager">
       <PublicFunctionBtnView :operates-list="operatesList" />
@@ -15,7 +15,7 @@
       </template>
     </TableCommonView>
     <!-- 鏂板缓/缂栬緫-->
-    <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" />
+    <AddGeneratePlanDialog v-if="editConfig.visible" :edit-common-config="editConfig" />
   </div>
 </template>
 
@@ -24,17 +24,17 @@
 import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView"
 import PagerView from "@/components/makepager/PagerView"
 import TableCommonView from "@/components/makepager/TableCommonView"
-import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog"
+import AddGeneratePlanDialog from "@/views/sales/generatePlan/AddGeneratePlanDialog"
 
 export default {
-  name: "ProductPlan ",
+  name: "GeneratePlan",
   props: {},
   components: {
     SearchCommonView,
     PublicFunctionBtnView,
     PagerView,
     TableCommonView,
-    AddSalesLeadDialog
+    AddGeneratePlanDialog
   },
   computed: {
     searchCommonHeight() {
@@ -49,8 +49,8 @@
         { value: "2", label: "宸叉壒鍑�" },
         { value: "3", label: "瀹℃壒涓�" },
         { value: "4", label: "鏈彁浜�" },
-        { value: "3", label: "宸查┏鍥�" },
-        { value: "4", label: "宸叉嫆缁�" }
+        { value: "5", label: "宸查┏鍥�" },
+        { value: "6", label: "宸叉嫆缁�" }
       ],
       searchOptions: [],
       operatesList: [
@@ -105,20 +105,16 @@
       this.editConfig.title = "鏂板缓"
       this.editConfig.infomation = {
         customName: "",
-        saleLeadNumber: "LEA50",
-        contactName: "",
-        contactDuties: "",
-        phoneNumber: "",
-        businessStatus: "鏂板缓",
-        businessSource: "1",
+        documentNumber: "ZDYBD04-12",
         owner: "",
-        position: "",
-        map: "",
-        country: "1",
-        province: "1",
-        city: "1",
-        region: "1",
-        address: ""
+        subOrder: "",
+        salesDetails: "",
+        planStartTime: "",
+        planDeadline: "",
+        approvalWorkflow: "",
+        approvalSteps: "",
+        approvalPerson: "",
+        approvalOpinion: ""
       }
     },
     // 缂栬緫
@@ -127,21 +123,17 @@
       this.editConfig.visible = true
       this.editConfig.title = "缂栬緫"
       this.editConfig.infomation = {
-        customName: row.customName,
-        saleLeadNumber: row.saleLeadNumber,
-        contactName: row.contactName,
-        contactDuties: row.contactDuties,
-        phoneNumber: row.phoneNumber,
-        businessStatus: "鏂板缓",
-        businessSource: row.businessSource,
-        owner: row.owner,
-        position: "",
-        map: "",
-        country: "1",
-        province: "1",
-        city: "1",
-        region: "1",
-        address: ""
+        customName: "",
+        documentNumber: "",
+        owner: "",
+        subOrder: "",
+        salesDetails: "",
+        planStartTime: "",
+        planDeadline: "",
+        approvalWorkflow: "",
+        approvalSteps: "",
+        approvalPerson: "",
+        approvalOpinion: ""
       }
     }
   }
@@ -150,7 +142,7 @@
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style lang="scss" scoped>
-.product-plan {
+.generate-plan {
   .btn-pager {
     display: flex;
     .page {
diff --git a/src/views/sales/masterOrder/AddMasterOrderDialog.vue b/src/views/sales/masterOrder/AddMasterOrderDialog.vue
index 236c0f3..307d059 100644
--- a/src/views/sales/masterOrder/AddMasterOrderDialog.vue
+++ b/src/views/sales/masterOrder/AddMasterOrderDialog.vue
@@ -67,8 +67,21 @@
             <el-row>
               <el-col :span="12">
                 <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
                   <div class="annex-view">
-                    <div @click="addAnnexClick">娣诲姞</div>
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
                     <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
                   </div>
                 </el-form-item>
diff --git a/src/views/sales/quotation/AddQuotationDialog.vue b/src/views/sales/quotation/AddQuotationDialog.vue
index 210e329..37c0246 100644
--- a/src/views/sales/quotation/AddQuotationDialog.vue
+++ b/src/views/sales/quotation/AddQuotationDialog.vue
@@ -108,8 +108,21 @@
             <el-row>
               <el-col :span="12">
                 <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
                   <div class="annex-view">
-                    <div @click="addAnnexClick">娣诲姞</div>
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
                     <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
                   </div>
                 </el-form-item>
@@ -128,7 +141,7 @@
             </div>
           </div>
           <div class="product-view">
-            <CommonFormTableView :product-table-list="productTableList" />
+            <CommonFormTableView :show-summary="showSummary" :product-table-list="productTableList" />
           </div>
           <!-- 閫夋嫨瀹℃壒娴佺▼ -->
           <div class="basic-info-title">閫夋嫨瀹℃壒娴佺▼</div>
@@ -244,22 +257,18 @@
         { value: "3", label: "娆у厓(鈧�)" }
       ], // 甯佺
       approvalWorkflowOptions: [], // 瀹℃壒娴佺▼
-      productTableList: {
-        tableData: [
-          {
-            id: "1",
-            productNumber: "123",
-            productName: "",
-            startDate: "",
-            endDate: "2016-05-02",
-            number: "",
-            address: ""
-          }
-        ]
+      productTableList: {},
+      showSummary: {
+        show: true,
+        total: true,
+        sumProp: ["other1", "other2", "other3", "other4"],
+        mergeNumber: 3
       }
     }
   },
-  created() {},
+  created() {
+    this.setTableForm()
+  },
   methods: {
     handleClose() {
       this.editConfig.visible = false
@@ -267,7 +276,39 @@
     // 娣诲姞闄勪欢
     addAnnexClick() {},
     // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡
-    setFormatClick() {}
+    setFormatClick() {},
+    setTableForm() {
+      this.productTableList = {
+        tableData: [
+          {
+            id: "1",
+            productName: "涓婃捣鏈夐檺鍏徃",
+            other0: "ZDYBD03-1",
+            other1: "12",
+            other2: "5.00",
+            other4: "3.00",
+            other3: "2.00"
+          }
+        ],
+        tableColumn: [
+          { label: "#", prop: "id", width: 40 },
+          { label: "鍚◣鍗曚环", prop: "other9", input: true },
+          { label: "浜у搧鍚嶇О", prop: "productName", input: true, isRequird: true },
+          { label: "浜у搧缂栧彿", prop: "other0" },
+          { label: "鏁伴噺", prop: "other1", input: true, isRequird: true },
+          { label: "鎶樻墸鐜�(%)", prop: "other6", input: true },
+          { label: "涓嶅惈绋庡崟浠�", prop: "other7", input: true },
+          { label: "鎶樻墸棰�", prop: "other2" },
+          { label: "绋�(閿�鍞�)", prop: "other7", input: true },
+          { label: "瀹為檯鍚◣鍗曚环", prop: "other3" },
+          { label: "涓嶅惈绋庨噾棰�", prop: "other4" },
+          { label: "浠风◣鍚堣", prop: "other3", input: true },
+          { label: "鎻忚堪", prop: "other8" },
+          { label: "婧愬崟绫诲瀷", prop: "other5" },
+          { label: "婧愬崟", prop: "other6" }
+        ]
+      }
+    }
   }
 }
 </script>
diff --git a/src/views/sales/refundForm/AddRefundFormDialog.vue b/src/views/sales/refundForm/AddRefundFormDialog.vue
new file mode 100644
index 0000000..7b4587d
--- /dev/null
+++ b/src/views/sales/refundForm/AddRefundFormDialog.vue
@@ -0,0 +1,408 @@
+<template>
+  <div class="add-refund-form">
+    <el-dialog
+      :title="editCommonConfig.title + '閿�鍞��娆惧崟'"
+      :visible.sync="editConfig.visible"
+      :width="dialogWidth"
+      :before-close="handleClose"
+    >
+      <el-form
+        ref="form"
+        :model="editConfig.infomation"
+        :rules="rules"
+        label-position="right"
+        label-width="308px"
+        size="mini"
+        style="height: 60vh; overflow-x: hidden"
+      >
+        <!-- 淇℃伅 -->
+        <div class="basic-info">
+          <!-- 鍩烘湰淇℃伅 -->
+          <div class="basic-info-title">鍩烘湰淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="瀹㈡埛鍚嶇О" prop="customName">
+                  <div class="custom-name">
+                    <el-input v-model="editConfig.infomation.customName"></el-input>
+                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div>
+                    <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閫�娆惧崟缂栧彿" prop="refundOrderNo">
+                  <el-input v-model="editConfig.infomation.refundOrderNo"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閫夋嫨婧愬崟" prop="selSourceOrder">
+                  <el-select v-model="editConfig.infomation.selSourceOrder" size="mini" style="width: 63%">
+                    <el-option
+                      v-for="item in selSourceOrderOptions"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閿�鍞礋璐d汉" prop="salesHead">
+                  <el-select
+                    v-model="editConfig.infomation.salesHead"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 63%"
+                  >
+                    <el-option
+                      v-for="item in salesHeadOptions"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閫�娆炬棩鏈�" prop="refundDate">
+                  <el-date-picker v-model="editConfig.infomation.refundDate" type="date" placeholder="閫夋嫨鏃ユ湡">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="浠樻鏂瑰紡" prop="paymentMethod">
+                  <CommonSelectView
+                    :common-value="editConfig.infomation.paymentMethod"
+                    :common-options="paymentMethodOptions"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="璐︽埛" prop="account">
+                  <CommonSelectView :common-value="editConfig.infomation.account" :common-options="accountOptions" />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鏄惁寮�绁�" prop="whetherInvoicing">
+                  <CommonSelectView
+                    :common-value="editConfig.infomation.whetherInvoicing"
+                    :common-options="whetherInvoicingOptions"
+                  />
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 澶囨敞淇℃伅 -->
+          <div class="basic-info-title">澶囨敞淇℃伅</div>
+          <div class="address-view">
+            <el-row>
+              <el-col :span="24">
+                <el-form-item label="閫�娆惧師鍥�" prop="refundReason">
+                  <el-input
+                    type="textarea"
+                    :autosize="{ minRows: 2 }"
+                    v-model="editConfig.infomation.refundReason"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 闄勪欢淇℃伅 -->
+          <div class="basic-info-title">闄勪欢淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
+                  <div class="annex-view">
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
+                    <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
+                  </div>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 浜у搧绠$悊 -->
+          <div class="basic-info-title" style="display: flex">
+            浜у搧绠$悊
+            <div style="margin-left: 400px">
+              甯佺
+              <el-select v-model="editConfig.infomation.currency" placeholder="璇烽�夋嫨" size="mini" style="width: 63%">
+                <el-option v-for="item in currencyOptions" :key="item.value" :label="item.label" :value="item.value">
+                </el-option>
+              </el-select>
+            </div>
+          </div>
+          <div class="product-view">
+            <CommonFormTableView :show-summary="showSummary" :product-table-list="productTableList" />
+          </div>
+          <!-- 閫夋嫨瀹℃壒娴佺▼ -->
+          <div v-if="editConfig.title === '鏂板缓'" class="basic-info-title">閫夋嫨瀹℃壒娴佺▼</div>
+          <div v-if="editConfig.title === '鏂板缓'" class="basic-info-view">
+            <el-row>
+              <el-col :span="20">
+                <el-form-item label="瀹℃壒娴佺▼" prop="approvalWorkflow">
+                  <el-select
+                    v-model="editConfig.infomation.approvalWorkflow"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 100%"
+                  >
+                    <el-option
+                      v-for="item in approvalWorkflowOptions"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="20">
+                <el-form-item label="瀹℃壒姝ラ" prop="approvalSteps">
+                  <el-input v-model="editConfig.infomation.approvalSteps"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="20">
+                <el-form-item label="瀹℃壒浜�" prop="approvalPerson">
+                  <el-input v-model="editConfig.infomation.approvalPerson"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="20">
+                <el-form-item label="瀹℃壒鎰忚" prop="approvalOpinion">
+                  <el-input v-model="editConfig.infomation.approvalOpinion" type="textarea" :rows="2"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+        </div>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆苟鎻愪氦瀹℃壒</el-button>
+        <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆瓨</el-button>
+        <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import CommonSelectView from "@/components/makepager/CommonSelectView"
+import CommonFormTableView from "@/components/makepager/CommonFormTableView"
+export default {
+  name: "AddRefundFormDialog",
+  props: {
+    editCommonConfig: {
+      type: Object,
+      default: () => {
+        return {
+          visible: false,
+          title: "鏂板缓",
+          infomation: {
+            customName: "",
+            refundOrderNo: "TKD20230521-12",
+            selSourceOrder: "",
+            salesHead: "",
+            refundDate: "",
+            paymentMethod: "",
+            account: "",
+            whetherInvoicing: "",
+            refundReason: "",
+            approvalWorkflow: "",
+            approvalSteps: "",
+            approvalPerson: "",
+            approvalOpinion: ""
+          }
+        }
+      }
+    }
+  },
+  components: { CommonSelectView, CommonFormTableView },
+  computed: {},
+  data() {
+    return {
+      dialogWidth: "80%",
+      editConfig: this.editCommonConfig,
+      rules: {
+        customName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+        refundOrderNo: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+        refundDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
+        salesHead: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
+        account: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }]
+      },
+      salesHeadOptions: [
+        // 閿�鍞礋璐d汉
+        { value: "1", label: "BOSS" },
+        { value: "2", label: "Mia" },
+        { value: "3", label: "璐㈠姟" },
+        { value: "4", label: "甯傚満" },
+        { value: "5", label: "绯荤粺绠$悊鍛�" },
+        { value: "6", label: "閿�鍞�" },
+        { value: "7", label: "閿�鍞�荤洃" }
+      ],
+      selSourceOrderOptions: [{ value: "1", label: "閿�鍞��璐у崟" }], // 閫夋嫨婧愬崟
+      paymentMethodOptions: [
+        { value: "1", label: "鐜伴噾" },
+        { value: "2", label: "鏀エ" },
+        { value: "3", label: "鐢垫眹" },
+        { value: "4", label: "閭斂姹囨" },
+        { value: "5", label: "缃戜笂閾惰" },
+        { value: "6", label: "鍏朵粬" }
+      ], // 浠樻鏂瑰紡
+      accountOptions: [{ value: "1", label: "浜烘皯甯佽处鎴�" }], // 璐︽埛
+      whetherInvoicingOptions: [
+        { value: "1", label: "鏈紑" },
+        { value: "2", label: "宸插紑" }
+      ], // 鏄惁寮�绁�
+      currencyOptions: [
+        { value: "1", label: "浜烘皯甯�(楼)" },
+        { value: "2", label: "鑻遍晳(拢)" },
+        { value: "3", label: "娆у厓(鈧�)" }
+      ], // 甯佺
+      approvalWorkflowOptions: [], // 瀹℃壒娴佺▼
+      productTableList: {},
+      showSummary: {
+        show: true,
+        total: true,
+        sumProp: ["other1", "other2", "other3", "other4"],
+        mergeNumber: 5
+      }
+    }
+  },
+  created() {
+    this.setTableForm()
+  },
+  methods: {
+    setTableForm() {
+      this.productTableList = {
+        tableData: [
+          {
+            id: "1",
+            productName: "涓婃捣鏈夐檺鍏徃",
+            other0: "ZDYBD03-1",
+            other1: "12",
+            other2: "5.00",
+            other4: "3.00",
+            other3: "2.00"
+          }
+        ],
+        tableColumn: [
+          { label: "#", prop: "id", width: 40 },
+          { label: "浜у搧鍚嶇О", prop: "productName", input: true, isRequird: true },
+          { label: "浜у搧缂栧彿", prop: "other0" },
+          { label: "婧愬崟绫诲瀷", prop: "other5" },
+          { label: "婧愬崟", prop: "other6" },
+          { label: "鏁伴噺", prop: "other1", input: true, isRequird: true },
+          { label: "鍚◣鍗曚环", prop: "other9", input: true },
+          { label: "涓嶅惈绋庡崟浠�", prop: "other7", input: true },
+          { label: "鎶樻墸鐜�(%)", prop: "other6", input: true },
+          { label: "鎶樻墸棰�", prop: "other2" },
+          { label: "绋�(閿�鍞�)", prop: "other7", input: true },
+          { label: "瀹為檯鍚◣鍗曚环", prop: "other3" },
+          { label: "涓嶅惈绋庨噾棰�", prop: "other4" },
+          { label: "浠风◣鍚堣", prop: "other3", input: true },
+          { label: "鎻忚堪", prop: "other8" }
+        ]
+      }
+    },
+    handleClose() {
+      this.editConfig.visible = false
+    },
+    // 娣诲姞闄勪欢
+    addAnnexClick() {},
+    // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡
+    setFormatClick() {}
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.add-refund-form {
+  .basic-info {
+    .basic-info-title {
+      background-color: #f4f8fe;
+      padding-left: 10px;
+      font-size: 15px;
+      font-weight: bold;
+      color: #666;
+      height: 42px;
+      line-height: 42px;
+    }
+    .basic-info-view {
+      margin-top: 10px;
+      padding-right: 40px;
+      .custom-name {
+        display: flex;
+        .common-select-btn {
+          margin-left: 5px;
+          font-size: 18px;
+        }
+      }
+    }
+    .address-view {
+      margin-top: 10px;
+      padding-right: 40px;
+    }
+    .annex-view {
+      display: flex;
+      color: #6166d3;
+      .setFormat {
+        margin-left: 10px;
+      }
+    }
+  }
+  .unflod-collapse {
+    display: flex;
+    height: 30px;
+    justify-content: center;
+    align-items: center;
+    color: #6166d3;
+  }
+  .dialog-footer {
+    background-color: #f5f5f5;
+    height: 55px;
+    line-height: 55px;
+  }
+}
+::v-deep {
+  .el-dialog__header {
+    padding: 12.5px 10px;
+    border-bottom: 1px solid #e5e5e5;
+    .el-dialog__title {
+      font-size: 15px;
+      color: #323232;
+      font-weight: bold;
+    }
+  }
+  .el-dialog__body {
+    padding: 0px;
+  }
+  .el-dialog__footer {
+    padding: 0px;
+    text-align: center;
+    box-sizing: border-box;
+    border-top: 1px solid #dadee5;
+  }
+  .product-view {
+    .el-form-item__label {
+      padding: 0;
+    }
+  }
+}
+</style>
diff --git a/src/views/sales/refundForm/index.vue b/src/views/sales/refundForm/index.vue
index 724699f..14ecec0 100644
--- a/src/views/sales/refundForm/index.vue
+++ b/src/views/sales/refundForm/index.vue
@@ -15,7 +15,7 @@
       </template>
     </TableCommonView>
     <!-- 鏂板缓/缂栬緫 -->
-    <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" />
+    <AddRefundFormDialog v-if="editConfig.visible" :edit-common-config="editConfig" />
   </div>
 </template>
 
@@ -24,7 +24,7 @@
 import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView"
 import PagerView from "@/components/makepager/PagerView"
 import TableCommonView from "@/components/makepager/TableCommonView"
-import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog"
+import AddRefundFormDialog from "@/views/sales/refundForm/AddRefundFormDialog"
 
 export default {
   name: "RefundForm",
@@ -34,7 +34,7 @@
     PublicFunctionBtnView,
     PagerView,
     TableCommonView,
-    AddSalesLeadDialog
+    AddRefundFormDialog
   },
   computed: {
     searchCommonHeight() {
@@ -111,20 +111,18 @@
       this.editConfig.title = "鏂板缓"
       this.editConfig.infomation = {
         customName: "",
-        saleLeadNumber: "LEA50",
-        contactName: "",
-        contactDuties: "",
-        phoneNumber: "",
-        businessStatus: "鏂板缓",
-        businessSource: "1",
-        owner: "",
-        position: "",
-        map: "",
-        country: "1",
-        province: "1",
-        city: "1",
-        region: "1",
-        address: ""
+        refundOrderNo: "TKD20230521-12",
+        selSourceOrder: "1",
+        salesHead: "5",
+        refundDate: "",
+        paymentMethod: "1",
+        account: "1",
+        whetherInvoicing: "1",
+        refundReason: "",
+        approvalWorkflow: "",
+        approvalSteps: "",
+        approvalPerson: "",
+        approvalOpinion: ""
       }
     },
     // 缂栬緫
@@ -133,21 +131,19 @@
       this.editConfig.visible = true
       this.editConfig.title = "缂栬緫"
       this.editConfig.infomation = {
-        customName: row.customName,
-        saleLeadNumber: row.saleLeadNumber,
-        contactName: row.contactName,
-        contactDuties: row.contactDuties,
-        phoneNumber: row.phoneNumber,
-        businessStatus: "鏂板缓",
-        businessSource: row.businessSource,
-        owner: row.owner,
-        position: "",
-        map: "",
-        country: "1",
-        province: "1",
-        city: "1",
-        region: "1",
-        address: ""
+        customName: "",
+        refundOrderNo: "TKD20230521-12",
+        selSourceOrder: "",
+        salesHead: "",
+        refundDate: "",
+        paymentMethod: "",
+        account: "",
+        whetherInvoicing: "",
+        refundReason: "",
+        approvalWorkflow: "",
+        approvalSteps: "",
+        approvalPerson: "",
+        approvalOpinion: ""
       }
     }
   }
diff --git a/src/views/sales/salesDetails/AddSalesDetailsDialog.vue b/src/views/sales/salesDetails/AddSalesDetailsDialog.vue
index a79366c..90bc152 100644
--- a/src/views/sales/salesDetails/AddSalesDetailsDialog.vue
+++ b/src/views/sales/salesDetails/AddSalesDetailsDialog.vue
@@ -154,8 +154,21 @@
             <el-row>
               <el-col :span="12">
                 <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
                   <div class="annex-view">
-                    <div @click="addAnnexClick">娣诲姞</div>
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
                     <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
                   </div>
                 </el-form-item>
@@ -174,7 +187,7 @@
             </div>
           </div>
           <div class="product-view">
-            <CommonFormTableView :product-table-list="productTableList" />
+            <CommonFormTableView :show-summary="showSummary" :product-table-list="productTableList" />
           </div>
           <!-- 閫夋嫨瀹℃壒娴佺▼ -->
           <div v-if="editConfig.title === '鏂板缓'" class="basic-info-title">閫夋嫨瀹℃壒娴佺▼</div>
@@ -299,23 +312,45 @@
         { value: "3", label: "娆у厓(鈧�)" }
       ], // 甯佺
       approvalWorkflowOptions: [], // 瀹℃壒娴佺▼
-      productTableList: {
-        tableData: [
-          {
-            id: "1",
-            productNumber: "123",
-            productName: "",
-            startDate: "",
-            endDate: "2016-05-02",
-            number: "",
-            address: ""
-          }
-        ]
+      productTableList: {},
+      showSummary: {
+        show: true,
+        total: true,
+        sumProp: ["other1", "other7"],
+        mergeNumber: 2
       }
     }
   },
-  created() {},
+  created() {
+    this.setTableForm()
+  },
   methods: {
+    setTableForm() {
+      this.productTableList = {
+        tableData: [
+          {
+            id: "1",
+            productName: "涓婃捣鏈夐檺鍏徃",
+            other0: "ZDYBD03-1",
+            other1: "12",
+            other2: "",
+            other6: "3.00",
+            other7: "2.00"
+          }
+        ],
+        tableColumn: [
+          { label: "#", prop: "id", width: 40 },
+          { label: "浜у搧鍚嶇О", prop: "productName", input: true, isRequird: true },
+          { label: "浜у搧缂栧彿", prop: "other0" },
+          { label: "鏁伴噺", prop: "other1", input: true, isRequird: true },
+          { label: "鍚◣鍗曚环", prop: "other6", input: true },
+          { label: "浠风◣鍚堣", prop: "other7", input: true },
+          { label: "鎻忚堪", prop: "other8" },
+          { label: "婧愬崟绫诲瀷", prop: "other2" },
+          { label: "婧愬崟", prop: "other3" }
+        ]
+      }
+    },
     handleClose() {
       this.editConfig.visible = false
     },
diff --git a/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue b/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue
index f11fa15..cf9379e 100644
--- a/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue
+++ b/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue
@@ -338,8 +338,21 @@
             <el-row>
               <el-col :span="12">
                 <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
                   <div class="annex-view">
-                    <div @click="addAnnexClick">娣诲姞</div>
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
                     <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
                   </div>
                 </el-form-item>
diff --git a/src/views/sales/salesReturn/AddSalesReturnDialog.vue b/src/views/sales/salesReturn/AddSalesReturnDialog.vue
new file mode 100644
index 0000000..3e1bc1c
--- /dev/null
+++ b/src/views/sales/salesReturn/AddSalesReturnDialog.vue
@@ -0,0 +1,357 @@
+<template>
+  <div class="add-sales-return">
+    <el-dialog
+      :title="editCommonConfig.title + '閿�鍞��璐у崟'"
+      :visible.sync="editConfig.visible"
+      :width="dialogWidth"
+      :before-close="handleClose"
+    >
+      <el-form
+        ref="form"
+        :model="editConfig.infomation"
+        :rules="rules"
+        label-position="right"
+        label-width="308px"
+        size="mini"
+        style="height: 60vh; overflow-x: hidden"
+      >
+        <!-- 淇℃伅 -->
+        <div class="basic-info">
+          <!-- 鍩烘湰淇℃伅 -->
+          <div class="basic-info-title">鍩烘湰淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="瀹㈡埛鍚嶇О" prop="customName">
+                  <div class="custom-name">
+                    <el-input v-model="editConfig.infomation.customName"></el-input>
+                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div>
+                    <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閿�鍞��璐у崟缂栧彿" prop="salesReturnOrderNo">
+                  <el-input v-model="editConfig.infomation.salesReturnOrderNo"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閫夋嫨婧愬崟" prop="selSourceOrder">
+                  <el-select v-model="editConfig.infomation.selSourceOrder" size="mini" style="width: 63%">
+                    <el-option
+                      v-for="item in selSourceOrderOptions"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閫�鍏ヤ粨搴�" prop="returnWarehouse">
+                  <el-select v-model="editConfig.infomation.returnWarehouse" size="mini" style="width: 63%">
+                    <el-option
+                      v-for="item in returnWarehouseOptions"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閿�鍞礋璐d汉" prop="salesHead">
+                  <el-select
+                    v-model="editConfig.infomation.salesHead"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 63%"
+                  >
+                    <el-option
+                      v-for="item in salesHeadOptions"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閫�璐ф棩鏈�" prop="returnDate">
+                  <el-date-picker v-model="editConfig.infomation.returnDate" type="date" placeholder="閫夋嫨鏃ユ湡">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 鍔ㄦ�佷俊鎭� -->
+          <div class="basic-info-title">鍔ㄦ�佷俊鎭�</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="鐘舵��" prop="state">
+                  <CommonSelectView :common-value="editConfig.infomation.state" :common-options="stateOptions" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 澶囨敞淇℃伅 -->
+          <div class="basic-info-title">澶囨敞淇℃伅</div>
+          <div class="address-view">
+            <el-row>
+              <el-col :span="24">
+                <el-form-item label="閫�璐у師鍥�" prop="returnReason">
+                  <el-input
+                    type="textarea"
+                    :autosize="{ minRows: 2 }"
+                    v-model="editConfig.infomation.returnReason"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 闄勪欢淇℃伅 -->
+          <div class="basic-info-title">闄勪欢淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
+                  <div class="annex-view">
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
+                    <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
+                  </div>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 浜у搧绠$悊 -->
+          <div class="basic-info-title" style="display: flex">
+            浜у搧绠$悊
+            <div style="margin-left: 400px">
+              甯佺
+              <el-select v-model="editConfig.infomation.currency" placeholder="璇烽�夋嫨" size="mini" style="width: 63%">
+                <el-option v-for="item in currencyOptions" :key="item.value" :label="item.label" :value="item.value">
+                </el-option>
+              </el-select>
+            </div>
+          </div>
+          <div class="product-view">
+            <CommonFormTableView :show-summary="showSummary" :product-table-list="productTableList" />
+          </div>
+        </div>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆瓨</el-button>
+        <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import CommonSelectView from "@/components/makepager/CommonSelectView"
+import CommonFormTableView from "@/components/makepager/CommonFormTableView"
+export default {
+  name: "AddSalesReturnDialog",
+  props: {
+    editCommonConfig: {
+      type: Object,
+      default: () => {
+        return {
+          visible: false,
+          title: "鏂板缓",
+          infomation: {
+            customName: "",
+            salesReturnOrderNo: "THD20230521-11",
+            selSourceOrder: "1",
+            returnWarehouse: "1",
+            salesHead: "5",
+            returnDate: "",
+            state: "",
+            returnReason: ""
+          }
+        }
+      }
+    }
+  },
+  components: { CommonSelectView, CommonFormTableView },
+  computed: {},
+  data() {
+    return {
+      dialogWidth: "80%",
+      editConfig: this.editCommonConfig,
+      rules: {
+        salesReturnOrderNo: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+        returnWarehouse: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
+        salesHead: [{ required: true, message: "璇烽�夋嫨璐熻矗浜�", trigger: "change" }]
+      },
+      salesHeadOptions: [
+        // 閿�鍞礋璐d汉
+        { value: "1", label: "BOSS" },
+        { value: "2", label: "Mia" },
+        { value: "3", label: "璐㈠姟" },
+        { value: "4", label: "甯傚満" },
+        { value: "5", label: "绯荤粺绠$悊鍛�" },
+        { value: "6", label: "閿�鍞�" },
+        { value: "7", label: "閿�鍞�荤洃" }
+      ],
+      selSourceOrderOptions: [{ value: "1", label: "閿�鍞槑缁嗗崟" }], // 閫夋嫨婧愬崟
+      returnWarehouseOptions: [
+        { value: "1", label: "鎬讳粨" },
+        { value: "2", label: "璧犲搧浠�" },
+        { value: "3", label: "鍏朵粬浠�" }
+      ], // 閫�鍏ヤ粨搴�
+      stateOptions: [], // 鐘舵��
+      currencyOptions: [
+        { value: "1", label: "浜烘皯甯�(楼)" },
+        { value: "2", label: "鑻遍晳(拢)" },
+        { value: "3", label: "娆у厓(鈧�)" }
+      ], // 甯佺
+      productTableList: {},
+      showSummary: {
+        show: true,
+        total: false,
+        refundable: true,
+        sumProp: ["other1", "other2", "other3", "other4"],
+        mergeNumber: 4
+      }
+    }
+  },
+  created() {
+    this.setTableForm()
+  },
+  methods: {
+    setTableForm() {
+      this.productTableList = {
+        tableData: [
+          {
+            id: "1",
+            productName: "涓婃捣鏈夐檺鍏徃",
+            other0: "ZDYBD03-1",
+            other1: "12",
+            other2: "5.00",
+            other4: "3.00",
+            other3: "2.00"
+          }
+        ],
+        tableColumn: [
+          { label: "#", prop: "id", width: 40 },
+          { label: "浜у搧鍚嶇О", prop: "productName", input: true, isRequird: true },
+          { label: "浜у搧缂栧彿", prop: "other0" },
+          { label: "婧愬崟绫诲瀷", prop: "other5" },
+          { label: "婧愬崟", prop: "other6" },
+          { label: "鏁伴噺", prop: "other1", input: true, isRequird: true },
+          { label: "鍚◣鍗曚环", prop: "other9", input: true },
+          { label: "涓嶅惈绋庡崟浠�", prop: "other7", input: true },
+          { label: "鎶樻墸鐜�(%)", prop: "other6", input: true },
+          { label: "鎶樻墸棰�", prop: "other2" },
+          { label: "绋�(閿�鍞�)", prop: "other7", input: true },
+          { label: "瀹為檯鍚◣鍗曚环", prop: "other3" },
+          { label: "涓嶅惈绋庨噾棰�", prop: "other4" },
+          { label: "浠风◣鍚堣", prop: "other3", input: true },
+          { label: "鎻忚堪", prop: "other8" }
+        ]
+      }
+    },
+    handleClose() {
+      this.editConfig.visible = false
+    },
+    // 娣诲姞闄勪欢
+    addAnnexClick() {},
+    // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡
+    setFormatClick() {}
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.add-sales-return {
+  .basic-info {
+    .basic-info-title {
+      background-color: #f4f8fe;
+      padding-left: 10px;
+      font-size: 15px;
+      font-weight: bold;
+      color: #666;
+      height: 42px;
+      line-height: 42px;
+    }
+    .basic-info-view {
+      margin-top: 10px;
+      padding-right: 40px;
+      .custom-name {
+        display: flex;
+        .common-select-btn {
+          margin-left: 5px;
+          font-size: 18px;
+        }
+      }
+    }
+    .address-view {
+      margin-top: 10px;
+      padding-right: 40px;
+    }
+    .annex-view {
+      display: flex;
+      color: #6166d3;
+      .setFormat {
+        margin-left: 10px;
+      }
+    }
+  }
+  .unflod-collapse {
+    display: flex;
+    height: 30px;
+    justify-content: center;
+    align-items: center;
+    color: #6166d3;
+  }
+  .dialog-footer {
+    background-color: #f5f5f5;
+    height: 55px;
+    line-height: 55px;
+  }
+}
+::v-deep {
+  .el-dialog__header {
+    padding: 12.5px 10px;
+    border-bottom: 1px solid #e5e5e5;
+    .el-dialog__title {
+      font-size: 15px;
+      color: #323232;
+      font-weight: bold;
+    }
+  }
+  .el-dialog__body {
+    padding: 0px;
+  }
+  .el-dialog__footer {
+    padding: 0px;
+    text-align: center;
+    box-sizing: border-box;
+    border-top: 1px solid #dadee5;
+  }
+  .product-view {
+    .el-form-item__label {
+      padding: 0;
+    }
+  }
+}
+</style>
diff --git a/src/views/sales/salesReturn/index.vue b/src/views/sales/salesReturn/index.vue
index 7029c18..bce9ea1 100644
--- a/src/views/sales/salesReturn/index.vue
+++ b/src/views/sales/salesReturn/index.vue
@@ -15,7 +15,7 @@
       </template>
     </TableCommonView>
     <!-- 鏂板缓/缂栬緫 -->
-    <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" />
+    <AddSalesReturnDialog v-if="editConfig.visible" :edit-common-config="editConfig" />
   </div>
 </template>
 
@@ -24,7 +24,7 @@
 import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView"
 import PagerView from "@/components/makepager/PagerView"
 import TableCommonView from "@/components/makepager/TableCommonView"
-import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog"
+import AddSalesReturnDialog from "@/views/sales/salesReturn/AddSalesReturnDialog"
 
 export default {
   name: "SalesReturn",
@@ -34,7 +34,7 @@
     PublicFunctionBtnView,
     PagerView,
     TableCommonView,
-    AddSalesLeadDialog
+    AddSalesReturnDialog
   },
   computed: {
     searchCommonHeight() {
@@ -49,7 +49,7 @@
         { value: "2", label: "涓" },
         { value: "3", label: "缁撴潫" },
         { value: "4", label: "宸插叆搴�" },
-        { value: "4", label: "鏈叆搴�" }
+        { value: "5", label: "鏈叆搴�" }
       ],
       searchOptions: [],
       operatesList: [
@@ -112,20 +112,13 @@
       this.editConfig.title = "鏂板缓"
       this.editConfig.infomation = {
         customName: "",
-        saleLeadNumber: "LEA50",
-        contactName: "",
-        contactDuties: "",
-        phoneNumber: "",
-        businessStatus: "鏂板缓",
-        businessSource: "1",
-        owner: "",
-        position: "",
-        map: "",
-        country: "1",
-        province: "1",
-        city: "1",
-        region: "1",
-        address: ""
+        salesReturnOrderNo: "THD20230521-11",
+        selSourceOrder: "1",
+        returnWarehouse: "1",
+        salesHead: "5",
+        returnDate: "",
+        state: "",
+        returnReason: ""
       }
     },
     // 缂栬緫
@@ -134,21 +127,14 @@
       this.editConfig.visible = true
       this.editConfig.title = "缂栬緫"
       this.editConfig.infomation = {
-        customName: row.customName,
-        saleLeadNumber: row.saleLeadNumber,
-        contactName: row.contactName,
-        contactDuties: row.contactDuties,
-        phoneNumber: row.phoneNumber,
-        businessStatus: "鏂板缓",
-        businessSource: row.businessSource,
-        owner: row.owner,
-        position: "",
-        map: "",
-        country: "1",
-        province: "1",
-        city: "1",
-        region: "1",
-        address: ""
+        customName: "",
+        salesReturnOrderNo: "THD20230521-11",
+        selSourceOrder: "",
+        returnWarehouse: "",
+        salesHead: "",
+        returnDate: "",
+        state: "",
+        returnReason: ""
       }
     }
   }
diff --git a/src/views/sales/subOrder/AddSubOrderDialog.vue b/src/views/sales/subOrder/AddSubOrderDialog.vue
index fd6c74e..4e198db 100644
--- a/src/views/sales/subOrder/AddSubOrderDialog.vue
+++ b/src/views/sales/subOrder/AddSubOrderDialog.vue
@@ -59,8 +59,21 @@
             <el-row>
               <el-col :span="12">
                 <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
                   <div class="annex-view">
-                    <div @click="addAnnexClick">娣诲姞</div>
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
                     <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
                   </div>
                 </el-form-item>
@@ -187,6 +200,7 @@
         { value: "7", label: "閿�鍞�荤洃" }
       ],
       discount: "2",
+      currencyOptions: [],
       discountOptions: [
         { value: "1", label: "鐧惧垎姣旈檷浠�" },
         { value: "2", label: "鐩存帴闄嶄环" }
@@ -196,23 +210,47 @@
         { value: "1", label: "澧炲姞" },
         { value: "2", label: "鍑忓皯" }
       ], // 璋冩暣
-      productTableList: {
-        tableData: [
-          {
-            id: "1",
-            productNumber: "123",
-            productName: "",
-            startDate: "",
-            endDate: "2016-05-02",
-            number: "",
-            address: ""
-          }
-        ]
+      productTableList: {},
+      showSummary: {
+        show: true,
+        total: false,
+        sumProp: ["other1", "other7"],
+        mergeNumber: 7
       }
     }
   },
-  created() {},
+  created() {
+    this.setTableForm()
+  },
   methods: {
+    setTableForm() {
+      this.productTableList = {
+        tableData: [
+          {
+            id: "1",
+            productName: "涓婃捣鏈夐檺鍏徃",
+            other0: "ZDYBD03-1",
+            other1: "12",
+            other2: "",
+            other6: "3.00",
+            other7: "2.00"
+          }
+        ],
+        tableColumn: [
+          { label: "#", prop: "id", width: 40 },
+          { label: "浜у搧鍚嶇О", prop: "productName", input: true, isRequird: true },
+          { label: "浜у搧缂栧彿", prop: "other0" },
+          { label: "璁¢噺鍗曚綅", prop: "other2" },
+          { label: "瑙勬牸缂栧彿", prop: "other3" },
+          { label: "婧愬崟绫诲瀷", prop: "other4" },
+          { label: "鍚堝悓淇℃伅", prop: "other5" },
+          { label: "鏁伴噺", prop: "other1", input: true, isRequird: true },
+          { label: "鍚◣鍗曚环", prop: "other6", input: true },
+          { label: "浠风◣鍚堣", prop: "other7", input: true },
+          { label: "鎻忚堪", prop: "other8" }
+        ]
+      }
+    },
     handleClose() {
       this.editConfig.visible = false
     },
diff --git a/src/views/service/orderManage/AddOrderManageDialog.vue b/src/views/service/orderManage/AddOrderManageDialog.vue
index 048a9a7..39565a9 100644
--- a/src/views/service/orderManage/AddOrderManageDialog.vue
+++ b/src/views/service/orderManage/AddOrderManageDialog.vue
@@ -102,8 +102,21 @@
             <el-row>
               <el-col :span="12">
                 <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
                   <div class="annex-view">
-                    <div @click="addAnnexClick">娣诲姞</div>
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
                     <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
                   </div>
                 </el-form-item>
diff --git a/src/views/service/serviceContract/AddServiceContractDialog.vue b/src/views/service/serviceContract/AddServiceContractDialog.vue
index 83cc100..d79b75d 100644
--- a/src/views/service/serviceContract/AddServiceContractDialog.vue
+++ b/src/views/service/serviceContract/AddServiceContractDialog.vue
@@ -164,8 +164,21 @@
             <el-row>
               <el-col :span="12">
                 <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
                   <div class="annex-view">
-                    <div @click="addAnnexClick">娣诲姞</div>
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
                     <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
                   </div>
                 </el-form-item>
@@ -184,7 +197,7 @@
             </div>
           </div>
           <div class="product-view">
-            <CommonFormTableView :product-table-list="productTableList" />
+            <CommonFormTableView :show-summary="showSummary" :product-table-list="productTableList" />
           </div>
           <!-- 閫夋嫨瀹℃壒娴佺▼ -->
           <div class="basic-info-title">閫夋嫨瀹℃壒娴佺▼</div>
@@ -288,8 +301,7 @@
       rules: {
         serviceContractNumber: [{ required: true, message: "璇疯緭鍏ユ湇鍔″悎鍚岀紪鍙�", trigger: "blur" }],
         signDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-        owner: [{ required: true, message: "璇烽�夋嫨璐熻矗浜�", trigger: "change" }],
-        approvalOpinion: [{ required: true, message: "璇疯緭鍏ュ鎵规剰瑙�", trigger: "blur" }]
+        owner: [{ required: true, message: "璇烽�夋嫨璐熻矗浜�", trigger: "change" }]
       },
       ownerOptions: [
         // 璐熻矗浜�
@@ -309,23 +321,51 @@
         { value: "3", label: "娆у厓(鈧�)" }
       ], // 甯佺
       approvalWorkflowOptions: [], // 瀹℃壒娴佺▼
-      productTableList: {
-        tableData: [
-          {
-            id: "1",
-            productNumber: "123",
-            productName: "",
-            startDate: "",
-            endDate: "2016-05-02",
-            number: "",
-            address: ""
-          }
-        ]
+      productTableList: {},
+      showSummary: {
+        show: true,
+        total: true,
+        sumProp: ["other1", "other2", "other3", "other4"],
+        mergeNumber: 3
       }
     }
   },
-  created() {},
+  created() {
+    this.setTableForm()
+  },
   methods: {
+    setTableForm() {
+      this.productTableList = {
+        tableData: [
+          {
+            id: "1",
+            productName: "涓婃捣鏈夐檺鍏徃",
+            other0: "ZDYBD03-1",
+            other1: "12",
+            other2: "5.00",
+            other4: "3.00",
+            other3: "2.00"
+          }
+        ],
+        tableColumn: [
+          { label: "#", prop: "id", width: 40 },
+          { label: "浜у搧鍚嶇О", prop: "productName", input: true, isRequird: true },
+          { label: "浜у搧缂栧彿", prop: "other0" },
+          { label: "鏈嶅姟寮�濮嬫棩", prop: "other5", date: true, isRequird: true, min: 100 },
+          { label: "鏈嶅姟鍒版湡鏃�", prop: "other6", date: true, isRequird: true, min: 100 },
+          { label: "鏁伴噺", prop: "other1", input: true, isRequird: true },
+          { label: "鍚◣鍗曚环", prop: "other9", input: true },
+          { label: "涓嶅惈绋庡崟浠�", prop: "other7", input: true },
+          { label: "鎶樻墸鐜�(%)", prop: "other6", input: true },
+          { label: "鎶樻墸棰�", prop: "other2" },
+          { label: "绋�(閿�鍞�)", prop: "other7", input: true },
+          { label: "瀹為檯鍚◣鍗曚环", prop: "other3" },
+          { label: "涓嶅惈绋庨噾棰�", prop: "other4" },
+          { label: "浠风◣鍚堣", prop: "other3", input: true },
+          { label: "鎻忚堪", prop: "other8" }
+        ]
+      }
+    },
     handleClose() {
       this.editConfig.visible = false
     },
diff --git a/src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue b/src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue
index c8ef662..750aef2 100644
--- a/src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue
+++ b/src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue
@@ -245,8 +245,21 @@
             <el-row>
               <el-col :span="12">
                 <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
                   <div class="annex-view">
-                    <div @click="addAnnexClick">娣诲姞</div>
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
                     <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
                   </div>
                 </el-form-item>
diff --git a/src/views/service/serviceFeeManage/index.vue b/src/views/service/serviceFeeManage/index.vue
index 48e2bdc..9dd8191 100644
--- a/src/views/service/serviceFeeManage/index.vue
+++ b/src/views/service/serviceFeeManage/index.vue
@@ -96,12 +96,13 @@
             customStatus: "娼滃湪瀹㈡埛",
             productName: "鑷姩鎵撳嵃鏈�",
             startDate: "2023-06-27",
-            endDate: "2024-07-15"
+            endDate: "2024-07-15",
+            status: "blue"
           }
         ],
         tableColumn: [
           { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О
-          { label: "瀹㈡埛绫诲瀷", prop: "customType", min: 90 }, // 瀹㈡埛绫诲瀷
+          { label: "瀹㈡埛绫诲瀷", prop: "customType", min: 90, status: true }, // 瀹㈡埛绫诲瀷
           { label: "閿�鍞礋璐d汉", prop: "salesHead" }, // 閿�鍞礋璐d汉
           { label: "淇敼鏃堕棿", prop: "modifyTime", min: 100 }, // 淇敼鏃堕棿
           { label: "瀹㈡埛瑙勬ā", prop: "customerSize" }, // 瀹㈡埛瑙勬ā
diff --git a/src/views/service/serviceFollowup/AddServiceFollowupDialog.vue b/src/views/service/serviceFollowup/AddServiceFollowupDialog.vue
index 2c252ab..55dfdfa 100644
--- a/src/views/service/serviceFollowup/AddServiceFollowupDialog.vue
+++ b/src/views/service/serviceFollowup/AddServiceFollowupDialog.vue
@@ -131,8 +131,21 @@
             <el-row>
               <el-col :span="12">
                 <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
                   <div class="annex-view">
-                    <div @click="addAnnexClick">娣诲姞</div>
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
                     <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
                   </div>
                 </el-form-item>

--
Gitblit v1.8.0