Browse Source

Merge branches 'kd-dev' and 'kd-dev' of https://gitee.com/zhoulisky/kd-web into kd-dev

zhouli 10 months ago
parent
commit
75aa93d0ea
28 changed files with 1688 additions and 128 deletions
  1. 1 28
      src/api/basicResource/auxiliaryAccounting.js
  2. 8 6
      src/api/basicResource/compSubjectSetting.js
  3. 23 0
      src/api/basicResource/subjectSetting.js
  4. 13 0
      src/api/externalReports/gxAuxiliaryDetails.js
  5. 13 0
      src/api/externalReports/gxAuxiliarySumList.js
  6. 4 4
      src/api/yfCostManage/basicDataSetting/workHoursRecords.js
  7. 4 4
      src/api/yfCostManage/basicDataSetting/yfCostBill.js
  8. 3 1
      src/option/basicResource/auxiliaryAccounting.js
  9. 3 3
      src/option/basicResource/compSubjectSetting.js
  10. 149 0
      src/option/externalReports/gxAuxiliaryDetails.js
  11. 117 0
      src/option/externalReports/gxAuxiliarySumList.js
  12. 43 19
      src/option/yfCostManage/basicDataSetting/workHoursRecords.js
  13. 19 9
      src/option/yfCostManage/basicDataSetting/yfCostBill.js
  14. 4 2
      src/views/basic-resource/basic-database/auxiliary-accounting.vue
  15. 37 5
      src/views/basic-resource/basic-database/comp-subject-setting.vue
  16. 34 5
      src/views/basic-resource/basic-database/subject-setting.vue
  17. 217 0
      src/views/external-reports/external-manage/high-comp-annual-report.vue
  18. 349 0
      src/views/external-reports/external-manage/high-comp-discount-details.vue
  19. 289 0
      src/views/external-reports/external-manage/torch-develop-annual-report.vue
  20. 109 0
      src/views/external-reports/high-tech/gx-auxiliary-details.vue
  21. 92 0
      src/views/external-reports/high-tech/gx-auxiliary-sum-list.vue
  22. 0 6
      src/views/external-reports/jjkc-standards/jjkc-auxiliary-sum-list.vue
  23. 0 6
      src/views/external-reports/kj-standards/kj-auxiliary-details.vue
  24. 0 6
      src/views/external-reports/kj-standards/kj-auxiliary-sum-list.vue
  25. 1 1
      src/views/project-manage/components/change-form.vue
  26. 1 4
      src/views/yf-cost-manage/basic-data-setting/dev-work-hours-register.vue
  27. 111 9
      src/views/yf-cost-manage/basic-data-setting/working-hours-records.vue
  28. 44 10
      src/views/yf-cost-manage/basic-data-setting/yf-cost-bill.vue

+ 1 - 28
src/api/basicResource/auxiliaryAccounting.js

@@ -2,7 +2,7 @@ import request from '@/router/axios';
 
 export const getList = (current, size, params) => {
   return request({
-    url: '/api/kd-scientific//page',
+    url: '/api/kd-scientific/xm/assist/list',
     method: 'get',
     params: {
       ...params,
@@ -11,30 +11,3 @@ export const getList = (current, size, params) => {
     }
   })
 }
-
-export const add = (row) => {
-  return request({
-    url: '/api/kd-scientific//save',
-    method: 'post',
-    data: row
-  })
-}
-
-
-export const update = (row) => {
-  return request({
-    url: '/api/kd-scientific//update',
-    method: 'post',
-    data: row
-  })
-}
-
-
-export const remove = (data) => {
-  return request({
-    url: '/api/kd-scientific//remove',
-    method: 'post',
-    data
-  })
-}
-

+ 8 - 6
src/api/basicResource/compSubjectSetting.js

@@ -2,7 +2,7 @@ import request from '@/router/axios';
 
 export const getList = (current, size, params) => {
   return request({
-    url: '/api/kd-scientific//page',
+    url: '/api/kd-scientific/subject/enterprise/page',
     method: 'get',
     params: {
       ...params,
@@ -14,7 +14,7 @@ export const getList = (current, size, params) => {
 
 export const add = (row) => {
   return request({
-    url: '/api/kd-scientific//save',
+    url: '/api/kd-scientific/subject/enterprise/submit',
     method: 'post',
     data: row
   })
@@ -23,18 +23,20 @@ export const add = (row) => {
 
 export const update = (row) => {
   return request({
-    url: '/api/kd-scientific//update',
+    url: '/api/kd-scientific/subject/enterprise/submit',
     method: 'post',
     data: row
   })
 }
 
 
-export const remove = (data) => {
+export const remove = (ids) => {
   return request({
-    url: '/api/kd-scientific//remove',
+    url: '/api/kd-scientific/subject/enterprise/remove',
     method: 'post',
-    data
+    params: {
+      ids
+    }
   })
 }
 

+ 23 - 0
src/api/basicResource/subjectSetting.js

@@ -7,3 +7,26 @@ export const getList = (params) => {
     params
   })
 }
+
+export const add = data => {
+  return request({
+    url: '/api/kd-scientific/subject/submit',
+    method: 'post',
+    data
+  })
+}
+
+export const update = data => {
+  return request({
+    url: '/api/kd-scientific/subject/submit',
+    method: 'post',
+    data
+  })
+}
+
+export const remove = (id) => {
+  return request({
+    url: `/api/kd-scientific/subject/remove/${id}`,
+    method: 'delete',
+  })
+}

+ 13 - 0
src/api/externalReports/gxAuxiliaryDetails.js

@@ -0,0 +1,13 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/kd-scientific/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}

+ 13 - 0
src/api/externalReports/gxAuxiliarySumList.js

@@ -0,0 +1,13 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/kd-scientific/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}

+ 4 - 4
src/api/yfCostManage/basicDataSetting/workHoursRecords.js

@@ -2,7 +2,7 @@ import request from '@/router/axios';
 
 export const getList = (current, size, params) => {
   return request({
-    url: '/api/kd-scientific/attendance/page',
+    url: '/api/kd-scientific/xm/technician/hours/page',
     method: 'get',
     params: {
       ...params,
@@ -14,7 +14,7 @@ export const getList = (current, size, params) => {
 
 export const add = (row) => {
   return request({
-    url: '/api/kd-scientific/attendance/submit',
+    url: '/api/kd-scientific/xm/technician/hours/submit/batch',
     method: 'post',
     data: row
   })
@@ -23,7 +23,7 @@ export const add = (row) => {
 
 export const update = (row) => {
   return request({
-    url: '/api/kd-scientific/attendance/submit',
+    url: '/api/kd-scientific/xm/technician/hours/submit/batch',
     method: 'post',
     data: row
   })
@@ -32,7 +32,7 @@ export const update = (row) => {
 
 export const remove = (data) => {
   return request({
-    url: '/api/kd-scientific/attendance/remove',
+    url: '/api/kd-scientific/xm/technician/hours/clear/batch',
     method: 'post',
     data
   })

+ 4 - 4
src/api/yfCostManage/basicDataSetting/yfCostBill.js

@@ -2,7 +2,7 @@ import request from '@/router/axios';
 
 export const getList = (current, size, params) => {
   return request({
-    url: '/api/kd-scientific/direct-cost/page',
+    url: '/api/kd-scientific/xm/cost/details/page',
     method: 'get',
     params: {
       ...params,
@@ -14,7 +14,7 @@ export const getList = (current, size, params) => {
 
 export const add = (row) => {
   return request({
-    url: '/api/kd-scientific/direct-cost/submit',
+    url: '/api/kd-scientific/xm/cost/details/submit',
     method: 'post',
     data: row
   })
@@ -23,7 +23,7 @@ export const add = (row) => {
 
 export const update = (row) => {
   return request({
-    url: '/api/kd-scientific/direct-cost/submit',
+    url: '/api/kd-scientific/xm/cost/details/submit',
     method: 'post',
     data: row
   })
@@ -32,7 +32,7 @@ export const update = (row) => {
 
 export const remove = (ids) => {
   return request({
-    url: '/api/kd-scientific/direct-cost/remove',
+    url: '/api/kd-scientific/xm/cost/details/remove',
     method: 'post',
     params: {
       ids

+ 3 - 1
src/option/basicResource/auxiliaryAccounting.js

@@ -9,6 +9,8 @@ export default {
   labelWidth: 110,
   menuWidth: 140,
   menu: false,
+  addBtn: false,
+  index: true,
   dialogClickModal: false,
   dialogWidth: 500,
   dialogType: "drawer",
@@ -24,7 +26,7 @@ export default {
     },
     {
       label: '研发项目名称',
-      prop: 'name',
+      prop: 'xmmc',
       span: 24,
       minWidth: 200,
       search: true,

+ 3 - 3
src/option/basicResource/compSubjectSetting.js

@@ -66,7 +66,7 @@ export default {
     },
     {
       label: '对应会计科目',
-      prop: 'dykjkm',
+      prop: 'subjectName',
       minWidth: 160,
       search: true,
       showOverflowTooltip: true,
@@ -74,7 +74,7 @@ export default {
     },
     {
       label: '对应高新研发费用科目',
-      prop: 'dygxyffykm',
+      prop: 'rdSubject',
       minWidth: 160,
       search: true,
       showOverflowTooltip: true,
@@ -82,7 +82,7 @@ export default {
     },
     {
       label: '对应加计扣除研发费用科目',
-      prop: 'dyjjkcyffykm',
+      prop: 'adSubject',
       minWidth: 160,
       search: true,
       showOverflowTooltip: true,

+ 149 - 0
src/option/externalReports/gxAuxiliaryDetails.js

@@ -0,0 +1,149 @@
+export default {
+  height: 'auto',
+  calcHeight: 30,
+  tip: false,
+  searchShow: true,
+  searchMenuSpan: 6,
+  border: true,
+  index: true,
+  addBtn: false,
+  selection: true,
+  searchLabelWidth: 140,
+  labelWidth: 100,
+  menuWidth: 180,
+  menu: false,
+  dialogClickModal: false,
+  dialogWidth: 500,
+  dialogType: "drawer",
+  column: [
+    {
+      label: '研发项目名称',
+      prop: 'xmmc',
+      search: true,
+      hide: true,
+    },
+    {
+      label: '凭证日期',
+      prop: 'pzrq',
+      type: 'date',
+      valueFormat: 'yyyy-MM-dd',
+      span: 24,
+      width: 90,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '凭证字号',
+      prop: 'pzzh',
+      span: 24,
+      width: 120,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '摘要',
+      prop: 'zy',
+      span: 24,
+      width: 160,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '1、人员人工',
+      prop: 'ryrg',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '2、直接投入',
+      prop: 'zjtl',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '3、折旧费用与长期摊销费用',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 110,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '4、设计费',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '5、无形资产摊销',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '6、装备调试费用与试验费用',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 110,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '7-1、其他费用',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '7-2、其他费用限额',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '7-3、调整后其他费用',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '8、委外研发',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '合计',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '账簿名称',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+  ],
+};

+ 117 - 0
src/option/externalReports/gxAuxiliarySumList.js

@@ -0,0 +1,117 @@
+export default {
+  height: 'auto',
+  calcHeight: 30,
+  tip: false,
+  searchShow: true,
+  searchMenuSpan: 6,
+  border: true,
+  index: true,
+  addBtn: false,
+  selection: true,
+  searchLabelWidth: 140,
+  labelWidth: 100,
+  menuWidth: 180,
+  menu: false,
+  dialogClickModal: false,
+  dialogWidth: 500,
+  dialogType: "drawer",
+  column: [
+    {
+      label: '研发项目编号',
+      prop: 'xmbh',
+      span: 24,
+      width: 100,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '研发项目名称(RD)',
+      prop: 'xmmc',
+      span: 24,
+      minWidth: 160,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '1、人员人工',
+      prop: 'ryrg',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '2、直接投入',
+      prop: 'zjtl',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '3、折旧费用与长期摊销费用',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 110,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '4、设计费',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '5、无形资产摊销',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '6、装备调试费用与试验费用',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 110,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '7、其他费用',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '8、委外研发',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '合计',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '账簿名称',
+      prop: 'cqdt',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+  ],
+};

+ 43 - 19
src/option/yfCostManage/basicDataSetting/workHoursRecords.js

@@ -7,14 +7,37 @@ export default {
   border: true,
   index: true,
   selection: true,
+  addBtn: false,
+  delBtnText: '清除工时数据',
   searchLabelWidth: 140,
   labelWidth: 100,
-  menuWidth: 140,
+  menuWidth: 190,
   dialogClickModal: false,
   dialogWidth: 500,
   dialogType: "drawer",
   column: [
     {
+      label: '研发项目编号',
+      prop: 'xmbh',
+      span: 24,
+      width: 100,
+      align: 'center',
+      type: 'input',
+      showOverflowTooltip: true,
+      disabled: true,
+    },
+    {
+      label: '研发项目名称',
+      prop: 'xmmc',
+      type: 'input',
+      span: 24,
+      width: 110,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+      disabled: true,
+    },
+    {
       label: '姓名',
       prop: 'name',
       span: 24,
@@ -22,22 +45,23 @@ export default {
       width: 90,
       cell: true,
       align: 'center',
-      type: 'select',
+      // type: 'select',
       showOverflowTooltip: true,
-      dicUrl: '',
-      dicFlag: true,
-      dicFormatter:(res)=>{     
-        return res.data.records
-      },
-      dicQuery: {
-        current: 1,
-        size: 99999,
-        yearAndMonth: ''
-      },
-      props: {
-        label: 'name',
-        value: 'id',
-      },
+      // dicUrl: '',
+      // dicFlag: true,
+      // dicFormatter:(res)=>{     
+      //   return res.data.records
+      // },
+      // dicQuery: {
+      //   current: 1,
+      //   size: 99999,
+      //   yearAndMonth: ''
+      // },
+      // props: {
+      //   label: 'name',
+      //   value: 'id',
+      // },
+      disabled: true,
       rules: [
         {
           required: true,
@@ -54,7 +78,7 @@ export default {
       width: 90,
       align: 'center',
       search: true,
-      display: false,
+      disabled: true,
       showOverflowTooltip: true,
     },
     {
@@ -63,7 +87,7 @@ export default {
       type: 'input',
       span: 24,
       search: true,
-      display: false,
+      disabled: true,
       width: 150,
       align: 'center',
       showOverflowTooltip: true,
@@ -76,7 +100,7 @@ export default {
       width: 100,
       align: 'center',
       search: true,
-      display: false,
+      disabled: true,
       dicUrl: '/api/kd-system/dict-biz/dictionary?code=renyuanleixing',
       props: {
         label: 'dictValue',

+ 19 - 9
src/option/yfCostManage/basicDataSetting/yfCostBill.js

@@ -23,7 +23,7 @@ export default {
   column: [
     {
       label: '日期',
-      prop: 'rq',
+      prop: 'recordDate',
       type: 'date',
       valueFormat: 'yyyy-MM-dd',
       span: 24,
@@ -72,7 +72,7 @@ export default {
     },
     {
       label: '凭证字号',
-      prop: 'pzzh',
+      prop: 'voucherNumber',
       type: 'input',
       span: 24,
       width: 120,
@@ -81,7 +81,7 @@ export default {
     },
     {
       label: '摘要',
-      prop: 'zy',
+      prop: 'digest',
       type: 'input',
       span: 24,
       width: 140,
@@ -89,7 +89,7 @@ export default {
       showOverflowTooltip: true,
     },
     {
-      label: '科目代码',
+      label: '科目名称',
       prop: 'subjectId',
       type: 'tree',
       dicData: [],
@@ -101,10 +101,16 @@ export default {
       width: 100,
       align: 'center',
       showOverflowTooltip: true,
+      rules: [{
+        required: true,
+        message: '请选择科目名称',
+        trigger: 'blur',
+      }],
+      hide: true
     },
     {
       label: '科目代码',
-      prop: 'kmdm',
+      prop: 'subjectCode',
       span: 24,
       width: 100,
       align: 'center',
@@ -113,16 +119,15 @@ export default {
     },
     {
       label: '科目名称',
-      prop: 'kmmc',
+      prop: 'subjectName',
       span: 24,
       width: 180,
-      align: 'center',
       display: false,
       showOverflowTooltip: true,
     },
     {
       label: '金额(元)',
-      prop: 'je',
+      prop: 'amount',
       type: 'number',
       min: 0,
       precision: 2,
@@ -131,10 +136,15 @@ export default {
       align: 'center',
       search: true,
       showOverflowTooltip: true,
+      rules: [{
+        required: true,
+        message: '请输入金额',
+        trigger: 'blur',
+      }]
     },
     {
       label: '账簿名称',
-      prop: 'zpmc',
+      prop: 'cashbook',
       span: 24,
       width: 160,
       align: 'center',

+ 4 - 2
src/views/basic-resource/basic-database/auxiliary-accounting.vue

@@ -69,9 +69,8 @@ export default window.$crudCommon({
     }
   },
   methods: {
-    loadData() {},
     handleExport() {
-      exportBlob(`/api/kd-scientific/technician/export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
+      exportBlob(`/api/kd-scientific/xm/assist/export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
         downloadXls(res.data, `${this.params.yearAndMonth}辅助核算.xlsx`);
       });
     },
@@ -91,6 +90,9 @@ export default window.$crudCommon({
   // 模块路径
   name: 'basicResource/auxiliaryAccounting',
   res: ({ data }) => {
+    data.records = data.records.map(item => {
+      return { ...item, xmmc: item.XMMC, xmbh: item.XMBH }
+    })
     return data;
   },
 });

+ 37 - 5
src/views/basic-resource/basic-database/comp-subject-setting.vue

@@ -56,7 +56,7 @@
 
 <script>
 import { getList as getSubjectTreeList } from "@/api/basicResource/subjectSetting";
-import {exportBloByPost} from "@/api/common";
+import {exportBlob} from "@/api/common";
 import UploadExcelDialog from "@/components/upload-excel-dialog";
 import {getToken} from "@/util/auth";
 import {downloadXls} from "@/util/util";
@@ -69,6 +69,8 @@ export default window.$crudCommon({
   },
   data() {
     return {
+      treeData: [],
+
       wideTableColumns: [],
       printTitle: "",
     };
@@ -77,7 +79,6 @@ export default window.$crudCommon({
     this.getMenuData();
   },
   methods: {
-    loadData() {},
     loopData(data, level) {
       level++;
       return data.map(item => {
@@ -98,19 +99,20 @@ export default window.$crudCommon({
 
           const column = this.findObject(this.option.column, "subjectId");
           column.dicData = this.loopData(JSON.parse(JSON.stringify(res.data.data)), 0);
+
+          this.treeData = column.dicData;
         }
       })
     },
     handleImport() {
-      let excelParams = { yearAndMonth: this.params.yearAndMonth };
-      this.$refs.uploadExcelDialog.open('/api/kd-scientific/technician/import', excelParams);
+      this.$refs.uploadExcelDialog.open('/api/kd-scientific/subject/enterprise/import');
     },
     uploadAfter() {
       this.page.currentPage = 1;
       this.getList(this.page);
     },
     handleExport() {
-      exportBloByPost(`/api/kd-scientific/technician/export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
+      exportBlob(`/api/kd-scientific/subject/enterprise/export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
         downloadXls(res.data, `企业会计科目.xlsx`);
       });
     },
@@ -125,6 +127,36 @@ export default window.$crudCommon({
         this.$refs.printWideTable.printTable(isLandscape);
       })
     },
+    findParentNames(categories, childId, parentNames = []) {
+      const child = categories.find(cat => cat.id == childId);
+      
+      if (!child || !child.parentId) {
+        return parentNames;
+      }
+      
+      const parent = categories.find(cat => cat.id == child.parentId);
+      if (parent) {
+        parentNames.unshift(parent.name); // 添加到数组开头保持顺序
+        return this.findParentNames(categories, parent.id, parentNames);
+      }
+      
+      return parentNames;
+    },
+    getFormData() {
+      let newList = [];
+      const getAllList = data => {
+        data.forEach(element => {
+          newList.push(element);
+          if (element.children && element.children.length) {
+            getAllList(element.children)
+          }
+        });
+      }
+      getAllList(this.treeData);
+      let parentNames = this.findParentNames(newList, this.form.subjectId);
+      
+      return { ...this.form, subjectName: `${parentNames.join('\\')}\\${this.form.$subjectId}` };
+    },
   },
 }, {
   // 模块路径

+ 34 - 5
src/views/basic-resource/basic-database/subject-setting.vue

@@ -24,7 +24,7 @@
   </basic-container>
 </template>
 <script>
-import { getList } from "@/api/basicResource/subjectSetting";
+import { getList, add, update, remove } from "@/api/basicResource/subjectSetting";
 
 export default {
   data() {
@@ -197,14 +197,43 @@ export default {
       done();
     },
     rowDel(row, index, done) {
-      done(row);
+      this.$confirm('确定将选择数据删除?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        remove(row.id).then(({ data }) => {
+          done();
+          if (data.code == 200) {
+            this.$message.success("删除成功!");
+            this.loadData();
+          }
+        }).catch(() => {
+          done();
+        })
+      })
     },
     rowSave(row, done) {
-      this.parentId = row.parentId;
-      done(row);
+      add(row).then(({ data }) => {
+        done();
+        if (data.code == 200) {
+          this.$message.success("新增成功!");
+          this.loadData();
+        }
+      }).catch(() => {
+        done();
+      })
     },
     rowUpdate(row, index, done) {
-      done(row);
+      update(row).then(({ data }) => {
+        done();
+        if (data.code == 200) {
+          this.$message.success("修改成功!");
+          this.loadData();
+        }
+      }).catch(() => {
+        done();
+      })
     },
     handleAdd(row) {
       this.parentId = row.id;

+ 217 - 0
src/views/external-reports/external-manage/high-comp-annual-report.vue

@@ -0,0 +1,217 @@
+<template>
+  <basic-container>
+    <div class="doc-page">
+      <h3 class="page-title" style="margin: 24px 0 16px">高企年报</h3>
+      <div>
+        <year-month-select v-model="yearAndMonth" :showMonth="false"></year-month-select>
+      </div>
+      <table>
+        <tbody>
+          <tr>
+            <td width="70%">一、本年度获得的知识产权数</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">件</span>
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%">当年获得发明专利数</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">件</span>
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%" style="padding-left: 30px;">其中:国防专利</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">件</span>
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%">当年获得植物新品种</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">件</span>
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%">当年获得国家级农作物品种</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">件</span>
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%">当年获得国家新药</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">件</span>
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%">当年获得国家一级中药保护品种</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">件</span>
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%">当年获得集成电路布图设计专有权</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">件</span>
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%">当年获得实用新型专利</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">件</span>
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%">当年获得外观设计专利</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">件</span>
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%">当年获得软件著作权</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">件</span>
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%">二、本年度人员情况</td>
+            <td>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%">职工总数</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">人</span>
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%">科技人员数</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">人</span>
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%">新增就业人员数</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">人</span>
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td width="70%" style="padding-left: 30px;">其中:吸纳高校应届毕业生人数</td>
+            <td>
+              <div style="display: flex;">
+                <input style="width: 100%" />
+                <span style="padding: 0 5px;">人</span>
+              </div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+  </basic-container>
+</template>
+
+<script>
+import moment from "moment";
+import yearMonthSelect from "@/components/year-month-select";
+
+export default {
+  components: {
+    yearMonthSelect,
+  },
+  data() {
+    return {
+      yearAndMonth: moment(new Date()).format('YYYY'),
+    };
+  },
+  watch: {
+    "yearAndMonth"(newVal) {
+      console.log(newVal)
+    },
+  },
+  mounted() {
+  },
+  methods: {
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.page-title {
+  text-align: center;
+  font-size: 24px;
+}
+
+.doc-page {
+  width: 800px;
+  margin: 30px auto;
+}
+table {
+  width: 100%;
+  border: 1px solid #333;
+}
+.doc-label {
+  text-align: center;
+  padding: 6px;
+  color: #777;
+  font-size: 14px;
+  width: 15%;
+}
+.doc-input {
+  text-align: center;
+  color: #333;
+  width: 35%;
+}
+
+.el-input__inner {
+  border: none;
+}
+tr td {
+  border: 1px solid #333;
+  padding: 9px 3px;
+  font-size: 14px;
+  color: #666;
+}
+</style>

+ 349 - 0
src/views/external-reports/external-manage/high-comp-discount-details.vue

@@ -0,0 +1,349 @@
+<template>
+  <basic-container>
+    <div class="doc-page">
+      <h3 class="page-title" style="margin: 24px 0 16px">A107041高新技术企业优惠情况及明细表</h3>
+      <div>
+        <year-month-select v-model="yearAndMonth" :showMonth="false"></year-month-select>
+      </div>
+      <table>
+        <tbody>
+          <tr>
+            <td colspan="7" align="center">
+              <h4 style="margin: 6px 0;">税收优惠基本信息</h4>
+            </td>
+          </tr>
+          <tr>
+            <td width="30px" align="center">1</td>
+            <td width="23%" align="center" rowspan="3">企业主要产品(服务)及特殊收入支持作用的技术所属范围</td>
+            <td rowspan="3" width="30%" align="center">国家重点支持的高新技术领域</td>
+            <td colspan="3">一级领域</td>
+            <td width="12%"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">2</td>
+            <td colspan="3">二级领域</td>
+            <td></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">3</td>
+            <td colspan="3">三级领域</td>
+            <td></td>
+          </tr>
+
+          <tr>
+            <td colspan="7" align="center">
+              <h4 style="margin: 3px 0;">税收优惠有关情况</h4>
+            </td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">4</td>
+            <td rowspan="7" align="center">收入指标</td>
+            <td colspan="4">一、本年高新技术产品(服务)收入(5+6)</td>
+            <td></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">5</td>
+            <td colspan="4" style="padding-left: 30px;">其中:产品(服务)收入</td>
+            <td></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">6</td>
+            <td colspan="4" style="padding-left: 60px;">技术性收入</td>
+            <td></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">7</td>
+            <td colspan="4">二、本年企业总收入(6-9)</td>
+            <td></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">8</td>
+            <td colspan="4" style="padding-left: 30px;">其中:收入总额</td>
+            <td></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">9</td>
+            <td colspan="4" style="padding-left: 60px;">不征税收入</td>
+            <td></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">10</td>
+            <td colspan="4">三、本年高新技术产品(服务)收入占企业总收入的比例(4÷7)</td>
+            <td></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">11</td>
+            <td rowspan="3" align="center">人员指标</td>
+            <td colspan="4">四、本年科技人员数</td>
+            <td></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">12</td>
+            <td colspan="4">五、本年职工总数</td>
+            <td></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">13</td>
+            <td colspan="4">六、本年科技人员占企业当年职工总数的比例(11÷12)</td>
+            <td></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center" rowspan="2">14</td>
+            <td rowspan="17" align="center">研发费用指标</td>
+            <td rowspan="2" style="padding-left: 30px;">高新研发费用归集年度</td>
+            <td align="center">本年度</td>
+            <td align="center">前一年度</td>
+            <td align="center">前二年度</td>
+            <td align="center">合计</td>
+          </tr>
+
+          <tr>
+            <td align="center">1</td>
+            <td align="center">2</td>
+            <td align="center">3</td>
+            <td align="center">4</td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">15</td>
+            <td>七、归集的高新研发费用金额</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">16</td>
+            <td>(一)内部研究开发投入</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">17</td>
+            <td style="padding-left: 60px;">1.人员人工费用</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">18</td>
+            <td style="padding-left: 60px;">2.直接投入费用</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">19</td>
+            <td style="padding-left: 60px;">3.折旧费用与长期待摊费用</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">20</td>
+            <td style="padding-left: 60px;">4.无形资产摊销费用</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">21</td>
+            <td style="padding-left: 60px;">5.设计费用</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">22</td>
+            <td style="padding-left: 60px;">6.设备调试费与实验费用</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">23</td>
+            <td style="padding-left: 60px;">7.其他费用</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">24</td>
+            <td style="padding-left: 60px;">其中:可计入研发费用的其他费用</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">25</td>
+            <td>(二)委托外部研发费用</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">26</td>
+            <td style="padding-left: 60px;">1.境内的外部研发费</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">27</td>
+            <td style="padding-left: 60px;">2.境外的外部研发费</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">28</td>
+            <td style="padding-left: 60px;">其中:可计入研发费用的境外的外部研发费</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">29</td>
+            <td>八、销售(营业)收入</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">30</td>
+            <td rowspan="3" align="center">税收优惠</td>
+            <td>九、三年研发费用占销售(营业)收入的比例(15行第4列/29行第4列)</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">31</td>
+            <td>十、国家需要重点扶持的高新技术企业减征企业所得税</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+
+          <tr>
+            <td width="30px" align="center">32</td>
+            <td>十一、经济特区和上海浦东新区新设立的高新技术企业定期减免税额</td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+  </basic-container>
+</template>
+
+<script>
+import moment from "moment";
+import yearMonthSelect from "@/components/year-month-select";
+
+export default {
+  components: {
+    yearMonthSelect,
+  },
+  data() {
+    return {
+      yearAndMonth: moment(new Date()).format('YYYY'),
+    };
+  },
+  watch: {
+    "yearAndMonth"(newVal) {
+      console.log(newVal)
+    },
+  },
+  mounted() {
+  },
+  methods: {
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.page-title {
+  text-align: center;
+  font-size: 24px;
+}
+
+.doc-page {
+  width: 900px;
+  margin: 30px auto;
+}
+table {
+  width: 100%;
+  border: 1px solid #333;
+}
+.doc-label {
+  text-align: center;
+  padding: 6px;
+  color: #777;
+  font-size: 14px;
+  width: 15%;
+}
+.doc-input {
+  text-align: center;
+  color: #333;
+  width: 35%;
+}
+
+.el-input__inner {
+  border: none;
+}
+tr td {
+  border: 1px solid #333;
+  padding: 9px 3px;
+  font-size: 14px;
+  color: #666;
+}
+</style>

+ 289 - 0
src/views/external-reports/external-manage/torch-develop-annual-report.vue

@@ -0,0 +1,289 @@
+<template>
+  <basic-container>
+    <div class="doc-page">
+      <h3 class="page-title" style="margin: 24px 0 16px">火炬发展年报</h3>
+      <div>
+        <year-month-select v-model="yearAndMonth" :showMonth="false"></year-month-select>
+      </div>
+
+      <div style="border: 1px solid #000; padding: 5px;">
+        <div>《中华人民共和国统计法》第八条规定:国家机关、企业事业单位和其他组织以及个体工商户和个人等统计调查对象,必须依照本法和国家有关规定,真实、准确、完整、及时地提供统计调查所需的资料,不得提供不真实或者不完整的统计资料,不得迟报、拒报统计资料。</div>
+        <div>《中华人民共和国统计法》第十一条规定:统计机构和统计人员对在统计工作中知悉的国家秘密、工作秘密、商业秘密、个人隐私和个人信息,应当予以保密,不得泄露或者向他人非法提供。</div>
+        <div>《中华人民共和国统计法》第二十八条规定:统计调查中获得的能够识别或者推断单个统计调查对象身份的资料,任何单位和个人不得对外提供、泄露,不得用于统计以外的目的。</div>
+      </div>
+
+      <div style="display: flex; align-items: center; margin-top: 20px; justify-content: space-between;">
+        <div style="display: flex; align-items: center; border: 1px solid #000;">
+          <div style="padding-right: 100px;">是否填写国家统计局一套表(qa18)</div>
+          <div style="border-left: 1px solid #000; padding: 6px;">
+            <select style="width: 90px;">
+              <option value="1">1.是</option>
+              <option value="0">2.否</option>
+            </select>
+          </div>
+        </div>
+        <div style="border: 1px solid #000; padding: 5px;">
+          <div>制定机关:工业和信息化部</div>
+          <div>批准机关:国家统计局</div>
+          <div>{{ `批准文号:国统制[${ getLastYear }]187号` }}</div>
+          <div>{{ `有效期至:${ getDeadline }` }}</div>
+        </div>
+      </div>
+
+      <div style="display: flex; align-items: center; margin-top: 20px; justify-content: space-between;">
+        <div>
+          第2步 (一)企业概况
+        </div>
+        <div style="border: 1px solid #000; padding: 5px;">
+          <div>表 号:GQ-002表</div>
+          <div>制定机关:工业和信息化部</div>
+          <div>批准机关:国家统计局</div>
+          <div>{{ `批准文号:国统制[${ getLastYear }]187号` }}</div>
+          <div>{{ `有效期至:${ getDeadline }` }}</div>
+        </div>
+      </div>
+
+      <table class="edit-table" style="margin-top: 15px;">
+        <thead>
+          <th align="left" width="55%;">指标名称</th>
+          <th align="center">代码</th>
+          <th align="left">内容</th>
+        </thead>
+        <tbody>
+          <tr>
+            <td>企业隶属关系</td>
+            <td align="center">qb101</td>
+            <td>
+              <input placeholder="请输入" v-model="formData.qb101" @blur="handleInputBlur($event, 'qb101')" />
+            </td>
+          </tr>
+          <tr>
+            <td>主要业务活动或主要产品</td>
+            <td align="center"></td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>主要业务活动或主要产品1</td>
+            <td align="center">qb03_01</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>主要业务活动或主要产品2</td>
+            <td align="center">qb03_02</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>主要业务活动或主要产品3</td>
+            <td align="center">qb03_03</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>行业代码2017</td>
+            <td align="center">qb03_1</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>执行会计标准类别</td>
+            <td align="center">qb20_1</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>执行企业会计准则情况</td>
+            <td align="center">qb20</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>企业注册时间</td>
+            <td align="center">qb04</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>注册资金</td>
+            <td align="center">qb04_0</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>注册资金单位</td>
+            <td align="center">qb04a</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>登记注册类型</td>
+            <td align="center">qb06</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>主要外资来源国别或地区代码</td>
+            <td align="center">qb06_1</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>主要外资出资比例</td>
+            <td align="center">qb06_2</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>企业控股情况</td>
+            <td align="center">qb18</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>港澳台商投资情况(可多选)</td>
+            <td align="center">qb39</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>用地面积</td>
+            <td align="center">qb30</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>建筑面积</td>
+            <td align="center">qb30_1</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>用于生产的建筑面积</td>
+            <td align="center">qb30_2</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+          <tr>
+            <td>用于研发的建筑面积</td>
+            <td align="center">qb30_3</td>
+            <td>
+              <input placeholder="请输入" />
+            </td>
+          </tr>
+        </tbody>
+      </table>
+      
+    </div>
+  </basic-container>
+</template>
+
+<script>
+import moment from "moment";
+import yearMonthSelect from "@/components/year-month-select";
+
+export default {
+  components: {
+    yearMonthSelect,
+  },
+  data() {
+    return {
+      yearAndMonth: moment(new Date()).format('YYYY'),
+
+      formData: {}
+    };
+  },
+  computed: {
+    getLastYear() {
+      return this.yearAndMonth - 1;
+    },
+    getDeadline() {
+      return `${Number(this.yearAndMonth) + 2}年12月`
+    }
+  },
+  watch: {
+    "yearAndMonth"(newVal) {
+      console.log(newVal)
+    },
+  },
+  mounted() {
+  },
+  methods: {
+    handleInputBlur(e, code) {
+      console.log(e.target.value, code)
+    }
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.page-title {
+  text-align: center;
+  font-size: 24px;
+}
+
+.doc-page {
+  width: 900px;
+  margin: 30px auto;
+  font-size: 14px;
+}
+table {
+  width: 100%;
+  border: 1px solid #333;
+}
+table thead {
+  height: 35px;
+  th {
+    border-right: 1px solid #000;
+  }
+}
+.doc-label {
+  text-align: center;
+  padding: 6px;
+  color: #777;
+  font-size: 14px;
+  width: 15%;
+}
+.doc-input {
+  text-align: center;
+  color: #333;
+  width: 35%;
+}
+
+.el-input__inner {
+  border: none;
+}
+tr td {
+  border: 1px solid #333;
+  padding: 6px 3px;
+  font-size: 14px;
+  color: #666;
+}
+
+.edit-table {
+  tr td input {
+    border: none;
+    width: 100%;
+    box-sizing: border-box;
+  }
+}
+</style>

+ 109 - 0
src/views/external-reports/high-tech/gx-auxiliary-details.vue

@@ -0,0 +1,109 @@
+<template>
+  <basic-container>
+    <avue-crud
+      v-bind="bindVal"
+      v-on="onEvent"
+      v-model="form"
+      :page.sync="page"
+    >
+      <template slot="menuLeft">
+        <el-button
+          type="warning"
+          size="small"
+          plain
+          icon="el-icon-download"
+          @click="handleExport"
+        >
+          导出
+        </el-button>
+        <print-table-btn @click="printTable" />
+        
+        <div style="display: flex; align-items: center;">
+          <year-month-select v-model="params.yearAndMonth"></year-month-select>
+        </div>
+      </template>
+
+       <!-- 开始时间 -->
+      <template slot="pzrqSearch">
+        <span>凭证日期:</span>
+        <el-date-picker
+          v-model="params.pzrqRange"
+          type="daterange"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          value-format="yyyy-MM-dd"
+          style="width: 240px !important;"
+        >
+        </el-date-picker>
+      </template>
+    </avue-crud>
+
+   
+
+    <WideTablePrinter
+      ref="printWideTable"
+      :columns="wideTableColumns"
+      :data="data"
+      :print-title="printTitle"
+      :rows-per-page="30"
+      :default-landscape="true"
+    />
+  </basic-container>
+</template>
+
+<script>
+import YearMonthSelect from "@/components/year-month-select";
+import {exportBlob} from "@/api/common";
+import {getToken} from "@/util/auth";
+import {downloadXls} from "@/util/util";
+import moment from "moment";
+
+
+export default window.$crudCommon({
+  components: {
+    YearMonthSelect,
+  },
+  data() {
+    return {
+      params: {
+        yearAndMonth: moment(new Date()).format('YYYYMM'),
+      },
+
+      wideTableColumns: [],
+      printTitle: "",
+    };
+  },
+  watch: {
+    'params.yearAndMonth'(newVal) {
+      this.page.currentPage = 1;
+      this.getList(this.page);
+    }
+  },
+  methods: {
+    loadData() {},
+    handleExport() {
+      exportBlob(`/api/kd-scientific/export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
+        downloadXls(res.data, `${this.params.yearAndMonth}高新研发费用明细表.xlsx`);
+      });
+    },
+    /**
+     * 打印表格
+     * @param isLandscape 是否横向打印
+     */
+    printTable(isLandscape) {
+      this.wideTableColumns = this.$refs.crud.columnOption;
+      this.printTitle = `${this.params.yearAndMonth}高新研发费用明细表.xlsx`;
+      this.$nextTick(() => {
+        this.$refs.printWideTable.printTable(isLandscape);
+      })
+    },
+  },
+}, {
+  // 模块路径
+  name: 'externalReports/gxAuxiliaryDetails',
+  res: ({ data }) => {
+    return data;
+  },
+});
+</script>

+ 92 - 0
src/views/external-reports/high-tech/gx-auxiliary-sum-list.vue

@@ -0,0 +1,92 @@
+<template>
+  <basic-container>
+    <avue-crud
+      v-bind="bindVal"
+      v-on="onEvent"
+      v-model="form"
+      :page.sync="page"
+    >
+      <template slot="menuLeft">
+        <el-button
+          type="warning"
+          size="small"
+          plain
+          icon="el-icon-download"
+          @click="handleExport"
+        >
+          导出
+        </el-button>
+        <print-table-btn @click="printTable" />
+        
+        <div style="display: flex; align-items: center;">
+          <year-month-select v-model="params.yearAndMonth"></year-month-select>
+        </div>
+      </template>
+    </avue-crud>
+
+    <WideTablePrinter
+      ref="printWideTable"
+      :columns="wideTableColumns"
+      :data="data"
+      :print-title="printTitle"
+      :rows-per-page="30"
+      :default-landscape="true"
+    />
+  </basic-container>
+</template>
+
+<script>
+import YearMonthSelect from "@/components/year-month-select";
+import {exportBlob} from "@/api/common";
+import {getToken} from "@/util/auth";
+import {downloadXls} from "@/util/util";
+import moment from "moment";
+
+
+export default window.$crudCommon({
+  components: {
+    YearMonthSelect,
+  },
+  data() {
+    return {
+      params: {
+        yearAndMonth: moment(new Date()).format('YYYYMM'),
+      },
+
+      wideTableColumns: [],
+      printTitle: "",
+    };
+  },
+  watch: {
+    'params.yearAndMonth'(newVal) {
+      this.page.currentPage = 1;
+      this.getList(this.page);
+    }
+  },
+  methods: {
+    loadData() {},
+    handleExport() {
+      exportBlob(`/api/kd-scientific/export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
+        downloadXls(res.data, `${this.params.yearAndMonth}高新研发费用汇总表.xlsx`);
+      });
+    },
+    /**
+     * 打印表格
+     * @param isLandscape 是否横向打印
+     */
+    printTable(isLandscape) {
+      this.wideTableColumns = this.$refs.crud.columnOption;
+      this.printTitle = `${this.params.yearAndMonth}高新研发费用汇总表.xlsx`;
+      this.$nextTick(() => {
+        this.$refs.printWideTable.printTable(isLandscape);
+      })
+    },
+  },
+}, {
+  // 模块路径
+  name: 'externalReports/gxAuxiliarySumList',
+  res: ({ data }) => {
+    return data;
+  },
+});
+</script>

+ 0 - 6
src/views/external-reports/jjkc-standards/jjkc-auxiliary-sum-list.vue

@@ -96,12 +96,6 @@ export default window.$crudCommon({
         this.$refs.printWideTable.printTable(isLandscape);
       })
     },
-    headerCellStyle ({ column }) {
-      let color = column.labelClassName ? 'red' : 'rgba(0,0,0,.85)';
-      return {
-        color
-      }
-    }
   },
 }, {
   // 模块路径

+ 0 - 6
src/views/external-reports/kj-standards/kj-auxiliary-details.vue

@@ -96,12 +96,6 @@ export default window.$crudCommon({
         this.$refs.printWideTable.printTable(isLandscape);
       })
     },
-    headerCellStyle ({ column }) {
-      let color = column.labelClassName ? 'red' : 'rgba(0,0,0,.85)';
-      return {
-        color
-      }
-    }
   },
 }, {
   // 模块路径

+ 0 - 6
src/views/external-reports/kj-standards/kj-auxiliary-sum-list.vue

@@ -96,12 +96,6 @@ export default window.$crudCommon({
         this.$refs.printWideTable.printTable(isLandscape);
       })
     },
-    headerCellStyle ({ column }) {
-      let color = column.labelClassName ? 'red' : 'rgba(0,0,0,.85)';
-      return {
-        color
-      }
-    }
   },
 }, {
   // 模块路径

+ 1 - 1
src/views/project-manage/components/change-form.vue

@@ -180,7 +180,7 @@ export default {
     getDictList(code, toListKey) {
       getDictionary({ code }).then((res) => {
         this[toListKey] = res.data.data.map((item) => {
-          return { label: item.dictValue, value: item.dictKey };
+          return { label: item.dictValue, value: item.dictKey.toLowerCase() };
         });
       });
     },

+ 1 - 4
src/views/yf-cost-manage/basic-data-setting/dev-work-hours-register.vue

@@ -174,9 +174,6 @@ export default window.$crudCommon({
       });
       return { yearAndMonth: this.params.yearAndMonth, xmAndAssetIdList };
     },
-    getDelParams(row) {
-      return { yearAndMonth: this.params.yearAndMonth, xmAndAssetIdList: [{ xmId: row.xmId, assetId: row.assetId }] };
-    },
     handleExport() {
       exportBlob(`/api/kd-scientific/asset/hours/export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
         downloadXls(res.data, `${this.params.yearAndMonth}科研仪器设备工时登记表.xlsx`);
@@ -206,7 +203,7 @@ export default window.$crudCommon({
   res: ({ data }) => {
     let newList = [];
     data.records.forEach((item) => {
-      let objData = { ...item, id: item.assetId };
+      let objData = { ...item, id: item.assetId+'_'+item.xmId, };
       item.dailyAttendances.forEach(hourItem => {
         objData[hourItem.workDate] = Number(hourItem.workHours || 0).toFixed(1);
       });

+ 111 - 9
src/views/yf-cost-manage/basic-data-setting/working-hours-records.vue

@@ -11,6 +11,24 @@
     >
       <template slot="menuLeft">
         <el-button
+          type="danger"
+          size="small"
+          icon="el-icon-delete"
+          plain
+          @click="handleDelete"
+        >
+          清除工时数据
+        </el-button>
+        <el-button
+          type="success"
+          size="small"
+          plain
+          icon="el-icon-upload2"
+          @click="handleImport"
+        >
+          导入
+        </el-button>
+        <el-button
           type="warning"
           size="small"
           plain
@@ -19,24 +37,27 @@
         >
           导出
         </el-button>
-        <print-table-btn @click="printTable" />
+        <!-- <print-table-btn @click="printTable" /> -->
         
         <div style="display: flex; align-items: center;">
           <year-month-select v-model="params.yearAndMonth" :showAllYear="false"></year-month-select>
         </div>
       </template>
 
-      <!-- 使用工时 -->
-      <template slot="gsTotalSearch">
+
+      <!-- <template slot="monthlyHoursSearch">
         <div style="display: flex; align-items: center;">
-          <avue-input-number v-model="params.gsTotalStart" :min="0"></avue-input-number>
-          <span style="width: 70px; text-align: center;">至</span>
-          <avue-input-number v-model="params.gsTotalEnd" :min="0"></avue-input-number>
+          <span>使用工时/小时:</span>
+          <avue-input-number v-model="params.monthlyHoursStart" :min="0" style="width: 100px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.monthlyHoursEnd" :min="0" style="width: 100px !important;"></avue-input-number>
         </div>
-      </template>
+      </template> -->
       
     </avue-crud>
 
+    <upload-excel-dialog ref="uploadExcelDialog" :uploadAfter="uploadAfter"/>
+
     <WideTablePrinter
       ref="printWideTable"
       :columns="wideTableColumns"
@@ -51,6 +72,9 @@
 <script>
 import YearMonthSelect from "@/components/year-month-select";
 import UploadExcelDialog from "@/components/upload-excel-dialog";
+import {exportBlob} from "@/api/common";
+import {getToken} from "@/util/auth";
+import {downloadXls} from "@/util/util";
 import { deepClone, getMonthDatesWithMarkers } from "@/util/util";
 import moment from "moment";
 import ChineseHoliday from "@chnlib/chinese-holiday";
@@ -87,7 +111,6 @@ export default window.$crudCommon({
     this.option.column = deepClone(this.defaultColumns);
   },
   methods: {
-    loadData() {},
     refreshTableCol(yearAndMonth) {
       let yearMonth = moment(yearAndMonth).format("YYYY-MM").split("-");
       const monthDays = getMonthDatesWithMarkers(Number(yearMonth[0]), Number(yearMonth[1]));
@@ -113,15 +136,80 @@ export default window.$crudCommon({
         newColumns.push(col);
       });
 
+      // newColumns.push({
+      //   prop: "monthlyHours",
+      //   label: "研发出勤/小时",
+      //   type: 'number',
+      //   precision: 1,
+      //   min: 0,
+      //   width: 70,
+      //   align: 'center',
+      //   showOverflowTooltip: true,
+      //   display: false,
+      //   search: true,
+      // }, {
+      //   prop: "monthlyDays",
+      //   label: "研发出勤/天",
+      //   type: 'number',
+      //   precision: 1,
+      //   min: 0,
+      //   width: 70,
+      //   align: 'center',
+      //   showOverflowTooltip: true,
+      //   display: false,
+      // });
+
       this.option.column = newColumns;
     },
+    handleImport() {
+      let excelParams = { yearAndMonth: this.params.yearAndMonth };
+      this.$refs.uploadExcelDialog.open('/api/kd-scientific/xm/technician/hours/import', excelParams);
+    },
+    uploadAfter() {
+      this.page.currentPage = 1;
+      this.getList(this.page);
+    },
+    getFormData() {
+      const newFormData = { ...this.form, yearAndMonth: this.params.yearAndMonth  };
+      let dailyAttendances = [];
+      Object.keys(this.form).forEach(key => {
+        if (key.indexOf(this.params.yearAndMonth) > -1) {
+          if (this.form[key]) {
+            dailyAttendances.push({
+              workDate: key,
+              workHours: this.form[key]
+            });
+          }
+          delete newFormData[key];
+        }
+      });
+      newFormData.dailyAttendances = dailyAttendances;
+      return newFormData;
+    },
+    getDelParams(row) {
+      return { yearAndMonth: this.params.yearAndMonth, xmAndUnicodeList: [{ xmId: row.xmId, unicode: row.unicode }] };
+    },
+    getBatchDelParams() {
+      let xmAndUnicodeList = [];
+      this.data.forEach(item => {
+        if (this.ids.indexOf(item.id) > -1) {
+          xmAndUnicodeList.push({ xmId: item.xmId, unicode: item.unicode });
+        }
+      });
+      return { yearAndMonth: this.params.yearAndMonth, xmAndUnicodeList };
+    },
+    handleExport() {
+      exportBlob(`/api/kd-scientific/xm/technician/hours/export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
+        downloadXls(res.data, `${this.params.yearAndMonth}研发人员工时记录表.xlsx`);
+      });
+    },
     /**
      * 打印表格
      * @param isLandscape 是否横向打印
      */
     printTable(isLandscape) {
       this.wideTableColumns = this.$refs.crud.columnOption;
-      this.printTitle = `仪器设备工时记录表${this.params.yearAndMonth}`;
+      this.printTitle = `${this.params.yearAndMonth}研发人员工时记录表`;
       this.$nextTick(() => {
         this.$refs.printWideTable.printTable(isLandscape);
       })
@@ -137,6 +225,20 @@ export default window.$crudCommon({
   // 模块路径
   name: 'yfCostManage/basicDataSetting/workHoursRecords',
   res: ({ data }) => {
+    let newList = [];
+    data.records.forEach((item) => {
+      let objData = {
+        ...item,
+        id: item.unicode+'_'+item.xmId,
+        monthlyHours: (item.monthlyHours || 0).toFixed(1),
+        monthlyDays: (item.monthlyDays || 0).toFixed(1)
+      };
+      item.dailyAttendances.forEach(hourItem => {
+        objData[hourItem.workDate] = (hourItem.workHours || 0).toFixed(1);
+      });
+      newList.push(objData);
+    });
+    data.records = newList;
     return data;
   },
 });

+ 44 - 10
src/views/yf-cost-manage/basic-data-setting/yf-cost-bill.vue

@@ -48,12 +48,12 @@
         <project-select placeholder="请选择项目名称" v-model="form.xmId" :params="{ yearAndMonth: params.yearAndMonth }" @change="handleProjectChange"></project-select>
       </template>
 
-      <template slot="jeSearch">
+      <template slot="amountSearch">
         <div style="display: flex; align-items: center;">
           <span>金额(元):</span>
-          <avue-input-number v-model="params.jeMin" :min="0" style="width: 90px !important;"></avue-input-number>
+          <avue-input-number v-model="params.amountMin" :min="0" style="width: 90px !important;"></avue-input-number>
           <span style="width: 20px; text-align: center;">至</span>
-          <avue-input-number v-model="params.jeMax" :min="0" style="width: 90px !important;"></avue-input-number>
+          <avue-input-number v-model="params.amountMax" :min="0" style="width: 90px !important;"></avue-input-number>
         </div>
       </template>
       
@@ -95,6 +95,7 @@ export default window.$crudCommon({
         yearAndMonth: moment(new Date()).format('YYYYMM'),
       },
       isSelAnnual: false,
+      treeData: [],
 
       wideTableColumns: [],
       printTitle: "",
@@ -125,12 +126,11 @@ export default window.$crudCommon({
     this.getSubjectList();
   },
   methods: {
-    loadData() {},
     loopData(data, level) {
       level++;
       return data.map(item => {
         item.level = level;
-        // item.disabled = level === 4 ? false : true;
+        item.disabled = level === 4 ? false : true;
 
         if (item.children && item.children.length) {
           this.loopData(item.children, level);
@@ -146,22 +146,20 @@ export default window.$crudCommon({
 
           const column = this.findObject(this.option.column, "subjectId");
           column.dicData = this.loopData(JSON.parse(JSON.stringify(res.data.data)), 0);
+          this.treeData = column.dicData;
         }
       })
     },
-    getFormData() {
-      return { ...this.form, yearAndMonth: this.params.yearAndMonth };
-    },
     handleImport() {
       let excelParams = { yearAndMonth: this.params.yearAndMonth };
-      this.$refs.uploadExcelDialog.open('', excelParams);
+      this.$refs.uploadExcelDialog.open('/api/kd-scientific/xm/cost/details/import', excelParams);
     },
     uploadAfter() {
       this.page.currentPage = 1;
       this.getList(this.page);
     },
     handleExport() {
-      exportBlob(`/api/kd-scientific//export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
+      exportBlob(`/api/kd-scientific/xm/cost/details/export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
         downloadXls(res.data, `${this.params.yearAndMonth}企业研发费用支出明细账.xlsx`);
       });
     },
@@ -176,6 +174,42 @@ export default window.$crudCommon({
         this.$refs.printWideTable.printTable(isLandscape);
       })
     },
+    findParentNames(categories, childId, parentNames = []) {
+      const child = categories.find(cat => cat.id == childId);
+      
+      if (!child || !child.parentId) {
+        return parentNames;
+      }
+      
+      const parent = categories.find(cat => cat.id == child.parentId);
+      if (parent) {
+        parentNames.unshift(parent.name); // 添加到数组开头保持顺序
+        return this.findParentNames(categories, parent.id, parentNames);
+      }
+      
+      return parentNames;
+    },
+    getFormData() {
+      let newList = [];
+      const getAllList = data => {
+        data.forEach(element => {
+          newList.push(element);
+          if (element.children && element.children.length) {
+            getAllList(element.children)
+          }
+        });
+      }
+      getAllList(this.treeData);
+      let parentNames = this.findParentNames(newList, this.form.subjectId);
+      let currSubjectObj = newList.find(item => item.id == this.form.subjectId);
+      
+      return {
+        ...this.form,
+        subjectName: `${parentNames.join('\\')}\\${this.form.$subjectId}`,
+        yearAndMonth: this.params.yearAndMonth,
+        subjectCode: currSubjectObj ? currSubjectObj.code : ''
+      };
+    },
   },
 }, {
   // 模块路径