Browse Source

提交可视化后端

master
zhouhaibin 4 months ago
parent
commit
d87af44cc1
  1. 176
      src/views/dashboard/workbench/index.vue
  2. 122
      src/views/projectLib/projectInfo/projectInfo.api.ts

176
src/views/dashboard/workbench/index.vue

@ -3,26 +3,32 @@
<template #headerContent> <template #headerContent>
<WorkbenchHeader /> <WorkbenchHeader />
</template> </template>
<div > <div>
<ProjectCard :loading="loading" class="enter-y" /> <ProjectCard :loading="loading" class="enter-y" />
<!-- <DynamicInfo :loading="loading" class="!my-4 enter-y" /> --> <!-- <DynamicInfo :loading="loading" class="!my-4 enter-y" /> -->
</div> </div>
<div class="card-container"> <div class="card-container">
<a-tabs v-model:activeKey="activeKey" type="card"> <a-tabs v-model:activeKey="activeKey" type="card">
<a-tab-pane key="1" tab="总进度"> <a-tab-pane key="1" tab="总进度">
<div style="background-color: #ececec; padding: 20px"> <div style="padding: 20px; background-color: #ececec">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="8"> <a-col :span="8">
<a-card title="项目总进度" :bordered="false"> <a-card title="项目总进度" :bordered="false">
<!-- <el-progress type="circle" :percentage="25" :stroke-width="10" /> --> <!-- <el-progress type="circle" :percentage="25" :stroke-width="10" /> -->
<DonutChart :fininshNum="data.xiangmZJD.fininshNum" :unfininshNum="data.xiangmZJD.unfininshNum" <DonutChart
:name="'项目总进度'" /> :fininshNum="data.xiangmZJD.fininshNum"
:unfininshNum="data.xiangmZJD.unfininshNum"
:name="'项目总进度'"
/>
</a-card> </a-card>
</a-col> </a-col>
<a-col :span="8"> <a-col :span="8">
<a-card title="资金支付情况" :bordered="false"> <a-card title="资金支付情况" :bordered="false">
<DonutChartByMoney :fininshNum="data.xiangmuZJ.fininshNum" :unfininshNum="data.xiangmuZJ.unfininshNum" <DonutChartByMoney
:name="'资金支付情况'" /> :fininshNum="data.xiangmuZJ.fininshNum"
:unfininshNum="data.xiangmuZJ.unfininshNum"
:name="'资金支付情况'"
/>
</a-card> </a-card>
</a-col> </a-col>
<a-col :span="8"> <a-col :span="8">
@ -37,36 +43,48 @@
</div> </div>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="2" tab="所属改革任务"> <a-tab-pane key="2" tab="所属改革任务">
<div style="background-color: #ececec; padding: 20px"> <div style="padding: 20px; background-color: #ececec">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="8" v-for="(item, index) in data.SSGGRW" :key="index"> <a-col :span="8" v-for="(item, index) in data.SSGGRW" :key="index">
<a-card :title="item.name" :bordered="false"> <a-card :title="item.name" :bordered="false">
<!-- <el-progress type="circle" :percentage="25" :stroke-width="10" /> --> <!-- <el-progress type="circle" :percentage="25" :stroke-width="10" /> -->
<DonutChart :fininshNum="item.fininshNum" :unfininshNum="item.unfininshNum" :name="item.name" /> <DonutChart
:fininshNum="item.fininshNum"
:unfininshNum="item.unfininshNum"
:name="item.name"
/>
</a-card> </a-card>
</a-col> </a-col>
</a-row> </a-row>
</div> </div>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="3" tab="行政区域"> <a-tab-pane key="3" tab="行政区域">
<div style="background-color: #ececec; padding: 20px"> <div style="padding: 20px; background-color: #ececec">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="8" v-for="(item, index) in data.XXQY" :key="index"> <a-col :span="8" v-for="(item, index) in data.XXQY" :key="index">
<a-card :title="item.name" :bordered="false"> <a-card :title="item.name" :bordered="false">
<!-- <el-progress type="circle" :percentage="25" :stroke-width="10" /> --> <!-- <el-progress type="circle" :percentage="25" :stroke-width="10" /> -->
<DonutChart :fininshNum="item.fininshNum" :unfininshNum="item.unfininshNum" :name="item.name" /> <DonutChart
:fininshNum="item.fininshNum"
:unfininshNum="item.unfininshNum"
:name="item.name"
/>
</a-card> </a-card>
</a-col> </a-col>
</a-row> </a-row>
</div> </div>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="4" tab="单位属性"> <a-tab-pane key="4" tab="单位属性">
<div style="background-color: #ececec; padding: 20px"> <div style="padding: 20px; background-color: #ececec">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="8" v-for="(item, index) in data.DWSX" :key="index"> <a-col :span="8" v-for="(item, index) in data.DWSX" :key="index">
<a-card :title="item.name" :bordered="false"> <a-card :title="item.name" :bordered="false">
<!-- <el-progress type="circle" :percentage="25" :stroke-width="10" /> --> <!-- <el-progress type="circle" :percentage="25" :stroke-width="10" /> -->
<DonutChart :fininshNum="item.fininshNum" :unfininshNum="item.unfininshNum" :name="item.name" /> <DonutChart
:fininshNum="item.fininshNum"
:unfininshNum="item.unfininshNum"
:name="item.name"
/>
</a-card> </a-card>
</a-col> </a-col>
</a-row> </a-row>
@ -77,69 +95,73 @@
</PageWrapper> </PageWrapper>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, reactive } from 'vue'; import { ref, reactive, onMounted } from 'vue';
import { PageWrapper } from '@/components/Page'; import { PageWrapper } from '@/components/Page';
import WorkbenchHeader from './components/WorkbenchHeader.vue'; import { count } from '@/views/projectLib/projectInfo/projectInfo.api';
import DonutChart from './components/DonutChart.vue'; import WorkbenchHeader from './components/WorkbenchHeader.vue';
import PieChart from './components/PieChart.vue'; import DonutChart from './components/DonutChart.vue';
import ProjectCard from './components/ProjectCard.vue'; import PieChart from './components/PieChart.vue';
import ProjectCard from './components/ProjectCard.vue';
import DonutChartByMoney from './components/DonutChartByMoney.vue';
import planSummary from '@/views/projectSummary/planSummary/indeForDashboard.vue';
const loading = ref(true);
const activeKey = ref('1');
const data = reactive({
xiangmZJD: {
fininshNum: 40,
unfininshNum: 10,
},
xiangmuZJ: {
fininshNum: 400000,
unfininshNum: 230000,
},
xiangmuZT: [
{ value: 1048, name: '待入库' },
{ value: 735, name: '入库中' },
{ value: 580, name: '已入库' },
{ value: 484, name: '计划审批中' },
{ value: 300, name: '计划执行中' },
{ value: 300, name: '已归档' },
{ value: 12, name: '已出库' }
],
SSGGRW: [
{ name: "2+N紧密型城市医疗集团建设", fininshNum: 100, unfininshNum: 30 },
{ name: "2+9+9+N县域医共体建设", fininshNum: 140, unfininshNum: 20 },
{ name: "市县公立医院妇幼能力建设", fininshNum: 140, unfininshNum: 120 },
{ name: "高水平县级医院建设 ", fininshNum: 140, unfininshNum: 90 },
{ name: "打造长三角市域医学高地", fininshNum: 140, unfininshNum: 90 },
{ name: "公立医院院前急救与院内救治服务融合发展", fininshNum: 170, unfininshNum: 90 },
{ name: "医共体下三医联动改革", fininshNum: 170, unfininshNum: 90 },
{ name: "智慧医院服务能力提档升级", fininshNum: 100, unfininshNum: 30 },
{ name: "数字健康大脑建设", fininshNum: 140, unfininshNum: 270 },
{ name: "舒心就医", fininshNum: 140, unfininshNum: 270 },
{ name: "中医药固本培元", fininshNum: 140, unfininshNum: 210 },
{ name: "公立医院运营管理", fininshNum: 140, unfininshNum: 80 },
{ name: "公立医院党建全行业引领改革工程 ", fininshNum: 140, unfininshNum: 40 },
{ name: "高质量临床重点专科建设 ", fininshNum: 140, unfininshNum: 80 },
],
XXQY: [
{ name: "南浔区", fininshNum: 100, unfininshNum: 30 },
{ name: "吴兴区", fininshNum: 140, unfininshNum: 20 },
{ name: "市本级", fininshNum: 140, unfininshNum: 120 },
{ name: "安吉县", fininshNum: 140, unfininshNum: 90 },
{ name: "德清县", fininshNum: 140, unfininshNum: 90 },
{ name: "长兴县", fininshNum: 170, unfininshNum: 90 },
],
DWSX: [
{ name: "卫生行政部门", fininshNum: 1000, unfininshNum: 3000 },
{ name: "医疗机构 ", fininshNum: 1400, unfininshNum: 2000 },
]
import DonutChartByMoney from './components/DonutChartByMoney.vue';
import planSummary from '@/views/projectSummary/planSummary/indeForDashboard.vue';
}) const loading = ref(true);
const activeKey = ref('1');
let data = reactive({
xiangmZJD: {
fininshNum: 40,
unfininshNum: 10,
},
xiangmuZJ: {
fininshNum: 400000,
unfininshNum: 230000,
},
xiangmuZT: [
{ value: 1048, name: '待入库' },
{ value: 735, name: '入库中' },
{ value: 580, name: '已入库' },
{ value: 484, name: '计划审批中' },
{ value: 300, name: '计划执行中' },
{ value: 300, name: '已归档' },
{ value: 12, name: '已出库' },
],
SSGGRW: [
{ name: '2+N紧密型城市医疗集团建设', fininshNum: 100, unfininshNum: 30 },
{ name: '2+9+9+N县域医共体建设', fininshNum: 140, unfininshNum: 20 },
{ name: '市县公立医院妇幼能力建设', fininshNum: 140, unfininshNum: 120 },
{ name: '高水平县级医院建设 ', fininshNum: 140, unfininshNum: 90 },
{ name: '打造长三角市域医学高地', fininshNum: 140, unfininshNum: 90 },
{ name: '公立医院院前急救与院内救治服务融合发展', fininshNum: 170, unfininshNum: 90 },
{ name: '医共体下三医联动改革', fininshNum: 170, unfininshNum: 90 },
{ name: '智慧医院服务能力提档升级', fininshNum: 100, unfininshNum: 30 },
{ name: '数字健康大脑建设', fininshNum: 140, unfininshNum: 270 },
{ name: '舒心就医', fininshNum: 140, unfininshNum: 270 },
{ name: '中医药固本培元', fininshNum: 140, unfininshNum: 210 },
{ name: '公立医院运营管理', fininshNum: 140, unfininshNum: 80 },
{ name: '公立医院党建全行业引领改革工程 ', fininshNum: 140, unfininshNum: 40 },
{ name: '高质量临床重点专科建设 ', fininshNum: 140, unfininshNum: 80 },
],
XXQY: [
{ name: '南浔区', fininshNum: 100, unfininshNum: 30 },
{ name: '吴兴区', fininshNum: 140, unfininshNum: 20 },
{ name: '市本级', fininshNum: 140, unfininshNum: 120 },
{ name: '安吉县', fininshNum: 140, unfininshNum: 90 },
{ name: '德清县', fininshNum: 140, unfininshNum: 90 },
{ name: '长兴县', fininshNum: 170, unfininshNum: 90 },
],
DWSX: [
{ name: '卫生行政部门', fininshNum: 1000, unfininshNum: 3000 },
{ name: '医疗机构 ', fininshNum: 1400, unfininshNum: 2000 },
],
});
setTimeout(() => { onMounted(() => {
loading.value = false; count().then((res) => {
}, 1500); data = res;
});
});
setTimeout(() => {
loading.value = false;
}, 1500);
</script> </script>

122
src/views/projectLib/projectInfo/projectInfo.api.ts

@ -1,77 +1,107 @@
import { downloadFile } from "@/api/common/api" import { downloadFile } from '@/api/common/api';
import { defHttp } from '@/utils/http/axios'; import { defHttp } from '@/utils/http/axios';
import { useUserStore } from '@/store/modules/user'; import { useUserStore } from '@/store/modules/user';
const userStore = useUserStore(); const userStore = useUserStore();
console.log("userStore.getUserInfo.roleList",userStore.getUserInfo.roleList) console.log('userStore.getUserInfo.roleList', userStore.getUserInfo.roleList);
export enum Api { export enum Api {
list = '/sys/user/queryByOrgCodeForAddressList', list = '/sys/user/queryByOrgCodeForAddressList',
queryProcessInfo = '/workflow/getprocessInfo', queryProcessInfo = '/workflow/getprocessInfo',
queryProjectInfoById = '/huzhouProject/queryProjectInfoById', queryProjectInfoById = '/huzhouProject/queryProjectInfoById',
getProjectInfoAndChildPageList="/huzhouProject/getProjectInfoAndChildPageList", getProjectInfoAndChildPageList = '/huzhouProject/getProjectInfoAndChildPageList',
getProjectInfoPageList="/huzhouProject/getProjectInfoPageList", getProjectInfoPageList = '/huzhouProject/getProjectInfoPageList',
submitUploadFile = '/huzhouUploadfileinfo/submitUploadFile', submitUploadFile = '/huzhouUploadfileinfo/submitUploadFile',
uploacFilePageList = '/huzhouUploadfileinfo/uploacFilePageList', uploacFilePageList = '/huzhouUploadfileinfo/uploacFilePageList',
batchImportProjects="/huzhouProject/batchImportProjects", batchImportProjects = '/huzhouProject/batchImportProjects',
batchdownloadProject="/huzhouProject/batchdownloadProject", batchdownloadProject = '/huzhouProject/batchdownloadProject',
getChangeFieldManageDict="/huzhouChangefieldmanage/getChangeFieldManageDict", getChangeFieldManageDict = '/huzhouChangefieldmanage/getChangeFieldManageDict',
submitFieldchange = '/huzhouFieldchangehistory/submitFieldchange',
getFieldchangeByGroupid = '/huzhouFieldchangehistory/getFieldchangeByGroupid',
getFieldchangeFileinfoList = '/huzhouFieldchangehistory/getFieldchangeFileinfoList',
approvalFieldchange = '/huzhouFieldchangehistory/approvalFieldchange',
getFieldchangeListByprojectid = '/huzhouFieldchangehistory/getFieldchangeListByprojectid',
addSubProjectinfo = '/huzhouSubProjectinfo/addSubProjectinfo',
modifySubProjectinfo = '/huzhouSubProjectinfo/modifySubProjectinfo',
getRemainingMoneyinfo = '/huzhouSubProjectinfo/getRemainingMoneyinfo',
submitFieldchange="/huzhouFieldchangehistory/submitFieldchange", count = '/huzhouProject/count',
getFieldchangeByGroupid="/huzhouFieldchangehistory/getFieldchangeByGroupid",
getFieldchangeFileinfoList="/huzhouFieldchangehistory/getFieldchangeFileinfoList",
approvalFieldchange="/huzhouFieldchangehistory/approvalFieldchange",
getFieldchangeListByprojectid="/huzhouFieldchangehistory/getFieldchangeListByprojectid",
addSubProjectinfo="/huzhouSubProjectinfo/addSubProjectinfo",
modifySubProjectinfo="/huzhouSubProjectinfo/modifySubProjectinfo",
getRemainingMoneyinfo="/huzhouSubProjectinfo/getRemainingMoneyinfo",
} }
/** /**
* *
*/ */
export const queryProjectInfoById = (params?) => defHttp.get({ url: Api.queryProjectInfoById, params }); export const queryProjectInfoById = (params?) =>
defHttp.get({ url: Api.queryProjectInfoById, params });
export const addSubProjectinfo = (params?) => defHttp.post({ url: Api.addSubProjectinfo, params }); export const addSubProjectinfo = (params?) => defHttp.post({ url: Api.addSubProjectinfo, params });
export const modifySubProjectinfo = (params?) => defHttp.post({ url: Api.modifySubProjectinfo, params }); export const modifySubProjectinfo = (params?) =>
export const getRemainingMoneyinfo = (params?) => defHttp.get({ url: Api.getRemainingMoneyinfo, params }); defHttp.post({ url: Api.modifySubProjectinfo, params });
export const getRemainingMoneyinfo = (params?) =>
defHttp.get({ url: Api.getRemainingMoneyinfo, params });
export const count = (params?) => defHttp.get({ url: Api.count, params });
/** /**
* *
*/ */
export const getProjectInfoAndChildPageList = (params?) => defHttp.get({ url: Api.getProjectInfoAndChildPageList, params }); export const getProjectInfoAndChildPageList = (params?) =>
export const getProjectInfoPageList = (params?) => defHttp.get({ url: Api.getProjectInfoPageList, params }); defHttp.get({ url: Api.getProjectInfoAndChildPageList, params });
export const getProjectInfoPageList = (params?) =>
defHttp.get({ url: Api.getProjectInfoPageList, params });
/** /**
* list * list
*/ */
export const queryProcessInfo = (params?) => defHttp.get({ url: Api.queryProcessInfo, params }); export const queryProcessInfo = (params?) => defHttp.get({ url: Api.queryProcessInfo, params });
export const getChangeFieldManageDict = (params?) => defHttp.get({ url: Api.getChangeFieldManageDict, params }); export const getChangeFieldManageDict = (params?) =>
export const getFieldchangeByGroupid = (params?) => defHttp.get({ url: Api.getFieldchangeByGroupid, params }); defHttp.get({ url: Api.getChangeFieldManageDict, params });
export const getFieldchangeFileinfoList = (params?) => defHttp.get({ url: Api.getFieldchangeFileinfoList, params }); export const getFieldchangeByGroupid = (params?) =>
export const getFieldchangeListByprojectid = (params?) => defHttp.get({ url: Api.getFieldchangeListByprojectid, params }); defHttp.get({ url: Api.getFieldchangeByGroupid, params });
export const getFieldchangeFileinfoList = (params?) =>
defHttp.get({ url: Api.getFieldchangeFileinfoList, params });
export const getFieldchangeListByprojectid = (params?) =>
defHttp.get({ url: Api.getFieldchangeListByprojectid, params });
export const approvalFieldchange = (params?) =>defHttp.post({ url: Api.approvalFieldchange,headers:{ "Content-Type": "multipart/form-data" }, params }) export const approvalFieldchange = (params?) =>
export const submitFieldchange = (params?) =>defHttp.post({ url: Api.submitFieldchange,headers:{ "Content-Type": "multipart/form-data" }, params }) defHttp.post({
url: Api.approvalFieldchange,
headers: { 'Content-Type': 'multipart/form-data' },
params,
});
export const submitFieldchange = (params?) =>
defHttp.post({
url: Api.submitFieldchange,
headers: { 'Content-Type': 'multipart/form-data' },
params,
});
export const submitUploadFile = (params?) =>defHttp.post({ url: Api.submitUploadFile,headers:{ "Content-Type": "multipart/form-data" }, params }) export const submitUploadFile = (params?) =>
export const uploacFilePageList =(params?) => defHttp.get({ url: Api.uploacFilePageList, params }); defHttp.post({
export const batchImportProjects = (params?) =>defHttp.post({ url: Api.batchImportProjects,headers:{ "Content-Type": "multipart/form-data" }, params }) url: Api.submitUploadFile,
headers: { 'Content-Type': 'multipart/form-data' },
params,
});
export const uploacFilePageList = (params?) => defHttp.get({ url: Api.uploacFilePageList, params });
export const batchImportProjects = (params?) =>
defHttp.post({
url: Api.batchImportProjects,
headers: { 'Content-Type': 'multipart/form-data' },
params,
});
export const batchdownloadProject = (params?) => downloadFile(Api.batchdownloadProject,"项目入库数据.xlsx",params) export const batchdownloadProject = (params?) =>
downloadFile(Api.batchdownloadProject, '项目入库数据.xlsx', params);
export const isShowByRoles = (roles:string) => { export const isShowByRoles = (roles: string) => {
let roleList= userStore.getUserInfo.roleList const roleList = userStore.getUserInfo.roleList;
let isShow = false let isShow = false;
roleList?.forEach(item=>{ roleList?.forEach((item) => {
if(item.code=='sys:admin'){ if (item.code == 'sys:admin') {
isShow = true; isShow = true;
return return;
} }
if(roles.indexOf(item.code)!=-1){ if (roles.indexOf(item.code) != -1) {
isShow=true isShow = true;
return return;
} }
}) });
return isShow return isShow;
} };

Loading…
Cancel
Save