<template>
|
<view class="content">
|
<u-sticky>
|
<view class="nav">
|
<u-navbar bgColor="#ffffff00" autoBack>
|
<view class="" slot="left">
|
<image src="../../static/topbar_back_white@2x.png" mode="" class="img44"></image>
|
</view>
|
<view class="white b f32" slot="center">
|
企业报名详情
|
</view>
|
</u-navbar>
|
<view class="" :style="{ paddingTop: statusbarHeight + navHeight + 30 + 'px'}">
|
<view class="company-message ml30 mr30 bg_w rd8 bbox p30">
|
<view class="company-name b f36 mb15 c2">{{declares.companyName}}</view>
|
<view class="message-item">
|
<view class="flex mb20">
|
<view class="c6 mr20">项目名称</view>
|
<view class="fx1 c3">{{declares.projectName}}</view>
|
</view>
|
<view class="flex">
|
<view class="mr20 c6">服务机构</view>
|
<view class="fx1 c3">{{ declares.serviceName || '-' }}</view>
|
</view>
|
</view>
|
</view>
|
</view>
|
</view>
|
<view class="bg_m ptb10">
|
<u-tabs :list="message" :is-scroll="false" :activeStyle="{ transform: 'scale(1.05)', color: '#222'}"
|
itemStyle="width: 145rpx; line-height:40rpx; font-size: 20rpx; height: 88rpx" @change="changeIndex"
|
lineColor="#216EEE">
|
</u-tabs>
|
</view>
|
</u-sticky>
|
<view class="ml30 mr30 message" v-if="countIndex === 0">
|
<view class="bg_w p30 rd8">
|
<view class="flex mb30">
|
<view class="c6 title">信用代码</view>
|
<view class="fx1 c3">{{ company.creditCode }}</view>
|
</view>
|
<view class="flex mb30">
|
<view class="c6 title">所属行业</view>
|
<view class="fx1 c3">{{ company.industryName }}</view>
|
</view>
|
<view class="flex mb30">
|
<view class="c6 title">企业性质</view>
|
<view class="fx1 c3">{{ company.natureName }}</view>
|
</view>
|
<view class="flex mb30">
|
<view class="c6 title">企业规模</view>
|
<view class="fx1 c3">{{ company.labelName }}</view>
|
</view>
|
<view class="flex mb30">
|
<view class="c6 title">单位地址</view>
|
<view class="fx1 c3">{{ company.address }}</view>
|
</view>
|
<view class="flex mb30">
|
<view class="c6 title">法定代表人</view>
|
<view class="fx1 c3">{{ company.legalPerson }}</view>
|
</view>
|
<view class="flex mb30">
|
<view class="c6 title">手机/电话</view>
|
<view class="fx1 c3">{{ company.legalPersonPhone }}</view>
|
</view>
|
<view class="flex mb30">
|
<view class="c6 title">联系人</view>
|
<view class="fx1 c3">{{ company.linkName }}</view>
|
</view>
|
<view class="flex mb30">
|
<view class="c6 title">联系电话</view>
|
<view class="fx1 c3">{{ company.linkPhone }}</view>
|
</view>
|
<view class="flex mb30">
|
<view class="c6 title">营业执照</view>
|
<view class="fx1 c3">
|
<image v-if="company.businessList&&company.businessList.length" @click="showImage(0, [company.businessList[0].fileurlfull])"
|
:src="company.businessList[0].fileurlfull" class="businessImg" mode=""></image>
|
</view>
|
</view>
|
<view class="flex mb30">
|
<view class="c6 title">主营产品</view>
|
<view class="fx1 c3">{{ company.product }}</view>
|
</view>
|
<view class="flex mb30">
|
<view class="c6 title">企业简介</view>
|
<view class="fx1 c3">
|
<u-read-more textIndent="0" :toggle="true" :showHeight="80" :shadowStyle="shadowStyle"
|
color="#216EEE" closeText="展开">
|
{{ company.content }}
|
</u-read-more>
|
</view>
|
</view>
|
</view>
|
<view class="bg_w p30 mt20 rd8">
|
<view class="c2 b f32 mb30">近3年财务信息</view>
|
<view class="flex">
|
|
</view>
|
<view class="rd8 fY table">
|
<view v-for="(title, index) in titles" :key="index" class="flex" :class="index===0&&'table-header'">
|
<view class="table-item">
|
<view class="">{{title.name}}</view>
|
<view class="">{{title.subName}}</view>
|
</view>
|
<template v-if="company.list&&company.list.length">
|
<view v-for="i in 3" class="table-item">{{ company.list[i][title.key] || '0' }}</view>
|
</template>
|
</view>
|
</view>
|
</view>
|
</view>
|
<view class="ml30 mr30 message" v-if="countIndex === 1">
|
<view class="bg_w p30 rd8">
|
<view class="flex mb30">
|
<view class="c6 title">联系人</view>
|
<view class="fx1 c3">{{declares.linkname}}</view>
|
</view>
|
<view class="flex mb30">
|
<view class="c6 title">联系电话</view>
|
<view class="fx1 c3">{{declares.linkphone}}</view>
|
</view>
|
<view class="flex">
|
<view class="c6 title">项目附件</view>
|
<view class="fx1 file-content">
|
<view v-for="file in declares.fileServiceList" :key="file.id" class="file-style">{{ file.name }}
|
</view>
|
</view>
|
</view>
|
</view>
|
</view>
|
<view class="ml30 mr30 message" v-if="countIndex === 2">
|
<view class="flex" v-if="userInfo.type==4||userInfo.type==5">
|
<view class="mr10 status-buton" :class="dataType===0&&'sel-button'" @click="dataType=0">服务数据</view>
|
<view class="status-buton" :class="dataType===1&&'sel-button'" @click="dataType=1">诊断数据</view>
|
</view>
|
<template v-if="dataType===0">
|
<!-- 服务 -->
|
<view class="p30 rd8 bg_w mt20 message" v-for="item in serviceList" :key="item.id">
|
<view class="b c2 f32 mb30">{{ item.serviceTitle }}</view>
|
<view class="flex mb30" >
|
<view class="data-title c6">服务时间</view>
|
<view class="fx1 c3">{{ item.serviceDate }}</view>
|
</view>
|
|
<view class="flex mb30" v-if="item.fileScoreList&&item.fileScoreList.length" >
|
<view class="c6 title">企业评分表</view>
|
<view class="fx1" style="flex-shrink: 0;">
|
<view class="file-style " v-for="(file, index) in item.fileScoreList"
|
:class="index!==item.fileScoreList.length-1&&'mb25'"> {{ file.name }}</view>
|
</view>
|
</view>
|
<view class="flex mb30" v-if="item.diagnoseScore">
|
<view class="data-title c6">企业评分</view>
|
<view class="fx1 c3">{{ item.diagnoseScore }}</view>
|
</view>
|
<view class="flex mb30" v-if="item.creatorName">
|
<view class="data-title c6">上传用户</view>
|
<view class="fx1 c3">{{ item.creatorName }}</view>
|
</view>
|
<view class="flex mb30" v-if="item.content">
|
<view class="data-title c6">服务说明</view>
|
<view class="fx1 c3">{{item.content}}</view>
|
</view>
|
<view v-if="!!item.upEnterFile" class="flex mb30">
|
<view class="data-title c6">进场合影</view>
|
<view class="fx1 c3">
|
<image v-if="!!item.upEnterFile" :src="item.upEnterFile.fileurlfull"
|
@click="showImage(1,[item.upEnterFile.fileurlfull])" mode="" class="rd8 img-style">
|
</image>
|
</view>
|
</view>
|
<view v-if="item.upProcessFileList.length" class="flex mb10"
|
:class="item.upProcessFileList.length===0&&'mb30'">
|
<view class="data-title c6">服务过程</view>
|
<view class="fx1 c3">
|
<u-grid :border="false" col="3">
|
<u-grid-item v-for="(listItem, listIndex) in item.upProcessFileList" :key="listItem.id">
|
<!-- @click="_previewImage(file.otherFileList,i)" -->
|
<image :src="listItem.fileurlfull" mode=""
|
@click="showImage(listIndex, item.upProcessFileList?item.upProcessFileList.map(img => img.fileurlfull):[])"
|
class="mb20 rd8 img-style"></image>
|
</u-grid-item>
|
</u-grid>
|
</view>
|
</view>
|
<view v-if="!!item.upOutFile" class="flex mb30">
|
<view class="data-title c6">出场合影</view>
|
<view class="fx1 c3">
|
<image v-if="!!item.upOutFile" :src="item.upOutFile.fileurlfull"
|
@click="showImage(1,[item.upOutFile.fileurlfull])" mode="" class="rd8 img-style"></image>
|
</view>
|
</view>
|
<view class="flex mb30" v-if="item.fileList&&item.fileList.length" :class="(item.fileExtraList.length||(item.declareDiagnoseList&&item.declareDiagnoseList.length)) && 'mb30'">
|
<view class="c6 data-title">服务资料</view>
|
<view class="fx1">
|
<view class="file-style" v-for="(file, index) in item.fileList"
|
:class="index!==item.fileList.length-1&&'mb25'"> {{ file.name }}</view>
|
</view>
|
</view>
|
<view class="flex " v-if="item.fileDiagnosisList&&item.fileDiagnosisList.length" :class="(item.fileExtraList.length||(item.declareDiagnoseList&&item.declareDiagnoseList.length)) && 'mb30'">
|
<view class="c6 data-title">诊断报告</view>
|
<view class="fx1">
|
<view class="file-style" v-for="(file, index) in item.fileDiagnosisList"
|
:class="index!==item.fileDiagnosisList.length-1&&'mb25'"> {{ file.name }}</view>
|
</view>
|
</view>
|
<view class="flex" v-if="item.fileExtraList.length" :class="item.declareDiagnoseList && item.declareDiagnoseList.length && 'mb30'">
|
<view class="c6 data-title">补充资料</view>
|
<view class="fx1">
|
<view class="file-style" v-for="(file, index) in item.fileExtraList"
|
:class="index!==item.fileExtraList.length-1&&'mb25'">{{ file.name }}</view>
|
</view>
|
</view>
|
<view class="flex" v-if="item.declareDiagnoseList.length">
|
<view class="c6 data-title">报告详情</view>
|
<view class="fx1">
|
请在PC端查看
|
</view>
|
</view>
|
<view class="editBtn" v-if="item.status === 0">
|
<u-button text="编辑"></u-button>
|
</view>
|
</view>
|
</template>
|
<template v-if="dataType===1">
|
<!-- 核查 -->
|
<view class="p30 rd8 bg_w mt20 message" v-for="(item, index) in dsZHList" :key="item.id">
|
<view class="b c2 f32 mb30">{{ `第${dsZHList.length - index}次诊断数据` }}</view>
|
<view class="flex mb30">
|
<view class="data-title c6">诊断时间</view>
|
<view class="fx1 c3">{{item.serviceDate}}</view>
|
</view>
|
<view class="flex mb30">
|
<view class="data-title c6">上传用户</view>
|
<view class="fx1 c3">{{ item.creatorName }}</view>
|
</view>
|
<view class="flex mb30">
|
<view class="data-title c6">诊断说明</view>
|
<view class="fx1 c3">{{ item.content }}</view>
|
</view>
|
<view class="flex mb10">
|
<view class="data-title c6">现场照片</view>
|
<view class="fx1 c3">
|
<u-grid :border="false" col="3">
|
<u-grid-item v-for="(listItem,listIndex) in item.hcSceneFileList" :key="listIndex">
|
<image :src="listItem.fileurlfull"
|
@click="showImage(listIndex,item.hcSceneFileList?item.hcSceneFileList.map(img => img.fileurlfull):[])"
|
mode="" class="mb20 rd8 img-style"></image>
|
</u-grid-item>
|
</u-grid>
|
</view>
|
</view>
|
<view class="flex" :class="item.fileExtraList&&item.fileExtraList.length?'mb30':''">
|
<view class="c6 title">核查资料</view>
|
<view class="fx1">
|
<view class="file-style" v-for="file in item.fileDiagnosisList" :key="file.id">{{file.name}}</view>
|
</view>
|
</view>
|
<view class="flex" v-if="item.fileExtraList&&item.fileExtraList.length">
|
<view class="c6 title">补充资料</view>
|
<view class="fx1">
|
<view class="file-style" v-for="file in item.fileExtraList" :key="file.id">{{file.name}}</view>
|
</view>
|
</view>
|
</view>
|
</template>
|
</view>
|
<view class="ml30 mr30 message" v-if="countIndex === 3">
|
<view class="p30 rd8 bg_w">
|
<u-steps current="0" direction="column" dot>
|
<u-steps-item v-for="item in history" :key="item.id" :title="item.checkDate">
|
<view class="mt15 ptb25 plr30 bg_m rd8 c3 mb40" slot="desc">{{item.checkInfo}}</view>
|
</u-steps-item>
|
</u-steps>
|
</view>
|
</view>
|
<u-safe-bottom></u-safe-bottom>
|
</view>
|
</template>
|
|
<script>
|
import {
|
declaresDetail,
|
companyDetail,
|
serviceDetail,
|
getDeclareHistoryList
|
} from '@/util/api/index.js'
|
import {
|
mapState
|
} from 'vuex'
|
export default {
|
data() {
|
return {
|
projectId: '',
|
declareId: '',
|
companyId: '',
|
message: [{
|
name: '企业信息'
|
}, {
|
name: '报名信息'
|
}, {
|
name: '诊断资料'
|
}],
|
titles: [{
|
name: '主要指标',
|
subName: '',
|
key: 'years'
|
},
|
{
|
name: '企业总资产',
|
subName: '(万元)',
|
key: 'assets'
|
},
|
{
|
name: '营业收入',
|
subName: '(万元)',
|
key: 'income'
|
},
|
{
|
name: '资产负债率',
|
subName: '(%)',
|
key: 'ratio'
|
},
|
{
|
name: '研发费用',
|
subName: '(万元)',
|
key: 'develop'
|
},
|
{
|
name: '利润总额',
|
subName: '(万元)',
|
key: 'profit'
|
},
|
{
|
name: '上缴税金',
|
subName: '(万元)',
|
key: 'taxes'
|
},
|
{
|
name: '从业人员',
|
subName: '',
|
key: 'employee'
|
},
|
],
|
declares: {},
|
company: {},
|
countIndex: 0,
|
dataType: 0,
|
shadowStyle: {
|
backgroundImage: "linear-gradient(to top, #fff, rgba(255, 255, 255, 0.5))",
|
paddingTop: "50rpx",
|
marginTop: "-50rpx",
|
justifyContent: 'flex-end',
|
colors: '#333',
|
},
|
serviceList: [],
|
dsZHList: [],
|
history: []
|
};
|
},
|
onLoad({
|
projectId,
|
declareId,
|
companyId
|
}) {
|
this.declareId = declareId
|
this.projectId = projectId
|
this.companyId = companyId
|
this.getDeclares()
|
this.getCompany()
|
this.getService()
|
if (this.userInfo.type == 4 || this.userInfo.type == 5) {
|
this.message = [{
|
name: '企业信息'
|
}, {
|
name: '报名信息'
|
}, {
|
name: '诊断资料'
|
}, {
|
name: '查看进度'
|
}]
|
this.getCheck()
|
this.getDeclareHistory()
|
}
|
|
},
|
computed: {
|
...mapState(['statusbarHeight', 'navHeight', 'userInfo']),
|
},
|
methods: {
|
changeIndex({
|
index
|
}) {
|
this.countIndex = index
|
},
|
getDeclares() {
|
declaresDetail(this.declareId)
|
.then(res => {
|
this.declares = res
|
})
|
.catch(res => {
|
|
})
|
},
|
getCompany() {
|
companyDetail({
|
id: this.companyId
|
})
|
.then(res => {
|
this.company = res
|
})
|
.catch(res => {
|
|
})
|
},
|
getService() {
|
serviceDetail({
|
declareId: this.declareId,
|
type: 0
|
})
|
.then(res => {
|
let serviceList = []
|
res.dsServiceList.forEach((item, index) => {
|
serviceList.push({
|
...item,
|
serviceTitle: `第${index+1}次服务数据`
|
})
|
})
|
res.declareDoneList.forEach((item, index) => {
|
serviceList.push({
|
...item,
|
serviceDate: item.diagnoseDate,
|
// fileList: item.fileDiagnosisList,
|
serviceTitle: index == 0 ? '完成服务' : `第${index}次退回服务`,
|
|
})
|
})
|
this.serviceList = serviceList.reverse()
|
})
|
.catch(err => {})
|
},
|
getCheck() {
|
serviceDetail({
|
declareId: this.declareId,
|
type: 1
|
})
|
.then(res => {
|
this.dsZHList = res.dsZHList.reverse()
|
})
|
.catch(err => {})
|
},
|
getDeclareHistory() {
|
getDeclareHistoryList({
|
declareId: this.declareId
|
})
|
.then(res => {
|
this.history = res
|
})
|
},
|
showImage(current, urls) {
|
uni.previewImage({
|
current,
|
urls
|
})
|
}
|
}
|
}
|
</script>
|
|
<style lang="scss">
|
.content {
|
// height: 100vh;
|
background-color: #F3F6F9;
|
|
.nav {
|
width: 750rpx;
|
height: 400rpx;
|
background: linear-gradient(180deg, #216EEE 0%, #F3F6F9 100%);
|
color: #293C5B;
|
padding-bottom: 54rpx;
|
|
.company-message {
|
height: 216rpx;
|
|
.company-name {
|
height: 50rpx;
|
line-height: 50rpx;
|
|
}
|
}
|
}
|
|
.message-item {
|
font-size: 26rpx;
|
font-weight: 400;
|
line-height: 36rpx;
|
}
|
|
.message {
|
font-size: 28rpx;
|
font-weight: 400;
|
line-height: 40rpx;
|
position: relative;
|
|
.title {
|
flex-shrink: 0;
|
width: 160rpx;
|
}
|
|
.data-title {
|
width: 132rpx;
|
flex-shrink: 0;
|
}
|
|
.editBtn {
|
position: absolute;
|
top: 24rpx;
|
right: 30rpx;
|
}
|
}
|
|
.businessImg {
|
width: 200rpx;
|
height: 150rpx;
|
border-radius: 8rpx;
|
border: 1rpx solid #EEEEEE;
|
}
|
|
.table {
|
background: #F9FDFF;
|
text-align: center;
|
|
.table-header {
|
color: #293C5B;
|
background: rgba(33, 110, 238, 0.08);
|
font-weight: 500;
|
border-top-left-radius: 8rpx;
|
border-top-right-radius: 8rpx;
|
}
|
|
.table-item {
|
width: 157.75rpx;
|
height: 80rpx;
|
display: flex;
|
flex-wrap: wrap;
|
justify-content: center;
|
align-items: center;
|
font-weight: 400;
|
color: #293C5B;
|
font-size: 24rpx;
|
line-height: 16rpx;
|
border-bottom: 1rpx solid #E6EAEF;
|
|
}
|
}
|
|
.file-content {
|
min-height: 0;
|
min-width: 0;
|
}
|
|
.file-style {
|
width: 500rpx;
|
color: #216EEE;
|
text-decoration: underline;
|
word-wrap: break-word;
|
|
}
|
.last-file {
|
margin-bottom: 0 !important;
|
}
|
|
.status-buton {
|
width: 152rpx;
|
height: 52rpx;
|
border-radius: 30rpx;
|
text-align: center;
|
line-height: 52rpx;
|
font-size: 26rpx;
|
font-weight: 400;
|
color: #333333;
|
border: 1rpx solid #CCCCCC;
|
}
|
|
.sel-button {
|
background: #216EEE;
|
color: #FFFFFF;
|
border: 1rpx solid #216EEE;
|
}
|
|
.img-style {
|
width: 152rpx;
|
height: 114rpx;
|
}
|
}
|
|
::v-deep .u-read-more__toggle {
|
justify-content: flex-end !important;
|
|
}
|
</style>
|