雷佳斌 1 тиждень тому
батько
коміт
91008af58a

+ 3 - 3
.env.development

@@ -1,11 +1,11 @@
 # 页面标题
-VUE_APP_TITLE = 科研系统
+VUE_APP_TITLE = 科研管理数字化平台
 
 # 开发环境配置
 ENV = 'development'
 
-# 科研系统/开发环境
-VUE_APP_BASE_API = '/dev-api'
+# 科研管理数字化平台/开发环境
+VUE_APP_BASE_API = '/prod-api'
 
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 2 - 2
.env.production

@@ -1,8 +1,8 @@
 # 页面标题
-VUE_APP_TITLE = 科研系统
+VUE_APP_TITLE = 科研管理数字化平台
 
 # 生产环境配置
 ENV = 'production'
 
-# 科研系统/生产环境
+# 科研管理数字化平台/生产环境
 VUE_APP_BASE_API = '/prod-api'

+ 2 - 2
.env.staging

@@ -1,10 +1,10 @@
 # 页面标题
-VUE_APP_TITLE = 科研系统
+VUE_APP_TITLE = 科研管理数字化平台
 
 NODE_ENV = production
 
 # 测试环境配置
 ENV = 'staging'
 
-# 科研系统/测试环境
+# 科研管理数字化平台/测试环境
 VUE_APP_BASE_API = '/stage-api'

+ 2 - 2
package.json

@@ -1,11 +1,11 @@
 {
   "name": "ruoyi",
   "version": "3.8.6",
-  "description": "科研系统",
+  "description": "科研管理数字化平台",
   "author": "",
   "license": "MIT",
   "scripts": {
-    "dev": "vue-cli-service serve --mode production",
+    "dev": "vue-cli-service serve",
     "build:prod": "vue-cli-service build",
     "build:stage": "vue-cli-service build --mode staging",
     "preview": "node build/index.js --preview",

+ 21 - 0
src/api/rd/journal.js

@@ -0,0 +1,21 @@
+import request from '@/utils/request'
+import { parseStrEmpty } from "@/utils/ruoyi";
+
+
+// 
+export function allProjectMonthData(query) {
+  return request({
+    url: '/api/project/allProjectMonthData',
+    method: 'get',
+    params: query
+  })
+}
+
+// 
+export function listJournal(query) {
+  return request({
+    url: '/api/project/getMonthClock',
+    method: 'get',
+    params: query
+  })
+}

+ 101 - 0
src/api/rd/record.js

@@ -0,0 +1,101 @@
+import request from '@/utils/request'
+import { parseStrEmpty } from "@/utils/ruoyi";
+
+// 查询研发打卡日志列表
+export function listRecord(query) {
+  return request({
+    url: '/api/project/listRecord',
+    method: 'get',
+    params: query
+  })
+}
+
+// 批量审核
+export function batchExamineRecord(data) {
+  return request({
+    url: '/api/project/batchExamineRecord',
+    method: 'post',
+    data: data
+  })
+}
+
+// 导入考勤数据
+// export function importUserClock(data) {
+//   return request({
+//     url: '/system/user/importUserClock',
+//     method: 'post',
+//     data: data
+//   })
+// }
+
+// 用户打卡数据列表
+export function selectUserClock(query) {
+  return request({
+    url: '/system/user/selectUserClock',
+    method: 'get',
+    params: query
+  })
+}
+
+// 批量更新考勤数据
+export function updateAllUserClock(query) {
+  return request({
+    url: '/system/user/updateAllUserClock',
+    method: 'post',
+    params: query
+  })
+}
+
+// 打卡数据匹配 (匹配工时)
+export function mateUserRecord(query) {
+  return request({
+    url: '/api/project/mateUserRecord',
+    method: 'post',
+    params: query
+  })
+}
+
+//  考勤数据合并(核对)
+export function userRecordMerge(data) {
+  return request({
+    url: '/system/user/userRecordMerge',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改单条考勤核对数据
+export function updateUserRecord(data) {
+  return request({
+    url: '/system/user/updateUserRecord',
+    method: 'post',
+    data: data
+  })
+}
+
+// 多打卡数据列表
+export function UserClockDetails(query) {
+  return request({
+    url: '/system/user/UserClockDetails',
+    method: 'get',
+    params: query
+  })
+}
+
+// 修改考勤对应多打卡
+export function updateUserClockDetails(data) {
+  return request({
+    url: '/system/user/updateUserClockDetails',
+    method: 'post',
+    data: data
+  })
+}
+
+// 项目日志上链确权
+export function saveProjectStaffRecordTianhe(query) {
+  return request({
+    url: '/api/project/saveProjectStaffRecordTianhe',
+    method: 'get',
+    params: query
+  })
+}

+ 1 - 1
src/views/achievementManage/IPRManage.vue

@@ -96,7 +96,7 @@
           <span>{{ scope.$index + 1 }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="业务申请号" align="center" prop="key1" />
+      <!-- <el-table-column label="业务申请号" align="center" prop="key1" /> -->
       <el-table-column label="专利类型" align="center" prop="key2" />
       <el-table-column label="专利名称" align="center" prop="key3" />
       <el-table-column label="申请人" align="center" prop="key4" />

+ 59 - 34
src/views/board/index.vue

@@ -15,19 +15,26 @@
           </template>
 
           <el-row style="margin-top: 45px">
-            <el-col :span="8">
+            <el-col :span="16">
               <div style="display: flex; justify-content: center;">
                 <num-statistics :name="'研发项目'" :num="35" />
               </div>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <!-- <div style="display: flex; justify-content: center;">
+                <num-statistics :name="'研发项目'" :num="35" />
+              </div> -->
               <basic-chart
                 style="width: 100%; height: 300px"
                 :options="topPie1Options"
               />
             </el-col>
             <el-col :span="8">
-              <div style="display: flex; justify-content: center;">
+              <!-- <div style="display: flex; justify-content: center;">
                 <num-statistics :name="'自主研发'" :num="20" />
-              </div>
+              </div> -->
               <basic-chart
                 style="width: 100%; height: 300px"
                 :options="topPie2Options"
@@ -42,16 +49,16 @@
       <el-col :span="24">
         <basic-card title="研发投入情况">
           <p>
-            年度研发投入金额为
+            年度研发投入预算金额为
             <span class="count">6200</span>
             万元,已归集研发费用金额为
             <span class="count">4000</span>
             万元
           </p>
           <p>
-            研发项目进度为
-            <span class="count">75%</span>
-            ,(按费用归集金额计算),低于月度预计进度。
+            研发归集进度为
+            <span class="count">64.5%</span>
+            ,低于月度预计进度。
           </p>
 
           <el-row style="margin-top: 45px">
@@ -62,10 +69,19 @@
               />
             </el-col>
             <el-col :span="8">
-              <basic-chart
-                style="width: 100%; height: 300px"
-                :options="yffyPieOptions"
-              />
+              <div style="position: relative;">
+                <basic-chart
+                  style="width: 100%; height: 300px"
+                  :options="yffyPieOptions"
+                />
+                <div style="position: absolute; bottom: 35px; left: 58%; font-size: 14px;">
+                  <div style="display: flex; justify-content: space-around;">
+                    <span style="width: 180px;">总计金额</span>
+                    <span style="color: rgb(64, 158, 255);">4000</span>
+                  </div>
+                </div>
+              </div>
+              
             </el-col>
             <el-col :span="8">
               <basic-chart
@@ -81,14 +97,19 @@
     <el-row :gutter="20" style="margin-top: 20px">
       <el-col :span="24">
         <basic-card title="知识产权结构">
-          <p>截止到2025年申请</p>
           <p>
+            截止到2025年申请
+            <span class="count">59</span>项,
+            获得
+            <span class="count">30</span>项
+          </p>
+          <!-- <p>
             获得知识产权总数为
             <span class="count">33</span>
             个,其他发明专利
             <span class="count">2</span>
             个,实用新型专利<span class="count">69</span>个
-          </p>
+          </p> -->
 
           <el-row style="margin-top: 45px">
             <el-col :span="8">
@@ -154,9 +175,13 @@ export default {
         },
         series: [
           {
-            data: [6200, 5000],
+            data: [6200, 4000],
             type: 'bar',
-            barWidth: "25%"
+            barWidth: "25%",
+            label: {
+              show: true,
+              position: "top"
+            }
           }
         ]
       },
@@ -186,10 +211,10 @@ export default {
     },
     initTopPie2Options() {
       this.topPie2Options = this.getPieOptions("", [
-        { value: 13, name: "自主研发项目" },
-        { value: 3, name: "委外研发项目" },
+        { value: 25, name: "自主研发项目" },
+        { value: 5, name: "委外研发项目" },
         { value: 2, name: "集中研发项目" },
-        { value: 2, name: "合作研发项目" },
+        { value: 3, name: "合作研发项目" },
       ]);
     },
     initYfhmProjectOptions() {
@@ -221,7 +246,7 @@ export default {
         },
         yAxis: {
           type: "category",
-          data: ["项目1", "项目二", "项目三", "项目四", "项目五", "项目六"],
+          data: ["项目", "项目二", "项目三", "项目四", "项目五", "项目六"],
         },
         series: [
           {
@@ -239,33 +264,33 @@ export default {
     },
     initYfffChartOptions() {
       this.yffyPieOptions = this.getPieOptions("2025年研发费用(万元)", [
-        { value: 10000, name: "人员人工费用" },
-        { value: 2510, name: "直接投入费用" },
-        { value: 53, name: "折旧费用与长期待摊费用" },
+        { value: 800, name: "人员人工费用" },
+        { value: 2400, name: "直接投入费用" },
+        { value: 500, name: "折旧费用与长期待摊费用" },
         { value: 50, name: "无形资产摊销费用" },
         { value: 100, name: "设计费用" },
-        { value: 5635, name: "装备调试费用与试验费用" },
-        { value: 100, name: "委托外部研究开发费用" },
-        { value: 20, name: "其他费用" },
+        { value: 100, name: "装备调试费用与试验费用" },
+        { value: 20, name: "委托外部研究开发费用" },
+        { value: 30, name: "其他费用" },
       ]);
     },
     initZscqChartOptions() {
       this.zscqOptions = this.getPieOptions("知识产权申报情况", [
-        { value: 6, name: "发明专利" },
-        { value: 10, name: "实用新型专利" },
-        { value: 20, name: "软件著作权" },
+        { value: 5, name: "发明专利" },
+        { value: 20, name: "实用新型专利" },
+        { value: 15, name: "软件著作权" },
         { value: 5, name: "技术标注" },
-        { value: 9, name: "科研论文" },
-        { value: 5, name: "其他成果" },
+        { value: 8, name: "科研论文" },
+        { value: 6, name: "其他成果" },
       ]);
     },
     initZlChartOptions() {
       this.zlPieOptions = this.getPieOptions("知识产权获得情况", [
         { value: 2, name: "发明专利" },
-        { value: 8, name: "实用新型专利" },
+        { value: 9, name: "实用新型专利" },
         { value: 10, name: "软件著作权" },
-        { value: 3, name: "技术标注" },
-        { value: 5, name: "科研论文" },
+        { value: 1, name: "技术标注" },
+        { value: 3, name: "科研论文" },
         { value: 5, name: "其他成果" },
       ]);
     },
@@ -307,7 +332,7 @@ export default {
           },
           formatter: function (name) {
             let currItem = seriesData.find((item) => item.name === name);
-            let str = "{a|" + name + "}{num|" + currItem.value + "}";
+            let str = "{a|" + name + "}{num|" + currItem.value + "}";
             return str;
           },
         },

+ 8 - 2
src/views/error/building.vue

@@ -1,9 +1,15 @@
 <template>
-  <h1 style="padding: 16px 24px;">此数据涉密,需申请权限</h1>
+  <!-- <h1 style="padding: 16px 24px;">此数据涉密,需申请权限</h1> -->
+  <div></div>
 </template>
 
 <script>
 export default {
-  name: "Building"
+  name: "Building",
+  mounted() {
+    this.$alert('此数据涉密,需申请权限!', '提示', {
+      confirmButtonText: '确认',
+    });
+  }
 }
 </script>

+ 23 - 28
src/views/financeManage/costSummary.vue

@@ -8,25 +8,19 @@
       v-show="showSearch"
       label-width="110px"
     >
-      <el-row>
-        <el-col :span="6">
-          <el-form-item label="计划年月" prop="key1">
-            <el-date-picker
-              v-model="queryParams.key1"
-              type="month"
-            >
-            </el-date-picker>
-          </el-form-item>
-        </el-col>
-        <el-col :span="6">
-          <el-form-item>
-            <el-button type="primary" icon="el-icon-search" size="mini">
-              搜索
-            </el-button>
-            <el-button icon="el-icon-refresh" size="mini">重置</el-button>
-          </el-form-item>
-        </el-col>
-      </el-row>
+      <el-form-item label="计划年月" prop="key1">
+        <el-date-picker
+          v-model="queryParams.key1"
+          type="month"
+        >
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini">
+          搜索
+        </el-button>
+        <el-button icon="el-icon-refresh" size="mini">重置</el-button>
+      </el-form-item>
     </el-form>
 
     <el-row :gutter="10" class="mb8">
@@ -39,15 +33,16 @@
           <span>{{ scope.$index + 1 }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="时间" align="center" prop="key1" />
-      <el-table-column label="合同报支总额" align="center" prop="key2" />
-      <el-table-column label="无合同报支总额" align="center" prop="key3" />
-      <el-table-column label="财务系统费用" align="center" prop="key4" />
-      <el-table-column label="采购系统费用" align="center" prop="key5" />
-      <el-table-column label="科研费用" align="center" prop="key6" />
-      <el-table-column label="直接费用" align="center" prop="key7" />
-      <el-table-column label="间接费用" align="center" prop="key8" />
-      <el-table-column label="总费用" align="center" prop="key9" />
+      <el-table-column label="项目编号" align="center" prop="key1" />
+      <el-table-column label="项目名称" align="center" prop="key2" />
+      <el-table-column label="研发费用合计" align="center" prop="key3" />
+      <el-table-column label="人员人工费用" align="center" prop="key4" />
+      <el-table-column label="直接投入费用" align="center" prop="key5" />
+      <el-table-column label="折旧费用" align="center" prop="key6" />
+      <el-table-column label="无形资产推销" align="center" prop="key7" />
+      <el-table-column label="新产品设计费等" align="center" prop="key8" />
+      <el-table-column label="其他相关费用" align="center" prop="key9" />
+      <el-table-column label="委托外部研发费用" align="center" prop="key9" />
     </el-table>
 
     <pagination

+ 1 - 1
src/views/projectProcessManage/projectMonthSummary.vue

@@ -88,7 +88,7 @@
       <el-table-column label="项目编号" align="center" prop="key1" />
       <el-table-column label="项目名称" align="center" prop="key2" />
       <el-table-column label="项目类型" align="center" prop="key3" />
-      <el-table-column label="项目投资单位" align="center" prop="key4" />
+      <!-- <el-table-column label="项目投资单位" align="center" prop="key4" /> -->
       <el-table-column label="项目责任单位" align="center" prop="key5" />
       <el-table-column label="项目阶段" align="center" prop="key6" />
       <el-table-column label="报告类别" align="center" prop="key7" />

+ 9 - 3
src/views/projectProcessManage/projectProgress.vue

@@ -87,7 +87,13 @@
       <el-table-column label="开展形式" align="center" prop="key5" />
       <el-table-column label="项目来源" align="center" prop="key6" />
       <el-table-column label="项目申报单位" align="center" prop="key7" />
-      <el-table-column label="研发预算(万元)" align="center" prop="key8" />
+      <el-table-column label="研发预算(万元)" align="center" prop="key8">
+        <template slot-scope="{ row }">
+          <el-button v-if="row.key9 > row.key8" type="danger">{{ row.key8 }}</el-button>
+          <el-button v-else-if="(row.key8 - row.key9) > 5" type="success">{{ row.key8 }}</el-button>
+          <el-button v-else type="primary">{{ row.key8 }}</el-button>
+        </template>
+      </el-table-column>
       <el-table-column label="研发投入(万元)" align="center">
         <el-table-column label="累计实际研发投入" prop="key9" align="center"></el-table-column>
         <el-table-column label="其中:" align="center">
@@ -167,9 +173,9 @@ export default {
           key6: "本企业自选项目",
           key7: "产品开发部",
           key8: 500,
-          key9: 110.6,
+          key9: 502,
           key10: 30.6,
-          key11: 50,
+          key11: 391.4,
           key12: 25,
           key13: 5
         },

+ 287 - 0
src/views/rd/journal/index.vue

@@ -0,0 +1,287 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="20" v-show="headList.length > 0">
+      <el-col
+        :span="2"
+        :xs="24"
+        style="padding-left: 0; padding-right: 0; overflow-x: auto"
+        v-show="showSearch"
+      >
+        <div
+          class="head-container"
+          :style="deptOptions.length > 0 ? 'display: flex;' : ''"
+        >
+          <el-tree
+            :data="deptOptions"
+            :props="defaultProps"
+            ref="tree"
+            highlight-current
+            expand-on-click-node
+            accordion
+            @node-click="handleNodeClick"
+          />
+        </div>
+      </el-col>
+      <!--用户数据-->
+      <el-col :span="22" :xs="24">
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-download"
+              size="mini"
+              @click="handleExport"
+              v-hasPermi="['system:record:export']"
+              >导出</el-button
+            >
+          </el-col>
+        </el-row>
+        <el-row class="title">{{ this.headData.tableName }}</el-row>
+        <el-row class="head">
+          <el-col :span="8">单位:{{ this.headData.companyName }}</el-col>
+          <el-col :span="8" style="text-align: center"
+            >所属事业部:{{ this.headData.departmentName }}</el-col
+          >
+          <el-col :span="8" style="text-align: right"
+            >课题名称:{{ this.headData.projectName }}</el-col
+          >
+        </el-row>
+        <el-table v-loading="loading" :data="userList" border>
+          <el-table-column
+            label="姓名"
+            align="center"
+            key="name"
+            prop="name"
+            show-overflow-tooltip
+          >
+          </el-table-column>
+          <el-table-column label="星期" align="center">
+            <el-table-column
+              label="类型"
+              align="center"
+              width="80"
+              key="type"
+              prop="type"
+              show-overflow-tooltip
+            />
+          </el-table-column>
+          <el-table-column
+            v-for="(item, index) in headList"
+            :label="item.week"
+            width="40"
+            align="center"
+          >
+            <el-table-column
+              :label="item.date.toString()"
+              align="center"
+              width="40"
+              key="dateList"
+              prop="dateList"
+            >
+              <template slot-scope="scope">
+                {{ scope.row.dateList[index] == 0 ? "" : scope.row.dateList[index] }}
+              </template>
+            </el-table-column>
+          </el-table-column>
+          <el-table-column label="正常出勤" align="center">
+            <el-table-column
+              label="工时"
+              width="73"
+              align="center"
+              key="duration"
+              prop="duration"
+            />
+          </el-table-column>
+          <el-table-column
+            label="分摊率"
+            align="center"
+            width="60"
+            key="proportion"
+            prop="proportion"
+          >
+            <template slot-scope="scope">
+              {{ (scope.row.proportion * 100).toFixed(0) + "%" }}
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-col>
+    </el-row>
+    <el-col
+      :gutter="20"
+      style="text-align: center; font-size: 24px"
+      v-show="headList.length == 0"
+    >
+      暂无数据
+    </el-col>
+  </div>
+</template>
+
+<script>
+import { allProjectMonthData, listJournal } from "@/api/rd/journal";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+  name: "Journal",
+  components: { Treeselect },
+  data() {
+    return {
+      loading: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 用户表格数据
+      userList: null,
+      // 部门树选项
+      deptOptions: [],
+      // 默认密码
+      initPassword: undefined,
+      defaultProps: {
+        children: "children",
+        label: "label",
+      },
+      // 查询参数
+      queryParams: {
+        id: undefined,
+        yearMonth: undefined,
+      },
+      headList: [],
+      headData: {},
+    };
+  },
+  watch: {},
+  created() {
+    this.getDeptTree();
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true;
+      listJournal(this.queryParams).then((response) => {
+        this.headData = {
+          tableName: response.data.tableName,
+          projectName: response.data.projectName,
+          companyName: response.data.companyName,
+          departmentName: response.data.departmentName,
+        };
+        this.headList = response.data?.list?.[0].data;
+        let list = response.data.list || [];
+        let dataS = [];
+        for (var i = 0; i < list.length; i++) {
+          let dateList1 = [];
+          let dateList2 = [];
+          for (var j = 0; j < list[i].data.length; j++) {
+            dateList1.push(list[i].data[j].projectDuration);
+            dateList2.push(list[i].data[j].notDuration);
+          }
+          let a = {
+            name: list[i].name,
+            type: "研发工时",
+            duration: list[i].projectDuration,
+            proportion: list[i].projectProportion,
+            dateList: dateList1,
+          };
+          dataS.push(a);
+          let b = {
+            name: list[i].name,
+            type: "非研发工时",
+            duration: list[i].notDuration,
+            proportion: list[i].notProportion,
+            dateList: dateList2,
+          };
+          dataS.push(b);
+        }
+        this.userList = dataS;
+        this.loading = false;
+      });
+    },
+    /** 查询下拉树结构 */
+    getDeptTree() {
+      allProjectMonthData().then((response) => {
+        if (response.data.length > 0) {
+          const newList = response.data.map((item) => {
+            if (item.projectList.length > 0) {
+              item.projectList = item.projectList.map((itx) => {
+                if (itx.months.length > 0) {
+                  itx.months = itx.months.map((it) => ({
+                    id: itx.id,
+                    label: it,
+                    children: [],
+                  }));
+                }
+                return { id: itx.id, label: itx.name, children: itx.months };
+              });
+            }
+            return { label: item.companyName, children: item.projectList };
+          });
+          this.deptOptions = newList;
+          this.queryParams = {
+            id: newList[0].children[0].id,
+            yearMonth: newList[0].children[0].children[0].label,
+          };
+          this.getList();
+        } else {
+          this.deptOptions = [];
+        }
+      });
+    },
+    // 节点单击事件
+    handleNodeClick(data) {
+      if (!!data.id && data.children.length == 0) {
+        this.queryParams.id = data.id;
+        this.queryParams.yearMonth = data.label;
+      } else {
+        return;
+      }
+      // if (!!data.id) {
+      //   this.queryParams.id = data.id;
+      //   if (data.children.length == 0) {
+      //     // 点击日期
+      //     this.queryParams.yearMonth = data.label;
+      //   } else {
+      //     // 点击项目
+      //     this.queryParams.yearMonth = data.children[0].label;
+      //   }
+      // } else {
+      //   // 点击公司
+      //   this.queryParams.id = data.children[0].id;
+      //   this.queryParams.yearMonth = data.children[0].children[0].label;
+      // }
+      this.getList();
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "api/project/getMonthClockExport",
+        {
+          ...this.queryParams,
+        },
+        `project_record_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>
+
+<style lang="scss">
+.mb8 {
+  display: flex;
+  flex-direction: row-reverse;
+}
+.title {
+  text-align: center;
+  font-size: 30px;
+  font-weight: bold;
+  margin-bottom: 30px;
+}
+.head {
+  font-size: 18px;
+  font-weight: bold;
+  margin-bottom: 10px;
+}
+
+.el-table .cell {
+  padding-left: 0;
+  padding-right: 0;
+}
+</style>

Різницю між файлами не показано, бо вона завелика
+ 1221 - 0
src/views/rd/record/index.vue


+ 5 - 2
src/views/rdManage/projectProspectus.vue

@@ -118,7 +118,10 @@
     <el-dialog :title="dialogTitle" :visible.sync="visible" width="960px" append-to-body>
       <el-form ref="form" :model="form" label-width="120px">
         <el-form-item label="项目名称" prop="key1">
-          <el-input v-model="form.key1" placeholder="请输入详细的项目名称" />
+          <div style="display: flex;">
+            <el-input v-model="form.key1" placeholder="请输入详细的项目名称" style="width: 60%;" />
+            <el-button type="primary">AI生成</el-button>
+          </div>
         </el-form-item>
         <el-form-item label="计划年份" prop="key2">
           <el-date-picker type="year" v-model="form.key2" value-format="yyyy"></el-date-picker>
@@ -261,7 +264,7 @@ export default {
           key5: "自主完成",
           key6: "本企业自选项目",
           key7: "技术中心",
-          key8: "30",
+          key8: "40",
         },
         {
           key1: "KY2025-002",

+ 1 - 1
src/views/register.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="register">
     <el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
-      <h3 class="title">科研系统</h3>
+      <h3 class="title">科研管理数字化平台</h3>
       <el-form-item prop="username">
         <el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号">
           <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />

+ 2 - 2
src/views/report/auxiliaryLedger.vue

@@ -107,12 +107,12 @@
       <el-table-column label="项目状态" align="center" prop="key4" />
       <el-table-column label="支出类型" align="center" prop="key5" />
       <el-table-column label="研发成果类型" align="center" prop="key6" />
-      <el-table-column label="允许加计金额合计" align="center" prop="key7" />
+      <el-table-column label="金额合计" align="center" prop="key7" />
       <el-table-column label="人员人工费用" align="center" prop="key8" />
       <el-table-column label="直接投入费用" align="center" prop="key9" />
       <el-table-column label="折旧费用" align="center" prop="key10" />
       <el-table-column label="新产品设计费" align="center" prop="key11" />
-      <el-table-column label="前五项小计" align="center" prop="key12" />
+      <el-table-column label="无形资产摊销" align="center" prop="key12" />
       <el-table-column label="其他费用总计" align="center" prop="key13" />
     </el-table>
 

+ 240 - 0
src/views/report/externalReports/discountDetailsCount.vue

@@ -0,0 +1,240 @@
+<template>
+  <div class="app-container">
+    <!-- <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="110px"
+    >
+      <el-row>
+        <el-col :span="8">
+          <el-form-item label="项目编号" prop="key1">
+            <el-input
+              v-model="queryParams.key1"
+              clearable
+              @keyup.enter.native="handleQuery"
+              style="width: 100%;"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="项目名称" prop="key2">
+            <el-input
+              v-model="queryParams.key2"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="技术领域" prop="key4">
+            <el-select v-model="queryParams.key4" placeholder="请选择">
+              <el-option label="全部" value=""></el-option>
+              <el-option label="新产品" value="01"></el-option>
+              <el-option label="新工艺" value="02"></el-option>
+              <el-option label="新技术" value="03"></el-option>
+              <el-option label="资源利用类" value="04"></el-option>
+              <el-option label="安全环保类" value="05"></el-option>
+              <el-option label="智能制作类" value="06"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="技术领域" prop="key3">
+            <el-select v-model="queryParams.key3" placeholder="请选择">
+              <el-option label="全部" value=""></el-option>
+              <el-option label="新产品" value="01"></el-option>
+              <el-option label="新工艺" value="02"></el-option>
+              <el-option label="新技术" value="03"></el-option>
+              <el-option label="资源利用类" value="04"></el-option>
+              <el-option label="安全环保类" value="05"></el-option>
+              <el-option label="智能制作类" value="06"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="开展形式" prop="key5">
+            <el-select v-model="queryParams.key5" placeholder="请选择">
+              <el-option label="全部" value=""></el-option>
+              <el-option label="线上" value="01"></el-option>
+              <el-option label="线下" value="02"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="项目来源" prop="key9">
+            <el-select v-model="queryParams.key9" placeholder="请选择">
+              <el-option label="全部" value=""></el-option>
+              <el-option label="本企业自选项目" value="01"></el-option>
+              <el-option label="政府部门科技项目" value="02"></el-option>
+              <el-option label="其他企业(单位)委托" value="03"></el-option>
+              <el-option label="其他项目" value="04"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="成果类型" prop="key10">
+            <el-select v-model="queryParams.key10" placeholder="请选择">
+              <el-option label="全部" value=""></el-option>
+              <el-option label="专利类" value="01"></el-option>
+              <el-option label="软件著作类" value="02"></el-option>
+              <el-option label="论文类" value="03"></el-option>
+              <el-option label="标准类" value="04"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="项目时间" prop="key8">
+            <el-date-picker type="daterange" v-model="queryParams.key8"></el-date-picker>
+          </el-form-item>
+        </el-col>
+        
+        <el-col :span="8">
+          <el-form-item>
+            <el-button type="primary" icon="el-icon-search" size="mini">
+              搜索
+            </el-button>
+            <el-button icon="el-icon-refresh" size="mini">重置</el-button>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form> -->
+
+    <!-- <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button type="primary" icon="el-icon-plus" size="mini" @click="btnClick">
+          新增
+        </el-button>
+        <el-button type="danger" plain icon="el-icon-delete" size="mini" @click="btnClick">
+          删除
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch"></right-toolbar>
+    </el-row> -->
+
+    <el-table :data="listData" border>
+      <el-table-column label="序号" type="index" align="center">
+        <template slot-scope="scope">
+          <span>{{ scope.$index + 1 }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="项目" prop="key1" show-overflow-tooltip />
+      <el-table-column label="金额(数量)" align="center" prop="key3" width="190px" />
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <el-dialog :title="dialogTitle" :visible.sync="visible" width="800px" append-to-body>
+      <el-form ref="form" :model="form" label-width="120px">
+       
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "ReserveProjectApply",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 表单参数
+      form: {},
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      listData: [
+        { key1: "本年可享受研发费用加计扣除项目数量", key2: "" },
+        { key1: "一、自主研发、合作研发、集中研发(3+7+16+19+23+34)", key2: "" },
+        { key1: "(一)人员人工费用(4+5+6)", key2: "" },
+        { key1: "1.直接从事研发活动人员工资薪金", key2: "" },
+        { key1: "2.直接从事研发活动人员五险一金", key2: "" },
+        { key1: "3.外聘研发人员的劳务费用", key2: "" },
+        { key1: "(二)直接投入费用(8+9+10+11+12+13+14+15)", key2: "" },
+        { key1: "1.研发活动直接消耗材料", key2: "" },
+        { key1: "2.研发活动直接消耗燃料", key2: "" },
+        { key1: "3.研发活动直接消耗动力费用", key2: "" },
+        { key1: "4.用于中间试验和产品试制的模具、工艺装备开发及制造费", key2: "" },
+        { key1: "5.用于不构成固定资产的样品、样机及一般测试手段购置费", key2: "" },
+        { key1: "6.用于试制产品的检验费", key2: "" },
+        { key1: "7.用于研发活动的仪器、设备的运行维护、调整、检验、维修等费用", key2: "" },
+        { key1: "8.通过经营租赁方式租入的用于研发活动的仪器、设备租赁费", key2: "" },
+        { key1: "(三)折旧费用(17+18)", key2: "" },
+        { key1: "1.用于研发活动的仪器的折旧费", key2: "" },
+        { key1: "2.用于研发活动的设备的折旧费", key2: "" },
+        { key1: "(四)无形资产摊销(20+21+22)", key2: "" },
+        { key1: "1.用于研发活动的软件的摊销费用", key2: "" },
+        { key1: "2.用于研发活动的专利权的摊销费用", key2: "" },
+        { key1: "3.用于研发活动的非专利技术(包括许可证、专有技术、设计和计算方法等)的摊销费用", key2: "" },
+        { key1: "(五)新产品设计费等(24+25+26+27)", key2: "" },
+        { key1: "1.新产品设计费", key2: "" },
+        { key1: "2.新工艺规程制定费)", key2: "" },
+        { key1: "3.新药研制的临床试验费", key2: "" },
+        { key1: "4.勘探开发技术的现场试验费", key2: "" },
+        { key1: "(六)其他相关费用(29+30+31+32+33)", key2: "" },
+        { key1: "1.技术图书资料费、资料翻译费、专家咨询费、高新科技研发保险费", key2: "" },
+        { key1: "2.研发成果的检索、分析、评议、论证、鉴定、评审、评估、验收费用", key2: "" },
+        { key1: "3.知识产权的申请费、注册费、代理费", key2: "" },
+        { key1: "4.职工福利费、补充养老保险费、补充医疗保险费", key2: "" },
+        { key1: "5.差旅费、会议费", key2: "" },
+        { key1: "(七)经限额调整后的其他相关费用", key2: "" },
+        { key1: "二、委托研发 (36+37+39)", key2: "" },
+        { key1: "(一)委托境内机构或个人进行研发活动所发生的费用", key2: "" },
+        { key1: "(二)委托境外机构进行研发活动发生的费用", key2: "" },
+        { key1: "其中:允许加计扣除的委托境外机构进行研发活动发生的费用", key2: "" },
+        { key1: "三、年度研发费用小计(2+36×80%+38)", key2: "" },
+        { key1: "(一)本年费用化金额", key2: "" },
+        { key1: "(二)本年资本化金额", key2: "" },
+        { key1: "四、本年形成无形资产摊销额", key2: "" },
+        { key1: "五、以前年度形成无形资产本年摊销额", key2: "" },
+        { key1: "六、允许扣除的研发费用合计(41+43+44)", key2: "" },
+        { key1: "减:特殊收入部分", key2: "" },
+        { key1: "七、允许扣除的研发费用抵减特殊收入后的金额(45-46)", key2: "" },
+        { key1: "减:当年销售研发活动直接形成产品(包括组成部分)对应的材料部分", key2: "" },
+        { key1: "减:以前年度销售研发活动直接形成产品(包括组成部分)对应材料部分结转金额", key2: "" },
+        { key1: "八、加计扣除比例及计算方法", key2: "" },
+        { key1: "九、本年研发费用加计扣除总额(47-48-49)×50", key2: "" },
+        { key1: "十、销售研发活动直接形成产品(包括组成部分)对应材料部分结转以后年度扣减金额(当47-48-49≥0,本行=0;当47-48-49<0,本行=47-48-49的绝对值)", key2: "" },
+      ],
+      visible: false,
+      formData: {},
+      dialogTitle: "新增"
+    };
+  },
+  methods: {
+    handleQuery() {},
+    getList() {},
+    btnClick() {
+      this.$message.warning("此数据涉密,需申请权限");
+    },
+    handleAddClick() {
+      this.visible = true;
+    },
+    submitForm() {
+      this.$message.warning("此数据涉密,需申请权限");
+    },
+    cancel() {
+      this.visible = false;
+    }
+  },
+};
+</script>

+ 20 - 25
src/views/reserveProjectManage/reserveProjectApply.vue

@@ -302,37 +302,38 @@ import { getToken } from "@/utils/auth";
 import * as reserveProjectApplyService from "@/api/reserveProjectManage/reserveProjectApply";
 // 技术领域字典
 const FIELD_DICT = {
-  0: "其他",
-  1: "食品饮料",
-  2: "建筑建材",
-  3: "家居用品",
-  4: "轻工纺织",
-  5: "化学化工",
-  6: "新能源",
-  7: "机械",
-  8: "环保和资源",
-  9 : "安全防护",
-  10: "交通运输",
-  11: "橡胶塑料",
-  12: "仪器仪表"
+  1: "技术研究",
+  2: "产品研究",
+  3: "智能制造",
+  4: "信息化",
+  5: "节能环保",
 };
 
 // 开展形式字典
 const EXPAND_FORM_DICT = {
-  1: "自研",
-  2: "合作"
+  1: "自主完成",
+  2: "与境内研究机构合作",
+  3: "与境内高等学校合作",
+  4: "与境内其他企业或单位合作",
+  5: "与境外机构合作",
+  6: "委托其他企业或单位",
+  7: "其他形式"
 };
 
 // 项目类型字典
 const PROJECT_TYPE_DICT = {
-  1: "研发项目",
-  2: "立项项目"
+  1: "一般项目",
+  2: "重点项目",
+  3: "重大项目"
 };
 
 // 项目来源字典
 const PROJECT_SOURCE_DICT = {
-  1: "内部",
-  2: "外部"
+  1: "本企业自选项目",
+  2: "政府部门科技项目",
+  3: "其他企业(单位)委托项目",
+  4: "境外项目",
+  5: "其他项目"
 };
 
 // 项目阶段字典
@@ -517,9 +518,3 @@ export default {
   },
 };
 </script>
-
-<!-- <style lang="scss">
-.el-date-editor--daterange.el-input, .el-date-editor--daterange.el-input__inner, .el-date-editor--timerange.el-input, .el-date-editor--timerange.el-input__inner {
-  width: 220px;
-}
-</style> -->

+ 11 - 0
src/views/system/user/index.vue

@@ -311,6 +311,17 @@
             </template>
           </el-table-column>
           <el-table-column
+            label="薪酬"
+            align="center"
+            key="xc"
+            prop=""
+            width="60"
+          >
+            <template>
+              <span>1000</span>
+            </template>
+          </el-table-column>
+          <el-table-column
             label="部门"
             align="center"
             key="deptName"

+ 50 - 0
src/views/technologyArchivesManage/externalFile.vue

@@ -56,6 +56,43 @@
     </el-row>
 
     <el-table :data="listData" border>
+      <el-table-column type="expand">
+        <template slot-scope="props">
+          <div>
+            <ul class="file-list">
+              <li>
+                <span>1、申报政策文件:申报通知、管理办法等</span>
+                <el-button type="text">下载</el-button>
+              </li>
+              <li>
+                <span>2、项目申报资料:申请书正文、重要附件</span>
+                <el-button type="text">下载</el-button>
+              </li>
+              <li>
+                <span>3、项目立项批文:立项批文、合同书或任务书等</span>
+                <el-button type="text">下载</el-button>
+              </li>
+              <li>
+                <span>4、资金拨付资料:拨付证明、领款单等</span>
+                <el-button type="text">下载</el-button>
+              </li>
+              <li>
+                <span>5、过程汇报资料:年度汇报、中期汇报、绩效评价等</span>
+                <el-button type="text">下载</el-button>
+              </li>
+              <li>
+                <span>6、验收结题资料:报告正文、重要附件</span>
+                <el-button type="text">下载</el-button>
+              </li>
+              <li>
+                <span>7、验收结题批完:验收批文、评审意见、结题证书等</span>
+                <el-button type="text">下载</el-button>
+              </li>
+            </ul>
+            <el-button type="primary" style="margin-left: 18%;">全部下载</el-button>
+          </div>
+        </template>
+      </el-table-column>
       <el-table-column label="序号" type="index" align="center">
         <template slot-scope="scope">
           <span>{{ scope.$index + 1 }}</span>
@@ -177,3 +214,16 @@ export default {
   },
 };
 </script>
+
+<style lang="scss">
+.file-list {
+  li {
+    display: flex;
+    align-items: center;
+    list-style: none;
+    span {
+      width: 560px;
+    }
+  }
+}
+</style>

+ 41 - 0
src/views/technologyArchivesManage/internalFile.vue

@@ -49,6 +49,47 @@
     </el-row>
 
     <el-table :data="listData" border>
+      <el-table-column type="expand">
+        <template slot-scope="props">
+          <div>
+            <ul class="file-list">
+              <li>
+                <span>1、立项决议文件及研发项目资料(立项资料,实施资料,验收资料)</span>
+                <el-button type="text">下载</el-button>
+              </li>
+              <li>
+                <span>2、研发人员名单</span>
+                <el-button type="text">下载</el-button>
+              </li>
+              <li>
+                <span>3、经科技新政主管部门登记的委托、合作研究开发项目的合同、登记证明</span>
+                <el-button type="text">下载</el-button>
+              </li>
+              <li>
+                <span>4、研发费用辅组账,研发费用结构表</span>
+                <el-button type="text">下载</el-button>
+              </li>
+              <li>
+                <span>5、从事研发活动的人员和用于研发活动的仪器、设备、无形资产的费用分配说明</span>
+                <el-button type="text">下载</el-button>
+              </li>
+              <li>
+                <span>6、研发资料物资的资料单,研发费用相关附件凭证等</span>
+                <el-button type="text">下载</el-button>
+              </li>
+              <li>
+                <span>7、知识产权相关材料</span>
+                <el-button type="text">下载</el-button>
+              </li>
+              <li>
+                <span>8、其他相关材料</span>
+                <el-button type="text">下载</el-button>
+              </li>
+            </ul>
+            <el-button type="primary" style="margin-left: 18%;">全部下载</el-button>
+          </div>
+        </template>
+      </el-table-column>
       <el-table-column label="序号" type="index" align="center">
         <template slot-scope="scope">
           <span>{{ scope.$index + 1 }}</span>

+ 2 - 1
vue.config.js

@@ -9,7 +9,7 @@ const CompressionPlugin = require('compression-webpack-plugin')
 
 console.log(process.env.VUE_APP_BASE_API)
 
-const name = process.env.VUE_APP_TITLE || '科德科研系统' // 网页标题
+const name = process.env.VUE_APP_TITLE || '科研管理数字化平台' // 网页标题
 
 const port = process.env.port || process.env.npm_config_port || 82 // 端口
 
@@ -37,6 +37,7 @@ module.exports = {
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
+      // "/prod-api": {
         // target: `http://vtxf2f.natappfree.cc`,
         target: `http://kyxt.jishutao.com`,
         changeOrigin: true,