Browse Source

项目模块提交

ljb 10 months ago
parent
commit
54cc764911

+ 6 - 2
src/components/project-select/index.vue

@@ -36,19 +36,23 @@ export default {
     this.getProjectList();
   },
   methods: {
+    findProjectObj(value) {
+      let proObj = this.projectList.find(item => item.id === value);
+      return proObj || {};
+    },
     getProjectList() {
       getList(1, 99999, this.params).then(({ data }) => {
         if (data.success) {
           this.projectList = data.data.records;
           this.xmId = this.value;
 
-          let currPro = this.projectList.find(item => item.id === this.value);
+          let currPro = this.findProjectObj(this.value);
           this.$emit('change', currPro);
         }
       })
     },
     handleProjectChange(val) {
-      let currPro = this.projectList.find(item => item.id === val);
+      let currPro = this.findProjectObj(this.value);
       this.$emit('input', val);
       this.$emit('change', currPro);
     },

+ 7 - 0
src/views/project-manage/components/all-budget-table.vue

@@ -68,6 +68,9 @@ import moment from 'moment';
 import projectSelect from "@/components/project-select";
 
 export default {
+  props: {
+    projectId: [String, Number]
+  },
   components: {
     projectSelect,
   },
@@ -105,6 +108,10 @@ export default {
       return `年 月 日至 年 月 日`;
     },
   },
+  mounted() {
+    console.log(this.projectId)
+    this.currProjectId = this.projectId || '';
+  },
   methods: {
     handleProjectChange(data) {
       this.selProject = data;

+ 82 - 27
src/views/project-manage/components/apply-form.vue

@@ -18,32 +18,21 @@
           <td class="doc-input">
             <el-input v-model="formData.xmmc" placeholder="请输入项目名称" />
           </td>
-          <td class="doc-label">项目申请单位</td>
+          <td class="doc-label">项目编号</td>
           <td class="doc-input">
             <el-input
-              v-model="formData.xmsqdw"
-              placeholder="请选择项目申请单位"
+              v-model="formData.xmbh"
+              placeholder="请输入项目编号"
             />
           </td>
         </tr>
         <tr>
-          <td class="doc-label">项目负责人</td>
-          <td class="doc-input">
-            <avue-select
-              v-model="formData.xmfzr"
-              placeholder="请选择"
-              :dic="fzrList"
-              style="width: 100%"
-            ></avue-select>
-          </td>
-          <td class="doc-label">研究类型</td>
-          <td class="doc-input">
-            <avue-select
-              v-model="formData.yjlx"
-              placeholder="请选择"
-              :dic="studyTypeList"
-              style="width: 100%"
-            ></avue-select>
+          <td class="doc-label">项目申请单位</td>
+          <td colspan="3">
+            <el-input
+              v-model="formData.xmsqdw"
+              placeholder="请选择项目申请单位"
+            />
           </td>
         </tr>
         <tr>
@@ -69,6 +58,26 @@
           </td>
         </tr>
         <tr>
+          <td class="doc-label">项目负责人</td>
+          <td class="doc-input">
+            <avue-select
+              v-model="formData.xmfzr"
+              placeholder="请选择"
+              :dic="fzrList"
+              style="width: 100%"
+            ></avue-select>
+          </td>
+          <td class="doc-label">研究类型</td>
+          <td class="doc-input">
+            <avue-select
+              v-model="formData.yjlx"
+              placeholder="请选择"
+              :dic="studyTypeList"
+              style="width: 100%"
+            ></avue-select>
+          </td>
+        </tr>
+        <tr>
           <td class="doc-label">项目来源</td>
           <td class="doc-input">
             <avue-select
@@ -113,7 +122,7 @@
         <tr>
           <td class="doc-label">项目预算总额(万元)</td>
           <td class="doc-input">
-            {{ budgetAmount }}
+              <el-input-number v-model="formData.xmze" type="number" :min="0" controls-position="right" />
           </td>
           <td class="doc-label">其中</td>
           <td class="doc-input">
@@ -121,7 +130,7 @@
               <div class="year-list-item" v-for="year of yearList" :key="year" :style="{ height: yearList.length == 1 ? '51px' : '32px', lineHeight: yearList.length == 1 ? '51px' : '32px' }">
                 <div class="year" >{{ year }}</div>
                 <div class="year-input">
-                  <input v-model="formData[year]" type="number" />
+                  <input v-model="formData[year]" type="number" :class="{ 'red': budgetIsExceed }" @input="handleYearInput" style="padding: 0 6px;" />
                 </div>
               </div>
             </div>
@@ -130,7 +139,20 @@
       </tbody>
     </table>
 
-    <avue-form v-model="formData" :option="option" style="margin-top: 30px; padding: 0;"></avue-form>
+    <avue-form v-model="formData" :option="option" style="margin-top: 30px; padding: 0;">
+      <template slot="lxpwLabel">
+        <label>立项批文</label>
+        <el-link type="primary" style="position: absolute; left: 220px;">下载模板</el-link>
+      </template>
+      <template slot="lxbgLabel">
+        <label>立项报告</label>
+        <el-link type="primary" style="position: absolute; left: 220px;">下载模板</el-link>
+      </template>
+      <template slot="qtzlLabel">
+        <label>其他资料</label>
+        <el-link type="primary" style="position: absolute; left: 220px;">下载模板</el-link>
+      </template>
+    </avue-form>
     <p class="tip">注:可一次上传多个相关文件(文档、表格、图片等)。 支持格式:DOC, PDF, Excel, PNG, JPG, PPT 等。 请确保文件内容清晰有效。</p>
 
     <div class="btn-wrap" style="text-align: center;">
@@ -151,10 +173,9 @@ export default {
     return {
       formData: {},
 
-      // 项目预算总额
-      budgetAmount: 0,
-
       yearList: [],
+      // 预算是否超出
+      budgetIsExceed: false,
 
       // 项目负责人列表
       fzrList: [],
@@ -241,6 +262,9 @@ export default {
     },
     'formData.xmjssj'(newVal) {
       this.yearList = this.getDateRangeYear(this.formData.xmkssj, newVal);
+    },
+    'formData.xmze'(newVal) {
+      this.calcBudgetIsExceed(newVal);
     }
   },
   computed: {
@@ -295,6 +319,28 @@ export default {
         });
       });
     },
+    handleYearInput(e) {
+      this.calcBudgetIsExceed(this.formData.xmze);
+    },
+    /**
+     * 计算是否超出预算
+     * @param total 预算总额
+     */
+    calcBudgetIsExceed(total) {
+      let yearTotal = 0;
+      let projectBudget = Number(total || 0);
+
+      this.yearList.forEach(year => {
+        let num = Number(this.formData[year] || 0);
+        yearTotal += num;
+      });
+
+      if (yearTotal > projectBudget) {
+        this.budgetIsExceed = true;
+      } else {
+        this.budgetIsExceed = false;
+      }
+    },
     /**
      * 获取人员花名册
      */
@@ -308,18 +354,23 @@ export default {
       });
     },
     validForm() {
-      console.log(!this.formData.lxpw)
       let errorText = '';
       if (!this.formData.xmmc) {
         errorText = '请输入项目名称';
       } else if (/技改|技术改造|推广|打样|翻新|产业化|生产线|改造|年产|示范/g.test(this.formData.xmmc)) {
         errorText = '研发项目名称,不符合统计部门的命名要求';
+      } else if (!this.formData.xmbh) {
+        errorText = '请输入项目编号'
+      } else if (!this.formData.yjlx) {
+        errorText = '请选择研究类型'
       } else if (!this.formData.xmfzr) {
         errorText = '请选择项目负责人';
       } else if (!this.formData.xmkssj) {
         errorText = '请选择项目开始时间';
       } else if (!this.formData.xmjssj) {
         errorText = '请选择项目结束时间';
+      } else if (!this.formData.xmze) {
+        errorText = '请输入项目预算总额';
       } else if (!this.formData.lxpw.length) {
         errorText = '请上传立项批文!';
       } else if (!this.formData.lxbg.length) {
@@ -432,6 +483,10 @@ tr td {
   
 }
 
+.red {
+  color: red;
+}
+
 .tip {
   position: relative;
   top: 0;

+ 23 - 3
src/views/project-manage/components/design-cost.vue

@@ -1,13 +1,21 @@
 <template>
   <div>
+    <div style="margin-top: 6px;">
+      <el-form :inline="true">
+        <el-form-item label="研发项目名称">
+          <project-select v-model="currProjectId" @change="handleProjectChange"></project-select>
+        </el-form-item>
+        <el-form-item label="研发项目编号">
+          {{ selProject.xmbh }}
+        </el-form-item>
+      </el-form>
+    </div>
     <avue-crud
       ref="crud"
       v-bind="bindVal"
       v-on="onEvent"
       v-model="form"
       :page.sync="page"
-      :before-open="handleBeforeOpen"
-      :permission="permissionList"
     >
       <template slot="menuLeft">
         <el-button
@@ -60,24 +68,36 @@
 <script>
 import {exportBloByPost} from "@/api/common";
 import UploadExcelDialog from "@/components/upload-excel-dialog";
+import projectSelect from "@/components/project-select";
 import {getToken} from "@/util/auth";
 import {downloadXls} from "@/util/util";
 
 
 export default window.$crudCommon({
+  props: {
+    projectId: [String, Number]
+  },
   components: {
     UploadExcelDialog,
+    projectSelect,
   },
   data() {
     return {
+      currProjectId: '',
+      selProject: {},
+
       wideTableColumns: [],
       printTitle: "",
     };
   },
   created() {
-    this.option.height = window.innerHeight - 270;
+    this.currProjectId = this.projectId;
+    this.option.height = window.innerHeight - 340;
   },
   methods: {
+    handleProjectChange(data) {
+      this.selProject = data;
+    },
     handleImport() {
       this.$refs.uploadExcelDialog.open('/api/kd-scientific/ys-sjfy/import');
     },

+ 55 - 25
src/views/project-manage/components/implement-form.vue

@@ -18,7 +18,7 @@
         <tr>
           <td class="doc-label">研发项目名称</td>
           <td class="doc-input">
-            <el-select
+            <!-- <el-select
               v-model="formData.xmId"
               filterable
               remote
@@ -36,7 +36,8 @@
                 :label="item.xmmc"
                 :value="item.id">
               </el-option>
-            </el-select>
+            </el-select> -->
+            <project-select v-model="currProjectId" @change="handleProjectChange"></project-select>
           </td>
           <td class="doc-label">项目申请单位</td>
           <td class="doc-input">{{ selProject.xmsqdw }}</td>
@@ -73,8 +74,25 @@
     </table>
 
     <avue-form v-model="formData" :option="option" style="margin-top: 30px; padding: 0;">
-      <template slot="jdbgType" slot-scope="{file}">
-        <span>{{file.originalName}}</span>
+      <template slot="jdbgLabel">
+        <label>季度报告</label>
+        <el-link type="primary" style="position: absolute; left: 290px;">下载模板</el-link>
+      </template>
+      <template slot="zqbgLabel">
+        <label>中期报告</label>
+        <el-link type="primary" style="position: absolute; left: 290px;">下载模板</el-link>
+      </template>
+      <template slot="ndbgLabel">
+        <label>年度报告</label>
+        <el-link type="primary" style="position: absolute; left: 290px;">下载模板</el-link>
+      </template>
+      <template slot="lcbbgLabel">
+        <label>里程碑报告</label>
+        <el-link type="primary" style="position: absolute; left: 290px;">下载模板</el-link>
+      </template>
+      <template slot="qtjdxzjbgLabel">
+        <label>其他阶段性总结报告</label>
+        <el-link type="primary" style="position: absolute; left: 290px;">下载模板</el-link>
       </template>
     </avue-form>
     <p class="tip">注:可一次上传多个相关文件(文档、表格、图片等)。 支持格式:DOC, PDF, Excel, PNG, JPG, PPT 等。 请确保文件内容清晰有效。</p>
@@ -88,10 +106,16 @@
 <script>
 import { getDictionary } from "@/api/system/dictbiz";
 import { getList as getProjectList } from "@/api/projectManage/projectList";
-import { add } from "@/api/projectManage/change";
+import projectSelect from "@/components/project-select";
 import moment from "moment";
 
 export default {
+  props: {
+    projectId: [String, Number]
+  },
+  components: {
+    projectSelect
+  },
   data() {
     return {
       formData: {},
@@ -100,11 +124,13 @@ export default {
 
       loading: false,
       projectList: [],
-      selProject: {},
 
+      currProjectId: '',
+      selProject: {},
     };
   },
   mounted() {
+    this.currProjectId = this.projectId || '';
     this.getDictList("xm_biangeng_field", "changeTypeList");
   },
   computed: {
@@ -201,6 +227,10 @@ export default {
     }
   },
   methods: {
+    handleProjectChange(data) {
+      console.log(data)
+      this.selProject = data;
+    },
     getDictList(code, toListKey) {
       getDictionary({ code }).then((res) => {
         this[toListKey] = res.data.data.map((item) => {
@@ -208,25 +238,25 @@ export default {
         });
       });
     },
-    remoteMethod(query) {
-      if (query !== '') {
-        this.loading = true;
-        setTimeout(() => {
-          this.loading = false;
-          getProjectList(1, 99999, { xmmc: query }).then(({ data }) => {
-            if (data.success) {
-              this.projectList = data.data.records;
-            }
-          })
-        }, 200);
-      } else {
-        this.projectList = [];
-      }
-    },
-    handleProjectChange(val) {
-      let currPro = this.projectList.find(item => item.id === val);
-      this.selProject = currPro;
-    },
+    // remoteMethod(query) {
+    //   if (query !== '') {
+    //     this.loading = true;
+    //     setTimeout(() => {
+    //       this.loading = false;
+    //       getProjectList(1, 99999, { xmmc: query }).then(({ data }) => {
+    //         if (data.success) {
+    //           this.projectList = data.data.records;
+    //         }
+    //       })
+    //     }, 200);
+    //   } else {
+    //     this.projectList = [];
+    //   }
+    // },
+    // handleProjectChange(val) {
+    //   let currPro = this.projectList.find(item => item.id === val);
+    //   this.selProject = currPro;
+    // },
     validForm() {
       let errorText = '';
       if (!this.formData.xmId) {

+ 23 - 5
src/views/project-manage/components/other-cost.vue

@@ -1,13 +1,22 @@
 <template>
   <div>
+    <div style="margin-top: 6px;">
+      <el-form :inline="true">
+        <el-form-item label="研发项目名称">
+          <project-select v-model="currProjectId" @change="handleProjectChange"></project-select>
+        </el-form-item>
+        <el-form-item label="研发项目编号">
+          {{ selProject.xmbh }}
+        </el-form-item>
+      </el-form>
+    </div>
+
     <avue-crud
       ref="crud"
       v-bind="bindVal"
       v-on="onEvent"
       v-model="form"
       :page.sync="page"
-      :before-open="handleBeforeOpen"
-      :permission="permissionList"
     >
       <template slot="menuLeft">
         <el-button
@@ -60,26 +69,35 @@
 <script>
 import {exportBloByPost} from "@/api/common";
 import UploadExcelDialog from "@/components/upload-excel-dialog";
+import projectSelect from "@/components/project-select";
 import {getToken} from "@/util/auth";
 import {downloadXls} from "@/util/util";
 
 
 export default window.$crudCommon({
+  props: {
+    projectId: [String, Number]
+  },
   components: {
     UploadExcelDialog,
+    projectSelect
   },
   data() {
     return {
+      currProjectId: '',
+      selProject: {},
+
       wideTableColumns: [],
       printTitle: "",
     };
   },
   created() {
-    this.option.height = window.innerHeight - 270;
+    this.currProjectId = this.projectId;
+    this.option.height = window.innerHeight - 340;
   },
   methods: {
-    handleImport() {
-      this.$refs.uploadExcelDialog.open('/api/kd-scientific/ys-qtfy/import');
+    handleProjectChange(data) {
+      this.selProject = data;
     },
     uploadAfter() {
       this.page.currentPage = 1;

+ 24 - 3
src/views/project-manage/components/outsourcing-cost.vue

@@ -1,13 +1,22 @@
 <template>
   <div>
+    <div style="margin-top: 6px;">
+      <el-form :inline="true">
+        <el-form-item label="研发项目名称">
+          <project-select v-model="currProjectId" @change="handleProjectChange"></project-select>
+        </el-form-item>
+        <el-form-item label="研发项目编号">
+          {{ selProject.xmbh }}
+        </el-form-item>
+      </el-form>
+    </div>
+
     <avue-crud
       ref="crud"
       v-bind="bindVal"
       v-on="onEvent"
       v-model="form"
       :page.sync="page"
-      :before-open="handleBeforeOpen"
-      :permission="permissionList"
     >
       <template slot="menuLeft">
         <el-button
@@ -60,24 +69,36 @@
 <script>
 import {exportBloByPost} from "@/api/common";
 import UploadExcelDialog from "@/components/upload-excel-dialog";
+import projectSelect from "@/components/project-select";
 import {getToken} from "@/util/auth";
 import {downloadXls} from "@/util/util";
 
 
 export default window.$crudCommon({
+  props: {
+    projectId: [String, Number]
+  },
   components: {
     UploadExcelDialog,
+    projectSelect
   },
   data() {
     return {
+      currProjectId: '',
+      selProject: {},
+
       wideTableColumns: [],
       printTitle: "",
     };
   },
   created() {
-    this.option.height = window.innerHeight - 270;
+    this.currProjectId = this.projectId;
+    this.option.height = window.innerHeight - 340;
   },
   methods: {
+    handleProjectChange(data) {
+      this.selProject = data;
+    },
     handleImport() {
       this.$refs.uploadExcelDialog.open('/api/kd-scientific/ys-wtwbyjkffy/import');
     },

+ 23 - 3
src/views/project-manage/components/person-cost.vue

@@ -1,13 +1,21 @@
 <template>
   <div>
+    <div style="margin-top: 6px;">
+      <el-form :inline="true">
+        <el-form-item label="研发项目名称">
+          <project-select v-model="currProjectId" @change="handleProjectChange"></project-select>
+        </el-form-item>
+        <el-form-item label="研发项目编号">
+          {{ selProject.xmbh }}
+        </el-form-item>
+      </el-form>
+    </div>
     <avue-crud
       ref="crud"
       v-bind="bindVal"
       v-on="onEvent"
       v-model="form"
       :page.sync="page"
-      :before-open="handleBeforeOpen"
-      :permission="permissionList"
     >
       <template slot="menuLeft">
         <el-button
@@ -60,24 +68,36 @@
 <script>
 import {exportBloByPost} from "@/api/common";
 import UploadExcelDialog from "@/components/upload-excel-dialog";
+import projectSelect from "@/components/project-select";
 import {getToken} from "@/util/auth";
 import {downloadXls} from "@/util/util";
 
 
 export default window.$crudCommon({
+  props: {
+    projectId: [String, Number]
+  },
   components: {
+    projectSelect,
     UploadExcelDialog,
   },
   data() {
     return {
+      currProjectId: '',
+      selProject: {},
+
       wideTableColumns: [],
       printTitle: "",
     };
   },
   created() {
-    this.option.height = window.innerHeight - 270;
+    this.currProjectId = this.projectId;
+    this.option.height = window.innerHeight - 340;
   },
   methods: {
+    handleProjectChange(data) {
+      this.selProject = data;
+    },
     handleImport() {
       let excelParams = { yearAndMonth: this.params.yearAndMonth };
       this.$refs.uploadExcelDialog.open('/api/kd-scientific/ys-ryrgfy/import', excelParams);

+ 12 - 9
src/views/project-manage/components/project-budget.vue

@@ -1,31 +1,31 @@
 <template>
   <el-tabs tab-position="left">
     <el-tab-pane label="研发项目费用预算表格" lazy>
-      <all-budget-table></all-budget-table>
+      <all-budget-table :projectId="projectId"></all-budget-table>
     </el-tab-pane>
     <el-tab-pane label="一、人员人工费用" lazy>
-      <person-cost />
+      <person-cost :projectId="projectId" />
     </el-tab-pane>
     <el-tab-pane label="二、直接投入费用" lazy>
-      <zztl-cost></zztl-cost>
+      <zztl-cost :projectId="projectId"></zztl-cost>
     </el-tab-pane>
     <el-tab-pane label="三、折旧费用与长期待摊费用" lazy>
-      <zjfyycqdtfy-cost></zjfyycqdtfy-cost>
+      <zjfyycqdtfy-cost :projectId="projectId"></zjfyycqdtfy-cost>
     </el-tab-pane>
     <el-tab-pane label="四、无形资产摊销费用" lazy>
-      <wxzctx-cost></wxzctx-cost>
+      <wxzctx-cost :projectId="projectId"></wxzctx-cost>
     </el-tab-pane>
     <el-tab-pane label="五、设计费用" lazy>
-      <design-cost></design-cost>
+      <design-cost :projectId="projectId"></design-cost>
     </el-tab-pane>
     <el-tab-pane label="六、装备调试费用与实验费用" lazy>
-      <zb-cost></zb-cost>
+      <zb-cost :projectId="projectId"></zb-cost>
     </el-tab-pane>
     <el-tab-pane label="七、委托外部研究开发费" lazy>
-      <outsourcing-cost></outsourcing-cost>
+      <outsourcing-cost :projectId="projectId"></outsourcing-cost>
     </el-tab-pane>
     <el-tab-pane label="八、其他费用" lazy>
-      <other-cost></other-cost>
+      <other-cost :projectId="projectId"></other-cost>
     </el-tab-pane>
   </el-tabs>
 </template>
@@ -42,6 +42,9 @@ import outsourcingCost from './outsourcing-cost.vue';
 import otherCost from './other-cost.vue';
 
 export default {
+  props: {
+    projectId: [String, Number]
+  },
   components: {
     allBudgetTable,
     personCost,

+ 23 - 2
src/views/project-manage/components/wxzctx-cost.vue

@@ -1,5 +1,15 @@
 <template>
   <div>
+    <div style="margin-top: 6px;">
+      <el-form :inline="true">
+        <el-form-item label="研发项目名称">
+          <project-select v-model="currProjectId" @change="handleProjectChange"></project-select>
+        </el-form-item>
+        <el-form-item label="研发项目编号">
+          {{ selProject.xmbh }}
+        </el-form-item>
+      </el-form>
+    </div>
     <avue-crud
       ref="crud"
       v-bind="bindVal"
@@ -7,7 +17,6 @@
       v-model="form"
       :page.sync="page"
       :before-open="handleBeforeOpen"
-      :permission="permissionList"
     >
       <template slot="menuLeft">
         <el-button
@@ -60,22 +69,31 @@
 <script>
 import {exportBloByPost} from "@/api/common";
 import UploadExcelDialog from "@/components/upload-excel-dialog";
+import projectSelect from "@/components/project-select";
 import {getToken} from "@/util/auth";
 import {downloadXls} from "@/util/util";
 
 
 export default window.$crudCommon({
+  props: {
+    projectId: [String, Number],
+  },
   components: {
     UploadExcelDialog,
+    projectSelect,
   },
   data() {
     return {
+      currProjectId: '',
+      selProject: {},
+
       wideTableColumns: [],
       printTitle: "",
     };
   },
   created() {
-    this.option.height = window.innerHeight - 270;
+    this.currProjectId = this.projectId;
+    this.option.height = window.innerHeight - 340;
 
     let newOption = { ...this.option };
     // 姓名下拉框,设置监听事件
@@ -94,6 +112,9 @@ export default window.$crudCommon({
     this.option = { ...newOption };
   },
   methods: {
+    handleProjectChange(data) {
+      this.selProject = data;
+    },
     handleBeforeOpen(done) {
       this.option.column.forEach(item => {
         if (item.prop == "zcmc") {

+ 24 - 3
src/views/project-manage/components/zb-cost.vue

@@ -1,13 +1,22 @@
 <template>
   <div>
+    <div style="margin-top: 6px;">
+      <el-form :inline="true">
+        <el-form-item label="研发项目名称">
+          <project-select v-model="currProjectId" @change="handleProjectChange"></project-select>
+        </el-form-item>
+        <el-form-item label="研发项目编号">
+          {{ selProject.xmbh }}
+        </el-form-item>
+      </el-form>
+    </div>
+
     <avue-crud
       ref="crud"
       v-bind="bindVal"
       v-on="onEvent"
       v-model="form"
       :page.sync="page"
-      :before-open="handleBeforeOpen"
-      :permission="permissionList"
     >
       <template slot="menuLeft">
         <el-button
@@ -60,24 +69,36 @@
 <script>
 import {exportBloByPost} from "@/api/common";
 import UploadExcelDialog from "@/components/upload-excel-dialog";
+import projectSelect from "@/components/project-select";
 import {getToken} from "@/util/auth";
 import {downloadXls} from "@/util/util";
 
 
 export default window.$crudCommon({
+  props: {
+    projectId: [String, Number]
+  },
   components: {
     UploadExcelDialog,
+    projectSelect,
   },
   data() {
     return {
+      currProjectId: '',
+      selProject: {},
+
       wideTableColumns: [],
       printTitle: "",
     };
   },
   created() {
-    this.option.height = window.innerHeight - 270;
+    this.currProjectId = this.projectId;
+    this.option.height = window.innerHeight - 340;
   },
   methods: {
+    handleProjectChange(data) {
+      this.selProject = data;
+    },
     handleImport() {
       this.$refs.uploadExcelDialog.open('/api/kd-scientific/ys-zbtsysyfy/import');
     },

+ 23 - 2
src/views/project-manage/components/zjfyycqdtfy-cost.vue

@@ -1,5 +1,15 @@
 <template>
   <div>
+    <div style="margin-top: 6px;">
+      <el-form :inline="true">
+        <el-form-item label="研发项目名称">
+          <project-select v-model="currProjectId" @change="handleProjectChange"></project-select>
+        </el-form-item>
+        <el-form-item label="研发项目编号">
+          {{ selProject.xmbh }}
+        </el-form-item>
+      </el-form>
+    </div>
     <avue-crud
       ref="crud"
       v-bind="bindVal"
@@ -7,7 +17,6 @@
       v-model="form"
       :page.sync="page"
       :before-open="handleBeforeOpen"
-      :permission="permissionList"
     >
       <template slot="menuLeft">
         <el-button
@@ -60,22 +69,31 @@
 <script>
 import {exportBloByPost} from "@/api/common";
 import UploadExcelDialog from "@/components/upload-excel-dialog";
+import projectSelect from "@/components/project-select";
 import {getToken} from "@/util/auth";
 import {downloadXls} from "@/util/util";
 
 
 export default window.$crudCommon({
+  props: {
+    projectId: [String, Number]
+  },
   components: {
     UploadExcelDialog,
+    projectSelect,
   },
   data() {
     return {
+      currProjectId: '',
+      selProject: {},
+
       wideTableColumns: [],
       printTitle: "",
     };
   },
   created() {
-    this.option.height = window.innerHeight - 270;
+    this.currProjectId = this.projectId;
+    this.option.height = window.innerHeight - 340;
 
     let newOption = { ...this.option };
     // 姓名下拉框,设置监听事件
@@ -94,6 +112,9 @@ export default window.$crudCommon({
     this.option = { ...newOption };
   },
   methods: {
+    handleProjectChange(data) {
+      this.selProject = data;
+    },
     handleBeforeOpen(done) {
       this.option.column.forEach(item => {
         if (item.prop == "zcmc") {

+ 23 - 3
src/views/project-manage/components/zztl-cost.vue

@@ -1,12 +1,20 @@
 <template>
   <div>
+    <div style="margin-top: 6px;">
+      <el-form :inline="true">
+        <el-form-item label="研发项目名称">
+          <project-select v-model="currProjectId" @change="handleProjectChange"></project-select>
+        </el-form-item>
+        <el-form-item label="研发项目编号">
+          {{ selProject.xmbh }}
+        </el-form-item>
+      </el-form>
+    </div>
     <avue-crud
       v-bind="bindVal"
       v-on="onEvent"
       v-model="form"
       :page.sync="page"
-      :before-open="handleBeforeOpen"
-      :permission="permissionList"
     >
       <template slot="menuLeft">
         <el-button
@@ -59,24 +67,36 @@
 <script>
 import {exportBloByPost} from "@/api/common";
 import UploadExcelDialog from "@/components/upload-excel-dialog";
+import projectSelect from "@/components/project-select";
 import {getToken} from "@/util/auth";
 import {downloadXls} from "@/util/util";
 
 
 export default window.$crudCommon({
+  props: {
+    projectId: [String, Number]
+  },
   components: {
     UploadExcelDialog,
+    projectSelect,
   },
   data() {
     return {
+      currProjectId: '',
+      selProject: {},
+
       wideTableColumns: [],
       printTitle: "",
     };
   },
   created() {
-    this.option.height = window.innerHeight - 270;
+    this.currProjectId = this.projectId;
+    this.option.height = window.innerHeight - 340;
   },
   methods: {
+    handleProjectChange(data) {
+      this.selProject = data;
+    },
     handleImport() {
       let excelParams = { yearAndMonth: this.params.yearAndMonth };
       this.$refs.uploadExcelDialog.open('/api/kd-scientific/ys-zjtrfy/import', excelParams);

+ 3 - 1
src/views/project-manage/project-list.vue

@@ -57,7 +57,7 @@
           <apply-form></apply-form>
         </el-tab-pane>
         <el-tab-pane label="2、科研预算" lazy>
-          <project-budget></project-budget>
+          <project-budget :projectId="currProjectId"></project-budget>
         </el-tab-pane>
         <el-tab-pane label="3、项目实施" lazy>
           <implement-form></implement-form>
@@ -107,6 +107,8 @@ export default window.$crudCommon({
       printTitle: "",
 
       drawerVisible: false,
+
+      currProjectId: '1940980024879341569'
     };
   },
   watch: {