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
006702f845
32 changed files with 2481 additions and 152 deletions
  1. 39 0
      src/api/yfCostManage/basicDataSetting/devWorkHoursRegister.js
  2. 39 0
      src/api/yfCostManage/basicDataSetting/houseDetailList.js
  3. 13 15
      src/api/yfCostManage/basicDataSetting/kyDeviceList.js
  4. 41 0
      src/api/yfCostManage/yfCostStatistics/amortizeCostSummaryList.js
  5. 41 0
      src/api/yfCostManage/yfCostStatistics/depreSummaryList.js
  6. 41 0
      src/api/yfCostManage/yfCostStatistics/hourseDepreAllocation.js
  7. 41 0
      src/api/yfCostManage/yfCostStatistics/zjtlCostSummaryList.js
  8. 67 0
      src/components/asset-select/index.vue
  9. 11 0
      src/config/dict.js
  10. 23 18
      src/option/basicResource/kyAssetList.js
  11. 1 1
      src/option/projectManage/wxzctxCost.js
  12. 103 0
      src/option/yfCostManage/basicDataSetting/devWorkHoursRegister.js
  13. 199 0
      src/option/yfCostManage/basicDataSetting/houseDetailList.js
  14. 73 94
      src/option/yfCostManage/basicDataSetting/kyDeviceList.js
  15. 170 0
      src/option/yfCostManage/yfCostStatistics/amortizeCostSummaryList.js
  16. 110 0
      src/option/yfCostManage/yfCostStatistics/depreSummaryList.js
  17. 149 0
      src/option/yfCostManage/yfCostStatistics/hourseDepreAllocation.js
  18. 153 0
      src/option/yfCostManage/yfCostStatistics/zjtlCostSummaryList.js
  19. 55 0
      src/views/basic-resource/comp-basic-info/ky-asset-list.vue
  20. 1 0
      src/views/tech-person/cy-person-roster.vue
  21. 1 0
      src/views/tech-person/high-tech-person-sum-list.vue
  22. 27 0
      src/views/yf-cost-manage/basic-data-setting/atten-info.vue
  23. 219 0
      src/views/yf-cost-manage/basic-data-setting/dev-work-hours-register.vue
  24. 227 0
      src/views/yf-cost-manage/basic-data-setting/hourse-details-list.vue
  25. 109 8
      src/views/yf-cost-manage/basic-data-setting/ky-device-list.vue
  26. 1 0
      src/views/yf-cost-manage/basic-data-setting/working-hours-records.vue
  27. 155 0
      src/views/yf-cost-manage/yf-cost-statistics/wxzc-cost-statistics/amortize-cost-summary-list.vue
  28. 1 0
      src/views/yf-cost-manage/yf-cost-statistics/wxzc-cost-statistics/other-cost-summary-list.vue
  29. 4 16
      src/views/yf-cost-manage/yf-cost-statistics/wxzc-cost-statistics/yf-cost-summary-list.vue
  30. 106 0
      src/views/yf-cost-manage/yf-cost-statistics/zjfy-cost-statistics/depre-summary-list.vue
  31. 155 0
      src/views/yf-cost-manage/yf-cost-statistics/zjfy-cost-statistics/hourse-depre-allocation.vue
  32. 106 0
      src/views/yf-cost-manage/yf-cost-statistics/zjtl-cost-statistics/zjtl-cost-summary-list.vue.vue

+ 39 - 0
src/api/yfCostManage/basicDataSetting/devWorkHoursRegister.js

@@ -0,0 +1,39 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/kd-scientific/asset/hours/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/kd-scientific/asset/hours/submit/batch',
+    method: 'post',
+    data: row
+  })
+}
+
+
+export const update = (row) => {
+  return request({
+    url: '/api/kd-scientific/asset/hours/submit/batch',
+    method: 'post',
+    data: row
+  })
+}
+
+
+export const remove = (data) => {
+  return request({
+    url: '/api/kd-scientific/asset/hours/clear/batch',
+    method: 'post',
+    data
+  })
+}

+ 39 - 0
src/api/yfCostManage/basicDataSetting/houseDetailList.js

@@ -0,0 +1,39 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/kd-scientific/asset/fangwujianzhuwu/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const add = data => {
+  return request({
+    url: '/kd-scientific/asset/fangwujianzhuwu/save',
+    method: 'post',
+    data
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/kd-scientific/asset/fangwujianzhuwu/remove',
+    method: 'post',
+    params: {
+      ids
+    }
+  })
+}
+
+export const fetchDeviceData = params => {
+  return request({
+    url: '/api/kd-scientific/asset/fangwujianzhuwu/fetchData',
+    method: 'get',
+    params
+  })
+}

+ 13 - 15
src/api/yfCostManage/basicDataSetting/kyDeviceList.js

@@ -2,7 +2,7 @@ import request from '@/router/axios';
 
 export const getList = (current, size, params) => {
   return request({
-    url: '/api/kd-scientific/asset/page',
+    url: '/api/kd-scientific/asset/keyanyiqishebeimingxibiao/page',
     method: 'get',
     params: {
       ...params,
@@ -12,30 +12,28 @@ export const getList = (current, size, params) => {
   })
 }
 
-export const add = (row) => {
+export const add = data => {
   return request({
-    url: '/api/kd-scientific/asset/save',
+    url: '/api/kd-scientific/asset/keyanyiqishebeimingxibiao/save',
     method: 'post',
-    data: row
+    data
   })
 }
 
-
-export const update = (row) => {
+export const remove = ids => {
   return request({
-    url: '/api/kd-scientific/asset/update',
+    url: '/api/kd-scientific/asset/keyanyiqishebeimingxibiao/remove',
     method: 'post',
-    data: row
+    params: {
+      ids
+    }
   })
 }
 
-
-export const remove = (ids) => {
+export const fetchDeviceData = params => {
   return request({
-    url: '/api/kd-scientific/asset/remove',
-    method: 'post',
-    params: {
-      ids
-    }
+    url: '/api/kd-scientific/asset/keyanyiqishebeimingxibiao/fetchData',
+    method: 'get',
+    params
   })
 }

+ 41 - 0
src/api/yfCostManage/yfCostStatistics/amortizeCostSummaryList.js

@@ -0,0 +1,41 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/kd-scientific/lease/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/kd-scientific/lease/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+
+export const update = (row) => {
+  return request({
+    url: '/api/kd-scientific/lease/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/kd-scientific/lease/remove',
+    method: 'post',
+    params: {
+      ids
+    }
+  })
+}

+ 41 - 0
src/api/yfCostManage/yfCostStatistics/depreSummaryList.js

@@ -0,0 +1,41 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/kd-scientific/lease/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/kd-scientific/lease/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+
+export const update = (row) => {
+  return request({
+    url: '/api/kd-scientific/lease/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/kd-scientific/lease/remove',
+    method: 'post',
+    params: {
+      ids
+    }
+  })
+}

+ 41 - 0
src/api/yfCostManage/yfCostStatistics/hourseDepreAllocation.js

@@ -0,0 +1,41 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/kd-scientific/lease/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/kd-scientific/lease/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+
+export const update = (row) => {
+  return request({
+    url: '/api/kd-scientific/lease/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/kd-scientific/lease/remove',
+    method: 'post',
+    params: {
+      ids
+    }
+  })
+}

+ 41 - 0
src/api/yfCostManage/yfCostStatistics/zjtlCostSummaryList.js

@@ -0,0 +1,41 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/kd-scientific/lease/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/kd-scientific/lease/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+
+export const update = (row) => {
+  return request({
+    url: '/api/kd-scientific/lease/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/kd-scientific/lease/remove',
+    method: 'post',
+    params: {
+      ids
+    }
+  })
+}

+ 67 - 0
src/components/asset-select/index.vue

@@ -0,0 +1,67 @@
+<template>
+  <el-select
+    v-model="assetId"
+    filterable
+    placeholder="请选择 资产名称"
+    :loading="loading"
+    :disabled="disabled"
+    :multiple="multiple"
+    style="width: 100%;"
+    @change="handleChange"
+  >
+    <el-option
+      v-for="item in listData"
+      :key="item.id"
+      :label="item.zcmc"
+      :value="item.id">
+    </el-option>
+  </el-select>
+</template>
+
+<script>
+import { getList } from "@/api/basicResource/kyAssetList";
+
+export default {
+  name: 'ProjectSelect',
+  props: {
+    value: [String, Number],
+    // 搜索条件
+    params: Object,
+    disabled: {
+      type: Boolean,
+      default: false
+    },
+    // 是否多选
+    multiple: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data() {
+    return {
+      assetId: '',
+      loading: false,
+      listData: []
+    }
+  },
+  mounted() {
+    this.getAssetList();
+  },
+  methods: {
+    getAssetList() {
+      getList(1, 99999, this.params).then(({ data }) => {
+        if (data.success) {
+          this.listData = data.data.records;
+          this.assetId = this.value;
+        }
+      })
+    },
+    handleChange(val) {
+      let objData = this.listData.find(item => item.id === val);
+
+      this.$emit('input', val);
+      this.$emit('change', objData);
+    },
+  }
+}
+</script>

+ 11 - 0
src/config/dict.js

@@ -0,0 +1,11 @@
+// 资产状态
+export const ZC_STATUS = [{
+  label: '正常',
+  value: 0
+}, {
+  label: '停用',
+  value: 1
+}, {
+  label: '已足额折旧',
+  value: 2
+}];

+ 23 - 18
src/option/basicResource/kyAssetList.js

@@ -1,3 +1,5 @@
+import { ZC_STATUS } from "@/config/dict";
+
 export default {
   height: 'auto',
   calcHeight: 30,
@@ -6,11 +8,10 @@ export default {
   searchMenuSpan: 6,
   border: true,
   index: true,
-  viewBtn: true,
   selection: true,
   searchLabelWidth: 140,
   labelWidth: 140,
-  menuWidth: 220,
+  menuWidth: 290,
   dialogClickModal: false,
   dialogWidth: 500,
   dialogType: "drawer",
@@ -37,7 +38,7 @@ export default {
       prop: 'zcmc',
       type: 'input',
       span: 24,
-      minWidth: 200,
+      minWidth: 160,
       search: true,
       showOverflowTooltip: true,
       rules: [
@@ -58,7 +59,7 @@ export default {
         value: 'dictKey',
       },
       span: 24,
-      width: 120,
+      width: 90,
       align: 'center',
       showOverflowTooltip: true,
       search: true,
@@ -73,11 +74,14 @@ export default {
     {
       label: '功率',
       prop: 'gl',
-      type: 'input',
+      type: 'number',
+      min: 0,
+      precision: 0,
       span: 24,
-      width: 90,
+      width: 60,
       align: 'center',
       showOverflowTooltip: true,
+      display: true
     },
     {
       label: '用途',
@@ -90,7 +94,7 @@ export default {
       },
       search: true,
       span: 24,
-      width: 120,
+      width: 65,
       align: 'center',
       showOverflowTooltip: true,
       rules: [
@@ -106,7 +110,7 @@ export default {
       prop: 'kssj',
       type: 'date',
       span: 24,
-      width: 120,
+      width: 90,
       search: true,
       align: 'center',
       showOverflowTooltip: true,
@@ -123,7 +127,7 @@ export default {
       prop: 'sysm',
       type: 'number',
       span: 24,
-      width: 90,
+      width: 70,
       min: 0,
       precision: 0,
       search: true,
@@ -142,7 +146,7 @@ export default {
       prop: 'ysysm',
       type: 'number',
       span: 24,
-      width: 100,
+      width: 85,
       min: 0,
       precision: 0,
       align: 'center',
@@ -161,7 +165,7 @@ export default {
       prop: 'zcyz',
       type: 'number',
       span: 24,
-      width: 100,
+      width: 95,
       min: 0,
       precision: 2,
       align: 'center',
@@ -179,7 +183,7 @@ export default {
       prop: 'jcz',
       type: 'number',
       span: 24,
-      width: 80,
+      width: 70,
       min: 0,
       max: 100,
       align: 'center',
@@ -214,14 +218,15 @@ export default {
       label: '状态',
       prop: 'status',
       type: 'select',
-      dicUrl: '/api/kd-system/dict/dictionary?code=zczt',
-      props: {
-        label: 'dictValue',
-        value: 'dictKey',
-      },
+      // dicUrl: '/api/kd-system/dict/dictionary?code=zczt',
+      // props: {
+      //   label: 'dictValue',
+      //   value: 'dictKey',
+      // },
+      dicData: ZC_STATUS,
       search: true,
       span: 24,
-      width: 90,
+      width: 70,
       align: 'center',
       showOverflowTooltip: true,
       display: false,

+ 1 - 1
src/option/projectManage/wxzctxCost.js

@@ -24,7 +24,7 @@ export default {
       span: 24,
       dicUrl: '/api/kd-scientific/asset/simple/list',
       dicFormatter:(res)=>{
-        return res.data
+        return res.data.filter(item => "软件,专利权,非专利权技术,其他".indexOf(item.zclb) > -1)
       },
       props: {
         label: 'zcmc',

+ 103 - 0
src/option/yfCostManage/basicDataSetting/devWorkHoursRegister.js

@@ -0,0 +1,103 @@
+export default {
+  height: 'auto',
+  calcHeight: 30,
+  tip: false,
+  searchShow: true,
+  searchMenuSpan: 6,
+  border: true,
+  index: true,
+  addBtn: false,
+  delBtnText: '清除工时数据',
+  selection: true,
+  searchLabelWidth: 140,
+  labelWidth: 100,
+  menuWidth: 180,
+  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: 'zcbm',
+      type: 'input',
+      span: 24,
+      width: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+      disabled: true,
+    },
+    {
+      label: '资产名称',
+      prop: 'zcmc',
+      span: 24,
+      width: 110,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+      disabled: true,
+    },
+    {
+      label: '资产类别',
+      prop: 'zclb',
+      type: 'select',
+      span: 24,
+      width: 70,
+      align: 'center',
+      dicUrl: '/api/kd-system/dict-biz/dictionary?code=zclb',
+      props: {
+        label: 'dictValue',
+        value: 'dictKey',
+      },
+      showOverflowTooltip: true,
+      disabled: true,
+    },
+    {
+      label: '用途',
+      prop: 'yt',
+      type: 'select',
+      span: 24,
+      width: 60,
+      align: 'center',
+      search: true,
+      dicUrl: '/api/kd-system/dict-biz/dictionary?code=zcyt',
+      props: {
+        label: 'dictValue',
+        value: 'dictKey',
+      },
+      showOverflowTooltip: true,
+      disabled: true,
+    },
+    {
+      label: '使用工时',
+      prop: 'monthlyHours',
+      type: 'number',
+      span: 24,
+      width: 50,
+      align: 'center',
+      showOverflowTooltip: true,
+      display: false,
+      search: true,
+    },
+  ],
+};

+ 199 - 0
src/option/yfCostManage/basicDataSetting/houseDetailList.js

@@ -0,0 +1,199 @@
+import { ZC_STATUS } from "@/config/dict";
+
+export default {
+  height: 'auto',
+  calcHeight: 30,
+  tip: false,
+  searchShow: true,
+  searchMenuSpan: 6,
+  border: true,
+  index: true,
+  delBtn: false,
+  menu: false,
+  selection: true,
+  labelWidth: 120,
+  menuWidth: 220,
+  dialogClickModal: false,
+  dialogWidth: 500,
+  dialogType: "drawer",
+  column: [
+    {
+      label: '月份',
+      prop: 'yearAndMonth',
+      width: 65,
+      align: 'center',
+      showOverflowTooltip: true,
+      display: false
+    },
+    {
+      label: '研发项目编号',
+      prop: 'xmbh',
+      type: 'input',
+      span: 24,
+      width: 100,
+      align: 'center',
+      showOverflowTooltip: true,
+      display: false,
+    },
+    {
+      label: '研发项目名称',
+      prop: 'xmId',
+      span: 24,
+      hide: true,
+      rules: [{
+        required: true,
+        message: '请选择资产名称',
+        trigger: 'blur'
+      }]
+    },
+    {
+      label: '研发项目名称',
+      prop: 'xmmc',
+      type: 'input',
+      span: 24,
+      search: true,
+      width: 120,
+      showOverflowTooltip: true,
+      display: false,
+    },
+    {
+      label: '资产名称',
+      prop: 'assetId',
+      span: 24,
+      hide: true,
+      rules: [{
+        required: true,
+        message: '请选择资产名称',
+        trigger: 'blur'
+      }]
+    },
+    {
+      label: '资产名称',
+      prop: 'zcmc',
+      type: 'input',
+      span: 24,
+      minWidth: 140,
+      search: true,
+      showOverflowTooltip: true,
+      display: false,
+    },
+    {
+      label: '资产类别',
+      prop: 'zclb',
+      type: 'select',
+      dicUrl: '/api/kd-system/dict-biz/dictionary?code=zclb',
+      props: {
+        label: 'dictValue',
+        value: 'dictKey',
+      },
+      span: 24,
+      width: 85,
+      align: 'center',
+      showOverflowTooltip: true,
+      display: false,
+    },
+    {
+      label: '功率',
+      prop: 'gl',
+      type: 'input',
+      span: 24,
+      width: 70,
+      align: 'center',
+      showOverflowTooltip: true,
+      display: false,
+    },
+    {
+      label: '用途',
+      prop: 'yt',
+      type: 'select',
+      dicUrl: '/api/kd-system/dict-biz/dictionary?code=zcyt',
+      props: {
+        label: 'dictValue',
+        value: 'dictKey',
+      },
+      search: true,
+      span: 24,
+      width: 60,
+      align: 'center',
+      showOverflowTooltip: true,
+      display: false,
+    },
+    {
+      label: '折旧开始时间',
+      prop: 'kssj',
+      type: 'date',
+      span: 24,
+      width: 95,
+      align: 'center',
+      showOverflowTooltip: true,
+      display: false,
+    },
+    {
+      label: '使用寿命',
+      prop: 'sysm',
+      type: 'number',
+      span: 24,
+      width: 70,
+      search: true,
+      align: 'center',
+      showOverflowTooltip: true,
+      display: false,
+    },
+    {
+      label: '已使用月数',
+      prop: 'ysysm',
+      type: 'number',
+      span: 24,
+      width: 85,
+      align: 'center',
+      display: false,
+      search: true,
+      showOverflowTooltip: true,
+      display: false,
+    },
+    {
+      label: '资产原值(元)',
+      prop: 'zcyz',
+      type: 'number',
+      span: 24,
+      width: 95,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+      display: false,
+    },
+    {
+      label: '净残值(%)',
+      prop: 'jcz',
+      type: 'number',
+      span: 24,
+      width: 80,
+      align: 'center',
+      showOverflowTooltip: true,
+      display: false,
+    },
+    {
+      label: '月折旧额(每台/套)',
+      prop: 'yzje',
+      type: 'number',
+      span: 24,
+      width: 120,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+      display: false,
+    },
+    {
+      label: '状态',
+      prop: 'status',
+      type: 'select',
+      dicData: ZC_STATUS,
+      search: true,
+      span: 24,
+      width: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+      display: false,
+    }
+  ],
+};

+ 73 - 94
src/option/yfCostManage/basicDataSetting/kyDeviceList.js

@@ -1,3 +1,5 @@
+import { ZC_STATUS } from "@/config/dict";
+
 export default {
   height: 'auto',
   calcHeight: 30,
@@ -6,47 +8,74 @@ export default {
   searchMenuSpan: 6,
   border: true,
   index: true,
-  viewBtn: true,
+  delBtn: false,
+  menu: false,
   selection: true,
-  searchLabelWidth: 140,
-  labelWidth: 140,
+  labelWidth: 120,
   menuWidth: 220,
   dialogClickModal: false,
   dialogWidth: 500,
   dialogType: "drawer",
   column: [
     {
-      label: '资产编码',
-      prop: 'zcbm',
+      label: '月份',
+      prop: 'yearAndMonth',
+      width: 65,
+      align: 'center',
+      showOverflowTooltip: true,
+      display: false
+    },
+    {
+      label: '研发项目编号',
+      prop: 'xmbh',
       type: 'input',
       span: 24,
-      search: true,
       width: 100,
       align: 'center',
       showOverflowTooltip: true,
-      rules: [
-        {
-          required: true,
-          message: '请输入资产编码',
-          trigger: 'blur',
-        },
-      ],
+      display: false,
+    },
+    {
+      label: '研发项目名称',
+      prop: 'xmId',
+      span: 24,
+      hide: true,
+      rules: [{
+        required: true,
+        message: '请选择资产名称',
+        trigger: 'blur'
+      }]
+    },
+    {
+      label: '研发项目名称',
+      prop: 'xmmc',
+      type: 'input',
+      span: 24,
+      search: true,
+      width: 120,
+      showOverflowTooltip: true,
+      display: false,
+    },
+    {
+      label: '资产名称',
+      prop: 'assetId',
+      span: 24,
+      hide: true,
+      rules: [{
+        required: true,
+        message: '请选择资产名称',
+        trigger: 'blur'
+      }]
     },
     {
       label: '资产名称',
       prop: 'zcmc',
       type: 'input',
       span: 24,
-      minWidth: 200,
+      minWidth: 140,
       search: true,
       showOverflowTooltip: true,
-      rules: [
-        {
-          required: true,
-          message: '请输入资产名称',
-          trigger: 'blur',
-        },
-      ],
+      display: false,
     },
     {
       label: '资产类别',
@@ -58,26 +87,20 @@ export default {
         value: 'dictKey',
       },
       span: 24,
-      width: 120,
+      width: 85,
       align: 'center',
       showOverflowTooltip: true,
-      search: true,
-      rules: [
-        {
-          required: true,
-          message: '请选择资产类别',
-          trigger: 'change',
-        },
-      ],
+      display: false,
     },
     {
       label: '功率',
       prop: 'gl',
       type: 'input',
       span: 24,
-      width: 90,
+      width: 70,
       align: 'center',
       showOverflowTooltip: true,
+      display: false,
     },
     {
       label: '用途',
@@ -90,83 +113,54 @@ export default {
       },
       search: true,
       span: 24,
-      width: 120,
+      width: 60,
       align: 'center',
       showOverflowTooltip: true,
-      rules: [
-        {
-          required: true,
-          message: '请选择用途',
-          trigger: 'blur',
-        },
-      ],
+      display: false,
     },
     {
-      label: '开始时间',
+      label: '折旧开始时间',
       prop: 'kssj',
       type: 'date',
       span: 24,
-      width: 120,
-      search: true,
+      width: 95,
       align: 'center',
       showOverflowTooltip: true,
-      rules: [
-        {
-          required: true,
-          message: '请选择开始时间',
-          trigger: 'blur',
-        },
-      ],
+      display: false,
     },
     {
       label: '使用寿命',
       prop: 'sysm',
       type: 'number',
       span: 24,
-      width: 90,
+      width: 70,
       search: true,
       align: 'center',
       showOverflowTooltip: true,
-      rules: [
-        {
-          required: true,
-          message: '请输入使用寿命',
-          trigger: 'blur',
-        },
-      ],
+      display: false,
     },
     {
       label: '已使用月数',
       prop: 'ysysm',
       type: 'number',
       span: 24,
-      width: 100,
+      width: 85,
       align: 'center',
       display: false,
+      search: true,
       showOverflowTooltip: true,
-      rules: [
-        {
-          required: true,
-          message: '请输入已使用月数',
-          trigger: 'blur',
-        },
-      ],
+      display: false,
     },
     {
       label: '资产原值(元)',
       prop: 'zcyz',
       type: 'number',
       span: 24,
-      width: 100,
+      width: 95,
       align: 'center',
+      search: true,
       showOverflowTooltip: true,
-      rules: [
-        {
-          required: true,
-          message: '请输入资产原值',
-          trigger: 'blur',
-        },
-      ],
+      display: false,
     },
     {
       label: '净残值(%)',
@@ -176,39 +170,24 @@ export default {
       width: 80,
       align: 'center',
       showOverflowTooltip: true,
-      rules: [
-        {
-          required: true,
-          message: '请输入净残值',
-          trigger: 'change',
-        },
-      ],
+      display: false,
     },
     {
-      label: '月折旧额/月摊销额(元)',
+      label: '月折旧额(每台/套)',
       prop: 'yzje',
       type: 'number',
       span: 24,
-      width: 140,
+      width: 120,
       align: 'center',
+      search: true,
       showOverflowTooltip: true,
-      rules: [
-        {
-          required: true,
-          message: '请输入月折旧额/月摊销额',
-          trigger: 'blur',
-        },
-      ],
+      display: false,
     },
     {
       label: '状态',
       prop: 'status',
       type: 'select',
-      dicUrl: '/api/kd-system/dict/dictionary?code=zczt',
-      props: {
-        label: 'dictValue',
-        value: 'dictKey',
-      },
+      dicData: ZC_STATUS,
       search: true,
       span: 24,
       width: 90,

+ 170 - 0
src/option/yfCostManage/yfCostStatistics/amortizeCostSummaryList.js

@@ -0,0 +1,170 @@
+export default {
+  height: 'auto',
+  calcHeight: 30,
+  tip: false,
+  searchShow: true,
+  searchMenuSpan: 6,
+  border: true,
+  index: true,
+  addBtn: false,
+  menu: false,
+  selection: true,
+  searchLabelWidth: 140,
+  labelWidth: 140,
+  menuWidth: 290,
+  dialogClickModal: false,
+  dialogWidth: 500,
+  dialogType: "drawer",
+  column: [
+    {
+      label: '月份',
+      prop: 'yearAndMonth',
+      span: 24,
+      width: 60,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '研发项目编号',
+      prop: 'xmbh',
+      span: 24,
+      width: 100,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '研发项目名称',
+      prop: 'xmbh',
+      span: 24,
+      width: 120,
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '资产编号',
+      prop: 'zcbm',
+      type: 'input',
+      span: 24,
+      width: 100,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '无形资产名称',
+      prop: 'zcmc',
+      type: 'input',
+      span: 24,
+      minWidth: 120,
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '资产类别',
+      prop: 'zclb',
+      type: 'select',
+      dicUrl: '/api/kd-system/dict-biz/dictionary?code=zclb',
+      props: {
+        label: 'dictValue',
+        value: 'dictKey',
+      },
+      span: 24,
+      width: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+      search: true,
+    },
+    {
+      label: '功率',
+      prop: 'gl',
+      type: 'number',
+      span: 24,
+      width: 60,
+      align: 'center',
+      showOverflowTooltip: true,
+      display: true
+    },
+    {
+      label: '用途',
+      prop: 'yt',
+      type: 'select',
+      dicUrl: '/api/kd-system/dict-biz/dictionary?code=zcyt',
+      props: {
+        label: 'dictValue',
+        value: 'dictKey',
+      },
+      search: true,
+      span: 24,
+      width: 65,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '资产原值(元)',
+      prop: 'zcyz',
+      type: 'number',
+      span: 24,
+      width: 90,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '净残值(%)',
+      prop: 'jcz',
+      type: 'number',
+      span: 24,
+      width: 70,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '月摊销额(每节点/套)(K)',
+      prop: 'ytxe',
+      type: 'number',
+      span: 24,
+      minWidth: 110,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '月使用工时(L)',
+      prop: 'ysygs',
+      type: 'number',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '月研发工时(M)',
+      prop: 'yyfgs',
+      type: 'number',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '研发分摊率(%)(N)',
+      prop: 'yzje',
+      type: 'number',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '研发摊销',
+      prop: 'yzje',
+      type: 'number',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+  ],
+};

+ 110 - 0
src/option/yfCostManage/yfCostStatistics/depreSummaryList.js

@@ -0,0 +1,110 @@
+export default {
+  height: 'auto',
+  calcHeight: 30,
+  tip: false,
+  searchShow: true,
+  searchMenuSpan: 6,
+  border: true,
+  index: true,
+  selection: true,
+  addBtn: false,
+  menu: false,
+  searchLabelWidth: 140,
+  labelWidth: 130,
+  menuWidth: 140,
+  dialogClickModal: false,
+  dialogWidth: 500,
+  dialogType: "drawer",
+  showSummary: true,
+  sumColumnList: [
+    {
+      name: 'yqsbzjfy',
+      type: 'sum',
+    },
+    {
+      name: 'fwzjfy',
+      type: 'sum',
+    },
+    {
+      name: 'cqdtfy',
+      type: 'sum',
+    },
+    {
+      name: 'wxzctxfy',
+      type: 'sum',
+    },
+    {
+      name: 'amount',
+      type: 'sum',
+    },
+  ],
+  column: [
+    {
+      label: '研发项目编号',
+      prop: 'xmbh',
+      type: 'input',
+      span: 24,
+      width: 100,
+      align: 'center',
+      showOverflowTooltip: true,
+      display: false,
+    },
+    {
+      label: '研发项目名称',
+      prop: 'xmmc',
+      type: 'input',
+      span: 24,
+      minWidth: 160,
+      search: true,
+      showOverflowTooltip: true,
+      display: false
+    },
+    {
+      label: '仪器设备折旧费用',
+      prop: 'yqsbzjfy',
+      type: 'number',
+      span: 24,
+      minWidth: 120,
+      align: 'center',
+    },
+    {
+      label: '房屋折旧费用',
+      prop: 'fwzjfy',
+      type: 'number',
+      span: 24,
+      minWidth: 120,
+      align: 'center',
+    },
+    {
+      label: '长期待摊费用',
+      prop: 'cqdtfy',
+      type: 'number',
+      span: 24,
+      minWidth: 120,
+      align: 'center',
+    },
+    {
+      label: '无形资产摊销费用',
+      prop: 'wxzctxfy',
+      type: 'number',
+      span: 24,
+      minWidth: 120,
+      align: 'center',
+    },
+    {
+      label: '研发费用合计(元)',
+      prop: 'amount',
+      type: 'number',
+      span: 24,
+      minWidth: 120,
+      align: 'center',
+    },
+    {
+      label: '费用区间(元)',
+      prop: 'costRange',
+      type: 'number',
+      search: true,
+      display: false,
+    },
+  ],
+};

+ 149 - 0
src/option/yfCostManage/yfCostStatistics/hourseDepreAllocation.js

@@ -0,0 +1,149 @@
+export default {
+  height: 'auto',
+  calcHeight: 30,
+  tip: false,
+  searchShow: true,
+  searchMenuSpan: 6,
+  border: true,
+  index: true,
+  addBtn: false,
+  menu: false,
+  selection: true,
+  searchLabelWidth: 140,
+  labelWidth: 140,
+  menuWidth: 290,
+  dialogClickModal: false,
+  dialogWidth: 500,
+  dialogType: "drawer",
+  column: [
+    {
+      label: '月份',
+      prop: 'yearAndMonth',
+      span: 24,
+      width: 60,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '研发项目编号',
+      prop: 'xmbh',
+      span: 24,
+      width: 100,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '研发项目名称',
+      prop: 'xmbh',
+      span: 24,
+      width: 120,
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '资产编号',
+      prop: 'zcbm',
+      type: 'input',
+      span: 24,
+      width: 100,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '资产名称',
+      prop: 'zcmc',
+      type: 'input',
+      span: 24,
+      minWidth: 120,
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '资产类别',
+      prop: 'zclb',
+      type: 'select',
+      dicUrl: '/api/kd-system/dict-biz/dictionary?code=zclb',
+      props: {
+        label: 'dictValue',
+        value: 'dictKey',
+      },
+      span: 24,
+      width: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+      search: true,
+    },
+    {
+      label: '用途',
+      prop: 'yt',
+      type: 'select',
+      dicUrl: '/api/kd-system/dict-biz/dictionary?code=zcyt',
+      props: {
+        label: 'dictValue',
+        value: 'dictKey',
+      },
+      search: true,
+      span: 24,
+      width: 65,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '资产原值(元)',
+      prop: 'zcyz',
+      type: 'number',
+      span: 24,
+      width: 90,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '净残值(%)',
+      prop: 'jcz',
+      type: 'number',
+      span: 24,
+      width: 70,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '月折旧额(每台/套)(K)',
+      prop: 'ytxe',
+      type: 'number',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '研发分摊率(%)(N)',
+      prop: 'yzje',
+      type: 'number',
+      span: 24,
+      minWidth: 90,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '分摊率确定依据',
+      prop: 'ftlqdyj',
+      type: 'textarea',
+      span: 24,
+      minWidth: 100,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '研发折旧',
+      prop: 'yfzj',
+      type: 'number',
+      span: 24,
+      minWidth: 70,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+  ],
+};

+ 153 - 0
src/option/yfCostManage/yfCostStatistics/zjtlCostSummaryList.js

@@ -0,0 +1,153 @@
+export default {
+  height: 'auto',
+  calcHeight: 30,
+  tip: false,
+  searchShow: true,
+  searchMenuSpan: 6,
+  border: true,
+  index: true,
+  selection: true,
+  addBtn: false,
+  menu: false,
+  searchLabelWidth: 140,
+  labelWidth: 130,
+  menuWidth: 140,
+  dialogClickModal: false,
+  dialogWidth: 500,
+  dialogType: "drawer",
+  showSummary: true,
+  sumColumnList: [
+    {
+      name: 'price',
+      type: 'sum',
+    },
+  ],
+  column: [
+    {
+      label: '研发项目编号',
+      prop: 'xmbh',
+      width: 100,
+      align: 'center',
+      showOverflowTooltip: true,
+    },
+    {
+      label: '研发项目名称',
+      prop: 'xmmc',
+      minWidth: 120,
+      align: 'center',
+      search: true,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '材料费用',
+      prop: 'clfy',
+      type: 'number',
+      span: 24,
+      minWidth: 60,
+      align: 'center',
+      min: 0,
+      precision: 2,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '燃料费用',
+      prop: 'rlfy',
+      type: 'number',
+      span: 24,
+      minWidth: 60,
+      align: 'center',
+      min: 0,
+      precision: 2,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '动力费用',
+      prop: 'dlfy',
+      type: 'number',
+      span: 24,
+      minWidth: 60,
+      align: 'center',
+      min: 0,
+      precision: 2,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '研发仪器设备租赁费',
+      prop: 'sbfy',
+      type: 'number',
+      span: 24,
+      minWidth: 70,
+      align: 'center',
+      min: 0,
+      precision: 2,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '房屋租赁费',
+      prop: 'fwzlf',
+      type: 'number',
+      span: 24,
+      minWidth: 70,
+      align: 'center',
+      min: 0,
+      precision: 2,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '用于中间试验和产品试制的模具、工艺装备开发及制造费',
+      prop: 'tsfy',
+      type: 'number',
+      span: 24,
+      minWidth: 140,
+      align: 'center',
+      min: 0,
+      precision: 2,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '不构成固定资产的样品、样机及一般测试手段购置费',
+      prop: 'ypgzf',
+      type: 'number',
+      span: 24,
+      minWidth: 140,
+      align: 'center',
+      min: 0,
+      precision: 2,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '试制产品的检验费',
+      prop: 'jyf',
+      type: 'number',
+      span: 24,
+      minWidth: 70,
+      align: 'center',
+      min: 0,
+      precision: 2,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '研发费用合计(元)',
+      prop: 'amount',
+      type: 'number',
+      span: 24,
+      minWidth: 70,
+      align: 'center',
+      min: 0,
+      precision: 2,
+      showOverflowTooltip: true,
+    },
+    {
+      label: '费用区间',
+      prop: 'costRange',
+      type: 'number',
+      span: 24,
+      minWidth: 70,
+      align: 'center',
+      min: 0,
+      precision: 2,
+      search: true,
+      showOverflowTooltip: true,
+    },
+  ],
+};

+ 55 - 0
src/views/basic-resource/comp-basic-info/ky-asset-list.vue

@@ -54,6 +54,21 @@
         </div>
       </template>
 
+      <template slot-scope="{row}" slot="menu">
+        <el-button v-if="[1,2].indexOf(row.status) > -1" type="text" size="mini" @click="handleChangeStatus(row, 0)">恢复</el-button>
+        <el-button v-if="row.status === 0" type="text" size="mini" @click="handleChangeStatus(row, 1)">停用</el-button>
+        <el-button v-if="row.status === 0" type="text" size="mini" @click="handleChangeStatus(row, 2)">已足额折旧</el-button>
+      </template>
+
+      <template slot="gl" slot-scope="{row}">
+        <span v-if="'软件,专利,非专利技术'.indexOf(row.zclb) > -1">/</span>
+        <span v-else>{{ row.gl }}</span>
+      </template>
+
+      <!-- <template slot="glForm" slot-scope="{row}">
+        <el-input-number v-if="'软件,专利,非专利技术'.indexOf(row.zclb) === -1" type="number" />
+      </template> -->
+
       <!-- 开始时间 -->
       <template slot="kssjSearch">
         <el-date-picker
@@ -140,6 +155,22 @@ export default window.$crudCommon({
       };
     },
   },
+  mounted() {
+    let newOption = { ...this.option };
+    // 资产类别下拉框,设置监听事件
+    newOption.column.forEach(item => {
+      if (item.prop == "zclb") {
+        item.change = ({ item }) => {
+          if (!!item && "软件,专利权,非专利技术".indexOf(item.dictValue) > -1) {
+            newOption.column[3].display = false;
+          } else {
+            newOption.column[3].display = true;
+          }
+        }
+      }
+    });
+    this.option = { ...newOption };
+  },
   methods: {
     searchChange(params, done) {
       if (done) done();
@@ -210,6 +241,30 @@ export default window.$crudCommon({
         });
       });
     },
+    handleChangeStatus(rowData, status) {
+      let msgText = '';
+      if (status === 0) {
+        msgText = `确认恢复资产“${rowData.zcmc}”吗?`
+      } else if (status === 1) {
+        msgText = `确认停用资产“${rowData.zcmc}”吗?`
+      } else if (status === 2) {
+        msgText = `确认将资产“${rowData.zcmc}”设置为已足额折旧吗?`
+      }
+
+      this.$confirm(msgText, "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        const params = { ...rowData, status };
+        this.api.update(params).then(({ data }) => {
+          if (data.success) {
+            this.$message.success("操作成功!");
+            this.getList(this.page);
+          }
+        });
+      });
+    },
     /**
      * 打印表格
      * @param isLandscape 是否横向打印

+ 1 - 0
src/views/tech-person/cy-person-roster.vue

@@ -74,6 +74,7 @@ export default window.$crudCommon({
     }
   },
   methods: {
+    loadData() {},
     handleExport() {
       this.$confirm("是否导出吗?", "提示", {
         confirmButtonText: "确定",

+ 1 - 0
src/views/tech-person/high-tech-person-sum-list.vue

@@ -90,6 +90,7 @@ export default window.$crudCommon({
     }
   },
   methods: {
+    loadData() {},
     handleImport() {
       let excelParams = { yearAndMonth: this.params.yearAndMonth };
       this.$refs.uploadExcelDialog.open('/api/kd-scientific/technician/import', excelParams);

+ 27 - 0
src/views/yf-cost-manage/basic-data-setting/atten-info.vue

@@ -20,6 +20,15 @@
           清除考勤数据
         </el-button>
         <el-button
+          type="success"
+          size="small"
+          plain
+          icon="el-icon-upload2"
+          @click="handleImport"
+        >
+          导入
+        </el-button>
+        <el-button
           type="warning"
           size="small"
           plain
@@ -49,6 +58,8 @@
       
     </avue-crud>
 
+    <upload-excel-dialog ref="uploadExcelDialog" :uploadAfter="uploadAfter"/>
+
     <WideTablePrinter
       ref="printWideTable"
       :columns="wideTableColumns"
@@ -63,6 +74,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";
@@ -174,6 +188,19 @@ export default window.$crudCommon({
       newFormData.dailyAttendances = dailyAttendances;
       return newFormData;
     },
+    handleImport() {
+      let excelParams = { yearAndMonth: this.params.yearAndMonth };
+      this.$refs.uploadExcelDialog.open('/api/kd-scientific/attendance/import', excelParams);
+    },
+    uploadAfter() {
+      this.page.currentPage = 1;
+      this.getList(this.page);
+    },
+    handleExport() {
+      exportBlob(`/api/kd-scientific/attendance/export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
+        downloadXls(res.data, `考勤信息${this.params.yearAndMonth}.xlsx`);
+      });
+    },
     /**
      * 打印表格
      * @param isLandscape 是否横向打印

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

@@ -0,0 +1,219 @@
+<template>
+  <basic-container>
+    <avue-crud
+      v-bind="bindVal"
+      v-on="onEvent"
+      v-model="form"
+      :page.sync="page"
+      :before-open="handleBeforeOpen"
+      :permission="permissionList"
+      :header-cell-style="headerCellStyle" 
+    >
+      <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
+          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" :showAllYear="false"></year-month-select>
+        </div>
+      </template>
+
+      <template slot="monthlyHoursSearch">
+        <div style="display: flex; align-items: center;">
+          <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>
+      
+    </avue-crud>
+
+    <upload-excel-dialog ref="uploadExcelDialog" :uploadAfter="uploadAfter"/>
+
+    <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 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";
+
+
+export default window.$crudCommon({
+  components: {
+    YearMonthSelect,
+    UploadExcelDialog,
+  },
+  data() {
+    return {
+      params: {
+        yearAndMonth: moment(new Date()).format('YYYYMM'),
+      },
+      defaultColumns: [],
+
+      wideTableColumns: [],
+      printTitle: "",
+    };
+  },
+  watch: {
+    'params.yearAndMonth'(newVal) {
+      this.refreshTableCol(newVal);
+      this.page.currentPage = 1;
+      this.getList(this.page);
+    }
+  },
+  async created() {
+    this.defaultColumns = deepClone(this.option.column);
+    this.refreshTableCol(this.params.yearAndMonth);
+  },
+  beforeDestroy() {
+    this.option.column = deepClone(this.defaultColumns);
+  },
+  methods: {
+    refreshTableCol(yearAndMonth) {
+      let yearMonth = moment(yearAndMonth).format("YYYY-MM").split("-");
+      const monthDays = getMonthDatesWithMarkers(Number(yearMonth[0]), Number(yearMonth[1]));
+
+      let newColumns = deepClone(this.defaultColumns);
+
+      monthDays.forEach((item) => {
+        let col = {
+          prop: moment(item.dateString).format('yyyyMMDD'),
+          label: item.dayName + "" + item.day.toString(),
+          type: 'number',
+          precision: 1,
+          min: 0,
+          width: 45,
+          align: 'center',
+          isWorkDay: ChineseHoliday.isWorkday(item.dateString),
+          showOverflowTooltip: true,
+        }
+
+        if (!ChineseHoliday.isWorkday(item.dateString)) {
+          col.labelClassName = 'red';
+        }
+        newColumns.push(col);
+      });
+
+      this.option.column = newColumns;
+    },
+    handleImport() {
+      let excelParams = { yearAndMonth: this.params.yearAndMonth };
+      this.$refs.uploadExcelDialog.open('/api/kd-scientific/asset/hours/import', excelParams);
+    },
+    uploadAfter() {
+      this.page.currentPage = 1;
+      this.getList(this.page);
+    },
+    getFormData() {
+      const newFormData = { ...this.form, yearAndMonth: this.params.yearAndMonth  };
+      let dailyHoursList = [];
+      Object.keys(this.form).forEach(key => {
+        if (key.indexOf(this.params.yearAndMonth) > -1) {
+          if (this.form[key]) {
+            dailyHoursList.push({
+              workDate: key,
+              workHours: this.form[key]
+            });
+          }
+          delete newFormData[key];
+        }
+      });
+      newFormData.dailyHoursList = dailyHoursList;
+      return newFormData;
+    },
+    getDelParams(row) {
+      return { yearAndMonth: this.params.yearAndMonth, xmAndAssetIdList: [{ xmId: row.xmId, assetId: row.assetId }] };
+    },
+    getBatchDelParams() {
+      let xmAndAssetIdList = [];
+      this.data.forEach(item => {
+        if (this.ids.indexOf(item.id) > -1) {
+          xmAndAssetIdList.push({ xmId: item.xmId, assetId: item.assetId });
+        }
+      });
+      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`);
+      });
+    },
+    /**
+     * 打印表格
+     * @param isLandscape 是否横向打印
+     */
+    printTable(isLandscape) {
+      this.wideTableColumns = this.$refs.crud.columnOption;
+      this.printTitle = `${this.params.yearAndMonth}科研仪器设备工时登记表`;
+      this.$nextTick(() => {
+        this.$refs.printWideTable.printTable(isLandscape);
+      })
+    },
+    headerCellStyle ({ column }) {
+      let color = column.labelClassName ? 'red' : 'rgba(0,0,0,.85)';
+      return {
+        color
+      }
+    }
+  },
+}, {
+  // 模块路径
+  name: 'yfCostManage/basicDataSetting/devWorkHoursRegister',
+  res: ({ data }) => {
+    let newList = [];
+    data.records.forEach((item) => {
+      let objData = { ...item, id: item.assetId };
+      item.dailyAttendances.forEach(hourItem => {
+        objData[hourItem.workDate] = Number(hourItem.workHours || 0).toFixed(1);
+      });
+      newList.push(objData);
+    });
+    data.records = newList;
+    return data;
+  },
+});
+</script>

+ 227 - 0
src/views/yf-cost-manage/basic-data-setting/hourse-details-list.vue

@@ -0,0 +1,227 @@
+<template>
+  <basic-container>
+    <avue-crud
+      v-bind="bindVal"
+      v-on="onEvent"
+      v-model="form"
+      :page.sync="page"
+    >
+      <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
+          icon="el-icon-download"
+          @click="handleExport"
+        >
+          导出
+        </el-button>
+        <el-button
+          type="primary"
+          size="small"
+          @click="handleReadyDevData"
+        >
+          直接引用
+        </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="sysmSearch">
+        <div style="display: flex; align-items: center;">
+          <span>使用寿命:</span>
+          <avue-input-number v-model="params.sysmMin" :min="0" style="width: 90px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.sysmMax" :min="0" style="width: 90px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="zcyzSearch">
+        <div style="display: flex; align-items: center;">
+          <span>资产原值:</span>
+          <avue-input-number v-model="params.zcyzMin" :min="0" style="width: 90px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.zcyzMax" :min="0" style="width: 90px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="ysysmSearch">
+        <div style="display: flex; align-items: center;">
+          <span>已使用月数:</span>
+          <avue-input-number v-model="params.ysysmMin" :min="0" style="width: 90px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.ysysmMax" :min="0" style="width: 90px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="yzjeSearch">
+        <div style="display: flex; align-items: center;">
+          <span>月折旧额(每台/套):</span>
+          <avue-input-number v-model="params.yzjeMin" :min="0" style="width: 90px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.yzjeMax" :min="0" style="width: 90px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="xmIdForm">
+        <project-select v-model="form.xmId" :params="{ yearAndMonth: params.yearAndMonth }"></project-select>
+      </template>
+
+      <template slot="assetIdForm">
+        <asset-select
+          v-model="form.assetId"
+          :params="{ yearAndMonth: params.yearAndMonth, zclb: '房屋建筑物' }"
+          @change="handleAssetChange"
+        ></asset-select>
+      </template>
+      
+    </avue-crud>
+
+    <upload-excel-dialog ref="uploadExcelDialog" :uploadAfter="uploadAfter"/>
+
+    <WideTablePrinter
+      ref="printWideTable"
+      :columns="wideTableColumns"
+      :data="data"
+      :print-title="printTitle"
+      :rows-per-page="30"
+      :default-landscape="true"
+    />
+  </basic-container>
+</template>
+
+<script>
+import { fetchDeviceData } from "@/api/yfCostManage/basicDataSetting/houseDetailList"
+import YearMonthSelect from "@/components/year-month-select";
+import UploadExcelDialog from "@/components/upload-excel-dialog";
+import projectSelect from "@/components/project-select";
+import assetSelect from "@/components/asset-select";
+import moment from "moment";
+
+
+export default window.$crudCommon({
+  components: {
+    YearMonthSelect,
+    projectSelect,
+    assetSelect,
+    UploadExcelDialog,
+  },
+  data() {
+    return {
+      params: {
+        yearAndMonth: moment(new Date()).format('YYYYMM'),
+      },
+      isSelAnnual: false,
+
+      wideTableColumns: [],
+      printTitle: "",
+    };
+  },
+  watch: {
+    'params.yearAndMonth'(newVal) {
+      if (newVal.length > 4) {
+        // 是否勾选未全年
+        this.isSelAnnual = false;
+      } else {
+        this.isSelAnnual = true;
+      }
+      this.page.currentPage = 1;
+      this.getList(this.page);
+    }
+  },
+  computed: {
+    permissionList() {
+      return {
+        addBtn: !this.isSelAnnual,
+        editBtn: !this.isSelAnnual,
+        delBtn: !this.isSelAnnual,
+      };
+    },
+  },
+  methods: {
+    handleImport() {
+      let excelParams = { yearAndMonth: this.params.yearAndMonth };
+      this.$refs.uploadExcelDialog.open('/api/kd-scientific/asset/fangwujianzhuwu/import', excelParams);
+    },
+    uploadAfter() {
+      this.page.currentPage = 1;
+      this.getList(this.page);
+    },
+    handleExport() {
+      exportBloByPost(`/api/kd-scientific/asset/fangwujianzhuwu/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.$nextTick(() => {
+        this.$refs.printWideTable.printTable(isLandscape);
+      })
+    },
+    handleReadyDevData() {
+      fetchDeviceData({ yearAndMonth: this.params.yearAndMonth}).then(res => {
+        let data = res.data;
+        if (data.success) {
+
+          this.$message.success('引用成功!');
+          this.page.currentPage = 1;
+          this.getList(this.page);
+        }
+      });
+    },
+    handleAssetChange({ zcbm }) {
+      this.form = { ...this.form, zcbm };
+    },
+    getFormData() {
+      const { xmId, assetId, zcbm } = this.form;
+      return { xmId, assetId, zcbm, yearAndMonth: this.params.yearAndMonth };
+    },
+  },
+}, {
+  // 模块路径
+  name: 'yfCostManage/basicDataSetting/houseDetailList',
+  res: ({ data }) => {
+    data.records = data.records.map(item => {
+      item.zcmc = item.asset ? item.asset.zcmc : '';
+      item.zclb = item.asset ? item.asset.zclb : '';
+      item.gl = item.asset ? item.asset.gl : '';
+      item.yt = item.asset ? item.asset.yt : '';
+      item.kssj = item.asset ? item.asset.kssj : '';
+      item.sysm = item.asset ? item.asset.sysm : '';
+      item.ysysm = item.asset ? item.asset.ysysm : '';
+      item.zcyz = item.asset ? item.asset.zcyz : '';
+      item.jcz = item.asset ? item.asset.jcz : '';
+      item.yzje = item.asset ? item.asset.yzje : '';
+      item.status = item.status ? item.asset.status : '';
+      return item;
+    });
+    return data;
+  },
+});
+</script>

+ 109 - 8
src/views/yf-cost-manage/basic-data-setting/ky-device-list.vue

@@ -34,15 +34,66 @@
         >
           导出
         </el-button>
+        <el-button
+          type="primary"
+          size="small"
+          @click="handleReadyDevData"
+        >
+          直接引用
+        </el-button>
         <print-table-btn @click="printTable" />
         
         <div style="display: flex; align-items: center;">
-          <year-month-select v-model="params.yearAndMonth" :showAllYear="false"></year-month-select>
+          <year-month-select v-model="params.yearAndMonth"></year-month-select>
         </div>
       </template>
 
-      <template slot="xmmcForm">
-        <project-select placeholder="请选择项目名称" v-model="form.xmId" @change="handleProjectChange"></project-select>
+      <template slot="sysmSearch">
+        <div style="display: flex; align-items: center;">
+          <span>使用寿命:</span>
+          <avue-input-number v-model="params.sysmMin" :min="0" style="width: 90px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.sysmMax" :min="0" style="width: 90px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="zcyzSearch">
+        <div style="display: flex; align-items: center;">
+          <span>资产原值:</span>
+          <avue-input-number v-model="params.zcyzMin" :min="0" style="width: 90px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.zcyzMax" :min="0" style="width: 90px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="ysysmSearch">
+        <div style="display: flex; align-items: center;">
+          <span>已使用月数:</span>
+          <avue-input-number v-model="params.ysysmMin" :min="0" style="width: 90px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.ysysmMax" :min="0" style="width: 90px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="yzjeSearch">
+        <div style="display: flex; align-items: center;">
+          <span>月折旧额(每台/套):</span>
+          <avue-input-number v-model="params.yzjeMin" :min="0" style="width: 90px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.yzjeMax" :min="0" style="width: 90px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="xmIdForm">
+        <project-select v-model="form.xmId" :params="{ yearAndMonth: params.yearAndMonth }"></project-select>
+      </template>
+
+      <template slot="assetIdForm">
+        <asset-select
+          v-model="form.assetId"
+          :params="{ yearAndMonth: params.yearAndMonth, zclb: '仪器设备' }"
+          @change="handleAssetChange"
+        ></asset-select>
       </template>
       
     </avue-crud>
@@ -61,9 +112,11 @@
 </template>
 
 <script>
+import { fetchDeviceData } from "@/api/yfCostManage/basicDataSetting/kyDeviceList"
 import YearMonthSelect from "@/components/year-month-select";
 import UploadExcelDialog from "@/components/upload-excel-dialog";
 import projectSelect from "@/components/project-select";
+import assetSelect from "@/components/asset-select";
 import moment from "moment";
 
 
@@ -71,6 +124,7 @@ export default window.$crudCommon({
   components: {
     YearMonthSelect,
     projectSelect,
+    assetSelect,
     UploadExcelDialog,
   },
   data() {
@@ -78,7 +132,7 @@ export default window.$crudCommon({
       params: {
         yearAndMonth: moment(new Date()).format('YYYYMM'),
       },
-      defaultColumns: [],
+      isSelAnnual: false,
 
       wideTableColumns: [],
       printTitle: "",
@@ -86,22 +140,37 @@ export default window.$crudCommon({
   },
   watch: {
     'params.yearAndMonth'(newVal) {
+      if (newVal.length > 4) {
+        // 是否勾选未全年
+        this.isSelAnnual = false;
+      } else {
+        this.isSelAnnual = true;
+      }
       this.page.currentPage = 1;
       this.getList(this.page);
     }
   },
+  computed: {
+    permissionList() {
+      return {
+        addBtn: !this.isSelAnnual,
+        editBtn: !this.isSelAnnual,
+        delBtn: !this.isSelAnnual,
+      };
+    },
+  },
   methods: {
     handleImport() {
       let excelParams = { yearAndMonth: this.params.yearAndMonth };
-      this.$refs.uploadExcelDialog.open('/api/kd-scientific/technician/import', excelParams);
+      this.$refs.uploadExcelDialog.open('/api/kd-scientific/asset/keyanyiqishebeimingxibiao/import', excelParams);
     },
     uploadAfter() {
       this.page.currentPage = 1;
       this.getList(this.page);
     },
     handleExport() {
-      exportBloByPost(`/api/kd-scientific/technician/export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
-        downloadXls(res.data, `项目直接投入费用表${this.params.yearAndMonth}.xlsx`);
+      exportBloByPost(`/api/kd-scientific/asset/keyanyiqishebeimingxibiao/export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
+        downloadXls(res.data, `科研仪器设备明细表${this.params.yearAndMonth}.xlsx`);
       });
     },
     /**
@@ -110,16 +179,48 @@ export default window.$crudCommon({
      */
     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);
       })
     },
+    handleReadyDevData() {
+      fetchDeviceData({ yearAndMonth: this.params.yearAndMonth}).then(res => {
+        let data = res.data;
+        if (data.success) {
+
+          this.$message.success('引用成功!');
+          this.page.currentPage = 1;
+          this.getList(this.page);
+        }
+      });
+    },
+    handleAssetChange({ zcbm }) {
+      this.form = { ...this.form, zcbm };
+    },
+    getFormData() {
+      const { xmId, assetId, zcbm } = this.form;
+      return { xmId, assetId, zcbm, yearAndMonth: this.params.yearAndMonth };
+    },
   },
 }, {
   // 模块路径
   name: 'yfCostManage/basicDataSetting/kyDeviceList',
   res: ({ data }) => {
+    data.records = data.records.map(item => {
+      item.zcmc = item.asset ? item.asset.zcmc : '';
+      item.zclb = item.asset ? item.asset.zclb : '';
+      item.gl = item.asset ? item.asset.gl : '';
+      item.yt = item.asset ? item.asset.yt : '';
+      item.kssj = item.asset ? item.asset.kssj : '';
+      item.sysm = item.asset ? item.asset.sysm : '';
+      item.ysysm = item.asset ? item.asset.ysysm : '';
+      item.zcyz = item.asset ? item.asset.zcyz : '';
+      item.jcz = item.asset ? item.asset.jcz : '';
+      item.yzje = item.asset ? item.asset.yzje : '';
+      item.status = item.status ? item.asset.status : '';
+      return item;
+    });
     return data;
   },
 });

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

@@ -87,6 +87,7 @@ 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]));

+ 155 - 0
src/views/yf-cost-manage/yf-cost-statistics/wxzc-cost-statistics/amortize-cost-summary-list.vue

@@ -0,0 +1,155 @@
+<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" :showAllYear="false"></year-month-select>
+        </div>
+      </template>
+
+      <template slot="rqSearch">
+        <el-date-picker
+          v-model="params.rq"
+          type="daterange"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          value-format="yyyy-MM-dd"
+          style="width: 220px !important;"
+        >
+        </el-date-picker>
+      </template>
+
+      <template slot="jczSearch">
+        <div style="display: flex; align-items: center;">
+          <span>净残值:</span>
+          <avue-input-number v-model="params.jczStart" :min="0" style="width: 100px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.jczEnd" :min="0" style="width: 100px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="zcyzSearch">
+        <div style="display: flex; align-items: center;">
+          <span>资产原值:</span>
+          <avue-input-number v-model="params.zcyzStart" :min="0" style="width: 100px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.zcyzEnd" :min="0" style="width: 100px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="ytxeSearch">
+        <div style="display: flex; align-items: center;">
+          <span>月摊销额:</span>
+          <avue-input-number v-model="params.ytxeStart" :min="0" style="width: 100px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.ytxeEnd" :min="0" style="width: 100px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="ysygsSearch">
+        <div style="display: flex; align-items: center;">
+          <span>月使用工时:</span>
+          <avue-input-number v-model="params.ysygsStart" :min="0" style="width: 100px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.ysygsEnd" :min="0" style="width: 100px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="yyfgsSearch">
+        <div style="display: flex; align-items: center;">
+          <span>已研发工时:</span>
+          <avue-input-number v-model="params.yyfgsStart" :min="0" style="width: 100px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.yyfgsEnd" :min="0" style="width: 100px !important;"></avue-input-number>
+        </div>
+      </template>
+      
+    </avue-crud>
+
+    <upload-excel-dialog ref="uploadExcelDialog" :uploadAfter="uploadAfter"/>
+
+    <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";
+import Decimal from "decimal.js";
+
+
+export default window.$crudCommon({
+  components: {
+    YearMonthSelect,
+  },
+  data() {
+    return {
+      params: {
+        yearAndMonth: moment(new Date()).format('YYYYMM'),
+      },
+      defaultColumns: [],
+
+      wideTableColumns: [],
+      printTitle: "",
+    };
+  },
+  watch: {
+    'params.yearAndMonth'(newVal) {
+      this.page.currentPage = 1;
+      this.getList(this.page);
+    }
+  },
+  methods: {
+    loadData() {},
+    handleExport() {
+      exportBlob(`/api/kd-scientific/lease/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.$nextTick(() => {
+        this.$refs.printWideTable.printTable(isLandscape);
+      })
+    },
+  },
+}, {
+  // 模块路径
+  name: 'yfCostManage/yfCostStatistics/amortizeCostSummaryList',
+  res: ({ data }) => {
+    return data;
+  },
+});
+</script>

+ 1 - 0
src/views/yf-cost-manage/yf-cost-statistics/wxzc-cost-statistics/other-cost-summary-list.vue

@@ -82,6 +82,7 @@ export default window.$crudCommon({
     }
   },
   methods: {
+    loadData() {},
     handleExport() {
       exportBlob(`/api/kd-scientific/lease/export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
         downloadXls(res.data, `其他费用汇总表${this.params.yearAndMonth}.xlsx`);

+ 4 - 16
src/views/yf-cost-manage/yf-cost-statistics/wxzc-cost-statistics/yf-cost-summary-list.vue

@@ -19,23 +19,10 @@
         <print-table-btn @click="printTable" />
         
         <div style="display: flex; align-items: center;">
-          <year-month-select v-model="params.yearAndMonth"></year-month-select>
+          <year-month-select v-model="params.yearAndMonth" :showAllYear="false"></year-month-select>
         </div>
       </template>
 
-      <template slot="rqSearch">
-        <el-date-picker
-          v-model="params.rq"
-          type="daterange"
-          range-separator="至"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-          value-format="yyyy-MM-dd"
-          style="width: 220px !important;"
-        >
-        </el-date-picker>
-      </template>
-
       <template slot="costRangeSearch">
         <div style="display: flex; align-items: center;">
           <span>费用区间(元):</span>
@@ -91,9 +78,10 @@ export default window.$crudCommon({
     }
   },
   methods: {
+    loadData() {},
     handleExport() {
       exportBlob(`/api/kd-scientific/lease/export?${this.website.tokenHeader}=${getToken()}`, this.params).then(res => {
-        downloadXls(res.data, `其他费用汇总表${this.params.yearAndMonth}.xlsx`);
+        downloadXls(res.data, `研发费用汇总表${this.params.yearAndMonth}.xlsx`);
       });
     },
     /**
@@ -102,7 +90,7 @@ export default window.$crudCommon({
      */
     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);
       })

+ 106 - 0
src/views/yf-cost-manage/yf-cost-statistics/zjfy-cost-statistics/depre-summary-list.vue

@@ -0,0 +1,106 @@
+<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="costRangeSearch">
+        <div style="display: flex; align-items: center;">
+          <span>费用区间(元):</span>
+          <avue-input-number v-model="params.startSysm" :min="0" style="width: 100px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.endSysm" :min="0" style="width: 100px !important;"></avue-input-number>
+        </div>
+      </template>
+      
+    </avue-crud>
+
+    <upload-excel-dialog ref="uploadExcelDialog" :uploadAfter="uploadAfter"/>
+
+    <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";
+import Decimal from "decimal.js";
+
+
+export default window.$crudCommon({
+  components: {
+    YearMonthSelect,
+  },
+  data() {
+    return {
+      params: {
+        yearAndMonth: moment(new Date()).format('YYYYMM'),
+      },
+      defaultColumns: [],
+
+      wideTableColumns: [],
+      printTitle: "",
+    };
+  },
+  watch: {
+    'params.yearAndMonth'(newVal) {
+      this.page.currentPage = 1;
+      this.getList(this.page);
+    }
+  },
+  methods: {
+    loadData() {},
+    handleExport() {
+      exportBlob(`/api/kd-scientific/lease/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.$nextTick(() => {
+        this.$refs.printWideTable.printTable(isLandscape);
+      })
+    },
+  },
+}, {
+  // 模块路径
+  name: 'yfCostManage/yfCostStatistics/depreSummaryList',
+  res: ({ data }) => {
+    return data;
+  },
+});
+</script>

+ 155 - 0
src/views/yf-cost-manage/yf-cost-statistics/zjfy-cost-statistics/hourse-depre-allocation.vue

@@ -0,0 +1,155 @@
+<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" :showAllYear="false"></year-month-select>
+        </div>
+      </template>
+
+      <template slot="rqSearch">
+        <el-date-picker
+          v-model="params.rq"
+          type="daterange"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          value-format="yyyy-MM-dd"
+          style="width: 220px !important;"
+        >
+        </el-date-picker>
+      </template>
+
+      <template slot="jczSearch">
+        <div style="display: flex; align-items: center;">
+          <span>净残值:</span>
+          <avue-input-number v-model="params.jczStart" :min="0" style="width: 100px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.jczEnd" :min="0" style="width: 100px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="zcyzSearch">
+        <div style="display: flex; align-items: center;">
+          <span>资产原值:</span>
+          <avue-input-number v-model="params.zcyzStart" :min="0" style="width: 100px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.zcyzEnd" :min="0" style="width: 100px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="ytxeSearch">
+        <div style="display: flex; align-items: center;">
+          <span>月摊销额:</span>
+          <avue-input-number v-model="params.ytxeStart" :min="0" style="width: 100px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.ytxeEnd" :min="0" style="width: 100px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="ysygsSearch">
+        <div style="display: flex; align-items: center;">
+          <span>月使用工时:</span>
+          <avue-input-number v-model="params.ysygsStart" :min="0" style="width: 100px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.ysygsEnd" :min="0" style="width: 100px !important;"></avue-input-number>
+        </div>
+      </template>
+
+      <template slot="yyfgsSearch">
+        <div style="display: flex; align-items: center;">
+          <span>已研发工时:</span>
+          <avue-input-number v-model="params.yyfgsStart" :min="0" style="width: 100px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.yyfgsEnd" :min="0" style="width: 100px !important;"></avue-input-number>
+        </div>
+      </template>
+      
+    </avue-crud>
+
+    <upload-excel-dialog ref="uploadExcelDialog" :uploadAfter="uploadAfter"/>
+
+    <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";
+import Decimal from "decimal.js";
+
+
+export default window.$crudCommon({
+  components: {
+    YearMonthSelect,
+  },
+  data() {
+    return {
+      params: {
+        yearAndMonth: moment(new Date()).format('YYYYMM'),
+      },
+      defaultColumns: [],
+
+      wideTableColumns: [],
+      printTitle: "",
+    };
+  },
+  watch: {
+    'params.yearAndMonth'(newVal) {
+      this.page.currentPage = 1;
+      this.getList(this.page);
+    }
+  },
+  methods: {
+    loadData() {},
+    handleExport() {
+      exportBlob(`/api/kd-scientific/lease/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.$nextTick(() => {
+        this.$refs.printWideTable.printTable(isLandscape);
+      })
+    },
+  },
+}, {
+  // 模块路径
+  name: 'yfCostManage/yfCostStatistics/hourseDepreAllocation',
+  res: ({ data }) => {
+    return data;
+  },
+});
+</script>

+ 106 - 0
src/views/yf-cost-manage/yf-cost-statistics/zjtl-cost-statistics/zjtl-cost-summary-list.vue.vue

@@ -0,0 +1,106 @@
+<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" :showAllYear="false"></year-month-select>
+        </div>
+      </template>
+
+      <template slot="costRangeSearch">
+        <div style="display: flex; align-items: center;">
+          <span>费用区间(元):</span>
+          <avue-input-number v-model="params.startSysm" :min="0" style="width: 100px !important;"></avue-input-number>
+          <span style="width: 20px; text-align: center;">至</span>
+          <avue-input-number v-model="params.endSysm" :min="0" style="width: 100px !important;"></avue-input-number>
+        </div>
+      </template>
+      
+    </avue-crud>
+
+    <upload-excel-dialog ref="uploadExcelDialog" :uploadAfter="uploadAfter"/>
+
+    <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";
+import Decimal from "decimal.js";
+
+
+export default window.$crudCommon({
+  components: {
+    YearMonthSelect,
+  },
+  data() {
+    return {
+      params: {
+        yearAndMonth: moment(new Date()).format('YYYYMM'),
+      },
+      defaultColumns: [],
+
+      wideTableColumns: [],
+      printTitle: "",
+    };
+  },
+  watch: {
+    'params.yearAndMonth'(newVal) {
+      this.page.currentPage = 1;
+      this.getList(this.page);
+    }
+  },
+  methods: {
+    loadData() {},
+    handleExport() {
+      exportBlob(`/api/kd-scientific/lease/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.$nextTick(() => {
+        this.$refs.printWideTable.printTable(isLandscape);
+      })
+    },
+  },
+}, {
+  // 模块路径
+  name: 'yfCostManage/yfCostStatistics/zjtlCostSummaryList',
+  res: ({ data }) => {
+    return data;
+  },
+});
+</script>