diff --git a/.env.local b/.env.local
index 925808d83..b42d84dec 100644
--- a/.env.local
+++ b/.env.local
@@ -4,7 +4,7 @@ NODE_ENV=development
 VITE_DEV=true
 
 # 请求路径
-VITE_BASE_URL='http://172.22.3.6:48080'
+VITE_BASE_URL='http://172.22.3.168:48080'
 
 # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
 VITE_UPLOAD_TYPE=server
diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts
index 53892d43d..a9413a9b0 100644
--- a/src/router/modules/remaining.ts
+++ b/src/router/modules/remaining.ts
@@ -541,7 +541,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
           title: '票据模版新增',
           noCache: true,
           hidden: true,
-          activeMenu: '/crm/business'
+          activeMenu: '/crm/bill-template'
         },
         component: () => import('@/views/crm/billtemplate/BillTemplateForm.vue')
       },
@@ -552,7 +552,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
           title: '票据模版编辑',
           noCache: true,
           hidden: true,
-          activeMenu: '/crm/business'
+          activeMenu: '/crm/bill-template'
         },
         component: () => import('@/views/crm/billtemplate/BillTemplateForm.vue')
       },
@@ -563,7 +563,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
           title: '方案报价新增',
           noCache: true,
           hidden: true,
-          activeMenu: '/crm/business'
+          activeMenu: '/crm/quotation'
         },
         component: () => import('@/views/crm/quotation/QuotationForm.vue')
       },
@@ -574,7 +574,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
           title: '方案报价编辑',
           noCache: true,
           hidden: true,
-          activeMenu: '/crm/business'
+          activeMenu: '/crm/quotation'
         },
         component: () => import('@/views/crm/quotation/QuotationForm.vue')
       },
@@ -585,7 +585,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
           title: '方案报价详情',
           noCache: true,
           hidden: true,
-          activeMenu: '/crm/business'
+          activeMenu: '/crm/quotation'
         },
         component: () => import('@/views/crm/quotation/QuotationDetail.vue')
       },
@@ -611,6 +611,39 @@ const remainingRouter: AppRouteRecordRaw[] = [
         },
         component: () => import('@/views/crm/business/BusinessForm.vue')
       },
+      {
+        path: 'contract/add',
+        name: 'CrmContractAdd',
+        meta: {
+          title: '合同新增',
+          noCache: true,
+          hidden: true,
+          activeMenu: '/crm/contract'
+        },
+        component: () => import('@/views/crm/contract/ContractForm.vue')
+      },
+      {
+        path: 'contract/edit',
+        name: 'CrmContractEdit',
+        meta: {
+          title: '合同编辑',
+          noCache: true,
+          hidden: true,
+          activeMenu: '/crm/contract'
+        },
+        component: () => import('@/views/crm/contract/ContractForm.vue')
+      },
+      {
+        path: 'contract/change',
+        name: 'CrmContractChange',
+        meta: {
+          title: '合同变更',
+          noCache: true,
+          hidden: true,
+          activeMenu: '/crm/contract'
+        },
+        component: () => import('@/views/crm/contract/ContractChange.vue')
+      },
       {
         path: 'contract/detail/:id',
         name: 'CrmContractDetail',
diff --git a/src/views/crm/contract/ContractChange.vue b/src/views/crm/contract/ContractChange.vue
new file mode 100644
index 000000000..24af31104
--- /dev/null
+++ b/src/views/crm/contract/ContractChange.vue
@@ -0,0 +1,658 @@
+
+  
+    
+      
+        
+          
+            
+              
+            
+          
+        
+        
+          
+            
+          
+        
+      
+
+      
+        
+          
+            
+              
+            
+          
+        
+        
+          
+            
+              
+            
+          
+        
+      
+
+      
+        
+        
+          
+            
+          
+        
+        
+          
+            
+          
+        
+      
+
+      
+        
+          
+            
+          
+        
+      
+      
+      
+        
+          
+            
+          
+        
+        
+          
+            
+          
+        
+        
+          
+            
+              
+            
+          
+        
+      
+      
+      
+        
+          
+            
+          
+        
+        
+          
+            
+          
+        
+        
+          
+            
+              
+            
+          
+        
+      
+      
+      
+        
+          
+            
+          
+        
+        
+          
+            
+          
+        
+        
+          
+            
+          
+        
+      
+      
+      
+        
+          
+            
+              
+            
+          
+        
+        
+          
+            
+              
+            
+          
+        
+        
+          
+            
+              
+            
+          
+        
+      
+      
+      
+        
+          
+            
+              
+            
+          
+        
+        
+          
+            
+              
+            
+          
+        
+      
+
+      
+        
+          
+            
+              
+            
+          
+        
+        
+          
+            
+              
+            
+          
+        
+        
+          
+            
+          
+        
+      
+      
+      
+        
+          
+            
+              
+            
+          
+        
+        
+          
+            
+          
+        
+        
+          
+            
+          
+        
+      
+
+      
+        
+          
+            
+          
+        
+        
+          
+            
+          
+        
+      
+
+      
+        
+          
+            
+          
+        
+        
+          
+            
+          
+        
+        
+          
+            
+          
+        
+      
+      
+      
+        
+          
+            
+          
+          
+            
+          
+          
+            
+          
+          
+            
+          
+        
+      
+    
+    
+        确 定
+        取 消
+    
+  
+
+
diff --git a/src/views/crm/contract/ContractForm.vue b/src/views/crm/contract/ContractForm.vue
index be18a5b3a..683f1d0a0 100644
--- a/src/views/crm/contract/ContractForm.vue
+++ b/src/views/crm/contract/ContractForm.vue
@@ -1,5 +1,5 @@
 
-  
+    
+        确 定
+        取 消
+    
+  
 
 
diff --git a/src/views/crm/contract/index.vue b/src/views/crm/contract/index.vue
index 1461df046..5eb04fb96 100644
--- a/src/views/crm/contract/index.vue
+++ b/src/views/crm/contract/index.vue
@@ -53,7 +53,7 @@
           
           重置
         
-        
+        
           
           新增
         
@@ -204,7 +204,7 @@
             v-hasPermi="['crm:contract:update']"
             link
             type="primary"
-            @click="openForm('update', scope.row.id)"
+            @click="openFormEdit(scope.row)"
           >
             编辑
           
@@ -217,6 +217,15 @@
           >
             提交审核
           
+          
+            合同变更
+          
           
   
 
-  
-  
 
 
diff --git a/src/views/crm/quotation/QuotationForm.vue b/src/views/crm/quotation/QuotationForm.vue
index 02025e7d1..ae8938645 100644
--- a/src/views/crm/quotation/QuotationForm.vue
+++ b/src/views/crm/quotation/QuotationForm.vue
@@ -8,11 +8,7 @@
       v-loading="formLoading"
     >
       
-        
-          
-            
-          
-        
+        
 
         
           
@@ -26,6 +22,11 @@
             
           
         
+        
+          
+            
+          
+        
       
       
       
@@ -363,8 +364,6 @@ import * as CustomerApi from '@/api/crm/customer'
 import * as UserApi from '@/api/system/user'
 import * as DeptApi from '@/api/system/dept'
 import * as BusinessApi from '@/api/crm/business'
-import {BillTemplateApi } from '@/api/crm/billtemplate'
-import { erpPriceMultiply, erpPriceInputFormatter } from '@/utils'
 
 /** CRM 方案报价 表单 */
 defineOptions({ name: 'QuotationForm' })
diff --git a/src/views/crm/quotation/index.vue b/src/views/crm/quotation/index.vue
index 35cd0b0ab..13c13f476 100644
--- a/src/views/crm/quotation/index.vue
+++ b/src/views/crm/quotation/index.vue
@@ -295,4 +295,7 @@ onMounted(async () => {
   // 获得用户列表
   userOptions.value = await UserApi.getSimpleUserList()
 })
+onActivated(()=>{
+  getList()
+})
 
\ No newline at end of file