Commit 68aa5757 authored by tianhongyang's avatar tianhongyang

Merge branch 'V20230915' of http://192.168.60.201/root/dsk-operate-sys into V20230915

parents 9886a36e eef9983a
...@@ -28,9 +28,9 @@ public interface CacheConstants { ...@@ -28,9 +28,9 @@ public interface CacheConstants {
public static final String DATA_UIPGROUPDATA = "data:uipGroupData"; public static final String DATA_UIPGROUPDATA = "data:uipGroupData";
/** /**
* 查甲方 菜单选线 * 用户 位置信息
*/ */
public static final String PERSONAL_LOCATION = "personal:location"; public static final String PERSONAL_LOCATION = "personal:location:";
/** /**
* 查甲方 财务数据 * 查甲方 财务数据
...@@ -42,4 +42,10 @@ public interface CacheConstants { ...@@ -42,4 +42,10 @@ public interface CacheConstants {
* 全国经济大全-默认 * 全国经济大全-默认
*/ */
public static final String DATA_ECONOMIC = "data:economic"; public static final String DATA_ECONOMIC = "data:economic";
/**
* 查集团户-集团统计信息
*/
public static final String DATA_COMBINE = "data:combine:";
} }
...@@ -11,6 +11,7 @@ import com.dsk.common.core.domain.R; ...@@ -11,6 +11,7 @@ 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.exception.ServiceException; import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.DskOpenApiUtil; import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.common.utils.JsonUtils;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.jsk.domain.JskCombineBidPageDto; import com.dsk.jsk.domain.JskCombineBidPageDto;
import com.dsk.jsk.domain.JskCombineCertificateDto; import com.dsk.jsk.domain.JskCombineCertificateDto;
...@@ -248,9 +249,9 @@ public class JskCombineInfoService { ...@@ -248,9 +249,9 @@ public class JskCombineInfoService {
*@date: 2023/9/12 16:05 *@date: 2023/9/12 16:05
*/ */
public R memberCount(JskCombineCountDto dto) { public R memberCount(JskCombineCountDto dto) {
String redisKey = CacheConstants.PERSONAL_LOCATION + dto.getCombineId(); String redisKey = CacheConstants.DATA_COMBINE + dto.getCombineId();
if (ObjectUtil.isNotEmpty(redisKey)) { if (ObjectUtil.isNotEmpty(redisKey)) {
Map<String, Object> cacheMap = redisCache.getCacheObject(redisKey); Map<String, Object> cacheMap = JsonUtils.parseObject(redisCache.getCacheObject(redisKey), Map.class);
if (MapUtils.isNotEmpty(cacheMap)) { if (MapUtils.isNotEmpty(cacheMap)) {
return R.ok(cacheMap); return R.ok(cacheMap);
} }
...@@ -263,7 +264,7 @@ public class JskCombineInfoService { ...@@ -263,7 +264,7 @@ public class JskCombineInfoService {
Map<String, Object> data = BeanUtil.beanToMap(map.get("data")); Map<String, Object> data = BeanUtil.beanToMap(map.get("data"));
data.put("performance", businessCount(paramsMap)); data.put("performance", businessCount(paramsMap));
map.put("data", data); map.put("data", data);
redisCache.setCacheObject(redisKey, data,24, TimeUnit.HOURS); redisCache.setCacheObject(redisKey, JsonUtils.toJsonString(data), 24, TimeUnit.HOURS);
} }
return BeanUtil.toBean(map, R.class); return BeanUtil.toBean(map, R.class);
} }
......
...@@ -8,6 +8,7 @@ import com.dsk.common.core.domain.AjaxResult; ...@@ -8,6 +8,7 @@ import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.helper.LoginHelper; import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.DateUtils; import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.DskOpenApiUtil; import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.common.utils.JsonUtils;
import com.dsk.jsk.domain.*; import com.dsk.jsk.domain.*;
import com.dsk.jsk.domain.bo.*; import com.dsk.jsk.domain.bo.*;
import com.dsk.jsk.service.service.EconomicService; import com.dsk.jsk.service.service.EconomicService;
...@@ -81,7 +82,7 @@ public class EconomicServiceImpl implements EconomicService { ...@@ -81,7 +82,7 @@ public class EconomicServiceImpl implements EconomicService {
String redisKey = CacheConstants.PERSONAL_LOCATION + userId; String redisKey = CacheConstants.PERSONAL_LOCATION + userId;
if (ObjectUtil.isEmpty(detailsDto.getProvinceId()) && ObjectUtil.isEmpty(detailsDto.getCityId()) && ObjectUtil.isEmpty(detailsDto.getAreaId())) { if (ObjectUtil.isEmpty(detailsDto.getProvinceId()) && ObjectUtil.isEmpty(detailsDto.getCityId()) && ObjectUtil.isEmpty(detailsDto.getAreaId())) {
if (ObjectUtil.isNotEmpty(redisKey)) { if (ObjectUtil.isNotEmpty(redisKey)) {
Map<String, Object> cacheMap = redisCache.getCacheMap(redisKey); Map<Object, Object> cacheMap = JsonUtils.parseObject(redisCache.getCacheObject(redisKey), Map.class);
if (MapUtils.isNotEmpty(cacheMap)) { if (MapUtils.isNotEmpty(cacheMap)) {
return AjaxResult.success(cacheMap); return AjaxResult.success(cacheMap);
} }
...@@ -93,10 +94,9 @@ public class EconomicServiceImpl implements EconomicService { ...@@ -93,10 +94,9 @@ public class EconomicServiceImpl implements EconomicService {
if (!code.equals(HttpStatus.OK.value())) { if (!code.equals(HttpStatus.OK.value())) {
throw new RuntimeException(); throw new RuntimeException();
} }
Map data = MapUtils.getMap(map, "data", null); Map data = MapUtils.getMap(map, "data", null);
if (ObjectUtil.isNotEmpty(detailsDto.getProvinceId()) || ObjectUtil.isNotEmpty(detailsDto.getCityId()) || ObjectUtil.isNotEmpty(detailsDto.getAreaId())) { if (ObjectUtil.isNotEmpty(detailsDto.getProvinceId()) || ObjectUtil.isNotEmpty(detailsDto.getCityId()) || ObjectUtil.isNotEmpty(detailsDto.getAreaId())) {
redisCache.setCacheMap(redisKey, data); redisCache.setCacheObject(redisKey, JsonUtils.toJsonString(data));
} }
return BeanUtil.toBean(map, AjaxResult.class); return BeanUtil.toBean(map, AjaxResult.class);
} }
......
...@@ -7,10 +7,7 @@ import java.util.Map; ...@@ -7,10 +7,7 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.BoundSetOperations; import org.springframework.data.redis.core.*;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
...@@ -25,15 +22,18 @@ public class RedisCache ...@@ -25,15 +22,18 @@ public class RedisCache
@Autowired @Autowired
public RedisTemplate redisTemplate; public RedisTemplate redisTemplate;
@Autowired
public StringRedisTemplate stringRedisTemplate;
/** /**
* 缓存基本的对象,Integer、String、实体类等 * 缓存基本的对象,Integer、String、实体类等
* *
* @param key 缓存的键值 * @param key 缓存的键值
* @param value 缓存的值 * @param value 缓存的值
*/ */
public <T> void setCacheObject(final String key, final T value) public <T> void setCacheObject(final String key, final String value)
{ {
redisTemplate.opsForValue().set(key, value); stringRedisTemplate.opsForValue().set(key, value);
} }
/** /**
...@@ -44,9 +44,9 @@ public class RedisCache ...@@ -44,9 +44,9 @@ public class RedisCache
* @param timeout 时间 * @param timeout 时间
* @param timeUnit 时间颗粒度 * @param timeUnit 时间颗粒度
*/ */
public <T> void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit) public <T> void setCacheObject(final String key, final String value, final Integer timeout, final TimeUnit timeUnit)
{ {
redisTemplate.opsForValue().set(key, value, timeout, timeUnit); stringRedisTemplate.opsForValue().set(key, value, timeout, timeUnit);
} }
/** /**
...@@ -102,10 +102,9 @@ public class RedisCache ...@@ -102,10 +102,9 @@ public class RedisCache
* @param key 缓存键值 * @param key 缓存键值
* @return 缓存键值对应的数据 * @return 缓存键值对应的数据
*/ */
public <T> T getCacheObject(final String key) public String getCacheObject(final String key)
{ {
ValueOperations<String, T> operation = redisTemplate.opsForValue(); return stringRedisTemplate.opsForValue().get(key);
return operation.get(key);
} }
/** /**
...@@ -191,7 +190,7 @@ public class RedisCache ...@@ -191,7 +190,7 @@ public class RedisCache
public <T> void setCacheMap(final String key, final Map<String, T> dataMap) public <T> void setCacheMap(final String key, final Map<String, T> dataMap)
{ {
if (dataMap != null) { if (dataMap != null) {
redisTemplate.opsForHash().putAll(key, dataMap); stringRedisTemplate.opsForHash().putAll(key, dataMap);
} }
} }
...@@ -201,9 +200,9 @@ public class RedisCache ...@@ -201,9 +200,9 @@ public class RedisCache
* @param key * @param key
* @return * @return
*/ */
public <T> Map<String, T> getCacheMap(final String key) public <T> Map<Object, Object> getCacheMap(final String key)
{ {
return redisTemplate.opsForHash().entries(key); return stringRedisTemplate.opsForHash().entries(key);
} }
/** /**
......
...@@ -124,14 +124,14 @@ public class MarketAnalysisService { ...@@ -124,14 +124,14 @@ public class MarketAnalysisService {
public AjaxResult combineRecentlyBid(JSONObject object) { public AjaxResult combineRecentlyBid(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/combine/recentlyBid", object); Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/combine/recentlyBid", object);
if (!ObjectUtils.isEmpty(map.get("data"))) { // if (!ObjectUtils.isEmpty(map.get("data"))) {
List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("data"); // List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("data");
list.parallelStream().forEach(res -> { // list.parallelStream().forEach(res -> {
Integer companyId = MapUtils.getInteger(res, "tendereeId"); // Integer companyId = MapUtils.getInteger(res, "tendereeId");
String companyName = MapUtils.getString(res, "tenderee"); // String companyName = MapUtils.getString(res, "tenderee");
res.put("uipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(companyName, companyId)); // res.put("uipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(companyName, companyId));
}); // });
} // }
return BeanUtil.toBean(map, AjaxResult.class); return BeanUtil.toBean(map, AjaxResult.class);
} }
......
::v-deep .head-form-new { ::v-deep .head-form-new {
margin-bottom: 8px; padding-bottom: 8px;
.query-box { .query-box {
.from-item { .from-item {
display: flex; display: flex;
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
} }
} }
.el-cascader__tags { .el-cascader__tags,.el-select__tags {
.el-tag { .el-tag {
max-width: unset !important; max-width: unset !important;
} }
......
<template> <template>
<div :ref="refStr" class="custom-money-select screen-popper" id="custom-money-select"> <div :ref="refStr" class="custom-money-select1 screen-popper" id="custom-money-select">
<div :class="['input-block', isSelectOption?'rote':'']"> <div :class="['input-block', isSelectOption?'rote':'']">
<div class="block" @click="isSelectOption=!isSelectOption" @mouseenter="handleMouseenter" @mouseleave="handleMouseleave"> <div class="block" @click="isSelectOption=!isSelectOption" @mouseenter="handleMouseenter" @mouseleave="handleMouseleave">
<el-input class="custom-money-input" v-model="value" :placeholder="placeholder" readonly> <el-input class="custom-money-input" v-model="value" :placeholder="placeholder" readonly>
...@@ -238,8 +238,8 @@ export default { ...@@ -238,8 +238,8 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
.custom-money-select { .custom-money-select1 {
width: 120px; width: 106px;
height: 34px; height: 34px;
position: relative; position: relative;
.rote { .rote {
......
<template> <template>
<div :ref="refStr" class="custom-time-select screen-popper" id="custom-time-select"> <div :ref="refStr" class="custom-time-select1 screen-popper" id="custom-time-select">
<div :class="['input-block', isSelectOption?'rote':'']"> <div :class="['input-block', isSelectOption?'rote':'']">
<div class="block" @click="isSelectOption=!isSelectOption" @mouseenter="handleMouseenter" @mouseleave="handleMouseleave"> <div class="block" @click="isSelectOption=!isSelectOption" @mouseenter="handleMouseenter" @mouseleave="handleMouseleave">
<el-input class="custom-time-input" v-model="value" :placeholder="placeholder" readonly> <el-input class="custom-time-input" v-model="value" :placeholder="placeholder" readonly>
...@@ -244,8 +244,8 @@ export default { ...@@ -244,8 +244,8 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
.custom-time-select { .custom-time-select1 {
width: 120px; width: 90px !important;
height: 34px; height: 34px;
.rote { .rote {
......
...@@ -845,24 +845,27 @@ ...@@ -845,24 +845,27 @@
padding-top: 16px; padding-top: 16px;
width: 100%; width: 100%;
height: 100%; height: 100%;
::v-deep .el-form{ .table_search{
.el-input{ ::v-deep .el-form{
line-height: 32px; .el-input{
.el-input__inner{
height: 32px;
line-height: 32px; line-height: 32px;
border-radius: 4px; .el-input__inner{
border: 0; height: 32px;
line-height: 32px;
border-radius: 4px;
border: 0;
}
} }
} .is-focus{
.is-focus{ .el-input__inner{
.el-input__inner{ background: #F4F6F9;
background: #F4F6F9; }
} }
}
}
} }
} }
.box{ .box{
position: relative; position: relative;
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
:form-data="formData" :form-data="formData"
:query-params="queryParams" :query-params="queryParams"
:total="tableDataTotal" :total="tableDataTotal"
:headerFixed="true"
:isExcel="false" :isExcel="false"
@handle-search="handleSearch" @handle-search="handleSearch"
> >
...@@ -53,6 +54,7 @@ ...@@ -53,6 +54,7 @@
:tableLoading="tableLoading" :tableLoading="tableLoading"
:tableData="tableData" :tableData="tableData"
:forData="forData" :forData="forData"
:headerFixed="true"
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" :queryParams="queryParams"
:MaxPage=500 :MaxPage=500
...@@ -456,7 +458,7 @@ ...@@ -456,7 +458,7 @@
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400;
line-height: 32px; line-height: 32px;
color: #999999; color: rgba(35,35,35,0.8);
margin-right: 8px; margin-right: 8px;
text-align: center; text-align: center;
width: 70px; width: 70px;
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
:form-data="formData" :form-data="formData"
:query-params="queryParams" :query-params="queryParams"
:total="tableDataTotal" :total="tableDataTotal"
:headerFixed="true"
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
@handle-excel="clickEXCEL" @handle-excel="clickEXCEL"
...@@ -21,6 +22,7 @@ ...@@ -21,6 +22,7 @@
:tableLoading="tableLoading" :tableLoading="tableLoading"
:tableData="tableData" :tableData="tableData"
:forData="forData" :forData="forData"
:headerFixed="true"
:MaxPage=500 :MaxPage=500
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" :queryParams="queryParams"
......
<template> <template>
<div class="performance"> <div class="performance">
<div class="content"> <div class="content">
<head-form <head-form-new
ref="headForm" ref="headForm"
title="集团施工项目最新招标" title="集团施工项目最新招标"
:form-data="formData" :form-data="formData"
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
@handle-search="handleSearch" @handle-search="handleSearch"
:slots="true" :slots="true"
:isExcel="false" :isExcel="false"
></head-form> ></head-form-new>
<span class="check" @click="check">查看集团招标<i class="el-icon-arrow-right"></i></span> <span class="check" @click="check">查看集团招标<i class="el-icon-arrow-right"></i></span>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="table-item" v-if="!isSkeleton && tableData.length >0"> <div class="table-item" v-if="!isSkeleton && tableData.length >0">
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<el-table-column label="发布日期" prop="issueTime" width="100"></el-table-column> <el-table-column label="发布日期" prop="issueTime" width="100"></el-table-column>
<el-table-column label="招标成员" prop="tenderee" min-width="220"> <el-table-column label="招标成员" prop="tenderee" min-width="220">
<template slot-scope="scope"> <template slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.tendereeId)}`:`/company/${encodeStr(scope.row.tendereeId)}`" tag="a" class="a-link" v-if="scope.row.tendereeId&&scope.row.tenderee" v-html="scope.row.tenderee"></router-link> <span @click="getUipIdByCid(scope.row.tendereeId)" style="cursor: pointer;" class="a-link" v-if="scope.row.tendereeId&&scope.row.tenderee" v-html="scope.row.tenderee"></span>
<div v-else v-html="scope.row.tenderee || '--'"></div> <div v-else v-html="scope.row.tenderee || '--'"></div>
</template> </template>
</el-table-column> </el-table-column>
...@@ -88,7 +88,7 @@ ...@@ -88,7 +88,7 @@
</div> </div>
<div class="content"> <div class="content">
<head-form <head-form
title="集团施工项目发包金额区间" title="集团施工项目发包金额"
:form-data="[]" :form-data="[]"
:query-params="{}" :query-params="{}"
:slots="true" :slots="true"
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
clearable clearable
@change="changeSelect1" @change="changeSelect1"
class="form-content-width" class="form-content-width"
style="width: 80px"> style="width: 100px">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value"/> <el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value"/>
</el-select> </el-select>
</div> </div>
...@@ -139,7 +139,7 @@ ...@@ -139,7 +139,7 @@
clearable clearable
@change="changeSelect2" @change="changeSelect2"
class="form-content-width" class="form-content-width"
style="width: 80px"> style="width:100px">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value"/> <el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value"/>
</el-select> </el-select>
</div> </div>
...@@ -153,7 +153,7 @@ ...@@ -153,7 +153,7 @@
<div class="table-item"> <div class="table-item">
<el-table class="fixed-table" :data="lxtjList" border max-height="270"> <el-table class="fixed-table" :data="lxtjList" border max-height="270">
<el-table-column label="项目类型" prop="type" min-width="70"></el-table-column> <el-table-column label="项目类型" prop="type" min-width="70"></el-table-column>
<el-table-column label="发包数量" prop="count" width="120"> <el-table-column label="发包数量" prop="count" width="90">
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.count}}{{scope.row.count ? '个':''}} {{scope.row.count}}{{scope.row.count ? '个':''}}
</template> </template>
...@@ -189,7 +189,7 @@ ...@@ -189,7 +189,7 @@
clearable clearable
@change="changeSelect3" @change="changeSelect3"
class="form-content-width" class="form-content-width"
style="width: 80px"> style="width: 100px">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value"/> <el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value"/>
</el-select> </el-select>
</div> </div>
...@@ -216,14 +216,15 @@ ...@@ -216,14 +216,15 @@
</el-row> </el-row>
</div> </div>
<div class="content"> <div class="content">
<head-form <head-form-new
ref="headForm1"
title="历史发包项目金额TOP10" title="历史发包项目金额TOP10"
:form-data="formData1" :form-data="formData1"
:query-params="queryParams1" :query-params="queryParams1"
@handle-search="handleSearch1" @handle-search="handleSearch1"
:slots="true" :slots="true"
:isExcel="false" :isExcel="false"
></head-form> ></head-form-new>
<skeleton v-if="isSkeleton6" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton6" style="padding: 16px"></skeleton>
<div class="table-item" v-if="!isSkeleton6 && peojectTopData.length > 0"> <div class="table-item" v-if="!isSkeleton6 && peojectTopData.length > 0">
<el-table class="fixed-table" :data="peojectTopData" border max-height="235"> <el-table class="fixed-table" :data="peojectTopData" border max-height="235">
...@@ -242,7 +243,7 @@ ...@@ -242,7 +243,7 @@
<el-table-column label="项目类型" prop="projectTypeNew" width="100"></el-table-column> <el-table-column label="项目类型" prop="projectTypeNew" width="100"></el-table-column>
<el-table-column label="招标成员" prop="projectUnit" min-width="250"> <el-table-column label="招标成员" prop="projectUnit" min-width="250">
<template slot-scope="scope"> <template slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.projectUnitId)}`:`/company/${encodeStr(scope.row.projectUnitId)}`" tag="a" class="a-link" v-if="scope.row.projectUnitId&&scope.row.projectUnit" v-html="scope.row.projectUnit"></router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.projectUnitId)}`:`/company/${encodeStr(scope.row.projectUnitId)}`"> <router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.projectUnitId)}`:`/company/${encodeStr(scope.row.projectUnitId)}`" tag="a" class="a-link" v-if="scope.row.projectUnitId&&scope.row.projectUnit" v-html="scope.row.projectUnit"></router-link>
<div v-else v-html="scope.row.projectUnit || '--'"></div> <div v-else v-html="scope.row.projectUnit || '--'"></div>
</template> </template>
</el-table-column> </el-table-column>
...@@ -274,6 +275,7 @@ ...@@ -274,6 +275,7 @@
import mixin from '../../party-a/mixins/mixin' import mixin from '../../party-a/mixins/mixin'
import {recentlyBid,bidByYear,groupByMoney,groupByType,groupByLowerRate,peojectTop} from '@/api/detail/groupAccount/groupAccount' import {recentlyBid,bidByYear,groupByMoney,groupByType,groupByLowerRate,peojectTop} from '@/api/detail/groupAccount/groupAccount'
import { getDictType } from '@/api/main' import { getDictType } from '@/api/main'
import { getUipIdByCid } from '@/api/macro/macro'
export default { export default {
name: 'qualifications', name: 'qualifications',
props: ['customerId'], props: ['customerId'],
...@@ -288,14 +290,14 @@ ...@@ -288,14 +290,14 @@
combineId: this.customerId, combineId: this.customerId,
}, },
formData: [ formData: [
{ type: 4, fieldName: 'type', value: '', placeholder: '项目类型', options: [],width:150, uid: this.getUid()}, { type: 4, fieldName: 'type', value: '', placeholder: '项目类型', options: [], uid: this.getUid()},
{ type: 1, fieldName: 'cgbl', value: '', placeholder: '持股比例', options: [],width:110, uid: this.getUid()}, { type: 1, fieldName: 'cgbl', value: '', placeholder: '持股比例', options: [],width:110, uid: this.getUid()},
{ type: 1, fieldName: 'year', value: '2023年', placeholder: '年份', options: [],width:100, uid: this.getUid()}, { type: 1, fieldName: 'year', value: '2023年', placeholder: '选择年份', options: [],width:100, uid: this.getUid()},
], ],
formData1: [ formData1: [
{ type: 4, fieldName: 'type', value: '', placeholder: '项目类型', options: [],width:150, uid: this.getUid()}, { type: 4, fieldName: 'type', value: '', placeholder: '项目类型', options: [], uid: this.getUid()},
{ type: 1, fieldName: 'cgbl', value: '', placeholder: '持股比例', options: [],width:110, uid: this.getUid()}, { type: 1, fieldName: 'cgbl', value: '', placeholder: '持股比例', options: [],width:110, uid: this.getUid()},
{ type: 1, fieldName: 'year', value: '2023年', placeholder: '年份', options: [],width:100, uid: this.getUid()}, { type: 1, fieldName: 'year', value: '2023年', placeholder: '选择年份', options: [],width:100, uid: this.getUid()},
], ],
cgblList: [ cgblList: [
{name:'100%',value:'100%'}, {name:'100%',value:'100%'},
...@@ -351,6 +353,21 @@ ...@@ -351,6 +353,21 @@
this.getPeojectTop() this.getPeojectTop()
}, },
methods: { methods: {
getUipIdByCid(companyId){
var params=[companyId]
getUipIdByCid(params).then(res=>{
if (res.code==200) {
if(res.data&&res.data.length>0&&res.data[0].uipId){
this.$router.push({path: '/enterprise/'+this.encodeStr(companyId)})
}else{
this.$router.push({path: '/company/'+this.encodeStr(companyId)})
}
}
}).catch(error=>{
});
},
yearsData(){ yearsData(){
let mydate=new Date(); let mydate=new Date();
let Year = mydate.getFullYear(); let Year = mydate.getFullYear();
......
...@@ -379,6 +379,14 @@ ...@@ -379,6 +379,14 @@
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
height: calc(100% - 64px); height: calc(100% - 64px);
::v-deep .el-table__header-wrapper {
position: sticky;
top: 64px !important;
z-index: 9;
}
.headForm{ .headForm{
margin-bottom: 14px; margin-bottom: 14px;
.common-title{ .common-title{
......
<template> <template>
<div class="head-form-new"> <div class="head-form-new" :class="headerFixed ? 'headerFixed':''">
<div class="common-title" v-if="title">{{ title }}</div> <div class="common-title" v-if="title">{{ title }}</div>
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params">
...@@ -109,6 +109,10 @@ export default { ...@@ -109,6 +109,10 @@ export default {
type: Number, type: Number,
default: 0 default: 0
}, },
headerFixed: {
type: Boolean,
default: false
},
isExcel: { isExcel: {
type: Boolean, type: Boolean,
default: false default: false
...@@ -280,10 +284,17 @@ export default { ...@@ -280,10 +284,17 @@ export default {
::v-deep .el-popper[x-placement^="bottom"] { ::v-deep .el-popper[x-placement^="bottom"] {
margin-top: 5px; margin-top: 5px;
} }
.headerFixed{
position: sticky;
top: 0;
z-index: 9;
padding-top: 16px;
margin-top: -16px;
background: #fff;
}
.head-form-new { .head-form-new {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin-bottom: 14px;
.common-title { .common-title {
margin-bottom: 8px; margin-bottom: 8px;
} }
...@@ -432,7 +443,7 @@ export default { ...@@ -432,7 +443,7 @@ export default {
::v-deep .el-select__tags { ::v-deep .el-select__tags {
.el-tag { .el-tag {
&:first-child { &:first-child {
//width: 100%; /*width: 100%;*/
} }
} }
} }
......
<template> <template>
<div id="detailPart" class="sides-container" :style="sideHeight?'height:'+sideHeight+'px':''"> <div id="detailPart" class="sides-container">
<el-input placeholder="搜索" class="side-input" v-model="searchText" clearable @input="handleSearch(true)" @keyup.enter.native="handleSearch()"> <el-input placeholder="搜索" class="side-input" v-model="searchText" clearable @input="handleSearch(true)" @keyup.enter.native="handleSearch()">
<i slot="prefix" class="el-input__icon el-icon-search" @click="handleSearch()"></i> <i slot="prefix" class="el-input__icon el-icon-search" @click="handleSearch()"></i>
</el-input> </el-input>
......
<template> <template>
<div class="Tables"> <div class="Tables">
<div class="table-item"> <div class="table-item">
<el-table v-if="tableDataTotal>0" class="fixed-table" <el-table v-if="tableDataTotal>0" class="fixed-table" :class="headerFixed ? 'headerFixed':''"
v-loading="tableLoading" v-loading="tableLoading"
:data="tableData" :data="tableData"
element-loading-text="Loading" element-loading-text="Loading"
ref="tableRef" ref="tableRef"
v-horizontal-scroll="'hover'"
border border
fit fit
highlight-current-row highlight-current-row
...@@ -86,6 +87,10 @@ export default { ...@@ -86,6 +87,10 @@ export default {
type: Boolean, type: Boolean,
default: true default: true
}, },
headerFixed: {
type: Boolean,
default: false
},
indexFixed: { indexFixed: {
type: Boolean, type: Boolean,
default: false default: false
...@@ -172,71 +177,86 @@ export default { ...@@ -172,71 +177,86 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .el-table__body tr.current-row > td.el-table__cell{ .Tables{
background-color: #ffffff; ::v-deep .el-table__body tr.current-row > td.el-table__cell{
} background-color: #ffffff;
/*::v-deep .el-table__fixed{ }
height: calc(100% - 16px) !important; /*::v-deep .el-table__fixed{
}*/ height: calc(100% - 16px) !important;
}*/
::v-deep .el-table__row{ ::v-deep .el-table__row{
&:nth-child(even){ &:nth-child(even){
background-color: #F9FCFF; background-color: #F9FCFF;
.more{ .more{
background: #F8FBFF; background: #F8FBFF;
span{ span{
color: #0081FF; color: #0081FF;
}
}
}
&:nth-child(odd){
.more{
span{
color: #0081FF;
}
}
} }
} }
} .table-item{
&:nth-child(odd){ ::v-deep .el-table td.el-table__cell{
.more{ border-bottom: 0;
span{ }
color: #0081FF;
}
::v-deep .el-table th.el-table__cell.is-leaf,::v-deep .el-table td.el-table__cell {
border-bottom: 1px solid #E6EAF1;
}
::v-deep .el-table--border .el-table__cell {
border-right: 1px solid #E6EAF1;
}
::v-deep .el-table__body tr.hover-row.current-row>td,
::v-deep .el-table__body tr.hover-row.el-table__row--striped.current-row>td,
::v-deep .el-table__body tr.hover-row.el-table__row--striped>td,
::v-deep .el-table__body tr.hover-row>td{
background-color:#DCEBFF !important;
.more{
background: #DCEBFF;
} }
} }
}
}
.table-item{
::v-deep .el-table td.el-table__cell{
border-bottom: 0;
}
} ::v-deep .el-table--enable-row-hover .el-table__body tr:hover > td {
::v-deep .el-table th.el-table__cell.is-leaf,::v-deep .el-table td.el-table__cell { background-color: #DCEBFF;
border-bottom: 1px solid #E6EAF1; }
} ::v-deep .fixed-table{
::v-deep .el-table--border .el-table__cell { overflow: visible;
border-right: 1px solid #E6EAF1; }
} ::v-deep .el-table__header-wrapper{
::v-deep .el-table__body tr.hover-row.current-row>td, position: sticky;
::v-deep .el-table__body tr.hover-row.el-table__row--striped.current-row>td, top:0;
::v-deep .el-table__body tr.hover-row.el-table__row--striped>td, z-index: 9;
::v-deep .el-table__body tr.hover-row>td{ }
background-color:#DCEBFF !important; ::v-deep .el-table__fixed-header-wrapper{
.more{ position: sticky;
background: #DCEBFF; z-index: 9;
} top: 0;
} }
.headerFixed{
::v-deep .el-table__header-wrapper{
position: sticky;
top:80px;
z-index: 9;
}
::v-deep .el-table__fixed-header-wrapper{
position: sticky;
z-index: 9;
top:80px;
}
}
::v-deep .el-table__fixed{
overflow-x: clip;
overflow-y: clip;
}
::v-deep .el-table--enable-row-hover .el-table__body tr:hover > td { }
background-color: #DCEBFF;
}
::v-deep .fixed-table{
overflow: visible;
}
::v-deep .el-table__header-wrapper{
position: sticky;
top:56px;
z-index: 9;
}
::v-deep .el-table__fixed-header-wrapper{
position: sticky;
z-index: 9;
top: 56px;
}
::v-deep .el-table__fixed{
overflow-x: clip;
overflow-y: clip;
}
</style> </style>
...@@ -383,15 +383,31 @@ export default { ...@@ -383,15 +383,31 @@ export default {
} }
.part-main { .part-main {
margin-top: 12px; margin-top: 12px;
width: 100%;
height: calc(100vh - 155px);
overflow-y: auto;
align-items: initial; align-items: initial;
} }
.part-left { .part-left {
margin-right: 16px; margin-right: 16px;
padding-bottom: 16px;
position: fixed;
background: #FFFFFF;
width: 144px;
} }
.part-right { .part-right {
min-width: 1088px; min-width: 1088px;
width: 100%; width: 100%;
background: #ffffff; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
margin-left: 160px;
::v-deep .el-table__header-wrapper{
position: sticky;
top:0;
z-index: 9;
}
#groupBox{
height: 100%;
}
} }
</style> </style>
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
<no-data /> <no-data />
</div> </div>
</template> </template>
</div> </div>
<div class="bid-ywwl"> <div class="bid-ywwl">
<div class="common-title">业务往来供应商TOP5</div> <div class="common-title">业务往来供应商TOP5</div>
...@@ -69,15 +69,15 @@ ...@@ -69,15 +69,15 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
width="160" width="140"
align="right" align="right"
label="合作次数"> label="合作次数">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="padding-right: 86px;">{{ scope.row.count }}</span> <span>{{ scope.row.count }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
width="160" width="180"
align="right" align="right"
label="合作总金额(万元)"> label="合作总金额(万元)">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -337,5 +337,5 @@ export default { ...@@ -337,5 +337,5 @@ export default {
::deep .el-table::before{ ::deep .el-table::before{
display: none; display: none;
} }
</style> </style>
...@@ -116,7 +116,7 @@ export default { ...@@ -116,7 +116,7 @@ export default {
background: #FFFFFF; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
.detail-tab{ .detail-tab{
margin: -34px 0 0 -16px; margin: -14px 0 0 -16px;
::v-deep .el-tabs__nav-wrap::after{ ::v-deep .el-tabs__nav-wrap::after{
display: none; display: none;
} }
......
...@@ -327,7 +327,7 @@ export default { ...@@ -327,7 +327,7 @@ export default {
.head-form-new { .head-form-new {
.common-title { .common-title {
margin-bottom: 8px; padding-bottom: 8px;
} }
.query-box { .query-box {
margin: 0px; margin: 0px;
......
...@@ -59,16 +59,16 @@ ...@@ -59,16 +59,16 @@
if(this.$route.name=='Company'){ //企业详情 if(this.$route.name=='Company'){ //企业详情
if(this.$route.query.html){ if(this.$route.query.html){
if(this.$route.query.type){ if(this.$route.query.type){
this.src = `${this.domain}/enterprise/${this.$route.params.id}/${this.$route.query.html}?flag=true&type=${this.$route.query.type}&ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}` this.src = `${this.domain}/enterprise/${this.$route.params.id}/${this.$route.query.html}?flag=true&type=${this.$route.query.type}&ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}&origin=${window.location.origin}`
}else{ }else{
this.src = `${this.domain}/enterprise/${this.$route.params.id}/${this.$route.query.html}?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}` this.src = `${this.domain}/enterprise/${this.$route.params.id}/${this.$route.query.html}?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}&origin=${window.location.origin}`
} }
}else{ }else{
this.src = `${this.domain}/enterprise/${this.$route.params.id}?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}` this.src = `${this.domain}/enterprise/${this.$route.params.id}?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}&origin=${window.location.origin}`
} }
} }
if(this.$route.name=='Personnel'){ //人员详情 if(this.$route.name=='Personnel'){ //人员详情
this.src = `${this.domain}/personnel/${this.$route.params.id}.html?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}` this.src = `${this.domain}/personnel/${this.$route.params.id}.html?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}&origin=${window.location.origin}`
} }
} }
this.refreshtoken() this.refreshtoken()
......
This diff is collapsed.
...@@ -253,9 +253,8 @@ export default { ...@@ -253,9 +253,8 @@ export default {
<style lang="scss"> <style lang="scss">
.custom-time-select { .custom-time-select {
width: 120px; width: 110px;
height: 34px; height: 34px;
.rote { .rote {
.el-input__inner{ .el-input__inner{
background: #F4F6F9; background: #F4F6F9;
......
...@@ -653,13 +653,18 @@ export default { ...@@ -653,13 +653,18 @@ export default {
.el-form-item{ .el-form-item{
margin: 0 !important; margin: 0 !important;
.form-content-width{ .form-content-width{
width: 110px; width: 80px;
} }
::v-deep .el-input{ ::v-deep .el-input{
.el-input__inner{ .el-input__inner{
border: 0; border: 0;
} }
} }
::v-deep .is-focus{
.el-input__inner{
background: #F4F6F9;
}
}
} }
} }
.table-item{ .table-item{
......
...@@ -348,13 +348,18 @@ export default { ...@@ -348,13 +348,18 @@ export default {
.el-form-item{ .el-form-item{
margin: 0 !important; margin: 0 !important;
.form-content-width{ .form-content-width{
width: 100px; width: 80px;
} }
::v-deep .el-input{ ::v-deep .el-input{
.el-input__inner{ .el-input__inner{
border: 0; border: 0;
} }
} }
::v-deep .is-focus{
.el-input__inner{
background: #F4F6F9;
}
}
} }
} }
.content{ .content{
......
...@@ -36,18 +36,18 @@ ...@@ -36,18 +36,18 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="gdp" label="GDP(亿元)" sortable width="120" :formatter="formatStatus"/> <el-table-column prop="gdp" label="GDP(亿元)" sortable="custom" width="120" :formatter="formatStatus"/>
<el-table-column prop="gdpGrowth" label="GDP增速(%)" sortable width="130" :formatter="formatStatus"/> <el-table-column prop="gdpGrowth" label="GDP增速(%)" sortable="custom" width="130" :formatter="formatStatus"/>
<el-table-column prop="gdpPerCapita" label="人均GDP(元)" sortable width="130" :formatter="formatStatus"/> <el-table-column prop="gdpPerCapita" label="人均GDP(元)" sortable="custom" width="130" :formatter="formatStatus"/>
<el-table-column prop="population" label="人口(万人)" sortable width="120" :formatter="formatStatus"/> <el-table-column prop="population" label="人口(万人)" sortable="custom" width="120" :formatter="formatStatus"/>
<el-table-column prop="fixedInvestment" label="固定资产投资 (亿元) " sortable width="200" :formatter="formatStatus"/> <el-table-column prop="fixedInvestment" label="固定资产投资 (亿元) " sortable="custom" width="200" :formatter="formatStatus"/>
<el-table-column prop="gbr" label="一般公共预算收入(亿元)" sortable width="200" :formatter="formatStatus"/> <el-table-column prop="gbr" label="一般公共预算收入(亿元)" sortable="custom" width="200" :formatter="formatStatus"/>
<el-table-column prop="gbe" label="一般公共预算支出(亿元)" sortable width="200" :formatter="formatStatus"/> <el-table-column prop="gbe" label="一般公共预算支出(亿元)" sortable="custom" width="200" :formatter="formatStatus"/>
<el-table-column prop="govFundIncome" label="政府性基金收入(亿元)" sortable width="200" :formatter="formatStatus"/> <el-table-column prop="govFundIncome" label="政府性基金收入(亿元)" sortable="custom" width="200" :formatter="formatStatus"/>
<el-table-column prop="govDebtBalance" label="地方政府债务余额(亿元)" sortable width="200" :formatter="formatStatus"/> <el-table-column prop="govDebtBalance" label="地方政府债务余额(亿元)" sortable="custom" width="200" :formatter="formatStatus"/>
<el-table-column prop="uipInterestBearingDebt" label="城投平台有息债务(亿元)" sortable width="200" :formatter="formatStatus"/> <el-table-column prop="uipInterestBearingDebt" label="城投平台有息债务(亿元)" sortable="custom" width="200" :formatter="formatStatus"/>
<el-table-column prop="fiscalSelfSufficiencyRate" label="财政自给率(%)" sortable width="150" :formatter="formatStatus"/> <el-table-column prop="fiscalSelfSufficiencyRate" label="财政自给率(%)" sortable="custom" width="150" :formatter="formatStatus"/>
<el-table-column prop="govDebtRateWild" label="债务率-宽口径(%)" sortable width="170" :formatter="formatStatus"/> <el-table-column prop="govDebtRateWild" label="债务率-宽口径(%)" sortable="custom" width="170" :formatter="formatStatus"/>
</el-table> </el-table>
</div> </div>
<div class="pagination-box" v-if="show_page && tableDataTotal>pageSize"> <div class="pagination-box" v-if="show_page && tableDataTotal>pageSize">
...@@ -193,17 +193,22 @@ export default { ...@@ -193,17 +193,22 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.regionalEconomy{ .regionalEconomy{
.el-form{ .el-form{
/*margin-left: 24px;*/ margin-left: 16px;
.el-form-item{ .el-form-item{
margin: 0 !important; margin: 0 !important;
.form-content-width{ .form-content-width{
width: 100px; width: 80px;
} }
::v-deep .el-input{ ::v-deep .el-input{
.el-input__inner{ .el-input__inner{
border: 0; border: 0;
} }
} }
::v-deep .is-focus{
.el-input__inner{
background: #F4F6F9;
}
}
} }
} }
.content{ .content{
......
...@@ -399,7 +399,7 @@ export default { ...@@ -399,7 +399,7 @@ export default {
width += textContainer.offsetWidth + parseInt(itemInfo.marginLeft) + parseInt(itemInfo.marginRight); width += textContainer.offsetWidth + parseInt(itemInfo.marginLeft) + parseInt(itemInfo.marginRight);
textContainer.remove(); textContainer.remove();
}); });
dom.style.setProperty("width", `${width + 60}px`); dom.style.setProperty("width", `${width + 50}px`);
this.handleSearch(name); this.handleSearch(name);
return; return;
} }
...@@ -411,7 +411,7 @@ export default { ...@@ -411,7 +411,7 @@ export default {
textContainer.textContent = iptChild.getAttribute("placeholder"); textContainer.textContent = iptChild.getAttribute("placeholder");
document.body.append(textContainer); document.body.append(textContainer);
// let containerWidth = textContainer.offsetWidth + 12 + 8; // let containerWidth = textContainer.offsetWidth + 12 + 8;
let containerWidth = 120; let containerWidth = 110;
textContainer.remove(); textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`); dom.style.setProperty("width", `${containerWidth}px`);
this.handleSearch(name); this.handleSearch(name);
...@@ -509,7 +509,7 @@ export default { ...@@ -509,7 +509,7 @@ export default {
float: left; float: left;
} }
::v-deep .el-cascader{ ::v-deep .el-cascader{
width: 120px; width: 110px;
margin-right: 12px; margin-right: 12px;
height: 34px; height: 34px;
line-height: 34px !important; line-height: 34px !important;
......
...@@ -485,10 +485,10 @@ ...@@ -485,10 +485,10 @@
} }
.form-content-width{ .form-content-width{
width: 90px; width: 80px;
} }
::v-deep .el-cascader{ ::v-deep .el-cascader{
width: 180px; width: 106px;
.el-cascader__tags{ .el-cascader__tags{
flex-wrap: inherit; flex-wrap: inherit;
.el-tag{ .el-tag{
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params">
<span class="common-title">全国土地交易项目供应方式</span> <span class="common-title">全国土地交易项目供应方式</span>
<el-select v-model="years" @change="handleYears(1)" multiple collapse-tags filterable class="form-content-width" placeholder="请选择" :popper-append-to-body='false' size="small"> <el-select v-model="years" @change="iptAdaptive(inputID1,true,1)" :class="[`select-adaptive-${inputID1}`]" multiple collapse-tags filterable class="form-content-width" placeholder="请选择" :popper-append-to-body='false' size="small">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item" :value="item" /> <el-option v-for="(item, index) in yearOptions" :key="index" :label="item" :value="item" />
</el-select> </el-select>
</div> </div>
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params">
<span class="common-title">全国土地交易项目土地用途</span> <span class="common-title">全国土地交易项目土地用途</span>
<el-select v-model="years1" @change="handleYears(2)" multiple collapse-tags filterable class="form-content-width" placeholder="请选择" :popper-append-to-body='false' size="small"> <el-select v-model="years1" @change="iptAdaptive(inputID2,true,2)" :class="[`select-adaptive-${inputID2}`]" multiple collapse-tags filterable class="form-content-width" placeholder="请选择" :popper-append-to-body='false' size="small">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item" :value="item" /> <el-option v-for="(item, index) in yearOptions" :key="index" :label="item" :value="item" />
</el-select> </el-select>
</div> </div>
...@@ -92,10 +92,10 @@ ...@@ -92,10 +92,10 @@
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params">
<span class="common-title">全国土地交易项目地区Top10</span> <span class="common-title">全国土地交易项目地区Top10</span>
<el-select @change="handleYears(3)" style="margin-right: 8px" v-model="address" multiple collapse-tags filterable class="form-content-width" placeholder="地区筛选" :popper-append-to-body='false' size="small"> <el-select @change="iptAdaptive(inputID3,true,3)" :class="[`select-adaptive-${inputID3}`]" style="margin-right: 8px" v-model="address" multiple collapse-tags filterable class="form-content-width" placeholder="地区筛选" :popper-append-to-body='false' size="small">
<el-option v-for="(item, index) in addressList" :key="index" :label="item.label" :value="item.id" /> <el-option v-for="(item, index) in addressList" :key="index" :label="item.label" :value="item.id" />
</el-select> </el-select>
<el-select v-model="years2" @change="handleYears(3)" multiple collapse-tags filterable class="form-content-width" placeholder="请选择" :popper-append-to-body='false' size="small"> <el-select v-model="years2" @change="iptAdaptive(inputID3,true,3)" :class="[`select-adaptive-${inputID4}`]" multiple collapse-tags filterable class="form-content-width" placeholder="请选择" :popper-append-to-body='false' size="small">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item" :value="item" /> <el-option v-for="(item, index) in yearOptions" :key="index" :label="item" :value="item" />
</el-select> </el-select>
</div> </div>
...@@ -177,6 +177,7 @@ ...@@ -177,6 +177,7 @@
import dataRegion from '@/assets/json/dataRegion' import dataRegion from '@/assets/json/dataRegion'
import { countLandMarketByType,countLandMarketByProvince,countLandMarketByYear } from '@/api/macro/macro' import { countLandMarketByType,countLandMarketByProvince,countLandMarketByYear } from '@/api/macro/macro'
import skeleton from '../../component/skeleton' import skeleton from '../../component/skeleton'
import { v4 } from "uuid";
export default { export default {
name: 'NationalEconomies', name: 'NationalEconomies',
components: { components: {
...@@ -203,11 +204,14 @@ export default { ...@@ -203,11 +204,14 @@ export default {
tdytState:true, tdytState:true,
topState:true, topState:true,
nftjState:true, nftjState:true,
// typeName:['住宅用地','工业用地','城镇住宅用地','其他商服用地','公共设施用地','公路用地','城镇村道路用地','公园与绿地', inputID1:this.getUid(),
// '工矿仓储用地','零售商业用地','科研用地','街巷用地','机关团体用地','商服用地','商务金融用地'] inputID2:this.getUid(),
inputID3:this.getUid(),
inputID4:this.getUid(),
} }
}, },
created() { created() {
this.getPlaceholder()
this.dataRegion() this.dataRegion()
this.yearsData() this.yearsData()
...@@ -726,7 +730,116 @@ export default { ...@@ -726,7 +730,116 @@ export default {
}); });
return sums; return sums;
}, },
async getPlaceholder() {
try {
await this.$nextTick();
const doms = document.querySelectorAll("[class*='select-adaptive-']");
if (doms?.length) {
doms.forEach(dom => {
const realStyles = window.getComputedStyle(dom);
const ipt = dom.querySelector("input");
const text = ipt.getAttribute("placeholder");
const textContainer = document.createElement("span");
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
const hasPadding = (parseInt(realStyles.paddingLeft) || parseInt(realStyles.paddingRight)) ? true : false;
hasPadding ? textContainer.style.setProperty("padding", realStyles.paddingRight) : null;
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = text;
document.body.append(textContainer);
// 加上按钮宽度 以及按钮左外边距
let containerWidth = textContainer.offsetWidth + 50;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
});
}
} catch (error) {
}
},
iptAdaptive(uid, multiple = false, key) {
multiple ? this.multipleAdaptiveHandle(uid,key) : this.iptAdaptiveHandle(uid,key);
},
getUid() {
return v4();
},
// 多选处理
async multipleAdaptiveHandle(uid,key) {
try {
await this.$nextTick();
const dom = document.querySelector(`.select-adaptive-${uid}`);
const iptChild = dom.querySelector(".el-input__inner");
if (dom) {
const textContainer = document.createElement("span");
const textName = `text-${uid}`;
textContainer.classList.add(textName);
const selectChildren = dom.querySelectorAll(".el-tag");
if (selectChildren.length) {
let width = 0;
selectChildren.forEach(item => {
const text = item.textContent;
const itemInfo = window.getComputedStyle(item);
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
textContainer.style.setProperty("padding", itemInfo.padding);
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = text;
document.body.append(textContainer);
width += textContainer.offsetWidth + parseInt(itemInfo.marginLeft) + parseInt(itemInfo.marginRight);
textContainer.remove();
});
dom.style.setProperty("width", `${width + 50}px`);
this.handleYears(key);
return;
}
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
textContainer.style.setProperty("padding", "0px 8px");
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = iptChild.getAttribute("placeholder");
document.body.append(textContainer);
let containerWidth = textContainer.offsetWidth + 30;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
this.handleYears(key);
}
} catch (error) {
console.log(error);
}
},
// 单选处理
async iptAdaptiveHandle(uid,key) {
try {
await this.$nextTick();
const dom = document.querySelector(`.select-adaptive-${uid}`);
const realStyles = window.getComputedStyle(dom);
if (dom) {
const iptChild = dom.querySelector(".el-input__inner");
const textContainer = document.createElement("span");
const textName = `text-${uid}`;
textContainer.classList.add(textName);
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
const hasPadding = (parseInt(realStyles.paddingLeft) || parseInt(realStyles.paddingRight)) ? true : false;
hasPadding ? textContainer.style.setProperty("padding", "0px 8px") : null;
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = iptChild.value ? iptChild.value : iptChild.getAttribute("placeholder");
document.body.append(textContainer);
let containerWidth = textContainer.offsetWidth + 50;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
}
this.handleYears(key);
} catch (error) {
}
},
} }
} }
</script> </script>
...@@ -747,6 +860,7 @@ export default { ...@@ -747,6 +860,7 @@ export default {
color: #0081FF; color: #0081FF;
} }
.tdjy{ .tdjy{
@import "@/assets/styles/search-common.scss";
.text_p{ .text_p{
color: #999999; color: #999999;
font-size: 14px; font-size: 14px;
...@@ -772,7 +886,7 @@ export default { ...@@ -772,7 +886,7 @@ export default {
margin-right: 24px; margin-right: 24px;
} }
::v-deep .form-content-width{ ::v-deep .form-content-width{
width: 135px; width: 95px;
.el-select__input{ .el-select__input{
width: 10px !important; width: 10px !important;
max-width: 10px !important; max-width: 10px !important;
...@@ -789,6 +903,12 @@ export default { ...@@ -789,6 +903,12 @@ export default {
background: #F4F6F9; background: #F4F6F9;
} }
} }
.el-select__tags {
flex-wrap: inherit;
.el-tag{
/*max-width: 130px;*/
}
}
} }
::v-deep .el-cascader{ ::v-deep .el-cascader{
width: 220px; width: 220px;
......
...@@ -38,10 +38,10 @@ ...@@ -38,10 +38,10 @@
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params">
<span class="common-title">全国各地区招标统计TOP10</span> <span class="common-title">全国各地区招标统计TOP10</span>
<el-select @change="handleYears(1)" style="margin-right: 8px" v-model="address" multiple collapse-tags filterable class="form-content-width" placeholder="地区筛选" :popper-append-to-body='false' size="small"> <el-select @change="iptAdaptive(inputID1,true,1)" style="margin-right: 8px" :class="[`select-adaptive-${inputID1}`]" v-model="address" multiple collapse-tags filterable class="form-content-width" placeholder="地区筛选" :popper-append-to-body='false' size="small">
<el-option v-for="(item, index) in addressList" :key="index" :label="item.label" :value="item.id" /> <el-option v-for="(item, index) in addressList" :key="index" :label="item.label" :value="item.id" />
</el-select> </el-select>
<el-select v-model="years1" @change="handleYears(1)" multiple collapse-tags filterable class="form-content-width" placeholder="请选择" :popper-append-to-body='false' size="small"> <el-select v-model="years1" @change="iptAdaptive(inputID2,true,1)" multiple collapse-tags filterable :class="[`select-adaptive-${inputID2}`]" class="form-content-width" placeholder="请选择" :popper-append-to-body='false' size="small">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item" :value="item" /> <el-option v-for="(item, index) in yearOptions" :key="index" :label="item" :value="item" />
</el-select> </el-select>
</div> </div>
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params">
<span class="common-title">全国各年度招标月份统计</span> <span class="common-title">全国各年度招标月份统计</span>
<el-select v-model="years2" @change="handleYears(2)" collapse-tags filterable class="form-content-width" placeholder="请选择" :popper-append-to-body='false' size="small"> <el-select v-model="years2" @change="iptAdaptive(inputID3,'',2)" :class="[`select-adaptive-${inputID3}`]" style="width: 80px;" collapse-tags filterable class="form-content-width" placeholder="请选择" :popper-append-to-body='false' size="small">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item" :value="item" /> <el-option v-for="(item, index) in yearOptions" :key="index" :label="item" :value="item" />
</el-select> </el-select>
</div> </div>
...@@ -130,6 +130,7 @@ ...@@ -130,6 +130,7 @@
import dataRegion from '@/assets/json/dataRegion' import dataRegion from '@/assets/json/dataRegion'
import { countNewsBidByYear,countNewsBidByProvince,countNewsBidByMonth } from '@/api/macro/macro' import { countNewsBidByYear,countNewsBidByProvince,countNewsBidByMonth } from '@/api/macro/macro'
import skeleton from '../../component/skeleton' import skeleton from '../../component/skeleton'
import { v4 } from "uuid";
export default { export default {
name: 'NationalEconomies', name: 'NationalEconomies',
components: { components: {
...@@ -152,9 +153,13 @@ ...@@ -152,9 +153,13 @@
isSkeleton:true, isSkeleton:true,
gyflState:true, gyflState:true,
tdytState:true, tdytState:true,
inputID1:this.getUid(),
inputID2:this.getUid(),
inputID3:this.getUid(),
} }
}, },
created() { created() {
this.getPlaceholder()
this.dataRegion() this.dataRegion()
this.yearsData() this.yearsData()
this.getcountNewsBidByYear() this.getcountNewsBidByYear()
...@@ -613,7 +618,116 @@ ...@@ -613,7 +618,116 @@
}); });
return sums; return sums;
}, },
async getPlaceholder() {
try {
await this.$nextTick();
const doms = document.querySelectorAll("[class*='select-adaptive-']");
if (doms?.length) {
doms.forEach(dom => {
const realStyles = window.getComputedStyle(dom);
const ipt = dom.querySelector("input");
const text = ipt.getAttribute("placeholder");
const textContainer = document.createElement("span");
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
const hasPadding = (parseInt(realStyles.paddingLeft) || parseInt(realStyles.paddingRight)) ? true : false;
hasPadding ? textContainer.style.setProperty("padding", realStyles.paddingRight) : null;
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = text;
document.body.append(textContainer);
// 加上按钮宽度 以及按钮左外边距
let containerWidth = textContainer.offsetWidth + 50;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
});
}
} catch (error) {
}
},
iptAdaptive(uid, multiple = false, key) {
multiple ? this.multipleAdaptiveHandle(uid,key) : this.iptAdaptiveHandle(uid,key);
},
getUid() {
return v4();
},
// 多选处理
async multipleAdaptiveHandle(uid,key) {
try {
await this.$nextTick();
const dom = document.querySelector(`.select-adaptive-${uid}`);
const iptChild = dom.querySelector(".el-input__inner");
if (dom) {
const textContainer = document.createElement("span");
const textName = `text-${uid}`;
textContainer.classList.add(textName);
const selectChildren = dom.querySelectorAll(".el-tag");
if (selectChildren.length) {
let width = 0;
selectChildren.forEach(item => {
const text = item.textContent;
const itemInfo = window.getComputedStyle(item);
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
textContainer.style.setProperty("padding", itemInfo.padding);
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = text;
document.body.append(textContainer);
width += textContainer.offsetWidth + parseInt(itemInfo.marginLeft) + parseInt(itemInfo.marginRight);
textContainer.remove();
});
dom.style.setProperty("width", `${width + 50}px`);
this.handleYears(key);
return;
}
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
textContainer.style.setProperty("padding", "0px 8px");
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = iptChild.getAttribute("placeholder");
document.body.append(textContainer);
let containerWidth = textContainer.offsetWidth + 30;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
this.handleYears(key);
}
} catch (error) {
console.log(error);
}
},
// 单选处理
async iptAdaptiveHandle(uid,key) {
try {
await this.$nextTick();
const dom = document.querySelector(`.select-adaptive-${uid}`);
const realStyles = window.getComputedStyle(dom);
if (dom) {
const iptChild = dom.querySelector(".el-input__inner");
const textContainer = document.createElement("span");
const textName = `text-${uid}`;
textContainer.classList.add(textName);
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
const hasPadding = (parseInt(realStyles.paddingLeft) || parseInt(realStyles.paddingRight)) ? true : false;
hasPadding ? textContainer.style.setProperty("padding", "0px 8px") : null;
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = iptChild.value ? iptChild.value : iptChild.getAttribute("placeholder");
document.body.append(textContainer);
let containerWidth = textContainer.offsetWidth + 50;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
}
this.handleYears(key);
} catch (error) {
}
},
} }
} }
</script> </script>
...@@ -634,6 +748,7 @@ ...@@ -634,6 +748,7 @@
color: #0081FF; color: #0081FF;
} }
.tdjy{ .tdjy{
@import "@/assets/styles/search-common.scss";
.text_p{ .text_p{
color: #999999; color: #999999;
font-size: 14px; font-size: 14px;
...@@ -659,7 +774,7 @@ ...@@ -659,7 +774,7 @@
margin-right: 24px; margin-right: 24px;
} }
::v-deep .form-content-width{ ::v-deep .form-content-width{
width: 145px; width: 95px;
.el-select__input{ .el-select__input{
width: 10px !important; width: 10px !important;
max-width: 10px !important; max-width: 10px !important;
...@@ -675,6 +790,12 @@ ...@@ -675,6 +790,12 @@
background: #F4F6F9; background: #F4F6F9;
} }
} }
.el-select__tags {
flex-wrap: inherit;
.el-tag{
/*max-width: 130px;*/
}
}
} }
::v-deep .el-cascader{ ::v-deep .el-cascader{
width: 220px; width: 220px;
......
...@@ -69,7 +69,7 @@ export default { ...@@ -69,7 +69,7 @@ export default {
if (res.code == 200) { if (res.code == 200) {
this.timelongs = res.data.expire; this.timelongs = res.data.expire;
this.ak = res.data.accessToken; this.ak = res.data.accessToken;
this.src = `${this.domain}/search/market?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}`; this.src = `${this.domain}/search/market?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}&origin=${window.location.origin}`;
this.refreshtoken(); this.refreshtoken();
} else { } else {
clearTimeout(this.tokentimer); clearTimeout(this.tokentimer);
......
...@@ -8,9 +8,18 @@ ...@@ -8,9 +8,18 @@
<el-option v-for="(item,index) in companytype" :label="item.dictLabel" :value="item.dictValue"></el-option> <el-option v-for="(item,index) in companytype" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select> </el-select>
<div class="searchInput small"> <div class="searchInput small">
<el-input type="text" placeholder="输入关键词查询" clearable v-model="searchParam.companyName"> <div class="normal-search-container" @click="showSearchBox = true" v-if="!showSearchBox">
<i slot="prefix" class="el-input__icon"><img src="@/assets/images/project/sousuo.png" @click="handleCurrentChange(1)"></i></el-input> <img src="@/assets/images/enterprise/enterprise-search-icon.svg" alt="">
<!--<div class="btn" @click="handleCurrentChange(1)">搜索</div>--> <span>输入关键词查询</span>
</div>
<!--&lt;!&ndash; 输入框展开后样式 &ndash;&gt;-->
<transition @enter="onEnter" appear mode="out-in">
<div class="cooperate-name enterprise-search-container" id="focus1" v-if="showSearchBox">
<el-input clearable @clear="handleCurrentChange(1)" @focus="clickFocus('focus1')" @blur="clickFocus('focus1')" v-model="searchParam.companyName"
placeholder="输入关键词查询"></el-input>
<span @click="handleCurrentChange(1)">搜索</span>
</div>
</transition>
</div> </div>
<div class="btn btn_primary h32 b3" @click="opennew" v-if="isDisableds == false"><div class="img img1"></div>添加相关企业</div> <div class="btn btn_primary h32 b3" @click="opennew" v-if="isDisableds == false"><div class="img img1"></div>添加相关企业</div>
</div> </div>
...@@ -187,6 +196,7 @@ ...@@ -187,6 +196,7 @@
import { addXGQY, delXGQY, getXGQY, saveXGQY } from '@/api/project/project' import { addXGQY, delXGQY, getXGQY, saveXGQY } from '@/api/project/project'
import { getDictType, getEnterprise } from '@/api/main' import { getDictType, getEnterprise } from '@/api/main'
import skeleton from './skeleton' import skeleton from './skeleton'
import gsap from "gsap";
export default { export default {
components:{skeleton}, components:{skeleton},
...@@ -241,6 +251,7 @@ ...@@ -241,6 +251,7 @@
showlist:false, showlist:false,
companData:[], companData:[],
isSkeleton:true, isSkeleton:true,
showSearchBox:false,
} }
}, },
created(){ created(){
...@@ -253,6 +264,10 @@ ...@@ -253,6 +264,10 @@
mounted(){ mounted(){
}, },
methods:{ methods:{
clickFocus(e) {
document.getElementById(e).classList.toggle('span-ba');
},
getDetail(row){ getDetail(row){
this.isedit = true this.isedit = true
this.hzhbVisible = true this.hzhbVisible = true
...@@ -358,6 +373,21 @@ ...@@ -358,6 +373,21 @@
remark:'', remark:'',
} }
}, },
onEnter(el, done) {
gsap.from(el, {
opacity: 0,
width: 0,
});
gsap.to(el, {
opacity: 1,
width: 242,
onComplete() {
// 完成动画聚焦输入框
el.querySelector("input").focus();
done();
}
});
},
} }
} }
</script> </script>
...@@ -378,6 +408,79 @@ ...@@ -378,6 +408,79 @@
.searchInput .el-input{ .searchInput .el-input{
width: 68%; width: 68%;
} }
.searchInput.small{
width: 257px;
}
.searchInput{
.normal-search-container {
display: flex;
align-items: center;
cursor: pointer;
height: 34px;
&:hover {
& > span {
color: #0081ff;
}
}
& > img {
width: 16px;
height: 16px;
margin-left: 12px;
}
& > span {
color: #232323;
color: rgba(35, 35, 35, 0.4);
font-weight: 400;
margin-left: 8px;
line-height: 22px;
font-size: 14px;
}
}
.cooperate-name {
display: flex;
border-radius: 2px;
border: 1px solid #d9d9d9;
line-height: 30px;
height: 30px;
float: left;
width: 100%;
span {
width: 60px;
height: 28px;
line-height: 28px;
font-size: 14px;
background: #f5f5f5;
text-align: center;
color: #0081ff;
border: 1px solid #efefef;
border-left: 0;
cursor: pointer;
}
&.span-ba {
border: 1px solid #0081ff;
span {
color: #ffffff;
background: #0081ff;
border: 1px solid #0081ff;
}
}
::v-deep .el-input {
flex: 1;
}
::v-deep .el-input__inner {
border: 0;
line-height: 28px;
height: 28px;
position: absolute;
top: 1px;
padding-right: 28px;
font-size: 12px;
padding-left: 8px;
}
}
}
.w102{ .w102{
width: 102px; width: 102px;
} }
......
...@@ -4,12 +4,19 @@ ...@@ -4,12 +4,19 @@
<el-card class="box-card noborder"> <el-card class="box-card noborder">
<div class="cardtitles">资料文档</div> <div class="cardtitles">资料文档</div>
<div class="searchbtns"> <div class="searchbtns">
<!--<div class="searchbtns" v-if="fileDatas.rows != null && fileDatas.rows.length>0">-->
<div class="searchInput small"> <div class="searchInput small">
<el-input type="text" v-model="param.keyword" clearable placeholder="输入关键词查询"> <div class="normal-search-container" @click="showSearchBox = true" v-if="!showSearchBox">
<i slot="prefix" class="el-input__icon"><img src="@/assets/images/project/sousuo.png" @click="handleCurrentChange(1)"></i> <img src="@/assets/images/enterprise/enterprise-search-icon.svg" alt="">
</el-input> <span>输入关键词查询</span>
<!--<div class="btn" @click="handleCurrentChange(1)">搜索</div>--> </div>
<!--&lt;!&ndash; 输入框展开后样式 &ndash;&gt;-->
<transition @enter="onEnter" appear mode="out-in">
<div class="cooperate-name enterprise-search-container" id="focus1" v-if="showSearchBox">
<el-input clearable @clear="handleCurrentChange(1)" @focus="clickFocus('focus1')" @blur="clickFocus('focus1')" v-model="param.keyword"
placeholder="输入关键词查询"></el-input>
<span @click="handleCurrentChange(1)">搜索</span>
</div>
</transition>
</div> </div>
<!--<div class="btn btn_primary h32 b2" @click="getUP" v-if="fileDatas.total>0"><div class="img img2"></div>上传</div>--> <!--<div class="btn btn_primary h32 b2" @click="getUP" v-if="fileDatas.total>0"><div class="img img2"></div>上传</div>-->
...@@ -154,6 +161,7 @@ ...@@ -154,6 +161,7 @@
import { getToken } from '@/utils/auth' import { getToken } from '@/utils/auth'
import { delZLWD, getZLWD } from '@/api/project/project' import { delZLWD, getZLWD } from '@/api/project/project'
import skeleton from './skeleton' import skeleton from './skeleton'
import gsap from "gsap";
export default { export default {
components:{skeleton}, components:{skeleton},
...@@ -188,6 +196,7 @@ ...@@ -188,6 +196,7 @@
isDisableds:this.isDisabled, isDisableds:this.isDisabled,
keys:1, keys:1,
isSkeleton:true, isSkeleton:true,
showSearchBox:false,
} }
}, },
created(){ created(){
...@@ -195,6 +204,24 @@ ...@@ -195,6 +204,24 @@
// console.log(this.$ref) // console.log(this.$ref)
}, },
methods:{ methods:{
clickFocus(e) {
document.getElementById(e).classList.toggle('span-ba');
},
onEnter(el, done) {
gsap.from(el, {
opacity: 0,
width: 0,
});
gsap.to(el, {
opacity: 1,
width: 242,
onComplete() {
// 完成动画聚焦输入框
el.querySelector("input").focus();
done();
}
});
},
getall(){ getall(){
this.param.filePath = this.detailId ? this.detailId : this.$route.query.id this.param.filePath = this.detailId ? this.detailId : this.$route.query.id
this.filename='' this.filename=''
...@@ -316,6 +343,79 @@ ...@@ -316,6 +343,79 @@
<style lang="scss" scoped> <style lang="scss" scoped>
.searchInput.small{
width: 257px;
}
.searchInput{
.normal-search-container {
display: flex;
align-items: center;
cursor: pointer;
height: 34px;
&:hover {
& > span {
color: #0081ff;
}
}
& > img {
width: 16px;
height: 16px;
margin-left: 12px;
}
& > span {
color: #232323;
color: rgba(35, 35, 35, 0.4);
font-weight: 400;
margin-left: 8px;
line-height: 22px;
font-size: 14px;
}
}
.cooperate-name {
display: flex;
border-radius: 2px;
border: 1px solid #d9d9d9;
line-height: 30px;
height: 30px;
float: left;
width: 100%;
span {
width: 60px;
height: 28px;
line-height: 28px;
font-size: 14px;
background: #f5f5f5;
text-align: center;
color: #0081ff;
border: 1px solid #efefef;
border-left: 0;
cursor: pointer;
}
&.span-ba {
border: 1px solid #0081ff;
span {
color: #ffffff;
background: #0081ff;
border: 1px solid #0081ff;
}
}
::v-deep .el-input {
flex: 1;
}
::v-deep .el-input__inner {
border: 0;
line-height: 28px;
height: 28px;
position: absolute;
top: 1px;
padding-right: 28px;
font-size: 12px;
padding-left: 8px;
}
}
}
v-deep.el-upload:focus{ v-deep.el-upload:focus{
color: #FFFFFF !important; color: #FFFFFF !important;
} }
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<p>{{itme.value}}</p> <p>{{itme.value}}</p>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<p class="solid"></p> <p class="solid"></p>
...@@ -25,13 +25,13 @@ ...@@ -25,13 +25,13 @@
<!-- 招标计划 --> <!-- 招标计划 -->
<Bidding v-if="personnelHerf=='Bidding'" /> <Bidding v-if="personnelHerf=='Bidding'" />
<!-- 标讯pro --> <!-- 标讯pro -->
<bxprozbgg v-if="personnelHerf=='bxprozbgg'" /> <!--<bxprozbgg v-if="personnelHerf=='bxprozbgg'" />-->
<!-- 公招标讯 --> <!-- 公招标讯 -->
<Tender v-if="personnelHerf=='Tender'" /> <Tender v-if="personnelHerf=='Tender'" />
<!-- 开标记录 --> <!-- 开标记录 -->
<BidRecord v-if="personnelHerf=='BidRecord'" /> <BidRecord v-if="personnelHerf=='BidRecord'" />
</div> </div>
</template> </template>
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
import BidRecord from "./components/BidRecord/index.vue"; import BidRecord from "./components/BidRecord/index.vue";
import Bidding from "./components/Bidding/index.vue"; import Bidding from "./components/Bidding/index.vue";
import MajorProject from "./components/MajorProject/index.vue"; import MajorProject from "./components/MajorProject/index.vue";
import "@/assets/styles/public.scss"; import "@/assets/styles/public.scss";
export default { export default {
name: 'Radar', name: 'Radar',
...@@ -80,25 +80,25 @@ ...@@ -80,25 +80,25 @@
key: 'Bidding', key: 'Bidding',
status: false, status: false,
value: '招标计划', value: '招标计划',
},
{
key: 'bxprozbgg',
status: false,
value: '标讯pro',
}, },
// {
// key: 'bxprozbgg',
// status: false,
// value: '标讯pro',
//
// },
{ {
key: 'Tender', key: 'Tender',
status: false, status: false,
value: '公招标讯', value: '公招标讯',
}, },
{ {
key: 'BidRecord', key: 'BidRecord',
status: false, status: false,
value: '开标记录', value: '开标记录',
}, },
], ],
...@@ -121,7 +121,7 @@ ...@@ -121,7 +121,7 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.app-container { .app-container {
margin: 12px 24px; margin: 12px 24px;
padding: 0; padding: 0;
...@@ -129,7 +129,7 @@ ...@@ -129,7 +129,7 @@
.content{ .content{
padding: 0px 16px; padding: 0px 16px;
background: #FFFFFF; background: #FFFFFF;
} }
.app-container .combined-title { .app-container .combined-title {
...@@ -261,4 +261,4 @@ ...@@ -261,4 +261,4 @@
border-bottom: 2px solid #0081FF; border-bottom: 2px solid #0081FF;
font-weight: bold; font-weight: bold;
} }
</style> </style>
\ No newline at end of file
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