guhongwei 3 vuotta sitten
vanhempi
commit
647b22a672

+ 1 - 1
.env

@@ -1,4 +1,4 @@
 VUE_APP_AXIOS_BASE_URL = ''
 VUE_APP_ROUTER="platlive"
 VUE_APP_HOST="http://broadcast.waityou24.cn"
-VUE_APP_LIVE_URL='http://101.36.174.25:8888/live?port=1935&app=live&stream='
+VUE_APP_LIVE_URL='http://101.36.221.66:8888/live?port=1935&app=live&stream='

+ 6 - 1
src/store/index.js

@@ -69,7 +69,10 @@ import Medium from '@common/src/store/kjzl/Medium';
 import Order from '@common/src/store/kjzl/Order';
 // 科技评价
 import achieveApply from '@common/src/store/achieve/achieve_apply.js';
-
+// 专利交易
+import patenttrans from '@common/src/store/patent/patenttrans';
+// 专利导航
+import patentnav from '@common/src/store/patentnav';
 Vue.use(Vuex);
 
 export default new Vuex.Store({
@@ -117,5 +120,7 @@ export default new Vuex.Store({
     Medium,
     Order,
     achieveApply,
+    patenttrans,
+    patentnav,
   },
 });

+ 1 - 1
src/views/admin/live/achieve/video.vue

@@ -11,7 +11,7 @@
         </el-col>
       </el-col>
     </el-row>
-    <el-dialog class="dialog" title="视频信息" :visible.sync="dialog" width="40%">
+    <el-dialog class="dialog" title="视频信息" :visible.sync="dialog" width="40%" :close-on-click-modal="false">
       <el-form ref="form" :model="form" label-width="80px" class="form">
         <el-form-item label="标题">
           <el-input v-model="form.title" placeholder="请输入标题"></el-input>

+ 4 - 4
src/views/twoweb/achieveLive/detail.vue

@@ -9,8 +9,8 @@
           <div class="w_1200">
             <el-col :span="24" class="two_1">
               <el-col :span="12" class="left">
-                <!-- <video-data :info="info"></video-data> -->
-                <video-live></video-live>
+                <video-data :info="info"></video-data>
+                <!-- <video-live></video-live> -->
               </el-col>
               <el-col :span="12" class="right">
                 <imgtext-data></imgtext-data>
@@ -65,8 +65,8 @@ export default {
   components: {
     foot,
     top,
-    // videoData,
-    videoLive,
+    videoData,
+    // videoLive,
     imgtextData,
     productData,
     expertData,

+ 1 - 0
src/views/twoweb/achieveLive/detail/chatData.vue

@@ -86,6 +86,7 @@ export default {
       }
     },
     async send() {
+      console.log(this.user);
       let data = {
         dock_id: this.dock_id,
         content: this.text,

+ 5 - 2
src/views/twoweb/achieveLiveTH/detail.vue

@@ -9,7 +9,8 @@
           <div class="w_1200">
             <el-col :span="24" class="two_1">
               <el-col :span="12" class="left">
-                <video-live></video-live>
+                <!-- <video-live></video-live> -->
+                <video-data :info="info"></video-data>
               </el-col>
               <el-col :span="12" class="right">
                 <imgtext-data></imgtext-data>
@@ -35,6 +36,7 @@
 import top from './detail/top.vue';
 import foot from '@common/src/components/common/foot.vue';
 import videoLive from './detail/videoLive.vue';
+import videoData from '../achieveLive/detail/videoData.vue';
 import imgtextData from './detail/imgtextData.vue';
 import productData from './detail/productData.vue';
 import expertData from './detail/expertData.vue';
@@ -46,7 +48,8 @@ export default {
   components: {
     top,
     foot,
-    videoLive,
+    // videoLive,
+    videoData,
     imgtextData,
     productData,
     expertData,

+ 108 - 0
src/views/twoweb/service/detail-model/model-3.vue

@@ -0,0 +1,108 @@
+<template>
+  <div id="model-3">
+    <el-row type="flex" justify="end">
+      <el-col :span="2">
+        <slot></slot>
+      </el-col>
+    </el-row>
+    <el-col :span="24" class="detail" style="margin:10px 0 0 0;">
+      <el-col :span="24" class="one">
+        <p>{{ data.title }}</p>
+        <p>
+          <span>信息来源:{{ data.origin || '暂无' }}</span>
+          <span>发布时间:{{ data.publish_time || '暂无' }}</span>
+        </p>
+      </el-col>
+      <el-col :span="24" class="three">
+        <p v-html="data.content"></p>
+      </el-col>
+      <el-col :span="24" class="four" v-if="data.filepath">
+        <span>附件:</span>
+        <el-link :href="data.filepath.url" type="primary">{{ data.filepath.name }}</el-link>
+      </el-col>
+    </el-col>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'model-3',
+  props: {
+    data: { type: Object, default: () => {} },
+  },
+  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>
+.detail {
+  .one {
+    border-bottom: 1px dashed #ccc;
+    margin: 0 0 15px 0;
+    p:nth-child(1) {
+      font-size: 20px;
+      font-weight: bold;
+      color: #044b79;
+      padding: 25px 0;
+      text-align: center;
+    }
+    p:nth-child(2) {
+      padding: 0 0 20px 0;
+      span {
+        display: inline-block;
+        width: 46%;
+        font-size: 16px;
+        color: #666;
+        padding: 0 15px;
+      }
+      span:nth-child(1) {
+        text-align: right;
+      }
+    }
+  }
+  .two {
+    text-align: center;
+    margin: 0 0 15px 0;
+    .el-image {
+      width: 60%;
+    }
+  }
+  .three {
+    margin: 0 0 15px 0;
+    /deep/p {
+      font-size: 16px;
+      font-family: 微软雅黑;
+      color: #444;
+      // img {
+      //   padding: 10px 140px !important;
+      // }
+    }
+  }
+  .four {
+    span {
+      color: #400eff;
+      font-weight: bold;
+      margin: 0;
+    }
+  }
+}
+</style>

+ 47 - 7
src/views/twoweb/service/index.vue

@@ -22,15 +22,25 @@
                 <techol-frame :list="techolList" @detail="tecDetail"></techol-frame>
               </el-col>
             </el-col>
-            <el-col :span="24" class="two_2" style="display:none">
+            <el-col :span="24" class="two_2">
               <el-image :src="imgUrl"></el-image>
             </el-col>
-            <el-col :span="24" class="two_1 two_3" style="display:none">
+            <el-col :span="24" class="two_1">
+              <el-col :span="12" class="left">
+                <top topText="专利交易公告" @more="more(2)"></top>
+                <trans-frame :list="transList" @detail="transDetail"></trans-frame>
+              </el-col>
+              <el-col :span="12" class="right">
+                <top topText="专利导航" @more="more(3)"></top>
+                <nav-frame :list="navList" @detail="navDetail"></nav-frame>
+              </el-col>
+            </el-col>
+            <!-- <el-col :span="24" class="two_1 two_3" style="display:none">
               <el-col :span="24" class="left">
                 <top topText="项目申报" @more="more(2)"></top>
                 <project-frame :list="declareList" @detail="proDetail"></project-frame>
               </el-col>
-            </el-col>
+            </el-col> -->
           </el-col>
         </div>
       </el-col>
@@ -60,11 +70,15 @@ import top from './parts/top.vue';
 import achieveFrame from './index/achieve.vue';
 import techolFrame from './index/techol.vue';
 import projectFrame from './index/project.vue';
+import transFrame from './index/trans.vue';
+import navFrame from './index/nav.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: organization } = createNamespacedHelpers('organization');
 const { mapActions: achieveApply } = createNamespacedHelpers('achieveApply');
 const { mapActions: product } = createNamespacedHelpers('product');
 const { mapActions: declare } = createNamespacedHelpers('declare');
+const { mapActions: patenttrans } = createNamespacedHelpers('patenttrans');
+const { mapActions: patentnav } = createNamespacedHelpers('patentnav');
 export default {
   name: 'index',
   props: {},
@@ -73,7 +87,9 @@ export default {
     top,
     achieveFrame,
     techolFrame,
-    projectFrame,
+    // projectFrame,
+    transFrame,
+    navFrame,
   },
   data: function() {
     return {
@@ -97,6 +113,10 @@ export default {
       techolList: [],
       // 项目申报
       declareList: [],
+      // 专利交易公告
+      transList: [],
+      // 专利导航
+      navList: [],
     };
   },
   created() {
@@ -107,6 +127,8 @@ export default {
     ...achieveApply(['query']),
     ...product({ productQuery: 'query' }),
     ...declare({ declareQuery: 'query' }),
+    ...patenttrans({ patenttransQuery: 'query' }),
+    ...patentnav({ patentnavQuery: 'query' }),
     // 查询列表
     async search({ skip = 0, limit = 10, ...info } = {}) {
       let res = await this.query({ skip, limit: 5, status: '7', ...info });
@@ -121,6 +143,16 @@ export default {
       if (this.$checkRes(res)) {
         this.$set(this, `declareList`, res.data);
       }
+      // 专利交易公告
+      res = await this.patenttransQuery({ skip, limit: 5, status: '4', ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `transList`, res.data);
+      }
+      // 专利导航
+      res = await this.patentnavQuery({ skip, limit: 8, is_show: true, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `navList`, res.data);
+      }
     },
     // 打开弹框
     btn(data) {
@@ -168,9 +200,17 @@ export default {
     tecDetail(data) {
       this.$router.push({ path: '/twoweb/service/list', query: { index: 1, id: data.id } });
     },
-    // 项目申报
-    proDetail(data) {
-      this.$router.push({ path: '/twoweb/service/list', query: { index: 2, id: data._id } });
+    // // 项目申报
+    // proDetail(data) {
+    //   this.$router.push({ path: '/twoweb/service/list', query: { index: 2, id: data._id } });
+    // },
+    // 专利交易公告
+    transDetail(data) {
+      // this.$router.push({ path: '/twoweb/service/list', query: { index: 2, id: data._id } });
+    },
+    // 专利导航
+    navDetail(data) {
+      this.$router.push({ path: '/twoweb/service/list', query: { index: 3, id: data._id } });
     },
   },
   computed: {

+ 80 - 0
src/views/twoweb/service/index/nav.vue

@@ -0,0 +1,80 @@
+<template>
+  <div id="trans">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="one">
+          <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detail(item)">
+            <el-col :span="24" class="top">
+              <el-col :span="20" class="name textOver">
+                {{ item.title }}
+              </el-col>
+              <el-col :span="4" class="date">
+                {{ item.publish_time || '暂无' }}
+              </el-col>
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'trans',
+  props: { list: { type: Array } },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {
+    detail(data) {
+      this.$emit('detail', 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 {
+    padding: 12px 0;
+    border-bottom: 1px dashed #ccc;
+    .top {
+      margin: 0 0 10px 0;
+      .name {
+        font-size: 16px;
+        font-weight: bold;
+      }
+      .date {
+        font-size: 14px;
+        color: #666;
+        text-align: right;
+      }
+    }
+  }
+  .list:hover {
+    cursor: pointer;
+    .top {
+      .name {
+        color: #409eff;
+      }
+    }
+  }
+}
+</style>

+ 100 - 0
src/views/twoweb/service/index/trans.vue

@@ -0,0 +1,100 @@
+<template>
+  <div id="trans">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="one">
+          <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detail(item)">
+            <el-col :span="24" class="top">
+              <el-col :span="24" class="name">
+                {{ item.patent_name }}
+              </el-col>
+            </el-col>
+            <el-col :span="24" class="other">
+              <el-col :span="12" class="otherInfo textOver">
+                申请号:<span>{{ item.create_number || '暂无' }}</span>
+              </el-col>
+              <el-col :span="12" class="otherInfo textOver">
+                转移日期:<span>{{ item.transfer_date || '暂无' }}</span>
+              </el-col>
+              <el-col :span="12" class="otherInfo textOver">
+                变更前权利人:<span>{{ item.on_obligee || '暂无' }}</span>
+              </el-col>
+              <el-col :span="12" class="otherInfo textOver">
+                变更后权利人:<span>{{ item.on_afterobligee || '暂无' }}</span>
+              </el-col>
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'trans',
+  props: { list: { type: Array } },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {
+    detail(data) {
+      this.$emit('detail', 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 {
+    padding: 11px 0;
+    border-bottom: 1px dashed #ccc;
+    .top {
+      margin: 0 0 10px 0;
+      .name {
+        font-size: 16px;
+        font-weight: bold;
+      }
+      .date {
+        font-size: 14px;
+        color: #666;
+        text-align: right;
+      }
+    }
+    .other {
+      .otherInfo {
+        font-size: 14px;
+        color: #666;
+        span {
+          color: #000;
+        }
+      }
+    }
+  }
+  .list:hover {
+    cursor: pointer;
+    .top {
+      .name {
+        color: #409eff;
+      }
+    }
+  }
+}
+</style>

+ 10 - 7
src/views/twoweb/service/list-model/model-2.vue

@@ -4,19 +4,22 @@
       <el-col :span="24" class="main">
         <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="clickDetail(item.id)">
           <el-col :span="24" class="top">
-            <el-col :span="22" class="name">
+            <el-col :span="24" class="name">
               {{ item.p1 }}
             </el-col>
-            <el-col :span="2" class="date">
-              {{ item.p2 == '0' ? '未兑付' : '已兑付' }}
-            </el-col>
           </el-col>
           <el-col :span="24" class="other">
             <el-col :span="12" class="otherInfo textOver">
-              申请人:<span>{{ item.p3 || '暂无' }}</span>
+              申请号:<span>{{ item.p2 || '暂无' }}</span>
+            </el-col>
+            <el-col :span="12" class="otherInfo textOver">
+              专利日期:<span>{{ item.p3 || '暂无' }}</span>
+            </el-col>
+            <el-col :span="12" class="otherInfo textOver">
+              变更前权利人:<span>{{ item.p4 || '暂无' }}</span>
             </el-col>
             <el-col :span="12" class="otherInfo textOver">
-              中介机构:<span>{{ item.p4 || '暂无' }}</span>
+              变更后权利人:<span>{{ item.p4 || '暂无' }}</span>
             </el-col>
           </el-col>
         </el-col>
@@ -45,7 +48,7 @@ export default {
     },
     clickDetail(id) {
       // TODO:打开指定详情
-      this.$router.push({ path: './list', query: { index: this.index, id } });
+      // this.$router.push({ path: './list', query: { index: this.index, id } });
     },
   },
   computed: {

+ 104 - 0
src/views/twoweb/service/list-model/model-3.vue

@@ -0,0 +1,104 @@
+<template>
+  <div id="model-3">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="clickDetail(item.id)">
+          <el-col :span="24" class="top">
+            <el-col :span="20" class="name textOver">
+              {{ item.p1 }}
+            </el-col>
+            <el-col :span="4" class="date">
+              {{ item.p2 || '暂无' }}
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+const moment = require('moment');
+export default {
+  name: 'model-3',
+  props: {
+    list: { type: Array, default: () => [] },
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {
+    // 整理时间
+    getTime(data) {
+      return moment(_.get(data)).format('YYYY-MM-DD');
+    },
+    clickDetail(id) {
+      // TODO:打开指定详情
+      this.$router.push({ path: './list', query: { index: this.index, id } });
+    },
+  },
+  computed: {
+    ...mapState(['user', 'menuParams']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+    index() {
+      return parseInt(this.$route.query.index) || 0;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .list {
+    padding: 12px 0;
+    border-bottom: 1px dashed #ccc;
+    .top {
+      margin: 0 0 10px 0;
+      .name {
+        font-size: 16px;
+        font-weight: bold;
+      }
+      .date {
+        font-size: 14px;
+        color: #666;
+        text-align: right;
+      }
+    }
+    .other {
+      .otherInfo {
+        font-size: 14px;
+        color: #666;
+        span {
+          color: #000;
+        }
+      }
+    }
+  }
+  .list:nth-child(6) {
+    border-bottom: none;
+  }
+  .list:hover {
+    cursor: pointer;
+    .top {
+      .name {
+        color: #409eff;
+      }
+    }
+  }
+}
+</style>

+ 4 - 0
src/views/twoweb/service/list.vue

@@ -28,6 +28,8 @@ export default {
   components: {
     achieve: () => import('./list/achieve.vue'),
     techol: () => import('./list/techol.vue'),
+    trans: () => import('./list/trans.vue'),
+    navinfo: () => import('./list/navinfo.vue'),
     // project: () => import('./list/project.vue'),
   },
   data: function() {
@@ -37,6 +39,8 @@ export default {
         { name: '成果评价', component: 'achieve', options: { useTab: false, useSearch: false, listModel: 0 } },
         { name: '科技需求', component: 'techol', options: { useTab: false, listModel: 1 } },
         // { name: '项目申报', component: 'project', options: { useTab: false, listModel: 2 } },
+        { name: '交易公告', component: 'trans', options: { useTab: false, listModel: 2 } },
+        { name: '专利导航', component: 'navinfo', options: { useTab: false, listModel: 3 } },
       ],
       squareImage: require('@p/live/square_big.png'),
       column_name: '',

+ 95 - 0
src/views/twoweb/service/list/navinfo.vue

@@ -0,0 +1,95 @@
+<template>
+  <div id="navinfo">
+    <list-page v-bind="$attrs" :total="total" :pageSize="limit" v-if="!id" @toSearch="search" searchModel="title">
+      <component :is="model" :list="list"></component>
+    </list-page>
+    <template v-else>
+      <dmodel :displayBtn="true" :data="detail" v-if="detail">
+        <el-button size="mini" type="primary" @click="$router.push({ path: './list', query: { index: $route.query.index } })"> 返回</el-button>
+      </dmodel>
+    </template>
+  </div>
+</template>
+
+<script>
+import listPage from '@c/list/list-page.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: patentnav } = createNamespacedHelpers('patentnav');
+export default {
+  name: 'navinfo',
+  props: ['listModel'],
+  components: {
+    listPage,
+    model3: () => import('../list-model/model-3.vue'),
+    dmodel: () => import('../detail-model/model-3.vue'),
+  },
+  data: function() {
+    return {
+      list: [],
+      total: 0,
+      limit: 10,
+      detail: {},
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    ...patentnav(['query', 'fetch']),
+    // 查询相关
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      // TODO: 查询
+      let res = await this.query({ skip, limit: 10, is_show: true, ...info });
+      if (this.$checkRes(res)) {
+        console.log(res);
+        this.$set(this, `list`, res.data);
+        this.$set(this, `total`, res.total);
+        // 最后结果处理方式,将显示的信息转换成固定的字段去显示
+        this.$set(this, 'list', this.translate(this.list));
+      }
+    },
+    translate(data) {
+      const list = data.map(i => {
+        const obj = { id: i.id || i._id };
+        obj.p1 = _.get(i, 'title');
+        obj.p2 = _.get(i, 'publish_time');
+        return obj;
+      });
+      return list;
+    },
+    // 查询详情
+    async searchInfo() {
+      let res = await this.fetch(this.id);
+      if (this.$checkRes(res)) {
+        this.$set(this, `detail`, res.data);
+      }
+    },
+  },
+  computed: {
+    ...mapState(['user', 'menuParams']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+    model() {
+      const moduleNumber = this.listModel || 2;
+      return `model${moduleNumber}`;
+    },
+    id() {
+      return this.$route.query.id;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    id: {
+      handler(ne) {
+        if (ne) this.searchInfo();
+      },
+      immediate: true,
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 96 - 0
src/views/twoweb/service/list/trans.vue

@@ -0,0 +1,96 @@
+<template>
+  <div id="trans">
+    <list-page v-bind="$attrs" :total="total" v-if="!id" @toSearch="search" searchModel="patent_name">
+      <component :is="model" :list="list"></component>
+    </list-page>
+    <template v-else>
+      <dmodel :displayBtn="true" :data="detail" v-if="detail">
+        <el-button size="mini" type="primary" @click="$router.push({ path: './list', query: { index: $route.query.index } })"> 返回</el-button>
+      </dmodel>
+    </template>
+  </div>
+</template>
+
+<script>
+import listPage from '@c/list/list-page.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: patenttrans } = createNamespacedHelpers('patenttrans');
+export default {
+  name: 'trans',
+  props: ['listModel'],
+  components: {
+    listPage,
+    model2: () => import('../list-model/model-2.vue'),
+    dmodel: () => import('../detail-model/model-2.vue'),
+  },
+  data: function() {
+    return {
+      list: [],
+      total: 0,
+      detail: {},
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    ...patenttrans(['query', 'fetch']),
+    // 查询相关
+    async search({ skip = 0, limit = 5, ...info } = {}) {
+      // TODO: 查询
+      let res = await this.query({ skip, limit: 5, status: '4', ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data);
+        this.$set(this, `total`, res.total);
+        // 最后结果处理方式,将显示的信息转换成固定的字段去显示
+        this.$set(this, 'list', this.translate(this.list));
+      }
+    },
+    translate(data) {
+      const list = data.map(i => {
+        const obj = { id: i.id || i._id };
+        obj.p1 = _.get(i, 'patent_name');
+        obj.p2 = _.get(i, 'create_number');
+        obj.p3 = _.get(i, 'transfer_date');
+        obj.p4 = _.get(i, 'on_obligee');
+        obj.p5 = _.get(i, 'on_afterobligee');
+        return obj;
+      });
+      return list;
+    },
+    // 查询详情
+    async searchInfo() {
+      let res = await this.fetch(this.id);
+      if (this.$checkRes(res)) {
+        this.$set(this, `detail`, res.data);
+      }
+    },
+  },
+  computed: {
+    ...mapState(['user', 'menuParams']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+    model() {
+      const moduleNumber = this.listModel || 2;
+      return `model${moduleNumber}`;
+    },
+    id() {
+      return this.$route.query.id;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    id: {
+      handler(ne) {
+        if (ne) this.searchInfo();
+      },
+      immediate: true,
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>