fix:改版

This commit is contained in:
zhangwenzan 2025-08-21 09:10:27 +08:00
parent 1104ee84c3
commit a27e241add
23 changed files with 1853 additions and 22 deletions

View File

@ -5,7 +5,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title>悟空CRM</title>
<title>金财云联CRM</title>
<script src="./static/client.js"></script>
</head>

View File

@ -0,0 +1,100 @@
import request from '@/utils/request'
// 使用登记序号查询纳税人资格认定
export function getNsrzg(data) {
return request({
url: 'crmNsrzg/queryByDjxh',
method: 'post',
data: {
djxh: data
},
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
// 使用登记序号 年度 获取企业信用等级
export function getQynsrXyDj(data) {
return request({
url: 'crmQynsrdj/queryByDjxhAndTime',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
// 使用登记序号 月度 获取企业税负率
export function getQySfl(data) {
return request({
url: 'crmQysfl/queryByDjxhAndTime',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
// 使用登记序号 月度 获取企业参保人数
export function getQyCbrs(data) {
return request({
url: 'crmQycbrs/queryByDjxhAndTime',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
// 使用登记序号 月度 获取企业风险明细
export function getQyFxmx(data) {
return request({
url: 'crmQyfxmx/queryByDjxhAndTime',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
// 使用登记序号 月度 获取企业年度申报
export function getQyFxndsb(data) {
return request({
url: 'crmQysdsndsb/queryByDjxhAndTime',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
// 使用登记序号 月度 获取企业发票信息
export function getQyFpxx(data) {
return request({
url: 'crmQyjxfp/queryMergeListByShxydmAndTime',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
// 获取工商登记信息
export function getQygsxx(data) {
return request({
url: 'crmGsdjxx/queryByNsrmc/' + data,
method: 'post',
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}

15
src/api/crm/qyjbxx.js Normal file
View File

@ -0,0 +1,15 @@
import request from '@/utils/request'
/**
* 通过客户Id获取企业基本信息
*/
export function getQyjbxxByCustComer(data) {
return request({
url: 'crmQyjbxx/queryByCustomerId',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}

23
src/api/crm/risk.js Normal file
View File

@ -0,0 +1,23 @@
import request from '@/utils/request'
export function getQyRiskData(data) {
return request({
url: 'crmGetV3Data/resp',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
export function getQyRiskMxData(id) {
return request({
url: '/crmGetV3Data/riskJcmx/' + id,
method: 'post',
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -2,7 +2,7 @@ const getLocationOrigin = () => {
return 'http://localhost:55665'
}
const companyName = '悟空CRM'
const companyName = '金财云联CRM'
const version = 'V11.3.3'
const baiduKey = '百度key'

View File

@ -1114,6 +1114,9 @@
.wk-customer:before {
content: "\e613";
}
.wk-corporateseas:before {
content: "\e634";
}
.wk-contacts:before {
content: "\e624";

View File

@ -28,7 +28,7 @@
type="primary"
icon="wk wk-transfer"
@click.native="handleTypeClick('transfer')">转移</el-button>
<el-button type="primary" icon="el-icon-s-opportunity" @click="showQyHx">企业画像</el-button>
<el-button
v-if="showEdit"
class="head-handle-button xr-btn--green"
@ -112,6 +112,12 @@
:visible.sync="putPoolShow"
:selection-list="[detail]"
@handle="handleCallBack" />
<enterprise-profile
:visible.sync="EnterpriseProfileShow"
:qyjbxx="qyjbxx"
:id="id"
:pool-id="poolId"
/>
</div>
</template>
<script type="text/javascript">
@ -143,11 +149,13 @@ import { crmInvoiceDeleteIdsAPI } from '@/api/crm/invoice'
import TransferHandle from './SelectionHandle/TransferHandle' //
import AllocHandle from './SelectionHandle/AllocHandle' //
import DealStatusHandle from './SelectionHandle/DealStatusHandle' //
import PutPoolHandle from './SelectionHandle/PutPoolHandle' //
import PutPoolHandle from './SelectionHandle/PutPoolHandle'
import EnterpriseProfile from './EnterpriseProfile.vue' //
export default {
name: 'CRMDetailHead',
components: {
EnterpriseProfile,
TransferHandle,
AllocHandle,
DealStatusHandle,
@ -164,6 +172,12 @@ export default {
type: String,
default: ''
},
qyjbxx: {
type: Object,
default: () => {
return {}
}
},
// 使
isSeas: {
type: Boolean,
@ -190,7 +204,8 @@ export default {
transferDialogShow: false, //
allocDialogShow: false, //
dealStatusShow: false, //
putPoolShow: false //
putPoolShow: false, //
EnterpriseProfileShow: false //
}
},
computed: {
@ -254,7 +269,6 @@ export default {
// 8
return this.isSeas ? false : this.crm[this.crmType].update
},
//
showGet() {
return this.isSeas && this.whetherTypeShowByPermision('get')
@ -680,6 +694,10 @@ export default {
return true
},
showQyHx() {
console.log(this.EnterpriseProfileShow)
this.EnterpriseProfileShow = true
},
/**
* 上下页切换

View File

@ -326,6 +326,7 @@ export default {
filedGetInformationAPI(params)
.then(res => {
console.log('res' + res)
const baseList = []
const systemList = []

View File

@ -0,0 +1,645 @@
<template>
<div v-loading="loading" class="b-cont">
<sections
:key="1"
title="企业信息"
class="b-cells"
content-height="auto">
<el-descriptions-item label="用户名">kooriookami</el-descriptions-item>
<el-form
ref="editForm"
class="el-form--flex"
label-position="left"
label-width="100px">
<el-form-item
v-for="item in list"
:key="item.value"
:label="item.name"
label-width="160px"
>
<template>
{{ getValue(item.value) }}
</template>
</el-form-item>
</el-form>
</sections>
</div>
</template>
<script type="text/javascript">
import { mapGetters } from 'vuex'
import { getQyjbxxByCustComer } from '@/api/crm/qyjbxx'
export default {
name: 'QyJbxx',
props: {
// ID
id: [String, Number],
poolId: [String, Number],
isSeas: {
type: Boolean,
default: false
},
qyjbxx: {
type: Object,
default: () => {
return {}
}
},
detail: {
type: Object,
default: () => {
return {}
}
},
//
crmType: {
type: String,
default: ''
},
//
filedList: Array,
//
otherList: Array,
//
ignoreFields: {
type: Array,
default: () => {
return []
}
}
},
data() {
return {
loading: true,
list: [
{
index: 1,
name: '企业名称',
value: 'nsrmc'
},
{
index: 2,
name: '纳税人识别号',
value: 'nsrsbh'
},
{
index: 3,
name: '社会信用代码',
value: 'shxydm'
},
{
index: 4,
name: '课征主体登记类型代码',
value: 'kzztdjlxDm'
},
{
index: 5,
name: '登记注册类型代码',
value: 'djzclxDm'
},
{
index: 6,
name: '生产经营地址',
value: 'scjydz'
},
{
index: 7,
name: '生产经营地址行政区划数字代码',
value: 'scjydzxzqhszDm'
},
{
index: 8,
name: '纳税人状态代码',
value: 'nsrztDm'
},
{
index: 9,
name: '行业代码',
value: 'hyDm'
},
{
index: 10,
name: '注册地址',
value: 'zcdz'
},
{
index: 11,
name: '注册地址行政区划数字代码',
value: 'zcdzxzqhszDm'
},
{
index: 12,
name: '街道乡镇',
value: 'jdxzDm'
},
{
index: 13,
name: '登记日期',
value: 'djrq'
},
{
index: 14,
name: '跨区财产税主体登记标志',
value: 'kqccsztdjbz'
},
{
index: 15,
name: '主管税务局代码',
value: 'zgswjDm'
},
{
index: 16,
name: '主管税务所(科、分局)代码',
value: 'zgswskfjDm'
},
{
index: 17,
name: '税收管理员代码',
value: 'ssglyDm'
},
{
index: 18,
name: '非居民企业标志',
value: 'fjmqybz'
},
{
index: 19,
name: '有效标志',
value: 'yxbz'
},
{
index: 20,
name: '工商注销日期',
value: 'gszxrq'
},
{
index: 21,
name: '企业划型类别',
value: 'qyhxlbDm'
},
{
index: 22,
name: '企业划型来源',
value: 'qyhxly'
},
{
index: 23,
name: '经营范围',
value: 'jyfw'
},
{
index: 23,
name: '注册地联系电话',
value: 'zcdlxdh'
},
{
index: 24,
name: '注册地邮政编码',
value: 'zcdyzbm'
},
{
index: 25,
name: '生产经营地联系电话',
value: 'scjydlxdh'
},
{
index: 26,
name: '生产经营地邮政编码',
value: 'scjydyzbm'
},
{
index: 27,
name: '核算方式代码',
value: 'hsfsDm'
},
{
index: 28,
name: '从业人数',
value: 'cyrs'
},
{
index: 29,
name: '外籍从业人数',
value: 'wjcyrs'
},
{
index: 30,
name: '合伙人数',
value: 'hhrs'
},
{
index: 31,
name: '雇工人数',
value: 'ggrs'
},
{
index: 32,
name: '固定工人数',
value: 'gdgrs'
},
{
index: 33,
name: '组织机构类型代码',
value: 'zzjglxDm'
},
{
index: 34,
name: '会计制度(准则)代码',
value: 'kjzdzzDm'
},
{
index: 35,
name: '税务代理人联系电话',
value: 'swdlrlxdh'
},
{
index: 36,
name: '税务代理人电子信箱',
value: 'swdlrdzxx'
},
{
index: 37,
name: '注册资本',
value: 'zczb'
},
{
index: 38,
name: '投资总额',
value: 'tzze'
},
{
index: 39,
name: '自然人投资比例',
value: 'zrrtzbl'
},
{
index: 40,
name: '外资投资比例',
value: 'wztzbl'
},
{
index: 41,
name: '国有投资比例',
value: 'gytzbl'
},
{
index: 42,
name: '国有控股类型代码',
value: 'gykglxDm'
},
{
index: 43,
name: '总分机构类型代码',
value: 'zfjglxDm'
},
{
index: 44,
name: '法定代表人姓名',
value: 'fddbrxm'
},
{
index: 45,
name: '法定代表人身份证件类型代码',
value: 'fddbrsfzjlxDm'
},
{
index: 46,
name: '法定代表人身份证号码',
value: 'fddbrsfzjhm'
},
{
index: 47,
name: '法定代表人固定电话',
value: 'fddbrgddh'
},
{
index: 48,
name: '法定代表人移动电话',
value: 'fddbryddh'
},
{
index: 49,
name: '法定代表人电子信箱',
value: 'fddbrdzxx'
},
{
index: 50,
name: '财务负责人姓名',
value: 'cwfzrxm'
},
{
index: 51,
name: '财务负责人身份证件种类代码',
value: 'cwfzrsfzjzlDm'
},
{
index: 52,
name: '财务负责人身份证件号码',
value: 'cwfzrsfzjhm'
},
{
index: 53,
name: '财务负责人固定电话',
value: 'cwfzrgddh'
},
{
index: 54,
name: '财务负责人移动电话',
value: 'cwfzryddh'
},
{
index: 55,
name: '财务负责人电子信箱',
value: 'cwfzrdzxx'
},
{
index: 56,
name: '办税人姓名',
value: 'bsrxm'
},
{
index: 57,
name: '办税人身份证件种类代码',
value: 'bsrsfzjzlDm'
},
{
index: 58,
name: '办税人身份证件号码',
value: 'bsrsfzjhm'
},
{
index: 59,
name: '办税人固定电话',
value: 'bsrgddh'
},
{
index: 60,
name: '办税人移动电话',
value: 'bsryddh'
},
{
index: 61,
name: '办税人电子信箱',
value: 'bsrdzxx'
},
{
index: 62,
name: '临时税务登记有效期起',
value: 'lsswdjyxqq'
},
{
index: 63,
name: '临时税务登记有效期止',
value: 'lsswdjyxqz'
},
{
index: 64,
name: '税务代理人纳税人识别号',
value: 'swdlrnsrsbh'
},
{
index: 65,
name: '税务代理人名称',
value: 'swdlrmc'
},
{
index: 66,
name: '文化事业建设费缴费信息登记标志',
value: 'whsyjsfjfxxdjbz'
},
{
index: 67,
name: '增值税经营类别',
value: 'zzsjylb'
},
{
index: 68,
name: '印花税缴纳方式代码',
value: 'yhsjnfsDm'
},
{
index: 69,
name: '征收项目城乡标志代码',
value: 'zzsqylxDm'
},
{
index: 70,
name: '增值税企业类型代码',
value: 'gykglxDm'
},
{
index: 71,
name: '国家或地区数字代码',
value: 'gjhdqszDm'
},
{
index: 72,
name: '企业管理层级编号',
value: 'qyglcjbh'
},
{
index: 73,
name: '企业所属集团代码',
value: 'qyssjtDm'
},
{
index: 74,
name: '受托方社会信用代码',
value: 'stfshxydm'
}
]
}
},
inject: ['rootTabs'],
computed: {
...mapGetters(['crm'])
},
watch: {
id(val) {
if (!this.filedList) {
if (!this.qyjbxx) {
this.getBaseInfo(true)
}
}
},
'rootTabs.currentName'(val) {
if (val === 'qyJbxx') {
this.getBaseInfo(false)
}
}
},
created() {
if (this.qyjbxx) {
console.log(this.qyjbxx)
this.loading = false
} else {
this.getBaseInfo(true)
}
},
methods: {
/**
* 获取基础信息
*/
async getBaseInfo(loading) {
this.loading = !!loading
const params = {
customerId: this.id,
poolId: this.poolId
}
await getQyjbxxByCustComer(params).then(res => {
this.qyjbxx = res.data
console.log('获取数据')
console.log(this.id)
console.log(this.poolId)
this.loading = false
}).catch(() => {
this.loading = false
})
},
getValue(data) {
console.log(this.qyjbxx)
console.log(data)
if (this.qyjbxx) {
return this.qyjbxx[data]
}
return '无'
}
}
}
</script>
<style lang="scss" scoped>
.b-cont {
position: relative;
padding: 15px;
height: 100%;
overflow-y: auto;
overflow-y: overlay;
&__handle {
position: absolute;
text-align: right;
right: 20px;
width: 100%;
z-index: 3;
}
}
.section {
margin-top: 0;
/deep/ .content {
overflow: hidden;
}
}
.el-input-number {
width: 100%;
/deep/ .el-input__inner {
text-align: left;
padding: 0 8px;
}
}
.b-cells + .b-cells {
margin-top: 25px;
}
.b-cell {
padding: 0 10px;
}
.el-form--flex {
margin: 20px 10px 0;
/deep/ .el-form-item {
padding: 0 40px 0 15px;
margin-bottom: 10px;
max-width: 100%;
.el-form-item__content {
position: relative;
min-height: 40px;
line-height: 1.5;
}
.el-form-item__label {
color: #777;
font-size: 13px;
line-height: 1.5;
}
&:hover {
.form-item__edit {
display: inline;
}
}
&.is-desc_text {
.el-form-item__content {
margin-left: 0 !important;
}
}
}
}
.form-item__value {
font-size: 13px;
color: #333;
line-height: 1.5;
min-height: 22px;
white-space: pre-wrap;
word-wrap: break-word;
word-break: break-all;
.wk-field-view {
width: 0;
flex: 1;
}
}
.form-item__edit {
margin-left: 5px;
font-size: 14px;
color: #999;
cursor: pointer;
display: none;
flex-shrink: 0;
&:hover {
color: $xr-color-primary;
}
}
.can-check {
color: $xr-color-primary !important;
cursor: pointer;
}
.is-block {
flex-basis: 100% !important;
}
.b-cell-b {
width: auto;
.b-cell-name {
width: 100px;
margin-right: 10px;
font-size: 13px;
flex-shrink: 0;
color: #777;
}
.b-cell-value {
font-size: 13px;
color: #333;
line-height: 30px;
white-space: pre-wrap;
word-wrap: break-word;
word-break: break-all;
}
}
</style>

View File

@ -0,0 +1,279 @@
<template>
<div
v-loading="loading"
v-empty="nopermission"
class="rc-cont"
xs-empty-icon="nopermission"
xs-empty-text="暂无权限">
<div class="params">
所属期
<el-date-picker
v-model="params.ssqQ"
format="yyyy-MM" value-format="yyyy-MM-dd"
type="month"
placeholder="选择所属期"
@change="getDetail"/>
<el-button style="margin-left: 10px" type="primary" @click="getDetail">查询</el-button>
<!-- <el-button style="margin-left: 10px" type="success">同步</el-button>-->
</div>
<el-table
v-show="fieldList.length > 0"
:data="list"
:height="tableHeight"
:cell-class-name="cellClassName"
stripe
style="width: 100%;border: 1px solid #E6E6E6;"
@row-click="handleRowClick"
@selection-change="selectionList = $event">
<el-table-column
v-if="canRelation"
show-overflow-tooltip
type="selection"
align="center"
width="55"/>
<el-table-column
v-for="(item, index) in fieldList"
:key="index"
:prop="item.prop"
:label="item.label"
show-overflow-tooltip/>
<el-table-column
label="操作"
width="100">
<template slot-scope="scope">
<flexbox justify="center">
<el-button
class="set-chief-btn"
type="text"
@click.native="detailHandle(scope.row)">查看详情
</el-button>
</flexbox>
</template>
</el-table-column>
<template slot="empty">
<span>该企业未使用v3风险检测</span>
</template>
</el-table>
<el-dialog
:visible.sync="dialogVisible"
:before-close="handleClose"
:append-to-body="true"
title="检测明细"
width="70%">
<el-table
:data="riskZbmxList"
:height="tableHeight"
style="width: 100%;border: 1px solid #E6E6E6;"
>
<el-table-column label="检测指标" prop="fxzbDm"/>
<el-table-column label="检测结果" prop="fxzbJcjg">
<template slot-scope="scope">
<i v-if="scope.row.fxzbJcjg == '无风险'" style="color: #67C23A" class="el-icon-success"/>
<i v-else style="color: #F56C6C" class="el-icon-error"/>
{{ scope.row.fxzbJcjg }}
</template>
</el-table-column>
</el-table>
</el-dialog>
</div>
</template>
<script type="text/javascript">
import CRMAllCreate from './CRMAllCreate'
import CrmRelative from '@/components/CreateCom/CrmRelative'
import { getPermissionByKey } from '@/utils'
import { getQyRiskData, getQyRiskMxData } from '../../../api/crm/risk'
export default {
name: 'Risk', //
components: {
CRMFullScreenDetail: () => import('@/components/CRMFullScreenDetail'),
CRMAllCreate,
CrmRelative
},
mixins: [],
props: {
// ID
id: [String, Number],
// ID
contactsId: [String, Number],
//
crmType: {
type: String,
default: ''
},
qyjbxx: {
type: Object,
default: () => {
return {}
}
},
//
isSeas: {
type: Boolean,
default: false
},
//
detail: {
type: Object,
default: () => {
return {}
}
}
},
data() {
return {
loading: false,
nopermission: false,
list: [],
dialogVisible: false,
riskZbmxList: [],
params: {
nsrsbh: '',
ssqQ: ''
},
fieldList: [
{ prop: 'nsrmc', width: '200', label: '纳税人名称' },
{ prop: 'qysbh', width: '200', label: '纳税人识别号' },
{ prop: 'jcSsqq', width: '200', label: '检测所属期' },
{ prop: 'jcsj', width: '200', label: '检测时间' },
{ prop: 'fxjcPcjg', width: '200', label: '检测结果' }
],
tableHeight: '520px',
showFullDetail: false,
//
isCreate: false,
// ID
detailId: '',
//
createActionInfo: { type: 'relative', crmType: this.crmType, data: {}},
//
showRelativeView: false,
selectionList: []
}
},
inject: ['rootTabs'],
computed: {
// id
customerId() {
return this.detail.customerId
},
//
canRelation() {
return this.crmType == 'business'
},
contactsSave() {
return !!getPermissionByKey('crm.contacts.save')
}
},
watch: {
id(val) {
this.list = []
this.getDetail()
},
'rootTabs.currentName'(val) {
if (val === 'Risk') {
this.getDetail(false)
}
}
},
mounted() {
this.getDetail()
},
methods: {
/**
* 获取数据
*/
getDetail(loading = true) {
this.loading = loading
if (this.qyjbxx) {
console.log(this.qyjbxx)
this.params.nsrsbh = this.qyjbxx.nsrsbh
}
if (!this.params.ssqQ) {
var now = new Date()
console.log(now.getMonth())
var month = now.getMonth()
var year = now.getFullYear()
// var date = new Date(year, month - 1, 1)
this.params.ssqQ = year + '-' + month + '-01'
}
console.log(this.params)
getQyRiskData(this.params)
.then(res => {
console.log(res)
this.nopermission = false
this.loading = false
this.list = res.data
})
.catch(data => {
if (data.code == 102) {
this.nopermission = true
}
this.loading = false
})
},
/**
* 当某一行被点击时会触发该事件
*/
handleRowClick(row, column, event) {
},
/**
* 通过回调控制class
*/
cellClassName({ row, column, rowIndex, columnIndex }) {
if (column.property === 'name') {
return 'can-visit--underline'
} else {
return ''
}
},
/**
* 打开风险检测详情
*/
detailHandle(data) {
console.log(data.jcpcUuid)
if (data.jcpcUuid) {
getQyRiskMxData(data.jcpcUuid).then(res => {
this.riskZbmxList = res.data
this.dialogVisible = true
}).catch(data => {
this.$message.error(`系统异常`)
})
}
},
/*
时间处理
*/
formatterTime(row, column) {
const data = row[column.property]
return /\d{4}-\d{1,2}-\d{1,2}/g.exec(data)
}
}
}
</script>
<style lang="scss" scoped>
@import '../styles/relativecrm.scss';
.set-chief-btn {
font-size: 12px;
padding: 4px 12px;
}
.chief {
font-size: 12px;
color: #333;
i {
font-size: 14px;
color: #389e0b;
margin-right: 3px;
}
}
.params{
padding-bottom: 15px;
}
</style>

View File

@ -0,0 +1,694 @@
<template>
<div>
<el-dialog
v-loading="qysdsLoading"
:visible.sync="visible"
:before-close="handleCancel"
:append-to-body="true"
:close-on-click-modal="false"
title="企业画像"
width="70%">
<el-tabs v-model="tabValue" type="border-card">
<el-tab-pane name="qygdxx" label="企业详情信息">
<sections
:title="'纳税人资格认定信息'"
:size="'18px'"
class="b-cells"
style="padding-bottom: 20px"
content-height="auto"/>
<el-descriptions
style="padding-left: 30px">
<el-descriptions-item
v-for="xx in qynsrzgxx"
:key="xx.name"
:label="xx.name">{{ xx.value }}
</el-descriptions-item>
</el-descriptions>
<sections
:title="'企业参保人数'"
:size="'18px'"
class="b-cells"
style="padding-bottom: 20px"
content-height="auto"/>
<div style="padding-bottom: 20px">
月份
<el-date-picker
v-model="xyDjyf"
format="yyyy-MM" value-format="yyyyMM"
type="month"
placeholder="选择月份"
@change="getqyCbrsData"/>
<el-button style="margin-left: 10px" type="primary" @click="getDetail">查询</el-button>
</div>
<el-table ref="refCbrs" :data="qycbrs" border>
<el-table-column label="登记序号" prop="djxh"/>
<el-table-column label="月份" prop="yf"/>
<el-table-column label="参保人数" prop="cbrs"/>
</el-table>
<sections
:title="'信用等级'"
:size="'18px'"
class="b-cells"
style="padding-bottom: 20px"
content-height="auto"/>
<div style="padding-bottom: 20px">
年度
<el-date-picker
v-model="xyDjnd"
format="yyyy" value-format="yyyy "
type="year"
placeholder="选择年度"
@change="getQypjData"/>
<el-button style="margin-left: 10px" type="primary" @click="getQypjData">查询</el-button>
</div>
<el-table ref="ref" :data="pjdjList" border>
<el-table-column label="登记序号" prop="djxh"/>
<el-table-column label="年度" prop="pjnd"/>
<el-table-column label="信用等级" prop="pjjg"/>
</el-table>
</el-tab-pane>
<el-tab-pane name="qygsxx" label="企业工商信息">
<sections
:title="'企业工商信息'"
:size="'18px'"
class="b-cells"
style="padding-bottom: 20px"
content-height="auto"/>
<el-descriptions
style="padding-left: 30px">
<el-descriptions-item
v-for="xx in qygsxx"
:key="xx.name"
:label="xx.name">{{ xx.value }}
</el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<el-tab-pane name="qyfxxx" label="企业风险信息">
<sections
:title="'企业风险信息'"
:size="'18px'"
class="b-cells"
style="padding-bottom: 20px"
content-height="auto"/>
<div style="padding-bottom: 20px">
年度
<el-date-picker
v-model="fxDjnd"
format="yyyy" value-format="yyyy"
type="year"
placeholder="选择年度"
@change="getQyfxxxData"/>
<el-button style="margin-left: 10px" type="primary" @click="getQyfxxxData">查询</el-button>
</div>
<el-table ref="refFx" :data="qyFxList" border>
<el-table-column label="登记序号" prop="djxh"/>
<el-table-column label="指标代码" prop="fxzbDm"/>
<el-table-column label="风险描述" prop="fxmx"/>
</el-table>
</el-tab-pane>
<el-tab-pane name="qysdsndsb" label="企业所得税年度申报">
<div style="padding-bottom: 20px">
年度
<el-date-picker
v-model="ndsbTime"
format="yyyy" value-format="yyyy"
type="year"
placeholder="选择年度"
@change="getQysdsndsbData()"/>
<el-button style="margin-left: 10px" type="primary" @click="getQysdsndsbData">查询</el-button>
</div>
<sections
:title="'企业所得税年度申报'"
:size="'18px'"
class="b-cells"
style="padding-bottom: 20px"
content-height="auto"/>
<el-table ref="refQysds" :data="qysdsList" border>
<el-table-column v-for="item in QysdsFieldList" :label="item.name" :prop="item.value"/>
<el-table-column
fixed="right"
label="操作"
width="60">
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click="openQysds(scope.row)"
>
</el-button>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane name="qyfphz" label="企业发票汇总">
<sections
:title="'销项发票汇总'"
:size="'18px'"
class="b-cells"
style="padding-bottom: 20px"
content-height="auto"/>
<el-table ref="refFx" :data="xxFpList" border>
<el-table-column label="年度" prop="nd"/>
<el-table-column label="销项不含税金额" prop="xxbhsje"/>
<el-table-column label="销项税额" prop="xxse"/>
<el-table-column label="销项价税合计" prop="xxjshj"/>
<el-table-column label="项年开票数量" prop="xxkpsl"/>
<el-table-column label="销项年最大开票额" prop="xxzdkpe"/>
</el-table>
<sections
:title="'进项发票汇总'"
:size="'18px'"
class="b-cells"
style="padding-bottom: 20px"
content-height="auto"/>
<el-table ref="refFx" :data="jxFpList" border>
<el-table-column label="年度" prop="nd"/>
<el-table-column label="进项不含税金额" prop="jxbhsje"/>
<el-table-column label="进项税额" prop="jxse"/>
<el-table-column label="进项价税合计" prop="jxjshj"/>
</el-table>
</el-tab-pane>
</el-tabs>
<el-dialog
:visible.sync="visibleQysds"
:before-close="cancelQysds"
:append-to-body="true"
:close-on-click-modal="false"
title="企业所得税年度申报"
width="70%">
<el-form
v-loading="qysdsLoading"
ref="editForm"
class="el-form--flex"
label-position="left"
label-width="100px">
<el-form-item
v-for="item in QysdsFieldList"
:key="item.value"
:label="item.name"
label-width="160px"
>
<template>
{{ getQysdsValue(item.value) }}
</template>
</el-form-item>
</el-form>
</el-dialog>
</el-dialog>
</div>
</template>
<script type="text/javascript">
import Qynsrzg from './EnterpriseProfile/qynsrzg.vue'
import qynsrzg from './EnterpriseProfile/qynsrzg.vue'
import Sections from './Sections.vue'
import {
getNsrzg,
getQyCbrs,
getQyFpxx,
getQyFxmx,
getQyFxndsb, getQygsxx,
getQynsrXyDj,
getQySfl
} from '../../../api/crm/EnterpriseProfile'
export default {
name: 'EnterpriseProfile',
components: { Sections, Qynsrzg },
mixins: [],
props: {
qyjbxx: {
type: Object,
default: () => {
return {}
}
},
id: [String, Number],
poolId: [String, Number],
visible: {
type: Boolean,
required: true,
default: false
}
},
data() {
return {
qysdsLoading: false,
visibleQysds: false,
xyDjyf: '',
fpTime: '',
ndsbTime: '',
qysdsData: {},
tabValue: 'qygdxx',
qynsrzgxx: [],
formList: [],
pjdjList: [],
xyDjnd: '',
qygsxx: [],
qycbrs: [],
qysflList: [],
qyFxList: [],
fxDjnd: '',
qysdsList: [],
qyFpList: [],
jxFpList: [],
xxFpList: [],
QysdsFieldList: [
{
index: 1,
name: 'uuid',
value: 'uuid'
},
{
index: 2,
name: '申报UUID',
value: 'sbuuid'
}, {
index: 3,
name: '税款所属期起',
value: 'skssqq'
}, {
index: 4,
name: '税款所属期止',
value: 'skssqz'
}, {
index: 5,
name: '凭证序号',
value: 'pzxh'
}, {
index: 6,
name: '营业收入',
value: 'yysr'
}, {
index: 7,
name: '营业成本',
value: 'yycb'
}, {
index: 8,
name: '营业税金及附加',
value: 'yysjFj'
}, {
index: 9,
name: '销售费用',
value: 'xsfy'
}, {
index: 10,
name: '管理费用',
value: 'glfy'
}, {
index: 11,
name: '财务费用',
value: 'cwfy'
}, {
index: 12,
name: '资产减值损失',
value: 'zcjzss'
}, {
index: 13,
name: '公允价值变动收益',
value: 'gyjzbdsy'
}, {
index: 14,
name: '投资收益',
value: 'tzsy'
}, {
index: 15,
name: '营业利润',
value: 'yylr'
}, {
index: 16,
name: '营业外收入',
value: 'yywsr'
}, {
index: 17,
name: '营业外支出',
value: 'yywzc'
}, {
index: 18,
name: '利润总额',
value: 'lrze'
}, {
index: 19,
name: '境外所得金额',
value: 'jwsdje'
}, {
index: 20,
name: '纳税调整增加额',
value: 'nstzzje'
}, {
index: 21,
name: '纳税调整减少额',
value: 'nstzjse'
}, {
index: 22,
name: '减:免税、减计收入及加计扣除',
value: 'msjjsrjjjkc'
}, {
index: 23,
name: '加:境外应税所得抵减境内亏损',
value: 'jwyssddjjnks'
}, {
index: 24,
name: '纳税调整后所得',
value: 'nstzhsd'
}, {
index: 25,
name: '减:所得减免',
value: 'sdjm'
}, {
index: 26,
name: '抵扣应纳税所得额',
value: 'dkynssde'
}, {
index: 27,
name: '弥补以前年度亏损',
value: 'mbyqndks'
}, {
index: 28,
name: '应纳税所得额',
value: 'ynssde'
}, {
index: 29,
name: '税率',
value: 'sl1'
}, {
index: 30,
name: '应纳所得税额',
value: 'ynsdse'
}, {
index: 31,
name: '减、免所得税额',
value: 'jmsdse'
}, {
index: 32,
name: '抵免所得税额',
value: 'dmsdse'
}, {
index: 33,
name: '应纳税额',
value: 'ynse'
}, {
index: 34,
name: '境外所得应纳所得税额',
value: 'jwsdynsdse'
}, {
index: 35,
name: '减:境外所得抵免所得税额',
value: 'jwsddmsdse'
}, {
index: 36,
name: '实际应纳所得税额',
value: 'sjynsdse'
}, {
index: 37,
name: '本年累计实际已预缴的所得税额',
value: 'bnljsjyyjSdse'
}, {
index: 38,
name: '本年应补退的所得税额',
value: 'bnybtSdse'
}, {
index: 39,
name: '总机构分摊本年应补(退)所得税额',
value: 'zjgftbnybtsdse'
}, {
index: 40,
name: '财政集中分配本年应补(退)所得税额',
value: 'czjzfpbnybtsdse'
}, {
index: 41,
name: '总机构主体生产经营部门分摊本年应补(退)所得税额',
value: 'zjgztscjybmftbnybtsdse'
}, {
index: 42,
name: '以前年度多缴的所得税额在本年抵减额',
value: 'yqnddjSdseBndje'
}, {
index: 43,
name: '以前年度应缴未缴在本年入库所得税额',
value: 'yqndYjwjzbnrksdse'
}
]
}
},
computed: {
qynsrzg() {
return qynsrzg
}
},
watch: {
'tabValue'(newVal, oldVal) {
if (newVal === 'qygdxx') {
this.getForm()
} else if (newVal === 'qysfl') {
this.getQySflData()
} else if (newVal === 'qyfxxx') {
this.getQyfxxxData()
} else if (newVal === 'qysdsndsb') {
this.getQysdsndsbData()
} else if (newVal === 'qyfphz') {
this.getQyfphzData()
} else if (newVal === 'nsrzgrz') {
this.getNsrzgData()
} else if (newVal === 'cbrs') {
this.getqyCbrsData()
} else if (newVal === 'qyxydj') {
this.getQypjData()
} else if (newVal === 'qygsxx') {
this.getQygsxxData()
}
}
},
mounted() {
this.getForm()
},
methods: {
getForm() {
this.getNsrzgData()
this.getqyCbrsData()
this.getQypjData()
},
openQysds(data) {
this.qysdsData = data
this.visibleQysds = true
},
cancelQysds() {
this.visibleQysds = false
},
handleCancel() {
console.log(this.id)
this.$emit('update:visible', false)
},
getQysdsValue(data) {
if (this.qysdsData) {
return this.qysdsData[data]
}
return '无'
},
getQyfphzData() {
this.qysdsLoading = true
const param = this.qyjbxx.shxydm ? this.qyjbxx.shxydm : this.qyjbxx.djxh
console.log(this.qyjbxx)
const qyfp = {
param: param
}
getQyFpxx(qyfp).then(res => {
console.log(res.data)
this.qyFpList = res.data
this.jxFpList = res.data.jxfpList
this.xxFpList = res.data.xxfpList
console.log(this.jxFpList)
this.qysdsLoading = false
})
},
getQysdsndsbData() {
this.qysdsLoading = true
const qysds = {
param: this.qyjbxx.djxh,
time: this.ndsbTime
}
getQyFxndsb(qysds).then(res => {
this.qysdsList = res.data
this.qysdsLoading = false
})
},
getQyfxxxData() {
this.qysdsLoading = true
const dqyfxYf = {
time: this.fxDjnd,
param: this.qyjbxx.djxh
}
getQyFxmx(dqyfxYf).then(res => {
this.qyFxList = res.data
this.qysdsLoading = false
})
},
getQySflData() {
this.qysdsLoading = true
const djxhNYf = {
param: this.qyjbxx.djxh
}
getQySfl(djxhNYf).then(res => {
this.qysflList = res.data
this.qysdsLoading = false
})
},
getqyCbrsData() {
this.qysdsLoading = true
const djxhNYf = {
time: this.xyDjyf,
param: this.qyjbxx.djxh
}
getQyCbrs(djxhNYf).then(res => {
this.qycbrs = res.data
console.log(res.data)
this.qysdsLoading = false
})
},
getQypjData() {
this.qysdsLoading = true
const djxhNd = {
time: this.xyDjnd,
param: this.qyjbxx.djxh
}
getQynsrXyDj(djxhNd).then(res => {
this.pjdjList = res.data
this.qysdsLoading = false
})
},
getNsrzgData() {
this.qysdsLoading = true
const data = this.qyjbxx.djxh
getNsrzg(data).then(res => {
this.qynsrzgxx = [
{
name: '认定凭证UUID',
value: res.data.rdpzuuid
},
{
name: '登记序号',
value: res.data.djxh
},
{
name: '流程实例ID',
value: res.data.lcslid
},
{
name: '纳税人资格类型代码',
value: res.data.nsrzglxDm
},
{
name: '有效期起',
value: res.data.yxqq
},
{
name: '有效期止',
value: res.data.yxqz
},
{
name: '数据中止日期',
value: res.data.sjzzrq
}
]
this.qysdsLoading = false
})
},
getQygsxxData() {
this.qysdsLoading = true
const nsrmc = this.qyjbxx.nsrmc
getQygsxx(nsrmc).then(res => {
this.qygsxx = [
{
name: '统一社会信用代码',
value: res.data.tyshxydm
},
{
name: '企业名称',
value: res.data.nsrmc
},
{
name: '登记注册类型',
value: res.data.djzclxDm
},
{
name: '开业日期',
value: res.data.kyrq
},
{
name: '证照号码',
value: res.data.zzhm
},
{
name: '法人姓名',
value: res.data.fddbrxm
},
{
name: '法人证件类型',
value: res.data.fddbrsfzjlxDm
},
{
name: '法人证件号码',
value: res.data.fddbrsfzjhm
},
{
name: '法人固定电话',
value: res.data.fddbrgddh
},
{
name: '法人移动电话',
value: res.data.fddbryddh
},
{
name: '财务姓名',
value: res.data.cwfzrxm
},
{
name: '财务证件号码',
value: res.data.cwfzrsfzjhm
},
{
name: '财务固定电话',
value: res.data.cwfzrgddh
},
{
name: '财务移动电话',
value: res.data.cwfzryddh
},
{
name: '生产经营地址',
value: res.data.scjydz
},
{
name: '生产经营地行政区划代码',
value: res.data.scjydzxzqhszDm
},
{
name: '生产经营地 联系电话',
value: res.data.scjydlxdh
},
{
name: '生产经营地 邮政编码',
value: res.data.scjydyzbm
},
{
name: '国标行业',
value: res.data.hyDm
},
{
name: '从业人数',
value: res.data.cyrs
},
{
name: '批准设立机构名称',
value: res.data.pzsljgmc
},
{
name: '经营范围',
value: res.data.jyfw
}
]
this.qysdsLoading = false
})
}
}
}
</script>

View File

@ -0,0 +1,16 @@
<template>
<div>
{{ 11 }}
</div>
</template>
<script type="text/javascript">
export default {
name: 'Qynsrzg',
props: {
},
data() {
return {}
}
}
</script>

View File

@ -6,7 +6,7 @@
<div
:style="{ 'border-left-color': mColor }"
class="section-mark"/>
<div class="section-title">{{ title }}</div>
<div :style="{'font-size': size}" class="section-title">{{ title }}</div>
<flexbox
v-if="showF"
class="f-container">
@ -38,6 +38,10 @@ export default {
name: 'Sections',
components: {},
props: {
size: {
type: String,
default: '12px'
},
title: {
type: String,
default: ''

View File

View File

@ -45,6 +45,7 @@ export default {
* 左侧菜单选择
*/
menuSelect(key, keyPath) {
console.log(key)
this.componentName = {
customer: 'CustomerIndex',
seas: 'SeasIndex',

View File

@ -23,6 +23,7 @@
:detail="detailData"
:head-details="headDetails"
:id="id"
:qyjbxx="qyjbxx"
:pool-id="seasPoolId"
:pool-auth="poolAuth"
:crm-type="crmType"
@ -58,6 +59,7 @@
:detail="detailData"
:type-list="logTyps"
:id="id"
:qyjbxx = "qyjbxx"
:pool-id="seasPoolId"
:handle="activityHandle"
:is-seas="isSeasDetail"
@ -108,6 +110,8 @@
import { crmCustomerReadAPI } from '@/api/crm/customer'
import SlideView from '@/components/SlideView'
import qyJbxx from '../components/CRMQyjbxx'
import risk from '../components/CRMRisk'
import CRMDetailHead from '../components/CRMDetailHead'
import Activity from '../components/Activity' //
import ChieflyContacts from '../components/ChieflyContacts' //
@ -125,11 +129,15 @@ import RelativeInvoice from '../components/RelativeInvoice' // 发票
import CRMAllCreate from '../components/CRMAllCreate' //
import DetailMixin from '../mixins/Detail'
import { mapGetters } from 'vuex'
import { getQyjbxxByCustComer } from '../../../api/crm/qyjbxx'
export default {
//
name: 'CustomerDetail',
components: {
qyJbxx,
risk,
SlideView,
Activity,
ChieflyContacts,
@ -151,6 +159,7 @@ export default {
// id
id: [String, Number],
poolId: [String, Number],
nsrmc: [String, String],
// dom
listenerIDs: {
type: Array,
@ -174,6 +183,8 @@ export default {
},
data() {
return {
//
qyjbxx: {},
// loading
loading: false,
crmType: 'customer',
@ -183,7 +194,7 @@ export default {
{ title: '负责人', value: '' },
{ title: '更新时间', value: '' }
],
tabCurrentName: 'Activity',
tabCurrentName: 'CRMEditBaseInfo',
//
createActionInfo: null,
createCRMType: '',
@ -242,10 +253,11 @@ export default {
*/
tabNames() {
var tempsTabs = []
tempsTabs.push({ label: '活动', name: 'Activity' })
if (this.crm.customer && this.crm.customer.read) {
tempsTabs.push({ label: '详细资料', name: 'CRMEditBaseInfo' })
}
tempsTabs.push({ label: 'V3风险', name: 'risk' })
tempsTabs.push({ label: '活动', name: 'Activity' })
if (this.crm.contacts && this.crm.contacts.index) {
tempsTabs.push({ label: this.getTabName('联系人', this.tabsNumber.contactCount), name: 'RelativeContacts' })
}
@ -357,8 +369,29 @@ export default {
}
},
watch: {},
mounted() {},
mounted() {
this.getBaseInfo(true)
},
methods: {
/**
* 获取基础信息
*/
getBaseInfo(loading) {
this.loading = !!loading
const params = {
customerId: this.id,
poolId: this.poolId
}
getQyjbxxByCustComer(params).then(res => {
this.qyjbxx = res.data
console.log('获取数据')
console.log(this.id)
console.log(this.poolId)
this.loading = false
}).catch(() => {
this.loading = false
})
},
/**
* 详情
*/

View File

@ -2,7 +2,7 @@
<div v-loading="loading" class="sale-statistics card">
<flexbox class="card-title">
<span class="icon wk wk-target" />
<div class="card-title-center text-one-ellipsis">税务预检使用情况</div>
<div class="card-title-center text-one-ellipsis">V3产品使用情况</div>
<div class="card-title-right">
<!--<span class="box">{{ filterText }}</span>
<span class="box">{{ timeLine }}</span>-->

View File

@ -1,10 +1,9 @@
<template>
<div class="navbar">
<img
v-src="logo"
:key="logo"
src="@/assets/logo_white.png"
class="logo"
@click="enterMainPage" >
@click="enterMainPage" ><span class="logoText">金财云联CRM</span>
<div class="nav-items-container">
<el-menu
:default-active="navActiveIndex"
@ -599,7 +598,7 @@ export default {
position: relative;
padding: 0 30px;
.logo {
width: 150px;
width: 40px;
height: 40px;
display: block;
flex-shrink: 0;
@ -607,6 +606,10 @@ export default {
background-color: white;
cursor: pointer;
}
.logoText{
font-size: 17px;
font-weight:bold;
}
.nav-items-container {
flex: 1;
display: flex;

View File

@ -57,8 +57,8 @@
<slot name="sidebar-bottom"/>
<div class="sidebar-bottom-content">
<div v-if="!collapse" class="copyright">
<img src="/favicon.ico" width="20px" >
<span>Power by 悟空</span>
<img src="@/assets/logo_white.png" width="20px" >
<span>金财云联</span>
</div>
<img
:style="{ 'right': buttonCollapse ? '3px' : '0' }"

View File

@ -1,11 +1,7 @@
<template>
<div
class="login-wrapper">
<div class="top-nav">
<img
src="~@/assets/logo_white.png"
alt="">
</div>
<div class="top-nav"/>
<div class="container">
<div class="left">
<h1 class="title">