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>
<WorkbenchHeader />
</template>
<div >
<ProjectCard :loading="loading" class="enter-y" />
<!-- <DynamicInfo :loading="loading" class="!my-4 enter-y" /> -->
</div>
<div>
<ProjectCard :loading="loading" class="enter-y" />
<!-- <DynamicInfo :loading="loading" class="!my-4 enter-y" /> -->
</div>
<div class="card-container">
<a-tabs v-model:activeKey="activeKey" type="card">
<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-col :span="8">
<a-card title="项目总进度" :bordered="false">
<!-- <el-progress type="circle" :percentage="25" :stroke-width="10" /> -->
<DonutChart :fininshNum="data.xiangmZJD.fininshNum" :unfininshNum="data.xiangmZJD.unfininshNum"
:name="'项目总进度'" />
<DonutChart
:fininshNum="data.xiangmZJD.fininshNum"
:unfininshNum="data.xiangmZJD.unfininshNum"
:name="'项目总进度'"
/>
</a-card>
</a-col>
<a-col :span="8">
<a-card title="资金支付情况" :bordered="false">
<DonutChartByMoney :fininshNum="data.xiangmuZJ.fininshNum" :unfininshNum="data.xiangmuZJ.unfininshNum"
:name="'资金支付情况'" />
<DonutChartByMoney
:fininshNum="data.xiangmuZJ.fininshNum"
:unfininshNum="data.xiangmuZJ.unfininshNum"
:name="'资金支付情况'"
/>
</a-card>
</a-col>
<a-col :span="8">
@ -37,36 +43,48 @@
</div>
</a-tab-pane>
<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-col :span="8" v-for="(item, index) in data.SSGGRW" :key="index">
<a-card :title="item.name" :bordered="false">
<!-- <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-col>
</a-row>
</div>
</a-tab-pane>
<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-col :span="8" v-for="(item, index) in data.XXQY" :key="index">
<a-card :title="item.name" :bordered="false">
<!-- <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-col>
</a-row>
</div>
</a-tab-pane>
<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-col :span="8" v-for="(item, index) in data.DWSX" :key="index">
<a-card :title="item.name" :bordered="false">
<!-- <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-col>
</a-row>
@ -77,69 +95,73 @@
</PageWrapper>
</template>
<script lang="ts" setup>
import { ref, reactive } from 'vue';
import { PageWrapper } from '@/components/Page';
import WorkbenchHeader from './components/WorkbenchHeader.vue';
import DonutChart from './components/DonutChart.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 { ref, reactive, onMounted } from 'vue';
import { PageWrapper } from '@/components/Page';
import { count } from '@/views/projectLib/projectInfo/projectInfo.api';
import WorkbenchHeader from './components/WorkbenchHeader.vue';
import DonutChart from './components/DonutChart.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');
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(() => {
loading.value = false;
}, 1500);
onMounted(() => {
count().then((res) => {
data = res;
});
});
setTimeout(() => {
loading.value = false;
}, 1500);
</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 { useUserStore } from '@/store/modules/user';
const userStore = useUserStore();
console.log("userStore.getUserInfo.roleList",userStore.getUserInfo.roleList)
console.log('userStore.getUserInfo.roleList', userStore.getUserInfo.roleList);
export enum Api {
list = '/sys/user/queryByOrgCodeForAddressList',
queryProcessInfo = '/workflow/getprocessInfo',
queryProjectInfoById = '/huzhouProject/queryProjectInfoById',
getProjectInfoAndChildPageList="/huzhouProject/getProjectInfoAndChildPageList",
getProjectInfoPageList="/huzhouProject/getProjectInfoPageList",
getProjectInfoAndChildPageList = '/huzhouProject/getProjectInfoAndChildPageList',
getProjectInfoPageList = '/huzhouProject/getProjectInfoPageList',
submitUploadFile = '/huzhouUploadfileinfo/submitUploadFile',
uploacFilePageList = '/huzhouUploadfileinfo/uploacFilePageList',
batchImportProjects="/huzhouProject/batchImportProjects",
batchdownloadProject="/huzhouProject/batchdownloadProject",
getChangeFieldManageDict="/huzhouChangefieldmanage/getChangeFieldManageDict",
batchImportProjects = '/huzhouProject/batchImportProjects',
batchdownloadProject = '/huzhouProject/batchdownloadProject',
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",
getFieldchangeByGroupid="/huzhouFieldchangehistory/getFieldchangeByGroupid",
getFieldchangeFileinfoList="/huzhouFieldchangehistory/getFieldchangeFileinfoList",
approvalFieldchange="/huzhouFieldchangehistory/approvalFieldchange",
getFieldchangeListByprojectid="/huzhouFieldchangehistory/getFieldchangeListByprojectid",
addSubProjectinfo="/huzhouSubProjectinfo/addSubProjectinfo",
modifySubProjectinfo="/huzhouSubProjectinfo/modifySubProjectinfo",
getRemainingMoneyinfo="/huzhouSubProjectinfo/getRemainingMoneyinfo",
count = '/huzhouProject/count',
}
/**
*
*/
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 modifySubProjectinfo = (params?) => defHttp.post({ url: Api.modifySubProjectinfo, params });
export const getRemainingMoneyinfo = (params?) => defHttp.get({ url: Api.getRemainingMoneyinfo, params });
export const modifySubProjectinfo = (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 getProjectInfoPageList = (params?) => defHttp.get({ url: Api.getProjectInfoPageList, params });
export const getProjectInfoAndChildPageList = (params?) =>
defHttp.get({ url: Api.getProjectInfoAndChildPageList, params });
export const getProjectInfoPageList = (params?) =>
defHttp.get({ url: Api.getProjectInfoPageList, params });
/**
* list
*/
export const queryProcessInfo = (params?) => defHttp.get({ url: Api.queryProcessInfo, params });
export const getChangeFieldManageDict = (params?) => defHttp.get({ url: Api.getChangeFieldManageDict, params });
export const getFieldchangeByGroupid = (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 getChangeFieldManageDict = (params?) =>
defHttp.get({ url: Api.getChangeFieldManageDict, params });
export const getFieldchangeByGroupid = (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 submitFieldchange = (params?) =>defHttp.post({ url: Api.submitFieldchange,headers:{ "Content-Type": "multipart/form-data" }, params })
export const approvalFieldchange = (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 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 submitUploadFile = (params?) =>
defHttp.post({
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) => {
let roleList= userStore.getUserInfo.roleList
let isShow = false
roleList?.forEach(item=>{
if(item.code=='sys:admin'){
export const isShowByRoles = (roles: string) => {
const roleList = userStore.getUserInfo.roleList;
let isShow = false;
roleList?.forEach((item) => {
if (item.code == 'sys:admin') {
isShow = true;
return
return;
}
if(roles.indexOf(item.code)!=-1){
isShow=true
return
if (roles.indexOf(item.code) != -1) {
isShow = true;
return;
}
})
return isShow
}
});
return isShow;
};

Loading…
Cancel
Save