Просмотр исходного кода

企业详情

feature/20220929首页静态开发
王露 3 лет назад
Родитель
Сommit
1510f565b0
16 измененных файлов: 523 добавлений и 161 удалений
  1. 7
    1
      digital-park-web/digital-park/src/api/company.js
  2. Двоичные данные
      digital-park-web/digital-park/src/assets/image/company/bg_upload.png
  3. Двоичные данные
      digital-park-web/digital-park/src/assets/image/company/bg_upload_1.png
  4. Двоичные данные
      digital-park-web/digital-park/src/assets/image/company/bg_upload_2.png
  5. Двоичные данные
      digital-park-web/digital-park/src/assets/image/company/bg_upload_3.png
  6. Двоичные данные
      digital-park-web/digital-park/src/assets/image/company/icon_close.png
  7. Двоичные данные
      digital-park-web/digital-park/src/assets/image/company/icon_update.png
  8. Двоичные данные
      digital-park-web/digital-park/src/assets/image/company/icon_upload.png
  9. 138
    40
      digital-park-web/digital-park/src/views/park-enterprises/Detail.vue
  10. 2
    2
      digital-park-web/digital-park/src/views/park-enterprises/components/BasicInfo.vue
  11. 189
    49
      digital-park-web/digital-park/src/views/park-enterprises/components/ClaimDialog.vue
  12. 40
    45
      digital-park-web/digital-park/src/views/park-enterprises/components/CompanyDev.vue
  13. 5
    1
      digital-park-web/digital-park/src/views/park-enterprises/components/CompanyItem.vue
  14. 102
    7
      digital-park-web/digital-park/src/views/park-enterprises/components/OtherInfo.vue
  15. 38
    15
      digital-park-web/digital-park/src/views/park-enterprises/components/TableItem.vue
  16. 2
    1
      digital-park-web/digital-park/vue.config.js

+ 7
- 1
digital-park-web/digital-park/src/api/company.js Просмотреть файл

/** /**
* api接口统一管理 * api接口统一管理
*/ */
import {get } from "../utils/http";
import {get, post } from "../utils/http";


// 获取园区企业列表 // 获取园区企业列表
export const getCompanyList = p => get("/areaCompany/getCompanyList", p); export const getCompanyList = p => get("/areaCompany/getCompanyList", p);
// 获取所属行业 // 获取所属行业
export const getOwnerIntermediaryList = p => get("/areaCompany/getOwnerIntermediaryList", p); export const getOwnerIntermediaryList = p => get("/areaCompany/getOwnerIntermediaryList", p);


// 企业认领
export const addCompanyClaim = p => post("/areaCompany/addCompanyClaim", p);

// 编辑企业信息
export const updateCompany = p => post("/areaCompany/updateCompany", p);

// 获取园区资讯列表 // 获取园区资讯列表
export const getCompanyNewsList = p => get("/areaCompany/getCompanyNewsList", p); export const getCompanyNewsList = p => get("/areaCompany/getCompanyNewsList", p);



Двоичные данные
digital-park-web/digital-park/src/assets/image/company/bg_upload.png Просмотреть файл


Двоичные данные
digital-park-web/digital-park/src/assets/image/company/bg_upload_1.png Просмотреть файл


Двоичные данные
digital-park-web/digital-park/src/assets/image/company/bg_upload_2.png Просмотреть файл


Двоичные данные
digital-park-web/digital-park/src/assets/image/company/bg_upload_3.png Просмотреть файл


Двоичные данные
digital-park-web/digital-park/src/assets/image/company/icon_close.png Просмотреть файл


Двоичные данные
digital-park-web/digital-park/src/assets/image/company/icon_update.png Просмотреть файл


Двоичные данные
digital-park-web/digital-park/src/assets/image/company/icon_upload.png Просмотреть файл


+ 138
- 40
digital-park-web/digital-park/src/views/park-enterprises/Detail.vue Просмотреть файл

<!-- 园区企业详情 --> <!-- 园区企业详情 -->
<template> <template>
<div class="">
<div class="" v-loading="pageLoading">
<section class="nav_box"> <section class="nav_box">
<Nav></Nav> <Nav></Nav>
<div class="second_nv"> <div class="second_nv">
<div> <div>
<div class="position"> <div class="position">
<img src="" alt="" />
<img src="@assets/image/company/icon_address.png" alt="地址" />
<span> <span>
当前位置: 当前位置:
<span class="pointer" @click="$router.push('/company-list')"> <span class="pointer" @click="$router.push('/company-list')">
</div> </div>
</div> </div>
</div> </div>
<div class="detail_box">
<div class="detail_box" v-if="companyInfo">
<section class="top_box"> <section class="top_box">
<div class="company_img_box"> <div class="company_img_box">
<img class="company_img" src="" alt="" /> <img class="company_img" src="" alt="" />
<div class="tip_img"></div>
<div class="tip_img">
<span
:class="[
'claim_state',
companyInfo.claimState.text === '已认领'
? 'claimed'
: 'not_claim',
]"
>
{{ companyInfo.claimState.text }}
</span>
</div>
</div> </div>
<div class="right_box"> <div class="right_box">
<div class="top_row"> <div class="top_row">
<span>{{ companyInfo.companyName }}</span> <span>{{ companyInfo.companyName }}</span>
<div> <div>
<span class="pointer">
<img src="@assets/image/company/icon_save.png" alt="保存" />
保存
</span>
<span class="pointer">
<img src="@assets/image/company/icon_cancel.png" alt="取消" />
取消
</span>
<span class="pointer">
<img src="@assets/image/company/icon_edit.png" alt="编辑" />
编辑
</span>
<span class="pointer">
<template v-if="canEdit == 1">
<template v-if="isEditing">
<span class="pointer" @click="updateCompany">
<img
src="@assets/image/company/icon_save.png"
alt="保存"
/>
保存
</span>
<span class="pointer" @click="cancelEdit">
<img
src="@assets/image/company/icon_cancel.png"
alt="取消"
/>
取消
</span>
</template>

<span v-else class="pointer" @click="isEditing = true">
<img src="@assets/image/company/icon_edit.png" alt="编辑" />
编辑
</span>
</template>
<span
class="pointer"
v-if="canEdit == 0 && companyInfo.claimState.text !== '已认领'"
@click="setClaimDialog"
>
<img src="@assets/image/company/icon_claim.png" alt="认领" /> <img src="@assets/image/company/icon_claim.png" alt="认领" />
认领 认领
</span> </span>
</div> </div>
<div class="middle_row"> <div class="middle_row">
<div class="company_type"> <div class="company_type">
<span>{{ companyInfo.enterpriseLabel }}</span>
<span>科技型中小企业</span>
<span>科技型中小企业</span>
<span>科技型中小企业</span>
<template v-if="enterpriseLabel.length > 0">
<span v-for="item in enterpriseLabel" :key="item">
{{ item }}
</span>
</template>
</div> </div>
<div class="time"> <div class="time">
<img src="" alt="" />
<img src="@assets/image/company/icon_update.png" alt="保存" />
<span> <span>
更新时间:{{ 更新时间:{{
companyInfo.modifiedOn | formatDate("YYYY-MM-DD") companyInfo.modifiedOn | formatDate("YYYY-MM-DD")
</div> </div>
<div> <div>
邮箱: 邮箱:
<span>{{ companyInfo.email }}</span>
<span>{{ companyInfo.email || "--" }}</span>
</div> </div>
</div> </div>
</div> </div>
</section> </section>


<div class="tab_box">
<div class="tab_box" ref="boxFixed">
<span <span
:class="['pointer', activeTab === item.value ? 'active' : '']" :class="['pointer', activeTab === item.value ? 'active' : '']"
v-for="item in tabs"
v-for="(item, index) in tabs"
:key="item.value" :key="item.value"
@click="changeTab(item)"
@click="changeTab(item, index)"
> >
{{ item.name }} {{ item.name }}
</span> </span>
</div> </div>
</div> </div>
</section> </section>
<section class="content_box">
<basic-info :companyInfo="companyInfo"></basic-info>
<company-dev :companyInfo="companyInfo"></company-dev>
<section class="content_box" v-if="companyInfo">
<basic-info
class="content_item"
refs="content1"
:companyInfo="companyInfo"
></basic-info>
<company-dev
class="content_item"
refs="content2"
:companyInfo="companyInfo"
></company-dev>
<!-- <intellectual-property :companyInfo="companyInfo"></intellectual-property> --> <!-- <intellectual-property :companyInfo="companyInfo"></intellectual-property> -->
<other-info :companyInfo="companyInfo"></other-info>
<other-info
class="content_item"
refs="content4"
:companyInfo="companyInfo"
:isEditing="isEditing"
></other-info>
</section> </section>
<Footer></Footer> <Footer></Footer>
<claim-dialog></claim-dialog>
<claim-dialog v-if="showClaimDialog" :claimDialog="claimDialog"></claim-dialog>
</div> </div>
</template> </template>


// import IntellectualProperty from "./components/IntellectualProperty.vue"; // import IntellectualProperty from "./components/IntellectualProperty.vue";
import OtherInfo from "./components/OtherInfo.vue"; import OtherInfo from "./components/OtherInfo.vue";
import ClaimDialog from "./components/ClaimDialog.vue"; import ClaimDialog from "./components/ClaimDialog.vue";
import { getCompanyById } from "@api/company";
import { getCompanyById, updateCompany } from "@api/company";


export default { export default {
//import引入的组件需要注入到对象中才能使用 //import引入的组件需要注入到对象中才能使用
], ],
activeTab: 1, activeTab: 1,
companyInfo: null, companyInfo: null,
showClaimDialog: false,
claimDialog: false,
canEdit: 0,
isEditing: false,
}; };
}, },
//监听属性 类似于data概念 //监听属性 类似于data概念
computed: {},
computed: {
enterpriseLabel() {
return this.companyInfo?.enterpriseLabel?.text ?? [];
},
},
//监控data中的数据变化 //监控data中的数据变化
watch: {}, watch: {},
//方法集合 //方法集合
methods: { methods: {
changeTab(item) {
// 锚点点击事件
changeTab(item, index) {
this.activeTab = item.value; this.activeTab = item.value;

let jumpDom = document.querySelectorAll(".content_item")[index];
let scrollTop = jumpDom.offsetTop; // 获取需要滚动的距离
window.scrollTo({
top: scrollTop,
behavior: "smooth", // 平滑滚动
});
location.href = `#content${this.activeTab}`;
}, },

getData() { getData() {
let params = { let params = {
companyId: this.companyId, companyId: this.companyId,
}; };
this.pageLoading = true;
getCompanyById(params) getCompanyById(params)
.then(res => { .then(res => {
console.log(res.data); console.log(res.data);
this.$message.error(`获取数据失败,失败原因${err},请刷新重试!`); this.$message.error(`获取数据失败,失败原因${err},请刷新重试!`);
}); });
}, },
setClaimDialog() {
this.showClaimDialog = true;
this.claimDialog = true;
},
cancelEdit() {
this.isEditing = false;
},
updateCompany() {
updateCompany(this.companyInfo)
.then(res => {
console.log(res.data);
if (res.data.status == 0) {
this.isEditing = false;
this.$message.success(`保存成功!`);
} else {
this.$message.error(`保存失败,请刷新重试!`);
}
})
.catch(err => {
this.$message.error(`保存失败,失败原因${err},请刷新重试!`);
});
},
}, },
//生命周期 - 创建完成(可以访问当前this实例) //生命周期 - 创建完成(可以访问当前this实例)
created() { created() {
this.canEdit = this.$route.query.canEdit;
this.companyId = this.$route.query.companyId; this.companyId = this.$route.query.companyId;
this.getData(); this.getData();
}, },
.nav_box { .nav_box {
background: url("~@assets/image/company/bg_company.png") no-repeat; background: url("~@assets/image/company/bg_company.png") no-repeat;
position: relative; position: relative;
overflow: visible;
// position: sticky;
// top: 0;
// z-index: 2;
.second_nv { .second_nv {
@include size(100%, 250px); @include size(100%, 250px);
> div { > div {
.position { .position {
@include flex(row, flex-start, center, null); @include flex(row, flex-start, center, null);
img { img {
@include size(16px, 16px);
background: #ffffff;
// @include size(16px, 16px);
margin-right: 6px; margin-right: 6px;
} }
padding-top: 10px; padding-top: 10px;
border: solid 1px #bcd8e9; border: solid 1px #bcd8e9;
@include border-box; @include border-box;
background: #ffffff; background: #ffffff;
position: sticky;
top: 0;
z-index: 2;
span { span {
@include size(200px, 50px); @include size(200px, 50px);
@include font(16px, #637485); @include font(16px, #637485);
} }
.tip_img { .tip_img {
@include size(68px, 22px); @include size(68px, 22px);
background-image: linear-gradient(135deg, #4bbe8e 0%, #22a76f 100%);
position: absolute; position: absolute;
top: 20px; top: 20px;
left: 0; left: 0;
.claim_state {
@include size(100%, 100%);
@include flex(row, flex-start, center, null);
@include font(14px, #fff);
padding-left: 6px;
@include border-box;
}
.claimed {
background: url("~@assets/image/company/bg_claimed.png") no-repeat;
}
.not_claim {
background: url("~@assets/image/company/bg_not_claim.png") no-repeat;
}
} }
} }
.right_box { .right_box {
> span { > span {
img { img {
@include size(20px, 20px); @include size(20px, 20px);
background: #fff;
margin-right: 8px; margin-right: 8px;
} }
@include size(90px, 30px); @include size(90px, 30px);
.time { .time {
@include flex(row, center, center, null); @include flex(row, center, center, null);
img { img {
@include size(20px, 20px);
background: #fff;
// @include size(20px, 20px);
margin-right: 8px; margin-right: 8px;
} }
@include font(14px, #637485); @include font(14px, #637485);

+ 2
- 2
digital-park-web/digital-park/src/views/park-enterprises/components/BasicInfo.vue Просмотреть файл

<td class="table_title">法人代表:</td> <td class="table_title">法人代表:</td>
<td>{{ companyInfo.legalPerson }}</td> <td>{{ companyInfo.legalPerson }}</td>
<td class="table_title">登记状态:</td> <td class="table_title">登记状态:</td>
<td>{{ JSON.parse(companyInfo.claimState).text }}</td>
<td>{{ companyInfo.claimState.text }}</td>
<td class="table_title width_100">成立日期:</td> <td class="table_title width_100">成立日期:</td>
<td>{{ companyInfo.establishOn | formatDate("YYYY.MM.DD") }}</td> <td>{{ companyInfo.establishOn | formatDate("YYYY.MM.DD") }}</td>
</tr> </tr>
<td class="table_title">所属行业:</td> <td class="table_title">所属行业:</td>
<td colspan="3">{{ companyInfo.ownerIndustry }}</td> <td colspan="3">{{ companyInfo.ownerIndustry }}</td>
<td class="table_title width_100">企业类型:</td> <td class="table_title width_100">企业类型:</td>
<td>{{ companyInfo.enterpriseType }}</td>
<td>{{ companyInfo.enterpriseType.text }}</td>
</tr> </tr>
<tr class="table_row"> <tr class="table_row">
<td class="table_title">营业期限:</td> <td class="table_title">营业期限:</td>

+ 189
- 49
digital-park-web/digital-park/src/views/park-enterprises/components/ClaimDialog.vue Просмотреть файл

<div class=""> <div class="">
<el-dialog <el-dialog
class="dialog_box" class="dialog_box"
:visible.sync="dialogTableVisible"
:visible.sync="claimDialog"
:show-close="false" :show-close="false"
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
> >
<div slot="title" class="header_title"> <div slot="title" class="header_title">
<span class="title_text">企业认领</span> <span class="title_text">企业认领</span>
<img class="pointer" src="" alt="关闭" @click="dialogTableVisible = false" />
<img
class="pointer"
src="@assets/image/company/icon_close.png"
alt="关闭"
@click="claimDialog = false"
/>
</div> </div>
<div class="dialog_content"> <div class="dialog_content">
<el-form label-position="right" label-width="95px"> <el-form label-position="right" label-width="95px">
<el-form-item label="企业名称"> <el-form-item label="企业名称">
<el-input v-model="input"></el-input>
<el-input v-model.trim="companyClaimInfo.companyClaimName"></el-input>
</el-form-item>
<el-form-item label="法人身份证">
<el-input v-model="companyClaimInfo.idCard"></el-input>
</el-form-item>
<el-form-item label="法人姓名">
<el-input v-model="companyClaimInfo.name"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="认领资料"> <el-form-item label="认领资料">
<div class="upload_box"> <div class="upload_box">
<el-upload <el-upload
class="avatar-uploader" class="avatar-uploader"
action="https://jsonplaceholder.typicode.com/posts/"
:show-file-list="false" :show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
accept=".jpg,.png,.jpeg"
action="#"
:http-request="
file => {
afterReadUrl(file, 1);
}
"
> >
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
<img v-if="imageUrl1" :src="imageUrl1" class="avatar" />
<div v-else class="upload_text"> <div v-else class="upload_text">
<img class="upload_icon" src="" alt="" />
<div class="upload_icon upload1">
<img src="@assets/image/company/icon_upload.png" alt="" />
</div>
<div class="upload_tip">营业执照(或其他材料)</div> <div class="upload_tip">营业执照(或其他材料)</div>
</div> </div>
</el-upload> </el-upload>
<el-upload <el-upload
class="avatar-uploader" class="avatar-uploader"
action="https://jsonplaceholder.typicode.com/posts/"
:show-file-list="false" :show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
accept=".jpg,.png,.jpeg"
action="#"
:http-request="
file => {
afterReadUrl(file, 2);
}
"
> >
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
<img v-if="imageUrl2" :src="imageUrl2" class="avatar" />
<div v-else class="upload_text"> <div v-else class="upload_text">
<img class="upload_icon" src="" alt="" />
<div class="upload_icon upload2">
<img src="@assets/image/company/icon_upload.png" alt="" />
</div>
<div class="upload_tip">法人身份证(头像面) 或其他材料</div> <div class="upload_tip">法人身份证(头像面) 或其他材料</div>
</div> </div>
</el-upload> </el-upload>
<el-upload <el-upload
class="avatar-uploader" class="avatar-uploader"
action="https://jsonplaceholder.typicode.com/posts/"
:show-file-list="false" :show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
accept=".jpg,.png,.jpeg"
action="#"
:http-request="
file => {
afterReadUrl(file, 3);
}
"
> >
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
<img v-if="imageUrl3" :src="imageUrl3" class="avatar" />
<div v-else class="upload_text"> <div v-else class="upload_text">
<img class="upload_icon" src="" alt="" />
<div class="upload_icon upload3">
<img src="@assets/image/company/icon_upload.png" alt="" />
</div>
<div class="upload_tip">授权书</div> <div class="upload_tip">授权书</div>
</div> </div>
</el-upload> </el-upload>
<ul> <ul>
<li> <li>
1、不同组织机构请根据提示上传指定材料, 1、不同组织机构请根据提示上传指定材料,
<span class="color_blue pointer">查看详情;</span>
<span class="color_blue pointer" @click="materialDialog = true">
查看详情;
</span>
</li> </li>
<li> <li>
2、 2、
<span class="color_blue pointer">点击生成并下载授权书</span>
<span class="color_blue pointer" @click="authorizeDialog = true">
点击生成并下载授权书
</span>
,填写完成后拍照上传,注意授权书填写完整,拍摄清晰,使用手写签名和实体公章; ,填写完成后拍照上传,注意授权书填写完整,拍摄清晰,使用手写签名和实体公章;
</li> </li>
<li>3、支持jpg、jpeg、png格式,图片大小不超过2M;</li> <li>3、支持jpg、jpeg、png格式,图片大小不超过2M;</li>
</ul> </ul>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button class="submit_btn" type="primary" :loading="loading">
<el-button
class="submit_btn"
type="primary"
:loading="btnLoading"
@click="submit"
>
提交审核 提交审核
</el-button> </el-button>
</el-form-item> </el-form-item>


<el-dialog <el-dialog
class="dialog_box" class="dialog_box"
:visible.sync="dialogTableVisible1"
:visible.sync="materialDialog"
:show-close="false" :show-close="false"
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
> >
<div slot="title" class="header_title"> <div slot="title" class="header_title">
<span class="title_text">认领材料</span> <span class="title_text">认领材料</span>
<img class="pointer" src="" alt="关闭" @click="dialogTableVisible1 = false" />
<img
class="pointer"
src="@assets/image/company/icon_close.png"
alt="关闭"
@click="materialDialog = false"
/>
</div> </div>
<div class="dialog_content"> <div class="dialog_content">
<div class="claim_tip"> <div class="claim_tip">
</div> </div>
</div> </div>
<div class="btn_width"> <div class="btn_width">
<el-button class="submit_btn" type="primary" :loading="loading">
<el-button class="submit_btn" type="primary" @click="materialDialog = false">
我知道了 我知道了
</el-button> </el-button>
</div> </div>


<el-dialog <el-dialog
class="dialog_box" class="dialog_box"
:visible.sync="dialogTableVisible3"
:visible.sync="authorizeDialog"
:show-close="false" :show-close="false"
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
> >
<div slot="title" class="header_title"> <div slot="title" class="header_title">
<span class="title_text">企业认领授权书</span> <span class="title_text">企业认领授权书</span>
<img class="pointer" src="" alt="关闭" @click="dialogTableVisible3 = false" />
<img
class="pointer"
src="@assets/image/company/icon_close.png"
alt="关闭"
@click="authorizeDialog = false"
/>
</div> </div>
<div class="dialog_content"> <div class="dialog_content">
<div class="authorize_box"> <div class="authorize_box">
确认授权 确认授权
<span class="color_blue">姓名</span> <span class="color_blue">姓名</span>
(身份证号: (身份证号:
<span class="color_blue">141181198909230120</span>
<span class="color_blue">身份证号</span>
</span> </span>
<span style="margin-bottom:70px;"> <span style="margin-bottom:70px;">
代表本企业向贵公司完成企业认领,执行企业信息维护和管理功能。 代表本企业向贵公司完成企业认领,执行企业信息维护和管理功能。
</span> </span>
<span class="authorize_position">盖章处:</span> <span class="authorize_position">盖章处:</span>
<span class="authorize_position">日期:2022-09-20</span>
<span class="authorize_position">日期:</span>
</div> </div>
<div class="btn_box"> <div class="btn_box">
<div>
<el-button class="pre_btn" type="primary" :loading="loading">
<!-- <div>
<el-button class="pre_btn" type="primary">
上一步 上一步
</el-button> </el-button>
</div>

</div> -->
<div> <div>
<el-button class="submit_btn" type="primary" :loading="loading"> <el-button class="submit_btn" type="primary" :loading="loading">
下载授权书 下载授权书
<script> <script>
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等) //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》'; //例如:import 《组件名称》 from '《组件路径》';
import { upload } from "@api/common";
import { addCompanyClaim } from "@api/company";


export default { export default {
props: {
claimDialog: {
types: Boolean,
required: false,
default: false,
},
},
//import引入的组件需要注入到对象中才能使用 //import引入的组件需要注入到对象中才能使用
components: {}, components: {},
data() { data() {
//这里存放数据 //这里存放数据
return { return {
dialogTableVisible: false,
dialogTableVisible1: false,
dialogTableVisible3: false,
input: "",
companyClaimInfo: {
companyClaimName: "",
idCard: "",
name: "",
data: "",
},
materialDialog: false,
authorizeDialog: false,
material: [ material: [
{ {
title: "普通企业", title: "普通企业",
value: "基金会法人登记证书 + 法定代表人身份证(头像面)", value: "基金会法人登记证书 + 法定代表人身份证(头像面)",
}, },
], ],
btnLoading: false,
loading: false,
imageUrl1: "",
imageUrl1Loading: false,
imageUrl2: "",
imageUrl2Loading: false,
imageUrl3: "",
imageUrl3Loading: false,
}; };
}, },
//监听属性 类似于data概念 //监听属性 类似于data概念
watch: {}, watch: {},
//方法集合 //方法集合
methods: { methods: {
handleAvatarSuccess(res, file) {
this.imageUrl = URL.createObjectURL(file.raw);
},
beforeAvatarUpload(file) {
const isJPG = file.type === "image/jpeg";
const isLt2M = file.size / 1024 / 1024 < 2;

if (!isJPG) {
this.$message.error("上传头像图片只能是 JPG 格式!");
submit() {
if (!this.companyClaimInfo.companyClaimName) {
this.$message.error(`请填写企业名称!`);
return;
}
if (!this.companyClaimInfo.idCard) {
this.$message.error(`请填写法人身份证!`);
return;
} }
if (!isLt2M) {
this.$message.error("上传头像图片大小不能超过 2MB!");
if (!this.companyClaimInfo.name) {
this.$message.error(`请填写法人姓名!`);
return;
} }
return isJPG && isLt2M;
if (!this.imageUrl1) {
this.$message.error(`请上传营业执照(或其他材料)!`);
return;
}
if (!this.imageUrl2) {
this.$message.error(`请上传法人身份证(头像面)或其他材料!`);
return;
}
if (!this.imageUrl3) {
this.$message.error(`请上传授权书!`);
return;
}
this.companyClaimInfo.data = [this.imageUrl1, this.imageUrl2, this.imageUrl3].join(",");
this.setData();
},
setData() {
this.btnLoading = true;
addCompanyClaim(this.companyClaimInfo)
.then(res => {
console.log(res.data);
if (res.data.status == 0) {
this.companyInfo = res.data.data;
} else {
this.$message.error(`提交失败,请刷新重试!`);
}
this.btnLoading = false;
})
.catch(err => {
this.$message.error(`提交失败,失败原因${err},请刷新重试!`);
});
},
async afterReadUrl(file, imgUrlIndex) {
this.$data[`imageUrl${imgUrlIndex}`] = "";
this.$data[`imageUrl${imgUrlIndex}Loading`] = true;
let photo2Url = await this.uploadImg(file, `imageUrl${imgUrlIndex}Loading`);
this.$data[`imageUrl${imgUrlIndex}`] = photo2Url;
this.$forceUpdate();
},
// 上传图片
async uploadImg(file, dataKey) {
let imgUrl;
const formData = new FormData(); // 声明一个FormData对象
formData.append("uploadFile", file.file);
await upload(formData)
.then(res => {
if (res.data.status == 0) {
imgUrl = res.data.data;
this.$data[dataKey] = false;
} else {
this.$message.error("上传失败,请重新上传!");
}
})
.catch(error => {
this.$data[dataKey] = false;
this.$message.error("上传失败,请重新上传!");
console.log(error);
});
return imgUrl;
}, },
}, },
//生命周期 - 创建完成(可以访问当前this实例) //生命周期 - 创建完成(可以访问当前this实例)
@include flex(column, space-between, center, nowrap); @include flex(column, space-between, center, nowrap);
.upload_icon { .upload_icon {
@include size(118px, 70px); @include size(118px, 70px);
background: pink;
@include flex(row, center, flex-end, nowrap);
padding-bottom: 6px;
@include border-box;
}
.upload1 {
background: url("~@assets/image/company/bg_upload_1.png") no-repeat;
background-size: 100% 100%;
}
.upload2 {
background: url("~@assets/image/company/bg_upload_2.png") no-repeat;
background-size: 100% 100%;
}
.upload3 {
background: url("~@assets/image/company/bg_upload_3.png") no-repeat;
background-size: 100% 100%;
} }
.upload_tip { .upload_tip {
line-height: initial; line-height: initial;
} }
.authorize_box { .authorize_box {
border: 1px solid #0977d8; border: 1px solid #0977d8;
background: #c7e7fe;
padding: 16px 50px 16px 20px; padding: 16px 50px 16px 20px;
border-radius: 4px; border-radius: 4px;
@include border-box; @include border-box;

+ 40
- 45
digital-park-web/digital-park/src/views/park-enterprises/components/CompanyDev.vue Просмотреть файл

</div> </div>
<table-item <table-item
:table-title="websiteTitle" :table-title="websiteTitle"
:table-data="tableData"
:table-data="companyInfo.companyWebsiteList"
:rowHeight="50" :rowHeight="50"
></table-item> ></table-item>
</div> </div>
</div> </div>
<table-item <table-item
:table-title="foreignInvestmentInfoTitle" :table-title="foreignInvestmentInfoTitle"
:table-data="companyInfo.foreignInvestmentInfo"
:table-data="companyInfo.companyInitiatorList"
:rowHeight="50" :rowHeight="50"
></table-item>
>
<el-table-column slot="subscribedCapitalOn" label="认缴出资日期">
<template slot-scope="scope">
{{ scope.row.subscribedCapitalOn | formatDate("YYYY-MM-DD") }}
</template>
</el-table-column>

<el-table-column slot="paidCapitalContributionOn" label="实缴出资日期">
<template slot-scope="scope">
{{ scope.row.paidCapitalContributionOn | formatDate("YYYY-MM-DD") }}
</template>
</el-table-column>
</table-item>
</div> </div>
<div> <div>
<div class="title"> <div class="title">
</div> </div>
<table-item <table-item
:table-title="financeInfoTitle" :table-title="financeInfoTitle"
:table-data="companyInfo.financeInfo"
:table-data="companyInfo.companyFinanceInfoList"
:rowHeight="50" :rowHeight="50"
></table-item>
>
<el-table-column slot="date" label="日期">
<template slot-scope="scope">
{{ scope.row.date | formatDate("YYYY-MM-DD") }}
</template>
</el-table-column>
</table-item>
</div> </div>
<!-- <div> <!-- <div>
<div class="title"> <div class="title">
websiteTitle: [ websiteTitle: [
{ {
label: "类型", label: "类型",
property: "date",
property: "type",
}, },
{ {
label: "名称", label: "名称",
property: "date",
property: "websiteName",
}, },
{ {
label: "网站", label: "网站",
property: "date",
property: "url",
}, },
], ],
foreignInvestmentInfoTitle: [ foreignInvestmentInfoTitle: [
{ {
label: "发起人", label: "发起人",
property: "date",
property: "sponsor",
}, },
{ {
label: "认缴出资额(万元)", label: "认缴出资额(万元)",
property: "date",
property: "subscribedCapital",
}, },
{ {
label: "认缴出资日期", label: "认缴出资日期",
property: "date",
property: "subscribedCapitalOn",
slot: "subscribedCapitalOn",
}, },
{ {
label: "认缴出资方式", label: "认缴出资方式",
property: "date",
property: "subscribedCapitalWay",
}, },
{ {
label: "实缴出资额(万元)", label: "实缴出资额(万元)",
property: "date",
property: "paidCapitalContribution",
}, },
{ {
label: "实缴出资日期",
property: "date",
slot: "paidCapitalContributionOn",
}, },
{ {
label: "实缴出资方式", label: "实缴出资方式",
property: "date",
property: "paidCapitalContributionWay",
}, },
], ],
financeInfoTitle: [ financeInfoTitle: [
{ {
label: "日期",
property: "date",
slot: "date",
}, },
{ {
label: "产品名称", label: "产品名称",
property: "name",
property: "productName",
}, },
{ {
label: "融资轮次", label: "融资轮次",
property: "address",
property: "financingRounds",
}, },
{ {
label: "估值金额", label: "估值金额",
property: "address",
property: "valuationAmount",
}, },
{ {
label: "融资金额", label: "融资金额",
property: "address",
property: "financingAmount",
}, },
{ {
label: "投资机构", label: "投资机构",
property: "address",
property: "investmentOrganization",
}, },
], ],
honorQualificationTitle: [ honorQualificationTitle: [
property: "address", property: "address",
}, },
], ],
tableData: [
{
date: "2016-05-02",
name: "王小虎",
address: "上海市普陀区金沙江路 1518 弄",
},
{
date: "2016-05-04",
name: "王小虎",
address: "上海市普陀区金沙江路 1517 弄",
},
{
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄",
},
{
date: "2016-05-03",
name: "王小虎",
address: "上海市普陀区金沙江路 1516 弄",
},
],
}; };
}, },
//监听属性 类似于data概念 //监听属性 类似于data概念

+ 5
- 1
digital-park-web/digital-park/src/views/park-enterprises/components/CompanyItem.vue Просмотреть файл

<span <span
:class="[ :class="[
'claim_state', 'claim_state',
companyInfo.claimState.text === '已认领' ? 'claimed' : 'not_claim',
companyInfo &&
companyInfo.claimState &&
companyInfo.claimState.text === '已认领'
? 'claimed'
: 'not_claim',
]" ]"
> >
{{ companyInfo.claimState.text }} {{ companyInfo.claimState.text }}

+ 102
- 7
digital-park-web/digital-park/src/views/park-enterprises/components/OtherInfo.vue Просмотреть файл

<tr> <tr>
<td class="table_title">企业优势:</td> <td class="table_title">企业优势:</td>
<td class="content"> <td class="content">
{{ companyInfo.enterpriseAdvantage }}
<el-input
:disabled="!isEditing"
type="textarea"
v-model="companyInfo.enterpriseAdvantage"
></el-input>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="table_title">企业文化:</td> <td class="table_title">企业文化:</td>
<td class="content"> <td class="content">
{{companyInfo.enterpriseCulture}}
<el-input
:disabled="!isEditing"
type="textarea"
v-model="companyInfo.enterpriseCulture"
></el-input>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="table_title">企业风采:</td> <td class="table_title">企业风采:</td>
<td class="content"> <td class="content">
<img class="company_img" src="" alt="" />
<img class="company_img" src="" alt="" />
<img class="company_img" src="" alt="" />
<template v-if="!isEditing">
<img class="company_img" src="" alt="" />
<img class="company_img" src="" alt="" />
<img class="company_img" src="" alt="" />
</template>
<el-upload
v-else
class="avatar-uploader"
list-type="picture-card"
:show-file-list="false"
accept=".jpg,.png,.jpeg"
action="#"
:http-request="
file => {
afterReadUrl(file, 1);
}
"
>
<img v-if="imageUrl1" :src="imageUrl1" class="avatar" />
<div v-else class="upload_text">
<img
class="company_img"
src="@assets/image/company/bg_upload.png"
alt=""
/>
</div>
</el-upload>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="table_title">其他信息:</td> <td class="table_title">其他信息:</td>
<td class="content"> <td class="content">
{{companyInfo.otherInfo}}
<div>
<el-input
:disabled="!isEditing"
type="textarea"
v-model="companyInfo.otherInfo"
></el-input>
</div>
</td> </td>
</tr> </tr>
</table> </table>
<script> <script>
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等) //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》'; //例如:import 《组件名称》 from '《组件路径》';
import { upload } from "@api/common";


export default { export default {
props: { props: {
type: Object, type: Object,
default: () => {}, default: () => {},
}, },
isEditing: {
type: Boolean,
default: false,
},
}, },
//import引入的组件需要注入到对象中才能使用 //import引入的组件需要注入到对象中才能使用
components: {}, components: {},
//监控data中的数据变化 //监控data中的数据变化
watch: {}, watch: {},
//方法集合 //方法集合
methods: {},
methods: {
async afterReadUrl(file, imgUrlIndex) {
this.$data[`imageUrl${imgUrlIndex}`] = "";
this.$data[`imageUrl${imgUrlIndex}Loading`] = true;
let photo2Url = await this.uploadImg(file, `imageUrl${imgUrlIndex}Loading`);
this.$data[`imageUrl${imgUrlIndex}`] = photo2Url;
this.$forceUpdate();
},
// 上传图片
async uploadImg(file, dataKey) {
let imgUrl;
const formData = new FormData(); // 声明一个FormData对象
formData.append("uploadFile", file.file);
await upload(formData)
.then(res => {
if (res.data.status == 0) {
imgUrl = res.data.data;
this.$data[dataKey] = false;
} else {
this.$message.error("上传失败,请重新上传!");
}
})
.catch(error => {
this.$data[dataKey] = false;
this.$message.error("上传失败,请重新上传!");
console.log(error);
});
return imgUrl;
},
},
//生命周期 - 创建完成(可以访问当前this实例) //生命周期 - 创建完成(可以访问当前this实例)
created() {}, created() {},
//生命周期 - 挂载完成(可以访问DOM元素) //生命周期 - 挂载完成(可以访问DOM元素)
@include border-box; @include border-box;
} }
.table_box { .table_box {
width: 100%;
border: 1px solid #bcd8e9; border: 1px solid #bcd8e9;
tr { tr {
height: 48px; height: 48px;
.content { .content {
padding: 20px; padding: 20px;
@include border-box; @include border-box;
.avatar-uploader {
@include size(120px, 96px);
margin-right: 25px;
.upload_text {
@include border-box;
@include size(120px, 96px);
}
::v-deep .el-upload {
@include size(100%, 100%);
cursor: pointer;
position: relative;
overflow: hidden;
}
}
::v-deep .el-upload--picture-card {
border: none;
}
.company_img { .company_img {
@include size(120px, 96px); @include size(120px, 96px);
margin-right: 25px; margin-right: 25px;
} }
} }
::v-deep .el-textarea.is-disabled .el-textarea__inner {
background: #fff;
border: none;
@include font(14px, #334a5f);
}
} }
} }
</style> </style>

+ 38
- 15
digital-park-web/digital-park/src/views/park-enterprises/components/TableItem.vue Просмотреть файл

<template> <template>
<div class="table_box"> <div class="table_box">
<el-table :data="tableData" width="100%" :height="height" :row="rowHeight" border> <el-table :data="tableData" width="100%" :height="height" :row="rowHeight" border>
<el-table-column type="index" align="center" label="列号" width="80"></el-table-column>
<el-table-column
v-if="index"
type="index"
align="center"
label="列号"
width="80"
></el-table-column>

<template v-for="(item, index) in tableTitle"> <template v-for="(item, index) in tableTitle">
<slot v-if="item.slot" :name="item.slot"></slot> <slot v-if="item.slot" :name="item.slot"></slot>
<el-table-column <el-table-column
:label="item.label" :label="item.label"
:min-width="item.minWidth ? item.minWidth : ''" :min-width="item.minWidth ? item.minWidth : ''"
:width="item.width ? item.width : ''" :width="item.width ? item.width : ''"
></el-table-column>
:show-overflow-tooltip="item.overHidden || true"
>
<template slot-scope="scope">
<span>{{ scope.row[item.property] || "--" }}</span>
</template>
</el-table-column>
</template> </template>
<el-table-column v-if="operation" label="操作" align="center">
<template slot-scope="scope">
<slot name="menu" :row="scope.row" :$index="scope.$index" />
</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
</template> </template>
//import引入的组件需要注入到对象中才能使用 //import引入的组件需要注入到对象中才能使用
components: {}, components: {},
props: { props: {
// 是否设置序号,默认设置
index: {
type: Boolean,
default: () => {
return false;
},
},
// 表格数据
tableData: { tableData: {
// 表格数据
type: Array, type: Array,
default: () => { default: () => {
return []; return [];
}, },
}, },
// 表头标题
tableTitle: { tableTitle: {
// 表格头标题
type: Array, type: Array,
require: true, require: true,
}, },
// 表格高度
height: { height: {
// 表格高度
type: [Number, String], type: [Number, String],
default: "100%", default: "100%",
}, },
// 表格行高
rowHeight: { rowHeight: {
// 表格行高
type: [Number, String], type: [Number, String],
default: 44, default: 44,
}, },
// 是否有操作列,默认无
operation: {
type: Boolean,
default: () => {
return false;
},
},
}, },
data() { data() {
//这里存放数据 //这里存放数据
//监控data中的数据变化 //监控data中的数据变化
watch: {}, watch: {},
//方法集合 //方法集合
methods: {
tableCellStyle() {
// return "border-color: #bcd8e9;";
},
// 修改 table header cell的背景色
tableHeaderCellStyle() {
// return "border-color: #bcd8e9;";
},
},
methods: {},
//生命周期 - 创建完成(可以访问当前this实例) //生命周期 - 创建完成(可以访问当前this实例)
created() {}, created() {},
//生命周期 - 挂载完成(可以访问DOM元素) //生命周期 - 挂载完成(可以访问DOM元素)

+ 2
- 1
digital-park-web/digital-park/vue.config.js Просмотреть файл

proxy: { proxy: {
"/domain": { "/domain": {
// target: "http://localhost:80", // target: "http://localhost:80",
target: "http://192.168.18.236:18888/",
// target: "http://192.168.18.236:18888/",
target: "http://192.168.18.138:18888/",
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
"^/domain": "", "^/domain": "",

Загрузка…
Отмена
Сохранить