diff --git a/src/views/report/project/components/equipmentsEdit.vue b/src/views/report/project/components/equipmentsEdit.vue
index 3903b6b2bc4091e1aaecaa2c288141961c117ad0..e922e0bc051cd3ea462b6f8ce520d419ea83a9d6 100644
--- a/src/views/report/project/components/equipmentsEdit.vue
+++ b/src/views/report/project/components/equipmentsEdit.vue
@@ -7,14 +7,285 @@
         </div>
       </a-col>
     </a-row>
+    <a-row type="flex" class="item_inner">
+      <a-col :span="1" class="bg-gray">
+        <div class="special-middle">
+          <div>序号</div>
+        </div>
+      </a-col>
+      <a-col :span="2" class="bg-gray">
+        <div class="special-middle">
+          <div>设备名称</div>
+        </div>
+      </a-col>
+      <a-col :span="2" class="bg-gray">
+        <div class="special-middle">
+          <div>功能和技术指标</div>
+        </div>
+      </a-col>
+      <a-col :span="2" class="bg-gray">
+        <div class="special-middle">
+          <div>单价(万元/套台)</div>
+        </div>
+      </a-col>
+      <a-col :span="1" class="bg-gray">
+        <div class="special-middle">
+          <div>数量(套台)</div>
+        </div>
+      </a-col>
+      <a-col :span="2" class="bg-gray">
+        <div class="special-middle">
+          <div>金额(万元)</div>
+        </div>
+      </a-col>
+      <a-col :span="2" class="bg-gray">
+        <div class="special-middle">
+          <div>购置单位</div>
+        </div>
+      </a-col>
+      <a-col :span="2" class="bg-gray">
+        <div class="special-middle">
+          <div>存放单位(地点)</div>
+        </div>
+      </a-col>
+      <a-col :span="2" class="bg-gray">
+        <div class="special-middle">
+          <div>设备类型</div>
+        </div>
+      </a-col>
+      <a-col :span="2" class="bg-gray">
+        <div class="special-middle">
+          <div>主要生产<br />厂家及国别</div>
+        </div>
+      </a-col>
+      <a-col :span="2" class="bg-gray">
+        <div class="special-middle">
+          <div>规格型号</div>
+        </div>
+      </a-col>
+      <a-col :span="2" class="bg-gray">
+        <div class="special-middle">
+          <div>拟开发共享范围</div>
+        </div>
+      </a-col>
+      <a-col :span="2" class="bg-gray">
+        <div class="special-middle">
+          <div>购置必要性及<br />对项目研究的<br />作用和用途</div>
+        </div>
+      </a-col>
+    </a-row>
+    <a-row v-for="(item, index) in equipments" :key="'equipments' + index" type="flex" class="item_inner">
+      <a-col :span="1">
+        <div class="special-middle"><a-button icon="close" type="primary" shape="circle" size="small" @click="deleteEquipment(item)"></a-button>&nbsp;{{ index + 1 }}</div>
+      </a-col>
+      <a-col :span="2">
+        <a-form-model-item :prop="'equipments.' + index + '.name'" :rules="{required: true, message: '*', trigger: 'blur',}">
+          <a-input v-model="item.name" :maxLength="100" style="width: 90%;" />
+        </a-form-model-item>
+      </a-col>
+      <a-col :span="2">
+        <a-form-model-item :prop="'equipments.' + index + '.functionTarget'" :rules="{required: true, message: '*', trigger: 'blur',}">
+          <a-input v-model="item.functionTarget" :maxLength="200" style="width: 90%;" />
+        </a-form-model-item>
+      </a-col>
+      <a-col :span="2">
+        <a-form-model-item :prop="'equipments.' + index + '.unitPrice'" :rules="{required: true, message: '*', trigger: 'blur',}">
+          <a-input-number v-model="item.unitPrice" @change="outUnitPriceChange(index)" :min="0" :step="0.01" style="width: 80%" />
+        </a-form-model-item>
+      </a-col>
+      <a-col :span="1">
+        <a-form-model-item :prop="'equipments.' + index + '.quantity'" :rules="{required: true, message: '*', trigger: 'blur',}">
+          <a-input-number v-model="item.quantity" @change="outNumberChange(index)" :min="1" :step="1" style="width: 80%" />
+        </a-form-model-item>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle">
+          <div>{{ parseFloat(item.totalBudget).toFixed(2) }}</div>
+        </div>
+      </a-col>
+      <a-col :span="2">
+        <a-form-model-item :prop="'equipments.' + index + '.buyUnit'" :rules="{required: true, message: '*', trigger: 'blur',}">
+          <a-input v-model="item.buyUnit" :maxLength="100" style="width: 90%;" />
+        </a-form-model-item>
+      </a-col>
+      <a-col :span="2">
+        <a-form-model-item :prop="'equipments.' + index + '.storageLocation'" :rules="{required: true, message: '*', trigger: 'blur',}">
+          <a-input v-model="item.storageLocation" :maxLength="200" style="width: 90%;" />
+        </a-form-model-item>
+      </a-col>
+      <a-col :span="2">
+        <a-form-model-item :prop="'equipments.' + index + '.equipmentType'" :rules="{required: true, message: '*', trigger: 'blur',}">
+          <a-input v-model="item.equipmentType" :maxLength="100" style="width: 90%;" />
+        </a-form-model-item>
+      </a-col>
+      <a-col :span="2">
+        <a-form-model-item :prop="'equipments.' + index + '.manufacturer'" :rules="{required: true, message: '*', trigger: 'blur',}">
+          <a-input v-model="item.manufacturer" :maxLength="100" style="width: 90%;" />
+        </a-form-model-item>
+      </a-col>
+      <a-col :span="2">
+        <a-form-model-item :prop="'equipments.' + index + '.specificationType'" :rules="{required: true, message: '*', trigger: 'blur',}">
+          <a-input v-model="item.specificationType" :maxLength="100" style="width: 90%;" />
+        </a-form-model-item>
+      </a-col>
+      <a-col :span="2">
+        <a-form-model-item :prop="'equipments.' + index + '.sharedScope'" :rules="{required: true, message: '*', trigger: 'blur',}">
+          <a-input v-model="item.sharedScope" :maxLength="100" style="width: 90%;" />
+        </a-form-model-item>
+      </a-col>
+      <a-col :span="2">
+        <a-form-model-item :prop="'equipments.' + index + '.useFrom'" :rules="{required: true, message: '*', trigger: 'blur',}">
+          <a-input v-model="item.useFrom" :maxLength="200" style="width: 90%;" />
+        </a-form-model-item>
+      </a-col>
+    </a-row>
+
+    <a-row type="flex" class="item_inner">
+      <a-col :span="5">
+        <div class="special-middle"><div>单价50万元及以上购置设备合计</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="1">
+        <div class="special-middle"><div>{{ fiftyUpNumber }}</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>{{ parseFloat(fiftyUpAmount).toFixed(2) }}</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+    </a-row>
+    <a-row type="flex" class="item_inner">
+      <a-col :span="5">
+        <div class="special-middle"><div>单价50万元以下购置设备合计</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="1">
+        <div class="special-middle"><div>{{ fiftyDownNumber }}</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>{{ parseFloat(fiftyDownAmount).toFixed(2) }}</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+    </a-row>
+    <a-row type="flex" class="item_inner">
+      <a-col :span="5">
+        <div class="special-middle"><div>累计</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="1">
+        <div class="special-middle"><div>{{ totalNumber }}</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>{{ parseFloat(totalAmount).toFixed(2) }}</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+      <a-col :span="2">
+        <div class="special-middle"><div>/</div></div>
+      </a-col>
+    </a-row>
+    <a-row type="flex">
+      <a-col :span="24" style="text-align: center">
+        <div class="special-middle">
+          <a-button type="dashed" style="width: 20%" @click="addArrey()">
+            <a-icon type="plus" /> 添加 <span style="color:red;margin-left:10px"></span>
+          </a-button>
+        </div>
+      </a-col>
+    </a-row>
   </div>
 </template>
 
 <script>
+const Equipment = { 
+    id: "",
+    objectId: "",
+    name: "",
+    functionTarget: "",
+    specificationType: "",
+    quantity: 1,
+    totalBudget: 0.00,
+    useFrom: "",
+    buyUnit: "",
+    storageLocation: "",
+    equipmentType: "",
+    manufacturer: "",
+    sharedScope: "",
+    unitPrice: 0.00,
+};
+
 export default {
   name: "EquipmentEdit",
   data() {
-    return {};
+    return {
+      fiftyUpNumber: 0,
+      fiftyUpAmount: 0.00,
+      fiftyDownNumber: 0,
+      fiftyDownAmount: 0.00,
+      totalNumber: 0,
+      totalAmount: 0.00,
+    };
   },
   props: {
     equipments: {
@@ -24,6 +295,45 @@ export default {
       },
     },
   },
-  methods: {},
+  created () {
+  },
+  methods: {
+    calNumberAmount() {
+      this.fiftyUpAmount = 0.00
+      this.fiftyDownAmount = 0.00
+      this.fiftyUpNumber = 0
+      this.fiftyDownNumber = 0
+      this.equipments.forEach(e => {
+        if (e.unitPrice >= 50) {
+          this.fiftyUpAmount += e.unitPrice * e.quantity
+          this.fiftyUpNumber += e.quantity
+        } else {
+          this.fiftyDownAmount += e.unitPrice * e.quantity
+          this.fiftyDownNumber += e.quantity
+        }
+      })
+      this.totalNumber = this.fiftyUpNumber + this.fiftyDownNumber
+      this.totalAmount = this.fiftyUpAmount + this.fiftyDownAmount
+    },
+    outUnitPriceChange(index) {
+      this.equipments[index].totalBudget = this.equipments[index].unitPrice * this.equipments[index].quantity
+      this.calNumberAmount()
+    },
+    outNumberChange(index) {
+      this.equipments[index].totalBudget = this.equipments[index].unitPrice * this.equipments[index].quantity
+      this.calNumberAmount()
+    },
+    addArrey() {
+      this.equipments.push(Object.assign({ ...Equipment }))
+      this.calNumberAmount()
+    },
+    deleteEquipment(item) {
+      let index = this.equipments.indexOf(item)
+      if (index !== -1) {
+        this.equipments.splice(index, 1)
+      }
+      this.calNumberAmount()
+    },
+  },
 };
 </script>
\ No newline at end of file
diff --git a/src/views/report/project/components/equipmentsInfo.vue b/src/views/report/project/components/equipmentsInfo.vue
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9b99eedd6ede7108e11e234ba106f08634a75f27 100644
--- a/src/views/report/project/components/equipmentsInfo.vue
+++ b/src/views/report/project/components/equipmentsInfo.vue
@@ -0,0 +1,295 @@
+<template>
+    <div>
+      <a-row type="flex" class="item_inner">
+        <a-col :span="24" class="bg-gray">
+          <div class="special-middle">
+            <div>设备费-购置设备预算明细表</div>
+          </div>
+        </a-col>
+      </a-row>
+      <a-row type="flex" class="item_inner">
+        <a-col :span="1" class="bg-gray">
+          <div class="special-middle">
+            <div>序号</div>
+          </div>
+        </a-col>
+        <a-col :span="2" class="bg-gray">
+          <div class="special-middle">
+            <div>设备名称</div>
+          </div>
+        </a-col>
+        <a-col :span="2" class="bg-gray">
+          <div class="special-middle">
+            <div>功能和技术指标</div>
+          </div>
+        </a-col>
+        <a-col :span="2" class="bg-gray">
+          <div class="special-middle">
+            <div>单价(万元/套台)</div>
+          </div>
+        </a-col>
+        <a-col :span="1" class="bg-gray">
+          <div class="special-middle">
+            <div>数量(套台)</div>
+          </div>
+        </a-col>
+        <a-col :span="2" class="bg-gray">
+          <div class="special-middle">
+            <div>金额(万元)</div>
+          </div>
+        </a-col>
+        <a-col :span="2" class="bg-gray">
+          <div class="special-middle">
+            <div>购置单位</div>
+          </div>
+        </a-col>
+        <a-col :span="2" class="bg-gray">
+          <div class="special-middle">
+            <div>存放单位(地点)</div>
+          </div>
+        </a-col>
+        <a-col :span="2" class="bg-gray">
+          <div class="special-middle">
+            <div>设备类型</div>
+          </div>
+        </a-col>
+        <a-col :span="2" class="bg-gray">
+          <div class="special-middle">
+            <div>主要生产<br />厂家及国别</div>
+          </div>
+        </a-col>
+        <a-col :span="2" class="bg-gray">
+          <div class="special-middle">
+            <div>规格型号</div>
+          </div>
+        </a-col>
+        <a-col :span="2" class="bg-gray">
+          <div class="special-middle">
+            <div>拟开发共享范围</div>
+          </div>
+        </a-col>
+        <a-col :span="2" class="bg-gray">
+          <div class="special-middle">
+            <div>购置必要性及<br />对项目研究的<br />作用和用途</div>
+          </div>
+        </a-col>
+      </a-row>
+      <a-row v-for="(item, index) in equipments" :key="'equipments' + index" type="flex" class="item_inner">
+        <a-col :span="1">
+          <div class="special-middle">{{ index + 1 }}</div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle">{{ item.name }}</div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle">{{ item.functionTarget }}</div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle">{{parseFloat(item.unitPrice).toFixed(2)}}</div>
+        </a-col>
+        <a-col :span="1">
+          <div class="special-middle">{{ item.quantity }}</div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle">{{ parseFloat(item.totalBudget).toFixed(2) }}</div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle">{{ item.buyUnit }}</div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle">{{ item.storageLocation }}</div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle">{{ item.equipmentType }}</div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle">{{ item.manufacturer }}</div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle">{{ item.specificationType }}</div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle">{{ item.sharedScope }}</div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle">{{ item.useFrom }}</div>
+        </a-col>
+      </a-row>
+  
+      <a-row type="flex" class="item_inner">
+        <a-col :span="5">
+          <div class="special-middle"><div>单价50万元及以上购置设备合计</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="1">
+          <div class="special-middle"><div>{{ fiftyUpNumber }}</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>{{ parseFloat(fiftyUpAmount).toFixed(2) }}</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+      </a-row>
+      <a-row type="flex" class="item_inner">
+        <a-col :span="5">
+          <div class="special-middle"><div>单价50万元以下购置设备合计</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="1">
+          <div class="special-middle"><div>{{ fiftyDownNumber }}</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>{{ parseFloat(fiftyDownAmount).toFixed(2) }}</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+      </a-row>
+      <a-row type="flex" class="item_inner">
+        <a-col :span="5">
+          <div class="special-middle"><div>累计</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="1">
+          <div class="special-middle"><div>{{ totalNumber }}</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>{{ parseFloat(totalAmount).toFixed(2) }}</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+        <a-col :span="2">
+          <div class="special-middle"><div>/</div></div>
+        </a-col>
+      </a-row>
+    </div>
+  </template>
+  
+  <script>
+  const Equipment = { 
+      id: "",
+      objectId: "",
+      name: "",
+      functionTarget: "",
+      specificationType: "",
+      quantity: 1,
+      totalBudget: 0.00,
+      useFrom: "",
+      buyUnit: "",
+      storageLocation: "",
+      equipmentType: "",
+      manufacturer: "",
+      sharedScope: "",
+      unitPrice: 0.00,
+  };
+  
+  export default {
+    name: "EquipmentEdit",
+    data() {
+      return {
+        fiftyUpNumber: 0,
+        fiftyUpAmount: 0.00,
+        fiftyDownNumber: 0,
+        fiftyDownAmount: 0.00,
+        totalNumber: 0,
+        totalAmount: 0.00,
+      };
+    },
+    props: {
+      equipments: {
+        type: Array,
+        default: () => {
+          return [];
+        },
+      },
+    },
+    created () {
+    },
+    methods: {
+      calNumberAmount() {
+        this.fiftyUpAmount = 0.00
+        this.fiftyDownAmount = 0.00
+        this.fiftyUpNumber = 0
+        this.fiftyDownNumber = 0
+        this.equipments.forEach(e => {
+          if (e.unitPrice >= 50) {
+            this.fiftyUpAmount += e.unitPrice * e.quantity
+            this.fiftyUpNumber += e.quantity
+          } else {
+            this.fiftyDownAmount += e.unitPrice * e.quantity
+            this.fiftyDownNumber += e.quantity
+          }
+        })
+        this.totalNumber = this.fiftyUpNumber + this.fiftyDownNumber
+        this.totalAmount = this.fiftyUpAmount + this.fiftyDownAmount
+      },
+      outUnitPriceChange(index) {
+        this.equipments[index].totalBudget = this.equipments[index].unitPrice * this.equipments[index].quantity
+        this.calNumberAmount()
+      },
+      outNumberChange(index) {
+        this.equipments[index].totalBudget = this.equipments[index].unitPrice * this.equipments[index].quantity
+        this.calNumberAmount()
+      },
+    },
+  };
+  </script>
\ No newline at end of file
diff --git a/src/views/report/project/components/projectEdit.vue b/src/views/report/project/components/projectEdit.vue
index 29070d89dfcb5d4568936914632feef02d11e9e5..c485a55211928b2b052ec9b9e728b26a88a45d5f 100644
--- a/src/views/report/project/components/projectEdit.vue
+++ b/src/views/report/project/components/projectEdit.vue
@@ -793,8 +793,8 @@ export default {
         this.formData.cooperativeUnits = [{ ...Cooperative }]
       if (!!!this.formData.members || this.formData.members.length == 0)
         this.formData.members = [{ ...Members }]
-      if (!!!this.formData.equipments || this.formData.equipments.length == 0)
-        this.formData.equipments = [{ ...Equipments }]
+      if (!!!this.formData.equipments || !this.formData.equipments.length || this.formData.equipments.length == 0)
+        this.formData.equipments = []
       if (!!!!this.formData.fileList || !this.formData.fileList.length || this.formData.fileList.length == 0) {
         this.formData.fileList = []
       }