Bladeren bron

信息展示

guhongwei 3 jaren geleden
bovenliggende
commit
7a18533a1a

+ 45 - 0
src/layout/achievement/info-1.vue

@@ -0,0 +1,45 @@
+<template>
+  <div id="info-1">
+    <van-row>
+      <van-col span="24" class="main">
+        <van-col span="24" class="one">
+          <van-form label-width="4em">
+            <van-field v-model="info.name" name="name" label="成果名称" readonly />
+            <van-field v-model="info.content" name="content" label="成果内容" type="textarea" autosize rows="1" readonly />
+          </van-form>
+        </van-col>
+      </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'info-1',
+  props: {
+    info: { type: Object },
+  },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 94 - 0
src/layout/achievement/list-1.vue

@@ -0,0 +1,94 @@
+<template>
+  <div id="list-1">
+    <van-row>
+      <van-col span="24" class="main">
+        <van-col span="24" class="list" v-for="(item, index) in list" :key="index">
+          <van-col span="24" class="title textOver">
+            {{ item.name }}
+          </van-col>
+          <van-col span="24" class="other">
+            <van-col span="24" class="otherInfo">
+              成果内容:<span>{{ item.content || '暂无' }}</span>
+            </van-col>
+          </van-col>
+          <van-col span="24" class="btn">
+            <van-button type="info" size="small" @click="toView(item)">详细信息</van-button>
+          </van-col>
+        </van-col>
+      </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'list-1',
+  props: {
+    list: { type: Array },
+  },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {
+    // 查看详情
+    toView(data) {
+      this.$emit('toView', data);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .list {
+    background-color: #fff;
+    margin: 0 0 8px 0;
+    padding: 8px;
+    border-radius: 5px;
+    .title {
+      font-size: 16px;
+      font-weight: bold;
+      margin: 0 0 5px 0;
+    }
+    .other {
+      margin: 0 0 5px 0;
+      .otherInfo {
+        font-size: 14px;
+        color: #666;
+        margin: 0 0 5px 0;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        -webkit-line-clamp: 3;
+        word-break: break-all;
+        display: -webkit-box;
+        -webkit-box-orient: vertical;
+        span {
+          color: #000;
+        }
+      }
+    }
+    .btn {
+      text-align: center;
+      .van-button {
+        margin: 0 5px;
+      }
+    }
+  }
+}
+</style>

+ 109 - 0
src/layout/equipment/equipment-total.vue

@@ -0,0 +1,109 @@
+<template>
+  <div id="equipment-total">
+    <van-row>
+      <van-col span="24" class="main">
+        <van-col span="24" class="one">
+          <p>实验室30万元以上设备情况</p>
+          <p>
+            *注:每台设备标准机时为K=1800小时/年;研究工作总机时(D)是指每台仪器每年本实验室研究人员使用的总时间;服务工作机时(E)是指每台仪器每年非本实验室工作人员使用的总时间;机时率(%)=(D+E)/K。*
+          </p>
+        </van-col>
+        <van-col span="24" class="two">
+          <van-col span="24" class="two_1">
+            <p>设备总台数(台)</p>
+            <p>{{ totalInfo.p1 }}</p>
+          </van-col>
+          <van-col span="24" class="two_1">
+            <p>大型仪器服务共享平台(台)</p>
+            <p>{{ totalInfo.p1 }}</p>
+          </van-col>
+          <van-col span="24" class="two_1">
+            <p>设备总价值(万元)</p>
+            <p>{{ totalInfo.p1 }}</p>
+          </van-col>
+          <van-col span="24" class="two_1">
+            <p>平均每台仪器研究工作总时(小时)</p>
+            <p>{{ totalInfo.p1 }}</p>
+          </van-col>
+          <van-col span="24" class="two_1">
+            <p>平均每台仪器服务工作总时(小时)</p>
+            <p>{{ totalInfo.p1 }}</p>
+          </van-col>
+          <van-col span="24" class="two_1">
+            <p>机时率(%)</p>
+            <p>{{ totalInfo.p1 }}</p>
+          </van-col>
+        </van-col>
+      </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'equipment-total',
+  props: {
+    totalInfo: { type: Object },
+  },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  background-color: #fff;
+  margin: 0 0 5px 0;
+  .one {
+    padding: 5px;
+
+    p:first-child {
+      text-align: center;
+      font-weight: bold;
+      margin: 0 0 5px 0;
+    }
+    p:last-child {
+      font-size: 14px;
+      color: #409eff9f;
+    }
+  }
+  .two {
+    padding: 0 8px;
+    .two_1 {
+      border-radius: 8px;
+      margin: 0 0 5px 0;
+      padding: 8px;
+      p:first-child {
+        text-align: center;
+        font-size: 15px;
+        font-weight: bold;
+        margin: 0px 0 4px 0;
+      }
+      p:last-child {
+        border: 1px solid #ccc;
+        border-radius: 5px;
+        background-color: #f1f1f1;
+        padding: 5px;
+      }
+    }
+  }
+}
+</style>

+ 49 - 0
src/layout/equipment/info-1.vue

@@ -0,0 +1,49 @@
+<template>
+  <div id="info-1">
+    <van-row>
+      <van-col span="24" class="main">
+        <van-col span="24" class="one">
+          <van-form label-width="11em">
+            <van-field v-model="info.name" name="name" label="设备名称" readonly label-width="4em" />
+            <van-field v-model="info.equipmentMoney" name="equipmentMoney" label="设备价值(万元)" readonly />
+            <van-field v-model="info.instrumentsNumb" name="instrumentsNumb" label="是否加入大型仪器服务共享平台" readonly />
+            <van-field v-model="info.researchHour" name="researchHour" label="仪器研究工作计时(小时)" readonly />
+            <van-field v-model="info.servicesHour" name="servicesHour" label="仪器服务工作计时(小时)" readonly />
+            <van-field v-model="info.rate" name="rate" label="机时率(%)" readonly label-width="5em" />
+          </van-form>
+        </van-col>
+      </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'info-1',
+  props: {
+    info: { type: Object },
+  },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 91 - 0
src/layout/equipment/list-1.vue

@@ -0,0 +1,91 @@
+<template>
+  <div id="list-1">
+    <van-row>
+      <van-col span="24" class="main">
+        <van-col span="24" class="list" v-for="(item, index) in list" :key="index">
+          <van-col span="24" class="title textOver">
+            {{ item.name }}
+          </van-col>
+          <van-col span="24" class="other">
+            <van-col span="24" class="otherInfo">
+              是否加入大型仪器服务共享平台:<span>{{ item.instrumentsNumb == 'Y' ? '是' : '否' }}</span>
+            </van-col>
+            <van-col span="24" class="otherInfo">
+              设备价值(万元):<span>{{ item.equipmentMoney || '暂无' }}</span>
+            </van-col>
+          </van-col>
+          <van-col span="24" class="btn">
+            <van-button type="info" size="small" @click="toView(item)">详细信息</van-button>
+          </van-col>
+        </van-col>
+      </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'list-1',
+  props: {
+    list: { type: Array },
+  },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {
+    // 查看详情
+    toView(data) {
+      this.$emit('toView', data);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .list {
+    background-color: #fff;
+    margin: 0 0 8px 0;
+    padding: 8px;
+    border-radius: 5px;
+    .title {
+      font-size: 16px;
+      font-weight: bold;
+      margin: 0 0 5px 0;
+    }
+    .other {
+      margin: 0 0 5px 0;
+      .otherInfo {
+        font-size: 14px;
+        color: #666;
+        margin: 0 0 5px 0;
+        span {
+          color: #000;
+        }
+      }
+    }
+    .btn {
+      text-align: center;
+      .van-button {
+        margin: 0 5px;
+      }
+    }
+  }
+}
+</style>

+ 54 - 0
src/layout/laboratory/info-1.vue

@@ -0,0 +1,54 @@
+<template>
+  <div id="info-1">
+    <van-row>
+      <van-col span="24" class="main">
+        <van-col span="24" class="one">
+          <van-form>
+            <van-field v-model="info.name" name="name" label="实验室名称" readonly />
+            <van-field v-model="info.englishName" name="englishName" label="英文名称" readonly />
+            <van-field v-model="info.chiefName" name="chiefName" label="实验室主任" readonly />
+            <van-field v-model="info.labPerson" name="labPerson" label="实验室联系人" readonly />
+            <van-field v-model="info.labPhone" name="labPhone" label="实验室联系人电话" readonly />
+            <van-field v-model="info.labEmail" name="labEmail" label="E-mail地址" readonly />
+            <van-field v-model="info.unitPerson" name="unitPerson" label="单位联系人" readonly />
+            <van-field v-model="info.unitPhone" name="unitPhone" label="单位联系系电话" readonly />
+            <van-field v-model="info.unitName" name="unitName" label="依托单位名称" readonly />
+            <van-field v-model="info.labAcreage" name="labAcreage" label="实验室面积" readonly />
+            <van-field v-model="info.labAddress" name="labAddress" label="实验室地址" readonly />
+          </van-form>
+        </van-col>
+      </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'info-1',
+  props: {
+    info: { type: Object },
+  },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 91 - 0
src/layout/laboratory/list-1.vue

@@ -0,0 +1,91 @@
+<template>
+  <div id="list-1">
+    <van-row>
+      <van-col span="24" class="main">
+        <van-col span="24" class="list" v-for="(item, index) in list" :key="index">
+          <van-col span="24" class="title textOver">
+            {{ item.name }}
+          </van-col>
+          <van-col span="24" class="other">
+            <van-col span="24" class="otherInfo">
+              实验室主任:<span>{{ item.chiefName || '暂无' }}</span>
+            </van-col>
+            <van-col span="24" class="otherInfo">
+              实验室联系人:<span>{{ item.labPerson || '暂无' }}</span>
+            </van-col>
+          </van-col>
+          <van-col span="24" class="btn">
+            <van-button type="info" size="small" @click="toView(item)">详细信息</van-button>
+          </van-col>
+        </van-col>
+      </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'list-1',
+  props: {
+    list: { type: Array },
+  },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {
+    // 查看详情
+    toView(data) {
+      this.$emit('toView', data);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .list {
+    background-color: #fff;
+    margin: 0 0 8px 0;
+    padding: 8px;
+    border-radius: 5px;
+    .title {
+      font-size: 16px;
+      font-weight: bold;
+      margin: 0 0 5px 0;
+    }
+    .other {
+      margin: 0 0 5px 0;
+      .otherInfo {
+        font-size: 14px;
+        color: #666;
+        margin: 0 0 5px 0;
+        span {
+          color: #000;
+        }
+      }
+    }
+    .btn {
+      text-align: center;
+      .van-button {
+        margin: 0 5px;
+      }
+    }
+  }
+}
+</style>

+ 46 - 0
src/layout/research/info-1.vue

@@ -0,0 +1,46 @@
+<template>
+  <div id="info-1">
+    <van-row>
+      <van-col span="24" class="main">
+        <van-col span="24" class="one">
+          <van-form>
+            <van-field v-model="info.name" name="name" label="研究方向" readonly />
+            <van-field v-model="info.personName" name="personName" label="方向带头人" readonly />
+            <van-field v-model="info.persons" name="核心成员" label="核心成员" readonly />
+          </van-form>
+        </van-col>
+      </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'info-1',
+  props: {
+    info: { type: Object },
+  },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 95 - 0
src/layout/research/list-1.vue

@@ -0,0 +1,95 @@
+<template>
+  <div id="list-1">
+    <van-row>
+      <van-col span="24" class="main">
+        <van-col span="24" class="list" v-for="(item, index) in list" :key="index">
+          <van-col span="24" class="title textOver">
+            {{ item.name }}
+          </van-col>
+          <van-col span="24" class="other">
+            <van-col span="24" class="otherInfo">
+              方向带头人:<span>{{ item.personName || '暂无' }}</span>
+            </van-col>
+            <van-col span="24" class="otherInfo">
+              核心成员:<span>{{ getData(item) || '暂无' }}</span>
+            </van-col>
+          </van-col>
+          <van-col span="24" class="btn">
+            <van-button type="info" size="small" @click="toView(item)">详细信息</van-button>
+          </van-col>
+        </van-col>
+      </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'list-1',
+  props: {
+    list: { type: Array },
+  },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {
+    // 查看详情
+    toView(data) {
+      this.$emit('toView', data);
+    },
+    // 整理数据
+    getData(data) {
+      return JSON.stringify(data.persons.map((i) => i.personName));
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .list {
+    background-color: #fff;
+    margin: 0 0 8px 0;
+    padding: 8px;
+    border-radius: 5px;
+    .title {
+      font-size: 16px;
+      font-weight: bold;
+      margin: 0 0 5px 0;
+    }
+    .other {
+      margin: 0 0 5px 0;
+      .otherInfo {
+        font-size: 14px;
+        color: #666;
+        margin: 0 0 5px 0;
+        span {
+          color: #000;
+        }
+      }
+    }
+    .btn {
+      text-align: center;
+      .van-button {
+        margin: 0 5px;
+      }
+    }
+  }
+}
+</style>

+ 131 - 0
src/router/index.js

@@ -5,12 +5,143 @@ VueRouter.prototype.push = function push(location) {
   return originalPush.call(this, location).catch((err) => err);
 };
 Vue.use(VueRouter);
+// 信息展示
+const infoview = [
+  {
+    path: '/infoview-laboratory/index',
+    meta: { title: '重点实验室信息展示' },
+    component: () => import('../views/infoview-laboratory/index.vue'),
+  },
+  {
+    path: '/infoview-research/index',
+    meta: { title: '研究方向信息展示' },
+    component: () => import('../views/infoview-research/index.vue'),
+  },
+  {
+    path: '/infoview-equipment/index',
+    meta: { title: '设备信息展示' },
+    component: () => import('../views/infoview-equipment/index.vue'),
+  },
+  {
+    path: '/infoview-achievement/index',
+    meta: { title: '重要成果信息展示' },
+    component: () => import('../views/infoview-achievement/index.vue'),
+  },
+];
+// 科研信息
+const scientific = [
+  {
+    path: '/scientific-personnel/index',
+    meta: { title: '主任及科研助理信息展示' },
+    component: () => import('../views/scientific-personnel/index.vue'),
+  },
+  {
+    path: '/scientific-learning/index',
+    meta: { title: '学术委员会信息展示' },
+    component: () => import('../views/scientific-learning/index.vue'),
+  },
+  {
+    path: '/scientific-task/index',
+    meta: { title: '承担科研任务信息展示' },
+    component: () => import('../views/scientific-task/index.vue'),
+  },
+  {
+    path: '/scientific-award/index',
+    meta: { title: '获奖信息展示' },
+    component: () => import('../views/scientific-award/index.vue'),
+  },
+  {
+    path: '/scientific-paper/index',
+    meta: { title: '论文发表记录展示' },
+    component: () => import('../views/scientific-paper/index.vue'),
+  },
+  {
+    path: '/scientific-achieve/index',
+    meta: { title: '成果展示' },
+    component: () => import('../views/scientific-achieve/index.vue'),
+  },
+  {
+    path: '/scientific-otherachieve/index',
+    meta: { title: '其他成果' },
+    component: () => import('../views/scientific-otherachieve/index.vue'),
+  },
+];
+// 学术交流
+const learning = [
+  {
+    path: '/learning/index',
+    meta: { title: '学术交流' },
+    component: () => import('../views/learning/index.vue'),
+  },
+  {
+    path: '/learning/sociology/index',
+    meta: { title: '社会服务活动' },
+    component: () => import('../views/learning/sociology/index.vue'),
+  },
+  {
+    path: '/learning/technology/index',
+    meta: { title: '技术服务活动' },
+    component: () => import('../views/learning/technology/index.vue'),
+  },
+  {
+    path: '/learning/science/index',
+    meta: { title: '科普活动' },
+    component: () => import('../views/learning/science/index.vue'),
+  },
+  {
+    path: '/learning/report/index',
+    meta: { title: '分析/建议/决策/咨询报告' },
+    component: () => import('../views/learning/report/index.vue'),
+  },
+];
+// 队伍建设与人才培养;
+const ranks = [
+  {
+    path: '/ranks/index',
+    meta: { title: '队伍建设与人才培养' },
+    component: () => import('../views/ranks/index.vue'),
+  },
+  {
+    path: '/ranks/personnel/index',
+    meta: { title: '人才称号' },
+    component: () => import('../views/ranks/personnel/index.vue'),
+  },
+  {
+    path: '/ranks/title/index',
+    meta: { title: '职称晋升' },
+    component: () => import('../views/ranks/title/index.vue'),
+  },
+  {
+    path: '/ranks/boshuo/index',
+    meta: { title: '博硕培养' },
+    component: () => import('../views/ranks/boshuo/index.vue'),
+  },
+];
+// 平台活动时间段公式;
+const activity = [
+  {
+    path: '/activity-time/index',
+    meta: { title: '平台活动时间段公示' },
+    component: () => import('../views/activity-time/index.vue'),
+  },
+];
+
 const web = [
   {
     path: '/',
     meta: { title: '网站首页' },
     component: () => import('../views/index.vue'),
   },
+  // 信息展示
+  ...infoview,
+  // 科研信息
+  ...scientific,
+  // 学术交流
+  ...learning,
+  // 队伍建设与人才培养
+  ...ranks,
+  // 平台活动时间段公式
+  ...activity,
 ];
 const routes = [...web];
 const router = new VueRouter({

+ 36 - 0
src/views/activity-time/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 84 - 7
src/views/index.vue

@@ -1,21 +1,92 @@
 <template>
   <div id="index">
-    <van-row>
-      <van-col span="24" class="main"> test </van-col>
-    </van-row>
+    <admin-frame :useTop="false" :usePage="false" :useNav="false">
+      <template v-slot:info>
+        <van-col span="24" class="menu" v-for="(i, index) in menu" :key="index" @click.native="$router.push(i.router)">
+          {{ i.label }}
+        </van-col>
+      </template>
+    </admin-frame>
   </div>
 </template>
 
 <script>
+import adminFrame from '@common/src/components/mobile-frame/mobile-main.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   name: 'index',
   props: {},
-  components: {},
+  components: {
+    adminFrame,
+  },
   data: function () {
-    return {};
+    return {
+      menu: [
+        // 信息展示
+        {
+          label: '信息展示-重点实验室信息展示',
+          router: '/infoview-laboratory/index',
+        },
+        {
+          label: '信息展示-研究方向信息展示',
+          router: '/infoview-research/index',
+        },
+        {
+          label: '信息展示-设备信息展示',
+          router: '/infoview-equipment/index',
+        },
+        {
+          label: '信息展示-重要成果信息展示',
+          router: '/infoview-achievement/index',
+        },
+        // 科研信息
+        {
+          label: '科研信息-主任及科研助理信息展示',
+          router: '/scientific-personnel/index',
+        },
+        {
+          label: '科研信息-学术委员会信息展示',
+          router: '/scientific-learning/index',
+        },
+        {
+          label: '科研信息-承担科研任务信息展示',
+          router: '/scientific-task/index',
+        },
+        {
+          label: '科研信息-获奖信息展示',
+          router: '/scientific-award/index',
+        },
+        {
+          label: '科研信息-论文发表记录展示',
+          router: '/scientific-paper/index',
+        },
+        {
+          label: '科研信息-成果展示',
+          router: '/scientific-achieve/index',
+        },
+        {
+          label: '科研信息-其他成果',
+          router: '/scientific-otherachieve/index',
+        },
+        // 学术交流
+        {
+          label: '学术交流',
+          router: '/learning/index',
+        },
+        // 队伍建设与人才培养
+        {
+          label: '队伍建设与人才培养',
+          router: '/ranks/index',
+        },
+        // 平台活动时间段公式
+        {
+          label: '平台活动时间段公示',
+          router: '/activity-time/index',
+        },
+      ],
+    };
   },
-  created() {},
+  async created() {},
   methods: {},
   computed: {
     ...mapState(['user']),
@@ -33,4 +104,10 @@ export default {
 };
 </script>
 
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+.menu {
+  border: 1px dashed #ccc;
+  margin: 0 0 10px 0;
+  padding: 10px;
+}
+</style>

+ 79 - 0
src/views/infoview-achievement/index.vue

@@ -0,0 +1,79 @@
+<template>
+  <div id="index">
+    <admin-frame @search="search" :limit="limit" :total="total" :useNav="false">
+      <template v-slot:info>
+        <list-1 :list="list" @toView="toView"></list-1>
+      </template>
+    </admin-frame>
+    <van-dialog class="dialog" v-model="dialog.show" :title="dialog.title" :show-confirm-button="false" show-cancel-button cancel-button-text="返回">
+      <info-1 :info="info" v-if="dialog.type == '1'"></info-1>
+    </van-dialog>
+  </div>
+</template>
+
+<script>
+import list1 from '@/layout/achievement/list-1.vue';
+import info1 from '@/layout/achievement/info-1.vue';
+import adminFrame from '@common/src/components/mobile-frame/mobile-main.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    adminFrame,
+    list1,
+    info1,
+  },
+  data: function () {
+    return {
+      list: [
+        {
+          name: '成果名称',
+          content: '成果内容成果内容成果内容成果内容成果内容成果内容成果内容成果内容成果内容成果内容成果内容成果内容成果内容成果内容成果内容成果内容成果内容',
+        },
+      ],
+      total: 0,
+      limit: 5,
+      // 弹框
+      dialog: { show: false, title: '详细信息', type: '1' },
+      // 详细信息
+      info: {},
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    async search({ skip = 0, limit = this.limit, searchName, ...info } = {}) {
+      if (searchName) info.name = searchName;
+    },
+    // 查看信息
+    async toView(data) {
+      this.$set(this, `info`, data);
+      this.dialog = { show: true, title: '详细信息', 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>
+.dialog {
+  /deep/.van-dialog__content {
+    max-height: 350px;
+    overflow-y: auto;
+  }
+}
+</style>

+ 107 - 0
src/views/infoview-equipment/index.vue

@@ -0,0 +1,107 @@
+<template>
+  <div id="index">
+    <admin-frame @search="search" :limit="limit" :total="total" :usePage="active == '0' ? false : true" :useNav="false">
+      <template v-slot:info>
+        <van-tabs v-model="active" color="#409eff">
+          <van-tab title="设备情况"><equipment-total :totalInfo="totalInfo"></equipment-total></van-tab>
+          <van-tab title="设备信息"><list-1 :list="list" @toView="toView"></list-1></van-tab>
+        </van-tabs>
+      </template>
+    </admin-frame>
+    <van-dialog class="dialog" v-model="dialog.show" :title="dialog.title" :show-confirm-button="false" show-cancel-button cancel-button-text="返回">
+      <info-1 :info="info" v-if="dialog.type == '1'"></info-1>
+    </van-dialog>
+  </div>
+</template>
+
+<script>
+import equipmentTotal from '@/layout/equipment/equipment-total.vue';
+import list1 from '@/layout/equipment/list-1.vue';
+import info1 from '@/layout/equipment/info-1.vue';
+import adminFrame from '@common/src/components/mobile-frame/mobile-main.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    adminFrame,
+    equipmentTotal,
+    list1,
+    info1,
+  },
+  data: function () {
+    return {
+      active: 0,
+      list: [
+        {
+          count1: null,
+          count2: null,
+          count3: null,
+          count4: null,
+          count5: null,
+          count6: null,
+          createBy: '1',
+          createTime: '2021-10-17 16:14:42',
+          delFlag: '0',
+          equipmentMoney: 50,
+          equipmentNumb: null,
+          id: '42d852f2bc9944feaca6671630b38aa0',
+          instrumentsNumb: 'Y',
+          name: '特种设备3',
+          params: {},
+          rate: 0.07778,
+          remark: null,
+          researchHour: 60,
+          searchValue: null,
+          servicesHour: 80,
+          updateBy: '特种设备3',
+          updateTime: '2021-10-17 16:25:37',
+        },
+      ],
+      total: 0,
+      limit: 5,
+      // 设备总数信息
+      totalInfo: { p1: 1, p2: 1, p3: 50.0, p4: 60.0, p5: 80.0, p6: 0.0778 },
+      // 弹框
+      dialog: { show: false, title: '详细信息', type: '1' },
+      // 详细信息
+      info: {},
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    async search({ skip = 0, limit = this.limit, searchName, ...info } = {}) {
+      if (searchName) info.name = searchName;
+    },
+    // 查看信息
+    async toView(data) {
+      this.$set(this, `info`, data);
+      this.dialog = { show: true, title: '详细信息', 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>
+.dialog {
+  /deep/.van-dialog__content {
+    max-height: 350px;
+    overflow-y: auto;
+  }
+}
+</style>

+ 101 - 0
src/views/infoview-laboratory/index.vue

@@ -0,0 +1,101 @@
+<template>
+  <div id="index">
+    <admin-frame @search="search" :limit="limit" :total="total" :useNav="false">
+      <template v-slot:info>
+        <list-1 :list="list" @toView="toView"></list-1>
+      </template>
+    </admin-frame>
+    <van-dialog class="dialog" v-model="dialog.show" :title="dialog.title" :show-confirm-button="false" show-cancel-button cancel-button-text="返回">
+      <info-1 :info="info" v-if="dialog.type == '1'"></info-1>
+    </van-dialog>
+  </div>
+</template>
+
+<script>
+import list1 from '@/layout/laboratory/list-1.vue';
+import info1 from '@/layout/laboratory/info-1.vue';
+import adminFrame from '@common/src/components/mobile-frame/mobile-main.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    adminFrame,
+    list1,
+    info1,
+  },
+  data: function () {
+    return {
+      list: [],
+      total: 0,
+      limit: 5,
+      // 弹框
+      dialog: { show: false, title: '详细信息', type: '1' },
+      // 详细信息
+      info: {},
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    async search({ skip = 0, limit = this.limit, searchName, ...info } = {}) {
+      if (searchName) info.name = searchName;
+      let data = [
+        {
+          buildTime: null,
+          chiefName: '梁建民',
+          createBy: '1',
+          createTime: '2021-09-16 00:00:00',
+          delFlag: '0',
+          englishName: '',
+          id: '1',
+          labAcreage: '',
+          labAddress: '',
+          labEmail: 'jackyliangjm@163.com',
+          labPerson: '梁建民',
+          labPhone: '13578652528',
+          name: '儿科神经吉林省重点实验室',
+          numb: '0',
+          params: {},
+          remark: null,
+          searchValue: null,
+          unitName: '吉林大学白求恩第一医院',
+          unitPerson: '孙宇飞 ',
+          unitPhone: '13944843792',
+          updateBy: 'userid001',
+          updateTime: '2021-09-30 14:09:43',
+        },
+      ];
+      this.$set(this, `list`, data);
+    },
+    // 查看信息
+    async toView(data) {
+      this.$set(this, `info`, data);
+      this.dialog = { show: true, title: '详细信息', 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>
+.dialog {
+  /deep/.van-dialog__content {
+    max-height: 350px;
+    overflow-y: auto;
+  }
+}
+</style>

+ 157 - 0
src/views/infoview-research/index.vue

@@ -0,0 +1,157 @@
+<template>
+  <div id="index">
+    <admin-frame @search="search" :limit="limit" :total="total" :useNav="false">
+      <template v-slot:info>
+        <list-1 :list="list" @toView="toView"></list-1>
+      </template>
+    </admin-frame>
+    <van-dialog class="dialog" v-model="dialog.show" :title="dialog.title" :show-confirm-button="false" show-cancel-button cancel-button-text="返回">
+      <info-1 :info="info" v-if="dialog.type == '1'"></info-1>
+    </van-dialog>
+  </div>
+</template>
+
+<script>
+import list1 from '@/layout/research/list-1.vue';
+import info1 from '@/layout/research/info-1.vue';
+import adminFrame from '@common/src/components/mobile-frame/mobile-main.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    adminFrame,
+    list1,
+    info1,
+  },
+  data: function () {
+    return {
+      list: [
+        {
+          createBy: '1',
+          createTime: '2021-09-24 15:10:01',
+          delFlag: '0',
+          id: 'direction001',
+          name: '开创视觉光刺激治疗癫痫研究',
+          params: {},
+          personId: 'person001',
+          personName: '王江涛',
+          persons: [
+            {
+              createBy: null,
+              createTime: '2021-10-11 19:57:29',
+              direction: 'direction001',
+              id: '2896b42a57ec49b4aa2102d324fca81e',
+              params: {},
+              personId: 'person435',
+              personName: '张洪波',
+              remark: null,
+              searchValue: null,
+              updateBy: null,
+              updateTime: null,
+            },
+            {
+              createBy: null,
+              createTime: '2021-10-11 19:57:29',
+              direction: 'direction001',
+              id: '39ec9611c3814f738cf8118522e00c7a',
+              params: {},
+              personId: 'person1119',
+              personName: '李国亮',
+              remark: null,
+              searchValue: null,
+              updateBy: null,
+              updateTime: null,
+            },
+            {
+              createBy: null,
+              createTime: '2021-10-11 19:57:29',
+              direction: 'direction001',
+              id: '509af2c53cfa4a28aa58eab8c7491a19',
+              params: {},
+              personId: 'person579',
+              personName: '张艳凤',
+              remark: null,
+              searchValue: null,
+              updateBy: null,
+              updateTime: null,
+            },
+            {
+              createBy: null,
+              createTime: '2021-10-11 19:57:29',
+              direction: 'direction001',
+              id: '9dfa64d3f9594e509880eded42cabbcf',
+              params: {},
+              personId: 'person986',
+              personName: '杨诺',
+              remark: null,
+              searchValue: null,
+              updateBy: null,
+              updateTime: null,
+            },
+            {
+              createBy: null,
+              createTime: '2021-10-11 19:57:29',
+              direction: 'direction001',
+              id: 'bb3b9aa4c1104833940896349a2d9b05',
+              params: {},
+              personId: 'person004',
+              personName: '张彤',
+              remark: null,
+              searchValue: null,
+              updateBy: null,
+              updateTime: null,
+            },
+          ],
+          remark: null,
+          searchValue: null,
+          updateBy: '1',
+          updateTime: '2021-10-11 19:57:28',
+        },
+      ],
+      total: 0,
+      limit: 5,
+      // 弹框
+      dialog: { show: false, title: '详细信息', type: '1' },
+      // 详细信息
+      info: {},
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    async search({ skip = 0, limit = this.limit, searchName, ...info } = {}) {
+      if (searchName) info.name = searchName;
+    },
+    // 查看信息
+    async toView(data) {
+      data.persons = JSON.stringify(data.persons.map((i) => i.personName));
+      this.$set(this, `info`, data);
+      this.dialog = { show: true, title: '详细信息', 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>
+.dialog {
+  /deep/.van-dialog__content {
+    max-height: 350px;
+    overflow-y: auto;
+  }
+}
+</style>

+ 68 - 0
src/views/learning/index.vue

@@ -0,0 +1,68 @@
+<template>
+  <div id="index">
+    <admin-frame :useTop="false" :usePage="false" :useNav="false">
+      <template v-slot:info>
+        <van-col span="24" class="menu" v-for="(i, index) in menu" :key="index" @click.native="$router.push(i.router)">
+          {{ i.label }}
+        </van-col>
+      </template>
+    </admin-frame>
+  </div>
+</template>
+
+<script>
+import adminFrame from '@common/src/components/mobile-frame/mobile-main.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    adminFrame,
+  },
+  data: function () {
+    return {
+      menu: [
+        {
+          label: '学术交流-社会服务活动',
+          router: '/learning/sociology/index',
+        },
+        {
+          label: '学术交流-技术服务活动',
+          router: '/learning/technology/index',
+        },
+        {
+          label: '学术交流-科普活动',
+          router: '/learning/science/index',
+        },
+        {
+          label: '学术交流-分析/建议/决策/咨询报告',
+          router: '/learning/report/index',
+        },
+      ],
+    };
+  },
+  async created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.menu {
+  border: 1px dashed #ccc;
+  margin: 0 0 10px 0;
+  padding: 10px;
+}
+</style>

+ 36 - 0
src/views/learning/report/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 36 - 0
src/views/learning/science/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 36 - 0
src/views/learning/sociology/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 36 - 0
src/views/learning/technology/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 36 - 0
src/views/ranks/boshuo/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 64 - 0
src/views/ranks/index.vue

@@ -0,0 +1,64 @@
+<template>
+  <div id="index">
+    <admin-frame :useTop="false" :usePage="false" :useNav="false">
+      <template v-slot:info>
+        <van-col span="24" class="menu" v-for="(i, index) in menu" :key="index" @click.native="$router.push(i.router)">
+          {{ i.label }}
+        </van-col>
+      </template>
+    </admin-frame>
+  </div>
+</template>
+
+<script>
+import adminFrame from '@common/src/components/mobile-frame/mobile-main.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    adminFrame,
+  },
+  data: function () {
+    return {
+      menu: [
+        {
+          label: '人才称号',
+          router: '/ranks/personnel/index',
+        },
+        {
+          label: '职称晋升',
+          router: '/ranks/title/index',
+        },
+        {
+          label: '博硕培养',
+          router: '/ranks/boshuo/index',
+        },
+      ],
+    };
+  },
+  async created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.menu {
+  border: 1px dashed #ccc;
+  margin: 0 0 10px 0;
+  padding: 10px;
+}
+</style>

+ 36 - 0
src/views/ranks/personnel/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 36 - 0
src/views/ranks/title/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 36 - 0
src/views/scientific-achieve/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 36 - 0
src/views/scientific-award/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 36 - 0
src/views/scientific-learning/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 36 - 0
src/views/scientific-otherachieve/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 36 - 0
src/views/scientific-paper/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 36 - 0
src/views/scientific-personnel/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 36 - 0
src/views/scientific-task/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="index">
+    <van-row>
+      <van-col span="24" class="main"> test </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>