专家数据

master
王家东 2 weeks ago
parent b4f52db747
commit e3330f7dae
  1. 37
      jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/controller/ExpertController.java
  2. 9
      jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/entity/ExpdefVo.java
  3. 1
      jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/entity/Expert.java
  4. 23
      jeecgboot-vue3/src/views/dashboard/workbench/components/DynamicInfo.vue
  5. 73
      jeecgboot-vue3/src/views/dashboard/workbench/components/ProjectCard.vue
  6. 4
      jeecgboot-vue3/src/views/dashboard/workbench/components/QuickNav.vue
  7. 4
      jeecgboot-vue3/src/views/dashboard/workbench/components/SaleRadar.vue
  8. 14
      jeecgboot-vue3/src/views/dashboard/workbench/components/WorkbenchHeader.vue
  9. 27
      jeecgboot-vue3/src/views/dashboard/workbench/components/api.ts
  10. 9
      jeecgboot-vue3/src/views/expert/admin/components/ExpertForm.vue
  11. 10
      jeecgboot-vue3/src/views/expert/adminback/components/ExpertForm.vue
  12. 9
      jeecgboot-vue3/src/views/expert/county/components/ExpertForm.vue
  13. 8
      jeecgboot-vue3/src/views/expert/firm/components/ExpertForm.vue
  14. 8
      jeecgboot-vue3/src/views/expert/self/components/ExpertForm.vue

@ -20,6 +20,7 @@ import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.demo.disciplinefieid.entity.DisciplineFieid; import org.jeecg.modules.demo.disciplinefieid.entity.DisciplineFieid;
import org.jeecg.modules.demo.disciplinefieid.service.IDisciplineFieidService; import org.jeecg.modules.demo.disciplinefieid.service.IDisciplineFieidService;
import org.jeecg.modules.demo.expert.entity.ExpCmsVo; import org.jeecg.modules.demo.expert.entity.ExpCmsVo;
import org.jeecg.modules.demo.expert.entity.ExpdefVo;
import org.jeecg.modules.demo.expert.entity.Expert; import org.jeecg.modules.demo.expert.entity.Expert;
import org.jeecg.modules.demo.expert.service.IExpertService; import org.jeecg.modules.demo.expert.service.IExpertService;
@ -739,4 +740,40 @@ public class ExpertController extends JeecgController<Expert, IExpertService> {
expCmsVo.setRealname(sysUser.getRealname()); expCmsVo.setRealname(sysUser.getRealname());
return Result.OK(expCmsVo); return Result.OK(expCmsVo);
} }
@ApiOperation(value="管理员专家数据---专家总数", notes="管理员专家数据---专家总数")
@GetMapping(value = "/expdatanumber")
public Result<Integer> expdatanumber() {
List<Expert> expertList = expertService.list();
return Result.OK(expertList.size());
}
@ApiOperation(value="管理员专家数据---正常专家数", notes="管理员专家数据---正常专家数")
@GetMapping(value = "/expdatanumberzc")
public Result<Integer> expdatanumberzc() {
List<Expert> expertList = expertService.query().eq("adminopen","2").eq("compopen","2").eq("expsture","N").list();
return Result.OK(expertList.size());
}
@ApiOperation(value="管理员专家数据---异常专家数", notes="管理员专家数据---异常专家数")
@GetMapping(value = "/expdatanumberyc")
public Result<Integer> expdatanumberyc() {
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 = "/expdatanumberdiffect")
public Result<List<ExpdefVo>> expdatanumberdiffect() {
List<ExpdefVo> expdefVoList = new ArrayList<>();
List<DisciplineFieid> disciplineFieidList = disciplineFieidService.list();
for (int i=0;i<disciplineFieidList.size();i++){
ExpdefVo expdefVo =new ExpdefVo();
List<Expert> expertList = expertService.query().eq("compopen","2").eq("adminopen","2").eq("directioncal",disciplineFieidList.get(i).getId()).list();
expdefVo.setName(disciplineFieidList.get(i).getName());
expdefVo.setNumber(expertList.size());
expdefVoList.add(expdefVo);
}
return Result.OK(expdefVoList);
}
} }

@ -0,0 +1,9 @@
package org.jeecg.modules.demo.expert.entity;
import lombok.Data;
@Data
public class ExpdefVo {
private String name;
private Integer number;
}

@ -120,6 +120,7 @@ public class Expert implements Serializable {
private java.lang.String expsture; private java.lang.String expsture;
/**异常备注*/ /**异常备注*/
@Excel(name = "异常备注", width = 15) @Excel(name = "异常备注", width = 15)
@Dict(dicCode = "yczt")
@ApiModelProperty(value = "异常备注") @ApiModelProperty(value = "异常备注")
private java.lang.String errinfo; private java.lang.String errinfo;

@ -1,14 +1,14 @@
<template> <template>
<Card title="最新动态" v-bind="$attrs"> <Card title="单个领域专家个数" v-bind="$attrs">
<template #extra> <template #extra>
<a-button type="link" size="small">更多</a-button>
</template> </template>
<List item-layout="horizontal" :data-source="dynamicInfoItems"> <List item-layout="horizontal" :data-source="dynamicInfoItems">
<template #renderItem="{ item }"> <template #renderItem="{ item }">
<ListItem> <ListItem>
<ListItemMeta> <ListItemMeta>
<template #description> <template #description>
{{ item.date }} {{ item.number }}
</template> </template>
<!-- eslint-disable-next-line --> <!-- eslint-disable-next-line -->
<template #title> {{ item.name }} <span v-html="item.desc"> </span> </template> <template #title> {{ item.name }} <span v-html="item.desc"> </span> </template>
@ -23,9 +23,22 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { Card, List } from 'ant-design-vue'; import { Card, List } from 'ant-design-vue';
import { dynamicInfoItems } from './data'; import { expdatanumberdiffect } from './api';
/* import { dynamicInfoItems } from './data';*/
import {getDataListApi, getDataListApiyc} from './api';
import { Icon } from '/@/components/Icon'; import { Icon } from '/@/components/Icon';
import {ref} from "vue";
const ListItem = List.Item; const ListItem = List.Item;
const ListItemMeta = List.Item.Meta; const ListItemMeta = List.Item.Meta;
const dynamicInfoItems= ref([])
function item03(){
expdatanumberdiffect().then(res => {
console.log("1919219191919",res)
res.forEach(item => {
dynamicInfoItems.value.push(item);
});
})}
item03();
</script> </script>

@ -1,34 +1,79 @@
<template> <template>
<Card title="项目" v-bind="$attrs"> <Card title="项目" v-bind="$attrs">
<template #extra> <!-- <template #extra>-->
<a-button type="link" size="small">更多</a-button> <!-- </template>-->
</template>
<template v-for="item in items" :key="item"> <!-- <template >-->
<CardGrid class="!md:w-1/3 !w-full"> <CardGrid class="!md:w-1/3 !w-full">
<span class="flex"> <span class="flex">
<Icon :icon="item.icon" :color="item.color" size="30" /> <span class="text-lg ml-4">已经注册的专家总数</span>
<span class="text-lg ml-4">{{ item.title }}</span>
</span> </span>
<div class="flex mt-2 h-10 text-secondary"> {{ item.desc }} </div>
<div class="flex justify-between text-secondary"> <div class="flex justify-between text-secondary">
<span>{{ item.group }}</span>
<span>{{ item.date }}</span> <span style="font-weight: bold; font-size: 2em; margin-left: auto; display: inline-block; width: fit-content;">{{ item1 }}</span>
</div> </div>
</CardGrid> </CardGrid>
</template> <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;">{{ item3 }}</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;">{{ item2 }}</span>
</div>
</CardGrid>
<!-- </template>-->
</Card> </Card>
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent, ref } from 'vue';
import { Card } from 'ant-design-vue'; import { Card } from 'ant-design-vue';
import { Icon } from '/@/components/Icon'; import { Icon } from '/@/components/Icon';
import { groupItems } from './data'; import { getDataListApi,getDataListApizc,getDataListApiyc } from './api';
export default defineComponent({ export default defineComponent({
components: { Card, CardGrid: Card.Grid, Icon }, components: { Card, CardGrid: Card.Grid, Icon },
setup() { setup() {
return { items: groupItems }; const item1 = ref("0");
function item01(){
getDataListApi().then(res => {
item1.value = res
console.log("-----------------",item1.value)
})}
item01();
const item2 = ref("0");
function item02(){
getDataListApizc().then(res => {
item2.value = res
console.log("++++++++++++++++++++++",item2.value)
})}
item02();
const item3 = ref("0");
function item03(){
getDataListApiyc().then(res => {
item3.value = res
console.log("++++++++++++++++++++++",item3.value)
})}
item03();
return {item1,item2,item3}
}, },
}); });
</script> </script>

@ -1,5 +1,5 @@
<template> <template>
<Card title="快捷导航" v-bind="$attrs"> <!-- <Card title="快捷导航" v-bind="$attrs">
<template v-for="item in navItems" :key="item"> <template v-for="item in navItems" :key="item">
<CardGrid> <CardGrid>
<span class="flex flex-col items-center"> <span class="flex flex-col items-center">
@ -8,7 +8,7 @@
</span> </span>
</CardGrid> </CardGrid>
</template> </template>
</Card> </Card>-->
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { Card } from 'ant-design-vue'; import { Card } from 'ant-design-vue';

@ -1,7 +1,7 @@
<template> <template>
<Card title="销售统计" :loading="loading"> <!-- <Card title="销售统计" :loading="loading">
<div ref="chartRef" :style="{ width, height }"></div> <div ref="chartRef" :style="{ width, height }"></div>
</Card> </Card>-->
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { Ref, ref, watch } from 'vue'; import { Ref, ref, watch } from 'vue';

@ -3,22 +3,8 @@
<Avatar :src="userinfo.avatar || headerImg" :size="72" class="!mx-auto !block" /> <Avatar :src="userinfo.avatar || headerImg" :size="72" class="!mx-auto !block" />
<div class="md:ml-6 flex flex-col justify-center md:mt-0 mt-2"> <div class="md:ml-6 flex flex-col justify-center md:mt-0 mt-2">
<h1 class="md:text-lg text-md">早安, {{ userinfo.realname }}, 开始您一天的工作吧</h1> <h1 class="md:text-lg text-md">早安, {{ userinfo.realname }}, 开始您一天的工作吧</h1>
<span class="text-secondary"> 今日晴20 - 32 </span>
</div> </div>
<div class="flex flex-1 justify-end md:mt-0 mt-4"> <div class="flex flex-1 justify-end md:mt-0 mt-4">
<div class="flex flex-col justify-center text-right">
<span class="text-secondary"> 待办 </span>
<span class="text-2xl">2/10</span>
</div>
<div class="flex flex-col justify-center text-right md:mx-16 mx-12">
<span class="text-secondary"> 项目 </span>
<span class="text-2xl">8</span>
</div>
<div class="flex flex-col justify-center text-right md:mr-10 mr-4">
<span class="text-secondary"> 团队 </span>
<span class="text-2xl">300</span>
</div>
</div> </div>
</div> </div>
</template> </template>

@ -0,0 +1,27 @@
import { defHttp } from '/src/utils/http/axios';
import { useMessage } from "/src/hooks/web/useMessage";
const { createConfirm } = useMessage();
enum Api {
dataList = '/expert/expert/expdatanumber',
zclist = '/expert/expert/expdatanumberzc',
lyzjlist = '/expert/expert/expdatanumberdiffect',
}
export function getDataListApi() {
return defHttp.get({ url: Api.dataList });
}
export function getDataListApizc() {
return defHttp.get({ url: Api.zclist });
}
export function getDataListApiyc() {
return defHttp.get({ url: Api.yclist });
}
export function expdatanumberdiffect() {
return defHttp.get({ url: Api.lyzjlist });
}

@ -99,10 +99,16 @@
<j-switch v-model:value="formData.expsture" ></j-switch> <j-switch v-model:value="formData.expsture" ></j-switch>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="24" v-if="formData.expsture === 'Y'"> <!-- <a-col :span="24" v-if="formData.expsture === 'Y'">
<a-form-item label="异常备注" v-bind="validateInfos.errinfo" id="ExpertForm-errinfo" name="errinfo"> <a-form-item label="异常备注" v-bind="validateInfos.errinfo" id="ExpertForm-errinfo" name="errinfo">
<a-input v-model:value="formData.errinfo" placeholder="请输入异常备注" allow-clear ></a-input> <a-input v-model:value="formData.errinfo" placeholder="请输入异常备注" allow-clear ></a-input>
</a-form-item> </a-form-item>
</a-col>-->
<a-col :span="24" v-if="formData.expsture === 'Y'">
<a-form-item label="异常备注" v-bind="validateInfos.errinfo" id="ExpertForm-errinfo" name="errinfo">
<j-dict-select-tag v-model:value="formData.errinfo" dictCode="yczt" placeholder="请选择异常备注" allow-clear />
</a-form-item>
</a-col> </a-col>
<a-col :span="24" v-if="formData.adminopen === '3' || formData.compopen === '3'"> <a-col :span="24" v-if="formData.adminopen === '3' || formData.compopen === '3'">
@ -161,6 +167,7 @@ import JImageUpload from '/src/components/Form/src/jeecg/components/JImageUpload
adminopen: '', adminopen: '',
backinfo: '', backinfo: '',
zc: '', zc: '',
expsture: '',
}); });
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } }); const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } });

@ -11,10 +11,16 @@
<j-switch v-model:value="formData.expsture" ></j-switch> <j-switch v-model:value="formData.expsture" ></j-switch>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="24" v-if="formData.expsture === 'Y'"> <!-- <a-col :span="24" v-if="formData.expsture === 'Y'">
<a-form-item label="异常备注" v-bind="validateInfos.errinfo" id="ExpertForm-errinfo" name="errinfo"> <a-form-item label="异常备注" v-bind="validateInfos.errinfo" id="ExpertForm-errinfo" name="errinfo">
<a-input v-model:value="formData.errinfo" placeholder="请输入异常备注" allow-clear ></a-input> <a-input v-model:value="formData.errinfo" placeholder="请输入异常备注" allow-clear ></a-input>
</a-form-item> </a-form-item>
</a-col>-->
<a-col :span="24" v-if="formData.expsture === 'Y'">
<a-form-item label="异常备注" v-bind="validateInfos.errinfo" id="ExpertForm-errinfo" name="errinfo">
<j-dict-select-tag v-model:value="formData.errinfo" dictCode="yczt" placeholder="请选择异常备注" allow-clear />
</a-form-item>
</a-col> </a-col>
<a-col :span="24" v-if="formData.adminopen === '3' || formData.compopen === '3'"> <a-col :span="24" v-if="formData.adminopen === '3' || formData.compopen === '3'">
@ -72,6 +78,8 @@ import JImageUpload from '/src/components/Form/src/jeecg/components/JImageUpload
compopen: '', compopen: '',
adminopen: '', adminopen: '',
backinfo: '', backinfo: '',
zc: '',
expsture: '',
}); });
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } }); const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } });

@ -99,10 +99,16 @@
<j-switch v-model:value="formData.expsture" ></j-switch> <j-switch v-model:value="formData.expsture" ></j-switch>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="24" v-if="formData.expsture === 'Y'"> <!-- <a-col :span="24" v-if="formData.expsture === 'Y'">
<a-form-item label="异常备注" v-bind="validateInfos.errinfo" id="ExpertForm-errinfo" name="errinfo"> <a-form-item label="异常备注" v-bind="validateInfos.errinfo" id="ExpertForm-errinfo" name="errinfo">
<a-input v-model:value="formData.errinfo" placeholder="请输入异常备注" allow-clear ></a-input> <a-input v-model:value="formData.errinfo" placeholder="请输入异常备注" allow-clear ></a-input>
</a-form-item> </a-form-item>
</a-col>-->
<a-col :span="24" v-if="formData.expsture === 'Y'">
<a-form-item label="异常备注" v-bind="validateInfos.errinfo" id="ExpertForm-errinfo" name="errinfo">
<j-dict-select-tag v-model:value="formData.errinfo" dictCode="yczt" placeholder="请选择异常备注" allow-clear />
</a-form-item>
</a-col> </a-col>
<a-col :span="24" v-if="formData.adminopen === '3' || formData.compopen === '3'"> <a-col :span="24" v-if="formData.adminopen === '3' || formData.compopen === '3'">
@ -161,6 +167,7 @@ import JImageUpload from '/src/components/Form/src/jeecg/components/JImageUpload
errinfo: '', errinfo: '',
expsture: '', expsture: '',
backinfo: '', backinfo: '',
zc: '',
}); });
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } }); const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } });

@ -96,9 +96,9 @@
</a-col> </a-col>
<a-col :span="24" v-if="formData.adminopen === '3' || formData.compopen === '3'"> <a-col :span="24" v-if="formData.expsture === 'Y'">
<a-form-item label="异常备注" v-bind="validateInfos.errinfo" id="ExpertForm-backinfo" name="backinfo"> <a-form-item label="异常备注" v-bind="validateInfos.errinfo" id="ExpertForm-errinfo" name="errinfo">
<a-input v-model:value="formData.backinfo" placeholder="请输入异常备注" allow-clear ></a-input> <j-dict-select-tag v-model:value="formData.errinfo" dictCode="yczt" placeholder="请选择异常备注" allow-clear />
</a-form-item> </a-form-item>
</a-col> </a-col>
@ -150,6 +150,8 @@ import JImageUpload from '/src/components/Form/src/jeecg/components/JImageUpload
compopen: '', compopen: '',
adminopen: '', adminopen: '',
backinfo: '', backinfo: '',
expsture: '',
zc: '',
}); });
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } }); const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } });

@ -93,9 +93,9 @@
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="24" v-if="formData.adminopen === '3' || formData.compopen === '3'"> <a-col :span="24" v-if="formData.expsture === 'Y'">
<a-form-item label="异常备注" v-bind="validateInfos.errinfo" id="ExpertForm-backinfo" name="backinfo"> <a-form-item label="异常备注" v-bind="validateInfos.errinfo" id="ExpertForm-errinfo" name="errinfo">
<a-input v-model:value="formData.backinfo" placeholder="请输入异常备注" allow-clear ></a-input> <j-dict-select-tag v-model:value="formData.errinfo" dictCode="yczt" placeholder="请选择异常备注" allow-clear />
</a-form-item> </a-form-item>
</a-col> </a-col>
@ -148,6 +148,8 @@ import JImageUpload from '/src/components/Form/src/jeecg/components/JImageUpload
compopen: '', compopen: '',
adminopen: '', adminopen: '',
backinfo: '', backinfo: '',
expsture: '',
zc: '',
}); });
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } }); const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } });

Loading…
Cancel
Save