Browse Source

项目费用模块调整

ljb 8 months ago
parent
commit
5d21c655b6

File diff suppressed because it is too large
+ 18267 - 127
package-lock.json


+ 2 - 0
package.json

@@ -21,9 +21,11 @@
     "decimal.js": "^10.5.0",
     "echarts": "^6.0.0",
     "element-ui": "^2.15.6",
+    "file-saver": "^2.0.5",
     "js-base64": "^2.5.1",
     "js-cookie": "^2.2.0",
     "js-md5": "^0.7.3",
+    "jszip": "^3.10.1",
     "mockjs": "^1.0.1-beta3",
     "moment": "^2.30.1",
     "node-gyp": "^5.0.6",

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

@@ -50,8 +50,8 @@ export default {
     }
   },
   watch: {
-    value(newVal) {
-      this.xmId = newVal;
+    value(newVal, oldVal) {
+      this.xmId = newVal;      
     }
   },
   mounted() {

+ 0 - 9
src/option/projectManage/wxzctxCost.js

@@ -22,15 +22,6 @@ export default {
       type: 'select',
       minWidth: 220,
       span: 24,
-      dicUrl: '/api/kd-scientific/asset/simple/list',
-      dicFormatter:(res)=>{
-        return res.data.filter(item => "软件,专利权,非专利技术,其他".indexOf(item.zclb) > -1)
-      },
-      props: {
-        label: 'zcmc',
-        value: 'zcbm',
-      },
-      dicFlag: true,
       showOverflowTooltip: true,
       rules: [{
         required: true,

+ 0 - 10
src/option/projectManage/zjfyycqdtfyCost.js

@@ -20,18 +20,8 @@ export default {
       label: '资产名称',
       prop: 'assetId',
       type: 'select',
-      filterable: true,
       minWidth: 140,
       span: 24,
-      dicUrl: '/api/kd-scientific/asset/simple/list',
-      dicFormatter:(res)=>{
-        return res.data.filter(item => "仪器设备,房屋建筑物".indexOf(item.zclb) > -1)
-      },
-      props: {
-        label: 'zcmc',
-        value: 'id',
-      },
-      dicFlag: true,
       showOverflowTooltip: true,
       rules: [{
         required: true,

+ 0 - 8
src/views/archive-manage/archive-list.vue

@@ -58,13 +58,6 @@
       </template>
       
     </avue-crud>
-
-    <!-- <div class="file-temp-list">
-      <div class="row"><el-link @click="handleDownTemp('template1')">模板:当年和前两个会计年度研发费用总额及占同期销售收入比例的说明.doc</el-link></div>
-      <div class="row"><el-link @click="handleDownTemp('template2')">模板:年度职工和科技人员情况说明.doc</el-link></div>
-      <div class="row"><el-link @click="handleDownTemp('template3')">模板:年度主要产品(服务)发挥核心支持作用的技术属于《国家重点支持的高新技术领域》规定范围的说明.doc</el-link></div>
-      <div class="row"><el-link @click="handleDownTemp('template4')">模版:研发费用结构明细表.xls</el-link></div>
-    </div> -->
   </basic-container>
 </template>
 
@@ -76,7 +69,6 @@ import {downloadXls, downloadFileByUrl} from "@/util/util";
 import moment from "moment";
 import { getDictValueByKey } from '@/api/system/dict';
 import { mapGetters } from "vuex";
-import { computed } from "vue";
 
 
 export default window.$crudCommon({

+ 16 - 3
src/views/archive-manage/file-supplement.vue

@@ -31,9 +31,9 @@
         <year-month-select v-model="params.year" :showMonth="false"></year-month-select>
       </template>
 
-      <template slot="menu" slot-scope="{row}">
+      <!-- <template slot="menu" slot-scope="{row}">
         <el-button type="text" icon="el-icon-download" size="mini" @click="handleRowDown(row)">下载</el-button>
-      </template>
+      </template> -->
 
       <template slot="fileList" slot-scope="{row}">
         <el-link
@@ -66,6 +66,8 @@ import {downloadXls, downloadFileByUrl} from "@/util/util";
 import moment from "moment";
 import { getDictValueByKey } from '@/api/system/dict';
 import { mapGetters } from "vuex";
+import JSZip from "jszip";
+import FileSaver from "file-saver";
 
 
 export default window.$crudCommon({
@@ -190,8 +192,19 @@ export default window.$crudCommon({
         downloadXls(res.data, `${this.pageTitle}.zip`);
       });
     },
-    handleRowDown() {
+    handleRowDown(row) {
       this.$message.warning("功能建设中...");
+      // console.log(row)
+      // if (row.fileList.length) {
+      //   const promiseArr = row.fileList.map(item => {
+      //     return exportBlob('')
+      //   });
+      //   Promise.all(promiseArr).then((res) => {
+      //     // zip
+      //     console.log(res)
+      //   })
+      // }
+      
     },
     getFormData() {
       return { id: this.form.id, yearAndMonth: this.params.year, [`d${this.currIndex}`]: JSON.stringify(this.form.fileList) }

+ 8 - 4
src/views/project-manage/components/all-budget-table.vue

@@ -2,8 +2,8 @@
   <div v-loading="loading">
     <div class="container">
       <div class="operate-btn" style="text-align: right; margin: 10px 16px;">
-        <el-button @click="handleRefresh">刷新</el-button>
-        <el-button type="primary" v-print="'#budgetWrap'">打印</el-button>
+        <el-button size="small" icon="el-icon-refresh" @click="handleRefresh">刷新</el-button>
+        <el-button size="small" type="primary" icon="el-icon-printer" v-print="'#budgetWrap'">打印</el-button>
       </div>
       <table id="budgetWrap" class="doc-page">
         <thead>
@@ -72,7 +72,8 @@ import Decimal from "decimal.js";
 
 export default {
   props: {
-    projectId: [String, Number]
+    projectId: [String, Number],
+    projectData: Object
   },
   components: {
     projectSelect,
@@ -114,8 +115,11 @@ export default {
     },
   },
   watch: {
-    projectId(newVal) {
+    projectId(newVal, oldVal) {
       this.currProjectId = newVal;
+      if (oldVal) {
+        this.selProject = this.projectData;
+      }
     },
     currProjectId(newVal) {
       if (!!newVal) {

+ 6 - 2
src/views/project-manage/components/design-cost.vue

@@ -66,7 +66,8 @@ import {downloadXls} from "@/util/util";
 
 export default window.$crudCommon({
   props: {
-    projectId: [String, Number]
+    projectId: [String, Number],
+    projectData: Object
   },
   components: {
     UploadExcelDialog,
@@ -82,8 +83,11 @@ export default window.$crudCommon({
     };
   },
   watch: {
-    projectId(newVal) {
+    projectId(newVal, oldVal) {
       this.params.xmId = newVal;
+      if (oldVal) {
+        this.selProject = this.projectData;
+      }
     },
     "params.xmId"() {
       this.page.currentPage = 1;

+ 6 - 2
src/views/project-manage/components/other-cost.vue

@@ -68,7 +68,8 @@ import {downloadXls} from "@/util/util";
 
 export default window.$crudCommon({
   props: {
-    projectId: [String, Number]
+    projectId: [String, Number],
+    projectData: Object
   },
   components: {
     UploadExcelDialog,
@@ -84,8 +85,11 @@ export default window.$crudCommon({
     };
   },
   watch: {
-    projectId(newVal) {
+    projectId(newVal, oldVal) {
       this.params.xmId = newVal;
+      if (oldVal) {
+        this.selProject = this.projectData;
+      }
     },
     "params.xmId"() {
       this.page.currentPage = 1;

+ 6 - 2
src/views/project-manage/components/outsourcing-cost.vue

@@ -68,7 +68,8 @@ import {downloadXls} from "@/util/util";
 
 export default window.$crudCommon({
   props: {
-    projectId: [String, Number]
+    projectId: [String, Number],
+    projectData: Object
   },
   components: {
     UploadExcelDialog,
@@ -84,8 +85,11 @@ export default window.$crudCommon({
     };
   },
   watch: {
-    projectId(newVal) {
+    projectId(newVal, oldVal) {
       this.params.xmId = newVal;
+      if (oldVal) {
+        this.selProject = this.projectData;
+      }
     },
     "params.xmId"() {
       this.page.currentPage = 1;

+ 6 - 2
src/views/project-manage/components/person-cost.vue

@@ -74,7 +74,8 @@ import moment from "moment";
 
 export default window.$crudCommon({
   props: {
-    projectId: [String, Number]
+    projectId: [String, Number],
+    projectData: Object
   },
   components: {
     projectSelect,
@@ -97,8 +98,11 @@ export default window.$crudCommon({
     this.option.height = window.innerHeight - 340;
   },
   watch: {
-    projectId(newVal) {
+    projectId(newVal, oldVal) {
       this.params.xmId = newVal;
+      if (oldVal) {
+        this.selProject = this.projectData;
+      }
     },
     "params.xmId"() {
       this.page.currentPage = 1;

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

@@ -2,31 +2,31 @@
   <div>
     <el-tabs tab-position="left">
       <el-tab-pane label="研发项目费用预算表格" lazy>
-        <all-budget-table :projectId="currProjectId" @change="handleProjectChange"></all-budget-table>
+        <all-budget-table :projectId="currProjectId" :projectData="currProjectData" @change="handleProjectChange"></all-budget-table>
       </el-tab-pane>
       <el-tab-pane label="一、人员人工费用" lazy>
-        <person-cost :projectId="currProjectId" @change="handleProjectChange" @printClick="handlePrintClick" />
+        <person-cost :projectId="currProjectId" :projectData="currProjectData" @change="handleProjectChange" @printClick="handlePrintClick" />
       </el-tab-pane>
       <el-tab-pane label="二、直接投入费用" lazy>
-        <zztl-cost :projectId="currProjectId" @change="handleProjectChange" @printClick="handlePrintClick"></zztl-cost>
+        <zztl-cost :projectId="currProjectId" :projectData="currProjectData" @change="handleProjectChange" @printClick="handlePrintClick"></zztl-cost>
       </el-tab-pane>
       <el-tab-pane label="三、折旧费用与长期待摊费用" lazy>
-        <zjfyycqdtfy-cost :projectId="currProjectId" @change="handleProjectChange" @printClick="handlePrintClick"></zjfyycqdtfy-cost>
+        <zjfyycqdtfy-cost :projectId="currProjectId" :projectData="currProjectData" :projectStartMonth="projectStartMonth" @change="handleProjectChange" @printClick="handlePrintClick"></zjfyycqdtfy-cost>
       </el-tab-pane>
       <el-tab-pane label="四、无形资产摊销费用" lazy>
-        <wxzctx-cost :projectId="currProjectId" @change="handleProjectChange" @printClick="handlePrintClick"></wxzctx-cost>
+        <wxzctx-cost :projectId="currProjectId" :projectData="currProjectData" :projectStartMonth="projectStartMonth" @change="handleProjectChange" @printClick="handlePrintClick"></wxzctx-cost>
       </el-tab-pane>
       <el-tab-pane label="五、设计费用" lazy>
-        <design-cost :projectId="currProjectId" @change="handleProjectChange" @printClick="handlePrintClick"></design-cost>
+        <design-cost :projectId="currProjectId" :projectData="currProjectData" @change="handleProjectChange" @printClick="handlePrintClick"></design-cost>
       </el-tab-pane>
       <el-tab-pane label="六、装备调试费用与实验费用" lazy>
-        <zb-cost :projectId="currProjectId" @change="handleProjectChange" @printClick="handlePrintClick"></zb-cost>
+        <zb-cost :projectId="currProjectId" :projectData="currProjectData" @change="handleProjectChange" @printClick="handlePrintClick"></zb-cost>
       </el-tab-pane>
       <el-tab-pane label="七、委托外部研究开发费" lazy>
-        <outsourcing-cost :projectId="currProjectId" @change="handleProjectChange" @printClick="handlePrintClick"></outsourcing-cost>
+        <outsourcing-cost :projectId="currProjectId" :projectData="currProjectData" @change="handleProjectChange" @printClick="handlePrintClick"></outsourcing-cost>
       </el-tab-pane>
       <el-tab-pane label="八、其他费用" lazy>
-        <other-cost :projectId="currProjectId" @change="handleProjectChange" @printClick="handlePrintClick"></other-cost>
+        <other-cost :projectId="currProjectId" :projectData="currProjectData" @change="handleProjectChange" @printClick="handlePrintClick"></other-cost>
       </el-tab-pane>
     </el-tabs>
     <WideTablePrinter
@@ -51,6 +51,7 @@ import designCost from './design-cost.vue';
 import zbCost from './zb-cost.vue';
 import outsourcingCost from './outsourcing-cost.vue';
 import otherCost from './other-cost.vue';
+import moment from "moment";
 
 export default {
   props: {
@@ -69,7 +70,9 @@ export default {
   },
   data() {
     return {
+      currProjectData: {},
       currProjectId: "",
+      projectStartMonth: "",
 
       printTitle: "",
       wideTableColumns: [],
@@ -82,6 +85,8 @@ export default {
   methods: {
     handleProjectChange(data) {
       this.currProjectId = data.id;
+      this.currProjectData = data;
+      this.projectStartMonth = moment(this.currProjectId.xmkssj).format('yyyyMM');
     },
     handlePrintClick(data) {
       this.printTitle = data.pageTitle;

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

@@ -54,6 +54,14 @@
       <template slot="zcbm" slot-scope="scope">
         <span>{{ scope.row.zcmc }}</span>
       </template>
+
+      <template slot="zcbmForm">
+        <asset-select
+          v-model="form.zcbm"
+          :params="{ yearAndMonth: projectStartMonth, zclb: '软件,专利权,非专利技术,其他' }"
+          @change="handleAssetChange"
+        ></asset-select>
+      </template>
       
     </avue-crud>
 
@@ -69,15 +77,20 @@ import {getToken} from "@/util/auth";
 import {downloadXls} from "@/util/util";
 import moment from "moment";
 import Decimal from "decimal.js";
+import assetSelect from "@/components/asset-select";
+
 
 
 export default window.$crudCommon({
   props: {
     projectId: [String, Number],
+    projectData: Object,
+    projectStartMonth: [String, Number]
   },
   components: {
     UploadExcelDialog,
     projectSelect,
+    assetSelect
   },
   data() {
     return {
@@ -92,23 +105,13 @@ export default window.$crudCommon({
   created() {
     this.params.xmId = this.projectId;
     this.option.height = window.innerHeight - 340;
-
-    let newOption = { ...this.option };
-    // 姓名下拉框,设置监听事件
-    newOption.column.forEach(item => {
-      if (item.prop == "zcbm") {
-        item.change = ({ item }) => {
-          if (!!item) {
-            this.currZcObj = item;
-          }
-        }
-      }
-    });
-    this.option = { ...newOption };
   },
   watch: {
-    projectId(newVal) {
+    projectId(newVal, oldVal) {
       this.params.xmId = newVal;
+      if (oldVal) {
+        this.selProject = this.projectData;
+      }
     },
     "params.xmId"() {
       this.page.currentPage = 1;
@@ -154,18 +157,12 @@ export default window.$crudCommon({
       callback && callback();
     },
     handleBeforeOpen(done) {
-      if (!this.params.xmId) {
+      if (!this.projectStartMonth) {
         this.$message.warning("请选择项目!");
         return;
       }
       this.currZcObj = {};
-      // this.option.column.forEach(item => {
-      //   let yearAndMonth = this.selProject.xmkssj || new Date();
-      //   if (item.prop == "zcbm") {
-      //     item.dicUrl = '/api/kd-scientific/asset/simple/list';
-      //     item.dicQuery.yearAndMonth = moment(yearAndMonth).format("yyyyMM");
-      //   }
-      // });
+
       done();
     },
     getList() {
@@ -181,6 +178,9 @@ export default window.$crudCommon({
       this.selProject = data;
       this.$emit("change", data);
     },
+    handleAssetChange(data) {
+      this.currZcObj = data;
+    },
     handleImport() {
       if (!this.params.xmId) {
         this.$message.warning("请选择项目!");

+ 6 - 2
src/views/project-manage/components/zb-cost.vue

@@ -68,7 +68,8 @@ import {downloadXls} from "@/util/util";
 
 export default window.$crudCommon({
   props: {
-    projectId: [String, Number]
+    projectId: [String, Number],
+    projectData: Object
   },
   components: {
     UploadExcelDialog,
@@ -84,8 +85,11 @@ export default window.$crudCommon({
     };
   },
   watch: {
-    projectId(newVal) {
+    projectId(newVal, oldVal) {
       this.params.xmId = newVal;
+      if (oldVal) {
+        this.selProject = this.projectData;
+      }
     },
     "params.xmId"() {
       this.page.currentPage = 1;

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

@@ -54,6 +54,14 @@
       <template slot="assetId" slot-scope="scope">
         <span>{{ scope.row.zcmc }}</span>
       </template>
+
+      <template slot="assetIdForm">
+        <asset-select
+          v-model="form.assetId"
+          :params="{ yearAndMonth: projectStartMonth, zclb: '仪器设备,房屋建筑物' }"
+          @change="handleAssetChange"
+        ></asset-select>
+      </template>
       
     </avue-crud>
 
@@ -69,15 +77,20 @@ import {getToken} from "@/util/auth";
 import {downloadXls} from "@/util/util";
 import moment from "moment";
 import Decimal from "decimal.js";
+import assetSelect from "@/components/asset-select";
+
 
 
 export default window.$crudCommon({
   props: {
-    projectId: [String, Number]
+    projectId: [String, Number],
+    projectData: Object,
+    projectStartMonth: [String, Number]
   },
   components: {
     UploadExcelDialog,
     projectSelect,
+    assetSelect
   },
   data() {
     return {
@@ -90,8 +103,11 @@ export default window.$crudCommon({
     };
   },
   watch: {
-    projectId(newVal) {
+    projectId(newVal, oldVal) {
       this.params.xmId = newVal;
+      if (oldVal) {
+        this.selProject = this.projectData;
+      }
     },
     "params.xmId"() {
       this.page.currentPage = 1;
@@ -101,24 +117,11 @@ export default window.$crudCommon({
   computed: {
     pageTitle() {
       return `${this.selProject.xmmc}折旧费用与长期待摊费用`;
-    }
+    },
   },
   created() {
     this.params.xmId = this.projectId;
     this.option.height = window.innerHeight - 340;
-
-    let newOption = { ...this.option };
-    // 姓名下拉框,设置监听事件
-    newOption.column.forEach(item => {
-      if (item.prop == "assetId") {
-        item.change = ({ item }) => {
-          if (!!item) {
-            this.currZcObj = item;
-          }
-        }
-      }
-    });
-    this.option = { ...newOption };
   },
   methods: {
     validCustom() {
@@ -154,18 +157,11 @@ export default window.$crudCommon({
       callback && callback();
     },
     handleBeforeOpen(done) {
-      if (!this.params.xmId) {
+      if (!this.projectStartMonth) {
         this.$message.warning("请选择项目!");
         return;
       }
       this.currZcObj = {};
-      // this.option.column.forEach(item => {
-      //   let yearAndMonth = this.selProject.xmkssj || new Date();
-      //   if (item.prop == "zcbm") {
-      //     item.dicUrl = '/api/kd-scientific/asset/simple/list';
-      //     item.dicQuery.yearAndMonth = moment(yearAndMonth).format("yyyyMM");
-      //   }
-      // });
       done();
     },
     getList() {
@@ -181,6 +177,9 @@ export default window.$crudCommon({
       this.selProject = data;
       this.$emit("change", data);
     },
+    handleAssetChange(data) {
+      this.currZcObj = data;
+    },
     handleImport() {
       if (!this.params.xmId) {
         this.$message.warning("请选择项目!");
@@ -216,8 +215,6 @@ export default window.$crudCommon({
   name: 'projectManage/zjfyycqdtfyCost',
   res: ({ data }) => {
     data.records = data.records.map(item => {
-      // item.zcmc = item.zcmc;
-      // item.zcbm = item.zcbm;
       item.yzje = Number((item.yzje || 0)).toFixed(2);
       item.cqdtfyysje = Number((item.cqdtfyysje || 0)).toFixed(2);
 

+ 7 - 2
src/views/project-manage/components/zztl-cost.vue

@@ -67,7 +67,8 @@ import Decimal from "decimal.js";
 
 export default window.$crudCommon({
   props: {
-    projectId: [String, Number]
+    projectId: [String, Number],
+    projectData: Object,
   },
   components: {
     UploadExcelDialog,
@@ -83,8 +84,12 @@ export default window.$crudCommon({
     };
   },
   watch: {
-    projectId(newVal) {
+    projectId(newVal, oldVal) {
       this.params.xmId = newVal;
+
+      if (oldVal) {
+        this.selProject = this.projectData;
+      }
     },
     "params.xmId"() {
       this.page.currentPage = 1;

File diff suppressed because it is too large
+ 9031 - 9000
yarn.lock