weipengfei 253fa0a543 优化
2023-08-03 14:05:16 +08:00

446 lines
13 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<view class="item">
<u-skeleton :loading="skeleton" :animate="true" title rows="1" rows-width="100%" rowsHeight="56"></u-skeleton>
<block v-if="!skeleton">
<view class="title">公司基本信息</view>
<view class="card">
<view class="top">
<view class="left">
<image src="../../static/img/contract/company.png"></image>
<view class="text">
<view class="name">{{company.company_name}}</view>
<view class="right">{{company.company_type_name||company.company_type}}</view>
<view class="code">社会代码{{company.organization_code}}</view>
</view>
</view>
</view>
<view class="bottom">
<view class="left">
<uni-icons type="location"></uni-icons>
<view class="location">区域:</view>
</view>
<view style="flex: 1;">{{company.address}}</view>
</view>
</view>
</block>
</view>
<view class="item" v-show="skeleton||contract.contract_no">
<u-skeleton :loading="skeleton" :animate="true" title rows="2" rows-width="100%" rowsHeight="56"></u-skeleton>
<block v-if="!skeleton">
<view class="title">电子合同</view>
<view class="card">
<view class="one">
<view class="info">
<view class="info_item">甲方:{{contract.party_a_name}}</view>
<view class="info_item">乙方:{{contract.party_b_name}}</view>
<view class="info_item">合同类型:{{contract.contract_type_name}}</view>
<view class="info_item">合同编号:{{contract.contract_no}}</view>
</view>
</view>
<u-line v-if="contract.contract_no" color="#999999FF" style="margin: 31rpx 0;"></u-line>
<view class="contract" v-if="contract.contract_no">
<view class="left">
<image class="contract_img" src="../../static/img/contract/pdf.png"></image>
<view class="text">
<view class="name">合同</view>
<view>
<!-- <text class="nickname">张郭郭</text> -->
<text>{{contract.create_time}}</text>
</view>
</view>
</view>
<view class="right" @click="naviTo(contract.contract_no)">
<!-- <image class="icon"></image> -->
<uni-icons type="paperclip" color="#3274F9"></uni-icons>
<view>查看</view>
</view>
</view>
</view>
</block>
</view>
<view class="item">
<u-skeleton :loading="skeleton" :animate="true" title rows="2" rows-width="100%" rowsHeight="56"></u-skeleton>
<block v-if="!skeleton">
<view class="title">
<text>联系人管理</text>
<!-- <view>新增</view> -->
</view>
<view class="card">
<view class="one">
<view class="linkman">
<view style="height: 30rpx;width: 6rpx;background-color: #3175f9;border-radius: 3rpx;margin-right: 8rpx;"></view>
主要联系人
</view>
<view class="info">
<view class="info_item">姓名:{{company.master_name}}</view>
<view class="info_item">职位:{{company.master_position}}</view>
<view class="info_item" @click="copyPhone(company.master_phone)">联系电话:{{company.master_phone}}</view>
<view class="info_item" @click="copyPhone(company.master_email, '邮箱')">邮箱:{{company.master_email}}</view>
</view>
</view>
<view style="height: 32rpx;"></view>
<view class="one" v-for="(other, index) in company.other_contacts" :key="index">
<block v-if="other.name!=''">
<view class="linkman">
<view style="height: 30rpx;width: 6rpx;background-color: #3175f9;border-radius: 3rpx;margin-right: 8rpx;"></view>
其他联系人
</view>
<view class="info">
<view class="info_item">姓名{{other.name}}</view>
<view class="info_item">职位{{other.position}}</view>
<view class="info_item" @click="copyPhone(other.phone)">联系电话{{other.phone}}</view>
<view class="info_item" @click="copyPhone(other.email, '邮箱')">邮箱{{other.email}}</view>
</view>
</block>
</view>
</view>
</block>
</view>
<view class="item">
<u-skeleton :loading="skeleton" :animate="true" title rows="2" rows-width="100%" rowsHeight="56"></u-skeleton>
<block v-if="!skeleton">
<view class="title">资质信息</view>
<view class="image_box" style="background-color: #fff;border-radius: 7px 7px 7px 7px;">
<u--image class="image" @click="priview(company.qualification.business_license)"
:src="company.qualification.business_license" v-if="company.qualification.business_license" :lazy-load="true">
<template v-slot:loading>
<u-loading-icon color="#333"></u-loading-icon>
</template>
</u--image>
<u--image class="image" @click="priview(company.qualification.business_licenseB)"
:src="company.qualification.business_licenseB" v-if="company.qualification.business_licenseB" :lazy-load="true">
<template v-slot:loading>
<u-loading-icon color="#333"></u-loading-icon>
</template>
</u--image>
<u--image class="image" @click="priview(company.qualification.bank_account)"
:src="company.qualification.bank_account" v-if="company.qualification.bank_account" :lazy-load="true">
<template v-slot:loading>
<u-loading-icon color="#333"></u-loading-icon>
</template>
</u--image>
<u--image class="image" @click="priview(company.qualification.bank_accountB)"
:src="company.qualification.bank_accountB" v-if="company.qualification.bank_accountB" :lazy-load="true">
<template v-slot:loading>
<u-loading-icon color="#333"></u-loading-icon>
</template>
</u--image>
</view>
</block>
</view>
</view>
</template>
<script>
import { contractView } from "@/api/contract.js"
import { companyView } from "@/api/company.js"
import { download_file } from "@/api/junziqian.js"
import { Toast } from '@/libs/uniApi.js'
export default {
name: "company",
data() {
return {
skeleton: true,
company: {
qualification: {
bank_account: "",
bank_accountB: "",
business_license: "",
business_licenseB: "",
},
},
contract: {},
users: [],
current: 1
}
},
props: ['id', 'type'],
mounted() {
this.initContract(this.$props.id, this.$props.type || null);
},
methods: {
naviTo(contract_no) {
download_file({ applyNo: contract_no }).then(res => {
if (res.code != 1) {
Toast(res.msg)
}
uni.navigateTo({
url: `/subpkg/pdfView/pdfView?url=${res.data.url}`
})
})
},
naviBack() {
uni.navigateBack()
},
async initContract(id, type = "contract") {
let res;
//判断是合同还是公司
if (id && (type == "contract" || type == null)) {
res = await contractView({ id });
} else {
if (id > 0) {
res = await companyView({ id });
} else {
res = await companyView();
}
}
this.company = res.data.company;
uni.$emit('companyInfo', this.company); //发送全局事件
this.user = res.data.user;
this.contract = res.data.contract;
this.skeleton = false;
// console.log(res.data);
},
//查看图片
priview(url) {
uni.previewImage({
urls: [url],
longPressActions: {
itemList: ['保存图片'],
success: function(data) {
if (data.tapIndex === 0) {
uni.saveImageToPhotosAlbum({
filePath: url,
success: function() {
uni.showToast({
title: '保存成功',
icon: 'success'
})
},
fail: function() {
uni.showToast({
title: '保存失败',
icon: 'none'
})
}
})
}
}
}
})
},
copyPhone(str="", type="号码"){
if(str) uni.setClipboardData({
data:str+"",
success: (e) => {
Toast(type+'已复制')
},
fail: (e) => {
Toast('复制失败')
}
})
}
},
}
</script>
<style lang="scss" scoped>
.item {
padding: 31.5rpx 28rpx;
.title {
margin-bottom: 21rpx;
font-size: 35rpx;
font-weight: 500;
color: #333333;
display: flex;
justify-content: space-between;
}
.card {
width: 694rpx;
// height: 231rpx;
padding: 28rpx;
background: #FFFFFF;
border-radius: 14rpx 14rpx 14rpx 14rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
.top {
display: flex;
justify-content: space-between;
.left {
display: flex;
image {
width: 142rpx;
height: 142rpx;
margin-right: 28rpx;
background: #CCCCCC;
border-radius: 14rpx 14rpx 14rpx 14rpx;
opacity: 1;
}
.text {
display: flex;
flex-direction: column;
justify-content: space-between;
.name {
font-size: 32rpx;
font-weight: 500;
color: rgba(0, 0, 0, 0.8);
}
.code {
font-size: 28rpx;
font-weight: 400;
color: #666666;
}
}
}
.right {
font-size: 28rpx;
font-weight: 500;
color: $theme-oa-color;
}
}
.bottom {
display: flex;
align-items: flex-start;
color: #666666FF;
margin-top: 32rpx;
.left{
display: flex;
align-items: center;
.location {
margin-left: 8rpx;
}
}
}
.one {
.linkman {
// height: 44rpx;
font-size: 32rpx;
font-weight: 500;
color: #333333;
margin-bottom: 28rpx;
display: flex;
align-items: center;
}
.info {
font-size: 28rpx;
font-weight: 400;
color: #666666;
line-height: 45rpx;
}
}
.contract {
display: flex;
justify-content: space-between;
.left {
display: flex;
.contract_img {
width: 102rpx;
height: 102rpx;
background: #F5F5F5;
border-radius: 14rpx 14rpx 14rpx 14rpx;
margin-right: 21rpx;
}
.text {
display: flex;
flex-direction: column;
justify-content: space-between;
.name {
font-size: 32rpx;
;
font-weight: 500;
color: rgba(0, 0, 0, 0.8);
line-height: 35rpx;
}
.nickname {
margin-right: 35rpx;
}
text {
height: 39rpx;
font-size: 28rpx;
font-weight: 400;
color: #666666;
line-height: 35rpx;
}
}
}
.right {
font-size: 28rpx;
font-weight: 500;
color: $theme-oa-color;
line-height: 35rpx;
display: flex;
justify-content: center;
align-items: center;
.icon {
width: 35rpx;
height: 39rpx;
background-color: $theme-oa-color;
opacity: 1;
margin-right: 10rpx
}
}
}
}
.image_box {
display: flex;
justify-content: space-between;
flex-direction: column;
align-items: center;
padding: 28rpx;
.image {
border-radius: 20rpx;
overflow: hidden;
margin-bottom: 28rpx;
image{
width: 650rpx;
height: 455rpx;
background-color: #7f7f7f;
}
}
}
}
.back_btn {
width: 694rpx;
height: 84rpx;
background: $theme-oa-color;
border-radius: 42rpx 42rpx 42rpx 42rpx;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
margin: 30rpx auto;
}
.stop_btn {
width: 694rpx;
height: 84rpx;
border-radius: 42rpx 42rpx 42rpx 42rpx;
display: flex;
justify-content: center;
align-items: center;
color: $theme-oa-color;
background-color: transparent;
margin: 30rpx auto;
}
</style>