Commit 63e197d8 authored by Administrator's avatar Administrator

Merge remote-tracking branch 'origin/V20230915' into V20230915

parents fbb9aa50 c1a61d02
...@@ -14,7 +14,7 @@ import javax.validation.constraints.NotNull; ...@@ -14,7 +14,7 @@ import javax.validation.constraints.NotNull;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class EnterpriseProjectImportantListDto extends BasePage { public class EnterpriseProjectImportantListDto extends BasePage {
private Integer companyId; private Integer cid;
private String keys; private String keys;
......
...@@ -4,9 +4,13 @@ import cn.hutool.core.bean.BeanUtil; ...@@ -4,9 +4,13 @@ import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.utils.DskOpenApiUtil; import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.jsk.service.EnterpriseService;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -20,6 +24,9 @@ public class MarketAnalysisService { ...@@ -20,6 +24,9 @@ public class MarketAnalysisService {
@Autowired @Autowired
private DskOpenApiUtil dskOpenApiUtil; private DskOpenApiUtil dskOpenApiUtil;
@Autowired
private EnterpriseService enterpriseService;
public AjaxResult areaGroupByProvince() { public AjaxResult areaGroupByProvince() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/areaGroupByProvince", new JSONObject()); Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/areaGroupByProvince", new JSONObject());
return BeanUtil.toBean(map, AjaxResult.class); return BeanUtil.toBean(map, AjaxResult.class);
...@@ -117,11 +124,27 @@ public class MarketAnalysisService { ...@@ -117,11 +124,27 @@ 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"))) {
List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("data");
list.parallelStream().forEach(res -> {
Integer companyId = MapUtils.getInteger(res, "companyId");
String companyName = MapUtils.getString(res, "companyName");
res.put("uipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(companyName, companyId));
});
}
return BeanUtil.toBean(map, AjaxResult.class); return BeanUtil.toBean(map, AjaxResult.class);
} }
public AjaxResult combineBidByYear(JSONObject object) { public AjaxResult combineBidByYear(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/combine/bidByYear", object); Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/combine/bidByYear", object);
if (!ObjectUtils.isEmpty(map.get("data"))) {
List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("data");
list.parallelStream().forEach(res -> {
Integer companyId = MapUtils.getInteger(res, "tendereeId");
String companyName = MapUtils.getString(res, "tenderee");
res.put("uipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(companyName, companyId));
});
}
return BeanUtil.toBean(map, AjaxResult.class); return BeanUtil.toBean(map, AjaxResult.class);
} }
...@@ -132,6 +155,14 @@ public class MarketAnalysisService { ...@@ -132,6 +155,14 @@ public class MarketAnalysisService {
public AjaxResult combineGroupByType(JSONObject object) { public AjaxResult combineGroupByType(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/combine/groupByType", object); Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/combine/groupByType", object);
if (!ObjectUtils.isEmpty(map.get("data"))) {
List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("data");
list.parallelStream().forEach(res -> {
Integer companyId = MapUtils.getInteger(res, "companyId");
String companyName = MapUtils.getString(res, "companyName");
res.put("uipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(companyName, companyId));
});
}
return BeanUtil.toBean(map, AjaxResult.class); return BeanUtil.toBean(map, AjaxResult.class);
} }
...@@ -142,6 +173,14 @@ public class MarketAnalysisService { ...@@ -142,6 +173,14 @@ public class MarketAnalysisService {
public AjaxResult combinePeojectTop(JSONObject object) { public AjaxResult combinePeojectTop(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/combine/peojectTop", object); Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/combine/peojectTop", object);
if (!ObjectUtils.isEmpty(map.get("data"))) {
List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("data");
list.parallelStream().forEach(res -> {
Integer companyId = MapUtils.getInteger(res, "projectUnitId");
String companyName = MapUtils.getString(res, "projectUnit");
res.put("uipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(companyName, companyId));
});
}
return BeanUtil.toBean(map, AjaxResult.class); return BeanUtil.toBean(map, AjaxResult.class);
} }
} }
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
"element-ui": "2.15.12", "element-ui": "2.15.12",
"file-saver": "2.0.5", "file-saver": "2.0.5",
"fuse.js": "6.4.3", "fuse.js": "6.4.3",
"gsap": "^3.12.2",
"highlight.js": "9.18.5", "highlight.js": "9.18.5",
"jquery": "^3.7.0", "jquery": "^3.7.0",
"js-beautify": "1.13.0", "js-beautify": "1.13.0",
...@@ -56,6 +57,7 @@ ...@@ -56,6 +57,7 @@
"quill": "1.3.7", "quill": "1.3.7",
"screenfull": "5.0.2", "screenfull": "5.0.2",
"sortablejs": "^1.15.0", "sortablejs": "^1.15.0",
"uuid": "^9.0.1",
"vue": "2.6.12", "vue": "2.6.12",
"vue-count-to": "1.0.13", "vue-count-to": "1.0.13",
"vue-cropper": "0.5.5", "vue-cropper": "0.5.5",
......
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="16" height="16" viewBox="0 0 16 16"><defs><clipPath id="master_svg0_1326_147842/1262_137253"><rect x="0" y="0" width="16" height="16" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_1326_147842/1262_137253)"><g><path d="M10.551783125,3.9530996875C8.729353125,2.1306496875,5.774553125,2.1306496875,3.952123125,3.9530996875C2.129673125,5.7755296875,2.129673125,8.7303296875,3.952123125,10.5527596875C5.774553125,12.3752296875,8.729353125,12.3752296875,10.551783125,10.5527596875C12.374253125,8.7303296875,12.374253125,5.7755296875,10.551783125,3.9530996875C10.551783125,3.9530996875,10.551783125,3.9530996875,10.551783125,3.9530996875ZM3.0093131250000003,3.0102896875000003C5.352453125,0.6671426875,9.151453125,0.6671426875,11.494553125,3.0102896875000003C13.678353125,5.1940996875,13.826953125,8.6424596875,11.940153125,10.9982596875C11.940153125,10.9982596875,14.323053125,13.3812296875,14.323053125,13.3812296875C14.323053125,13.3812296875,13.380253125,14.3240296875,13.380253125,14.3240296875C13.380253125,14.3240296875,10.997283125,11.9411296875,10.997283125,11.9411296875C8.641483125,13.8279296875,5.193123125,13.6793296875,3.0093131250000003,11.4955296875C0.666166125,9.1524296875,0.666166125,5.3534296875,3.0093131250000003,3.0102896875000003C3.0093131250000003,3.0102896875000003,3.0093131250000003,3.0102896875000003,3.0093131250000003,3.0102896875000003Z" fill-rule="evenodd" fill="#0081FF" fill-opacity="1"/></g></g></svg>
\ No newline at end of file
...@@ -3,87 +3,87 @@ ...@@ -3,87 +3,87 @@
* 1、url地址,如正式环境企业详情:https://plug.jiansheku.com/enterprise/56546856314e567a69?ak=bc8e534da5ea40639b2f084919280a82&initTime=1694507179060&uid=4a3b4bfdfbca4bff9d9bd7c8fd42f533(ak:接口获得的accesToken;initTime:获得accesToken时的时间戳;uid:用户标识) * 1、url地址,如正式环境企业详情:https://plug.jiansheku.com/enterprise/56546856314e567a69?ak=bc8e534da5ea40639b2f084919280a82&initTime=1694507179060&uid=4a3b4bfdfbca4bff9d9bd7c8fd42f533(ak:接口获得的accesToken;initTime:获得accesToken时的时间戳;uid:用户标识)
* *
* */ * */
const steerScroll = function(iframeId, navigation, footHeight, state, parentId, _this) { // iframeId: iframe的id;navigation:页面排除iframe后剩下的顶部高度;footHeight: 页面排除iframe后剩下的底部高度;state:监听or移除监听;parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例(可忽略) const steerScroll = function (iframeId, navigation, footHeight, state, parentId, _this) { // iframeId: iframe的id;navigation:页面排除iframe后剩下的顶部高度;footHeight: 页面排除iframe后剩下的底部高度;state:监听or移除监听;parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例(可忽略)
let dom = window let dom = window;
if (parentId) { // 默认页面可以滚动 if (parentId) { // 默认页面可以滚动
dom = document.getElementById(parentId) dom = document.getElementById(parentId);
if (!dom) { if (!dom) {
return return;
} }
dom.style.overflow = 'auto' dom.style.overflow = 'auto';
} else { } else {
document.body.style.overflow = 'visible' document.body.style.overflow = 'visible';
} }
if (state) { if (state) {
window.addEventListener('message', function(e) { window.addEventListener('message', function (e) {
const data = e.data const data = e.data;
const sct = parentId ? dom.scrollTop : document && document.documentElement.scrollTop || document && document.body.scrollTop const sct = parentId ? dom.scrollTop : document && document.documentElement.scrollTop || document && document.body.scrollTop;
if (data && typeof data === 'object') { if (data && typeof data === 'object') {
// 动态设置iFrame高度 // 动态设置iFrame高度
if (data.height) { if (data.height) {
document.getElementById(iframeId).style.height = data.height + 'px' document.getElementById(iframeId).style.height = data.height + 'px';
scrolling(iframeId, navigation, footHeight, parentId) // 初始加载获取滚动条距离顶部高度 scrolling(iframeId, navigation, footHeight, parentId); // 初始加载获取滚动条距离顶部高度
} }
// 插件当前路由 // 插件当前路由
if (_this && data.currentPath) { if (_this && data.currentPath) {
_this.currentRoute = data _this.currentRoute = data;
_this.searchFlag = data.currentName.includes('search-') ? true : false _this.searchFlag = data.currentName.includes('search-') ? true : false;
} }
// 点击企业详情页 栏目名动态设置滚动高度 // 点击企业详情页 栏目名动态设置滚动高度
if (data.scrollHeight) { if (data.scrollHeight) {
const navHeight = navigation.isFixed && !parentId ? navigation.totalHeight - navigation.fixedHeight : !parentId ? navigation.totalHeight : 0 const navHeight = navigation.isFixed && !parentId ? navigation.totalHeight - navigation.fixedHeight : !parentId ? navigation.totalHeight : 0;
dom.scrollTo(sct, parseInt(data.scrollHeight) + navHeight) dom.scrollTo(sct, parseInt(data.scrollHeight) + navHeight);
} }
// 点击企业详情页 栏目下拉子标签动态设置滚动高度 // 点击企业详情页 栏目下拉子标签动态设置滚动高度
if (data.clientHeight) { if (data.clientHeight) {
dom.scrollTo(sct, sct - parseInt(data.clientHeight)) dom.scrollTo(sct, sct - parseInt(data.clientHeight));
} }
// 点击下拉子标签动态设置滚动高度 // 点击下拉子标签动态设置滚动高度
if (data.initHeight >= 0) { if (data.initHeight >= 0) {
dom.scrollTo(sct, data.initHeight) dom.scrollTo(sct, data.initHeight);
} }
// 根据子页面弹窗显示隐藏控制当前页面是否固定不可滚动 // 根据子页面弹窗显示隐藏控制当前页面是否固定不可滚动
if (data.scrollDisabled || data.scrollDisabled === false) { if (data.scrollDisabled || data.scrollDisabled === false) {
if (parentId) { if (parentId) {
dom.style.overflow = data.scrollDisabled ? 'hidden' : 'auto' dom.style.overflow = data.scrollDisabled ? 'hidden' : 'auto';
} else { } else {
document.body.style.overflow = data.scrollDisabled ? 'hidden' : 'visible' document.body.style.overflow = data.scrollDisabled ? 'hidden' : 'visible';
} }
} }
} }
}) });
dom.addEventListener('scroll', (event) => { dom.addEventListener('scroll', (event) => {
scrolling(iframeId, navigation, footHeight, parentId) scrolling(iframeId, navigation, footHeight, parentId);
}) });
} else { } else {
dom.removeEventListener('scroll', (event) => { dom.removeEventListener('scroll', (event) => {
scrolling(iframeId, navigation, footHeight, parentId) scrolling(iframeId, navigation, footHeight, parentId);
}) });
} }
} };
const scrolling = function(iframeId, navigation, footHeight, parentId) { const scrolling = function (iframeId, navigation, footHeight, parentId) {
// 滚动条距文档顶部的距离 // 滚动条距文档顶部的距离
let scrollTop = parentId ? document.getElementById(parentId).scrollTop : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop let scrollTop = parentId ? document.getElementById(parentId).scrollTop : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
// 将滚动距离传入子组件 // 将滚动距离传入子组件
const ifa = document.getElementById(iframeId) const ifa = document.getElementById(iframeId);
scrollTop = scrollTop + navigation.totalHeight scrollTop = scrollTop + navigation.totalHeight;
let rippleHeight = 0 //插件筛选条件浮动层距离底部距离 let rippleHeight = 0; //插件筛选条件浮动层距离底部距离
let scrollGap = parentId ? document.getElementById(parentId).scrollTop : window.scrollTop || document.body.scrollTop || document.documentElement.scrollTop let scrollGap = parentId ? document.getElementById(parentId).scrollTop : window.scrollTop || document.body.scrollTop || document.documentElement.scrollTop;
let scrollHeight = parentId ? document.getElementById(parentId).offsetHeight : window.scrollHeight || document.body.scrollHeight || document.documentElement.scrollHeight let scrollHeight = parentId ? document.getElementById(parentId).offsetHeight : window.scrollHeight || document.body.scrollHeight || document.documentElement.scrollHeight;
let domHeight = parentId ? document.getElementById(parentId).clientHeight : window.clientHeight || document.body.clientHeight || document.documentElement.clientHeight let domHeight = parentId ? document.getElementById(parentId).clientHeight : window.clientHeight || document.body.clientHeight || document.documentElement.clientHeight;
if(parentId){ //网页内部嵌套时 if (parentId) { //网页内部嵌套时
rippleHeight = scrollHeight-scrollGap-domHeight rippleHeight = scrollHeight - scrollGap - domHeight;
}else{ // } else { //
if(scrollHeight-scrollGap-domHeight <= footHeight){ if (scrollHeight - scrollGap - domHeight <= footHeight) {
rippleHeight = 0 rippleHeight = 0;
}else{ } else {
rippleHeight = scrollHeight-scrollGap-domHeight - footHeight rippleHeight = scrollHeight - scrollGap - domHeight - footHeight;
} }
} }
ifa.contentWindow.postMessage({ 'scrollTop': scrollTop, 'navHeight': navigation.totalHeight, 'rippleHeight': rippleHeight }, '*') ifa ? ifa.contentWindow.postMessage({ 'scrollTop': scrollTop, 'navHeight': navigation.totalHeight, 'rippleHeight': rippleHeight }, '*') : null;
} };
export { export {
steerScroll steerScroll
} };
.search-enter-active,
.search-leave-active {
width: 242px;
transition: width 0.5s;
}
.search-enter,
.search-leave-to {
width: 60px;
}
...@@ -336,7 +336,7 @@ ul, li { ...@@ -336,7 +336,7 @@ ul, li {
.el-table__header-wrapper{ .el-table__header-wrapper{
th{ th{
background: #F0F3FA; background: #F0F3FA;
text-align: left; // text-align: left;
} }
} }
.el-table__fixed-header-wrapper{ .el-table__fixed-header-wrapper{
...@@ -628,7 +628,7 @@ ul, li { ...@@ -628,7 +628,7 @@ ul, li {
line-height: 32px; line-height: 32px;
} }
&:hover{ &:hover{
color: #f; color: #fff;
border-color: #006AD1; border-color: #006AD1;
} }
} }
......
::v-deep .head-form-new {
margin-bottom: 8px;
.query-box {
.from-item {
display: flex;
align-items: center;
height: 32px;
}
// 下拉选择
.el-cascader,
.el-select {
max-width: unset !important;
width: 64px;
padding: 0px 8px;
transition: width 0.3s;
box-sizing: border-box;
.el-cascader__tags,
.el-select__tags {
flex-wrap: nowrap;
.el-tag:first-child {
width: auto;
}
}
.el-cascader__tags {
.el-tag {
max-width: unset !important;
}
}
.el-input {
display: flex;
align-items: center;
& > input {
padding: 0px;
border: none;
height: 30px;
line-height: 30px;
box-sizing: border-box;
&::placeholder {
color: rgba(35, 35, 35, 0.8);
font-size: 14px;
}
}
& > .el-input__suffix {
position: unset;
.el-input__suffix-inner {
i {
font-size: 12px;
line-height: 30px;
width: auto;
color: rgba(35, 35, 35, 0.4);
}
}
}
}
}
// 自定义事件选择 金额选择
.custom-select {
height: 32px;
transition: width 0.3s;
.block {
& > .el-input {
display: flex;
align-items: center;
& > input {
padding: 0px;
border: none;
height: 30px;
line-height: 30px;
box-sizing: border-box;
&::placeholder {
color: rgba(35, 35, 35, 0.8);
font-size: 14px;
}
}
& > .el-input__suffix {
position: unset;
width: auto;
.el-input__suffix-inner {
span,
i {
font-size: 12px;
line-height: 30px;
width: auto;
color: rgba(35, 35, 35, 0.4);
}
}
}
}
}
}
// 时间选择器
.el-date-editor {
height: 32px;
line-height: 32px;
padding-right: 5px;
}
// 企业搜索框
.enterprise-search-container {
height: 32px;
line-height: 32px;
border-radius: 4px;
.el-input__inner {
height: 30px;
line-height: 30px;
}
& > span {
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
height: 30px;
line-height: 30px;
}
&.span-ba {
& > span {
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
}
}
.el-input__suffix {
right: 0px;
.el-input__icon {
display: flex;
align-items: center;
}
}
}
}
}
import Vue from 'vue' import Vue from 'vue';
import Cookies from 'js-cookie' import Cookies from 'js-cookie';
import Element from 'element-ui' import Element from 'element-ui';
import './assets/styles/element-variables.scss' import './assets/styles/element-variables.scss';
import '@/assets/styles/index.scss' // global css import "@/assets/styles/common.css";
import '@/assets/styles/ruoyi.scss' // ruoyi css import '@/assets/styles/index.scss'; // global css
import App from './App' import '@/assets/styles/ruoyi.scss'; // ruoyi css
import store from './store' import App from './App';
import router from './router' import store from './store';
import directive from './directive' // directive import router from './router';
import plugins from './plugins' // plugins import directive from './directive'; // directive
import { download } from '@/utils/request' import plugins from './plugins'; // plugins
import horizontalScroll from 'el-table-horizontal-scroll' import { download } from '@/utils/request';
import horizontalScroll from 'el-table-horizontal-scroll';
import './assets/icons' // icon import './assets/icons'; // icon
import './permission' // permission control import './permission'; // permission control
import { getDicts } from "@/api/system/dict/data"; import { getDicts } from "@/api/system/dict/data";
import { getConfigKey } from "@/api/system/config"; import { getConfigKey } from "@/api/system/config";
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi"; import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi";
// 分页组件 // 分页组件
import Pagination from "@/components/Pagination"; import Pagination from "@/components/Pagination";
// 自定义表格工具组件 // 自定义表格工具组件
import RightToolbar from "@/components/RightToolbar" import RightToolbar from "@/components/RightToolbar";
// 富文本组件 // 富文本组件
import Editor from "@/components/Editor" import Editor from "@/components/Editor";
// 文件上传组件 // 文件上传组件
import FileUpload from "@/components/FileUpload" import FileUpload from "@/components/FileUpload";
// 图片上传组件 // 图片上传组件
import ImageUpload from "@/components/ImageUpload" import ImageUpload from "@/components/ImageUpload";
// 图片预览组件 // 图片预览组件
import ImagePreview from "@/components/ImagePreview" import ImagePreview from "@/components/ImagePreview";
// 字典标签组件 // 字典标签组件
import DictTag from '@/components/DictTag' import DictTag from '@/components/DictTag';
// 头部标签组件 // 头部标签组件
import VueMeta from 'vue-meta' import VueMeta from 'vue-meta';
// 字典数据组件 // 字典数据组件
import DictData from '@/components/DictData' import DictData from '@/components/DictData';
// 全局方法挂载 // 全局方法挂载
Vue.prototype.getDicts = getDicts Vue.prototype.getDicts = getDicts;
Vue.prototype.getConfigKey = getConfigKey Vue.prototype.getConfigKey = getConfigKey;
Vue.prototype.parseTime = parseTime Vue.prototype.parseTime = parseTime;
Vue.prototype.resetForm = resetForm Vue.prototype.resetForm = resetForm;
Vue.prototype.addDateRange = addDateRange Vue.prototype.addDateRange = addDateRange;
Vue.prototype.selectDictLabel = selectDictLabel Vue.prototype.selectDictLabel = selectDictLabel;
Vue.prototype.selectDictLabels = selectDictLabels Vue.prototype.selectDictLabels = selectDictLabels;
Vue.prototype.download = download Vue.prototype.download = download;
Vue.prototype.handleTree = handleTree Vue.prototype.handleTree = handleTree;
// 全局组件挂载 // 全局组件挂载
Vue.component('DictTag', DictTag) Vue.component('DictTag', DictTag);
Vue.component('Pagination', Pagination) Vue.component('Pagination', Pagination);
Vue.component('RightToolbar', RightToolbar) Vue.component('RightToolbar', RightToolbar);
Vue.component('Editor', Editor) Vue.component('Editor', Editor);
Vue.component('FileUpload', FileUpload) Vue.component('FileUpload', FileUpload);
Vue.component('ImageUpload', ImageUpload) Vue.component('ImageUpload', ImageUpload);
Vue.component('ImagePreview', ImagePreview) Vue.component('ImagePreview', ImagePreview);
Vue.use(horizontalScroll) Vue.use(horizontalScroll);
Vue.use(directive) Vue.use(directive);
Vue.use(plugins) Vue.use(plugins);
Vue.use(VueMeta) Vue.use(VueMeta);
DictData.install() DictData.install();
/** /**
* If you don't want to use mock-server * If you don't want to use mock-server
...@@ -76,13 +77,13 @@ DictData.install() ...@@ -76,13 +77,13 @@ DictData.install()
Vue.use(Element, { Vue.use(Element, {
size: Cookies.get('size') || 'medium' // set element-ui default size size: Cookies.get('size') || 'medium' // set element-ui default size
}) });
Vue.config.productionTip = false Vue.config.productionTip = false;
new Vue({ new Vue({
el: '#app', el: '#app',
router, router,
store, store,
render: h => h(App) render: h => h(App)
}) });
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
</div> </div>
</div> </div>
<skeleton v-if="isSkeleton"></skeleton> <skeleton v-if="isSkeleton"></skeleton>
<el-table v-if="!isSkeleton&&tableData.total > 0" class="fixed-table" v-horizontal-scroll="hover" max-height="640" <el-table v-if="!isSkeleton&&tableData.total > 0" class="fixed-table" v-horizontal-scroll="tableData.total > 10 ? 'hover' : 'false'" max-height="640"
:data="tableData.rows" :data="tableData.rows"
stripe border stripe border
style="width: 100%"> style="width: 100%">
......
...@@ -118,8 +118,8 @@ ...@@ -118,8 +118,8 @@
自定义 自定义
<el-date-picker <el-date-picker
ref="picker" ref="picker"
v-if="datatype ==3"
:default-value="defaultValue" :default-value="defaultValue"
style="position: absolute;opacity: 0;left: -12px;width: 60px;"
v-model="pickerValue" v-model="pickerValue"
type="daterange" type="daterange"
range-separator="至" range-separator="至"
...@@ -507,10 +507,10 @@ ...@@ -507,10 +507,10 @@
} }
this.datatype=key; this.datatype=key;
if(value == '自定义') { if(value == '自定义') {
// this.$refs.picker && this.$refs.picker.length && this.$refs.picker[0].focus() this.$refs.picker && this.$refs.picker.length && this.$refs.picker[0].focus()
// this.$nextTick(() => { this.$nextTick(() => {
// this.$refs['picker-block'].appendChild(this.$refs.picker[0].popperElm) // this.$refs['picker-block'].appendChild(this.$refs.picker[0].popperElm)
// }) })
}else { }else {
this.pickerValue = [] this.pickerValue = []
let timeStr = [] let timeStr = []
...@@ -859,8 +859,8 @@ ...@@ -859,8 +859,8 @@
.time-label{ .time-label{
.labels{ .labels{
width: 240px; width: 240px;
height: 32px; height: 30px;
line-height: 32px; line-height: 30px;
border-radius: 4px; border-radius: 4px;
>div{ >div{
height: 100%; height: 100%;
...@@ -888,12 +888,7 @@ ...@@ -888,12 +888,7 @@
} }
} }
} }
::v-deep .el-date-editor{
width: 320px;
position: absolute;
right: 250px;
height: 32px;
}
::v-deep .picker-block { ::v-deep .picker-block {
position: relative; position: relative;
...@@ -904,6 +899,14 @@ ...@@ -904,6 +899,14 @@
visibility:hidden; visibility:hidden;
clear:both; clear:both;
} }
.el-picker-panel.el-date-range-picker.el-popper {
left: -650px !important;
}
.popper__arrow {
left: 30px !important;
}
} }
} }
} }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
:total="tableDataTotal" :total="tableDataTotal"
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
@handle-excel="clickDialog" @handle-excel="clickEXCEL"
> >
<template slot="slot"> <template slot="slot">
...@@ -48,55 +48,6 @@ ...@@ -48,55 +48,6 @@
<div>{{scope.row.bidAmount || '--'}}{{scope.row.bidAmount ? '万元':''}}</div> <div>{{scope.row.bidAmount || '--'}}{{scope.row.bidAmount ? '万元':''}}</div>
</template> </template>
</tables> </tables>
<el-dialog :visible.sync="dialogExportVisible" width="640px" append-to-body class="dialogExport">
<template slot="title">
<img class="tip-img" src="@/assets/images/icon.png" />数据导出
</template>
<div class="table-item">
<el-table :data="exportTableData">
<el-table-column prop="bidTime" label="中标时间" width="110"></el-table-column>
<el-table-column prop="companyName" label="中标成员" width="200"></el-table-column>
<el-table-column prop="stockPercent" label="持股比例" min-width="100"></el-table-column>
<el-table-column prop="projectName" label="项目名称" min-width="220"></el-table-column>
<el-table-column prop="bidAmount" label="中标金额" min-width="100"></el-table-column>
<el-table-column prop="address" label="中标地区" min-width="120"></el-table-column>
<el-table-column prop="boundType" label="业绩类型" min-width="130"></el-table-column>
<el-table-column prop="projectType" label="项目类型" min-width="100"></el-table-column>
<el-table-column prop="projectUnit" label="业主单位" min-width="160"></el-table-column>
</el-table>
</div>
<div class="input">
导出数量:
<el-input placeholder="" v-model="value" oninput="value=value.replace(/[^\d]/g,'')">
<template slot="append"></template>
</el-input>
<p v-if="value > 2000"><i class="el-icon-error"></i>最多支持导出2000条,如需更多联系大司空客服人员</p>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="clickEXCEL">确认导出</el-button>
<el-button @click="cancel">取消</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogExportVisible1" width="640px" append-to-body class="dialogExport">
<template slot="title">
<img class="tip-img" src="@/assets/images/icon.png" />
数据导出
</template>
<div class="content">
<img class="success" src="@/assets/images/success.png" />
<p class="p1">导出成功</p>
<p class="p2">
可在个人中心查看导出表格
<span @click="toUrl">前往个人中心</span>
</p>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="downloadFile(exportData.url,exportData.originalName)">下载表格</el-button>
<el-button @click="dialogExportVisible1 = false">取消</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
...@@ -154,45 +105,7 @@ ...@@ -154,45 +105,7 @@
], ],
timeList: ['近三天', '近七天', '近半月', '自定义'], timeList: ['近三天', '近七天', '近半月', '自定义'],
moneyList: ['5000万以下', '5000万-1亿', '1亿-5亿', '5亿-10亿','10亿以上', '自定义'], moneyList: ['5000万以下', '5000万-1亿', '1亿-5亿', '5亿-10亿','10亿以上', '自定义'],
dataEXCEL:{}, dataEXCEL:{}
dialogExportVisible:false,
dialogExportVisible1:false,
exportTableData:[
{
"bidTime":"2023-09-21",
"companyId":329637,
"address":"浙江省",
"stockPercent":"4.87%",
"boundType":"施工",
"projectUnit":"浙江浙能北仑发电有限公司",
"memberLevel":"四级企业",
"companyName":"浙江华业电力工程股份有限公司",
"projectType":"机电工程",
"bidAmount":"64.9565万元",
"projectName":"浙江浙能北仑发电有限公司5号炉后包覆区域省煤器和后包覆受热面检修",
"projectId":"147703347",
"uipId":null,
"projectUnitUipId":null
},
{
"bidTime":"2023-09-21",
"companyId":329637,
"address":"河南省-郑州市",
"stockPercent":"1.56%",
"boundType":"施工",
"projectUnit":"郑州地铁集团有限公司运营分公司",
"memberLevel":"四级企业",
"companyName":"中铁电气化局集团第三工程有限公司",
"projectType":"机电工程",
"bidAmount":"74.8018万元",
"projectName":"郑州市轨道交通1号线、城郊线一期2023年加装摄像机技改项目",
"projectId":"147703347",
"uipId":null,
"projectUnitUipId":null
},
],
value:'',
exportData:{}
} }
}, },
created() { created() {
...@@ -351,33 +264,20 @@ ...@@ -351,33 +264,20 @@
this.handleQuery(params) this.handleQuery(params)
this.$emit('handle-scroll') this.$emit('handle-scroll')
}, },
clickDialog(){
this.dialogExportVisible=true;
},
clickEXCEL() { clickEXCEL() {
if(this.value > 2000){
return
}
this.dialogExportVisible=false;
this.dataEXCEL.combineName=this.combineName; this.dataEXCEL.combineName=this.combineName;
if(this.value){ if(this.tableDataTotal > 2000){
this.dataEXCEL.pageSize=this.value this.dataEXCEL.pageSize=2000;
}else { }else {
this.dataEXCEL.pageSize=this.tableDataTotal > 2000 ? 2000 : this.tableDataTotal; this.dataEXCEL.pageSize=this.tableDataTotal;
} }
delete this.dataEXCEL.pageNum delete this.dataEXCEL.pageNum
exportWinBid(this.dataEXCEL).then(res=>{ exportWinBid(this.dataEXCEL).then(res=>{
if(res.code === 200){ if(res.code === 200){
this.dialogExportVisible1=true; this.downloadFile(res.data.url,res.data.originalName)
this.value=''
this.exportData=res.data;
} }
}) })
}, // this.$download.exportByPost('/combine/info/export/win/bid',this.dataEXCEL,'集团中标.xlsx');
cancel(){
this.dialogExportVisible=false
this.value=''
}, },
downloadFile(url, fileName) { downloadFile(url, fileName) {
const x = new XMLHttpRequest() const x = new XMLHttpRequest()
...@@ -392,13 +292,7 @@ ...@@ -392,13 +292,7 @@
a.remove() a.remove()
} }
x.send() x.send()
}, }
toUrl(){
this.dialogExportVisible1=false;
this.$router.push({
path: '/user/profile',
})
},
} }
} }
</script> </script>
...@@ -430,89 +324,4 @@ ...@@ -430,89 +324,4 @@
} }
} }
} }
.dialogExport{
::v-deep .el-dialog{
.el-dialog__header{
height: 48px;
line-height: 48px;
padding: 0 16px;
border-bottom: 1px solid #E1E1E1;
font-weight: bold;
color: #1D2129;
font-size: 16px;
.tip-img{
width: 18px;
height: 18px;
margin-right: 7px;
margin-bottom: -3px;
}
.el-dialog__headerbtn{
font-size: 20px;
font-weight: bold;
top: 15px;
.el-dialog__close{
color:#999999;
}
}
}
.el-dialog__body{
padding: 16px;
.input{
margin-top: 16px;
.el-input{
width: 160px;
border-radius: 2px;
height: 32px;
.el-input__inner{
height: 32px;
line-height: 32px;
}
}
.el-input-group__append{
padding: 0 14px;
}
p{
color: #FF3C3C;
font-size: 12px;
margin-left: 12px;
display: inline-block;
i{
font-size: 14px;
margin-right: 4px;
}
}
}
.content{
text-align: center;
margin-top: 36px;
.success{
width: 64px;
height: 64px;
margin-bottom: 16px;
}
p{
padding: 0;
margin: 0;
}
.p1{
color: #232323;
font-size: 16px;
margin-bottom: 8px;
}
.p2{
color: rgba(35,35,35,0.4);
font-size: 14px;
span{
color:#0081FF;
cursor: pointer;
}
}
}
}
.el-dialog__footer{
text-align: center;
padding-bottom: 24px;
}
}
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container bidding-agent">
<head-form <head-form-new title="常合作招标代理单位" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="常合作招标代理单位" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="agency" slot-scope="scope"> <template slot="agency" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.agencyId)}`:`/company/${encodeStr(scope.row.agencyId)}`" tag="a" class="a-link" v-if="scope.row.agencyId&&scope.row.agency" v-html="scope.row.agency"></router-link> <router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.agencyId)}`:`/company/${encodeStr(scope.row.agencyId)}`" tag="a"
class="a-link" v-if="scope.row.agencyId&&scope.row.agency" v-html="scope.row.agency"></router-link>
<div v-else v-html="scope.row.agency || '--'"></div> <div v-else v-html="scope.row.agency || '--'"></div>
</template> </template>
<template slot="projectInfo" slot-scope="scope"> <template slot="projectInfo" slot-scope="scope">
<router-link :to="`/radar/Notice/details/${scope.row.projectInfo.bid}`" tag="a" class="a-link" v-if="scope.row.projectInfo.bid&&scope.row.projectInfo.dealTitle" v-html="scope.row.projectInfo.dealTitle"></router-link> <router-link :to="`/radar/Notice/details/${scope.row.projectInfo.bid}`" tag="a" class="a-link"
v-if="scope.row.projectInfo.bid&&scope.row.projectInfo.dealTitle" v-html="scope.row.projectInfo.dealTitle"></router-link>
<div v-else v-html="scope.row.projectInfo.dealTitle || '--'"></div> <div v-else v-html="scope.row.projectInfo.dealTitle || '--'"></div>
<div v-if="scope.row.count>1" @click="handleClick($event, scope.row)" style="color: #FF7E38;cursor: pointer;">{{scope.row.count}}个合作项目/工程 ></div> <div v-if="scope.row.count>1" @click="handleClick($event, scope.row)" style="color: #FF7E38;cursor: pointer;">{{scope.row.count}}个合作项目/工程 >
</div>
</template> </template>
</tables> </tables>
<client-detail <client-detail v-if="isDetails" :data="rowData" :title="'合作项目/工程明细'" @cancel="isDetails=false" />
v-if="isDetails"
:data="rowData"
:title="'合作项目/工程明细'"
@cancel="isDetails=false" />
</div> </div>
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {oftenAgencyPage} from '@/api/detail/party-a/dealings' import { oftenAgencyPage } from '@/api/detail/party-a/dealings';
import ClientDetail from './component/bidagencyDetail' import ClientDetail from './component/bidagencyDetail';
export default { export default {
name: 'Bidagency', name: 'Bidagency',
props: ['companyId'], props: ['companyId'],
...@@ -58,54 +41,58 @@ export default { ...@@ -58,54 +41,58 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'issueTime', order: 'descending'}, defaultSort: { prop: 'issueTime', order: 'descending' },
forData: [ forData: [
{label: '招标代理单位名称', prop: 'agency', minWidth: '350', slot: true}, { label: '招标代理单位名称', prop: 'agency', minWidth: '350', slot: true },
{label: '合作项目/工程名称', prop: 'projectInfo', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6'}, { label: '合作项目/工程名称', prop: 'projectInfo', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6' },
{label: '最近一次合作时间', prop: 'issueTime', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'} { label: '最近一次合作时间', prop: 'issueTime', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4' }
], ],
formData: [ formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: [], uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isDetails: false, isDetails: false,
rowData: {} rowData: {}
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await oftenAgencyPage(param) let res = await oftenAgencyPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows.map((item)=>{ this.tableData = res.rows.map((item) => {
item.projectInfo = typeof item.projectInfo == 'string' ? JSON.parse(item.projectInfo) : item.projectInfo item.projectInfo = typeof item.projectInfo == 'string' ? JSON.parse(item.projectInfo) : item.projectInfo;
return item return item;
}) });
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
handleClick(e, data) { handleClick(e, data) {
this.rowData = data this.rowData = data;
this.isDetails = true this.isDetails = true;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.bidding-agent {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container bid-opening-record">
<head-form <head-form-new title="开标记录" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="开标记录" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
v-else :queryParams="queryParams" @handle-current-change="handleCurrentChange">
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="name" slot-scope="scope"> <template slot="name" slot-scope="scope">
<router-link :to="`/radar/BidRecord/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.name" v-html="scope.row.name"></router-link> <router-link :to="`/radar/BidRecord/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.name"
v-html="scope.row.name"></router-link>
<div v-else v-html="scope.row.name || '--'"></div> <div v-else v-html="scope.row.name || '--'"></div>
</template> </template>
<template slot="source" slot-scope="scope"> <template slot="source" slot-scope="scope">
<span class="a-link" v-if="scope.row.url&&scope.row.source" @click="handlePic(scope.row.url)" style="cursor: pointer;">{{ scope.row.source }}</span> <span class="a-link" v-if="scope.row.url&&scope.row.source" @click="handlePic(scope.row.url)"
style="cursor: pointer;">{{ scope.row.source }}</span>
<div v-else>{{ scope.row.source || '--' }}</div> <div v-else>{{ scope.row.source || '--' }}</div>
</template> </template>
</tables> </tables>
...@@ -32,8 +20,8 @@ ...@@ -32,8 +20,8 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {tenderPage} from '@/api/detail/party-a/dealings' import { tenderPage } from '@/api/detail/party-a/dealings';
export default { export default {
name: 'Bidrecords', name: 'Bidrecords',
props: ['companyId'], props: ['companyId'],
...@@ -49,50 +37,54 @@ export default { ...@@ -49,50 +37,54 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '项目名称', prop: 'name', minWidth: '320', slot: true}, { label: '项目名称', prop: 'name', minWidth: '320', slot: true },
{label: '本企业投标报价(万元)', prop: 'tenderOffer', minWidth: '160'}, { label: '本企业投标报价(万元)', prop: 'tenderOffer', minWidth: '160' },
{label: '发布日期', prop: 'publishTime', minWidth: '100'}, { label: '发布日期', prop: 'publishTime', minWidth: '100' },
{label: '项目地区', prop: 'province', minWidth: '160'}, { label: '项目地区', prop: 'province', minWidth: '160' },
{label: '信息来源', prop: 'source', minWidth: '280', slot: true} { label: '信息来源', prop: 'source', minWidth: '280', slot: true }
], ],
formData: [ formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称查询', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称查询', options: [], uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0 tableDataTotal: 0
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await tenderPage(param) let res = await tenderPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
handlePic(url){ handlePic(url) {
if(url){ if (url) {
window.open(url, "_blank") window.open(url, "_blank");
} }
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.bid-opening-record {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container client">
<head-form <head-form-new title="客户" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="客户" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="companyName" slot-scope="scope"> <template slot="companyName" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName" v-html="scope.row.companyName"></router-link> <router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a"
class="a-link" v-if="scope.row.companyId&&scope.row.companyName" v-html="scope.row.companyName"></router-link>
<div v-else v-html="scope.row.companyName || '--'"></div> <div v-else v-html="scope.row.companyName || '--'"></div>
</template> </template>
<!-- <template slot="projectAllName" slot-scope="scope"> <!-- <template slot="projectAllName" slot-scope="scope">
...@@ -31,22 +16,17 @@ ...@@ -31,22 +16,17 @@
<div v-if="scope.row.count>1" @click="handleClick($event, scope.row)" style="color: #FF7E38;cursor: pointer;">有{{scope.row.count}}个合作项目/工程 ></div> <div v-if="scope.row.count>1" @click="handleClick($event, scope.row)" style="color: #FF7E38;cursor: pointer;">有{{scope.row.count}}个合作项目/工程 ></div>
</template> --> </template> -->
<template slot="count" slot-scope="scope"> <template slot="count" slot-scope="scope">
<div v-if="scope.row.count>0" class="a-link" style="cursor: pointer;" @click="handleClick($event, scope.row)" >{{scope.row.count}}</div> <div v-if="scope.row.count>0" class="a-link" style="cursor: pointer;" @click="handleClick($event, scope.row)">{{scope.row.count}}</div>
</template> </template>
</tables> </tables>
<client-detail <client-detail v-if="isDetails" :data="rowData" :title="title" :company-id="companyId" @cancel="isDetails=false" />
v-if="isDetails"
:data="rowData"
:title="title"
:company-id="companyId"
@cancel="isDetails=false" />
</div> </div>
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import { clientPage,getSelect } from '@/api/detail/party-a/dealings' import { clientPage, getSelect } from '@/api/detail/party-a/dealings';
import ClientDetail from './component/customDetail' import ClientDetail from './component/customDetail';
export default { export default {
name: 'Custom', name: 'Custom',
props: ['companyId'], props: ['companyId'],
...@@ -56,95 +36,99 @@ export default { ...@@ -56,95 +36,99 @@ export default {
}, },
data() { data() {
return { return {
title:'', title: '',
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 5, sort: 5,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'count', order: 'descending'}, defaultSort: { prop: 'count', order: 'descending' },
forData: [ forData: [
{label: '客户名称', prop: 'companyName', minWidth: '350', slot: true}, { label: '客户名称', prop: 'companyName', minWidth: '350', slot: true },
// {label: '合作项目/工程名称', prop: 'projectAllName', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6'}, // {label: '合作项目/工程名称', prop: 'projectAllName', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6'},
{label: '最近合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'}, { label: '最近合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4' },
{label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2'}, { label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2' },
{label: '合作次数', prop: 'count', minWidth: '150', sortable: 'custom',slot: true, descending: '5', ascending: '6'}, { label: '合作次数', prop: 'count', minWidth: '150', sortable: 'custom', slot: true, descending: '5', ascending: '6' },
], ],
formData: [ formData: [
{ type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: []}, { type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: []}, { type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '搜索客户名称', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '搜索客户名称', options: [], uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isDetails: false, isDetails: false,
rowData: {} rowData: {}
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.handleOption() this.handleOption();
}, },
methods: { methods: {
async handleOption(){ async handleOption() {
let res = await getSelect({}) let res = await getSelect({});
if(res.code==200){ if (res.code == 200) {
let data = res.data.projects let data = res.data.projects;
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i], name: data[i],
value: data[i], value: data[i],
}) });
} }
let data1 = res.data.sources let data1 = res.data.sources;
for (var i=0;i<data1.length;i++){ for (var i = 0; i < data1.length; i++) {
this.formData[1].options.push({ this.formData[1].options.push({
name: data1[i], name: data1[i],
value: data1[i], value: data1[i],
}) });
} }
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await clientPage(param) let res = await clientPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
if(this.tableData&&this.tableData.length>0){ if (this.tableData && this.tableData.length > 0) {
this.tableData.forEach(item => { this.tableData.forEach(item => {
typeof item.projectInfo=='string' ? item.projectInfo = JSON.parse(item.projectInfo) : '' typeof item.projectInfo == 'string' ? item.projectInfo = JSON.parse(item.projectInfo) : '';
item.amount ? item.amount = parseFloat(item.amount.toFixed(4)) : '' item.amount ? item.amount = parseFloat(item.amount.toFixed(4)) : '';
}) });
} }
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
handleClick(e, data) { handleClick(e, data) {
this.rowData = data this.rowData = data;
this.isDetails = true; this.isDetails = true;
this.title = '与客户'+data.companyName.replace(/<font color='red'>/g,'').replace(/<\/font>/g,'')+'合作记录' this.title = '与客户' + data.companyName.replace(/<font color='red'>/g, '').replace(/<\/font>/g, '') + '合作记录';
}, },
handleDetail(row){ handleDetail(row) {
if(row.sourceUrl){ if (row.sourceUrl) {
window.open(row.sourceUrl, "_blank") window.open(row.sourceUrl, "_blank");
} }
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.client {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container history-contract">
<head-form <head-form-new title="历史发包" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="历史发包" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="projectAllName" slot-scope="scope"> <template slot="projectAllName" slot-scope="scope">
<router-link :to="`/biddetail/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectAllName" >{{ scope.row.projectAllName }}</router-link> <router-link :to="`/biddetail/${scope.row.id}`" tag="a" class="a-link"
v-if="scope.row.id&&scope.row.projectAllName">{{ scope.row.projectAllName }}</router-link>
<div v-else v-html="scope.row&&scope.row.projectAllName || '--'"></div> <div v-else v-html="scope.row&&scope.row.projectAllName || '--'"></div>
</template> </template>
<template slot="companyName" slot-scope="scope"> <template slot="companyName" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName">{{ scope.row.companyName }}</router-link> <router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a"
class="a-link" v-if="scope.row.companyId&&scope.row.companyName">{{ scope.row.companyName }}</router-link>
<div v-else>{{ scope.row.companyName || '--' }}</div> <div v-else>{{ scope.row.companyName || '--' }}</div>
</template> </template>
</tables> </tables>
...@@ -34,8 +20,8 @@ ...@@ -34,8 +20,8 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {historySendProvince, historySendPage} from '@/api/detail/party-a/dealings' import { historySendProvince, historySendPage } from '@/api/detail/party-a/dealings';
export default { export default {
name: 'Hiscontract', name: 'Hiscontract',
props: ['companyId'], props: ['companyId'],
...@@ -53,68 +39,72 @@ export default { ...@@ -53,68 +39,72 @@ export default {
}, },
defaultSort: {}, defaultSort: {},
forData: [ forData: [
{label: '项目名称', prop: 'projectAllName', minWidth: '560', slot: true}, { label: '项目名称', prop: 'projectAllName', minWidth: '560', slot: true },
{label: '中标时间', prop: 'winBidTime', minWidth: '100', sortable: 'custom', descending: '3', ascending: '4'}, { label: '中标时间', prop: 'winBidTime', minWidth: '100', sortable: 'custom', descending: '3', ascending: '4' },
{label: '中标企业', prop: 'companyName', minWidth: '320', slot: true}, { label: '中标企业', prop: 'companyName', minWidth: '320', slot: true },
{label: '中标金额(万元)', prop: 'winBidAmount', minWidth: '140', sortable: 'custom', descending: '1', ascending: '2'}, { label: '中标金额(万元)', prop: 'winBidAmount', minWidth: '140', sortable: 'custom', descending: '1', ascending: '2' },
{label: '下浮率(%)', prop: 'lowerRate', minWidth: '120', sortable: 'custom', descending: '7', ascending: '8'}, { label: '下浮率(%)', prop: 'lowerRate', minWidth: '120', sortable: 'custom', descending: '7', ascending: '8' },
{label: '项目经理 / 负责人', prop: 'staffName', minWidth: '130'}, { label: '项目经理 / 负责人', prop: 'staffName', minWidth: '130' },
{label: '中标地区', prop: 'region', minWidth: '160'}, { label: '中标地区', prop: 'region', minWidth: '160' },
{label: '工期(天)', prop: 'period', minWidth: '110', sortable: 'custom', descending: '9', ascending: '10'}, { label: '工期(天)', prop: 'period', minWidth: '110', sortable: 'custom', descending: '9', ascending: '10' },
{label: '业绩类别', prop: 'boundType', minWidth: '110'} { label: '业绩类别', prop: 'boundType', minWidth: '110' }
], ],
formData: [ formData: [
{ type: 1, fieldName: 'provinceId', value: '', placeholder: '项目地区', options: [] }, { type: 1, fieldName: 'provinceId', value: '', placeholder: '项目地区', options: [], uid: this.getUid() },
{ type: 5, fieldName: 'time', value: '', placeholder: '中标时间', startTime: 'dateFrom', endTime: 'dateTo' }, { type: 5, fieldName: 'time', value: '', placeholder: '中标时间', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() },
{ type: 6, fieldName: 'money', value: '', placeholder: '中标金额', startMoney: 'amountMin', endMoney: 'amountMax' }, { type: 6, fieldName: 'money', value: '', placeholder: '中标金额', startMoney: 'amountMin', endMoney: 'amountMax', uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称查询', options: [] } { type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称查询', options: [], uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0 tableDataTotal: 0
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleOption() this.handleOption();
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleOption(){ async handleOption() {
let res = await historySendProvince({cid: this.companyId}) let res = await historySendProvince({ cid: this.companyId });
if(res.code==200){ if (res.code == 200) {
let region = res.data.map(item => { let region = res.data.map(item => {
let it = {name:item.province+'('+item.count+')',value:item.provinceId} let it = { name: item.province + '(' + item.count + ')', value: item.provinceId };
return it return it;
}) });
this.setFormData('provinceId', region) this.setFormData('provinceId', region);
} }
}, },
async handleQuery(params) { async handleQuery(params) {
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await historySendPage(param) let res = await historySendPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
handleDetail(row){ handleDetail(row) {
if(row.sourceUrl){ if (row.sourceUrl) {
window.open(row.sourceUrl, "_blank") window.open(row.sourceUrl, "_blank");
} }
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.history-contract {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container supplier">
<head-form <head-form-new title="供应商" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="供应商" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="companyName" slot-scope="scope"> <template slot="companyName" slot-scope="scope">
<router-link :to="`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName" v-html="scope.row.companyName"></router-link> <router-link :to="`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName"
v-html="scope.row.companyName"></router-link>
<div v-else v-html="scope.row.companyName || '--'"></div> <div v-else v-html="scope.row.companyName || '--'"></div>
</template> </template>
<template slot="count" slot-scope="scope"> <template slot="count" slot-scope="scope">
<div v-if="scope.row.count>0" class="a-link" style="cursor: pointer;" @click="handleClick($event, scope.row)" >{{scope.row.count}}</div> <div v-if="scope.row.count>0" class="a-link" style="cursor: pointer;" @click="handleClick($event, scope.row)">{{scope.row.count}}</div>
</template> </template>
</tables> </tables>
<client-detail <client-detail v-if="isDetails" :data="rowData" :title="title" :company-id="companyId" @cancel="isDetails=false" />
v-if="isDetails"
:data="rowData"
:title="title"
:company-id="companyId"
@cancel="isDetails=false" />
</div> </div>
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import { supplierPage,getSelect } from '@/api/detail/party-a/dealings' import { supplierPage, getSelect } from '@/api/detail/party-a/dealings';
import ClientDetail from './component/supplierDetail' import ClientDetail from './component/supplierDetail';
export default { export default {
name: 'Supplier', name: 'Supplier',
props: ['companyId'], props: ['companyId'],
...@@ -51,7 +31,7 @@ export default { ...@@ -51,7 +31,7 @@ export default {
}, },
data() { data() {
return { return {
title:'', title: '',
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 5, sort: 5,
...@@ -60,84 +40,88 @@ export default { ...@@ -60,84 +40,88 @@ export default {
}, },
defaultSort: {}, defaultSort: {},
forData: [ forData: [
{label: '供应商', prop: 'companyName', minWidth: '350', slot: true}, { label: '供应商', prop: 'companyName', minWidth: '350', slot: true },
{label: '最近合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'}, { label: '最近合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4' },
{label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2'}, { label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2' },
{label: '合作次数', prop: 'count', minWidth: '150', sortable: 'custom',slot: true, descending: '5', ascending: '6'}, { label: '合作次数', prop: 'count', minWidth: '150', sortable: 'custom', slot: true, descending: '5', ascending: '6' },
], ],
formData: [ formData: [
{ type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: []}, { type: 4, fieldName: 'projects', value: '', placeholder: '合作项目类型', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: []}, { type: 4, fieldName: 'sources', value: '', placeholder: '数据来源', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '搜索供应商名称', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '搜索供应商名称', options: [], uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isDetails: false, isDetails: false,
rowData: {} rowData: {}
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.handleOption() this.handleOption();
}, },
methods: { methods: {
async handleOption(){ async handleOption() {
let res = await getSelect({}) let res = await getSelect({});
if(res.code==200){ if (res.code == 200) {
let data = res.data.projects let data = res.data.projects;
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i], name: data[i],
value: data[i], value: data[i],
}) });
} }
let data1 = res.data.sources let data1 = res.data.sources;
for (var i=0;i<data1.length;i++){ for (var i = 0; i < data1.length; i++) {
this.formData[1].options.push({ this.formData[1].options.push({
name: data1[i], name: data1[i],
value: data1[i], value: data1[i],
}) });
} }
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await supplierPage(param) let res = await supplierPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
if(this.tableData&&this.tableData.length>0){ if (this.tableData && this.tableData.length > 0) {
this.tableData.forEach(item => { this.tableData.forEach(item => {
typeof item.projectInfo=='string' ? item.projectInfo = JSON.parse(item.projectInfo) : '' typeof item.projectInfo == 'string' ? item.projectInfo = JSON.parse(item.projectInfo) : '';
item.amount ? item.amount = parseFloat(item.amount.toFixed(4)) : '' item.amount ? item.amount = parseFloat(item.amount.toFixed(4)) : '';
}) });
} }
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
handleClick(e, data) { handleClick(e, data) {
this.rowData = data this.rowData = data;
this.isDetails = true this.isDetails = true;
this.title = '与供应商'+data.companyName.replace(/<font color='red'>/g,'').replace(/<\/font>/g,'')+'合作记录' this.title = '与供应商' + data.companyName.replace(/<font color='red'>/g, '').replace(/<\/font>/g, '') + '合作记录';
}, },
handleDetail(row){ handleDetail(row) {
if(row.sourceUrl){ if (row.sourceUrl) {
window.open(row.sourceUrl, "_blank") window.open(row.sourceUrl, "_blank");
} }
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.supplier {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
import {encodeStr} from "@/assets/js/common" import {encodeStr} from "@/assets/js/common"
import HeadForm from "../component/HeadForm" import HeadForm from "../component/HeadForm"
import HeadFormNew from "../component/HeadFormNew"
import Tables from "../component/Tables" import Tables from "../component/Tables"
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton'
import { v4 } from "uuid";
export default { export default {
components: { components: {
HeadForm, HeadForm,
Tables, Tables,
skeleton skeleton,
HeadFormNew
}, },
data() { data() {
return { return {
...@@ -18,6 +21,9 @@ export default { ...@@ -18,6 +21,9 @@ export default {
}, },
methods: { methods: {
getUid() {
return v4();
},
// 设置下拉选项数据源 // 设置下拉选项数据源
setFormData(fieldName, list) { setFormData(fieldName, list) {
this.formData.forEach(item => { this.formData.forEach(item => {
......
<template> <template>
<div class="detail-container"> <div class="detail-container administrative-license">
<head-form <head-form-new title="行政许可" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" @handle-search="handleSearch" />
title="行政许可"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
v-else :queryParams="queryParams" @handle-current-change="handleCurrentChange">
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="deciWritName" slot-scope="scope"> <template slot="deciWritName" slot-scope="scope">
<div v-html="scope.row.deciWritName"></div> <div v-html="scope.row.deciWritName"></div>
</template> </template>
<template slot="content" slot-scope="scope"> <template slot="content" slot-scope="scope">
<div :class="[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.content)?'cell-span':'']" :style="{'-webkit-line-clamp': 2}"> <div :class="[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.content)?'cell-span':'']"
:style="{'-webkit-line-clamp': 2}">
<div v-html="scope.row.content"></div> <div v-html="scope.row.content"></div>
<span v-if="isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.content)" @click="changeShowAll(scope.index, 0)">...<span style="color: #0081FF;">展开</span></span> <span v-if="isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.content)" @click="changeShowAll(scope.index, 0)">...<span
style="color: #0081FF;">展开</span></span>
</div> </div>
</template> </template>
</tables> </tables>
...@@ -33,9 +21,9 @@ ...@@ -33,9 +21,9 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton';
import {creditXzxkPage} from '@/api/detail/party-a/opport' import { creditXzxkPage } from '@/api/detail/party-a/opport';
export default { export default {
name: 'Administrative', name: 'Administrative',
props: ['companyId'], props: ['companyId'],
...@@ -45,95 +33,95 @@ export default { ...@@ -45,95 +33,95 @@ export default {
}, },
data() { data() {
return { return {
isSkeleton:true, isSkeleton: true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '许可决定日期', prop: 'deciTime', width: '110'}, { label: '许可决定日期', prop: 'deciTime', width: '110' },
{label: '决定文书号', prop: 'deciWritNo', width: '200'}, { label: '决定文书号', prop: 'deciWritNo', width: '200' },
{label: '许可编号', prop: 'permitNo', width: '100'}, { label: '许可编号', prop: 'permitNo', width: '100' },
{label: '决定文书名称', prop: 'deciWritName', width: '190', slot: true}, { label: '决定文书名称', prop: 'deciWritName', width: '190', slot: true },
{label: '许可内容', prop: 'content', width: '300', slot: true}, { label: '许可内容', prop: 'content', width: '300', slot: true },
{label: '有效期自', prop: 'valiBegin', width: '100'}, { label: '有效期自', prop: 'valiBegin', width: '100' },
{label: '有效期至', prop: 'valiEnd', width: '100'}, { label: '有效期至', prop: 'valiEnd', width: '100' },
{label: '行政许可类别', prop: 'permitType', width: '110'}, { label: '行政许可类别', prop: 'permitType', width: '110' },
{label: '许可机关', prop: 'office', width: '180'}, { label: '许可机关', prop: 'office', width: '180' },
{label: '行政许可机关统一社会信用代码', prop: 'officeCreditCode', width: '210'}, { label: '行政许可机关统一社会信用代码', prop: 'officeCreditCode', width: '210' },
{label: '数据来源单位', prop: 'dataSourceOffice', width: '110'}, { label: '数据来源单位', prop: 'dataSourceOffice', width: '110' },
{label: '数据来源单位统一社会信用代码', prop: 'dataSourceOfficeCreditCode', width: '210'}, { label: '数据来源单位统一社会信用代码', prop: 'dataSourceOfficeCreditCode', width: '210' },
{label: '来源', prop: 'dataSource', width: '80'} { label: '来源', prop: 'dataSource', width: '80' }
], ],
formData: [ formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: [], uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
showList:[] showList: []
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await creditXzxkPage(param) let res = await creditXzxkPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
if(res.rows&&res.rows.length>0){ if (res.rows && res.rows.length > 0) {
res.rows.forEach(item => { res.rows.forEach(item => {
item.smallContent = item.content.replace(/<.*?>/ig,"") item.smallContent = item.content.replace(/<.*?>/ig, "");
}) });
} }
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
changeShowAll(row, column) { changeShowAll(row, column) {
this.showList.push({ this.showList.push({
row: row, row: row,
column: column column: column
}) });
}, },
isOverHiddenFlag(data, showList, row, column, value) { isOverHiddenFlag(data, showList, row, column, value) {
if(value && this.getByteLen(value) > 88) { if (value && this.getByteLen(value) > 88) {
return !showList.some(item => item.row==row&&item.column==column) return !showList.some(item => item.row == row && item.column == column);
}else { } else {
return false return false;
} }
}, },
/*getLenth(data) { /*getLenth(data) {
return Math.floor(data / 6) * 2 //宽度(300) / 一个字符的宽度(6) * 行数(2) return Math.floor(data / 6) * 2 //宽度(300) / 一个字符的宽度(6) * 行数(2)
},*/ },*/
getByteLen(val) { getByteLen(val) {
var len = 0 var len = 0;
for (var i = 0; i < val.length; i++) { for (var i = 0; i < val.length; i++) {
var a = val.charAt(i) var a = val.charAt(i);
if (a.match(/[^\x00-\xff]/ig) != null){ if (a.match(/[^\x00-\xff]/ig) != null) {
len += 2 len += 2;
}else{ } else {
len += 1 len += 1;
} }
} }
/*if(val.match(/ /g)){ /*if(val.match(/ /g)){
len =len+Math.floor(val.match(/ /g).length/2) len =len+Math.floor(val.match(/ /g).length/2)
}*/ }*/
return len return len;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
...@@ -147,7 +135,7 @@ export default { ...@@ -147,7 +135,7 @@ export default {
-webkit-line-clamp: 4; -webkit-line-clamp: 4;
cursor: pointer; cursor: pointer;
>span { > span {
display: inline-block; display: inline-block;
width: 37px; width: 37px;
position: absolute; position: absolute;
...@@ -158,4 +146,8 @@ export default { ...@@ -158,4 +146,8 @@ export default {
} }
} }
} }
.administrative-license {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container tender-announcement">
<head-form <head-form-new ref="headForm" title="招标公告" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
ref="headForm" @handle-search="handleSearch" />
title="招标公告"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="projectName" slot-scope="scope"> <template slot="projectName" slot-scope="scope">
<router-link :to="`/radar/Notice/details/${scope.row.bid}`" tag="a" class="a-link" v-if="scope.row.bid&&scope.row.projectName " v-html="scope.row.projectName"></router-link> <router-link :to="`/radar/Notice/details/${scope.row.bid}`" tag="a" class="a-link" v-if="scope.row.bid&&scope.row.projectName "
v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div> <div v-else v-html="scope.row.projectName || '--'"></div>
</template> </template>
<template slot="province" slot-scope="scope"> <template slot="province" slot-scope="scope">
...@@ -35,9 +19,9 @@ ...@@ -35,9 +19,9 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton';
import {bidNoticeArea, bidNoticeTenderStage, bidNoticePage} from '@/api/detail/party-a/opport' import { bidNoticeArea, bidNoticeTenderStage, bidNoticePage } from '@/api/detail/party-a/opport';
export default { export default {
name: 'Announcement', name: 'Announcement',
props: ['companyId'], props: ['companyId'],
...@@ -47,14 +31,14 @@ export default { ...@@ -47,14 +31,14 @@ export default {
}, },
data() { data() {
return { return {
isSkeleton:true, isSkeleton: true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 3, sort: 3,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'issueTime', order: 'descending'}, defaultSort: { prop: 'issueTime', order: 'descending' },
forData: [ forData: [
{label: '项目名称', prop: 'projectName', minWidth: '300', slot: true, fixed: true}, {label: '项目名称', prop: 'projectName', minWidth: '300', slot: true, fixed: true},
{label: '发布日期', prop: 'issueTime', sortable: 'custom', descending: '3', ascending: '4', width: '120'}, {label: '发布日期', prop: 'issueTime', sortable: 'custom', descending: '3', ascending: '4', width: '120'},
...@@ -69,101 +53,105 @@ export default { ...@@ -69,101 +53,105 @@ export default {
{label: '报名截止日期', prop: 'overTime', width: '110'} {label: '报名截止日期', prop: 'overTime', width: '110'}
], ],
formData: [ formData: [
{ type: 7, fieldName: 'province', value: '',props: {multiple: true}, placeholder: '项目地区', options: []}, { type: 7, fieldName: 'province', value: '', props: { multiple: true }, placeholder: '项目地区', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'tenderStage', value: '', placeholder: '项目类型', options: []}, { type: 4, fieldName: 'tenderStage', value: '', placeholder: '项目类型', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: []} { type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: [], uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0 tableDataTotal: 0
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleOption() this.handleOption();
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleOption(){ async handleOption() {
let [area, tender] = await Promise.all([ let [area, tender] = await Promise.all([
bidNoticeArea({cid: this.companyId}), bidNoticeArea({ cid: this.companyId }),
bidNoticeTenderStage({cid: this.companyId}) bidNoticeTenderStage({ cid: this.companyId })
]) ]);
if(area.code==200){ if (area.code == 200) {
let region = area.data.map(item => { let region = area.data.map(item => {
let province = {label:item.province+'('+item.count+')',value:item.provinceId} let province = { label: item.province + '(' + item.count + ')', value: item.provinceId };
if(item.citys&&item.citys.length>0){ if (item.citys && item.citys.length > 0) {
let city = [], citem = {} let city = [], citem = {};
for(let i=0;i<item.citys.length;i++){ for (let i = 0; i < item.citys.length; i++) {
citem = {label:item.citys[i].city, value:item.citys[i].cityId} citem = { label: item.citys[i].city, value: item.citys[i].cityId };
if(item.citys[i].areas&&item.citys[i].areas.length>0){ if (item.citys[i].areas && item.citys[i].areas.length > 0) {
let area = [], aitem = {} let area = [], aitem = {};
for(let j=0;j<item.citys[i].areas.length;j++){ for (let j = 0; j < item.citys[i].areas.length; j++) {
aitem = {label:item.citys[i].areas[j].area, value:item.citys[i].areas[j].areaId} aitem = { label: item.citys[i].areas[j].area, value: item.citys[i].areas[j].areaId };
area.push(aitem) area.push(aitem);
citem.children = area citem.children = area;
} }
} }
city.push(citem) city.push(citem);
} }
city.length>0 ? province.children = city : '' city.length > 0 ? province.children = city : '';
} }
return province return province;
}) });
this.setFormData('province', region) this.setFormData('province', region);
} }
if(tender.code==200){ if (tender.code == 200) {
let tenderStage = tender.data.map(item => { let tenderStage = tender.data.map(item => {
let it = {name:item.tenderStage+'('+item.count+')',value:item.tenderStage} let it = { name: item.tenderStage + '(' + item.count + ')', value: item.tenderStage };
return it return it;
}) });
this.setFormData('tenderStage', tenderStage) this.setFormData('tenderStage', tenderStage);
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = this.getAreaList(params || this.queryParams) let param = this.getAreaList(params || this.queryParams);
let res = await bidNoticePage(param) let res = await bidNoticePage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
getAreaList(params){ getAreaList(params) {
if(params.province&&params.province.length>0){ if (params.province && params.province.length > 0) {
let arr = this.$refs.headForm.$refs.cascader[0].getCheckedNodes() let arr = this.$refs.headForm.$refs.cascader[0].getCheckedNodes();
let provinceIds = [], cityIds = [], areaIds = [] let provinceIds = [], cityIds = [], areaIds = [];
for (var i in arr) { for (var i in arr) {
if (arr[i].parent) { if (arr[i].parent) {
if (!arr[i].parent.checked) { if (!arr[i].parent.checked) {
if(arr[i].hasChildren || arr[i].level==2){ if (arr[i].hasChildren || arr[i].level == 2) {
cityIds.push(arr[i].value) cityIds.push(arr[i].value);
}else{ } else {
areaIds.push(arr[i].value) areaIds.push(arr[i].value);
} }
} }
} else { } else {
provinceIds.push(arr[i].value) provinceIds.push(arr[i].value);
} }
} }
delete params.province delete params.province;
provinceIds.length>0?params.provinceIds = provinceIds:'' provinceIds.length > 0 ? params.provinceIds = provinceIds : '';
cityIds.length>0?params.cityIds = cityIds:'' cityIds.length > 0 ? params.cityIds = cityIds : '';
areaIds.length>0?params.areaIds = areaIds:'' areaIds.length > 0 ? params.areaIds = areaIds : '';
} }
return params return params;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.tender-announcement {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container bidding-plan">
<head-form <head-form-new title="招标计划" :form-data="formData" :query-params="queryParams" :isExcel="true" @handle-search="handleSearch"
title="招标计划" :total="tableDataTotal" />
:form-data="formData"
:query-params="queryParams"
:isExcel="true"
@handle-search="handleSearch"
:total="tableDataTotal"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="projectName" slot-scope="scope"> <template slot="projectName" slot-scope="scope">
<router-link :to="`/radar/Bidding/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName " v-html="scope.row.projectName"></router-link> <router-link :to="`/radar/Bidding/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName "
v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div> <div v-else v-html="scope.row.projectName || '--'"></div>
</template> </template>
<template slot="province" slot-scope="scope"> <template slot="province" slot-scope="scope">
...@@ -34,9 +19,9 @@ ...@@ -34,9 +19,9 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {bidPlanPage,bidPlanProjectType} from '@/api/detail/party-a/opport' import { bidPlanPage, bidPlanProjectType } from '@/api/detail/party-a/opport';
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton';
export default { export default {
name: 'Biddingplan', name: 'Biddingplan',
props: ['companyId'], props: ['companyId'],
...@@ -46,69 +31,73 @@ export default { ...@@ -46,69 +31,73 @@ export default {
}, },
data() { data() {
return { return {
isSkeleton:true, isSkeleton: true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 3, sort: 3,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'issueTime', order: 'descending'}, defaultSort: { prop: 'issueTime', order: 'descending' },
forData: [ forData: [
{label: '项目名称', prop: 'projectName', minWidth: '400', slot: true}, { label: '项目名称', prop: 'projectName', minWidth: '400', slot: true },
{label: '发布日期', prop: 'issueTime', sortable: 'custom', descending: '3', ascending: '4', width: '120'}, { label: '发布日期', prop: 'issueTime', sortable: 'custom', descending: '3', ascending: '4', width: '120' },
{label: '合同预估金额(万元)', prop: 'planTenderAmount', sortable: 'custom', descending: '1', ascending: '2', width: '170'}, { label: '合同预估金额(万元)', prop: 'planTenderAmount', sortable: 'custom', descending: '1', ascending: '2', width: '170' },
{label: '资金来源', prop: 'projecetCapitalSource', minWidth: '100'}, { label: '资金来源', prop: 'projecetCapitalSource', minWidth: '100' },
{label: '项目地区', prop: 'province', minWidth: '110', slot: true}, { label: '项目地区', prop: 'province', minWidth: '110', slot: true },
{label: '项目类型', prop: 'buildingProjectType', minWidth: '100'}, { label: '项目类型', prop: 'buildingProjectType', minWidth: '100' },
{label: '标的物类型', prop: 'objectType', minWidth: '100'}, { label: '标的物类型', prop: 'objectType', minWidth: '100' },
{label: '预计招标日期', prop: 'planTenderDateStart', sortable: 'custom', descending: '15', ascending: '16', minWidth: '110'} { label: '预计招标日期', prop: 'planTenderDateStart', sortable: 'custom', descending: '15', ascending: '16', minWidth: '110' }
], ],
formData: [ formData: [
{ type: 4, fieldName: 'buildingProjectType', value: '', placeholder: '项目类型', options: []}, { type: 4, fieldName: 'buildingProjectType', value: '', placeholder: '项目类型', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220} { type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220, uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0 tableDataTotal: 0
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.handleOption() this.handleOption();
}, },
methods: { methods: {
async handleOption(){ async handleOption() {
let res = await bidPlanProjectType({cid: this.companyId}) let res = await bidPlanProjectType({ cid: this.companyId });
if(res.code==200){ if (res.code == 200) {
let buildingProjectType = res.data.map(item => { let buildingProjectType = res.data.map(item => {
let it = {name:item.buildingProjectType+'('+item.count+')',value:item.buildingProjectType} let it = { name: item.buildingProjectType + '(' + item.count + ')', value: item.buildingProjectType };
return it return it;
}) });
this.setFormData('buildingProjectType', buildingProjectType) this.setFormData('buildingProjectType', buildingProjectType);
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await bidPlanPage(param) let res = await bidPlanPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.bidding-plan {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container special-bond">
<head-form <head-form-new title="专项债项目" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="专项债项目" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="projectName" slot-scope="scope"> <template slot="projectName" slot-scope="scope">
<router-link :to="`/radar/debtProject/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName " v-html="scope.row.projectName"></router-link> <router-link :to="`/radar/debtProject/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName "
v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div> <div v-else v-html="scope.row.projectName || '--'"></div>
</template> </template>
</tables> </tables>
...@@ -31,9 +16,9 @@ ...@@ -31,9 +16,9 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {specialDebtProjectPage} from '@/api/detail/party-a/opport' import { specialDebtProjectPage } from '@/api/detail/party-a/opport';
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton';
export default { export default {
name: 'Bond', name: 'Bond',
props: ['companyId'], props: ['companyId'],
...@@ -43,53 +28,57 @@ export default { ...@@ -43,53 +28,57 @@ export default {
}, },
data() { data() {
return { return {
isSkeleton:true, isSkeleton: true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 1, sort: 1,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'projectTotalInvestment', order: 'descending'}, defaultSort: { prop: 'projectTotalInvestment', order: 'descending' },
forData: [ forData: [
{label: '项目名称', prop: 'projectName', minWidth: '300', slot: true}, { label: '项目名称', prop: 'projectName', minWidth: '300', slot: true },
{label: '项目总投资(万元)', prop: 'projectTotalInvestment', sortable: 'custom', descending: '1', ascending: '2', width: '160'}, { label: '项目总投资(万元)', prop: 'projectTotalInvestment', sortable: 'custom', descending: '1', ascending: '2', width: '160' },
{label: '项目资本金(万元)', prop: 'projectCapital', sortable: 'custom', descending: '17', ascending: '18', width: '160'}, { label: '项目资本金(万元)', prop: 'projectCapital', sortable: 'custom', descending: '17', ascending: '18', width: '160' },
{label: '专项债用作资本金(万元)', prop: 'specialBondCapital', sortable: 'custom', descending: '19', ascending: '20', width: '200'} { label: '专项债用作资本金(万元)', prop: 'specialBondCapital', sortable: 'custom', descending: '19', ascending: '20', width: '200' }
], ],
formData: [ formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220}, { type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220, uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0 tableDataTotal: 0
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await specialDebtProjectPage(param) let res = await specialDebtProjectPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.special-bond {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container land-transaction">
<head-form <head-form-new title="土地交易" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="土地交易" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="projectName" slot-scope="scope"> <template slot="projectName" slot-scope="scope">
<router-link :to="`/radar/Land/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName " v-html="scope.row.projectName"></router-link> <router-link :to="`/radar/Land/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName "
v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div> <div v-else v-html="scope.row.projectName || '--'"></div>
</template> </template>
</tables> </tables>
...@@ -31,9 +16,9 @@ ...@@ -31,9 +16,9 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {landUse, landTransactionPage} from '@/api/detail/party-a/opport' import { landUse, landTransactionPage } from '@/api/detail/party-a/opport';
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton';
export default { export default {
name: 'Landtransaction', name: 'Landtransaction',
props: ['companyId'], props: ['companyId'],
...@@ -43,75 +28,79 @@ export default { ...@@ -43,75 +28,79 @@ export default {
}, },
data() { data() {
return { return {
isSkeleton:true, isSkeleton: true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 3, sort: 3,
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'contractSignTime', order: 'descending'}, defaultSort: { prop: 'contractSignTime', order: 'descending' },
forData: [ forData: [
{label: '项目名称', prop: 'projectName', minWidth: '300', slot: true}, { label: '项目名称', prop: 'projectName', minWidth: '300', slot: true },
{label: '土地用途', prop: 'landUse', width: '130'}, { label: '土地用途', prop: 'landUse', width: '130' },
{label: '行业分类', prop: 'industry', width: '100'}, { label: '行业分类', prop: 'industry', width: '100' },
{label: '供地方式', prop: 'supplyLandWay', width: '100'}, { label: '供地方式', prop: 'supplyLandWay', width: '100' },
{label: '土地坐落', prop: 'landAddr', minWidth: '130'}, { label: '土地坐落', prop: 'landAddr', minWidth: '130' },
{label: '成交金额(万元)', prop: 'transactionPrice', sortable: 'custom', descending: '1', ascending: '2', width: '140'}, { label: '成交金额(万元)', prop: 'transactionPrice', sortable: 'custom', descending: '1', ascending: '2', width: '140' },
{label: '总面积(㎡)', prop: 'acreage', sortable: 'custom', descending: '11', ascending: '12', width: '130'}, { label: '总面积(㎡)', prop: 'acreage', sortable: 'custom', descending: '11', ascending: '12', width: '130' },
{label: '批准单位', prop: 'authority', width: '130'}, { label: '批准单位', prop: 'authority', width: '130' },
{label: '签订日期', prop: 'contractSignTime', sortable: 'custom', descending: '3', ascending: '4', width: '130'} { label: '签订日期', prop: 'contractSignTime', sortable: 'custom', descending: '3', ascending: '4', width: '130' }
], ],
formData: [ formData: [
{ type: 4, fieldName: 'landUse', value: '', placeholder: '土地用途', options: []}, { type: 4, fieldName: 'landUse', value: '', placeholder: '土地用途', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220} { type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220, uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0 tableDataTotal: 0
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleOption() this.handleOption();
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleOption(){ async handleOption() {
let res = await landUse({cid: this.companyId}) let res = await landUse({ cid: this.companyId });
if(res.code==200){ if (res.code == 200) {
let use = res.data.map(item => { let use = res.data.map(item => {
let it = {name:item.landUse+'('+item.count+')',value:item.landUse} let it = { name: item.landUse + '(' + item.count + ')', value: item.landUse };
return it return it;
}) });
this.setFormData('landUse', use) this.setFormData('landUse', use);
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await landTransactionPage(param) let res = await landTransactionPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
if(this.tableData.length>0){ if (this.tableData.length > 0) {
this.tableData.map(item=>{ this.tableData.map(item => {
item.transactionPrice==0&&(item.transactionPrice = '--') item.transactionPrice == 0 && (item.transactionPrice = '--');
}) });
} }
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.land-transaction {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="detail-container"> <div class="detail-container proposed-project">
<head-form <head-form-new title="拟建项目" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="拟建项目" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables v-else :indexFixed="true" :defaultSort="defaultSort" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
v-else :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="projectName" slot-scope="scope"> <template slot="projectName" slot-scope="scope">
<router-link :to="`/radar/Establishment/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName " v-html="scope.row.projectName"></router-link> <router-link :to="`/radar/Establishment/details/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectName "
v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div> <div v-else v-html="scope.row.projectName || '--'"></div>
</template> </template>
<template slot="isProjcet" slot-scope="scope"> <template slot="isProjcet" slot-scope="scope">
...@@ -34,9 +19,9 @@ ...@@ -34,9 +19,9 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import { approvalProjectPage } from '@/api/detail/party-a/opport' import { approvalProjectPage } from '@/api/detail/party-a/opport';
import skeleton from '@/views/project/projectList/component/skeleton' import skeleton from '@/views/project/projectList/component/skeleton';
export default { export default {
name: 'Proposed', name: 'Proposed',
props: ['companyId'], props: ['companyId'],
...@@ -52,51 +37,55 @@ export default { ...@@ -52,51 +37,55 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
defaultSort: {prop: 'planStartTime', order: 'descending'}, defaultSort: { prop: 'planStartTime', order: 'descending' },
forData: [ forData: [
{label: '项目名称', prop: 'projectName', minWidth: '300', slot: true}, { label: '项目名称', prop: 'projectName', minWidth: '300', slot: true },
// {label: '成交金额(万元)', prop: 'money', sortable: 'custom', descending: '1', ascending: '2', width: '150'}, // {label: '成交金额(万元)', prop: 'money', sortable: 'custom', descending: '1', ascending: '2', width: '150'},
{label: '项目类别', prop: 'projectCategories', width: '100'}, { label: '项目类别', prop: 'projectCategories', width: '100' },
{label: '计划开工日期', prop: 'planStartTime', sortable: 'custom', descending: '3', ascending: '4', width: '130'}, { label: '计划开工日期', prop: 'planStartTime', sortable: 'custom', descending: '3', ascending: '4', width: '130' },
{label: '计划完工日期', prop: 'planEndTime', sortable: 'custom', descending: '13', ascending: '14', width: '130'}, { label: '计划完工日期', prop: 'planEndTime', sortable: 'custom', descending: '13', ascending: '14', width: '130' },
{label: '审批结果', prop: 'examineStatus', width: '100'}, { label: '审批结果', prop: 'examineStatus', width: '100' },
{label: '是否为民间推介项目', prop: 'isProjcet', width: '150', slot: true} { label: '是否为民间推介项目', prop: 'isProjcet', width: '150', slot: true }
], ],
formData: [ formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220}, { type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220, uid: this.getUid() },
{ type: 1, fieldName: 'isProject', value: '', placeholder: '是否为民间推介项目', options: [{name:'不限',value:null},{name:'是',value:'1'},{name:'否',value:'0'}],width: 180}, { type: 1, fieldName: 'isProject', value: '', placeholder: '是否为民间推介项目', options: [{ name: '不限', value: null }, { name: '是', value: '1' }, { name: '否', value: '0' }], width: 180, uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true, isSkeleton: true,
} };
}, },
computed: { computed: {
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await approvalProjectPage(param) let res = await approvalProjectPage(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
} }
.proposed-project {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="app-container detail-container branch-office">
<head-form-new title="分支机构" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="app-container detail-container" v-else> <tables v-if="!isSkeleton" :indexFixed="true" :tableLoading="tableLoading" :tableData="tableData" :forData="forData"
<head-form :tableDataTotal="tableDataTotal" :queryParams="queryParams" @handle-current-change="handleCurrentChange">
title="分支机构"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<tables
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="name" slot-scope="scope"> <template slot="name" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.id)}`:`/company/${encodeStr(scope.row.id)}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.name " v-html="scope.row.name"></router-link> <router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.id)}`:`/company/${encodeStr(scope.row.id)}`" tag="a" class="a-link"
v-if="scope.row.id&&scope.row.name " v-html="scope.row.name"></router-link>
<div v-else v-html="scope.row.name || '--'"></div> <div v-else v-html="scope.row.name || '--'"></div>
<div class="tags" v-if="scope.row.status || scope.row.biddingAnnouncement"> <div class="tags" v-if="scope.row.status || scope.row.biddingAnnouncement">
<span class="tag style1" v-if="scope.row.status">{{scope.row.status}}</span> <span class="tag style1" v-if="scope.row.status">{{scope.row.status}}</span>
...@@ -32,8 +19,8 @@ ...@@ -32,8 +19,8 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {affiliates} from '@/api/detail/party-a/overview' import { affiliates } from '@/api/detail/party-a/overview';
export default { export default {
name: 'Branch', name: 'Branch',
props: ['companyId'], props: ['companyId'],
...@@ -46,68 +33,73 @@ export default { ...@@ -46,68 +33,73 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '被投资企业名称', prop: 'name', slot: true}, { label: '被投资企业名称', prop: 'name', slot: true },
{label: '负责人', prop: 'operName'}, { label: '负责人', prop: 'operName' },
{label: '成立日期', prop: 'startDate'} { label: '成立日期', prop: 'startDate' }
], ],
formData: [ formData: [
{ type: 1, fieldName: 'hasBid', value: '', placeholder: '招标公告', options: [ {
{name:'不限',value:'noLimit'}, type: 1, fieldName: 'hasBid', value: '', placeholder: '招标公告', options: [
{name:'有招标公告',value:1}, { name: '不限', value: 'noLimit' },
{name:'无招标公告',value:0} { name: '有招标公告', value: 1 },
{ name: '无招标公告', value: 0 }
] ]
} }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true; this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
if(param.hasBid=='noLimit'){ if (param.hasBid == 'noLimit') {
delete param.hasBid delete param.hasBid;
} }
let res = await affiliates(param) let res = await affiliates(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
margin: 0; margin: 0;
padding: 16px; padding: 16px;
background: #FFFFFF; background: #ffffff;
border-radius: 4px; border-radius: 4px;
.tags{ .tags {
.tag{ .tag {
display: inline-block; display: inline-block;
border-radius: 2px; border-radius: 2px;
padding: 1px 7px; padding: 1px 7px;
margin: 4px 8px 0 0; margin: 4px 8px 0 0;
&.style1{ &.style1 {
background: #E4F3FD; background: #e4f3fd;
color: #41A1FD; color: #41a1fd;
} }
} }
} }
::v-deep .el-input__inner{ ::v-deep .el-input__inner {
padding-left: 10px; padding-left: 10px;
padding-right: 22px; padding-right: 22px;
} }
} }
.branch-office {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="app-container detail-container outward-investment">
<head-form-new title="对外投资" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="app-container detail-container" v-else> <tables :indexFixed="true" :tableLoading="tableLoading" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
<head-form :queryParams="queryParams" @handle-current-change="handleCurrentChange" v-if="!isSkeleton">
title="对外投资"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<tables
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="investName" slot-scope="scope"> <template slot="investName" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.id)}`:`/company/${encodeStr(scope.row.id)}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.investName " v-html="scope.row.investName"></router-link> <router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.id)}`:`/company/${encodeStr(scope.row.id)}`" tag="a" class="a-link"
v-if="scope.row.id&&scope.row.investName " v-html="scope.row.investName"></router-link>
<div v-else v-html="scope.row.investName || '--'"></div> <div v-else v-html="scope.row.investName || '--'"></div>
<div class="tags" v-if="scope.row.businessStatus || scope.row.biddingAnnouncement"> <div class="tags" v-if="scope.row.businessStatus || scope.row.biddingAnnouncement">
<span class="tag" :class="labelArr.includes(scope.row.businessStatus)?'style2':'style1'" v-if="scope.row.businessStatus">{{scope.row.businessStatus}}</span> <span class="tag" :class="labelArr.includes(scope.row.businessStatus)?'style2':'style1'"
v-if="scope.row.businessStatus">{{scope.row.businessStatus}}</span>
<span class="tag style1" v-if="scope.row.biddingCount">招标数{{scope.row.biddingCount}}</span> <span class="tag style1" v-if="scope.row.biddingCount">招标数{{scope.row.biddingCount}}</span>
</div> </div>
</template> </template>
...@@ -44,8 +32,8 @@ ...@@ -44,8 +32,8 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import {investment} from '@/api/detail/party-a/overview' import { investment } from '@/api/detail/party-a/overview';
export default { export default {
name: 'Overseas', name: 'Overseas',
props: ['companyId'], props: ['companyId'],
...@@ -58,106 +46,113 @@ export default { ...@@ -58,106 +46,113 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '被投资企业名称', prop: 'investName', minWidth: '180', slot: true}, { label: '被投资企业名称', prop: 'investName', minWidth: '180', slot: true },
{label: '法定代表人', prop: 'investOperName'}, { label: '法定代表人', prop: 'investOperName' },
{label: '注册资本', prop: 'investRegistCapi'}, { label: '注册资本', prop: 'investRegistCapi' },
{label: '成立日期', prop: 'investStartDate'}, { label: '成立日期', prop: 'investStartDate' },
{label: '股权占比', prop: 'stockPercentage', slot: true, slotHeader: true, slotName: 'proportion'}, { label: '股权占比', prop: 'stockPercentage', slot: true, slotHeader: true, slotName: 'proportion' },
{label: '认缴出资额(万元)', prop: 'shouldCapi'} { label: '认缴出资额(万元)', prop: 'shouldCapi' }
], ],
formData: [ formData: [
{ type: 1, fieldName: 'hasBid', value: '', placeholder: '招标公告', options: [ {
{name:'不限',value:'noLimit'}, type: 1, fieldName: 'hasBid', value: '', placeholder: '招标公告', options: [
{name:'有招标公告',value:1}, { name: '不限', value: 'noLimit' },
{name:'无招标公告',value:0} { name: '有招标公告', value: 1 },
{ name: '无招标公告', value: 0 }
], ],
width: 130 width: 130,
uid: this.getUid()
}, },
{ type: 1, fieldName: 'proportion', value: '', placeholder: '股权占比', options: [ {
{name:'不限',value:'noLimit'}, type: 1, fieldName: 'proportion', value: '', placeholder: '股权占比', options: [
{name:'100%',value:'1~1'}, { name: '不限', value: 'noLimit' },
{name:'66.66%以上',value:'0.6666~1'}, { name: '100%', value: '1~1' },
{name:'50%以上',value:'0.5~1'}, { name: '66.66%以上', value: '0.6666~1' },
{name:'33.33%以上',value:'0.3333~1'}, { name: '50%以上', value: '0.5~1' },
{name:'25%以上',value:'0.25~1'}, { name: '33.33%以上', value: '0.3333~1' },
{name:'不到5%',value:'0~0.05'} { name: '25%以上', value: '0.25~1' },
{ name: '不到5%', value: '0~0.05' }
], ],
width: 130 width: 130
}, },
{ type: 3, fieldName: 'keyword', value: '', placeholder: '输入企业名称查询'}, { type: 3, fieldName: 'keyword', value: '', placeholder: '输入企业名称查询' },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
labelArr:['失信联合惩戒企业','严重行政处罚','司法纠纷','注销', '注销企业'], labelArr: ['失信联合惩戒企业', '严重行政处罚', '司法纠纷', '注销', '注销企业'],
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true; this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true;
let param = params?params:this.queryParams let param = params ? params : this.queryParams;
let res = await investment(param) let res = await investment(param);
this.tableLoading = false this.tableLoading = false;
if(res.code==200){ if (res.code == 200) {
this.isSkeleton = false; this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows;
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
}, },
handleSearch(){ handleSearch() {
let params = this.formParams() let params = this.formParams();
if(params.proportion){ if (params.proportion) {
if(params.proportion!='noLimit'){ if (params.proportion != 'noLimit') {
params.stockPercentageMin = parseFloat(params.proportion.split('~')[0]) params.stockPercentageMin = parseFloat(params.proportion.split('~')[0]);
params.stockPercentageMax = parseFloat(params.proportion.split('~')[1]) params.stockPercentageMax = parseFloat(params.proportion.split('~')[1]);
} }
delete params.proportion delete params.proportion;
} }
if(params.hasBid=='noLimit'){ if (params.hasBid == 'noLimit') {
delete params.hasBid delete params.hasBid;
} }
params.pageNum = 1 params.pageNum = 1;
this.queryParams.pageNum = 1 this.queryParams.pageNum = 1;
this.handleQuery(params) this.handleQuery(params);
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ .detail-container {
margin: 0; margin: 0;
padding: 16px; padding: 16px;
background: #FFFFFF; background: #ffffff;
border-radius: 4px; border-radius: 4px;
.tab-header{ .tab-header {
img{ img {
margin-bottom: 2px; margin-bottom: 2px;
width: 14px; width: 14px;
height: 14px; height: 14px;
cursor: pointer; cursor: pointer;
} }
} }
.tags{ .tags {
.tag{ .tag {
display: inline-block; display: inline-block;
border-radius: 2px; border-radius: 2px;
padding: 1px 7px; padding: 1px 7px;
margin: 4px 8px 0 0; margin: 4px 8px 0 0;
&.style1{ &.style1 {
background: #E4F3FD; background: #e4f3fd;
color: #41A1FD; color: #41a1fd;
} }
&.style2{ &.style2 {
background: #FFF1F1; background: #fff1f1;
color: #FF3C3C; color: #ff3c3c;
} }
} }
} }
} }
.outward-investment {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel operating-anomaly">
<head-form <head-form-new title="经营异常" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="经营异常" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal" :queryParams="queryParams"
v-if="!isSkeleton" @handle-current-change="handleCurrentChange" />
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
</div> </div>
</template> </template>
...@@ -25,9 +13,9 @@ ...@@ -25,9 +13,9 @@
import { import {
abnormalPage, abnormalPage,
abnormalYears abnormalYears
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'BusinessAnomaly', name: 'BusinessAnomaly',
mixins: [mixin], mixins: [mixin],
...@@ -43,63 +31,79 @@ export default { ...@@ -43,63 +31,79 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '列入原因', prop: 'inReason'}, { label: '列入原因', prop: 'inReason', width: "508" },
{label: '列入日期', prop: 'inDate', width: '95'}, { label: '列入日期', prop: 'inDate', width: '95' },
{label: '做出决定机关(移入)', prop: 'department', width: '264'}, { label: '做出决定机关(移入)', prop: 'department', width: '264' },
{label: '移出经营异常名录原因', prop: 'outReason', width: '320'}, { label: '移出经营异常名录原因', prop: 'outReason', width: '320' },
{label: '移出日期', prop: 'outDate', width: '95'}, { label: '移出日期', prop: 'outDate', width: '95' },
{label: '做出决定机关(移出)', prop: 'outDepartment', width: '264'} { label: '做出决定机关(移出)', prop: 'outDepartment', width: '264' }
], ],
formData: [ formData: [
{ type: 4, fieldName: 'years', value: '', placeholder: '列入时间', options: []} { type: 4, fieldName: 'years', value: '', placeholder: '列入时间', options: [], uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.years() this.years();
}, },
computed: { computed: {
}, },
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
abnormalPage(data).then(res => { abnormalPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows;
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
}, },
years(){ years() {
abnormalYears({cid: this.queryParams.cid}).then(res => { abnormalYears({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (let i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i].year + '(' + data[i].count + ')', name: data[i].year + '(' + data[i].count + ')',
value: data[i].year, value: data[i].year,
}) });
} }
} }
}) });
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
} }
.operating-anomaly {
@import "@/assets/styles/search-common.scss";
::v-deep .head-form-new {
.query-box {
.el-select {
width: auto;
.el-select__tags {
flex-wrap: nowrap;
}
}
}
}
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel court-announcement">
<head-form <head-form-new title="法院公告" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="法院公告" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal" :queryParams="queryParams"
v-if="!isSkeleton" @handle-current-change="handleCurrentChange" />
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
</div> </div>
</template> </template>
...@@ -27,9 +15,9 @@ import { ...@@ -27,9 +15,9 @@ import {
noticesType, noticesType,
noticesRole, noticesRole,
noticesCaseReason noticesCaseReason
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'CourtNotice', name: 'CourtNotice',
mixins: [mixin], mixins: [mixin],
...@@ -45,97 +33,101 @@ export default { ...@@ -45,97 +33,101 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '案由', prop: 'caseReason'}, { label: '案由', prop: 'caseReason' },
{label: '公告时间', prop: 'date', width: '95'}, { label: '公告时间', prop: 'date', width: '95' },
{label: '当事人', prop: 'people', width: '240'}, { label: '当事人', prop: 'people', width: '240' },
{label: '公告类型', prop: 'type', width: '210'}, { label: '公告类型', prop: 'type', width: '210' },
{label: '公告法院', prop: 'court', width: '280'} { label: '公告法院', prop: 'court', width: '280' }
], ],
formData: [ formData: [
{ type: 1, fieldName: 'type', value: '', placeholder: '公告类型', options: []}, { type: 1, fieldName: 'type', value: '', placeholder: '公告类型', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'caseReason', value: '', placeholder: '案由', options: []}, { type: 1, fieldName: 'caseReason', value: '', placeholder: '案由', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'role', value: '', placeholder: '身份', options: []}, { type: 1, fieldName: 'role', value: '', placeholder: '身份', options: [], uid: this.getUid() },
{ type: 2, fieldName: 'time', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo'} { type: 2, fieldName: 'time', value: '', placeholder: '', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.noticesTypes() this.noticesTypes();
this.noticesRoles() this.noticesRoles();
this.noticesCaseReasons() this.noticesCaseReasons();
}, },
computed: { computed: {
}, },
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
noticesPage(data).then(res => { noticesPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows;
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
}, },
// 公告 // 公告
noticesTypes(){ noticesTypes() {
noticesType({cid: this.queryParams.cid}).then(res => { noticesType({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i].type + '(' + data[i].count + ')', name: data[i].type + '(' + data[i].count + ')',
value: data[i].type, value: data[i].type,
}) });
} }
} }
}) });
}, },
// 身份 // 身份
noticesRoles(){ noticesRoles() {
noticesRole({cid: this.queryParams.cid}).then(res => { noticesRole({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[2].options.push({ this.formData[2].options.push({
name: data[i].role + '(' + data[i].count + ')', name: data[i].role + '(' + data[i].count + ')',
value: data[i].role, value: data[i].role,
}) });
} }
} }
}) });
}, },
// 案由 // 案由
noticesCaseReasons(){ noticesCaseReasons() {
noticesCaseReason({cid: this.queryParams.cid}).then(res => { noticesCaseReason({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[1].options.push({ this.formData[1].options.push({
name: data[i].caseReason + '(' + data[i].count + ')', name: data[i].caseReason + '(' + data[i].count + ')',
value: data[i].caseReason, value: data[i].caseReason,
}) });
} }
} }
}) });
}, },
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
} }
.court-announcement {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel persons-breach">
<head-form <head-form-new title="失信被执行人" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="false"
title="失信被执行人" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="false"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables v-if="!isSkeleton" :index-fixed="true" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
v-if="!isSkeleton" :queryParams="queryParams" @handle-current-change="handleCurrentChange" />
:index-fixed="true"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
</div> </div>
</template> </template>
...@@ -25,9 +12,9 @@ ...@@ -25,9 +12,9 @@
<script> <script>
import { import {
executedPage executedPage
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'Dishonesty', name: 'Dishonesty',
mixins: [mixin], mixins: [mixin],
...@@ -43,49 +30,53 @@ export default { ...@@ -43,49 +30,53 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '失信被执行人行为具体情形', prop: 'executionDesc', fixed: true}, { label: '失信被执行人行为具体情形', prop: 'executionDesc', fixed: true, width: "508" },
{label: '立案日期', prop: 'date', width: '95'}, { label: '立案日期', prop: 'date', width: '95' },
{label: '履行情况', prop: 'executionStatus', width: '120'}, { label: '履行情况', prop: 'executionStatus', width: '120' },
{label: '立案文号', prop: 'caseNumber', width: '210'}, { label: '立案文号', prop: 'caseNumber', width: '210' },
{label: '执行依据文号', prop: 'docNumber', width: '360'}, { label: '执行依据文号', prop: 'docNumber', width: '360' },
{label: '执行法院', prop: 'court', width: '280'} { label: '执行法院', prop: 'court', width: '280' }
], ],
formData: [ formData: [
{ type: 2, fieldName: 'time', value: '', placeholder: '执行时间',startTime: 'dateFrom',endTime: 'dateTo', options: []} { type: 2, fieldName: 'time', value: '', placeholder: '执行时间', startTime: 'dateFrom', endTime: 'dateTo', options: [], uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
computed: { computed: {
}, },
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
executedPage(data).then(res => { executedPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows;
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
} }
.persons-breach {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel person-subject">
<head-form <head-form-new title="被执行人" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="false"
title="被执行人" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="false"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal" :queryParams="queryParams"
v-if="!isSkeleton" @handle-current-change="handleCurrentChange" />
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
</div> </div>
</template> </template>
...@@ -24,9 +12,9 @@ ...@@ -24,9 +12,9 @@
<script> <script>
import { import {
executedPersonsPage executedPersonsPage
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'IfThePerson', name: 'IfThePerson',
mixins: [mixin], mixins: [mixin],
...@@ -42,47 +30,51 @@ export default { ...@@ -42,47 +30,51 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '执行标的(元)', prop: 'amount', width: '140'}, { label: '执行标的(元)', prop: 'amount', width: '140' },
{label: '案号', prop: 'caseNumber', width: '320'}, { label: '案号', prop: 'caseNumber', width: '320' },
{label: '执行法院', prop: 'court'}, { label: '执行法院', prop: 'court' },
{label: '立案日期', prop: 'caseDate', width: '95'} { label: '立案日期', prop: 'caseDate', width: '95' }
], ],
formData: [ formData: [
{ type: 2, fieldName: 'time', value: '', placeholder: '执行时间',startTime: 'dateFrom',endTime: 'dateTo', options: []} { type: 2, fieldName: 'time', value: '', placeholder: '执行时间', startTime: 'dateFrom', endTime: 'dateTo', options: [], uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
}, },
computed: { computed: {
}, },
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
executedPersonsPage(data).then(res => { executedPersonsPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows;
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
} }
.person-subject {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel judicial-document">
<head-form <head-form-new title="裁判文书" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="false"
title="裁判文书" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="false"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal" :queryParams="queryParams"
v-if="!isSkeleton" @handle-current-change="handleCurrentChange">
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="relatedCompanies" slot-scope="scope"> <template slot="relatedCompanies" slot-scope="scope">
<div v-for="item in scope.row.relatedCompanies"> <div v-for="item in scope.row.relatedCompanies">
<span>{{ item.clean_role }}</span>{{ item.name }} <span>{{ item.clean_role }}</span>{{ item.name }}
...@@ -24,7 +12,6 @@ ...@@ -24,7 +12,6 @@
</template> </template>
</tables> </tables>
</div> </div>
</template> </template>
...@@ -33,9 +20,9 @@ import { ...@@ -33,9 +20,9 @@ import {
lawsuitsPage, lawsuitsPage,
lawsuitsCauseAction, lawsuitsCauseAction,
lawsuitsRole lawsuitsRole
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'Judgment', name: 'Judgment',
mixins: [mixin], mixins: [mixin],
...@@ -51,84 +38,88 @@ export default { ...@@ -51,84 +38,88 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '案由', prop: 'causeAction'}, { label: '案由', prop: 'causeAction' },
{label: '执行案号', prop: 'causeNo', width: '210'}, { label: '执行案号', prop: 'causeNo', width: '210' },
{label: '身份', prop: 'role', width: '120'}, { label: '身份', prop: 'role', width: '120' },
{label: '当事人', prop: 'relatedCompanies', width: '240', slot: true}, { label: '当事人', prop: 'relatedCompanies', width: '240', slot: true },
{label: '案件金额(元)', prop: 'subAmount', width: '140'}, { label: '案件金额(元)', prop: 'subAmount', width: '140', align: "right" },
{label: '判决结果', prop: 'judgeresult', width: '508'}, { label: '判决结果', prop: 'judgeresult', width: '508' },
{label: '判决日期', prop: 'date', width: '95'}, { label: '判决日期', prop: 'date', width: '95' },
], ],
formData: [ formData: [
{ type: 1, fieldName: 'causeAction', value: '', placeholder: '案由', options: []}, { type: 1, fieldName: 'causeAction', value: '', placeholder: '案由', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'role', value: '', placeholder: '身份', options: []}, { type: 1, fieldName: 'role', value: '', placeholder: '身份', options: [], uid: this.getUid() },
{ type: 2, fieldName: 'time', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo'}, { type: 2, fieldName: 'time', value: '', placeholder: '', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入执行案号'} { type: 3, fieldName: 'keys', value: '', placeholder: '请输入执行案号', uid: this.getUid() }
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.lawsuitsCauseActions() this.lawsuitsCauseActions();
this.lawsuitsRoles() this.lawsuitsRoles();
}, },
computed: { computed: {
}, },
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
lawsuitsPage(data).then(res => { lawsuitsPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows;
for (var i=0;i<this.tableData.length;i++){ for (var i = 0; i < this.tableData.length; i++) {
this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies) this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies);
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
}, },
lawsuitsCauseActions(){ lawsuitsCauseActions() {
lawsuitsCauseAction({cid: this.queryParams.cid}).then(res => { lawsuitsCauseAction({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i].causeAction + '(' + data[i].num + ')', name: data[i].causeAction + '(' + data[i].num + ')',
value: data[i].causeAction, value: data[i].causeAction,
}) });
} }
} }
}) });
}, },
lawsuitsRoles(){ lawsuitsRoles() {
lawsuitsRole({cid: this.queryParams.cid}).then(res => { lawsuitsRole({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[1].options.push({ this.formData[1].options.push({
name: data[i].role + '(' + data[i].num + ')', name: data[i].role + '(' + data[i].num + ')',
value: data[i].role, value: data[i].role,
}) });
} }
} }
}) });
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
} }
.judicial-document {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel hearing-notice">
<head-form <head-form-new title="开庭公告" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="false"
title="开庭公告" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="false"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables :index-fixed="true" v-if="!isSkeleton" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:index-fixed="true" :queryParams="queryParams" @handle-current-change="handleCurrentChange">
v-if="!isSkeleton"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="relatedCompanies" slot-scope="scope"> <template slot="relatedCompanies" slot-scope="scope">
<div v-for="item in scope.row.relatedCompanies"> <div v-for="item in scope.row.relatedCompanies">
<span>{{ item.role }}</span>{{ item.name }} <span>{{ item.role }}</span>{{ item.name }}
...@@ -33,9 +20,9 @@ import { ...@@ -33,9 +20,9 @@ import {
kaitingPage, kaitingPage,
kaitingCauseAction, kaitingCauseAction,
kaitingPureRole kaitingPureRole
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation';
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'OpenacourtsessionNotice', name: 'OpenacourtsessionNotice',
mixins: [mixin], mixins: [mixin],
...@@ -51,91 +38,95 @@ export default { ...@@ -51,91 +38,95 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '案由', prop: 'causeAction', fixed: true}, { label: '案由', prop: 'causeAction', fixed: true, width: "240" },
{label: '开庭日期', prop: 'hearingDate', width: '95'}, { label: '开庭日期', prop: 'hearingDate', width: '95' },
{label: '当事人', prop: 'relatedCompanies', width: '428', slot: true}, { label: '当事人', prop: 'relatedCompanies', width: '428', slot: true },
{label: '身份', prop: 'pureRole', width: '120'}, { label: '身份', prop: 'pureRole', width: '120' },
{label: '公告内容', prop: 'content', width: '508'}, { label: '公告内容', prop: 'content', width: '508' },
{label: '案号', prop: 'caseNo', width: '210'}, { label: '案号', prop: 'caseNo', width: '210' },
{label: '法院', prop: 'court', width: '280'}, { label: '法院', prop: 'court', width: '280' },
{label: '法庭', prop: 'tribunal', width: '180'}, { label: '法庭', prop: 'tribunal', width: '180' },
{label: '承办部门', prop: 'department', width: '280'}, { label: '承办部门', prop: 'department', width: '280' },
{label: '审判长/主判人', prop: 'judge', width: '110'} { label: '审判长/主判人', prop: 'judge', width: '110' }
], ],
formData: [ formData: [
{ type: 1, fieldName: 'causeAction', value: '', placeholder: '案由', options: []}, { type: 1, fieldName: 'causeAction', value: '', placeholder: '案由', options: [], uid: this.getUid() },
{ type: 1, fieldName: 'pureRole', value: '', placeholder: '身份', options: []}, { type: 1, fieldName: 'pureRole', value: '', placeholder: '身份', options: [], uid: this.getUid() },
{ type: 2, fieldName: 'time', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo'}, { type: 2, fieldName: 'time', value: '', placeholder: '', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() },
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入案号'}, { type: 3, fieldName: 'keys', value: '', placeholder: '请输入案号', uid: this.getUid() },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.kaitingCauseActions() this.kaitingCauseActions();
this.kaitingPureRoles() this.kaitingPureRoles();
}, },
computed: { computed: {
}, },
methods: { methods: {
toDetail(){ toDetail() {
let Id = '111' let Id = '111';
this.$router.push({ path: '/project/projectList/detail', query: Id }); this.$router.push({ path: '/project/projectList/detail', query: Id });
}, },
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
kaitingPage(data).then(res => { kaitingPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows;
for (var i=0;i<this.tableData.length;i++){ for (var i = 0; i < this.tableData.length; i++) {
this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies) this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies);
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
}, },
kaitingCauseActions(){ kaitingCauseActions() {
kaitingCauseAction({cid: this.queryParams.cid}).then(res => { kaitingCauseAction({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i].causeAction + '(' + data[i].count + ')', name: data[i].causeAction + '(' + data[i].count + ')',
value: data[i].causeAction, value: data[i].causeAction,
}) });
} }
} }
}) });
}, },
kaitingPureRoles(){ kaitingPureRoles() {
kaitingPureRole({cid: this.queryParams.cid}).then(res => { kaitingPureRole({ cid: this.queryParams.cid }).then(res => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[1].options.push({ this.formData[1].options.push({
name: data[i].pureRole + '(' + data[i].count + ')', name: data[i].pureRole + '(' + data[i].count + ')',
value: data[i].pureRole, value: data[i].pureRole,
}) });
} }
} }
}) });
}, },
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
} }
.hearing-notice {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
<template> <template>
<div class="corePersonnel"> <div class="corePersonnel administrative-punishment">
<head-form <head-form-new title="行政处罚" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
title="行政处罚" @handle-search="handleSearch" />
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables v-if="!isSkeleton" :indexFixed="true" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
v-if="!isSkeleton" :queryParams="queryParams" @handle-current-change="handleCurrentChange">
:indexFixed="true"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="punishReason" slot-scope="scope"> <template slot="punishReason" slot-scope="scope">
<span :class="[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.punishReason)?'cell-span':'']" :style="{'-webkit-line-clamp': 5}"> <span :class="[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.punishReason)?'cell-span':'']"
:style="{'-webkit-line-clamp': 5}">
<div v-html="scope.row.punishReason"></div> <div v-html="scope.row.punishReason"></div>
<span v-if="isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.punishReason)" @click="changeShowAll(scope.index, 0)" class="more">...<span>更多</span></span> <span v-if="isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.punishReason)" @click="changeShowAll(scope.index, 0)"
class="more">...<span>更多</span></span>
</span> </span>
</template> </template>
</tables> </tables>
...@@ -30,12 +19,12 @@ ...@@ -30,12 +19,12 @@
</template> </template>
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin';
import { import {
penalizePage, penalizePage,
penalizeReasonType penalizeReasonType
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation';
import skeleton from '../component/skeleton' import skeleton from '../component/skeleton';
export default { export default {
name: 'Punish', name: 'Punish',
mixins: [mixin], mixins: [mixin],
...@@ -51,87 +40,87 @@ export default { ...@@ -51,87 +40,87 @@ export default {
pageSize: 20 pageSize: 20
}, },
forData: [ forData: [
{label: '处罚原因', prop: 'punishReason', slot: true, fixed: true}, { label: '处罚原因', prop: 'punishReason', slot: true, fixed: true, width: '508' },
{label: '决定日期', prop: 'punishBegin', width: '105'}, { label: '决定日期', prop: 'punishBegin', width: '105' },
{label: '处罚结果', prop: 'punishResult', width: '264'}, { label: '处罚结果', prop: 'punishResult', width: '264' },
{label: '处罚文书号', prop: 'fileNum', width: '240'}, { label: '处罚文书号', prop: 'fileNum', width: '240' },
{label: '处罚机关', prop: 'office', width: '264'}, { label: '处罚机关', prop: 'office', width: '264' },
{label: '处罚结束日期', prop: 'punishEnd', width: '110'}, { label: '处罚结束日期', prop: 'punishEnd', width: '110' },
], ],
formData: [ formData: [
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '处罚类别', options: []}, { type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '处罚类别', options: [] },
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: [] },
], ],
//列表 //列表
tableLoading:false, tableLoading: false,
tableData:[], tableData: [],
tableDataTotal:0, tableDataTotal: 0,
showList:[], showList: [],
isSkeleton:true isSkeleton: true
} };
}, },
created() { created() {
this.handleQuery() this.handleQuery();
this.penalizeReasonTypeData() this.penalizeReasonTypeData();
}, },
computed: { computed: {
}, },
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams;
this.isSkeleton = true this.isSkeleton = true;
penalizePage(data).then((res) => { penalizePage(data).then((res) => {
this.tableData = res.rows this.tableData = res.rows;
this.tableDataTotal = res.total this.tableDataTotal = res.total;
this.isSkeleton = false this.isSkeleton = false;
}) });
}, },
penalizeReasonTypeData(){ penalizeReasonTypeData() {
penalizeReasonType({cid:this.queryParams.cid}).then((res) => { penalizeReasonType({ cid: this.queryParams.cid }).then((res) => {
let data = res.data let data = res.data;
if(data.length > 0){ if (data.length > 0) {
for (var i=0;i<data.length;i++){ for (var i = 0; i < data.length; i++) {
this.formData[0].options.push({ this.formData[0].options.push({
name: data[i].punishType + '(' + data[i].count + ')', name: data[i].punishType + '(' + data[i].count + ')',
value: data[i].punishTypeId, value: data[i].punishTypeId,
}) });
} }
} }
}) });
}, },
changeShowAll(row, column) { changeShowAll(row, column) {
this.showList.push({ this.showList.push({
row: row, row: row,
column: column column: column
}) });
}, },
isOverHiddenFlag(data, showList, row, column, value) { isOverHiddenFlag(data, showList, row, column, value) {
if(value && String(value).length > this.getLenth(data)) { if (value && String(value).length > this.getLenth(data)) {
return !showList.some(item => item.row==row&&item.column==column) return !showList.some(item => item.row == row && item.column == column);
}else { } else {
return false return false;
} }
}, },
getLenth(data) { getLenth(data) {
return Math.floor(data / 12) * 5 return Math.floor(data / 12) * 5;
}, },
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.corePersonnel{ .corePersonnel {
background: #ffffff; background: #ffffff;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
input{ input {
border: 1px solid #EFEFEF; border: 1px solid #efefef;
} }
::v-deep .el-form-item{ ::v-deep .el-form-item {
margin-right: 8px !important; margin-right: 8px !important;
} }
.query-box{ .query-box {
margin: 10px 0 20px; margin: 10px 0 20px;
} }
.cell-span { .cell-span {
...@@ -144,7 +133,7 @@ export default { ...@@ -144,7 +133,7 @@ export default {
-webkit-line-clamp: 4; -webkit-line-clamp: 4;
cursor: pointer; cursor: pointer;
>span { > span {
display: inline-block; display: inline-block;
width: 37px; width: 37px;
position: absolute; position: absolute;
...@@ -155,4 +144,8 @@ export default { ...@@ -155,4 +144,8 @@ export default {
} }
} }
} }
.administrative-punishment {
@import "@/assets/styles/search-common.scss";
}
</style> </style>
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
navigation: {isFixed: true, fixedHeight: 56, totalHeight: 68}, // iframe之外页面顶部对象,ifFixed:是否浮动;fixedHeight:浮动对象高度;totalHeight:顶部整体高度 navigation: {isFixed: true, fixedHeight: 56, totalHeight: 68}, // iframe之外页面顶部对象,ifFixed:是否浮动;fixedHeight:浮动对象高度;totalHeight:顶部整体高度
src: '', //iframe嵌套页面地址 src: '', //iframe嵌套页面地址
domain: 'https://plug.jiansheku.com', // 插件地址 domain: 'https://plug.jiansheku.com', // 插件地址
// domain: 'http://192.168.60.19:3400', // domain: 'http://192.168.60.104:3400',
// domain: 'http://192.168.60.30:3300', // domain: 'http://192.168.60.30:3300',
ak: 'aec7b3ff2y2q8x6t49a7e2c463ce21912', // 需要携带的sdkId ak: 'aec7b3ff2y2q8x6t49a7e2c463ce21912', // 需要携带的sdkId
uid: this.$store.state.user.userId, // 需要携带的uid uid: this.$store.state.user.userId, // 需要携带的uid
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
v-loading="tableLoading" v-loading="tableLoading"
:data="tableData" :data="tableData"
border border
v-horizontal-scroll="'hover'" v-horizontal-scroll="tableData.total > 15 ? 'hover' : 'false'"
highlight-current-row highlight-current-row
@sort-change="sortChange" @sort-change="sortChange"
:default-sort = "{prop: 'gdp', order: 'descending'}" :default-sort = "{prop: 'gdp', order: 'descending'}"
......
...@@ -321,6 +321,7 @@ ...@@ -321,6 +321,7 @@
this.getRangeBidMoney() this.getRangeBidMoney()
this.getRangeBidFiveYears() this.getRangeBidFiveYears()
this.getLowerRateByYear() this.getLowerRateByYear()
this.getLowerRangeTenderType()
}, },
beforeDestroy(){ beforeDestroy(){
...@@ -345,7 +346,6 @@ ...@@ -345,7 +346,6 @@
this.initChart1(list) this.initChart1(list)
}) })
} }
this.getLowerRangeTenderType()
}) })
}, },
getCountBidGroupByProvince(){ getCountBidGroupByProvince(){
......
This diff is collapsed.
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