Commit 1c343b46 authored by danfuman's avatar danfuman

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys...

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys into V20231129-中建一局二公司
parents aee84ab6 fa04140e
...@@ -7,9 +7,11 @@ import com.dsk.common.core.domain.R; ...@@ -7,9 +7,11 @@ import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.poi.ExcelUtil; import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo; import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.bo.CustomerCooperationBo;
import com.dsk.cscec.domain.bo.CustomerInfoBo; import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyVo; import com.dsk.cscec.domain.vo.AdvisoryBodyVo;
import com.dsk.cscec.domain.vo.CustomerApproveVo; import com.dsk.cscec.domain.vo.CustomerApproveVo;
import com.dsk.cscec.domain.vo.CustomerCooperationVo;
import com.dsk.cscec.domain.vo.CustomerInfoVo; import com.dsk.cscec.domain.vo.CustomerInfoVo;
import com.dsk.cscec.service.ICustomerInfoService; import com.dsk.cscec.service.ICustomerInfoService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -63,10 +65,20 @@ public class CustomerInfoController extends BaseController { ...@@ -63,10 +65,20 @@ public class CustomerInfoController extends BaseController {
/** /**
* 合作记录-供应商准入情况 * 合作记录-供应商准入情况
*/ */
@GetMapping("/getApproveInfo") @GetMapping("/approveInfo")
public R<CustomerApproveVo> getApproveInfo(CustomerInfoBo bo) { public R<CustomerApproveVo> getApproveInfo(CustomerInfoBo bo) {
return R.ok(iCustomerInfoService.queryApproveByBo(bo)); return R.ok(iCustomerInfoService.queryApproveByBo(bo));
} }
/**
* 内部合作-供应商合作记录
*/
@GetMapping("/cooperationList")
public TableDataInfo<CustomerCooperationVo> cooperationList(@Validated CustomerCooperationBo bo, PageQuery query) {
return iCustomerInfoService.queryCooperationList(bo, query);
}
} }
package com.dsk.cscec.domain.bo;
import lombok.Data;
import java.util.List;
/**
* 供应商合作记录
*
* @author
* @since 2023-12-18
*/
@Data
public class CustomerCooperationBo {
/**
* 签订单位ID
*/
private String signOrgId;
/**
* 签订单位名称
*/
private String signOrgName;
/**
* 供应商ID
*/
private String customerId;
/**
* 供应商名称
*/
private String customerName;
/**
* 区域名称
*/
private List<String> areaName;
/**
* 省份名称
*/
private List<String> provinceName;
/**
* 城市名称
*/
private List<String> cityName;
}
package com.dsk.cscec.domain.vo;
import lombok.Data;
/**
* 供应商合作记录
*
* @author
* @since 2023-12-18
*/
@Data
public class CustomerCooperationVo {
/**
* 分包合同主键
*/
private Long subcontractKey;
/**
* 分包合同ID
*/
private String subcontractId;
/**
* 项目名称
*/
private String projectName;
/**
* 分包合同金额
*/
private Double subcontractValue;
/**
* 签订单位ID
*/
private String signOrgId;
/**
* 签订单位名称
*/
private String signOrgName;
/**
* 合同签订日期
*/
private String signDate;
/**
* 分包范围
*/
private String jobScope;
/**
* 结算价
*/
private Double settleValue;
/**
* 区域名称
*/
private String areaName;
/**
* 省份名称
*/
private String provinceName;
/**
* 城市名称
*/
private String cityName;
/**
* 项目经理名称
*/
private String projectManagerName;
/**
* 项目经理电话
*/
private String projectManagerPhone;
/**
* 工程类型名称
*/
private String projectType2;
}
...@@ -2,7 +2,12 @@ package com.dsk.cscec.mapper; ...@@ -2,7 +2,12 @@ package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.cscec.domain.DSubcontract; import com.dsk.cscec.domain.DSubcontract;
import com.dsk.cscec.domain.bo.CustomerCooperationBo;
import com.dsk.cscec.domain.vo.CustomerCooperationVo;
import org.apache.ibatis.annotations.Param;
/** /**
* 分包分供合同(DSubcontract)表数据库访问层 * 分包分供合同(DSubcontract)表数据库访问层
...@@ -16,5 +21,12 @@ public interface DSubcontractMapper extends BaseMapper<DSubcontract> { ...@@ -16,5 +21,12 @@ public interface DSubcontractMapper extends BaseMapper<DSubcontract> {
Integer selectProjectCountByCustomerId(String customerId); Integer selectProjectCountByCustomerId(String customerId);
/**
* 供应商合作记录
* @param build
* @param bo
* @return
*/
Page<CustomerCooperationVo> selectCooperationList(IPage<CustomerCooperationBo> build, @Param("bo")CustomerCooperationBo bo);
} }
...@@ -5,9 +5,11 @@ import com.dsk.common.core.domain.PageQuery; ...@@ -5,9 +5,11 @@ import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.DCustomer; import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo; import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.bo.CustomerCooperationBo;
import com.dsk.cscec.domain.bo.CustomerInfoBo; import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyVo; import com.dsk.cscec.domain.vo.AdvisoryBodyVo;
import com.dsk.cscec.domain.vo.CustomerApproveVo; import com.dsk.cscec.domain.vo.CustomerApproveVo;
import com.dsk.cscec.domain.vo.CustomerCooperationVo;
import com.dsk.cscec.domain.vo.CustomerInfoVo; import com.dsk.cscec.domain.vo.CustomerInfoVo;
/** /**
...@@ -23,4 +25,12 @@ public interface ICustomerInfoService extends IService<DCustomer> { ...@@ -23,4 +25,12 @@ public interface ICustomerInfoService extends IService<DCustomer> {
CustomerApproveVo queryApproveByBo(CustomerInfoBo bo); CustomerApproveVo queryApproveByBo(CustomerInfoBo bo);
TableDataInfo<AdvisoryBodyVo> queryAdvisoryList(AdvisoryBodyBo bo, PageQuery query); TableDataInfo<AdvisoryBodyVo> queryAdvisoryList(AdvisoryBodyBo bo, PageQuery query);
/**
* 供应商合作记录
* @param bo
* @param query
* @return
*/
TableDataInfo<CustomerCooperationVo> queryCooperationList(CustomerCooperationBo bo,PageQuery query);
} }
...@@ -14,9 +14,11 @@ import com.dsk.common.core.page.TableDataInfo; ...@@ -14,9 +14,11 @@ import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.constant.QueryConstants; import com.dsk.cscec.constant.QueryConstants;
import com.dsk.cscec.domain.DCustomer; import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo; import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.bo.CustomerCooperationBo;
import com.dsk.cscec.domain.bo.CustomerInfoBo; import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyVo; import com.dsk.cscec.domain.vo.AdvisoryBodyVo;
import com.dsk.cscec.domain.vo.CustomerApproveVo; import com.dsk.cscec.domain.vo.CustomerApproveVo;
import com.dsk.cscec.domain.vo.CustomerCooperationVo;
import com.dsk.cscec.domain.vo.CustomerInfoVo; import com.dsk.cscec.domain.vo.CustomerInfoVo;
import com.dsk.cscec.mapper.AdvisoryBodyMapper; import com.dsk.cscec.mapper.AdvisoryBodyMapper;
import com.dsk.cscec.mapper.DCustomerMapper; import com.dsk.cscec.mapper.DCustomerMapper;
...@@ -48,6 +50,9 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto ...@@ -48,6 +50,9 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
@Autowired @Autowired
private AdvisoryBodyMapper advisoryBodyMapper; private AdvisoryBodyMapper advisoryBodyMapper;
@Autowired
private DSubcontractMapper dSubcontractMapper;
@Override @Override
public TableDataInfo<CustomerInfoVo> queryPageList(CustomerInfoBo bo, PageQuery query) { public TableDataInfo<CustomerInfoVo> queryPageList(CustomerInfoBo bo, PageQuery query) {
if("劳务分包".equals(bo.getCustomerClass())){ if("劳务分包".equals(bo.getCustomerClass())){
...@@ -101,4 +106,14 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto ...@@ -101,4 +106,14 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
Page<AdvisoryBodyVo> page = advisoryBodyMapper.queryListByBo(query.build(),bo); Page<AdvisoryBodyVo> page = advisoryBodyMapper.queryListByBo(query.build(),bo);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@Override
public TableDataInfo<CustomerCooperationVo> queryCooperationList(CustomerCooperationBo bo, PageQuery query) {
if(StringUtil.isBlank(bo.getCustomerId()) && StringUtil.isBlank(bo.getCustomerName())){
Assert.isTrue(false,"供应商不能为空");
}
bo.setSignOrgId(QueryConstants.LEVEL1_COMPANY_ID);
Page<CustomerCooperationVo> page = dSubcontractMapper.selectCooperationList(query.build(),bo);
return TableDataInfo.build(page);
}
} }
...@@ -93,7 +93,7 @@ public class MonitorServiceImpl implements MonitorService { ...@@ -93,7 +93,7 @@ public class MonitorServiceImpl implements MonitorService {
@Override @Override
public TableDataInfo companyDynamicPage(PushMonitorDynamicPageVo pageVo) throws Exception { public TableDataInfo companyDynamicPage(PushMonitorDynamicPageVo pageVo) throws Exception {
pageVo.setPageSize(3); pageVo.setPageSize(3);
Long userId = 1733058034734989314L; Long userId = LoginHelper.getUserId();
if (ObjectUtil.isNotEmpty(userId)) { if (ObjectUtil.isNotEmpty(userId)) {
pageVo.setUserId(userId); pageVo.setUserId(userId);
pageVo.getCondition().setUserId(userId); pageVo.getCondition().setUserId(userId);
......
...@@ -17,4 +17,33 @@ ...@@ -17,4 +17,33 @@
) a ) a
</select> </select>
<select id="selectCooperationList" resultType="com.dsk.cscec.domain.vo.CustomerCooperationVo">
select ds.subcontract_key,ds.subcontract_id,ds.project_name,ds.sign_org_name,ds.sign_date,ds.subcontract_value,ds.settle_value,ds.job_scope,
dp.area_name,dp.province_name,dp.city_name,dp.project_manager_name,dp.project_manager_phone,dp.project_type2
from d_subcontract ds
left join d_project dp on dp.project_id = ds.project_id
<where>
<if test="bo.signOrgId != null and bo.signOrgId != ''">
and ds.sign_org_id =#{bo.signOrgId}
</if>
<if test="bo.signOrgName != null and bo.signOrgName != ''">
and ds.sign_org_name =#{bo.signOrgName}
</if>
<if test="bo.customerId != null and bo.customerId != ''">
and ds.customer_id =#{bo.customerId}
</if>
<if test="bo.customerName != null and bo.customerName != ''">
and ds.customer_name =#{bo.customerName}
</if>
<if test="bo.areaName != null and bo.areaName.size > 0">
and (
ds.areaName in
<foreach collection="bo.areaName" item="areaName" open="(" close=")" separator=",">
#{areaName}
</foreach>
)
</if>
</where>
order by ds.sign_date desc
</select>
</mapper> </mapper>
\ No newline at end of file
import request from '@/utils/request' import request from '@/utils/request';
// 行政处罚列表 // 行政处罚列表
export function penalizePage(data) { export function penalizePage(data) {
return request({ return request({
url: '/enterpriseCredit/penalizePage', url: '/enterpriseCredit/penalizePage',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 行政处罚类型 // 行政处罚类型
export function penalizeReasonType(data) { export function penalizeReasonType(data) {
return request({ return request({
url: '/enterpriseCredit/penalizeReasonType', url: '/enterpriseCredit/penalizeReasonType',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 经营异常列表 // 经营异常列表
...@@ -22,16 +22,16 @@ export function abnormalPage(data) { ...@@ -22,16 +22,16 @@ export function abnormalPage(data) {
return request({ return request({
url: '/enterpriseCredit/abnormalPage', url: '/enterpriseCredit/abnormalPage',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 经营异常年份 // 经营异常年份
export function abnormalYears(data) { export function abnormalYears(data) {
return request({ return request({
url: '/enterpriseCredit/abnormalYears', url: '/enterpriseCredit/abnormalYears',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 被执行人列表 // 被执行人列表
...@@ -39,8 +39,8 @@ export function executedPersonsPage(data) { ...@@ -39,8 +39,8 @@ export function executedPersonsPage(data) {
return request({ return request({
url: '/enterpriseCredit/executedPersonsPage', url: '/enterpriseCredit/executedPersonsPage',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 失信被执行人列表 // 失信被执行人列表
...@@ -48,8 +48,8 @@ export function executedPage(data) { ...@@ -48,8 +48,8 @@ export function executedPage(data) {
return request({ return request({
url: '/enterpriseCredit/executedPage', url: '/enterpriseCredit/executedPage',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 裁判文书列表 // 裁判文书列表
...@@ -57,24 +57,24 @@ export function lawsuitsPage(data) { ...@@ -57,24 +57,24 @@ export function lawsuitsPage(data) {
return request({ return request({
url: '/enterpriseCredit/lawsuitsPage', url: '/enterpriseCredit/lawsuitsPage',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 裁判文书案由 // 裁判文书案由
export function lawsuitsCauseAction(data) { export function lawsuitsCauseAction(data) {
return request({ return request({
url: '/enterpriseCredit/lawsuitsCauseAction', url: '/enterpriseCredit/lawsuitsCauseAction',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 裁判文书身份 // 裁判文书身份
export function lawsuitsRole(data) { export function lawsuitsRole(data) {
return request({ return request({
url: '/enterpriseCredit/lawsuitsRole', url: '/enterpriseCredit/lawsuitsRole',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 法院公告列表 // 法院公告列表
...@@ -82,32 +82,32 @@ export function noticesPage(data) { ...@@ -82,32 +82,32 @@ export function noticesPage(data) {
return request({ return request({
url: '/enterpriseCredit/noticesPage', url: '/enterpriseCredit/noticesPage',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 法院公告类型 // 法院公告类型
export function noticesType(data) { export function noticesType(data) {
return request({ return request({
url: '/enterpriseCredit/noticesType', url: '/enterpriseCredit/noticesType',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 法院公告身份 // 法院公告身份
export function noticesRole(data) { export function noticesRole(data) {
return request({ return request({
url: '/enterpriseCredit/noticesRole', url: '/enterpriseCredit/noticesRole',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 法院公告案由 // 法院公告案由
export function noticesCaseReason(data) { export function noticesCaseReason(data) {
return request({ return request({
url: '/enterpriseCredit/noticesCaseReason', url: '/enterpriseCredit/noticesCaseReason',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 开庭公告列表 // 开庭公告列表
...@@ -115,23 +115,37 @@ export function kaitingPage(data) { ...@@ -115,23 +115,37 @@ export function kaitingPage(data) {
return request({ return request({
url: '/enterpriseCredit/kaitingPage', url: '/enterpriseCredit/kaitingPage',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 开庭公告案由 // 开庭公告案由
export function kaitingCauseAction(data) { export function kaitingCauseAction(data) {
return request({ return request({
url: '/enterpriseCredit/kaitingCauseAction', url: '/enterpriseCredit/kaitingCauseAction',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 开庭公告当事人身份 // 开庭公告当事人身份
export function kaitingPureRole(data) { export function kaitingPureRole(data) {
return request({ return request({
url: '/enterpriseCredit/kaitingPureRole', url: '/enterpriseCredit/kaitingPureRole',
method: 'post', method: 'post',
data:data data: data
}) });
} }
// 风险信息 限制高消费
export const getLimitHighConsumptionApi = (data) => request({
url: "/enterpriseCredit/restrictedConsumerPage",
method: "post",
data
});
// 风险信息 股权冻结
export const getEquityFreezingApi = (data) => request({
url: "/enterpriseCredit/judicialFreezesPage",
method: "post",
data
})
...@@ -311,7 +311,6 @@ li { ...@@ -311,7 +311,6 @@ li {
.table-item { .table-item {
width: 100%; width: 100%;
height: 100%;
.el-table { .el-table {
width: 100%; width: 100%;
height: 100%; height: 100%;
......
...@@ -836,15 +836,55 @@ export function generateDirectSubtreeAndRemove(targetIds, tree, idKey = "id") { ...@@ -836,15 +836,55 @@ export function generateDirectSubtreeAndRemove(targetIds, tree, idKey = "id") {
return result ? JSON.parse(JSON.stringify({ ...result, children: result.children[0]?.children || [] })) : null; return result ? JSON.parse(JSON.stringify({ ...result, children: result.children[0]?.children || [] })) : null;
} }
// 甲方详情左侧菜单映射 // 甲方详情左侧菜单映射 key 服务器返回字段 value 菜单 pathName
export const detailSideBar = new Map([ export const detailSideBar = new Map([
// 企业速览 // 企业概要 股东信息
["holderinfo", "ownershipStructure"], ["ownershipStructure", "holderinfo"],
// 高管信息 // 企业概要 高管信息
["execuinfo", "leadingMember"], ["leadingMember", "execuinfo"],
// 对外投资 // 企业概要 对外投资
["overseas", "outboundInvestment"], ["outboundInvestment", "overseas"],
// 分支机构 // 企业概要 分支机构
["branch", "branch"], ["branch", "branch"],
// 项目商机 重点项目
["importantBusiness", "majorProject"],
// 项目商机 土地交易 城投分析 城投拿地
["landInfo", ["landtransaction", "landAcquisition"]],
// 拟建项目
["busProposedProjectV1", "proposed"],
// 专项债项目
["specialDebt", "bond"],
// 招标计划
["bidPlan", "biddingplan"],
// 招标公告
["biddingAnnouncement", "announcement"],
// 标讯Pro
["proBiddingAnnouncement", "tencent"],
// 行政许可
["adminLicensing", "administrative"],
// 业务往来 客户
["customerV1", "custom"],
// 业务往来 供应商
["supplierV1", "supplier"],
// 业务往来 招标代理
["coopBiddingAgency", "bidagency"],
// 业务往来 历史发包
["historySend", "hiscontract"],
// 开标记录
["tenderRecordV1", "bidrecords"],
// 风险信息 行政处罚
["adminSanction", "punish"],
// 风险信息 经营异常
["abnormalOperation", "businessAnomaly"],
// 风险信息 被执行人
["dishonestExecutee", "ifThePerson"],
// 风险信息 失信被执行人
["dishonestExecutor", "dishonesty"],
// 风险信息 裁判文书
["adjudicativeDoc", "judgment"],
// 风险信息 法院公告
["courtAnnouncement", "courtNotice"],
// 风险信息 开庭公告
["openAnnouncement", "openacourtsessionNotice"]
]) ])
...@@ -96,21 +96,21 @@ export default { ...@@ -96,21 +96,21 @@ export default {
// 列表表头 // 列表表头
formColum: [ formColum: [
{ label: '序号', prop: "staticSerialNumber", type: "index", lock: true, fixed: false, uid: v4() }, { label: '序号', prop: "staticSerialNumber", type: "index", lock: true, fixed: false, uid: v4() },
{ label: '咨询机构名称', prop: 'advisoryBodyName', width: "198px", lock: true, fixed: false, slot: true, uid: v4(), showOverflowTooltip: true }, { label: '项目列表', prop: 'projectName', width: "222px", lock: true, fixed: false, slot: true, uid: v4(), showOverflowTooltip: true },
{ label: '最近一次合作时间', prop: 'lastCooperateTime', width: "201px", uid: v4() }, { label: '合同编码', prop: 'projectCode', width: "123px", uid: v4() },
{ label: '经营状态', prop: 'businessStatus', width: "74px", uid: v4() }, { label: '省市', prop: 'provinceName', width: "102px", uid: v4() },
{ label: '法定代表人', prop: 'corporatePerson', width: "86px", uid: v4() }, { label: '项目承接类型', prop: 'isinvestproject', width: "102px", uid: v4() },
{ label: '注册资本', prop: 'regCapital', width: "107px", uid: v4() }, { label: '工程基础大类', prop: 'projectType1', width: "98px", uid: v4() },
{ label: '注册地区', prop: 'regArea', width: "149px", uid: v4() }, { label: '工程类别明细', prop: 'projectType', width: "98px", uid: v4() },
{ label: '成立日期', prop: 'registeredDate', width: "97px", uid: v4() }, { label: '项目负责人姓名', prop: 'projectLeader', width: "110px", uid: v4() },
{ label: '经营范围', prop: 'businessScope', width: "417px", uid: v4() }, { label: '项目负责人专业', prop: 'projectLeaderMajor', width: "110px", uid: v4() },
{ label: '合作项目数量', prop: 'cooperateProjectCount', width: "98px", uid: v4(), slot: true }, { label: '项目负责人联系电话', prop: 'projectLeaderPhone', width: "134px", uid: v4() },
], ],
queryParams: { queryParams: {
pageSize: 20, pageSize: 20,
pageNum: 1, pageNum: 1,
// 咨询机构ID // 咨询机构ID
advisoryBodyId: "", advisoryBodyCid: "",
}, },
tableDataList: [], tableDataList: [],
total: 0, total: 0,
...@@ -164,8 +164,8 @@ export default { ...@@ -164,8 +164,8 @@ export default {
methods: { methods: {
async init() { async init() {
try { try {
// if (!this.$routes?.params?.advisoryBodyId) return this.$message.error("缺少咨询机构Id"); if (!this.$routes?.params?.advisoryBodyCid) return this.$message.error("缺少咨询机构Id");
// this.queryParams.advisoryBodyId = !this.$routes?.params?.advisoryBodyId; this.queryParams.advisoryBodyCid = !this.$routes?.params?.advisoryBodyCid;
await this.getList(this.queryParams); await this.getList(this.queryParams);
} catch (error) { } catch (error) {
......
...@@ -44,7 +44,8 @@ ...@@ -44,7 +44,8 @@
</template> </template>
<!-- 合作项目数量 --> <!-- 合作项目数量 -->
<template slot="cooperateProjectCount" slot-scope="{data,row}"> <template slot="cooperateProjectCount" slot-scope="{data,row}">
<div v-if="row.cooperateProjectCount" class="no-line-feed ">{{row.cooperateProjectCount}}</div> <div v-if="row.cooperateProjectCount" class="no-line-feed" @click="toCooperateDetail(row)">{{row.cooperateProjectCount}}
</div>
<span v-else>-</span> <span v-else>-</span>
</template> </template>
</table-list-com> </table-list-com>
...@@ -125,6 +126,10 @@ export default { ...@@ -125,6 +126,10 @@ export default {
} }
}, },
toCooperateDetail(row) {
if (!row.advisoryBodyCid) return this.$message.warning("缺少咨询机构id");
this.$tab.openPage(`${row.advisoryBodyName}合作明细`, `/consultingOrgManagement/detailsOfCooperation/${row.advisoryBodyCid}`);
},
// 创建最终查询条件 // 创建最终查询条件
mergeCondition() { mergeCondition() {
const _queryParams = JSON.parse(JSON.stringify(this.queryParams)); const _queryParams = JSON.parse(JSON.stringify(this.queryParams));
......
...@@ -27,8 +27,8 @@ ...@@ -27,8 +27,8 @@
<transition name="fade-position" appear mode="out-in"> <transition name="fade-position" appear mode="out-in">
<span v-if="!form.hover && !form.value">搜索</span> <span v-if="!form.hover && !form.value">搜索</span>
<el-input v-model="form.value" :placeholder="form.placeholder ? form.placeholder : '输入关键词查询'" <el-input v-model="form.value" :placeholder="form.placeholder ? form.placeholder : '输入关键词查询'"
:style="form.width?'width:'+form.width+'px':'width:238px'" @focus.stop="searchFocus($event,form)" @blur.stop="searchBlur($event,form)" :style="form.width?'width:'+form.width+'px':'width:238px'" @focus.stop="searchFocus($event,form)"
@input="value => searchInput(value,form)" v-else @keydown.native.enter="changeSelect"> @blur.stop="searchBlur($event,form)" @input="value => searchInput(value,form)" v-else @keydown.native.enter="changeSelect">
<template slot="suffix"> <template slot="suffix">
<transition mode="out-in" appear name="fade"> <transition mode="out-in" appear name="fade">
<img src="@/assets/images/enterprise/search-input-clear-icon.svg" @click.stop="form.value = '';changeSelect()" <img src="@/assets/images/enterprise/search-input-clear-icon.svg" @click.stop="form.value = '';changeSelect()"
...@@ -78,8 +78,8 @@ ...@@ -78,8 +78,8 @@
</template> </template>
<div v-else class="flex-box"> <div v-else class="flex-box">
<span class="flex-box ability-total" v-if="isTotal">共有{{ total }}条</span> <span class="flex-box ability-total" v-if="isTotal">共有{{ total }}条</span>
<span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid','combine:info:export:bid']" v-if="isExcel && title ==='集团业绩'|| title ==='集团招标' " <span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid','combine:info:export:bid']"
@click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span> v-if="isExcel && title ==='集团业绩'|| title ==='集团招标' " @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
<span class="flex-box ability-excel" v-else @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span> <span class="flex-box ability-excel" v-else @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
</div> </div>
</div> </div>
...@@ -283,7 +283,8 @@ export default { ...@@ -283,7 +283,8 @@ export default {
textContainer.style.setProperty("box-sizing", "border-box"); textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = iptChild.value ? iptChild.value : iptChild.getAttribute("placeholder"); textContainer.textContent = iptChild.value ? iptChild.value : iptChild.getAttribute("placeholder");
document.body.append(textContainer); document.body.append(textContainer);
let containerWidth = textContainer.offsetWidth + 12 + 8; // 1px 误差
let containerWidth = textContainer.offsetWidth + 12 + 8 + 1;
textContainer.remove(); textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`); dom.style.setProperty("width", `${containerWidth}px`);
} }
......
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
<slot :name="cld.prop" :row="cldscope.row" :data="cld"></slot> <slot :name="cld.prop" :row="cldscope.row" :data="cld"></slot>
</template> </template>
<template v-else> <template v-else>
<span>{{cldscope.row[cld.prop] || '--'}}</span> <span>{{cldscope.row[cld.prop] || '-'}}</span>
</template> </template>
</template> </template>
</el-table-column> </el-table-column>
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<template slot-scope="scope"> <template slot-scope="scope">
<slot v-if="item.slot" :name="item.prop" :row="scope.row" :index="scope.$index" :data="item"></slot> <slot v-if="item.slot" :name="item.prop" :row="scope.row" :index="scope.$index" :data="item"></slot>
<span v-else> <span v-else>
{{ scope.row[item.prop] || '--' }} {{ scope.row[item.prop] || '-' }}
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
......
...@@ -41,9 +41,13 @@ ...@@ -41,9 +41,13 @@
<BusinessAnomaly v-if="currentPath.pathName=='businessAnomaly'" :company-id="companyId" /> <BusinessAnomaly v-if="currentPath.pathName=='businessAnomaly'" :company-id="companyId" />
<IfThePerson v-if="currentPath.pathName=='ifThePerson'" :company-id="companyId" /> <IfThePerson v-if="currentPath.pathName=='ifThePerson'" :company-id="companyId" />
<Dishonesty v-if="currentPath.pathName=='dishonesty'" :company-id="companyId" /> <Dishonesty v-if="currentPath.pathName=='dishonesty'" :company-id="companyId" />
<Judgment v-if="currentPath.pathName=='judgment'" :company-id="companyId" /> <!-- 限制高消费 -->
<limit-high-consumption v-if="currentPath.pathName=='limitHighConsumption'" :company-id="companyId"></limit-high-consumption>
<!-- 股权冻结 -->
<equity-freezing v-if="currentPath.pathName=='equityFreezing'" :company-id="companyId"></equity-freezing>
<!-- <Judgment v-if="currentPath.pathName=='judgment'" :company-id="companyId" />
<CourtNotice v-if="currentPath.pathName=='courtNotice'" :company-id="companyId" /> <CourtNotice v-if="currentPath.pathName=='courtNotice'" :company-id="companyId" />
<OpenacourtsessionNotice v-if="currentPath.pathName=='openacourtsessionNotice'" :company-id="companyId" /> <OpenacourtsessionNotice v-if="currentPath.pathName=='openacourtsessionNotice'" :company-id="companyId" /> -->
</template> </template>
<template v-if="customerId && isCustomer"> <template v-if="customerId && isCustomer">
<!-- 商务信息 --> <!-- 商务信息 -->
...@@ -101,6 +105,8 @@ import Punish from "./riskInformation/punish"; //风险信息-行政处罚 ...@@ -101,6 +105,8 @@ import Punish from "./riskInformation/punish"; //风险信息-行政处罚
import BusinessAnomaly from "./riskInformation/businessAnomaly"; //风险信息-经营异常 import BusinessAnomaly from "./riskInformation/businessAnomaly"; //风险信息-经营异常
import IfThePerson from "./riskInformation/ifThePerson"; //风险信息-被执行人 import IfThePerson from "./riskInformation/ifThePerson"; //风险信息-被执行人
import Dishonesty from "./riskInformation/dishonesty"; //风险信息-失信被执行 import Dishonesty from "./riskInformation/dishonesty"; //风险信息-失信被执行
import LimitHighConsumption from "./riskInformation/limitHighConsumption"; //风险信息-限制高消费
import EquityFreezing from "./riskInformation/equityFreezing"; //风险信息-股权冻结
import Judgment from "./riskInformation/judgment"; //风险信息-判决文书 import Judgment from "./riskInformation/judgment"; //风险信息-判决文书
import CourtNotice from "./riskInformation/courtNotice"; //风险信息-法院公告 import CourtNotice from "./riskInformation/courtNotice"; //风险信息-法院公告
import OpenacourtsessionNotice from "./riskInformation/openacourtsessionNotice"; //风险信息-开庭公告 import OpenacourtsessionNotice from "./riskInformation/openacourtsessionNotice"; //风险信息-开庭公告
...@@ -145,6 +151,8 @@ export default { ...@@ -145,6 +151,8 @@ export default {
BusinessAnomaly, BusinessAnomaly,
IfThePerson, IfThePerson,
Dishonesty, Dishonesty,
LimitHighConsumption,
EquityFreezing,
Judgment, Judgment,
CourtNotice, CourtNotice,
OpenacourtsessionNotice, OpenacourtsessionNotice,
...@@ -166,7 +174,18 @@ export default { ...@@ -166,7 +174,18 @@ export default {
currentPath: { currentPath: {
pathName: 'overview' //默认展示页 pathName: 'overview' //默认展示页
}, },
statisticObj: {}, statisticObj: {
basic: {},
behavior: {},
business: {},
combineMember: {},
credit: {},
evaluation: {},
global: {},
performance: {},
personnel: {},
qualification: {}
},
partBoxHeight: null, partBoxHeight: null,
cooDetail: false cooDetail: false
}; };
...@@ -218,28 +237,25 @@ export default { ...@@ -218,28 +237,25 @@ export default {
} }
} }
}, },
beforeRouteLeave(to, from, next) {
next(vm => {
});
},
beforeRouteEnter(to, from, next) {
next(vm => {
});
},
created() { created() {
if (this.$route.params.id) { // 获取companyId this.init();
let companyId = this.$route.params.id;
this.getCompanyId(companyId);
}
if (this.$route.query.path) { // 获取跳转对应板块
this.currentPath.pathName = this.$route.query.path;
}
}, },
mounted() { mounted() {
}, },
methods: { methods: {
async init() {
try {
if (this.$route.params.id) { // 获取companyId
let companyId = this.$route.params.id;
await this.getCompanyId(companyId);
}
if (this.$route.query.path) { // 获取跳转对应板块
this.currentPath.pathName = this.$route.query.path;
}
} catch (error) {
console.log(error);
}
},
showPartPage(e) { showPartPage(e) {
this.currentPath = e; this.currentPath = e;
}, },
...@@ -248,19 +264,18 @@ export default { ...@@ -248,19 +264,18 @@ export default {
let { data } = await idRemark({ mark: companyId }); let { data } = await idRemark({ mark: companyId });
if (data) { if (data) {
this.companyId = data; this.companyId = data;
this.$nextTick(() => { await this.$nextTick();
this.listenSider(); this.listenSider();
}); await this.getStatistic();
this.getStatistic(); await this.handleQuery();
this.handleQuery(); await this.association(this.$route.query.customerId);
this.association(this.$route.query.customerId);
this.$refs.sidebar.financial(data); this.$refs.sidebar.financial(data);
} }
}, },
async getStatistic() { async getStatistic() {
let res = await statistic({ companyId: this.companyId }); let res = await statistic({ companyId: this.companyId });
if (res.code == 200) { if (res.code == 200) {
this.statisticObj = res.data; this.statisticObj = { ...this.statisticObj, ...res.data };
} }
}, },
async handleQuery() { async handleQuery() {
...@@ -275,27 +290,21 @@ export default { ...@@ -275,27 +290,21 @@ export default {
provinceIds: [this.companyInfo.provinceId], provinceIds: [this.companyInfo.provinceId],
cityIds: [this.companyInfo.cityId], cityIds: [this.companyInfo.cityId],
}; };
urbanInvestmentPage(data).then(res => { const result = await urbanInvestmentPage(data);
if (res.code == 200) { if (result.code == 200) {
if (res.data.totalCount < 1) { if (result.data.totalCount < 1) {
let arr = JSON.parse(JSON.stringify(this.$refs.sidebar.sideRoute)); let arr = JSON.parse(JSON.stringify(this.$refs.sidebar.sideRoute));
arr[4].children[2].disabled = true; arr[4].children[2].disabled = true;
this.$refs.sidebar.sideRoute = arr; this.$refs.sidebar.sideRoute = arr;
}
} }
}); }
if (this.companyInfo && this.companyInfo.companyName) { if (this.companyInfo && this.companyInfo.companyName) {
this.$nextTick(() => { this.$nextTick(() => {
document.getElementById('tagTitle').innerText = this.companyInfo.companyName; document.getElementById('tagTitle').innerText = this.companyInfo.companyName;
// let lists = this.$store.state.tagsView.visitedViews
// lists.forEach(item=>{
// if(item.fullPath == this.$route.fullPath){
let titlename = document.getElementById('tagTitles'); let titlename = document.getElementById('tagTitles');
if (titlename) { if (titlename) {
titlename.innerText = this.companyInfo.companyName; titlename.innerText = this.companyInfo.companyName;
} }
// }
// })
}); });
} }
} }
...@@ -313,60 +322,49 @@ export default { ...@@ -313,60 +322,49 @@ export default {
this.cooDetail = false; this.cooDetail = false;
}, },
// 判断客户是否关联显示修改 // 判断客户是否关联显示修改
association(id) { async association(id) {
if (id) { if (id) {
customerInfo(id).then(res => { try {
const res = await customerInfo(id);
if (res.code == 200) { if (res.code == 200) {
if (res.data.userId == this.$store.state.user.userId) { if (res.data.userId == this.$store.state.user.userId) {
this.$nextTick(() => { await this.$nextTick();
this.customerInfo = res.data; this.customerInfo = res.data;
this.customerId = res.data.customerId; this.customerId = res.data.customerId;
});
if (res.data.companyId == this.companyId) { if (res.data.companyId == this.companyId) {
this.$nextTick(() => { await this.$nextTick();
this.isCustomer = true; this.isCustomer = true;
this.isCompany = true; this.isCompany = true;
});
} else { } else {
this.$nextTick(() => { await this.$nextTick();
this.isCustomer = true; this.isCustomer = true;
this.isCompany = false; this.isCompany = false;
this.currentPath.pathName = this.$route.query.path || 'business'; this.currentPath.pathName = this.$route.query.path || 'business';
this.companyInfo = { this.companyInfo = {
companyName: this.customerInfo.companyName companyName: this.customerInfo.companyName
}; };
document.getElementById('tagTitle').innerText = this.customerInfo.companyName; document.getElementById('tagTitle').innerText = this.customerInfo.companyName;
// let lists = this.$store.state.tagsView.visitedViews let titlename = document.getElementById('tagTitles');
// lists.forEach(item=>{ if (titlename) {
// if(item.fullPath == this.$route.fullPath){ titlename.innerText = this.customerInfo.companyName;
let titlename = document.getElementById('tagTitles'); }
if (titlename) {
titlename.innerText = this.customerInfo.companyName;
}
// }
// })
});
} }
} else { } else {
this.$nextTick(() => { await this.$nextTick();
this.isCustomer = true; this.isCustomer = true;
this.isCompany = true; this.isCompany = true;
this.currentPath.pathName = 'overview'; this.currentPath.pathName = 'overview';
});
} }
} }
}).catch(err => { } catch (err) {
this.$nextTick(() => { await this.$nextTick();
this.currentPath.pathName = 'overview'; this.currentPath.pathName = 'overview';
this.isCompany = true;
});
});
} else {
this.$nextTick(() => {
this.isCompany = true; this.isCompany = true;
// this.currentPath.pathName = 'overview'; }
this.currentPath.pathName = this.$routes.query.path; } else {
}); await this.$nextTick();
this.isCompany = true;
this.currentPath.pathName = 'overview';
} }
}, },
......
...@@ -95,7 +95,8 @@ export default { ...@@ -95,7 +95,8 @@ export default {
this.handleQuery1(); this.handleQuery1();
}, },
methods: { methods: {
handleClick() { handleClick(v) {
if (v.name == this.activeName) return;
if (this.activeName == 'first') { if (this.activeName == 'first') {
this.handleQuery(); this.handleQuery();
} else { } else {
......
...@@ -72,7 +72,7 @@ export default { ...@@ -72,7 +72,7 @@ export default {
let res = await projectTenderDataGroup({ cid: this.companyId, type: this.activeIndex }); let res = await projectTenderDataGroup({ cid: this.companyId, type: this.activeIndex });
if (res.code == 200 && res.data) { if (res.code == 200 && res.data) {
this.isSkeleton = false; this.isSkeleton = false;
let data = res.data, totalVal = data.map(item => item.value).reduce((prev, cur) => prev + cur); let data = res.data, totalVal = data.map(item => item.value).reduce((prev, cur) => {prev + cur},0);
this.viewData = data.map(item => { this.viewData = data.map(item => {
let it = { name: item.name, value: item.value, percent: parseFloat(Number(Number(item.value) / Number(totalVal) * 100).toFixed(2)) }; let it = { name: item.name, value: item.value, percent: parseFloat(Number(Number(item.value) / Number(totalVal) * 100).toFixed(2)) };
return it; return it;
......
<template>
<div class="equity-freezing-container">
<el-tabs v-model="queryParams.type" @tab-click="handleClick" class="detail-tab">
<el-tab-pane label="股权冻结" name="0"></el-tab-pane>
<el-tab-pane label="历史股权冻结" :disabled="tableDataTotal==0" name="1"></el-tab-pane>
</el-tabs>
<head-form-new ref="headFormNew" title="" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables v-if="!isSkeleton" :indexFixed="true" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange">
<template slot="operation-table" slot-scope="scope">
<span style="color: #0081FF;cursor: pointer;" @click="viewDetail(scope.row)">操作</span>
</template>
</tables>
</div>
</template>
<script>
import skeleton from '../component/skeleton';
import mixin from '@/views/detail/party-a/mixins/mixin';
import { getEquityFreezingApi } from "@/api/detail/party-a/riskInformation";
export default {
name: "equityFreezingContainer",
mixins: [mixin],
components: {
skeleton
},
props: ['companyId'],
data() {
return {
queryParams: {
cid: this.companyId,
pageNum: 1,
pageSize: 10,
type: "0"
},
forData: [
{ label: '执行通知书文号', prop: 'name', width: '164' },
{ label: '被执行人', prop: 'companyName', minWidth: '146' },
{ label: '股权数额', prop: 'executionApplicant', width: '113' },
{ label: '执行法院', prop: 'court', minWidth: '146' },
{ label: '状态', prop: 'releaseDate', width: '50' },
{ label: '冻结起止日期', prop: 'source', width: '171' },
{ label: '公式时间', prop: 'source', width: '93' },
{ label: '操作', prop: 'operation-table', width: '50', slot: true },
],
formData: [
{ type: 5, fieldName: 'time', value: '', placeholder: '选择日期', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() },
],
//列表
tableLoading: false,
tableData: [],
tableDataTotal: 0,
showList: [],
isSkeleton: true,
resetStatus: false
};
},
//可访问data属性
created() {
this.initDetail();
},
//计算集
computed: {
},
//方法集
methods: {
async initDetail() {
try {
await this.handleQuery();
} catch (error) {
}
},
resetQueryParams() {
const data = this.$options.data.call(this);
this.queryParams = { ...data.queryParams, type: this.queryParams.type };
this.formData[0].value = "";
},
async handleQuery(params) {
try {
let data = params ? params : this.queryParams;
this.isSkeleton = true;
const res = await getEquityFreezingApi(data);
this.tableData = res.rows ? res.rows : [];
this.tableDataTotal = res.total ? res.total : 0;
} catch (error) {
console.log(error);
} finally {
this.isSkeleton = false;
}
},
handleClick(v) {
if (v.name == this.queryParams.type) return;
this.resetQueryParams();
this.handleQuery();
},
// 查看详情
viewDetail(row) {
}
},
}
</script>
<style lang="scss" scoped>
.equity-freezing-container {
padding: 16px;
background: #ffffff;
border-radius: 4px;
input {
border: 1px solid #efefef;
}
::v-deep .el-form-item {
margin-right: 8px !important;
}
.query-box {
margin: 10px 0 20px;
}
.cell-span {
display: inline-block;
position: relative;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 4;
cursor: pointer;
> span {
display: inline-block;
width: 37px;
position: absolute;
right: 0;
bottom: 0;
background-color: #fff;
z-index: 1;
}
}
.detail-tab {
margin: 0 0 0 -16px;
::v-deep .el-tabs__nav-wrap::after {
display: none;
}
::v-deep .el-tabs__item {
font-size: 16px;
height: 30px;
line-height: 30px;
padding: 0 16px;
&.is-active {
font-weight: bold;
}
}
}
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="limit-high-consumption-container">
<head-form-new title="限制高消费" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables v-if="!isSkeleton" :indexFixed="true" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange">
<template slot="source" slot-scope="scope">
<span v-if="scope.row.source" style="color: #0081FF;cursor: pointer;" @click="viewOriginalArticle(scope.row)">查看原文</span>
<span v-else>-</span>
</template>
</tables>
</div>
</template>
<script>
import skeleton from '../component/skeleton';
import mixin from '@/views/detail/party-a/mixins/mixin';
import { getLimitHighConsumptionApi } from "@/api/detail/party-a/riskInformation";
export default {
name: "limitHighConsumptionContainer",
mixins: [mixin],
components: {
skeleton
},
props: ['companyId'],
data() {
return {
queryParams: {
cid: this.companyId,
pageNum: 1,
pageSize: 10
},
forData: [
{ label: '限消令对象', prop: 'name', width: '215' },
{ label: '关联对象', prop: 'companyName', minWidth: '136' },
{ label: '申请执行人', prop: 'executionApplicant', width: '136' },
{ label: '执行法院', prop: 'court', minWidth: '171' },
{ label: '发布日期', prop: 'releaseDate', width: '136' },
{ label: '原文', prop: 'source', width: '136', slot: true },
],
formData: [
{ type: 5, fieldName: 'time', value: '', placeholder: '发布日期', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() },
],
//列表
tableLoading: false,
tableData: [],
tableDataTotal: 0,
showList: [],
isSkeleton: true
};
},
//可访问data属性
created() {
this.initDetail();
},
//计算集
computed: {
},
//方法集
methods: {
async initDetail() {
try {
await this.handleQuery();
} catch (error) {
}
},
async handleQuery(params) {
try {
let data = params ? params : this.queryParams;
this.isSkeleton = true;
const res = await getLimitHighConsumptionApi(data);
this.tableData = res.rows ? res.rows : [];
this.tableDataTotal = res.total ? res.total : 0;
} catch (error) {
console.log(error);
} finally {
this.isSkeleton = false;
}
},
// 查看原文
viewOriginalArticle(row) {
}
},
}
</script>
<style lang="scss" scoped>
.limit-high-consumption-container {
background: #ffffff;
border-radius: 4px;
padding: 16px;
input {
border: 1px solid #efefef;
}
::v-deep .el-form-item {
margin-right: 8px !important;
}
.query-box {
margin: 10px 0 20px;
}
.cell-span {
display: inline-block;
position: relative;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 4;
cursor: pointer;
> span {
display: inline-block;
width: 37px;
position: absolute;
right: 0;
bottom: 0;
background-color: #fff;
z-index: 1;
}
}
@import "@/assets/styles/search-common.scss";
}
</style>
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