guhongwei 4 年之前
父節點
當前提交
928211bd56

+ 1 - 0
src/components/common/Sidebar.vue

@@ -199,6 +199,7 @@ export default {
               },
             ],
           },
+          { icon: 'el-icon-postcard', index: '/userExpertScore', title: '专家评分' },
         ];
         list.push(...data);
         this.$set(this, `items`, _.uniqBy(list, 'index'));

+ 13 - 0
src/router/index.js

@@ -221,6 +221,19 @@ export default new Router({
           component: () => import('../views/userCenter/userMydeclare/pastDeclare.vue'),
           meta: { title: '申报中' },
         },
+        // 专家评分
+        {
+          path: '/userExpertScore',
+          component: () => import('../views/userCenter/userExpertScore/index.vue'),
+          meta: { title: '专家评分' },
+        },
+        // 个人中心-公共组件
+        // 资料信息
+        {
+          path: '/userCommon/dataInfo',
+          component: () => import('../views/userCenter/common/dataInfo.vue'),
+          meta: { title: '资料信息' },
+        },
       ],
     },
     {

+ 102 - 0
src/views/userCenter/common/dataInfo.vue

@@ -0,0 +1,102 @@
+<template>
+  <div id="dataInfo">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="top">
+          <el-button type="primary" size="mini" @click="back">返回</el-button>
+        </el-col>
+        <el-col :span="24" class="down">
+          <el-tabs v-model="active" type="card">
+            <el-tab-pane label="(一)基本信息" name="first">
+              <basic :info="form.basic"></basic>
+            </el-tab-pane>
+            <el-tab-pane label="(二)内容简介" name="second">
+              <brief :info="form.brief"></brief>
+            </el-tab-pane>
+            <el-tab-pane label="(三)主研人员名单" name="third">
+              <research :list="form.research"></research>
+            </el-tab-pane>
+            <el-tab-pane label="(四)评价委托方提供资料清单" name="fourth">
+              <detailed :linkInfo="form.datalist"></detailed>
+            </el-tab-pane>
+          </el-tabs>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import basic from './parts/basic.vue';
+import brief from './parts/brief.vue';
+import research from './parts/research.vue';
+import detailed from './parts/detailed.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: achieveApply } = createNamespacedHelpers('achieveApply');
+const { mapActions: verifyRecord } = createNamespacedHelpers('verifyRecord');
+export default {
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  name: 'dataInfo',
+  props: {},
+  components: {
+    basic,
+    brief,
+    research,
+    detailed,
+  },
+  data: function() {
+    return {
+      // 标签
+      active: 'first',
+      form: {
+        basic: {},
+        brief: {},
+        research: [],
+        datalist: {},
+      },
+    };
+  },
+  created() {
+    if (this.id) this.search();
+  },
+  methods: {
+    ...achieveApply(['fetch']),
+    async search() {
+      const res = await this.fetch(this.id);
+      if (this.$checkRes(res)) {
+        this.$set(this, 'form', res.data);
+      }
+    },
+    // 返回
+    back() {
+      window.history.back();
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    id() {
+      return this.$route.query.id;
+    },
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .top {
+    margin: 0 0 10px 0;
+    text-align: right;
+  }
+  .down {
+    .fiveth {
+      padding: 0 20%;
+      .btn {
+        text-align: center;
+      }
+    }
+  }
+}
+</style>

+ 215 - 0
src/views/userCenter/common/parts/basic.vue

@@ -0,0 +1,215 @@
+<template>
+  <div id="basic">
+    <el-row>
+      <el-col :span="24" class="basic">
+        <el-col :span="24" class="one">
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              成果编号:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.achieve_num }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              成果名称:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.achieve_name }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              成果类别:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.achieve_type }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              成果形式:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.achieve_form }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              成果取得时间:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.achieve_date }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              申请人:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.apply_personal }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              申请电话:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.apply_phone }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              申请单位:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.apply_company }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              地址:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.address }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              申请单位/申请人属性:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.apply_nature }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              联系人:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.contacts }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              联系电话:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.phone }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              邮箱:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.email }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              传真:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.fax }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              评价目的:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.objective }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              成果所处阶段:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.stage }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              经济效益产值:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.output }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              经济效益利润:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.profit }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="3" class="shortText">
+              经济效益税收:
+            </el-col>
+            <el-col :span="21" class="shortInfo textOver">
+              {{ info.revenue }}
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'basic',
+  props: {
+    info: { type: Object },
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.textOver {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.basic {
+  .one {
+    margin: 0 0 15px 0;
+    .short {
+      .shortText {
+        height: 40px;
+        line-height: 40px;
+        padding: 0 10px;
+        text-align: center;
+        border: 1px solid #ccc;
+      }
+      .shortInfo {
+        height: 40px;
+        line-height: 40px;
+        padding: 0 10px;
+        text-align: center;
+        border: 1px solid #ccc;
+      }
+    }
+    .short:hover {
+      cursor: pointer;
+      background: #f1f1f1;
+    }
+  }
+}
+</style>

+ 116 - 0
src/views/userCenter/common/parts/brief.vue

@@ -0,0 +1,116 @@
+<template>
+  <div id="brief">
+    <el-row>
+      <el-col :span="24" class="brief">
+        <el-col :span="24" class="one">
+          <el-col :span="24" class="lang">
+            <el-col :span="24" class="langText">
+              成果简介:
+            </el-col>
+            <el-col :span="24" class="langInfo">
+              {{ info.achieve_brief }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="lang">
+            <el-col :span="24" class="langText">
+              应用领域和技术原理:
+            </el-col>
+            <el-col :span="24" class="langInfo">
+              {{ info.field }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="lang">
+            <el-col :span="24" class="langText">
+              性能指标:
+            </el-col>
+            <el-col :span="24" class="langInfo">
+              {{ info.kpi_index }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="lang">
+            <el-col :span="24" class="langText">
+              与国内外同类技术比较:
+            </el-col>
+            <el-col :span="24" class="langInfo">
+              {{ info.compare }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="lang">
+            <el-col :span="24" class="langText">
+              成果的创造性,先进性:
+            </el-col>
+            <el-col :span="24" class="langInfo">
+              {{ info.advanced }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="lang">
+            <el-col :span="24" class="langText">
+              作用意义:
+            </el-col>
+            <el-col :span="24" class="langInfo">
+              {{ info.sense }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="lang">
+            <el-col :span="24" class="langText">
+              推广应用的范围,条件和前景:
+            </el-col>
+            <el-col :span="24" class="langInfo">
+              {{ info.prospect }}
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="lang">
+            <el-col :span="24" class="langText">
+              存在的问题和改进意见:
+            </el-col>
+            <el-col :span="24" class="langInfo">
+              {{ info.opinion }}
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'brief',
+  props: {
+    info: { type: Object },
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.brief {
+  .one {
+    .lang {
+      margin: 0 0 10px 0;
+      .langText {
+        font-size: 18px;
+        font-weight: bold;
+        color: #666;
+        margin: 0 0 10px 0;
+      }
+      .langInfo {
+        min-height: 120px;
+        padding: 10px;
+        border: 1px dashed #ccc;
+        border-radius: 5px;
+      }
+    }
+  }
+}
+</style>

+ 153 - 0
src/views/userCenter/common/parts/detailed.vue

@@ -0,0 +1,153 @@
+<template>
+  <div id="detailed">
+    <el-row>
+      <el-col :span="24" class="detailed">
+        <el-col :span="24" class="one">
+          <el-col :span="24" class="short">
+            <el-col :span="22" class="shortText">
+              研究工作报告(必备)
+            </el-col>
+            <el-col :span="2" class="shortText">
+              <el-link :underline="false" :href="linkInfo.work_report">文件下载</el-link>
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="22" class="shortText">
+              研究技术报告(必备)
+            </el-col>
+            <el-col :span="2" class="shortText">
+              <el-link :underline="false" :href="linkInfo.techol_report">文件下载</el-link>
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="22" class="shortText">
+              经济效益分析(必备)
+            </el-col>
+            <el-col :span="2" class="shortText">
+              <el-link :underline="false" :href="linkInfo.benefit">文件下载</el-link>
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="22" class="shortText">
+              科技查新报告(科技项目成果,必备)
+            </el-col>
+            <el-col :span="2" class="shortText">
+              <el-link :underline="false" :href="linkInfo.science_report">文件下载</el-link>
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="22" class="shortText">
+              法律价值评估报告(专利成果,必备)
+            </el-col>
+            <el-col :span="2" class="shortText">
+              <el-link :underline="false" :href="linkInfo.assess_report">文件下载</el-link>
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="22" class="shortText">
+              推广应用证明(两家以上应用单位,必备)
+            </el-col>
+            <el-col :span="2" class="shortText">
+              <el-link :underline="false" :href="linkInfo.app_prove">文件下载</el-link>
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="22" class="shortText">
+              成果技术汇报PPT(必备)
+            </el-col>
+            <el-col :span="2" class="shortText">
+              <el-link :underline="false" :href="linkInfo.techol_ppt">文件下载</el-link>
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="22" class="shortText">
+              检测报告(根据项目需要提供)
+            </el-col>
+            <el-col :span="2" class="shortText">
+              <el-link :underline="false" :href="linkInfo.testing_report">文件下载</el-link>
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="22" class="shortText">
+              质量标准(检测报告所依据的标准,企业标准,行业标准,国家标准,国际标准)
+            </el-col>
+            <el-col :span="2" class="shortText">
+              <el-link :underline="false" :href="linkInfo.quality">文件下载</el-link>
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="22" class="shortText">
+              与本成果相关的授权专利证书
+            </el-col>
+            <el-col :span="2" class="shortText">
+              <el-link :underline="false" :href="linkInfo.patent">文件下载</el-link>
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="22" class="shortText">
+              特殊行业需要提供的相应证明材料
+            </el-col>
+            <el-col :span="2" class="shortText">
+              <el-link :underline="false" :href="linkInfo.special">文件下载</el-link>
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="22" class="shortText">
+              项目经费预算书
+            </el-col>
+            <el-col :span="2" class="shortText">
+              <el-link :underline="false" :href="linkInfo.budget">文件下载</el-link>
+            </el-col>
+          </el-col>
+          <el-col :span="24" class="short">
+            <el-col :span="22" class="shortText">
+              项目经费决算书
+            </el-col>
+            <el-col :span="2" class="shortText">
+              <el-link :underline="false" :href="linkInfo.final">文件下载</el-link>
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'detailed',
+  props: {
+    linkInfo: { type: Object },
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.detailed {
+  .one {
+    .short {
+      .shortText {
+        height: 40px;
+        line-height: 40px;
+        border: 1px solid #ccc;
+        text-align: center;
+      }
+    }
+    .short:hover {
+      cursor: pointer;
+      background: #f1f1f1;
+    }
+  }
+}
+</style>

+ 46 - 0
src/views/userCenter/common/parts/research.vue

@@ -0,0 +1,46 @@
+<template>
+  <div id="research">
+    <el-row>
+      <el-col :span="24" class="research">
+        <data-table :fields="fields" :data="list" :usePage="false"></data-table>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import dataTable from '@common/src/components/frame/filter-page-table.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'research',
+  props: {
+    list: { type: Array },
+  },
+  components: {
+    dataTable,
+  },
+  data: function() {
+    return {
+      fields: [
+        { label: '姓名', prop: 'research_name', showTip: true },
+        { label: '身份证号', prop: 'card', showTip: true },
+        { label: '性别', prop: 'gender', showTip: true },
+        { label: '技术职称', prop: 'position', showTip: true },
+        { label: '文化程度', prop: 'education', showTip: true },
+        { label: '学位', prop: 'degree', showTip: true },
+        { label: '是否留学归国', prop: 'abroad', showTip: true },
+        { label: '工作单位', prop: 'research_company', showTip: true },
+        { label: '对成果创造性贡献', prop: 'devote', showTip: true },
+      ],
+    };
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped></style>

+ 110 - 0
src/views/userCenter/userExpertScore/index.vue

@@ -0,0 +1,110 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-tabs v-model="active" type="card" @tab-click="changeTabs">
+          <el-tab-pane label="待评分" name="first">
+            <data-table :fields="fields" :opera="opera" :data="fisrtList" :total="firstTotal" @query="search" @view="toView"></data-table>
+          </el-tab-pane>
+          <el-tab-pane label="评分审核未通过" name="second">
+            <data-table :fields="fields" :opera="opera" :data="secondList" :total="secondTotal" @query="search" @view="toView"></data-table>
+          </el-tab-pane>
+        </el-tabs>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import dataTable from '@common/src/components/frame/filter-page-table.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: achieveApply } = createNamespacedHelpers('achieveApply');
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    dataTable,
+  },
+  data: function() {
+    return {
+      active: 'first',
+      opera: [
+        {
+          label: '资料查看',
+          method: 'view',
+        },
+        {
+          label: '编辑',
+          method: 'edit',
+          display: i => i.status === '-2',
+        },
+      ],
+      fields: [
+        { label: '成果编号', prop: 'basic.achieve_num', filter: 'input', showTip: true },
+        { label: '成果名称', prop: 'basic.achieve_name', showTip: true },
+        { label: '成果类别', prop: 'basic.achieve_type', showTip: true },
+        {
+          label: '状态',
+          prop: 'status',
+          format: item => {
+            return item === '1' ? '待专家评分' : item === '-2' ? '评分审核未通过' : '未识别';
+          },
+        },
+      ],
+      // 待评分
+      fisrtList: [],
+      firstTotal: 0,
+      // 审核未通过
+      secondList: [],
+      secondTotal: 0,
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...achieveApply(['query']),
+    // 查询列表
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      if (this.active == 'first') {
+        // 待评分
+        const res = await this.query({ skip, limit, status: 1, user_id: this.user.id, ...info });
+        if (this.$checkRes(res)) {
+          this.$set(this, 'fisrtList', res.data);
+          this.$set(this, `firstTotal`, res.total);
+        }
+      } else {
+        const res = await this.query({ skip, limit, status: -2, user_id: this.user.id, ...info });
+        if (this.$checkRes(res)) {
+          this.$set(this, 'secondList', res.data);
+          this.$set(this, `secondTotal`, res.total);
+        }
+      }
+    },
+    // 选择tabs
+    changeTabs(tab) {
+      this.$set(this, `active`, tab.name);
+      this.search();
+    },
+    // 资料查看
+    toView({ data }) {
+      this.$router.push({ path: '/userCommon/dataInfo', query: { id: data.id, type: '1' } });
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>