浏览代码

企业全景分析-中标信息

TANGSHIZHE 4 年之前
父节点
当前提交
07e9851c20

+ 20 - 0
src/api/modules/chart.js

@@ -40,3 +40,23 @@ export function getEntChart (data) {
     data
   })
 }
+
+// 企业画像-企业基本信息*
+export function getEntForm (data) {
+  data = qs.stringify(data)
+  return request({
+    url: '/portrait/ent/detail',
+    method: 'post',
+    data
+  })
+}
+
+// 企业情报历史数据接口
+export function getEntChangeList (data) {
+  data = qs.stringify(data)
+  return request({
+    url: '/follow/ent/entChangeList',
+    method: 'post',
+    data
+  })
+}

+ 10 - 0
src/api/modules/forecast.js

@@ -30,3 +30,13 @@ export function getResultDetail (data) {
     data: data
   })
 }
+
+// 我关注的企业列表
+export function getFollowtList (data) {
+  data = qs.stringify(data)
+  return request({
+    url: '/follow/ent/list',
+    method: 'post',
+    data: data
+  })
+}

+ 14 - 1
src/components/forecast/ForLayout.vue

@@ -22,7 +22,7 @@
 import { Icon } from 'element-ui'
 import { mapState } from 'vuex'
 import SearchInput from '@/components/input/SearchInput.vue'
-import { getProjectList } from '@/api/modules'
+import { getProjectList, getFollowtList } from '@/api/modules'
 export default {
   name: 'j-container',
   components: {
@@ -42,10 +42,12 @@ export default {
   },
   created () {
     this.type = 0
+    this.getMyFollowList()
   },
   methods: {
     getRecovery (data) {
       this.type = 1
+      // 中标预测、投标决策分析列表
       getProjectList({ pName: data.text }).then(res => {
         console.log(res)
         if (res.error_code === 0) {
@@ -54,6 +56,17 @@ export default {
           this.$store.commit('forcast/setType', this.type)
           // 投标决策分析
           this.$store.commit('forcast/setPolicyList', res.data)
+          // 企业情报
+          this.$store.commit('forcast/setEntFollowSearch', res.data)
+        }
+      })
+    },
+    // 我关注的企业列表
+    getMyFollowList () {
+      getFollowtList().then(res => {
+        console.log(res)
+        if (res.error_code === 0 && res.data) {
+          this.$store.commit('forcast/setEntFollowList', res.data)
         }
       })
     }

+ 19 - 13
src/components/forecast/ForeCast.vue

@@ -2,7 +2,7 @@
   <div class="listData">
     <div class="listData_title">{{ title }}</div>
     <!-- 中标企业预测、投标决策分析 -->
-    <ul class="listData_ul" v-show="type=='bidfor'">
+    <ul class="listData_ul" v-if="type=='bidfor'">
       <li class="list_li" v-for="(item, index) in listState.list.slice((listState.pageNum - 1) * listState.pageSize, listState.pageNum * listState.pageSize)" :key="index" @click="goForcast(item.s_id)">
         <div class="list_name">{{item.projectname}}</div>
         <div class="list_unit">
@@ -18,31 +18,31 @@
       </li>
     </ul>
     <!-- 企业情报 -->
-    <ul class="listData_ul" v-show="type=='entintel'">
-      <li class="list_li" v-for="(item, index) in 10" :key="index">
-        <div class="list_name">北京市工商行政管理局朝阳分局</div>
+    <ul class="listData_ul" v-if="type=='entintel'">
+      <li class="list_li" v-for="(item, index) in listState.list" :key="index">
+        <div class="list_name">{{item.s_entname}}</div>
         <div class="list_unit">
           <div class="pur_unit">
             <span class="unit_label">成立日期:</span>
-            <span class="unit_name entname">2014-03-04</span>
+            <span class="unit_name entname">{{item.l_establishdate?item.l_establishdate:''}}</span>
           </div>
           <div class="pur_unit">
             <span class="unit_label">注册资本:</span>
-            <span class="unit_name entname">135000万元</span>
+            <span class="unit_name entname">{{item.f_capital}}万元</span>
           </div>
           <div class="pur_unit">
             <span class="unit_label">企业地址:</span>
-            <span class="unit_name entname">浙江 杭州</span>
+            <span class="unit_name entname">{{item.s_area}}{{item.s_city}}</span>
           </div>
           <div class="pur_unit">
             <span class="unit_label">企业联系方式:</span>
-            <span class="unit_name entname">0531-88888888</span>
+            <span class="unit_name entname">{{item.s_phone}}</span>
           </div>
         </div>
       </li>
     </ul>
     <!-- 企业情报搜索结果组件 -->
-    <ul class="listData_ul" v-show="type=='entintelRes'">
+    <ul class="listData_ul" v-if="type=='entintelRes'">
       <li class="list_li res_li" v-for="(item, index) in 10" :key="index">
         <div class="list_name">
           <div class="list_name_left">
@@ -57,7 +57,7 @@
       </li>
     </ul>
     <!-- 潜在项目预测 -->
-    <ul class="listData_ul" v-show="type=='potential'">
+    <ul class="listData_ul" v-if="type=='potential'">
       <li class="list_li poten_li" v-for="(item, index) in this.listState.list" :key="index">
         <div class="list_name">
           <div class="list_name_left">
@@ -81,7 +81,7 @@
       </li>
     </ul>
     <!-- 潜在项目预测近似项目列表 -->
-    <ul class="listData_ul" v-show="type=='potensimilar'">
+    <ul class="listData_ul" v-if="type=='potensimilar'">
       <li class="list_li potensimilar_li" v-for="(item, index) in 10" :key="index">
         <div class="list_unit">
           <div class="pur_unit">
@@ -121,9 +121,8 @@
 <script>
 import { Pagination } from 'element-ui'
 // import { getPushList } from '@/api/modules/'
-// potenObj 潜在项目预测返回数据
 export default {
-  props: ['type', 'title', 'potenObj', 'mydata'],
+  props: ['type', 'title', 'mydata', 'myDataObj'],
   name: 'listData',
   components: {
     [Pagination.name]: Pagination
@@ -147,6 +146,9 @@ export default {
   watch: {
     mydata (newVal, oldVal) {
       this.initData(newVal)
+    },
+    myDataObj (newVal, oldVal) {
+      this.entInitData(newVal)
     }
   },
   methods: {
@@ -154,6 +156,10 @@ export default {
       this.listState.list = list
       this.listState.total = list.length
     },
+    entInitData (obj) {
+      this.listState.list = obj.list
+      this.listState.total = obj.total
+    },
     goForcast (id) {
       this.$router.push({
         name: 'bidforlimit',

+ 11 - 0
src/store/forcast.js

@@ -8,6 +8,10 @@ export default {
     // 投标决策分析
     policyList: defaultLocalPageData('bigmember-POLICY_DATA', []),
     historyPolicyList: defaultLocalPageData('bigmember-POLICY_DATA', []),
+    // 企业情报-搜索
+    entList: [],
+    // 企业情报-我关注的项目
+    entObject: {},
     type: 0
   }),
   mutations: {
@@ -25,6 +29,13 @@ export default {
       state.policyList = list
       state.historyPolicyList = list.concat(state.historyPolicyList)
       localStorage.setItem('bigmember-POLICY_DATA', JSON.stringify(state.historyPolicyList))
+    },
+    setEntFollowSearch (state, list) {
+      state.entList = list
+    },
+    // 企业情报-我关注的项目
+    setEntFollowList (state, obj) {
+      state.entObject = obj
     }
   },
   actions: {},

+ 0 - 3
src/views/bid-forecast/BidForecast.vue

@@ -26,9 +26,6 @@ export default {
       forcast: state => state.forcast.list,
       type: state => state.forcast.type
     })
-  },
-  created () {
-    // console.log(this.list)
   }
 }
 </script>

+ 6 - 5
src/views/ent-intel/EntIntel.vue

@@ -6,7 +6,7 @@
       <img class="bidfor_img" src="@/assets/images/item_2.png" alt="" slot="bidImg">
       <!-- <ForeCast type="entintelRes" title="近似企业" slot="main"></ForeCast> -->
       <template v-slot:main>
-        <ForeCast type="entintel" title="我关注的企业" slot="main" :mydata="forcast"></ForeCast>
+        <ForeCast type="entintel" title="我关注的企业" slot="main" :myDataObj="forcast"></ForeCast>
       </template>
     </forLayOut>
   </div>
@@ -22,10 +22,11 @@ export default {
     ForeCast,
     forLayOut
   },
-  ...mapState({
-    forcast: state => state.forcast.policyList,
-    type: state => state.forcast.type
-  })
+  computed: {
+    ...mapState({
+      forcast: state => state.forcast.entObject
+    })
+  }
 }
 </script>
 

+ 9 - 2
src/views/portrayal/EntPortrayal.vue

@@ -6,7 +6,10 @@
     </div>
     <div class="ent-content">
       <el-tabs v-model="activeName" @tab-click="handleClick">
-        <el-tab-pane label="企业信息" name="1">用户管理</el-tab-pane>
+        <el-tab-pane label="企业信息" name="1">
+          <EntForm></EntForm>
+          <EntHistoryForm></EntHistoryForm>
+        </el-tab-pane>
         <el-tab-pane label="中标信息" name="2">
           <ent-chart :active="activeName" v-on:entInfo="getEntInfo"></ent-chart>
         </el-tab-pane>
@@ -16,13 +19,17 @@
 </template>
 <script>
 import EntChart from './components/EntChart'
+import EntForm from './components/EntForm'
+import EntHistoryForm from './components/EntHistoryForm'
 import { Tabs, TabPane } from 'element-ui'
 export default {
   name: 'ent-portrayal',
   components: {
     [Tabs.name]: Tabs,
     [TabPane.name]: TabPane,
-    EntChart
+    EntChart,
+    EntForm,
+    EntHistoryForm
   },
   data () {
     return {

+ 151 - 0
src/views/portrayal/components/EntForm.vue

@@ -0,0 +1,151 @@
+<template>
+  <div class="entform">
+    <ul class="ent_ul">
+      <li class="ent_list" v-for="(item, index) in content" :key="index" :class="item.long?'li_long':''">
+        <div class="ent_li_label">{{item.label}}</div>
+        <div class="ent_li_main">{{item.main}}</div>
+      </li>
+    </ul>
+  </div>
+</template>
+
+<script>
+import { getEntForm } from '@/api/modules'
+import { dateFormatter } from '@/utils'
+export default {
+  name: 'entform',
+  components: {
+  },
+  data () {
+    return {
+      // content: ['法定代表人', '经营状态', '统一社会信用代码', '成立日期', '组织机构代码', '注册资本', '纳税人识别号', '营业期限', '工商注册号', '公司类型', '人员规模', '联系方式', '注册地址', '经营范围']
+      content: []
+    }
+  },
+  created () {
+    this.getDetail()
+  },
+  methods: {
+    getDetail () {
+      getEntForm({ entId: 'ABCZnEFZCkoLys6GXt6cHISMTA%2FDjdjAWByPB4WPy43YGlwcg47NF8oOHdmCXEEDlxTDFU%3D' }).then(res => {
+        console.log(res)
+        const data = res.data
+        data.operStart = dateFormatter(data.operStart, 'yyyy-MM-dd')
+        data.operEnd = dateFormatter(data.operStart, 'yyyy-MM-dd')
+        this.content = [
+          {
+            label: '法定代表人',
+            main: data.legal
+          },
+          {
+            label: '经营状态',
+            main: data.status
+          },
+          {
+            label: '统一社会信用代码',
+            main: data.creditNo
+          },
+          {
+            label: '成立日期',
+            main: data.establish
+          },
+          {
+            label: '组织机构代码',
+            main: data.org_code
+          },
+          {
+            label: '注册资本',
+            main: data.capital
+          },
+          {
+            label: '纳税人识别号',
+            main: data.taxCode
+          },
+          {
+            label: '营业期限',
+            main: data.operStart + ' ' + '至' + ' ' + data.operEnd
+          },
+          {
+            label: '工商注册号',
+            main: data.company_code
+          },
+          {
+            label: '公司类型',
+            main: data.type
+          },
+          {
+            label: '人员规模',
+            main: data.employeeNo
+          },
+          {
+            label: '联系方式',
+            main: data.phone // 这个没有字段
+          },
+          {
+            label: '注册地址',
+            main: data.address,
+            long: 'islong'
+          },
+          {
+            label: '经营范围',
+            main: data.scope,
+            long: 'islong'
+          }
+        ]
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.entform{
+  margin-top: 32px;
+  width: 840px;
+  .ent_ul{
+    display: flex;
+    flex-wrap: wrap;
+    width: 100%;
+    border-top: 1px solid #ececec;
+    .ent_list{
+      display: flex;
+      min-height: 48px;
+      border-left: 1px solid #ececec;
+      border-bottom: 1px solid #ececec;
+      .ent_li_label{
+        padding: 12px 0 0 16px;
+        width: 144px;
+        height: 100%;
+        background: #F9FAFB;
+        font-size: 14px;
+        font-family: Microsoft YaHei, Microsoft YaHei-Regular;
+        font-weight: 400;
+        text-align: LEFT;
+        color: #686868;
+        line-height: 24px;
+        border-right: 1px solid #ececec;
+      }
+      .ent_li_main{
+        padding: 12px 16px;
+        width: 274.5px;
+        display: flex;
+        align-items: center;
+        flex: 1;
+        font-size: 14px;
+        font-weight: 400;
+        color: #1d1d1d;
+        line-height: 24px;
+      }
+    }
+    .ent_list:nth-of-type(even) {
+      border-right: 1px solid #ececec;
+    }
+    .ent_list:nth-child(13) {
+      border-right: 1px solid #ececec;
+    }
+    .li_long{
+      width: 100%;
+    }
+  }
+}
+</style>

+ 171 - 0
src/views/portrayal/components/EntHistoryForm.vue

@@ -0,0 +1,171 @@
+<template>
+  <div class="enthistoryform">
+    <div class="ent_his_head">
+      <span class="ent_his_title">企业情报历史记录</span>
+      <span class="data_length">{{contents.length}}</span>
+    </div>
+    <div class="ent_his_main">
+      <ul class="ent_main_head">
+        <li class="ent_main_list" v-for="(item, index) in titleList" :key="index">{{item}}</li>
+      </ul>
+      <table class="ent_his_ul">
+        <tr class="ent_his_list" v-for="(item, index) in contents" :key="index" :class="item.long?'li_long':''">
+          <td class="ent_his_index inset_list">{{index+1}}</td>
+          <td class="ent_his_time inset_list">{{item.times[0]}}</td>
+          <td class="pro_content">
+            <tr class="pro_con_item" v-for="(data, i) in item.timeData" :key="i">
+              <div class="exe_list">{{data.change_name_new}}</div>
+              <div class="exe_list">{{data.content_before}}</div>
+              <div class="exe_list">{{data.content_after}}</div>
+            </tr>
+          </td>
+        </tr>
+      </table>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getEntChangeList } from '@/api/modules'
+export default {
+  name: 'enthistoryform',
+  components: {
+  },
+  data () {
+    return {
+      titleList: ['序号', '变更日期', '变更项目', '变更前', '变更后'],
+      contents: []
+    }
+  },
+  created () {
+    this.getDetail()
+  },
+  methods: {
+    getDetail () {
+      const that = this
+      getEntChangeList({ entId: 'ABCZnEFZCkoLys6GXt6cHISMTA%2FDjdjAWByPB4WPy43YGlwcg47NF8oOHdmCXEEDlxTDFU%3D' }).then(res => {
+        console.log(Object.keys(res.data[0]))
+        res.data.forEach(function (item, index) {
+          let dataArr = {}
+          console.log(item[Object.keys(item)])
+          dataArr = {
+            times: Object.keys(item),
+            timeData: item[Object.keys(item)]
+          }
+          that.contents.push(dataArr)
+        })
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.enthistoryform{
+  margin-top: 66px;
+  width: 840px;
+  .ent_his_head{
+    height: 28px;
+    font-size: 18px;
+    font-family: Microsoft YaHei, Microsoft YaHei-Regular;
+    font-weight: 400;
+    text-align: LEFT;
+    color: #171826;
+    line-height: 28px;
+    .data_length{
+      margin-left: 4px;
+      color: #2CB7CA;
+    }
+  }
+  .ent_his_main{
+    margin-top: 16px;
+    width: 100%;
+    .ent_main_head{
+      display: flex;
+      .ent_main_list{
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        height: 48px;
+        background: #F9FAFB;
+        font-size: 14px;
+        font-family: Microsoft YaHei, Microsoft YaHei-Regular;
+        font-weight: 400;
+        color: #686868;
+        border: 1px solid #ececec;
+        border-right: 0;
+      }
+      .ent_main_list:nth-child(1){
+        width: 60px;
+      }
+      .ent_main_list:nth-child(2){
+        width: 110px;
+      }
+      .ent_main_list:nth-child(3){
+        width: 170px;
+      }
+      .ent_main_list:nth-child(4){
+        width: 250px;
+      }
+      .ent_main_list:nth-child(5){
+        width: 250px;
+        border-right: 1px solid #ececec;
+      }
+    }
+  }
+  .ent_his_ul{
+    display: flex;
+    flex-direction: column;
+    .ent_his_list{
+      display: flex;
+      width: 100%;
+      min-height: 48px;
+      font-size: 14px;
+      font-family: Microsoft YaHei, Microsoft YaHei-Regular;
+      font-weight: 400;
+      text-align: CENTER;
+      color: #1d1d1d;
+      line-height: 24px;
+      .inset_list{
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        border-left: 1px solid #ececec;
+        border-bottom: 1px solid #ececec;
+      }
+      .ent_his_index{
+        width: 60px;
+      }
+      .ent_his_time{
+        width: 110px;
+      }
+      .pro_content{
+        flex: 1;
+        display: flex;
+        flex-direction: column;
+        justify-content: flex-start;
+        .pro_con_item{
+          display: flex;
+          .exe_list{
+            padding: 12px 16px 0;
+            display: flex;
+            flex-direction: column;
+            width: 250px;
+            min-height: 48px;
+            border-left: 1px solid #ececec;
+            border-bottom: 1px solid #ececec;
+          }
+          .exe_list:nth-child(1){
+            width: 170px;
+            justify-content: center;
+            align-items: center;
+          }
+          .exe_list:nth-child(3){
+            border-right: 1px solid #ececec;
+          }
+        }
+      }
+    }
+  }
+}
+</style>