master
王家东 2 weeks ago
parent b515ddc4f4
commit 1be49fdb68
  1. 79
      jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/controller/ExpertController.java
  2. 16
      jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expproject/entity/ExpproVo.java
  3. 10
      jeecgboot-vue3/src/views/dashboard/workbench/components/DynamicInfo.vue
  4. 86
      jeecgboot-vue3/src/views/dashboard/workbench/components/ProjectCard.vue
  5. 26
      jeecgboot-vue3/src/views/dashboard/workbench/components/QuickNav.vue
  6. 32
      jeecgboot-vue3/src/views/dashboard/workbench/components/api.ts
  7. 10
      jeecgboot-vue3/src/views/dashboard/workbench/components/data.ts

@ -29,6 +29,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.demo.expproject.entity.Expandpro;
import org.jeecg.modules.demo.expproject.entity.ExpproVo;
import org.jeecg.modules.demo.expproject.entity.Expproject;
import org.jeecg.modules.demo.expproject.service.IExpandproService;
import org.jeecg.modules.demo.expproject.service.IExpprojectService;
import org.jeecg.modules.system.entity.SysDepart;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.service.ISysDepartService;
@ -69,6 +74,12 @@ public class ExpertController extends JeecgController<Expert, IExpertService> {
private ISysDepartService sysDepartService;
@Autowired
private IDisciplineFieidService disciplineFieidService;
@Autowired
private IExpprojectService expprojectService;
@Autowired
private IExpandproService expandproService;
/**
* 分页列表查询
@ -764,6 +775,40 @@ public class ExpertController extends JeecgController<Expert, IExpertService> {
List<Expert> expertList = expertService.query().eq("adminopen","2").eq("compopen","2").eq("expsture","Y").list();
return Result.OK(expertList.size());
}
@ApiOperation(value="管理员专家数据---异常专家数--请假", notes="管理员专家数据---异常专家数--请假")
@GetMapping(value = "/expdatanumberycxj")
public Result<Integer> expdatanumberycxj() {
List<Expert> expertList = expertService.query().eq("adminopen","2").eq("compopen","2").eq("expsture","Y").eq("errinfo","2").list();
return Result.OK(expertList.size());
}
@ApiOperation(value="管理员专家数据---异常专家数--出差", notes="管理员专家数据---异常专家数--出差")
@GetMapping(value = "/expdatanumberyccc")
public Result<Integer> expdatanumberyccc() {
List<Expert> expertList = expertService.query().eq("adminopen","2").eq("compopen","2").eq("expsture","Y").eq("errinfo","1").list();
return Result.OK(expertList.size());
}
@ApiOperation(value="管理员专家数据---异常专家数--其他", notes="管理员专家数据---异常专家数--其他")
@GetMapping(value = "/expdatanumberycqt")
public Result<Integer> expdatanumberycqt() {
List<Expert> expertList = expertService.query().eq("adminopen","2").eq("compopen","2").eq("expsture","Y").eq("errinfo","3").list();
return Result.OK(expertList.size());
}
@ApiOperation(value="管理员专家数据---专家待提交/未审核", notes="管理员专家数据---专家待提交/未审核")
@GetMapping(value = "/expdatawtjsh")
public Result<Integer> expdatawtjsh() {
List<Expert> expertList = expertService.query().eq("adminopen","1").or().eq("compopen","1").or().eq("isdone","N").list();
return Result.OK(expertList.size());
}
@ApiOperation(value="管理员专家数据---专家已审核", notes="管理员专家数据---专家已审核")
@GetMapping(value = "/expdatayish")
public Result<Integer> expdatayish() {
List<Expert> expertList = expertService.query().eq("adminopen","2").eq("compopen","2").eq("isdone","Y").list();
return Result.OK(expertList.size());
}
@ApiOperation(value="管理员专家数据---不同的领域专家数", notes="管理员专家数据---不同的领域专家数")
@GetMapping(value = "/expdatanumberdiffect")
@ -780,4 +825,38 @@ public class ExpertController extends JeecgController<Expert, IExpertService> {
return Result.OK(expdefVoList);
}
//统计项目的总个数
@ApiOperation(value="管理员专家数据---查询项目个数", notes="管理员专家数据---查询项目个数")
@GetMapping(value = "/projectnumber")
public Result<?> projectnumber() {
List<Expproject> expprojectList = expprojectService.list();
return Result.OK(expprojectList.size());
}
@ApiOperation(value="管理员专家数据---查询项目和项目需要的专家", notes="管理员专家数据---查询项目和项目需要的专家")
@GetMapping(value = "/findprojectandnumber")
public Result<List<ExpproVo>> findprojectandnumber() {
List<ExpproVo> expproVos =new ArrayList<>();
List<Expproject> expprojectList = expprojectService.list();
for (Expproject expproject : expprojectList) {
ExpproVo expproVo = new ExpproVo();
expproVo.setCreateTime(expproject.getCreateTime());
expproVo.setProname(expproject.getProname());
expproVo.setNeedexp(expproject.getNeedexp());
expproVo.setExptype(disciplineFieidService.query().eq("id",expproject.getExptype()).one().getName());
List<Expandpro> expandpros =expandproService.query().eq("expprojectid",expproject.getId()).list();
if (!expandpros.isEmpty()){
expproVo.setExperts(expandpros.stream().map(Expandpro::getExpname).collect(Collectors.toList()));
}
expproVos.add(expproVo);
}
expproVos.sort(Comparator.comparing(ExpproVo::getCreateTime).reversed());
// 截取前 6 条数据
if (expproVos.size() > 6) {
expproVos = expproVos.subList(0, 6);
}
return Result.OK(expproVos);
}
}

@ -0,0 +1,16 @@
package org.jeecg.modules.demo.expproject.entity;
import lombok.Data;
import org.jeecg.modules.demo.expert.entity.Expert;
import java.util.Date;
import java.util.List;
@Data
public class ExpproVo {
private Date createTime;
private String proname;
private String exptype;
private Integer needexp;
private List<String> experts;
}

@ -1,5 +1,5 @@
<template>
<Card title="单个领域专家个数" v-bind="$attrs">
<Card title="项目粗略信息" v-bind="$attrs">
<template #extra>
</template>
@ -8,10 +8,10 @@
<ListItem>
<ListItemMeta>
<template #description>
{{ item.number }}
目评审专家: {{ item.experts.join(', ') }}
</template>
<!-- eslint-disable-next-line -->
<template #title> {{ item.name }} <span v-html="item.desc"> </span> </template>
<template #title> 项目名称{{ item.proname }} 需要的专家数{{item.needexp}} 需要的专家类型{{item.exptype}}<span v-html="item.desc"> </span> </template>
<template #avatar>
<Icon :icon="item.avatar" :size="30" />
</template>
@ -23,7 +23,7 @@
</template>
<script lang="ts" setup>
import { Card, List } from 'ant-design-vue';
import { expdatanumberdiffect } from './api';
import { findprojectandnumber } from './api';
/* import { dynamicInfoItems } from './data';*/
import {getDataListApi, getDataListApiyc} from './api';
import { Icon } from '/@/components/Icon';
@ -33,7 +33,7 @@
const dynamicInfoItems= ref([])
function item03(){
expdatanumberdiffect().then(res => {
findprojectandnumber().then(res => {
console.log("1919219191919",res)
res.forEach(item => {
dynamicInfoItems.value.push(item);

@ -15,22 +15,53 @@
</CardGrid>
<CardGrid class="!md:w-1/3 !w-full">
<span class="flex">
<span class="text-lg ml-4">状态异常的专家数</span>
<span class="text-lg ml-4">已审核状态异常的专家数</span>
<span style="font-weight: bold; font-size: 2em; margin-left: auto; display: inline-block; width: fit-content;">{{ item3 }}</span>
</span>
<div class="flex justify-between text-secondary">
<span style="font-weight: bold; font-size: 2em; margin-left: auto; display: inline-block; width: fit-content;">{{ item3 }}</span>
<span style="font-weight: bold; font-size: em; margin-left: auto; display: inline-block; width: fit-content;">请假{{ item5 }}</span>
<span style="font-weight: bold; font-size: em; margin-left: auto; display: inline-block; width: fit-content;">出差{{ item6 }}</span>
<span style="font-weight: bold; font-size: em; margin-left: auto; display: inline-block; width: fit-content;">出差{{ item7 }}</span>
</div>
</CardGrid>
<CardGrid class="!md:w-1/3 !w-full">
<span class="flex">
<span class="text-lg ml-4">状态正常的专家数</span>
<span class="text-lg ml-4">已审核状态正常的专家数</span>
</span>
<div class="flex justify-between text-secondary">
<span style="font-weight: bold; font-size: 2em; margin-left: auto; display: inline-block; width: fit-content;">{{ item2 }}</span>
</div>
</CardGrid>
<CardGrid class="!md:w-1/3 !w-full">
<span class="flex">
<span class="text-lg ml-4">未提交/待审核专家数</span>
</span>
<div class="flex justify-between text-secondary">
<span style="font-weight: bold; font-size: 2em; margin-left: auto; display: inline-block; width: fit-content;">{{ item8 }}</span>
</div>
</CardGrid>
<CardGrid class="!md:w-1/3 !w-full">
<span class="flex">
<span class="text-lg ml-4">已审核专家数</span>
</span>
<div class="flex justify-between text-secondary">
<span style="font-weight: bold; font-size: 2em; margin-left: auto; display: inline-block; width: fit-content;">{{ item9 }}</span>
</div>
</CardGrid>
<CardGrid class="!md:w-1/3 !w-full">
<span class="flex">
<span class="text-lg ml-4">项目总个数</span>
</span>
<div class="flex justify-between text-secondary">
<span style="font-weight: bold; font-size: 2em; margin-left: auto; display: inline-block; width: fit-content;">{{ item4 }}</span>
</div>
</CardGrid>
<!-- </template>-->
</Card>
@ -39,7 +70,7 @@
import { defineComponent, ref } from 'vue';
import { Card } from 'ant-design-vue';
import { Icon } from '/@/components/Icon';
import { getDataListApi,getDataListApizc,getDataListApiyc } from './api';
import { getDataListApi,getDataListApizc,getDataListApiyc,projectnumber,expdatanumberycxj,expdatanumberyccc,expdatanumberycqt,expdatawtjsh,expdatayish } from './api';
export default defineComponent({
components: { Card, CardGrid: Card.Grid, Icon },
setup() {
@ -67,8 +98,51 @@
})}
item03();
const item4 = ref("0");
function item04(){
projectnumber().then(res => {
item4.value = res
})}
item04();
/*请假*/
const item5 = ref("0");
function item05(){
expdatanumberycxj().then(res => {
item5.value = res
})}
item05();
/*出差*/
const item6 = ref("0");
function item06(){
expdatanumberyccc().then(res => {
item6.value = res
})}
item06();
return {item1,item2,item3}
/*其他*/
const item7 = ref("0");
function item07(){
expdatanumberycqt().then(res => {
item7.value = res
})}
item07();
/*未提交/待审核转家属*/
const item8 = ref("0");
function item08(){
expdatawtjsh().then(res => {
item8.value = res
})}
item08();
/*审核转家属*/
const item9 = ref("0");
function item09(){
expdatayish().then(res => {
item9.value = res
})}
item09();
return {item1,item2,item3,item4,item5,item6,item7,item8,item9}
},

@ -1,19 +1,33 @@
<template>
<!-- <Card title="快捷导航" v-bind="$attrs">
<template v-for="item in navItems" :key="item">
<Card title="不同领域专家个数" v-bind="$attrs">
<template v-for="item in dynamicInfoItems" :key="item">
<CardGrid>
<span class="flex flex-col items-center">
<Icon :icon="item.icon" :color="item.color" size="20" />
<span class="text-md mt-2">{{ item.title }}</span>
<!-- <Icon :icon="item.icon" :color="item.color" size="20" />-->
<span class="text-md mt-2">{{ item.name }}</span>
<span class="text-md mt-2">{{item.number}}</span>
</span>
</CardGrid>
</template>
</Card>-->
</Card>
</template>
<script lang="ts" setup>
import { Card } from 'ant-design-vue';
import { navItems } from './data';
/*import { navItems } from './data';*/
import { Icon } from '/@/components/Icon';
import {ref} from "vue";
import {expdatanumberdiffect} from "@/views/dashboard/workbench/components/api";
const dynamicInfoItems= ref([])
function item03(){
expdatanumberdiffect().then(res => {
console.log("1919219191919",res)
res.forEach(item => {
dynamicInfoItems.value.push(item);
});
})}
item03();
const CardGrid = Card.Grid;
</script>

@ -8,6 +8,13 @@ enum Api {
zclist = '/expert/expert/expdatanumberzc',
lyzjlist = '/expert/expert/expdatanumberdiffect',
yclist= '/expert/expert/expdatanumberyc',
pronumber= '/expert/expert/projectnumber',
findprojectandnumberapi= '/expert/expert/findprojectandnumber',
expdatanumberycxjapi= '/expert/expert/expdatanumberycxj',
expdatanumberycccapi= '/expert/expert/expdatanumberyccc',
expdatanumberycqtapi= '/expert/expert/expdatanumberycqt',
expdatawtjshapi= '/expert/expert/expdatawtjsh',
expdatayishapi= '/expert/expert/expdatayish',
}
export function getDataListApi() {
@ -26,3 +33,28 @@ export function getDataListApiyc() {
export function expdatanumberdiffect() {
return defHttp.get({ url: Api.lyzjlist });
}
export function projectnumber() {
return defHttp.get({ url: Api.pronumber });
}
export function findprojectandnumber() {
return defHttp.get({ url: Api.findprojectandnumberapi });
}
export function expdatanumberycxj() {
return defHttp.get({ url: Api.expdatanumberycxjapi });
}
export function expdatanumberyccc() {
return defHttp.get({ url: Api.expdatanumberycccapi });
}
export function expdatanumberycqt() {
return defHttp.get({ url: Api.expdatanumberycqtapi });
}
export function expdatawtjsh() {
return defHttp.get({ url: Api.expdatawtjshapi });
}
export function expdatayish() {
return defHttp.get({ url: Api.expdatayishapi });
}

@ -51,6 +51,16 @@ export const navItems: NavItem[] = [
icon: 'ion:bar-chart-outline',
color: '#00d8ff',
},
{
title: '权限管理',
icon: 'ion:key-outline',
color: '#4daf1bc9',
},
{
title: '图表',
icon: 'ion:bar-chart-outline',
color: '#00d8ff',
},
];
export const dynamicInfoItems: DynamicInfoItem[] = [

Loading…
Cancel
Save