Commit b24cda5d authored by danfuman's avatar danfuman

修改

parent 7c63410d
......@@ -17,28 +17,35 @@ export function memberCount(data) {
data: data
})
}
// 集团成员资质列表
export function memberCertificateList(data) {
// 集团资质列表
export function certificateList(data) {
return request({
url: '/combine/info/certificateList',
method: 'post',
data: data
})
}
// 集团业绩列表
export function businessList(data) {
// 集团资质列表-详情
export function memberCertificateList(data) {
return request({
url: '/combine/info/businessList',
url: '/combine/info/member/certificateList',
method: 'post',
data: data
})
}
// 集团资质分组统计
export function certificateCount(data) {
return request({
url: '/combine/info/group/certificateCount',
method: 'post',
data: data
})
}
// 集团资质列表
export function certificateList(data) {
// 集团业绩列表
export function businessList(data) {
return request({
url: '/combine/info/certificateList',
url: '/combine/info/businessList',
method: 'post',
data: data
})
......
......@@ -106,13 +106,12 @@ export const constantRoutes = [
path: '/groupAccount',
component: Layout,
hidden: true,
name: 'Enterprise',
redirect: 'noredirect',
children: [
{
path: '/groupAccount/:id',
component: () => import('@/views/detail/groupAccount/index'),
name: 'groupAccount',
name: 'GroupAccount',
meta: { title: '集团户详情', icon: 'enterprise', noCache: false },
}
]
......
......@@ -75,13 +75,12 @@ export default {
return sideHeight
},
routeIndex(){
let idx = this.getRouteIdx('', this.pathName) || '0-0'
let idx = this.getRouteIdx('', this.pathName) || '0'
return idx
}
},
created() {
this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute))
},
watch:{
......
......@@ -22,35 +22,38 @@
@sort-change="sortChange"
>
<template slot="companyCount" slot-scope="scope">
<div v-html="scope.row.companyCount || '--'"></div>
<div style="cursor: pointer;color: #0081FF;" @click="handleClick($event, scope.row)" v-html="scope.row.companyCount || '--'"></div>
</template>
</tables>
<qualifications-detail
v-if="isDetails"
:data="rowData"
:title="title"
@cancel="isDetails=false" />
</div>
</template>
<script>
import Skeleton from "./skeleton"
import {encodeStr} from "@/assets/js/common"
import Tables from "../../party-a/component/Tables"
import HeadForm from "../../party-a/component/HeadForm"
import {memberCertificateList} from '@/api/detail/groupAccount/groupAccount'
import mixin from '../../party-a/mixins/mixin'
import {certificateList,certificateCount} from '@/api/detail/groupAccount/groupAccount'
import QualificationsDetail from './qualificationsDetail'
export default {
name: 'qualifications',
props: ['companyId'],
props: ['companyId','companyInfo'],
mixins: [mixin],
components:{
Skeleton,Tables,HeadForm
QualificationsDetail
},
data(){
return{
encodeStr,
isSkeleton:true,
tableLoading:false,
isDetails: false,
defaultSort: {prop: 'time', order: 'descending'},
queryParams: {
combineId: '81de7ca2a967d91c2afad9cb5fc30e6d',
combineId:'54355f88a5b16d3e52f74931f5567853',
pageNum: 1,
pageSize: 20
pageSize: 10
},
forData: [
{label: '资质名称', prop: 'qualificationName'},
......@@ -59,68 +62,42 @@
formData: [
{ type: 4, fieldName: 'combineMemberLevel', value: '', placeholder: '筛选', options:[]},
],
cycj:[
{
name:'子集团',
value:'子集团'
},
{
name:'集团本身',
value:'集团本身'
},
{
name:'一级子公司',
value:'一级子公司'
},
{
name:'二级子公司',
value:'二级子公司'
},
{
name:'三级子公司',
value:'三级子公司'
},
],
tableData:[],
tableDataTotal:0,
title:'',
rowData:''
}
},
created() {
this.handleQuery()
this.formData[0].options=this.cycj;
this.getCertificateList()
},
methods: {
handleQuery(params){
this.isSkeleton = true
let data = params ? params : this.queryParams
memberCertificateList(data).then(res=>{
certificateList(data).then(res=>{
this.tableData = res.rows
this.tableDataTotal = res.total
this.isSkeleton = false
})
},
formParams(){
},
handleSearch(){
},
//分页
handleCurrentChange(e){
let params = this.formParams()
params.pageNum = e
this.queryParams.pageNum = e
// this.handleQuery(params)
getCertificateList(){
certificateCount({combineId: this.queryParams.combineId}).then(res=>{
let data = res.data
for(let i=0; i<data.length; i++){
this.formData[0].options.push({
name: data[i].qualificationName+ '(' + data[i].companyCount + ')',
value: data[i].qualificationType,
})
}
})
},
handleSizeChange(e){
handleClick(e, data) {
this.title=this.companyInfo.companyName+data.qualificationName+'('+ data.companyCount +')'
this.rowData = data
this.isDetails = true
},
//排序
sortChange(e){
let item = this.forData.find(item => item.prop === e.prop)
this.queryParams.sort = item[e.order]
this.handleSearch()
}
}
}
</script>
......
<template>
<div class="client-details">
<el-drawer
:visible.sync="drawer"
size="40%"
custom-class="client-drawer"
:with-header="false"
@closed="cancel">
<tables
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
style="margin: 12px;"
>
<template slot="companyName" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName" v-html="scope.row.companyName"></router-link>
<div v-else v-html="scope.row.companyName || '--'"></div>
</template>
</tables>
</el-drawer>
</div>
</template>
<script>
import mixin from '../../party-a/mixins/mixin'
import {memberCertificateList} from '@/api/detail/groupAccount/groupAccount'
export default {
props: [
'data',
'title'
],
components: { },
mixins: [mixin],
data() {
return {
drawer: false,
queryParams: {
id: this.data.id,
pageNum: 1,
pageSize: 10
},
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目/工程名称查询', options: []},
],
forData: [
{label: '拥有该资质成员', prop: 'companyName', slot: true},
{label: '成员共有资质(个)', prop: 'certificateCount'},
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
amountTotal: 0
}
},
created() {
this.drawer = true
this.handleQuery()
},
methods: {
async handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
let res = await memberCertificateList(param)
this.tableLoading = false
if(res.code==200){
this.tableData = res.rows
}
this.tableDataTotal = res.total
// this.amountTotal = res.totalAmount
},
handlePic(url, isPic){
isPic ? url = 'https://imgs.jiansheku.com/'+url : ''
if(url){
window.open(url, "_blank")
}
},
linkTo(scope){
this.drawer = false
this.$router.push(`/biddetail/${scope.row.id}`)
},
cancel() {
this.$emit('cancel')
}
}
}
</script>
<style lang="scss" scoped>
.client-details {
::v-deep .client-drawer{
background: #FFFFFF;
}
.tip-img{
width: 14px;
height: 14px;
margin-right: 4px;
cursor: pointer;
}
}
</style>
<template>
<div class="app-container group-container">
<Header :company-id="companyId" :companyInfo="companyInfo" :cooDetail="cooDetail" v-if="companyId" :isCompany="isCompany"/>
<div class="header-container">
<div class="flex-box part-header">
<img class="header-logo" :src="require('@/assets/images/detail/company_logo.png')">
{{name || '--'}}
</div>
</div>
<div class="flex-box group-main">
<div class="group-left">
<side-bar ref="sidebar" @currentPath="showPartPage" :pathName="currentPath.pathName" :partBoxHeight="partBoxHeight" :customerId="customerId"/>
<side-bar ref="sidebar" @currentPath="showPartPage" :pathName="currentPath.pathName" :customerId="customerId"/>
</div>
<div class="group-right">
<div id="groupBox" v-if="companyId">
<div id="groupBox" v-if="customerId">
<Members v-if="currentPath.pathName=='members'" :company-id="companyId" :isSkeleton="isSkeleton" :companyInfo="companyInfo" />
<Qualifications v-if="currentPath.pathName=='qualifications'" :company-id="companyId" :isSkeleton="isSkeleton" :companyInfo="companyInfo" />
<Performance v-if="currentPath.pathName=='performance'" :company-id="companyId" :isSkeleton="isSkeleton" :companyInfo="companyInfo" />
......@@ -18,7 +23,6 @@
<script>
import { idRemark } from '@/api/common'
import Header from "../party-a/component/Header"
import SideBar from "./component/Sidebar"
import Members from "./component/members"
import Qualifications from "./component/qualifications"
......@@ -28,29 +32,31 @@
export default {
name: 'GroupAccount',
components:{
Header,SideBar,Members,Qualifications,Performance
SideBar,Members,Qualifications,Performance
},
data(){
return{
companyId: '', //企业Id(测试默认3068)
companyId: '3068', //企业Id(测试默认3068)
customerId: '', //企业Id(测试默认'a00d582a6041f32c16aac804e4924736')
companyInfo: {},
cooDetail: {},
currentPath: {
pathName: 'members' //默认展示页
},
partBoxHeight: null,
isCompany: false,
isSkeleton: false,
name:''
}
},
created() {
if (this.$route.params.id) { // 获取companyId
let companyId = this.$route.params.id
this.getCompanyId(companyId)
}
if (this.$route.query.path) { // 获取跳转对应板块
this.currentPath.pathName = this.$route.query.path
if (this.$route.params.id) { // customerId
this.customerId = this.$route.params.id
}
// if (this.$route.query.path) { // 获取跳转对应板块
// this.currentPath.pathName = this.$route.query.path
// }
// this.$route.query.name=''
this.name=this.$route.query.name ? this.$route.query.name : '中建集团'
},
mounted(){
},
......@@ -58,36 +64,6 @@
showPartPage(e){
this.currentPath = e
},
// 解密
async getCompanyId(companyId){
let { data } = await idRemark({mark:companyId})
if( data ){
this.companyId = data
this.$nextTick(() => {
this.listenSider()
})
this.handleQuery();
}
},
async handleQuery() {
this.isSkeleton = true;
let res = await infoHeader({companyId:this.companyId})
if(res.code==200){
this.isSkeleton = false;
this.companyInfo = res.data || {}
// if(this.companyInfo && this.companyInfo.companyName){
// this.$nextTick(()=>{
// document.getElementById('tagTitle').innerText = this.companyInfo.companyName
// })
// }
}
},
listenSider(){
const _this = this, erd = elementResizeDetectorMaker(), partBox = document.getElementById("groupBox")
erd.listenTo(partBox, element => {
_this.partBoxHeight = partBox.offsetHeight
})
},
}
}
</script>
......@@ -109,4 +85,18 @@
background: #FFFFFF;
border-radius: 4px;
}
.part-header{
font-size: 16px;
font-weight: bold;
color: #232323;
background: #FFFFFF;
padding: 14px 16px;
margin-top: 12px;
border-radius: 4px;
.header-logo{
width: 28px;
height: 28px;
margin-right: 16px;
}
}
</style>
......@@ -12,8 +12,27 @@
<div class="arrow"></div>
<div @click="handleClick(option)" :class="['option', value==option?'active':'']" :key="i" v-for="(option, i) in options">
<template v-if="option == '自定义'">
<div class="number-box">
<input type="number" v-model="startMoney" class="number-input" clearable>&nbsp;&nbsp;&nbsp;&nbsp;<input v-model="endMoney" class="number-input" type="text" clearable>&nbsp;&nbsp;万元&nbsp;&nbsp;<el-button @click.stop="handleConfirm" class="number-button" type="primary">确定</el-button>
<!--<div class="number-box">-->
<!--<input type="number" v-model="startMoney" class="number-input" clearable>&nbsp;&nbsp;&nbsp;&nbsp;<input v-model="endMoney" class="number-input" type="text" clearable>&nbsp;&nbsp;万元&nbsp;&nbsp;<el-button @click.stop="handleConfirm" class="number-button" type="primary">确定</el-button>-->
<!--</div>-->
<div style="position: relative">
自定义
<div class="popper_box" style="position: absolute" v-if="value === '自定义'">
<div class="popper_wrap">
<el-input class="popper_input" type="number" clearable v-model="startMoney"></el-input>
</div>
<div class="popper_wrap">
<el-input class="popper_input" type="number" clearable v-model="endMoney"></el-input>
</div>
<div style="">
<el-button size="mini" @click.stop="cancellation">取消</el-button>
<el-button type="primary" size="mini" @click.stop="handleConfirm">确定</el-button>
</div>
</div>
</div>
</template>
<template v-else>
......@@ -88,11 +107,11 @@ export default {
// const flag = document.getElementById('custom-money-select').contains(e.target)
!flag ? this.isSelectOption = false : ''
if(this.value == '自定义' && !this.startMoney && !this.endMoney) {
this.value = ''
this.$emit('input', '')
this.$emit('handle-search')
}
// if(this.value == '自定义' && !this.startMoney && !this.endMoney) {
// this.value = ''
// this.$emit('input', '')
// this.$emit('handle-search')
// }
}, true)
},
// 清除
......@@ -120,33 +139,42 @@ export default {
this.value = value
let moneyStr = ''
if(value == '自定义') {
this.value = '自定义'
this.value = '自定义';
}else {
this.startMoney = ''
this.endMoney = ''
this.isSelectOption = false
switch (value) {
case '10亿以上':
moneyStr = [100000]
break;
case '一亿以上':
moneyStr = [10000]
break;
case '1亿-10亿':
moneyStr = [10000, 100000]
break;
case '1亿-5亿':
moneyStr = [10000, 50000]
break;
case '5000万-1亿':
moneyStr = [5000, 10000]
break;
case '1000万-5000万':
moneyStr = [1000, 5000]
break;
case '10亿以上':
moneyStr = [100000]
break;
case '1亿-10亿':
moneyStr = [10000, 100000]
break;
case '2000万-1亿':
moneyStr = [2000, 10000]
break;
case '400万-2000万':
moneyStr = [400, 2000]
break;
case '5000万以下':
moneyStr = [, 5000]
break;
case '1000万以下':
moneyStr = [, 1000]
break;
case '400万以下':
moneyStr = [, 400]
break;
......@@ -158,6 +186,13 @@ export default {
this.$emit('handle-search')
}
},
// 自定义取消
cancellation(){
this.isSelectOption = false
this.value = ''
this.$emit('input', '')
this.$emit('handle-search')
},
// 自定义确认点击后的回调
handleConfirm() {
this.isSelectOption = false
......@@ -271,7 +306,7 @@ export default {
.option {
padding: 0 24px 0 16px;
box-sizing: border-box;
width: 400px;
width: 140px;
height: 36px;
display: flex;
justify-content: space-between;
......@@ -294,8 +329,6 @@ export default {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 206px;
border: 1px solid #DCDCDC;
border-radius: 2px;
&::-webkit-outer-spin-button,
......@@ -360,5 +393,47 @@ export default {
line-height: 30px;
margin-left: 10px;
}
.popper_box {
position: absolute;
left: 128px;
bottom: -15px;
background: #ffffff;
width: 186px;
color: #606266;
text-indent: 0;
padding: 16px;
padding-top: 0px;
border: 1px solid #e0e0e0;
.popper_wrap {
margin-top: 16px;
display: inline-block;
.popper_input {
width: 100px;
display: inline-block;
margin: 0px 8px;
line-height: 34px;
}
.el-input__inner {
width: 100px;
}
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none !important;
}
input[type='number'] {
-moz-appearance: textfield;
}
}
.popper_box div:last-child {
display: flex;
justify-content: center;
margin-top: 16px;
}
}
</style>
......@@ -57,6 +57,10 @@ export default {
dateTo: {
type: String,
default: ''
},
timeList: {
type: Array,
default: () => [],
}
},
computed: {
......@@ -103,6 +107,9 @@ export default {
this.defaultValue = new Date(this.dateTo)
}
this.handleAppClick()
if(this.timeList&&this.timeList.length>0){
this.options = this.timeList
}
},
methods: {
// 时间格式化
......@@ -159,6 +166,18 @@ export default {
let startTime = ''
let endTime = new Date()
switch (value) {
case '近三天':
startTime = new Date(endTime.getTime() - 3600 * 1000 * 24 * 3)
timeStr = [this.formatDate(startTime), this.formatDate(endTime)]
break;
case '近七天':
startTime = new Date(endTime.getTime() - 3600 * 1000 * 24 * 7)
timeStr = [this.formatDate(startTime), this.formatDate(endTime)]
break;
case '近半月':
startTime = new Date(endTime.getTime() - 3600 * 1000 * 24 * 15)
timeStr = [this.formatDate(startTime), this.formatDate(endTime)]
break;
case '近1年':
startTime = new Date().setFullYear(new Date().getFullYear() - 1)
if(this.dateTo){
......@@ -309,7 +328,7 @@ export default {
.el-picker-panel.el-date-range-picker.el-popper {
left: 0 !important;
top: 205px !important;
/*top: 205px !important;*/
}
.popper__arrow {
......
......@@ -51,12 +51,13 @@
style="max-width: 170px"
:placeholder="form.placeholder"
@change="changeSelect">
<el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value" />
<el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value" :disabled="item.disabled"/>
</el-select>
</template>
<!-- 时间、自定义 -->
<template v-else-if="form.type==5">
<custom-time-select
:timeList="form.timeList"
v-model="form.value"
:placeholder="form.placeholder"
:dateFrom="form.dateFrom ? form.dateFrom : ''"
......@@ -81,7 +82,6 @@
@change="changeSelect"
:placeholder="form.placeholder"
collapse-tags
style="margin-top: -1px;"
clearable></el-cascader>
</template>
<!-- 自定义 -->
......@@ -145,7 +145,7 @@ export default {
}
},
created() {
console.log(this.formData)
},
components: {
CustomTimeSelect,
......@@ -176,22 +176,22 @@ export default {
}
::v-deep .el-input__inner{
border: 1px solid #D9D9D9;
height: 32px;
line-height: 32px;
height: 34px;
line-height: 34px;
padding-right: 27px;
}
::v-deep .el-form-item{
margin-right: 8px !important;
}
::v-deep .el-input--medium .el-input__icon{
line-height: 32px;
line-height: 34px;
}
::v-deep .el-cascader{
height: 32px;
line-height: 32px;
height: 34px;
line-height: 34px;
.el-input{
input{
height: 32px !important;
height: 34px !important;
}
}
.el-cascader__tags{
......
......@@ -147,7 +147,6 @@ export default {
},
created() {
this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute))
},
watch:{
statisticObj:{
......
......@@ -288,7 +288,6 @@ export default {
this.uipGroupDatalist = res.data
})
},
changeXZDJ(index) {
this.queryParams.uipExecutiveLevel = index;
this.changes()
......
......@@ -717,6 +717,9 @@ export default {
// province:this.dataQuery.province,
// }
// })
console.log(this.dataQuery.provinceId)
console.log(this.dataQuery.province)
// return
this.$router.push({name: 'Urban',
params: {
provinceId: this.dataQuery.provinceId,
......
......@@ -31,7 +31,7 @@
element-loading-text="Loading"
border
fit
height="640"
max-height="640"
@sort-change="sortChange"
highlight-current-row
v-if="tableDataTotal > 0 && !isSkeleton"
......
......@@ -587,6 +587,13 @@
},
itemStyle:{
color: "#FFAB44",
normal: {
label : {show: true},
color:"#FFAB44",
lineStyle: {
color: "#FFAB44"
}
}
},
//设置面积区域为渐变效果
areaStyle: {
......
......@@ -36,7 +36,7 @@
element-loading-text="Loading"
@sort-change="sortChange"
border
height="640"
max-height="640"
highlight-current-row
v-if="tableDataTotal > 0 && !isSkeleton"
:default-sort = "{prop: 'gdp', order: 'descending'}"
......
......@@ -28,7 +28,7 @@ export default {
},
data() {
return {
activeName: 'third'
activeName: 'first'
}
},
created() {
......
......@@ -153,7 +153,7 @@
element-loading-text="Loading"
@sort-change="sortChange"
border
height="640"
max-height="640"
fit
highlight-current-row
>
......@@ -162,8 +162,8 @@
</el-table-column>
<el-table-column prop="companyName" label="公司名称" width="300" fixed>
<template slot-scope="scope">
<router-link :to="`/groupAccount/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link companyName" v-html="scope.row.companyName" ></router-link>
<!--<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link companyName" v-html="scope.row.companyName" ></router-link>-->
<!--<router-link :to="`/groupAccount/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link companyName" v-html="scope.row.companyName" ></router-link>-->
<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link companyName" v-html="scope.row.companyName" ></router-link>
<span @click="handleClick(scope.row)" class="table-span" style="color: #3D3D3D;cursor: pointer;" v-if="scope.row.claimStatus === null || scope.row.claimStatus === 1"><img src="@/assets/images/urban/rl_icon1.png"/>认领</span>
<span @click="cancelClaim(scope.row.companyName)" class="table-span" style="color: rgba(35,35,35,0.4);cursor: pointer;" v-if="scope.row.claimStatus === 0"><img src="@/assets/images/urban/rl_icon2.png"/>已认领</span>
</template>
......@@ -250,7 +250,7 @@
<el-dialog :visible.sync="claimVisible" width="244" custom-class='dialog-claim' :show-close="false">
<div>认领成功,是否完善客户信息?</div>
<div slot="footer" class="dialog-footer">
<el-button @click="innerVisible = true">
<el-button @click="claimVisible = false">
<router-link :to="`/enterprise/${encodeStr(companyId)}?customerId=${customerId}&path=business`" tag="a" >
立即完善
</router-link>
......@@ -365,7 +365,10 @@ export default {
created() {
this.dataRegion()
this.getType()
this.dataQuery=this.$route.query;
this.dataQuery=this.$route.params;
// console.log(this.dataQuery)
// console.log(this.$route.query)
// console.log(this.$route.params)
if(this.dataQuery.provinceId){
if(Array.isArray(this.dataQuery.province)){
this.province=this.dataQuery.province[0];
......
......@@ -37,7 +37,7 @@ module.exports = {
target: `http://47.104.91.229:9099/prod-api`,
// target: `http://122.9.160.122:9011`,
// target: `http://192.168.60.126:9011`,
// target: `http://192.168.60.27:8766`,
// target: `http://192.168.60.126:9098`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment