Browse Source

优化图标

master
zhouhaibin 3 months ago
parent
commit
83961b22a0
  1. 254
      src/views/dashboard/workbench/index.vue
  2. 15
      src/views/projectBoard/childBoard/bar.vue
  3. 9
      src/views/projectBoard/childBoard/bas_bar.vue
  4. 4
      src/views/projectBoard/childBoard/childBoard.api.ts
  5. 4
      src/views/projectBoard/childBoard/childBoard.data.ts
  6. 316
      src/views/projectBoard/childBoard/gaiGeRenWu.vue
  7. 157
      src/views/projectBoard/childBoard/xingZhengQuHua.vue
  8. 8
      src/views/projectLib/projectInfo/index.vue

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

@ -7,204 +7,72 @@
<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="总进度"
v-if="
isShowByRoles(
'manageOrg,sritUser,projectViewOnly,中医处,妇幼处,科教处,医政处,财审处,体改处,人事处,机关党委,规信处,南浔区,长兴县,吴兴区,德清县,安吉县,市本级',
)
"
>
<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="'项目总进度'"
/>
</a-card>
</a-col>
<a-col :span="8">
<a-card
title="资金支付情况"
:bordered="false"
v-if="
isShowByRoles(
'manageOrg,sritUser,projectViewOnly,中医处,妇幼处,科教处,医政处,财审处,体改处,人事处,机关党委,规信处',
)
"
>
<DonutChartByMoney
:fininshNum="data.xiangmuZJ.fininshNum"
:unfininshNum="data.xiangmuZJ.unfininshNum"
:name="'资金支付情况'"
/>
</a-card>
</a-col>
<a-col :span="8">
<a-card
title="项目状态"
:bordered="false"
v-if="
isShowByRoles(
'manageOrg,sritUser,projectViewOnly,中医处,妇幼处,科教处,医政处,财审处,体改处,人事处,机关党委,规信处',
)
"
>
<PieChart :data="data.xiangmuZT" v-if="data.xiangmuZT" />
</a-card>
</a-col>
</a-row>
</div>
<!-- <div>
<planSummary />
</div> -->
</a-tab-pane>
<a-tab-pane
key="2"
tab="所属改革任务"
v-if="
isShowByRoles(
'manageOrg,sritUser,projectViewOnly,中医处,妇幼处,科教处,医政处,财审处,体改处,人事处,机关党委,规信处',
)
"
>
<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"
/>
</a-card>
</a-col>
</a-row>
</div>
</a-tab-pane>
<a-tab-pane
key="3"
tab="行政区域"
v-if="
isShowByRoles(
'manageOrg,sritUser,projectViewOnly,中医处,妇幼处,科教处,医政处,财审处,体改处,人事处,机关党委,规信处',
)
"
>
<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"
/>
</a-card>
</a-col>
</a-row>
</div>
</a-tab-pane>
<a-tab-pane
key="4"
tab="单位属性"
v-if="
isShowByRoles(
'manageOrg,sritUser,projectViewOnly,中医处,妇幼处,科教处,医政处,财审处,体改处,人事处,机关党委,规信处',
)
"
>
<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"
/>
</a-card>
</a-col>
</a-row>
</div>
</a-tab-pane>
</a-tabs>
<div>
<planSummary />
</div>
<div class="card-container" v-if="false">
</div>
<div>
<planSummary />
</div>
</PageWrapper>
</template>
<script lang="ts" setup>
import { ref, reactive, onMounted } from 'vue';
import { PageWrapper } from '@/components/Page';
import { count, isShowByRoles } 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 { 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 ProjectCard from './components/ProjectCard.vue';
import DonutChartByMoney from './components/DonutChartByMoney.vue';
import planSummary from '@/views/projectSummary/planSummary/indeForDashboard.vue';
import planSummary from '@/views/projectSummary/planSummary/indeForDashboard.vue';
const loading = ref(true);
const activeKey = ref('0');
let data = reactive({
xiangmZJD: {
fininshNum: 1,
unfininshNum: 2,
},
xiangmuZJ: {
fininshNum: 1,
unfininshNum: 2,
},
xiangmuZT: [{ name: '已建', value: 100 }],
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 },
],
});
const loading = ref(true);
const activeKey = ref('0');
let data = reactive({
xiangmZJD: {
fininshNum: 1,
unfininshNum: 2,
},
xiangmuZJ: {
fininshNum: 1,
unfininshNum: 2,
},
xiangmuZT: [{ name: '已建', value: 100 }],
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 },
],
});
onMounted(() => {
console.log('datadatadatadatadatadata', data);
});
setTimeout(async () => {
data = await count();
loading.value = false;
activeKey.value = '1';
}, 10);
onMounted(() => {
console.log('datadatadatadatadatadata', data);
});
setTimeout(async () => {
data = await count();
loading.value = false;
activeKey.value = '1';
}, 10);
</script>

15
src/views/projectBoard/childBoard/bar.vue

@ -1,5 +1,5 @@
<template>
<v-chart :option="option" theme="auto" :autoresize="true" style="width: 100%; height: 400px" />
<v-chart :option="option" theme="auto" :autoresize="true" style="width: 95%; height: 350px" />
</template>
<script lang="ts" name="PieChart" setup>
@ -11,13 +11,6 @@
title: {
text: receivingParameter.title,
},
// tooltip: {
// trigger: 'axis',
// axisPointer: {
// // Use axis to trigger tooltip
// type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
// }
// },
legend: {},
grid: {
left: '3%',
@ -49,7 +42,7 @@
{
name: '上级资金支付执行率',
type: 'bar',
stack: 'total',
// stack: 'total',
label: {
show: true,
formatter: function (params) {
@ -64,11 +57,11 @@
{
name: '资金支付执行率',
type: 'bar',
stack: 'total',
// stack: 'total',
label: {
show: true,
formatter: function (params) {
return (params.value * 100).toFixed() + '%';
return (params.value * 100).toFixed(0) + '%';
},
},
emphasis: {

9
src/views/projectBoard/childBoard/bas_bar.vue

@ -1,5 +1,5 @@
<template>
<v-chart :option="option" theme="auto" :autoresize="true" style="width: 100%; height: 400px" />
<v-chart :option="option" theme="auto" :autoresize="true" style="width: 93%; height: 350px" />
</template>
<script lang="ts" name="PieChart" setup>
@ -7,18 +7,15 @@ import { ref, reactive } from 'vue'
let receivingParameter = defineProps(["title", "data"])
let option = reactive({})
option = {
title: {
text: receivingParameter.title
},
// tooltip: {
// trigger: 'axis',
// axisPointer: {
// type: 'shadow'
// }
// },
// },
grid: {
left: '3%',
right: '4%',
// right: '4%',
bottom: '3%',
containLabel: true
},

4
src/views/projectBoard/childBoard/childBoard.api.ts

@ -13,8 +13,8 @@ export enum Api {
*
*/
export const showCountBoardByReformName = () => defHttp.get({ url: Api.showCountBoardByReformName })
export const showCountBoardByAdminDivision = () => defHttp.get({ url: Api.showCountBoardByAdminDivision })
export const showCountBoardByReformName = (params?) => defHttp.get({ url: Api.showCountBoardByReformName,params})
export const showCountBoardByAdminDivision = (params?) => defHttp.get({ url: Api.showCountBoardByAdminDivision,params})
export const getDimensionPageSorted = (params) => defHttp.get({ url: Api.getDimensionPageSorted,params })
export const getPageSorted = (params) => defHttp.get({ url: Api.getPageSorted,params })

4
src/views/projectBoard/childBoard/childBoard.data.ts

@ -54,6 +54,7 @@ export const danweizhuticolumns: BasicColumn[] = [
dataIndex: 'projectProgress',
resizable: true,
slots: { customRender: 'projectProgress' },
fixed: 'right',
sorter: true,
},
];
@ -92,7 +93,7 @@ export const shifanxiangmucolumns: BasicColumn[] = [
title: '项目名称',
dataIndex: 'projectName',
resizable: true,
ellipsis:false
},
{
title: '行政区划',
@ -154,6 +155,7 @@ export const shifanxiangmucolumns: BasicColumn[] = [
dataIndex: 'projectProgress',
resizable: true,
slots: { customRender: 'projectProgress' },
fixed: 'right',
sorter: true,
},
];

316
src/views/projectBoard/childBoard/gaiGeRenWu.vue

@ -4,18 +4,26 @@
<a-col :span="12">
<a-card title="项目总进度" :body-style="{ padding: 0, overflow: 'hidden' }">
<a-row>
<a-col :span="12" class="flex justify-center items-center h-58">
<el-progress type="dashboard" :stroke-width="18" :percentage="Number(data.totalProgress.progress)*100>0?Number(data.totalProgress.progress)*100:0" :width="200">
<a-col :span="10" class="flex justify-center items-center h-58">
<el-progress
type="dashboard"
:stroke-width="18"
:percentage="
Number(data.totalProgress.progress) * 100 > 0
? Number(data.totalProgress.progress) * 100
: 0
"
:width="200"
>
<template #default="{ percentage }">
<div class="flex flex-col ...">
<div>总进度</div>
<div class="mt-4 text-sky-400"> {{ percentage }}%</div>
</div>
</template>
</el-progress>
</a-col>
<a-col :span="4" class="flex justify-center items-center ">
<a-col :span="4" class="flex justify-center items-center">
<div class="flex flex-col">
<div class="text-center">
<!-- 这里放置内容 -->
@ -53,17 +61,25 @@
</a-col>
</a-row>
</a-card>
</a-col>
<a-col :span="12">
<a-card title="资金支付情况" :body-style="{ padding: 0, overflow: 'hidden' }">
<a-row>
<a-col :span="8" class="flex justify-center items-center h-58">
<el-progress type="dashboard" :stroke-width="18" :percentage="Number(data.countFundByFundType.paymentExecutionRate)*100>0?Number(data.countFundByFundType.paymentExecutionRate)*100:0" :width="200">
<el-progress
type="dashboard"
:stroke-width="18"
:percentage="
Number(data.countFundByFundType.paymentExecutionRate) * 100 > 0
? Number(data.countFundByFundType.paymentExecutionRate) * 100
: 0
"
:width="200"
>
<template #default="{ percentage }">
<div class="flex flex-col ...">
<div>合同总金额</div>
<div class="mt-4 text-blue-600">{{data.countFundByFundType.totalMoney}}</div>
<div class="mt-4 text-blue-600">{{ data.countFundByFundType.totalMoney }}</div>
<div class="mt-4 text-sky-400"> {{ percentage }}%</div>
</div>
</template>
@ -74,8 +90,17 @@
<div>
<div class="flex flex-wrap">
<div class="mr-2">中央资金</div>
<div class="mr-2"><el-progress class="w-65" :text-inside="true" :stroke-width="18"
:percentage="Number(data.countFundByFundType.payCentralExecutionRate)*100>0?Number(data.countFundByFundType.payCentralExecutionRate)*100:0" />
<div class="mr-2"
><el-progress
class="w-65"
:text-inside="true"
:stroke-width="18"
:percentage="
Number(data.countFundByFundType.payCentralExecutionRate) * 100 > 0
? Number(data.countFundByFundType.payCentralExecutionRate) * 100
: 0
"
/>
</div>
<div>{{ data.countFundByFundType.totalCentral }}</div>
</div>
@ -83,17 +108,35 @@
<div class="mt-4">
<div class="flex flex-wrap">
<div class="mr-2">省级资金</div>
<div class="mr-2"><el-progress class="w-65" :text-inside="true" :stroke-width="18"
:percentage="Number(data.countFundByFundType.payProvincialExecutionRate)*100>0?Number(data.countFundByFundType.payProvincialExecutionRate)*100:0" />
<div class="mr-2"
><el-progress
class="w-65"
:text-inside="true"
:stroke-width="18"
:percentage="
Number(data.countFundByFundType.payProvincialExecutionRate) * 100 > 0
? Number(data.countFundByFundType.payProvincialExecutionRate) * 100
: 0
"
/>
</div>
<div>{{data.countFundByFundType.totalProvincial}}</div>
<div>{{ data.countFundByFundType.totalProvincial }}</div>
</div>
</div>
<div class="mt-4">
<div class="flex flex-wrap">
<div class="mr-2">市级资金</div>
<div class="mr-2"><el-progress class="w-65" :text-inside="true" :stroke-width="18"
:percentage="Number(data.countFundByFundType.payCityExecutionRate)*100>0?Number(data.countFundByFundType.payCityExecutionRate)*100:0" />
<div class="mr-2"
><el-progress
class="w-65"
:text-inside="true"
:stroke-width="18"
:percentage="
Number(data.countFundByFundType.payCityExecutionRate) * 100 > 0
? Number(data.countFundByFundType.payCityExecutionRate) * 100
: 0
"
/>
</div>
<div>{{ data.countFundByFundType.totalCity }}</div>
</div>
@ -101,55 +144,118 @@
<div class="mt-4">
<div class="flex flex-wrap">
<div class="mr-2">区县资金</div>
<div class="mr-2"><el-progress class="w-65" :text-inside="true" :stroke-width="18"
:percentage="Number(data.countFundByFundType.payCountyExecutionRate)*100>0?Number(data.countFundByFundType.payCountyExecutionRate)*100:0" />
<div class="mr-2"
><el-progress
class="w-65"
:text-inside="true"
:stroke-width="18"
:percentage="
Number(data.countFundByFundType.payCountyExecutionRate) * 100 > 0
? Number(data.countFundByFundType.payCountyExecutionRate) * 100
: 0
"
/>
</div>
<div>{{data.countFundByFundType.totalCounty}}</div>
<div>{{ data.countFundByFundType.totalCounty }}</div>
</div>
<div class="mt-4">
<div class="flex flex-wrap">
<div class="mr-2">自筹资金</div>
<div class="mr-2"><el-progress class="w-65" :text-inside="true" :stroke-width="18"
:percentage="Number(data.countFundByFundType.paySelfExecutionRate)*100>0?Number(data.countFundByFundType.paySelfExecutionRate)*100:0" />
<div class="mr-2"
><el-progress
class="w-65"
:text-inside="true"
:stroke-width="18"
:percentage="
Number(data.countFundByFundType.paySelfExecutionRate) * 100 > 0
? Number(data.countFundByFundType.paySelfExecutionRate) * 100
: 0
"
/>
</div>
<div>{{data.countFundByFundType.totalSelf}}</div>
<div>{{ data.countFundByFundType.totalSelf }}</div>
</div>
</div>
</div>
</div>
</a-col>
</a-row>
</a-card>
</a-col>
</a-row>
<a-row :gutter="16" class="mt-4">
<a-col :span="12">
<a-card :body-style="{ padding: 0, overflow: 'hidden' }" class="h-104">
<bas_bar title="总进度" :data="bas_barData"/>
<a-card title="总进度" :body-style="{ padding: 0, overflow: 'hidden' }" class="h-104">
<bas_bar title="" :data="bas_barData" />
</a-card>
</a-col>
<a-col :span="12">
<a-card :body-style="{ padding: 0, overflow: 'hidden' }" class="h-104">
<bar title="资金支付情况" :data="barData" />
<a-card title="资金支付情况" :body-style="{ padding: 0, overflow: 'hidden' }" class="h-104">
<bar title="" :data="barData" v-if="showBar"/>
<template #extra>
<div class="grid grid-cols-4 w-full flex justify-end">
<div class="flex items-center justify-center col-span-3">资金支付执行率</div>
<div class="w-1/12">
<a-button
style="width: 15px; height: 15px"
type="text"
size="small"
@click="handleAscendClick"
>
<template #icon> <CaretUpOutlined /> </template
></a-button>
<a-button
style="width: 15px; height: 15px"
type="text"
size="small"
@click="handlerDescendClick"
>
<template #icon> <CaretDownOutlined /> </template
></a-button>
</div>
<div class="flex items-center justify-center col-span-3">上级资金支付执行率</div>
<div class="w-1/12">
<a-button
style="width: 15px; height: 15px"
type="text"
size="small"
@click="handleSuperiorAscendClick"
>
<template #icon> <CaretUpOutlined /> </template
></a-button>
<a-button
style="width: 15px; height: 15px"
type="text"
size="small"
@click="handleSuperiorDescendClick"
>
<template #icon> <CaretDownOutlined /> </template
></a-button>
</div>
</div>
</template>
</a-card>
</a-col>
</a-row>
</div>
</template>
<script lang="ts">
import bas_bar from './bas_bar.vue'
import bar from './bar.vue'
import { showCountBoardByReformName} from './childBoard.api'
export default {
components: {
bas_bar,
bar,
},
import {CaretUpOutlined,CaretDownOutlined} from '@ant-design/icons-vue';
import bas_bar from './bas_bar.vue';
import bar from './bar.vue';
import { showCountBoardByReformName } from './childBoard.api';
export default {
components: {
bas_bar,
bar,
CaretUpOutlined,
CaretDownOutlined
},
data() {
return {
showBar:true,
data: {
total: '0',
rkNum: '0',
@ -180,36 +286,132 @@ export default {
payCountyExecutionRate: '0.00',
paySelfExecutionRate: '0.00',
},
countFundByCondition:[],
progress:[]
countFundByCondition: [],
progress: [],
},
bas_barData: {
names:[],
values:[]
names: [],
values: [],
},
barData: {
names:[],
paymentExecutionRates:[],
superiorFundExecutionRates:[],
totalMoneys:[],
}
names: [],
paymentExecutionRates: [],
superiorFundExecutionRates: [],
totalMoneys: [],
},
};
},
async created() {
this.data = await showCountBoardByReformName()
this.data.progress.forEach(item => {
this.bas_barData.names.push(item.name)
this.bas_barData.values.push(item.projectProgress)
})
this.data.countFundByCondition.forEach(item => {
this.barData.names.push(item.name)
this.barData.paymentExecutionRates.push(item.paymentExecutionRate)
this.barData.superiorFundExecutionRates.push(item.superiorFundExecutionRate)
this.barData.totalMoneys.push(item.totalMoney)
})
this.data = await showCountBoardByReformName();
this.data.progress.forEach((item) => {
this.bas_barData.names.push(item.name);
this.bas_barData.values.push(item.projectProgress);
});
this.data.countFundByCondition.forEach((item) => {
this.barData.names.push(item.name);
this.barData.paymentExecutionRates.push(item.paymentExecutionRate);
this.barData.superiorFundExecutionRates.push(item.superiorFundExecutionRate);
this.barData.totalMoneys.push(item.totalMoney);
});
},
methods: {},
};
methods: {
async handleSuperiorAscendClick() {
let newbarData={
names: [],
paymentExecutionRates: [],
superiorFundExecutionRates: [],
totalMoneys: [],
}
this.showBar=false
console.log(this.barData)
this.data = await showCountBoardByReformName({
sortField: 'superiorFundExecutionRate',
sortOrder: 'ascend',
});
this.data.countFundByCondition.forEach((item) => {
newbarData.names.push(item.name);
newbarData.paymentExecutionRates.push(item.paymentExecutionRate);
newbarData.superiorFundExecutionRates.push(item.superiorFundExecutionRate);
newbarData.totalMoneys.push(item.totalMoney);
});
this.barData=newbarData
this.showBar=true
},
async handleSuperiorDescendClick() {
let newbarData={
names: [],
paymentExecutionRates: [],
superiorFundExecutionRates: [],
totalMoneys: [],
}
console.log(this.barData)
this.showBar=false
this.data = await showCountBoardByReformName({
sortField: 'superiorFundExecutionRate',
sortOrder: 'descend',
});
this.data.countFundByCondition.forEach((item) => {
newbarData.names.push(item.name);
newbarData.paymentExecutionRates.push(item.paymentExecutionRate);
newbarData.superiorFundExecutionRates.push(item.superiorFundExecutionRate);
newbarData.totalMoneys.push(item.totalMoney);
});
this.showBar=true
this.barData=newbarData
console.log(this.barData)
},
async handleAscendClick() {
let newbarData={
names: [],
paymentExecutionRates: [],
superiorFundExecutionRates: [],
totalMoneys: [],
}
console.log(this.barData)
this.showBar=false
this.data = await showCountBoardByReformName({
sortField: 'paymentExecutionRate',
sortOrder: 'ascend',
});
this.data.countFundByCondition.forEach((item) => {
newbarData.names.push(item.name);
newbarData.paymentExecutionRates.push(item.paymentExecutionRate);
newbarData.superiorFundExecutionRates.push(item.superiorFundExecutionRate);
newbarData.totalMoneys.push(item.totalMoney);
});
this.showBar=true
this.barData=newbarData
console.log(this.barData)
},
async handlerDescendClick() {
let newbarData={
names: [],
paymentExecutionRates: [],
superiorFundExecutionRates: [],
totalMoneys: [],
}
console.log(this.barData)
this.showBar=false
this.data = await showCountBoardByReformName({
sortField: 'paymentExecutionRate',
sortOrder: 'descend',
});
this.data.countFundByCondition.forEach((item) => {
newbarData.names.push(item.name);
newbarData.paymentExecutionRates.push(item.paymentExecutionRate);
newbarData.superiorFundExecutionRates.push(item.superiorFundExecutionRate);
newbarData.totalMoneys.push(item.totalMoney);
});
this.showBar=true
this.barData=newbarData
console.log(this.barData)
},
},
};
</script>

157
src/views/projectBoard/childBoard/xingZhengQuHua.vue

@ -4,7 +4,7 @@
<a-col :span="12">
<a-card title="项目总进度" :body-style="{ padding: 0, overflow: 'hidden' }">
<a-row>
<a-col :span="12" class="flex justify-center items-center h-58">
<a-col :span="10" class="flex justify-center items-center h-58">
<el-progress
type="dashboard"
:stroke-width="18"
@ -185,19 +185,63 @@
</a-row>
<a-row :gutter="16" class="mt-4">
<a-col :span="12">
<a-card :body-style="{ padding: 0, overflow: 'hidden' }" class="h-104">
<bas_bar title="总进度" :data="bas_barData" />
<a-card title="总进度" :body-style="{ padding: 0, overflow: 'hidden' }" class="h-104">
<bas_bar title="" :data="bas_barData" />
</a-card>
</a-col>
<a-col :span="12">
<a-card :body-style="{ padding: 0, overflow: 'hidden' }" class="h-104">
<bar title="资金支付情况" :data="barData" />
<a-card title="资金支付情况" :body-style="{ padding: 0, overflow: 'hidden' }" class="h-104">
<template #extra>
<div class="grid grid-cols-4 w-full flex justify-end">
<div class="flex items-center justify-center col-span-3">资金支付执行率</div>
<div class="w-1/12">
<a-button
style="width: 15px; height: 15px"
type="text"
size="small"
@click="handleAscendClick"
>
<template #icon> <CaretUpOutlined /> </template
></a-button>
<a-button
style="width: 15px; height: 15px"
type="text"
size="small"
@click="handlerDescendClick"
>
<template #icon> <CaretDownOutlined /> </template
></a-button>
</div>
<div class="flex items-center justify-center col-span-3">上级资金支付执行率</div>
<div class="w-1/12">
<a-button
style="width: 15px; height: 15px"
type="text"
size="small"
@click="handleSuperiorAscendClick"
>
<template #icon> <CaretUpOutlined /> </template
></a-button>
<a-button
style="width: 15px; height: 15px"
type="text"
size="small"
@click="handleSuperiorDescendClick"
>
<template #icon> <CaretDownOutlined /> </template
></a-button>
</div>
</div>
</template>
<bar title="" :data="barData" v-if="showBar"/>
</a-card>
</a-col>
</a-row>
</div>
</template>
<script lang="ts">
import { CaretUpOutlined, CaretDownOutlined } from '@ant-design/icons-vue';
import bas_bar from './bas_bar.vue';
import bar from './bar.vue';
import { showCountBoardByAdminDivision } from './childBoard.api';
@ -205,9 +249,12 @@
components: {
bas_bar,
bar,
CaretUpOutlined,
CaretDownOutlined,
},
data() {
return {
showBar:true,
data: {
total: '0',
rkNum: '0',
@ -266,6 +313,104 @@
this.barData.totalMoneys.push(item.totalMoney);
});
},
methods: {},
methods: {
async handleSuperiorAscendClick() {
let newbarData={
names: [],
paymentExecutionRates: [],
superiorFundExecutionRates: [],
totalMoneys: [],
}
this.showBar=false
console.log(this.barData)
this.data = await showCountBoardByAdminDivision({
sortField: 'superiorFundExecutionRate',
sortOrder: 'ascend',
});
this.data.countFundByCondition.forEach((item) => {
newbarData.names.push(item.name);
newbarData.paymentExecutionRates.push(item.paymentExecutionRate);
newbarData.superiorFundExecutionRates.push(item.superiorFundExecutionRate);
newbarData.totalMoneys.push(item.totalMoney);
});
this.barData=newbarData
this.showBar=true
},
async handleSuperiorDescendClick() {
let newbarData={
names: [],
paymentExecutionRates: [],
superiorFundExecutionRates: [],
totalMoneys: [],
}
console.log(this.barData)
this.showBar=false
this.data = await showCountBoardByAdminDivision({
sortField: 'superiorFundExecutionRate',
sortOrder: 'descend',
});
this.data.countFundByCondition.forEach((item) => {
newbarData.names.push(item.name);
newbarData.paymentExecutionRates.push(item.paymentExecutionRate);
newbarData.superiorFundExecutionRates.push(item.superiorFundExecutionRate);
newbarData.totalMoneys.push(item.totalMoney);
});
this.showBar=true
this.barData=newbarData
console.log(this.barData)
},
async handleAscendClick() {
let newbarData={
names: [],
paymentExecutionRates: [],
superiorFundExecutionRates: [],
totalMoneys: [],
}
console.log(this.barData)
this.showBar=false
this.data = await showCountBoardByAdminDivision({
sortField: 'paymentExecutionRate',
sortOrder: 'ascend',
});
this.data.countFundByCondition.forEach((item) => {
newbarData.names.push(item.name);
newbarData.paymentExecutionRates.push(item.paymentExecutionRate);
newbarData.superiorFundExecutionRates.push(item.superiorFundExecutionRate);
newbarData.totalMoneys.push(item.totalMoney);
});
this.showBar=true
this.barData=newbarData
console.log(this.barData)
},
async handlerDescendClick() {
let newbarData={
names: [],
paymentExecutionRates: [],
superiorFundExecutionRates: [],
totalMoneys: [],
}
console.log(this.barData)
this.showBar=false
this.data = await showCountBoardByAdminDivision({
sortField: 'paymentExecutionRate',
sortOrder: 'descend',
});
this.data.countFundByCondition.forEach((item) => {
newbarData.names.push(item.name);
newbarData.paymentExecutionRates.push(item.paymentExecutionRate);
newbarData.superiorFundExecutionRates.push(item.superiorFundExecutionRate);
newbarData.totalMoneys.push(item.totalMoney);
});
this.showBar=true
this.barData=newbarData
console.log(this.barData)
},
},
};
</script>

8
src/views/projectLib/projectInfo/index.vue

@ -91,7 +91,7 @@ let proid = ref();
let ProjectStage = ref()
let IsModify = ref()
let showUploadfileDetail = ref()
let showApprovalDetails = ref()
let showApprovalDetails = ref(true)
let fatherid = ref()
const [registeProjectrModal, { openModal: openModalProjectr }] = useModal();//
const [registerModalUploadFiles, { openModal: openUploadFiles, closeModal: closeUploadFiles }] = useModal();//
@ -180,9 +180,9 @@ async function handleDetailpage(record) {
if (record.stage == 1) {
showApprovalDetails.value = true
}
if(record.projectId != undefined||record.projectId!=null){
showApprovalDetails.value = false
}
// if(record.projectId != undefined||record.projectId!=null){
// showApprovalDetails.value = false
// }
openModalProjectr()
}

Loading…
Cancel
Save