diff --git a/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaExtrapolationModal.vue b/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaExtrapolationModal.vue
index 62837f1..6f7ebb9 100644
--- a/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaExtrapolationModal.vue
+++ b/src/views/spectrumAnalysis/components/Modals/BetaGammaModals/BetaGammaExtrapolationModal.vue
@@ -89,16 +89,18 @@
               <div class="title">Gamma Window Setting</div>
               <div class="content">
                 <div class="label">Gamma Window Begin:</div>
-                <a-input-number size="small" v-model="model.windowBegin"></a-input-number> Channel
+                <a-input-number size="small" v-model="model.windowBegin" @change="calculateTotalCount"></a-input-number>
+                Channel
                 <div class="label">Gamma Window End:</div>
-                <a-input-number size="small" v-model="model.windowEnd"></a-input-number> Channel
+                <a-input-number size="small" v-model="model.windowEnd" @change="calculateTotalCount"></a-input-number>
+                Channel
               </div>
             </div>
             <div class="setting-item">
               <div class="title">Parameter Setting</div>
               <div class="content">
                 <div class="label">Min of Energy:</div>
-                <a-input-number size="small" v-model="model.energy"></a-input-number> keV
+                <a-input-number size="small" v-model="model.minEnergy"></a-input-number> keV
                 <div class="label">Half Life:</div>
                 <a-input-number size="small" v-model="model.halfLife"></a-input-number> Day
               </div>
@@ -106,16 +108,16 @@
             <div class="setting-item">
               <div class="title">Function of Fitting</div>
               <div class="content">
-                <a-radio-group v-model="model.fittingType">
-                  <a-radio value="1">Linear</a-radio>
-                  <a-radio value="2">2-polynomial</a-radio>
+                <a-radio-group v-model="model.fitType" @change="handleFuncChange">
+                  <a-radio value="liner">Linear</a-radio>
+                  <a-radio value="poly2">2-polynomial</a-radio>
                 </a-radio-group>
               </div>
             </div>
           </div>
 
           <div class="btns">
-            <a-button type="primary">Analyse</a-button>
+            <a-button type="primary" :loading="isAnalysing" @click="handleAnalyse">Analyse</a-button>
             <a-button @click="visible = false">Exit</a-button>
           </div>
         </div>
@@ -133,8 +135,10 @@
             :class="tableList.length ? 'has-data' : ''"
             :scroll="{ y: 101 }"
           >
-            <template slot="delete">
-              <a-button type="link" size="small">Delete</a-button>
+            <template slot="delete" slot-scope="text, record, index">
+              <a-button type="link" size="small" @click="handleDel(index)">
+                <a-icon type="delete" style="color: red;"></a-icon>
+              </a-button>
             </template>
           </a-table>
           <!-- 表格结束 -->
@@ -155,25 +159,20 @@
           <!-- 右下角信息开始 -->
           <div class="info">
             <title-over-border title="Function of Fitting">
-              <template v-if="model.fittingType == '1'">
-                y = ax + b
-              </template>
-              <template v-if="model.fittingType == '2'">
-                y = axx + bx + c
-              </template>
+              {{ currFunction }}
             </title-over-border>
             <title-over-border title="Xe Activity (Bq)">
               <div class="xe-activity">
                 <div class="item">
                   <label>Reference Time :</label>
                   <span>
-                    这是内容
+                    {{ xeActivity.referenceTime }}
                   </span>
                 </div>
                 <div class="item">
                   <label>Xe Activity (Bq) :</label>
                   <span>
-                    这是内容
+                    {{ xeActivity.activity }}
                   </span>
                 </div>
               </div>
@@ -193,7 +192,7 @@ import ModalMixin from '@/mixins/ModalMixin'
 import { cloneDeep } from 'lodash'
 import CustomChart from '@/components/CustomChart/index.vue'
 import { exportEchartImg, getXAxisAndYAxisByPosition, splitAxis } from '@/utils/chartHelper'
-import { getAction } from '@/api/manage'
+import { getAction, postAction } from '@/api/manage'
 import { useBaseChartSetting } from '../../../useChart'
 import TitleOverBorder from '../../TitleOverBorder.vue'
 import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
@@ -389,32 +388,23 @@ const initialResultChartOption = {
       },
       symbol: 'none',
       data: [],
-      markLine: {
-        symbol: 'none',
-        label: {
-          show: false
-        },
-        animation: false,
-        emphasis: {
-          disabled: true
-        },
-        lineStyle: {
-          color: '#f00'
-        },
-        data: []
-      }
+      animation: false
     },
     {
-      type: 'line',
+      type: 'scatter',
       itemStyle: {
-        color: '#A8DA56'
+        color: 'red'
       },
-      symbol: 'none',
-      data: []
+      symbolSize: 6,
+      data: [],
+      zlevel: 2,
+      animation: false
     }
   ]
 }
 
+initialResultChartOption.yAxis.boundaryGap = ['20%', '20%']
+
 const columns = [
   {
     title: 'Index',
@@ -425,17 +415,17 @@ const columns = [
   },
   {
     title: 'Eb',
-    dataIndex: 'Eb',
+    dataIndex: 'eb',
     align: 'center'
   },
   {
     title: 'Nx',
-    dataIndex: 'Nx',
+    dataIndex: 'nx',
     align: 'center'
   },
   {
     title: 'Ny',
-    dataIndex: 'Ny',
+    dataIndex: 'ny',
     align: 'center'
   },
   {
@@ -448,11 +438,17 @@ const columns = [
 ]
 
 const initialModel = {
-  windowBegin: null,
-  windowEnd: null,
-  energy: 0.1,
+  windowBegin: undefined,
+  windowEnd: undefined,
+  minEnergy: 0.1,
   halfLife: 5.243,
-  fittingType: '1'
+  fitType: 'liner'
+}
+
+// Function of Fitting
+const funcList = {
+  liner: 'y = ax + b',
+  poly2: 'y = axx + bx + c'
 }
 
 export default {
@@ -484,6 +480,8 @@ export default {
       },
 
       totalCount: [0, 0],
+      currFunction: '',
+      xeActivity: {},
 
       isLoading: false,
 
@@ -491,7 +489,8 @@ export default {
       gammaChannelEnergy: [],
 
       model: cloneDeep(initialModel),
-      tableList: []
+      tableList: [],
+      isAnalysing: false
     }
   },
   methods: {
@@ -499,10 +498,11 @@ export default {
       this.customToolTip.visible = false
       this.customToolTip2.visible = false
       this.gammaSpectrumChartOption = cloneDeep(initialGammaChartOption)
-
       this.betaSpectrumChartOption = cloneDeep(initialBetaChartOption)
+      this.resultChartOption = cloneDeep(initialResultChartOption)
 
       this.model = cloneDeep(initialModel)
+      this.currFunction = funcList[this.model.fitType]
 
       this.calculateTotalCount()
 
@@ -567,18 +567,18 @@ export default {
     // 图表点击
     handleChartClick({ offsetX, offsetY, event }, isMouseLeft) {
       event.preventDefault()
-      
+
       const point = getXAxisAndYAxisByPosition(this.$refs.gammaSpectrumChart.getChartInstance(), offsetX, offsetY)
       if (point) {
         const markLineData = this.gammaSpectrumChartOption.series[0].markLine.data
         const xAxis = parseInt(point[0].toFixed())
-        
+
         let currToolTip = this.customToolTip2
 
         // 如果是左键
         if (isMouseLeft) {
           // 如果有右值且左值大于等于右值,清空
-          if(!isNullOrUndefined(this.model.windowEnd) && xAxis >= this.model.windowEnd) {
+          if (!isNullOrUndefined(this.model.windowEnd) && xAxis >= this.model.windowEnd) {
             this.clearMarkLineAndToolTip()
             return
           }
@@ -587,10 +587,10 @@ export default {
 
           markLineData[0].xAxis = xAxis
           this.model.windowBegin = xAxis
-        } 
+        }
         // 如果是右键
         else {
-          if(!isNullOrUndefined(this.model.windowBegin) && xAxis <= this.model.windowBegin) {
+          if (!isNullOrUndefined(this.model.windowBegin) && xAxis <= this.model.windowBegin) {
             this.clearMarkLineAndToolTip()
             return
           }
@@ -624,17 +624,112 @@ export default {
 
       this.model.windowBegin = null
       this.model.windowEnd = null
+
+      this.calculateTotalCount()
     },
 
+    // 计算Total Count
     calculateTotalCount() {
-      if(!this.model.windowBegin || !this.model.windowEnd) {
+      if (!this.model.windowBegin || !this.model.windowEnd || this.model.windowBegin >= this.model.windowEnd) {
         this.totalCount = [0, 0]
         return
       }
+
+      const gammaOriginSeriseData = this.gammaSpectrumChartOption.series[0].data
+      const betaProjectedSeriseData = this.betaSpectrumChartOption.series[1].data
+
+      const originSeriseTotalCount = gammaOriginSeriseData
+        .slice(this.model.windowBegin, this.model.windowEnd + 1)
+        .reduce((prev, curr) => prev + curr[1], 0)
+      const projectedSeriseTotalCount = betaProjectedSeriseData
+        .slice(this.model.windowBegin, this.model.windowEnd + 1)
+        .reduce((prev, curr) => prev + curr[1], 0)
+      this.totalCount = [originSeriseTotalCount, projectedSeriseTotalCount]
+    },
+
+    // Function of Fitting 改变
+    handleFuncChange() {
+      this.xeActivity = {}
+      this.currFunction = funcList[this.model.fitType]
     },
 
     handleSnapshot() {
       exportEchartImg(this.$refs.chartRef.getChartInstance())
+    },
+
+    // 分析
+    async handleAnalyse() {
+      const { windowBegin, windowEnd, minEnergy, halfLife, fitType } = this.model
+      if (
+        isNullOrUndefined(windowBegin) ||
+        isNullOrUndefined(windowEnd) ||
+        isNullOrUndefined(minEnergy) ||
+        isNullOrUndefined(halfLife)
+      ) {
+        return
+      }
+      try {
+        const { sampleFileName, detFileName } = this.sampleData
+
+        const params = {
+          sampleId: null,
+          dbName: '',
+          sampleFileName,
+          detFileName,
+          gammaBegin: windowBegin,
+          gammaEnd: windowEnd,
+          minEnergy,
+          halfLife,
+          fitType //选择Linear 传 liner 选择2-Polynomial 传 poly2
+        }
+        this.isAnalysing = true
+        const { success, result, message } = await postAction('/spectrumAnalysis/analyseExtrapolation', params)
+        if (success) {
+          console.log('%c [  ]-679', 'font-size:13px; background:pink; color:#bf2c9f;', result)
+          const {
+            functionFit, // Function of Fitting
+            resultViewLineDataValue, // 折线
+            resultViewScatterDataValue, // 原点
+            tableData, // 表格数据
+            xeAct
+          } = result
+
+          this.currFunction = functionFit
+
+          const [lineSeries, scatterSeries] = this.resultChartOption.series
+          lineSeries.data = resultViewLineDataValue.map(({ x, y }) => [x, y])
+          scatterSeries.data = resultViewScatterDataValue.map(({ x, y }) => [x, y])
+          this.resetResultChartPerform()
+
+          this.xeActivity = {
+            referenceTime: this.detail.acquisitionStart,
+            activity: Number.isNaN(xeAct)? xeAct: Number(xeAct).toPrecision(6)
+          }
+
+          this.tableList = tableData
+        } else {
+          this.$message.error(message)
+        }
+      } catch (error) {
+        console.error(error)
+      } finally {
+        this.isAnalysing = false
+      }
+    },
+
+    resetResultChartPerform() {
+      this.resultChartOption.yAxis.min = undefined
+      this.resultChartOption.yAxis.max = undefined
+      this.resultChartOption.xAxis.min = undefined
+      this.resultChartOption.xAxis.max = undefined
+      this.resultChartOption.yAxis.interval = undefined
+      this.resultChartOption.xAxis.interval = undefined
+    },
+
+    // 表格删除
+    handleDel(index) {
+      this.tableList.splice(index, 1)
+      this.resultChartOption.series[1].data.splice(index, 1)
     }
   }
 }
@@ -836,7 +931,7 @@ export default {
       }
 
       .xe-activity {
-        width: 80%;
+        width: 90%;
 
         .item {
           display: flex;