Commit 640c2491 authored by Administrator's avatar Administrator

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

parents 567c2436 1d53f458
...@@ -39,8 +39,7 @@ public class SysMenuController extends BaseController { ...@@ -39,8 +39,7 @@ public class SysMenuController extends BaseController {
@SaCheckPermission("system:menu:list") @SaCheckPermission("system:menu:list")
@GetMapping("/list") @GetMapping("/list")
public R<List<SysMenu>> list(SysMenu menu) { public R<List<SysMenu>> list(SysMenu menu) {
List<SysMenu> menus = menuService.selectAllMenu(menu,getUserId()); List<SysMenu> menus = menuService.selectMenuList(menu, getUserId());
//List<SysMenu> menus = menuService.selectMenuList(menu, getUserId());
return R.ok(menus); return R.ok(menus);
} }
......
...@@ -9,6 +9,7 @@ import com.dsk.biz.domain.vo.CustomerBusinessListVo; ...@@ -9,6 +9,7 @@ import com.dsk.biz.domain.vo.CustomerBusinessListVo;
import com.dsk.biz.domain.vo.CustomerListVo; import com.dsk.biz.domain.vo.CustomerListVo;
import com.dsk.biz.domain.vo.CustomerVo; import com.dsk.biz.domain.vo.CustomerVo;
import com.dsk.biz.service.ICustomerService; import com.dsk.biz.service.ICustomerService;
import com.dsk.biz.utils.ExcelUtils;
import com.dsk.common.annotation.Log; import com.dsk.common.annotation.Log;
import com.dsk.common.annotation.RepeatSubmit; import com.dsk.common.annotation.RepeatSubmit;
import com.dsk.common.core.controller.BaseController; import com.dsk.common.core.controller.BaseController;
...@@ -118,7 +119,7 @@ public class CustomerController extends BaseController { ...@@ -118,7 +119,7 @@ public class CustomerController extends BaseController {
@PostMapping("/importData") @PostMapping("/importData")
// public R<List<String>> importData(@RequestPart("file") MultipartFile file) throws Exception { // public R<List<String>> importData(@RequestPart("file") MultipartFile file) throws Exception {
public AjaxResult importData(@RequestPart("file") MultipartFile file) throws Exception { public AjaxResult importData(@RequestPart("file") MultipartFile file) throws Exception {
List<Customer> customerList = ExcelUtil.importExcel(file.getInputStream(), Customer.class); List<Customer> customerList = new ExcelUtils<>(Customer.class).importExcel(file.getInputStream(), 2);
List<String> resultList = new ArrayList<>(); List<String> resultList = new ArrayList<>();
int successCount = 0; int successCount = 0;
for (Customer customer : customerList) { for (Customer customer : customerList) {
......
package com.dsk.biz.domain; package com.dsk.biz.domain;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.dsk.common.annotation.Excel;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -33,6 +35,7 @@ public class Customer implements Serializable { ...@@ -33,6 +35,7 @@ public class Customer implements Serializable {
/** /**
* 客户名称(企业名称) * 客户名称(企业名称)
*/ */
@Excel(name = "企业名称")
private String companyName; private String companyName;
/** /**
* 法定代表人 * 法定代表人
......
...@@ -9,9 +9,11 @@ import com.dsk.common.utils.DictUtils; ...@@ -9,9 +9,11 @@ import com.dsk.common.utils.DictUtils;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.file.FileTypeUtils; import com.dsk.common.utils.file.FileTypeUtils;
import com.dsk.common.utils.file.FileUploadUtils; import com.dsk.common.utils.file.FileUploadUtils;
import com.dsk.common.utils.file.FileUtils;
import com.dsk.common.utils.file.ImageUtils; import com.dsk.common.utils.file.ImageUtils;
import com.dsk.common.utils.poi.ExcelHandlerAdapter; import com.dsk.common.utils.poi.ExcelHandlerAdapter;
import com.dsk.common.utils.poi.ExcelUtil; import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.common.utils.reflect.ReflectUtils;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.RegExUtils; import org.apache.commons.lang3.RegExUtils;
import org.apache.commons.lang3.reflect.FieldUtils; import org.apache.commons.lang3.reflect.FieldUtils;
...@@ -1341,4 +1343,136 @@ public class ExcelUtils<T> { ...@@ -1341,4 +1343,136 @@ public class ExcelUtils<T> {
} }
return method; return method;
} }
/**
* 对excel表单默认第一个索引名转换成list
*
* @param is 输入流
* @param titleNum 标题占用行数
* @return 转换后集合
*/
public List<T> importExcel(InputStream is, int titleNum) throws Exception {
return importExcel(StringUtils.EMPTY, is, titleNum);
}
/**
* 对excel表单指定表格索引名转换成list
*
* @param sheetName 表格索引名
* @param titleNum 标题占用行数
* @param is 输入流
* @return 转换后集合
*/
public List<T> importExcel(String sheetName, InputStream is, int titleNum) throws Exception {
this.type = Excel.Type.IMPORT;
this.wb = WorkbookFactory.create(is);
List<T> list = new ArrayList<T>();
// 如果指定sheet名,则取指定sheet中的内容 否则默认指向第1个sheet
Sheet sheet = StringUtils.isNotEmpty(sheetName) ? wb.getSheet(sheetName) : wb.getSheetAt(0);
if (sheet == null) {
throw new IOException("文件sheet不存在");
}
boolean isXSSFWorkbook = !(wb instanceof HSSFWorkbook);
Map<String, PictureData> pictures;
if (isXSSFWorkbook) {
pictures = getSheetPictures07((XSSFSheet) sheet, (XSSFWorkbook) wb);
} else {
pictures = getSheetPictures03((HSSFSheet) sheet, (HSSFWorkbook) wb);
}
// 获取最后一个非空行的行下标,比如总行数为n,则返回的为n-1
int rows = sheet.getLastRowNum();
if (rows > 0) {
// 定义一个map用于存放excel列的序号和field.
Map<String, Integer> cellMap = new HashMap<String, Integer>();
// 获取表头
Row heard = sheet.getRow(titleNum);
for (int i = 0; i < heard.getPhysicalNumberOfCells(); i++) {
Cell cell = heard.getCell(i);
if (ObjectUtils.isEmpty(cell)) {
cellMap.put(null, i);
} else {
String value = this.getCellValue(heard, i).toString();
cellMap.put(value, i);
}
}
// 有数据时才处理 得到类的所有field.
List<Object[]> fields = this.getFields();
Map<Integer, Object[]> fieldsMap = new HashMap<Integer, Object[]>();
for (Object[] objects : fields) {
Excel attr = (Excel) objects[1];
Integer column = cellMap.get(attr.name());
if (column != null) {
fieldsMap.put(column, objects);
}
}
for (int i = titleNum + 1; i <= rows; i++) {
// 从第2行开始取数据,默认第一行是表头.
Row row = sheet.getRow(i);
// 判断当前行是否是空行
if (isRowEmpty(row)) {
continue;
}
T entity = null;
for (Map.Entry<Integer, Object[]> entry : fieldsMap.entrySet()) {
Object val = this.getCellValue(row, entry.getKey());
// 如果不存在实例则新建.
entity = (entity == null ? clazz.newInstance() : entity);
// 从map中得到对应列的field.
Field field = (Field) entry.getValue()[0];
Excel attr = (Excel) entry.getValue()[1];
// 取得类型,并根据对象类型设置值.
Class<?> fieldType = field.getType();
if (String.class == fieldType) {
String s = Convert.toStr(val);
if (StringUtils.endsWith(s, ".0")) {
val = StringUtils.substringBefore(s, ".0");
} else {
String dateFormat = field.getAnnotation(Excel.class).dateFormat();
if (StringUtils.isNotEmpty(dateFormat)) {
val = parseDateToStr(dateFormat, val);
} else {
val = Convert.toStr(val);
}
}
} else if ((Integer.TYPE == fieldType || Integer.class == fieldType) && StringUtils.isNumeric(Convert.toStr(val))) {
val = Convert.toInt(val);
} else if ((Long.TYPE == fieldType || Long.class == fieldType) && StringUtils.isNumeric(Convert.toStr(val))) {
val = Convert.toLong(val);
} else if (Double.TYPE == fieldType || Double.class == fieldType) {
val = Convert.toDouble(val);
} else if (Float.TYPE == fieldType || Float.class == fieldType) {
val = Convert.toFloat(val);
} else if (BigDecimal.class == fieldType) {
val = Convert.toBigDecimal(val);
} else if (Date.class == fieldType) {
if (val instanceof String) {
val = DateUtils.parseDate(val);
} else if (val instanceof Double) {
val = DateUtil.getJavaDate((Double) val);
}
} else if (Boolean.TYPE == fieldType || Boolean.class == fieldType) {
val = Convert.toBool(val, false);
}
if (!ObjectUtils.isEmpty(fieldType)) {
String propertyName = field.getName();
if (StringUtils.isNotEmpty(attr.targetAttr())) {
propertyName = field.getName() + "." + attr.targetAttr();
} else if (StringUtils.isNotEmpty(attr.readConverterExp())) {
val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator());
} else if (StringUtils.isNotEmpty(attr.dictType())) {
val = reverseDictByExp(Convert.toStr(val), attr.dictType(), attr.separator());
} else if (!attr.handler().equals(ExcelHandlerAdapter.class)) {
val = dataFormatHandlerAdapter(val, attr);
}
ReflectUtils.invokeSetter(entity, propertyName, val);
}
}
list.add(entity);
}
}
return list;
}
} }
...@@ -45,7 +45,6 @@ ...@@ -45,7 +45,6 @@
"element-resize-detector": "^1.2.4", "element-resize-detector": "^1.2.4",
"element-ui": "2.15.12", "element-ui": "2.15.12",
"file-saver": "2.0.5", "file-saver": "2.0.5",
"flatted": "^3.2.7",
"fuse.js": "6.4.3", "fuse.js": "6.4.3",
"highlight.js": "9.18.5", "highlight.js": "9.18.5",
"jquery": "^3.7.0", "jquery": "^3.7.0",
......
...@@ -538,7 +538,7 @@ ul, li { ...@@ -538,7 +538,7 @@ ul, li {
.el-card.noborder{ .el-card.noborder{
border: 0; border: 0;
box-shadow: none; box-shadow: none;
margin-bottom: 12px; //margin-bottom: 12px;
color: #232323; color: #232323;
.el-card__body{ .el-card__body{
padding: 0; padding: 0;
......
...@@ -99,6 +99,7 @@ export default { ...@@ -99,6 +99,7 @@ export default {
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$store.dispatch('LogOut').then(() => { this.$store.dispatch('LogOut').then(() => {
localStorage.removeItem('views') //清空导航栏上的数据
location.href = '/index'; location.href = '/index';
}) })
}).catch(() => {}); }).catch(() => {});
...@@ -110,9 +111,13 @@ export default { ...@@ -110,9 +111,13 @@ export default {
setToken(res.data.token) setToken(res.data.token)
setTenantid(id) setTenantid(id)
store.commit('SET_TOKEN', res.data.token) store.commit('SET_TOKEN', res.data.token)
localStorage.removeItem('views') //清空导航栏上的数据
if(this.$route.path == '/index'){
location.reload(); location.reload();
}else{
this.$router.push({ path: this.redirect || "/" }).catch(()=>{}); this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
} }
}
}) })
} }
} }
......
...@@ -21,7 +21,6 @@ import ResizeMixin from './mixin/ResizeHandler' ...@@ -21,7 +21,6 @@ import ResizeMixin from './mixin/ResizeHandler'
import { mapState } from 'vuex' import { mapState } from 'vuex'
import variables from '@/assets/styles/variables.scss' import variables from '@/assets/styles/variables.scss'
import elementResizeDetectorMaker from "element-resize-detector" import elementResizeDetectorMaker from "element-resize-detector"
import { parse,stringify } from 'flatted';
export default { export default {
name: 'Layout', name: 'Layout',
components: { components: {
......
...@@ -70,7 +70,7 @@ export const constantRoutes = [ ...@@ -70,7 +70,7 @@ export const constantRoutes = [
path: 'index', path: 'index',
component: () => import('@/views/index'), component: () => import('@/views/index'),
name: 'Index', name: 'Index',
meta: { title: '首页', icon: 'index',noCache: false } meta: { title: '首页', icon: 'index',noCache: true }
} }
] ]
}, },
......
import { parse,stringify } from 'flatted';
const state = { const state = {
visitedViews: [], visitedViews: [],
cachedViews: [], cachedViews: [],
...@@ -22,28 +21,6 @@ const mutations = { ...@@ -22,28 +21,6 @@ const mutations = {
title: view.meta.title || 'no-name' title: view.meta.title || 'no-name'
}) })
) )
// console.log(state.visitedViews)
// try {
// stringify(view)
// }catch(e)
// {
//
// }
// console.log(
// localStorage.removeItem('views')
// let views =view
// let viewlist = localStorage.getItem("views")==null?[]:JSON.parse(localStorage.getItem("views"))
// let li = {}
// li.fullPath = view.fullPath
// li.hash = view.hash
// li.meta = view.meta
// li.name = view.name
// li.params = view.params
// li.path = view.path
// li.query = view.query
// viewlist.push(li)
// viewlist.push(parse(stringify(view)))
// localStorage.setItem("views",stringify(viewlist))
}, },
ADD_CACHED_VIEW: (state, view) => { ADD_CACHED_VIEW: (state, view) => {
if (state.cachedViews.includes(view.name)) return if (state.cachedViews.includes(view.name)) return
...@@ -55,8 +32,6 @@ const mutations = { ...@@ -55,8 +32,6 @@ const mutations = {
for (const [i, v] of state.visitedViews.entries()) { for (const [i, v] of state.visitedViews.entries()) {
if (v.path === view.path) { if (v.path === view.path) {
state.visitedViews.splice(i, 1) state.visitedViews.splice(i, 1)
let visitedViews = JSON.parse(JSON.stringify(state.visitedViews))
localStorage.setItem("views",JSON.stringify(visitedViews))
break break
} }
} }
......
...@@ -428,11 +428,7 @@ ...@@ -428,11 +428,7 @@
params.pageNum = e params.pageNum = e
this.queryParams.pageNum = e this.queryParams.pageNum = e
this.handleQuery(params) this.handleQuery(params)
setTimeout(() => { this.$emit('handle-scroll')
this.$nextTick(() => {
this.$children[1].$refs.tableRef.bodyWrapper.scrollTop = 0
});
}, 500);
}, },
} }
} }
......
...@@ -261,10 +261,7 @@ ...@@ -261,10 +261,7 @@
params.pageNum = e params.pageNum = e
this.queryParams.pageNum = e this.queryParams.pageNum = e
this.handleQuery(params) this.handleQuery(params)
console.log(this.$children[1].$refs.tableRef.bodyWrapper.scrollTop) this.$emit('handle-scroll')
setTimeout(() => {
// this.$children[1].$refs.tableRef.bodyWrapper.scrollTop = 0
}, 500);
}, },
clickEXCEL() { clickEXCEL() {
this.dataEXCEL.combineName=this.combineName; this.dataEXCEL.combineName=this.combineName;
......
...@@ -350,10 +350,7 @@ ...@@ -350,10 +350,7 @@
params.pageNum = e params.pageNum = e
this.queryParams.pageNum = e this.queryParams.pageNum = e
this.handleQuery(params) this.handleQuery(params)
console.log(this.$children[1].$refs.tableRef.bodyWrapper.scrollTop) this.$emit('handle-scroll')
setTimeout(() => {
// this.$children[1].$refs.tableRef.bodyWrapper.scrollTop = 0
}, 500);
}, },
changeSelect(){ changeSelect(){
this.handleSearch() this.handleSearch()
......
...@@ -6,16 +6,16 @@ ...@@ -6,16 +6,16 @@
{{name || '--'}} {{name || '--'}}
</div> </div>
</div> </div>
<div class="flex-box group-main"> <div class="flex-box group-main" ref="contentData">
<div class="group-left"> <div class="group-left">
<side-bar ref="sidebar" @currentPath="showPartPage" :pathName="currentPath.pathName" :customerId="customerId"/> <side-bar ref="sidebar" @currentPath="showPartPage" :pathName="currentPath.pathName" :customerId="customerId"/>
</div> </div>
<div class="group-right"> <div class="group-right">
<div id="groupBox" v-if="customerId"> <div id="groupBox" v-if="customerId">
<Members v-if="currentPath.pathName=='members'" :customer-id="customerId" :isSkeleton="isSkeleton" :combineName="name"/> <Members v-if="currentPath.pathName=='members'" @handle-scroll="scrollToTop" :customer-id="customerId" :isSkeleton="isSkeleton" :combineName="name"/>
<Qualifications v-if="currentPath.pathName=='qualifications'" :customer-id="customerId" :isSkeleton="isSkeleton" :combineName="name"/> <Qualifications v-if="currentPath.pathName=='qualifications'" @handle-scroll="scrollToTop" :customer-id="customerId" :isSkeleton="isSkeleton" :combineName="name"/>
<Performance v-if="currentPath.pathName=='performance'" :customer-id="customerId" :isSkeleton="isSkeleton" :combineName="name"/> <Performance v-if="currentPath.pathName=='performance'" @handle-scroll="scrollToTop" :customer-id="customerId" :isSkeleton="isSkeleton" :combineName="name"/>
<Zhaobiao v-if="currentPath.pathName=='zhaobiao'" :customer-id="customerId" :isSkeleton="isSkeleton" :combineName="name"/> <Zhaobiao v-if="currentPath.pathName=='zhaobiao'" @handle-scroll="scrollToTop" :customer-id="customerId" :isSkeleton="isSkeleton" :combineName="name"/>
</div> </div>
</div> </div>
</div> </div>
...@@ -65,6 +65,11 @@ ...@@ -65,6 +65,11 @@
showPartPage(e){ showPartPage(e){
this.currentPath = e this.currentPath = e
}, },
scrollToTop() {
this.$nextTick(() => {
this.$refs.contentData.scrollTop = 0
})
},
} }
} }
</script> </script>
...@@ -75,18 +80,30 @@ ...@@ -75,18 +80,30 @@
} }
.group-main{ .group-main{
margin-top: 12px; margin-top: 12px;
position: fixed;
width: calc(100% - 192px);
height: calc(100vh - 155px);
overflow-y: auto;
align-items: initial; align-items: initial;
} }
.group-left{ .group-left{
margin-right: 16px; margin-right: 16px;
padding-bottom: 16px; padding-bottom: 16px;
position: fixed;
background: #FFFFFF; background: #FFFFFF;
} }
.group-right{ .group-right{
min-width: 1088px; min-width: 1088px;
/*width: calc(100% - 162px);*/
width: 100%; width: 100%;
background: #FFFFFF; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
margin-left: 160px;
::v-deep .el-table__header-wrapper{
position: sticky;
top:0;
z-index: 9;
}
} }
.part-header{ .part-header{
font-size: 16px; font-size: 16px;
......
...@@ -360,7 +360,7 @@ export default { ...@@ -360,7 +360,7 @@ export default {
cursor: pointer; cursor: pointer;
} }
&.span-ba{ &.span-ba{
/*border: 1px solid #0081FF;*/ border: 1px solid #0081FF;
span{ span{
color: #ffffff; color: #ffffff;
background: #0081FF; background: #0081FF;
......
<template> <template>
<div class="Tables"> <div class="Tables">
<div class="table-item"> <div class="table-item">
<el-table v-if="tableDataTotal>0" class="fixed-table" max-height="640" <el-table v-if="tableDataTotal>0" class="fixed-table"
v-loading="tableLoading" v-loading="tableLoading"
:data="tableData" :data="tableData"
element-loading-text="Loading" element-loading-text="Loading"
...@@ -222,4 +222,21 @@ export default { ...@@ -222,4 +222,21 @@ export default {
::v-deep .el-table--enable-row-hover .el-table__body tr:hover > td { ::v-deep .el-table--enable-row-hover .el-table__body tr:hover > td {
background-color: #DCEBFF; background-color: #DCEBFF;
} }
::v-deep .fixed-table{
overflow: visible;
}
::v-deep .el-table__header-wrapper{
position: sticky;
top:56px;
z-index: 9;
}
::v-deep .el-table__fixed-header-wrapper{
position: sticky;
z-index: 9;
top: 56px;
}
::v-deep .el-table__fixed{
overflow-x: clip;
overflow-y: clip;
}
</style> </style>
...@@ -77,6 +77,7 @@ export default { ...@@ -77,6 +77,7 @@ export default {
params.pageNum = e params.pageNum = e
this.queryParams.pageNum = e this.queryParams.pageNum = e
this.handleQuery(params,1) this.handleQuery(params,1)
this.$emit('handle-scroll')
}, },
handleSizeChange(e){ handleSizeChange(e){
......
...@@ -585,12 +585,6 @@ ...@@ -585,12 +585,6 @@
let arr = []; let arr = [];
let flag = false; let flag = false;
let data = {}; let data = {};
if (this.domicile.length > 0) { if (this.domicile.length > 0) {
data = { data = {
title: "行政区划:", title: "行政区划:",
...@@ -649,9 +643,9 @@ ...@@ -649,9 +643,9 @@
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) {
arr[i].hasChildren && cityIds.push(arr[i].value); arr[i].hasChildren && cityIds.push(arr[i].value)&&provinceIds.push(arr[i].parent.value);
arr[i].hasChildren && this.domicile.push(arr[i].label); arr[i].hasChildren && this.domicile.push(arr[i].label);
!arr[i].hasChildren && areaIds.push(arr[i].value); !arr[i].hasChildren && areaIds.push(arr[i].value)&& cityIds.push(arr[i].parent.value)&&provinceIds.push(arr[i].parent.parent.value);
!arr[i].hasChildren && this.domicile.push(arr[i].label); !arr[i].hasChildren && this.domicile.push(arr[i].label);
} }
} else { } else {
......
...@@ -336,7 +336,7 @@ ...@@ -336,7 +336,7 @@
checkedKeys.forEach((v) => { checkedKeys.forEach((v) => {
v = v.trim() v = v.trim()
let nodes = this.$refs.menu.getNode(v) let nodes = this.$refs.menu.getNode(v)
if(nodes.isLeaf && nodes.isLeaf == true){ if(nodes&&nodes.isLeaf && nodes.isLeaf == true){
this.$refs.menu.setChecked(v,true,true); this.$refs.menu.setChecked(v,true,true);
}else{ }else{
this.$refs.menu.setChecked(v,true,false); this.$refs.menu.setChecked(v,true,false);
......
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="count" label="中标数量(个)" align="right" sortable width="150"/> <el-table-column prop="count" label="中标数量(个)" align="right" sortable width="150"/>
<el-table-column prop="money" label="中标金额(万元)" align="right" sortable/> <el-table-column prop="money" label="中标金额(万元)" align="right" :sort-method="(a,b)=>{return a.money - b.money}" sortable/>
</el-table> </el-table>
</div> </div>
</el-col> </el-col>
...@@ -171,7 +171,7 @@ ...@@ -171,7 +171,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="count" label="中标数量(个)" align="right" sortable width="150"/> <el-table-column prop="count" label="中标数量(个)" align="right" sortable width="150"/>
<el-table-column prop="money" label="中标金额(万元)" align="right" sortable/> <el-table-column prop="money" label="中标金额(万元)" align="right" :sort-method="(a,b)=>{return a.money - b.money}" sortable/>
</el-table> </el-table>
</div> </div>
</el-col> </el-col>
...@@ -185,6 +185,10 @@ ...@@ -185,6 +185,10 @@
<el-tabs v-model="activeName" @tab-click="handleClickTab"> <el-tabs v-model="activeName" @tab-click="handleClickTab">
<el-tab-pane label="大项目最新中标" name="first"> <el-tab-pane label="大项目最新中标" name="first">
<skeleton v-if="zxzbIsSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="zxzbIsSkeleton" style="padding: 16px"></skeleton>
<div class="empty" v-if="projectList.length === 0 && !zxzbIsSkeleton">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div>
</div>
<div class="list" v-if="!zxzbIsSkeleton"> <div class="list" v-if="!zxzbIsSkeleton">
<div class="item" v-for="(item,index) in projectList" :key="index"> <div class="item" v-for="(item,index) in projectList" :key="index">
<p class="list-title"><router-link :to="`/biddetail/${item.pid}`" tag="a" class="a-link" v-if="item.pid" v-html="item.projectName"></router-link></p> <p class="list-title"><router-link :to="`/biddetail/${item.pid}`" tag="a" class="a-link" v-if="item.pid" v-html="item.projectName"></router-link></p>
...@@ -1357,7 +1361,6 @@ export default { ...@@ -1357,7 +1361,6 @@ export default {
if(this.activeName === 'second'){ if(this.activeName === 'second'){
this.getBigBidPage() this.getBigBidPage()
} }
// this.jump()
} }
}, },
...@@ -1386,44 +1389,6 @@ export default { ...@@ -1386,44 +1389,6 @@ export default {
}); });
}, },
jump() {
let total = 500
let distance = document.documentElement.scrollTop || document.body.scrollTop
// 平滑滚动,时长500ms,每10ms一跳,共50跳
let step = total / 50
if (total > distance) {
smoothDown()
} else {
let newTotal = distance - total
step = newTotal / 50
smoothUp()
}
function smoothDown() {
if (distance < total) {
distance += step
document.body.scrollTop = distance
document.documentElement.scrollTop = distance
setTimeout(smoothDown, 10)
} else {
document.body.scrollTop = total
document.documentElement.scrollTop = total
}
}
function smoothUp() {
if (distance > total) {
distance -= step
document.body.scrollTop = distance
document.documentElement.scrollTop = distance
setTimeout(smoothUp, 10)
} else {
document.body.scrollTop = total
document.documentElement.scrollTop = total
}
}
},
// 时间格式化 // 时间格式化
formatDate(timeStr) { formatDate(timeStr) {
let date = new Date(Number(timeStr)) let date = new Date(Number(timeStr))
......
...@@ -38,11 +38,11 @@ ...@@ -38,11 +38,11 @@
<el-table-column label="产业类型" prop="projectType"></el-table-column> <el-table-column label="产业类型" prop="projectType"></el-table-column>
<el-table-column :label="oneYear"> <el-table-column :label="oneYear">
<el-table-column prop="money" label="金额(亿元)" sortable="custom" :formatter="formatStatus"></el-table-column> <el-table-column prop="money" label="金额(亿元)" sortable="custom" :formatter="formatStatus"></el-table-column>
<el-table-column prop="rate" label="占比(%)" sortable> </el-table-column> <el-table-column prop="rate" label="占比(%)" :sort-method="(a,b)=>{return a.rate - b.rate}" sortable> </el-table-column>
</el-table-column> </el-table-column>
<el-table-column :label="twoYear"> <el-table-column :label="twoYear">
<el-table-column prop="lastMoney" label="金额(亿元)" sortable="custom" :formatter="formatStatus"> </el-table-column> <el-table-column prop="lastMoney" label="金额(亿元)" sortable="custom" :formatter="formatStatus"> </el-table-column>
<el-table-column prop="lastRate" label="占比(%)" sortable> </el-table-column> <el-table-column prop="lastRate" label="占比(%)" :sort-method="(a,b)=>{return a.lastRate - b.lastRate}" sortable> </el-table-column>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
......
...@@ -371,9 +371,13 @@ export default { ...@@ -371,9 +371,13 @@ export default {
} }
} }
} }
::v-deep .el-input.el-input-group:has(:focus){
border-color: #0081FF;
}
::v-deep .el-input.el-input-group{ ::v-deep .el-input.el-input-group{
width: 240px; width: 240px;
height: 30px; height: 30px;
border-radius:2px;
border: 1px solid #e0e0e0; border: 1px solid #e0e0e0;
.el-input__inner{ .el-input__inner{
height: 30px; height: 30px;
...@@ -389,11 +393,8 @@ export default { ...@@ -389,11 +393,8 @@ export default {
margin-left: 6px; margin-left: 6px;
margin-right: 4px; margin-right: 4px;
} }
.el-input__inner:focus{
/*border-color: #0081FF;*/
}
.el-input__inner:focus ~.el-input-group__append{ .el-input__inner:focus ~.el-input-group__append{
/*border: 1px solid #0081FF;*/ border: 1px solid #0081FF;
color: #ffffff; color: #ffffff;
background: #0081FF; background: #0081FF;
} }
......
...@@ -135,6 +135,16 @@ ...@@ -135,6 +135,16 @@
<el-table-column prop="isUsedCapital" label="是否资本金" width="200" :formatter="formatStatus"/> <el-table-column prop="isUsedCapital" label="是否资本金" width="200" :formatter="formatStatus"/>
</el-table> </el-table>
</div> </div>
<div class="pagination clearfix" v-show="tableDataTotal>0">
<el-pagination
background
:page-size="pageSize"
:current-page="pageIndex"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="tableDataTotal">
</el-pagination>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -166,6 +176,10 @@ export default { ...@@ -166,6 +176,10 @@ export default {
this.getData() this.getData()
}) })
}, },
handleCurrentChange(pageNum) {
this.pageIndex = pageNum;
this.getData();
},
getData(){ getData(){
// const params = { pageNum: this.pageIndex, pageSize: this.pageSize,specialBondUuid:'2e59fca0-21a6-47db-975d-5481e1c52f45_74'} // const params = { pageNum: this.pageIndex, pageSize: this.pageSize,specialBondUuid:'2e59fca0-21a6-47db-975d-5481e1c52f45_74'}
const params = { pageNum: this.pageIndex, pageSize: this.pageSize,specialBondUuid:this.details.specialBondUuid} const params = { pageNum: this.pageIndex, pageSize: this.pageSize,specialBondUuid:this.details.specialBondUuid}
...@@ -210,6 +224,12 @@ export default { ...@@ -210,6 +224,12 @@ export default {
background: #FFFFFF; background: #FFFFFF;
padding: 16px; padding: 16px;
border-radius: 4px; border-radius: 4px;
.pagination{
padding: 14px ;
.el-pagination{
float: right ;
}
}
} }
.common-title{ .common-title{
margin-bottom: 8px; margin-bottom: 8px;
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<span class="common-title">全国建筑企业概览</span> <span class="common-title">全国建筑企业概览</span>
</div> </div>
</div> </div>
<div class="text">截止{{currentdate}},全国共有{{glDetail.major}}资质的企业{{total}}家,其中特级资质企业{{glDetail.tjCount}}家,占比{{glDetail.tjRate}}%;一级资质企业{{glDetail.tjCount}}家,占比{{glDetail.oneRate}}%;二级资质企业{{glDetail.twoCount}}家,占比{{glDetail.twoRate}}%;三级资质企业{{glDetail.threeCount}}家,占比{{glDetail.threeRate}}%</div> <div class="text">截止{{currentdate}},全国共有{{glDetail.major}}资质的企业{{total}}家,其中特级资质企业{{glDetail.tjCount}}家,占比{{glDetail.tjRate}}%;一级资质企业{{glDetail.oneCount}}家,占比{{glDetail.oneRate}}%;二级资质企业{{glDetail.twoCount}}家,占比{{glDetail.twoRate}}%;三级资质企业{{glDetail.threeCount}}家,占比{{glDetail.threeRate}}%</div>
<div class="main1"> <div class="main1">
<div style="height: 300px;"> <div style="height: 300px;">
<div class="left"> <div class="left">
......
...@@ -46,7 +46,12 @@ ...@@ -46,7 +46,12 @@
</el-table-column> </el-table-column>
<el-table-column label="地区" width="150" align="left" fixed> <el-table-column label="地区" width="150" align="left" fixed>
<template slot-scope="scope"> <template slot-scope="scope">
<span @click="clickTo(scope.row)" style="cursor: pointer;" class="a-link">{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}</span> <span @click="clickTo(scope.row,1)" style="cursor: pointer;" class="a-link" v-if="scope.row.province === '北京市' || scope.row.province === '上海市' || scope.row.province === '重庆市' || scope.row.province === '天津市'">
{{ scope.row.province}}{{scope.row.area ? '-': ''}}{{ scope.row.area ? scope.row.city :''}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}
</span>
<span @click="clickTo(scope.row,2)" style="cursor: pointer;" class="a-link" v-else>
{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}
</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="年度明细" prop="id" width="90" align="center" fixed> <el-table-column label="年度明细" prop="id" width="90" align="center" fixed>
...@@ -294,9 +299,13 @@ ...@@ -294,9 +299,13 @@
}) })
}else { }else {
this.pageIndex = val this.pageIndex = val
this.querySubmit() this.querySubmit();
this.scrollToTop();
} }
}, },
scrollToTop() {
window.scrollTo(0, 0);
},
formatStatus: function(row, column, cellValue) { formatStatus: function(row, column, cellValue) {
return cellValue? cellValue : '-' return cellValue? cellValue : '-'
}, },
...@@ -325,16 +334,15 @@ ...@@ -325,16 +334,15 @@
type: 'warning' type: 'warning'
}); });
}, },
clickTo(item){ clickTo(item,key){
let params={ let params={
// id:item.id,
province:item.area ? item.area : item.city ? item.city : item.province, province:item.area ? item.area : item.city ? item.city : item.province,
} };
if(item.areaId){ if(item.areaId){
params.provinceId=item.provinceId params.provinceId=item.provinceId
params.cityId=item.cityId params.cityId=item.cityId
params.areaId=item.areaId params.areaId=item.areaId
}else if(item.cityId !=0){ }else if(item.cityId !=0 && key === 2){
params.provinceId=item.provinceId params.provinceId=item.provinceId
params.cityId=item.cityId params.cityId=item.cityId
}else { }else {
......
...@@ -503,8 +503,8 @@ ...@@ -503,8 +503,8 @@
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
axisLabel: { axisLabel: {
show: true, // show: true,
interval: 0 // interval: 0
}, },
data: data.map(item => item.label), data: data.map(item => item.label),
}, },
...@@ -764,10 +764,10 @@ ...@@ -764,10 +764,10 @@
} }
.has-gutter{ .has-gutter{
tr{ tr{
th:nth-child(4){ th:nth-last-child(2){
border-right:0; border-right:0;
} }
td:nth-child(4){ td:nth-last-child(2){
border-right:0; border-right:0;
} }
} }
......
...@@ -424,8 +424,8 @@ ...@@ -424,8 +424,8 @@
axisLabel: { //坐标轴刻度标签的相关设置 axisLabel: { //坐标轴刻度标签的相关设置
margin: 10, //刻度标签与轴线之间的距离 margin: 10, //刻度标签与轴线之间的距离
color:"#666666", color:"#666666",
show: true, // show: true,
interval: 0 // interval: 0
}, },
axisTick: false, //坐标轴刻度 axisTick: false, //坐标轴刻度
axisPointer: { axisPointer: {
...@@ -609,8 +609,8 @@ ...@@ -609,8 +609,8 @@
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
axisLabel: { axisLabel: {
show: true, // show: true,
interval: 0 // interval: 0
}, },
data: data.map(item => item.province), data: data.map(item => item.province),
}, },
...@@ -915,8 +915,8 @@ ...@@ -915,8 +915,8 @@
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
axisLabel: { axisLabel: {
show: true, // show: true,
interval: 0, // interval: 0,
}, },
data: data.map(item => item.month), data: data.map(item => item.month),
}, },
......
...@@ -907,11 +907,15 @@ export default { ...@@ -907,11 +907,15 @@ export default {
} }
} }
} }
::v-deep .search-input:has(:focus){
border-color: #0081FF;
}
::v-deep .search-input{ ::v-deep .search-input{
/*::v-deep .el-input{*/ /*::v-deep .el-input{*/
width: 235px; width: 235px;
height: 30px; height: 30px;
border: 1px solid #e0e0e0; border: 1px solid #e0e0e0;
border-radius:2px;
.el-input__inner{ .el-input__inner{
height: 30px; height: 30px;
line-height: 30px; line-height: 30px;
...@@ -929,10 +933,10 @@ export default { ...@@ -929,10 +933,10 @@ export default {
margin-right: 4px; margin-right: 4px;
} }
.el-input__inner:focus{ .el-input__inner:focus{
/*border-color: #0081FF;*/ border-color: #0081FF;
} }
.el-input__inner:focus ~.el-input-group__append{ .el-input__inner:focus ~.el-input-group__append{
/*border: 1px solid #0081FF;*/ border: 1px solid #0081FF;
color: #ffffff; color: #ffffff;
background: #0081FF; background: #0081FF;
} }
......
...@@ -173,8 +173,7 @@ ...@@ -173,8 +173,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="tables"> <div class="pagination-box" v-if="total>searchParam.pageSize">
<div class="bottems" v-if="total>searchParam.pageSize">
<el-pagination <el-pagination
background background
:page-size="searchParam.pageSize" :page-size="searchParam.pageSize"
...@@ -184,7 +183,6 @@ ...@@ -184,7 +183,6 @@
:total="total"> :total="total">
</el-pagination> </el-pagination>
</div> </div>
</div>
</el-card> </el-card>
<addproject v-if="isshow" @addproject="add" @cancel="addNew"></addproject> <addproject v-if="isshow" @addproject="add" @cancel="addNew"></addproject>
<batchimport v-if="pldr" :importtype="types" @cancels="cancelimport" @getdatas="getdatas"></batchimport> <batchimport v-if="pldr" :importtype="types" @cancels="cancelimport" @getdatas="getdatas"></batchimport>
......
...@@ -364,6 +364,7 @@ export default { ...@@ -364,6 +364,7 @@ export default {
this.addressListfn(); this.addressListfn();
this.search(); this.search();
this.getComdtion(); this.getComdtion();
this.getImportantSelect();
}, },
methods: { methods: {
getComdtion(){ getComdtion(){
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
</div> </div>
</div> </div>
<div class="content_item "> <div class="content_item ">
<div class="label">项目主体</div> <div class="label">项目当事人</div>
<div class="content_right"> <div class="content_right">
<div class="item_ckquery_list" > <div class="item_ckquery_list" >
<div class="ckquery_list_right"> <div class="ckquery_list_right">
......
...@@ -13,13 +13,6 @@ import java.util.Set; ...@@ -13,13 +13,6 @@ import java.util.Set;
* @author Lion Li * @author Lion Li
*/ */
public interface ISysMenuService { public interface ISysMenuService {
/**
* 根据用户查询全部系统菜单列表
*
* @param userId 用户ID
* @return 菜单列表
*/
List<SysMenu> selectAllMenu(SysMenu menu, Long userId);
/** /**
* 根据用户查询系统菜单列表 * 根据用户查询系统菜单列表
......
...@@ -40,25 +40,6 @@ public class SysMenuServiceImpl implements ISysMenuService { ...@@ -40,25 +40,6 @@ public class SysMenuServiceImpl implements ISysMenuService {
private final SysTenantMapper tenantMapper; private final SysTenantMapper tenantMapper;
private final SysTenantPackageMapper tenantPackageMapper; private final SysTenantPackageMapper tenantPackageMapper;
/**
* 根据用户查询全部系统菜单列表
*
* @param userId 用户ID
* @return 菜单列表
*/
@Override
public List<SysMenu> selectAllMenu(SysMenu menu, Long userId) {
List<SysMenu> menuList = null;
// 管理员显示所有菜单信息
if (LoginHelper.isSuperAdmin(userId)) {
menuList = baseMapper.selectList(new LambdaQueryWrapper<SysMenu>()
.like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName())
.orderByAsc(SysMenu::getParentId)
.orderByAsc(SysMenu::getOrderNum));
}
return menuList;
}
/** /**
* 根据用户查询系统菜单列表 * 根据用户查询系统菜单列表
* *
...@@ -83,8 +64,8 @@ public class SysMenuServiceImpl implements ISysMenuService { ...@@ -83,8 +64,8 @@ public class SysMenuServiceImpl implements ISysMenuService {
if (LoginHelper.isSuperAdmin(userId)) { if (LoginHelper.isSuperAdmin(userId)) {
menuList = baseMapper.selectList(new LambdaQueryWrapper<SysMenu>() menuList = baseMapper.selectList(new LambdaQueryWrapper<SysMenu>()
.like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName()) .like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName())
.eq(SysMenu::getVisible, 0) //.eq(SysMenu::getVisible, 0)
.eq(SysMenu::getStatus, 0) //.eq(SysMenu::getStatus, 0)
.orderByAsc(SysMenu::getParentId) .orderByAsc(SysMenu::getParentId)
.orderByAsc(SysMenu::getOrderNum)); .orderByAsc(SysMenu::getOrderNum));
} else { } else {
......
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