scorpio пре 2 година
родитељ
комит
091198a4c7

+ 2 - 0
src/views/home/component/form_dialog.vue

@@ -264,6 +264,7 @@ export default {
       } else {
         this.$message.error('未选择任何字段进行导出')
       }
+      this.attaches = []
     },
     querySearchDept (key, cb) {
       if (key && key.length === 0) {
@@ -319,6 +320,7 @@ export default {
             this.fieldType[index].params.push(sub)
           }
         }
+        this.$message.success(item.dictValue + '已勾选成功')
         this.fieldType[index].params.count = this.fieldType[index].params.filter(sub => sub.checked).length
       }
     }

+ 1 - 1
src/views/home/component/params/params1.vue

@@ -7,7 +7,7 @@
         }}
       </el-button>
     </div>
-    <div class='mt-10' style='width: 80%;'>
+    <div class='mt-10' style='width: 90%;'>
       <el-form
           v-if='form'
           :model="form"

+ 1 - 1
src/views/home/component/params/params2.vue

@@ -6,7 +6,7 @@
         {{ disabled ? '编 辑' : '保 存' }}
       </el-button>
     </div>
-    <div class='mt-10' style='width: 80%;'>
+    <div class='mt-10' style='width: 90%;'>
       <el-form
           :model="form"
           label-width='240px'

+ 199 - 81
src/views/home/component/params/params3.vue

@@ -2,14 +2,14 @@
   <div class='flex flex-justify-start flex-align-center flex-col'>
     <div class='flex flex-center full-width flex-justify-between mt-10 mb-10'>
       <span class='full-width text-left bold'>{{ info.dictValue }}</span>
-      <el-button v-if='detail.can_update' type='primary' @click='disabled = !disabled'>
+      <el-button v-if='detail.can_update' type='primary' @click='update'>
         {{ disabled ? '编 辑' : '保 存' }}
       </el-button>
     </div>
     <div class="mt-10 mb-10 full-width" style="width: 93%;">
-      <base-button title="新增年度" icon="Plus"/>
+      <base-button title="新增年度" icon="Plus" @click='addYear(1)'/>
     </div>
-    <div class='mt-10' style='width: 80%;'>
+    <div class='mt-10' style='width: 90%;'>
       <el-form
           :model="form"
           label-width='180px'
@@ -17,71 +17,62 @@
           label-position="left"
           class='form-content flex flex-col'
       >
-        <div class='grid'>
-          <el-form-item v-for='item in list1' :key='item' :label="item.name" style='flex:1'>
-            <el-input v-model="form.name">
-              <template #append>
-                <div class='btnSub white font-12 flex flex-center pointer' @click='inputMonth'>
-                  <el-icon :size="14">
-                    <Edit/>
-                  </el-icon>
-                  月填报
-                </div>
-              </template>
-            </el-input>
-          </el-form-item>
-        </div>
+        <el-form-item v-for='item in list1' :key='item' label-width='0'>
+          <div class='flex flex-col flex-center full-width'>
+            <div class='flex flex-center  flex-justify-between  full-width'>
+              <div class='flex-child-average full-width  flex flex-center'>
+                <span style='width: 300px'>{{ item.year }}年度计划投资(万元)</span>
+                <el-input v-model='item.value' @change='change(item)'></el-input>
+              </div>
+              <div style='width: 20px'></div>
+              <div class='flex-child-average full-width  flex flex-center'>
+                <span style='width: 380px'>{{ item.year }}年度累计投资(万元)</span>
+                <div class='disable-input' @change='change(item)'>{{ item.value2 }}</div>
+                <div class='btnSub pointer' @click='showMonth(item)'>月填报</div>
+              </div>
+            </div>
+          </div>
+        </el-form-item>
       </el-form>
     </div>
     <div class="mt-20 mb-10 full-width" style="width: 93%;">
-      <base-button title="新增年度" icon="Plus"/>
+      <base-button title="新增年度" icon="Plus" @click='addYear(2)'/>
     </div>
-    <div class='mt-10' style='width: 80%;'>
+    <div class='mt-10' style='width: 90%;'>
       <el-form
           :model="form"
-          label-width='240px'
-          :disabled='true'
+          label-width='180px'
+          :disabled='disabled'
           label-position="left"
           class='form-content flex flex-col'
       >
-        <div class='flex flex-justify-start '>
-          <el-form-item label="2023年计划纳统投资(万元)" style='flex:1'>
-            <el-input v-model="form.name"/>
-          </el-form-item>
-          <el-form-item label="2023年累计纳统投资(万元)" style='flex:1' class='ml-20'>
-            <el-input v-model="form.region"/>
-          </el-form-item>
-        </div>
-        <div class='full-width  flex'>
-          <el-form-item label="2022年计划纳统投资(万元)" style='flex:1'>
-            <el-input v-model="form.name"/>
-          </el-form-item>
-          <el-form-item label="2022年累计纳统投资(万元)" style='flex:1' class='ml-20'>
-            <el-input v-model="form.region"/>
-          </el-form-item>
-        </div>
-        <div class='full-width  flex'>
-          <el-form-item label="2021年计划纳统投资(万元)" style='flex:1'>
-            <el-input v-model="form.name"/>
-          </el-form-item>
-          <el-form-item label="2021年累计纳统投资(万元)" style='flex:1' class='ml-20'>
-            <el-input v-model="form.region"/>
-          </el-form-item>
-        </div>
+        <el-form-item v-for='item in list2' :key='item' label-width='0'>
+          <div class='flex flex-col flex-center full-width'>
+            <div class='flex flex-center  flex-justify-between  full-width'>
+              <div class='flex-child-average full-width  flex flex-center'>
+                <span style='width: 400px'>{{ item.year }}年度计划纳统投资(万元)</span>
+                <el-input v-model='item.value' @change='change(item)'></el-input>
+              </div>
+              <div style='width: 20px'></div>
+              <div class='flex-child-average full-width  flex flex-center'>
+                <span style='width: 440px'>{{ item.year }}年度累计纳统投资(万元)</span>
+                <div class='disable-input' @change='change(item)'>{{ item.value2 }}</div>
+                <div class='btnSub pointer' @click='showMonth(item)'>月填报</div>
+              </div>
+            </div>
+          </div>
+        </el-form-item>
       </el-form>
     </div>
 
-    <el-dialog v-model='show' title='2023年度'>
+    <el-dialog v-model='show' :title='current ? current.year + "年度" : ""'>
       <div class='flex flex-center flex-wrap'>
-        <div v-for='item in data1' :key='item'>
-          <div class='bold'>{{ item.name }}</div>
-          <input class='input flex flex-center' v-model="item.num" :min="1"/>
+        <div v-for='item in current.months' :key='item'>
+          <div class='bold mb-10 mt-10'>{{ item.name }}月</div>
+          <input class='input flex flex-center' v-model="item.value" :min="1" @change='changeMonth(item)'/>
         </div>
       </div>
-      <div class='mt-20 full-width flex flex-center'>
-        <el-button type='primary' plain>取 消</el-button>
-        <el-button type='primary'>保 存</el-button>
-      </div>
+      <div class='mt-20 full-width flex text-left red'>* 请按月份进行填报,单位:万元</div>
     </el-dialog>
   </div>
 </template>
@@ -102,39 +93,154 @@ export default {
       default: null
     }
   },
+  watch: {
+    detail: {
+      handler (val) {
+        if (val) {
+          this.form = this.detail
+          this.init(val)
+        }
+      },
+      immediate: true
+    }
+  },
   data () {
     return {
       show: false,
       disabled: true,
-      list1: [
-        { name: '2023年计划投资(万元)', value: 300330 },
-        { name: '2022年计划投资(万元)', value: 300330 },
-        { name: '2021年计划投资(万元)', value: 300330 }
-      ],
-      data1: [
-        { name: '1月', num: 0 },
-        { name: '2月', num: 0 },
-        { name: '3月', num: 0 },
-        { name: '4月', num: 0 },
-        { name: '5月', num: 0 },
-        { name: '6月', num: 0 },
-        { name: '7月', num: 0 },
-        { name: '8月', num: 0 },
-        { name: '9月', num: 0 },
-        { name: '10月', num: 0 },
-        { name: '11月', num: 0 },
-        { name: '12月', num: 0 }
-      ],
-      form: {
-        name: '',
-        region: '',
-        type: ''
-      }
+      list1: [],
+      list2: [],
+      form: {},
+      current: null
     }
   },
   methods: {
-    inputMonth () {
+    addYear (type) {
+      this.disabled = false
+      if (type === 1) {
+        let lastYear = new Date().getFullYear()
+        if (this.list1.length > 0) {
+          const tmp = this.list1.map(sub => sub.year)
+          const max = Math.max.apply(null, tmp)
+          lastYear = max + 1
+        }
+        const months = []
+        for (let i = 1; i <= 12; i++) {
+          months.push({ name: i, value: '' })
+        }
+        const item = {
+          type: 1,
+          year: lastYear,
+          code: lastYear + '_plan_complete_amount',
+          code2: lastYear + '_total_complete_amount',
+          value: '',
+          value1: '',
+          months
+        }
+        this.list1.push(item)
+      }
+      if (type === 2) {
+        let lastYear = new Date().getFullYear()
+        if (this.list2.length > 0) {
+          const tmp = this.list2.map(sub => sub.year)
+          const max = Math.max.apply(null, tmp)
+          lastYear = max + 1
+        }
+        const months = []
+        for (let i = 1; i <= 12; i++) {
+          months.push({ name: i, value: '' })
+        }
+        const item = {
+          type: 2,
+          year: lastYear,
+          code: lastYear + '_plan_investment_amount',
+          code2: lastYear + '_total_investment_amount',
+          value: '',
+          value1: '',
+          months
+        }
+        this.list2.push(item)
+      }
+    },
+    init () {
+      const keys = Object.keys(this.detail).filter(sub => sub.indexOf('_plan_complete_amount') > -1)
+      if (keys.length > 0) {
+        keys.forEach(sub => {
+          const tmp = Number.parseInt(sub.substring(0, 4))
+
+          const months = []
+          for (let i = 1; i <= 12; i++) {
+            months.push({ index: i, name: i, value: this.form[tmp + '_' + i + '_month_complete_amount'] })
+          }
+
+          const item = {
+            type: 1,
+            code: sub,
+            code2: tmp + '_total_complete_amount',
+            year: tmp,
+            value: this.detail[tmp + '_plan_complete_amount'],
+            value2: this.detail[tmp + '_total_complete_amount'],
+            months
+          }
+          this.list1.push(item)
+        })
+      }
+
+      const keysInvestment = Object.keys(this.detail).filter(sub => sub.indexOf('_plan_investment_amount') > -1)
+      if (keysInvestment.length > 0) {
+        keysInvestment.forEach(sub => {
+          const tmp = Number.parseInt(sub.substring(0, 4))
+          const months = []
+          for (let i = 1; i <= 12; i++) {
+            months.push({ index: i, name: i, value: this.form[tmp + '_' + i + '_month_investment_amount'] })
+          }
+          const item = {
+            type: 2,
+            code: sub,
+            code2: tmp + '_total_investment_amount',
+            year: tmp,
+            value: this.detail[tmp + '_plan_investment_amount'],
+            value2: this.detail[tmp + '_total_investment_amount']
+          }
+          this.list2.push(item)
+        })
+      }
+    },
+    change (item) {
+      this.form[item.code] = item.value
+      this.form[item.code2] = item.value2
+    },
+    update (show = Boolean) {
+      this.disabled = !this.disabled
+      this.form.projectId = this.form.id
+      delete this.form._id
+      this.$api.project.proUpdate(this.detail).then(res => {
+        if (res.code === 200) {
+          if (show) {
+            this.$message.success(res.msg)
+          }
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
+    showMonth (item) {
       this.show = !this.show
+      this.current = item
+    },
+    changeMonth (res) {
+      const code = this.current.year + '_' + res.name + (this.current.type === 1 ? '_month_complete_amount' : '_month_investment_amount')
+      this.form[code] = res.value
+      const tmp = this.current.months.map(sub => Number.parseInt(sub.value))
+      const sum = tmp.reduce((accumulator, value) => {
+        return accumulator + (value || 0)
+      }, 0)
+      const codeParent = this.current.year + (this.current.type === 1 ? '_total_complete_amount' : '_total_investment_amount')
+      console.log(sum)
+      this.form[codeParent] = sum
+      this.current.value2 = sum
+      console.log(this.current)
+      this.update(false)
     }
   }
 }
@@ -155,7 +261,6 @@ export default {
 .input {
   width: 120px;
   height: 40px;
-  margin-top: 20px;
   border: #e7e7e7 solid 1px;
   padding: 10px;
   border-right: none;
@@ -164,13 +269,26 @@ export default {
 .input:last-child {
   width: 120px;
   height: 40px;
-  margin-top: 20px;
   padding: 10px;
   border-right: #e7e7e7 solid 1px;
 }
 
+.disable-input {
+  height: 30px;
+  width: 100%;
+  border-radius: 4px;
+  background-color: #F5F7FA;
+  border: #E6E8ED solid 1px;
+  text-align: left;
+  padding: 0 10px;
+  color: #B2B4BA;
+}
+
 .btnSub {
-  height: 25px;
+  color: white;
+  width: 120px;
+  margin-left: 10px;
+  height: 30px;
   background-color: #EDAC56;
   border-radius: 30px;
   padding: 0 10px;

+ 1 - 1
src/views/home/component/params/params5.vue

@@ -7,7 +7,7 @@
         }}
       </el-button>
     </div>
-    <div class='mt-10' style='width: 80%;'>
+    <div class='mt-10' style='width: 90%;'>
       <el-form
           :model="form"
           label-width='140px'

+ 1 - 1
src/views/home/component/params/params6.vue

@@ -4,7 +4,7 @@
       <span class='full-width text-left bold'>{{ info.dictValue }}</span>
       <el-button v-if='detail.can_update && detail.other !== undefined' type='primary' @click='save'>{{ disabled ? '编 辑' : '保 存' }}</el-button>
     </div>
-    <div class='mt-10' style='width: 80%;'>
+    <div class='mt-10' style='width: 90%;'>
       <el-empty v-if='detail.other === undefined'/>
       <el-form
           v-else