企业库接口对接、企业库的联络人列表、项目清单、备忘录

prod
吕天方 8 months ago
parent 07608cbd32
commit a778fcfb81

@ -1,6 +1,6 @@
{
"name": "ruoyi",
"version": "1.0.202405281028",
"version": "1.0.202405281704",
"description": "金鸡湖现代服务业品牌管理系统",
"author": "若依",
"license": "MIT",

@ -42,4 +42,13 @@ export function enterpriseBasicInfoDel(params) {
method: "delete",
params
})
}
}
// 分页查询联络人列表
export function getjContacts(params) {
return request({
url: "/jjh/jContacts",
method: "get",
params
})
}

@ -298,6 +298,7 @@
}
//
.L-unitInfo {
height: 100%;
.a-primary {
text-decoration: underline;
margin-left: 0;
@ -306,6 +307,16 @@
}
}
}
.enter-tabs {
height: calc(70% - 5px);
}
.enter-footTabs {
text-align: center;
display: flex;
align-items: center;
justify-content: center;
padding-top: 10px;
}
//
.projectInfo-memo {
width: 100%;
@ -441,6 +452,7 @@
}
//
.money-schedule {
height: 100%;
.schedule-title {
font-family: PingFang-SC, PingFang-SC;
font-weight: bold;
@ -448,7 +460,7 @@
color: #333333;
}
.schedule-timeline {
margin-top: 48px;
margin-top: 28px;
.el-timeline-item__tail {
border: 1px dashed #dfe4ed;
}
@ -739,6 +751,10 @@
height: 0;
}
.tabTwo-table::before {
height: 1px;
}
//
.newArticle {
.el-date-editor {
@ -944,4 +960,12 @@
}
}
}
}
// ==
#L-pagination-list {
margin-top: 15px;
.btn-prev,.btn-next {
padding: 0px 15px;
}
}

@ -16,7 +16,7 @@
<!-- <i class="icon iconfont icon-jc-55fanhui" @click="back" v-show="$route.meta.title == '项目详情'"></i> -->
<el-button
type="primary"
v-show="$route.meta.title == '项目详情' || $route.meta.title == '企业详情'"
v-show="$route.meta.title == '项目详情'"
icon="icon iconfont icon-jc-55fanhui"
size="mini"
@click="back"

@ -132,7 +132,7 @@ export const constantRoutes = [
},
{
path: 'enterInfo',
component: () => import('@/views/enterpriselibrary/projectInfo/index'),
component: () => import('@/views/enterpriselibrary/enterInfo/index'),
name: 'enterInfo',
meta: { title: '企业详情', icon: 'user' }
},

@ -127,6 +127,7 @@ export default {
formInline:{
startTime:"",
endTime:"",
type: "1",
name:"",
projectId:undefined,
},
@ -137,6 +138,7 @@ export default {
createTime: "",
keywords: "",
content: "",
type: "1",
projectId:undefined,
},
memoList:[],
@ -163,6 +165,7 @@ export default {
startTime:"",
endTime:"",
name:"",
type: "1",
projectId:this.id,
}
this.memoTime = [];
@ -182,6 +185,7 @@ export default {
createTime: "",
keywords: "",
content: "",
type: "1",
projectId:undefined,
}
this.$refs.newMemoRef.open();

@ -0,0 +1,100 @@
<template>
<div class="project-info-box">
<div class="project-info-title">企业基本信息</div>
<el-descriptions class="margin-top" :column="3" size="medium" border v-loading="loading">
<!-- <el-descriptions-item labelClassName="tabOneLabel" contentClassName="tabOneContent"
v-for="(item,index) in info"
:key="index"
:label="item.key"
:span="item.span"
>
{{ item.value }}
</el-descriptions-item> -->
<el-descriptions-item labelClassName="tabOneLabel" contentClassName="tabOneContent" label="注册资本">
{{ info.registeredCapital }}
</el-descriptions-item>
<el-descriptions-item labelClassName="tabOneLabel" contentClassName="tabOneContent" label="所属行业">
{{ info.industry }}
</el-descriptions-item>
<el-descriptions-item labelClassName="tabOneLabel" contentClassName="tabOneContent" label="成立日期">
{{ info.establishDate }}
</el-descriptions-item>
<el-descriptions-item labelClassName="tabOneLabel" contentClassName="tabOneContent" label="曾用名">
{{ info.formerName }}
</el-descriptions-item>
<el-descriptions-item labelClassName="tabOneLabel" contentClassName="tabOneContent" label="组织机构代码">
{{ info.institutionCode }}
</el-descriptions-item>
<el-descriptions-item labelClassName="tabOneLabel" contentClassName="tabOneContent" label="注册地址">
{{ info.enrollAddress }}
</el-descriptions-item>
<el-descriptions-item labelClassName="tabOneLabel" contentClassName="tabOneContent" label="注册类型">
{{ info.enrollType }}
</el-descriptions-item>
<el-descriptions-item labelClassName="tabOneLabel" contentClassName="tabOneContent" label="经营范围">
{{ info.business }}
</el-descriptions-item>
</el-descriptions>
<!-- <el-descriptions class="margin-top-file" :column="3" size="medium" v-loading="loading">
<el-descriptions-item labelClassName="tabOneFileLabel" contentClassName="tabOneFileContent"
v-for="(item,index) in fileInfo"
:key="index"
:label="item.key"
>
<a :href="item.url" target="_blank">
{{ item.value }}
</a>
</el-descriptions-item>
</el-descriptions> -->
</div>
</template>
<script>
export default {
name:"tabOne",
props:{
detailedInfo:{
type:Object,
default:()=>{
return {};
}
},
fileJson:{
type:Object,
default:()=>{
return {};
}
}
},
watch: {
detailedInfo: {
handler(newInfo){
this.loading = true;
if(newInfo) {
this.loading = false;
this.$nextTick(()=>{
this.info = newInfo
})
}
},
immediate:true,
deep:true
},
},
data() {
return {
info:[],
fileInfo:[],
loading:false,
VUE_APP_BASE_API:process.env.VUE_APP_BASE_API,
}
},
mounted() {
// console.log(this.info,"tabOne");
// this.loading = true;
},
methods:{
},
}
</script>

@ -0,0 +1,101 @@
<template>
<div class="money-schedule" id="L-contacts-main">
<div class="schedule-title" id="L-header-list">项目清单</div>
<div class="schedule-timeline">
<section>
<el-table v-loading="loading" border class="tabTwo-table" :data="tableData" :row-class-name="tableRowClassName" :height="tabHeader" :max-height="tabHeader">
<el-table-column type="index" width="55" label="序号"/>
<el-table-column label="项目名称" prop="projectName" />
<el-table-column label="操作" prop="userId" class-name="table-operation">
<template slot-scope="scope">
<span class="look-info" @click="goInfo(scope.row)"></span>
</template>
</el-table-column>
</el-table>
<my-pagination
id="L-pagination-list"
:total="total"
:page="pagination.current"
:limit="pagination.size"
@pagination="getPagination"
:current-page.sync="pagination.current"
></my-pagination>
</section>
</div>
</div>
</template>
<script>
import myPagination from "@/views/components/Pagination/index.vue"
import { jProject } from "@/api/jin_ji_hu/project/index"
export default {
components:{myPagination},
name:"tabThree",
props:{
creditCode:{
type:String,
default:""
}
},
data() {
return {
loading: false,
tableData: [],
tabHeader: null,
total:0,
pagination: {
current:1,
size:10,
creditCode: this.creditCode,
},
}
},
mounted() {
this.cancalDebounce();
window.addEventListener('resize', this.cancalDebounce);
this.getList()
},
destroyed() {
window.removeEventListener('resize', this.cancalDebounce);
},
methods:{
//
getList(){
this.loading = true;
jProject(this.pagination).then(res=>{
this.loading = false;
this.total = res.data.total;
this.tableData = res.data.records;
})
},
//
getPagination(pages) {
this.pagination.current = pages.page;
this.pagination.size = pages.limit;
this.getList();
},
goInfo(row){
this.$router.push({
name: 'Project',
params: { projectName: row.projectName }
})
},
// table
tableRowClassName({row, rowIndex}){
if (rowIndex % 2 !== 0) {
return 'evenNumber-row';
}
return '';
},
//
cancalDebounce(){
const element = document.getElementById('L-contacts-main'); // ID
const header = document.getElementById('L-header-list'); // ID
const pagination = document.getElementById('L-pagination-list'); // ID
const elementHeight = element.offsetHeight;
const headerHeight = header.offsetHeight;
const paginationHeight = pagination.offsetHeight;
this.tabHeader = elementHeight - headerHeight - paginationHeight - 100;
}
},
}
</script>

@ -0,0 +1,65 @@
<template>
<div class="L-unitInfo" id="L-contacts-main">
<div id="L-header-list" class="project-info-title">联络人列表</div>
<section>
<el-table v-loading="loading" class="tabTwo-table" border :data="tableData" :row-class-name="tableRowClassName" :max-height="tabHeader">
<el-table-column label="联系人姓名" prop="contactName" />
<el-table-column label="公司职务" prop="firmOffice" />
<el-table-column label="手机号码" prop="phone" />
<el-table-column label="邮箱" prop="email" />
</el-table>
</section>
</div>
</template>
<script>
import { getjContacts } from "@/api/jin_ji_hu/enterList"
export default {
name:"tabTwo",
data() {
return {
tableData:[],
loading:false,
tabHeader: null,
}
},
props:{
creditCode:{
type:String,
default:""
}
},
mounted() {
this.cancalDebounce();
window.addEventListener('resize', this.cancalDebounce);
this.getList()
},
destroyed() {
window.removeEventListener('resize', this.cancalDebounce);
},
methods:{
// table
tableRowClassName({row, rowIndex}){
if (rowIndex % 2 !== 0) {
return 'evenNumber-row';
}
return '';
},
//
getList(){
this.loading = true;
getjContacts({creditCode: this.creditCode}).then(res=>{
this.tableData = res.data
this.loading = false;
})
},
//
cancalDebounce(){
const element = document.getElementById('L-contacts-main'); // ID
const header = document.getElementById('L-header-list'); // ID
const elementHeight = element.offsetHeight;
const headerHeight = header.offsetHeight;
this.tabHeader = elementHeight - headerHeight - 100;
}
},
}
</script>

@ -5,30 +5,34 @@
<div class="left-info" id="L-header">
<div class="project-info-title">企业信息</div>
<el-descriptions class="margin-top" :column="2" size="medium" border v-loading="loading">
<el-descriptions-item label="企业名称">{{ info.projectName }}</el-descriptions-item>
<el-descriptions-item label="法定代表人" contentClassName="info-link"><a class="a-primary" @click="goback(info.projectClassify)"><dict-tag :options="dict.type.jjh_project_type" :value="info.projectClassify"/></a></el-descriptions-item>
<el-descriptions-item label="统一社会信用代码" contentClassName="info-link">{{ info.declareUnit }}<a v-show="info.declareUnit"></a></el-descriptions-item>
<el-descriptions-item label="企业类型">{{ info.projectYear }}</el-descriptions-item>
<el-descriptions-item label="企业名称">{{ info.enterpriseName }}</el-descriptions-item>
<el-descriptions-item label="法定代表人" contentClassName="info-link">{{ info.legalEntity }}</el-descriptions-item>
<el-descriptions-item label="统一社会信用代码" contentClassName="info-link">{{ info.creditCode }}</el-descriptions-item>
<el-descriptions-item label="企业类型">{{ info.enterpriseType }}</el-descriptions-item>
</el-descriptions>
</div>
<div class="left-tabs">
<div class="left-tabs enter-tabs">
<div class="tabs-top" id="L-pagination">
<div v-for="(item,index) in tabs" :key="index" class="tabs-top-item" :class="active == index ? 'active-item' : ''" @click="active = index">{{ item.name }}</div>
</div>
<div class="tabs-bottom" :style="tabStyle">
<tab-one v-if="active == 0" :detailedInfo="detailedInfo" :fileJson="fileJson"></tab-one>
<tab-two v-if="active == 1" :info="info"></tab-two>
<tab-three v-if="active == 2"></tab-three>
<tab-one v-if="active == 0"></tab-one>
<tab-two v-if="active == 1" :creditCode="$route.query.creditCode"></tab-two>
<tab-three v-if="active == 2" :creditCode="$route.query.creditCode"></tab-three>
<tab-four v-if="active == 3" :id="$route.query.userId"></tab-four>
</div>
</div>
<div class="enter-footTabs">
<el-button type="primary" @click="goBack"></el-button>
<el-button type="primary">导出企业清单</el-button>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import { tabOne, tabTwo, tabThree, tabFour, projectProgress } from "./components"
import { jProjectId } from "@/api/jin_ji_hu/project/index"
import { enterpriseBasicInfoId } from "@/api/jin_ji_hu/enterList"
export default {
dicts: ['jjh_project_type','jjh_status'],
components:{
@ -72,11 +76,11 @@ export default {
methods:{
getInfo(id){
this.loading = true;
jProjectId(id).then(res=>{
enterpriseBasicInfoId(id).then(res=>{
this.info = res.data;
this.loading = false;
this.detailedInfo = JSON.parse(res.data.otherJson);
this.fileJson = JSON.parse(res.data.fileJson);
// this.detailedInfo = JSON.parse(res.data.otherJson);
// this.fileJson = JSON.parse(res.data.fileJson);
// for (var key in obj) {
// if (obj.hasOwnProperty(key)) {
// var value = obj[key];
@ -85,16 +89,8 @@ export default {
// }
})
},
goback(id){
// console.log(id,"id");
// this.$router.replace({
// path: '/project/index',
// query: { projectId: id }
// })
this.$router.push({
name: 'ProjectList',
params: { projectId: id }
})
goBack(){
this.$router.back();
},
//
cancalDebounce(){

@ -243,10 +243,10 @@ export default {
return '';
},
//
goInfo(rwo){
goInfo(row){
this.$router.push({
name: 'enterInfo',
query: { userId: rwo.id }
query: { userId: row.id, creditCode: row.creditCode }
})
},
//

@ -1,175 +0,0 @@
<template>
<div class="project-info-box">
<div class="project-info-title">项目详细信息</div>
<el-descriptions class="margin-top" :column="3" size="medium" border v-loading="loading">
<el-descriptions-item labelClassName="tabOneLabel" contentClassName="tabOneContent"
v-for="(item,index) in info"
:key="index"
:label="item.key"
:span="item.span"
>
{{ item.value }}
</el-descriptions-item>
</el-descriptions>
<!-- <el-descriptions class="margin-top-file" :column="3" size="medium" v-loading="loading">
<el-descriptions-item labelClassName="tabOneFileLabel" contentClassName="tabOneFileContent"
v-for="(item,index) in fileInfo"
:key="index"
:label="item.key"
>
<a :href="item.url" target="_blank">
{{ item.value }}
</a>
</el-descriptions-item>
</el-descriptions> -->
<div class="project-info-title" style="margin-top: 20px;">上传材料</div>
<el-row v-for="(item,index) in fileInfo" :key="index" style="margin-top: 20px;">
<el-col :span="3">
<span>{{ item.key }}</span>
</el-col>
<el-col :span="21" class="file-info-content">
<span class="file-link" v-for="(itemTwo,indexTwo) in item.url" :key="indexTwo + 'a' + index" style="border: 1px solid #dcdfe6;padding: 5px;display: flex; align-items: center; width: 45%; margin-right: 10px;">
<img src="@/assets/images/uploadBgc.jpg" class="li_img" alt="" style="width: 20px; margin-right: 10px;">
<a :href="VUE_APP_BASE_API + itemTwo.url" target="_blank">{{ itemTwo.value }}</a>
</span>
</el-col>
</el-row>
</el-row>
</div>
</template>
<script>
export default {
name:"tabOne",
props:{
detailedInfo:{
type:Object,
default:()=>{
return {};
}
},
fileJson:{
type:Object,
default:()=>{
return {};
}
}
},
watch: {
detailedInfo: {
handler(newInfo){
this.loading = true;
if(newInfo) {
this.loading = false;
let arr = []
for (var key in newInfo) {
if (newInfo.hasOwnProperty(key)) {
let obj = {};
obj["key"] = key;
if(key == "是否获得园区其他经营奖励") {
obj["value"] = newInfo[key] == 0 ? '是' : newInfo[key] == 1 ? '否':'';
} else if(key == "申报类型") {
obj["value"] = newInfo[key] == 1 ? '两业融合示范企业' : newInfo[key] == 2 ? '制造业企业设立财务独立核算的制造服务业职能部门' : newInfo[key] == 3 ? "制造业企业剥离服务业务成立独立的法人制造业企业剥离服务业务成立独立的法人" : "";
} else if(key == "所属类型"){
obj["value"] = newInfo[key] == 0 ? '市场服务类' : newInfo[key] == 1 ? '公共服务类' : "";
} else {
obj["value"] = newInfo[key] ? newInfo[key] : '暂无'
}
obj["span"] = 1;
arr.push(obj)
}
}
arr = arr.filter(element => element.key !== "" && element.key !== "序号");
for (var i = 0; i < arr.length; i++) {
// if(!arr[i].key) {
// delete arr[i];
// continue;
// }
//
if(arr[i].value) {
if((i + 1) % 3 == 1 && arr[i].value.length > 50 && arr[i - 1]?.span == 2) {
arr[i - 1].span = 3
arr[i].span = 3
} else if((i + 1) % 3 == 1 && arr[i].value.length > 18 && arr[i].value.length < 50 && arr[i - 1]?.span == 2) {
arr[i - 1].span = 3
arr[i].span = 2
} else if((i + 1) % 3 == 1 && arr[i].value.length > 18 && arr[i].value.length < 50) {
arr[i].span = 2
} else if((i + 1) % 3 == 2 && arr[i].value.length > 50) {
arr[i - 1].span = 3
arr[i].span = 3
} else if((i + 1) % 3 == 2 && arr[i].value.length > 18 && arr[i].value.length < 50 && arr[i - 1]?.span == 2) {
arr[i - 1].span = 3
arr[i].span = 2
} else if((i + 1) % 3 == 2 && arr[i].value.length > 18 && arr[i].value.length < 50) {
arr[i].span = 2
} else if((i + 1) % 3 == 0 && arr[i].value.length > 18 && arr[i].value.length < 50 && arr[i - 1]?.span == 1) {
arr[i - 1].span = 2
arr[i].span = 2
} else if((i + 1) % 3 == 0 && arr[i].value.length > 50 && arr[i - 1].span == 1) {
arr[i - 1].span = 2
arr[i].span = 3
} else if((i + 1) % 3 == 0 && arr[i].value.length > 18 && arr[i].value.length < 50 && arr[i - 1]?.span == 2) {
arr[i].span = 2
} else if((i + 1) % 3 == 0 && arr[i].value.length > 50) {
arr[i].span = 3
}
}
}
this.$nextTick(()=>{
this.info = [...arr]
})
}
},
immediate:true,
deep:true
},
fileJson: {
handler(newFile){
if(newFile) {
let arr = []
for (var key in newFile) {
if (newFile.hasOwnProperty(key)) {
let url = newFile[key] ? newFile[key].split("/") : null;
let obj = {};
obj["key"] = key;
if(newFile[key]) {
let url = newFile[key].split(',')
obj["url"] = []
url.forEach(element => {
let urlSplit = element.split("/");
let objec = {}
objec.url = element;
objec.value = urlSplit[urlSplit.length - 1];
obj["url"].push(objec);
});
}
// obj["value"] = url ? url[url.length - 1] : '';
arr.push(obj)
}
}
this.fileInfo = arr;
}
},
deep:true,
immediate:true
}
},
data() {
return {
info:[],
fileInfo:[],
loading:false,
VUE_APP_BASE_API:process.env.VUE_APP_BASE_API,
}
},
mounted() {
// console.log(this.info,"tabOne");
// this.loading = true;
},
methods:{
},
}
</script>

@ -1,50 +0,0 @@
<template>
<div class="money-schedule">
<div class="schedule-title">资金拨付进度</div>
<div class="schedule-timeline">
<el-timeline>
<el-timeline-item
v-for="(activity, index) in activities"
:key="index"
:icon="activity.icon"
:type="activity.type"
:size="activity.size"
>
<el-card> <!-- 去除阴影 shadow="never -->
<div class="schedule-content">
<div class="schedule-card-title">xxxx年xx月xx日 政府财务审核通过</div>
<div class="schedule-status" :class="activity.status == 0 ? 'orange' : activity.status == 1 ? 'green' : activity.status == 2 ? 'blue' : ''">
{{ activity.status == 0 ? '已提交' : activity.status == 1 ? '审核通过' : activity.status == 2 ? '已拨付' : '' }}
</div>
</div>
<div class="schedule-time">2023-05-11</div>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
</div>
</template>
<script>
export default {
name:"tabThree",
data() {
return {
activities: [{
size: 'large',
icon: 'icon iconfont icon-jc-kong-yuan',
status: 2,
}, {
icon: 'icon iconfont icon-jc-kong-yuan',
size: 'large',
status: 1,
}, {
size: 'large',
icon: 'icon iconfont icon-jc-kong-yuan',
status: 0,
}]
}
},
methods:{
},
}
</script>

@ -1,40 +0,0 @@
<template>
<div class="L-unitInfo">
<div class="project-info-title">申报单位信息</div>
<el-descriptions class="margin-top" :column="3" size="medium" border>
<el-descriptions-item label="申报类型">投资补助</el-descriptions-item>
<el-descriptions-item label="申报企业名称"><a class="a-primary" v-show="info.declareUnit">{{ info.declareUnit }}</a></el-descriptions-item>
<el-descriptions-item label="企业性质">内资民营</el-descriptions-item>
<el-descriptions-item label="统一社会信用代码">QRDVCDS1321412FDSFDS</el-descriptions-item>
<el-descriptions-item label="邮编">215513</el-descriptions-item>
<el-descriptions-item label="电话">0512-6782727</el-descriptions-item>
<el-descriptions-item label="企业注册地">江苏-苏州-工业园区</el-descriptions-item>
<el-descriptions-item label="企业资本" :span="2">4000万元</el-descriptions-item>
<el-descriptions-item label="企业责任人(法人代表)姓名">张珊</el-descriptions-item>
<el-descriptions-item label="项目联系人 姓名">万林</el-descriptions-item>
<el-descriptions-item label="项目联系人 姓名">赵文</el-descriptions-item>
<el-descriptions-item label="电话">18012345432</el-descriptions-item>
<el-descriptions-item label="电话">18023494876</el-descriptions-item>
<el-descriptions-item label="电话">18743870987</el-descriptions-item>
</el-descriptions>
</div>
</template>
<script>
export default {
name:"tabTwo",
data() {
return {
}
},
props:{
info:{
type:Object,
default:()=>{
return {}
}
}
},
methods:{
},
}
</script>

@ -291,6 +291,10 @@ export default {
this.formInline.projectClassify = this.$route.params.projectId + '';
this.pagination = { ...this.pagination,...this.formInline };
}
if(this.$route.params.projectName) {
this.formInline.projectName = this.$route.params.projectName;
this.pagination = { ...this.pagination,...this.formInline };
}
this.cancalDebounce();
window.addEventListener('resize', this.cancalDebounce);

@ -128,6 +128,7 @@ export default {
startTime:"",
endTime:"",
name:"",
type: "2",
projectId:undefined,
},
memoTime:[],
@ -137,6 +138,7 @@ export default {
createTime: "",
keywords: "",
content: "",
type: "2",
projectId:undefined,
},
memoList:[],
@ -163,6 +165,7 @@ export default {
startTime:"",
endTime:"",
name:"",
type: "2",
projectId:this.id,
}
this.memoTime = [];
@ -182,6 +185,7 @@ export default {
createTime: "",
keywords: "",
content: "",
type: "2",
projectId:undefined,
}
this.$refs.newMemoRef.open();

@ -34,7 +34,6 @@
</span>
</el-col>
</el-row>
</el-row>
</div>
</template>
<script>

@ -96,7 +96,7 @@ export default {
// query: { projectId: id }
// })
this.$router.push({
name: 'ProjectList',
name: 'Project',
params: { projectId: id }
})
},

Loading…
Cancel
Save