15 changed files with 1235 additions and 0 deletions
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 2.3 KiB |
@ -0,0 +1,78 @@ |
|||||
|
<template> |
||||
|
<v-chart :option="option" theme="auto" :autoresize="true" style="width: 100%; height: 400px" /> |
||||
|
</template> |
||||
|
|
||||
|
<script lang="ts" name="PieChart" setup> |
||||
|
import { ref, reactive } from 'vue' |
||||
|
let receivingParameter = defineProps(["title", "data"]) |
||||
|
let option = reactive({}) |
||||
|
|
||||
|
option = { |
||||
|
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%', |
||||
|
right: '4%', |
||||
|
bottom: '3%', |
||||
|
containLabel: true |
||||
|
}, |
||||
|
xAxis: { |
||||
|
type: 'value', |
||||
|
min:0, |
||||
|
max:1, |
||||
|
axisLabel: { |
||||
|
formatter: function (value, index) { |
||||
|
return (value*100) + "%"; |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
yAxis: { |
||||
|
type: 'category', |
||||
|
data: receivingParameter.data.names |
||||
|
}, |
||||
|
series: [ |
||||
|
{ |
||||
|
name: '上级资金支付执行率', |
||||
|
type: 'bar', |
||||
|
stack: 'total', |
||||
|
label: { |
||||
|
show: true, |
||||
|
formatter: function (params) { |
||||
|
return (params.value*100).toFixed(0) + "%"; |
||||
|
} |
||||
|
}, |
||||
|
emphasis: { |
||||
|
focus: 'series' |
||||
|
}, |
||||
|
data: receivingParameter.data.superiorFundExecutionRates |
||||
|
}, |
||||
|
{ |
||||
|
name: '资金支付执行率', |
||||
|
type: 'bar', |
||||
|
stack: 'total', |
||||
|
label: { |
||||
|
show: true, |
||||
|
formatter: function (params) { |
||||
|
return (params.value*100).toFixed() + "%"; |
||||
|
} |
||||
|
}, |
||||
|
emphasis: { |
||||
|
focus: 'series' |
||||
|
}, |
||||
|
data: receivingParameter.data.paymentExecutionRates |
||||
|
}, |
||||
|
] |
||||
|
}; |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
<style></style> |
@ -0,0 +1,64 @@ |
|||||
|
<template> |
||||
|
<v-chart :option="option" theme="auto" :autoresize="true" style="width: 100%; height: 400px" /> |
||||
|
</template> |
||||
|
|
||||
|
<script lang="ts" name="PieChart" setup> |
||||
|
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%', |
||||
|
bottom: '3%', |
||||
|
containLabel: true |
||||
|
}, |
||||
|
yAxis: { |
||||
|
type: 'category', |
||||
|
data:receivingParameter.data.names, |
||||
|
}, |
||||
|
xAxis: { |
||||
|
type: 'value', |
||||
|
min: 0, |
||||
|
max: 1, |
||||
|
axisLabel: { |
||||
|
formatter: function (value, index) { |
||||
|
return (value*100) + "%"; |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
series: [ |
||||
|
{ |
||||
|
data: receivingParameter.data.values, |
||||
|
type: 'bar', |
||||
|
showBackground: true, |
||||
|
backgroundStyle: { |
||||
|
color: 'rgba(180, 180, 180, 0.2)' |
||||
|
}, |
||||
|
label: { |
||||
|
show: true, |
||||
|
position: 'right', |
||||
|
formatter: function (params) { |
||||
|
return (params.value*100) + "%"; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
<style></style> |
@ -0,0 +1,24 @@ |
|||||
|
import { defHttp } from '@/utils/http/axios'; |
||||
|
|
||||
|
export enum Api { |
||||
|
showCountBoard = '/huzhouProject/showCountBoard', |
||||
|
|
||||
|
showCountBoardByReformName = "/huzhouProject/showCountBoardByReformName", |
||||
|
showCountBoardByAdminDivision = "/huzhouProject/showCountBoardByAdminDivision", |
||||
|
|
||||
|
getDimensionPageSorted= "/huzhouProject/getDimensionPageSorted", |
||||
|
getPageSorted = "/huzhouProject/getPageSorted", |
||||
|
} |
||||
|
/** |
||||
|
* 总体看板 |
||||
|
*/ |
||||
|
|
||||
|
export const showCountBoardByReformName = () => defHttp.get({ url: Api.showCountBoardByReformName }) |
||||
|
export const showCountBoardByAdminDivision = () => defHttp.get({ url: Api.showCountBoardByAdminDivision }) |
||||
|
export const getDimensionPageSorted = (params) => defHttp.get({ url: Api.getDimensionPageSorted,params }) |
||||
|
export const getPageSorted = (params) => defHttp.get({ url: Api.getPageSorted,params }) |
||||
|
|
||||
|
// export const submitplaninfoUploadFile = (params?) =>defHttp.post({ url: Api.submitplaninfoUploadFile,headers:{ "Content-Type": "multipart/form-data" }, params })
|
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,186 @@ |
|||||
|
import { FormSchema } from '@/components/Form'; |
||||
|
import { BasicColumn } from '@/components/Table'; |
||||
|
|
||||
|
export const danweizhuticolumns: BasicColumn[] = [ |
||||
|
{ |
||||
|
title: '入库责任单位', |
||||
|
dataIndex: 'dutyWorkplace', |
||||
|
resizable: true |
||||
|
}, |
||||
|
{ |
||||
|
title: '行政区划', |
||||
|
dataIndex: 'adminDivision', |
||||
|
resizable: true |
||||
|
}, |
||||
|
{ |
||||
|
title: '单位属性', |
||||
|
dataIndex: 'workplaceProperties', |
||||
|
resizable: true |
||||
|
}, |
||||
|
{ |
||||
|
title: '合同金额', |
||||
|
dataIndex: 'totalMoney', |
||||
|
resizable: true |
||||
|
}, |
||||
|
{ |
||||
|
title: '合同资金支付率', |
||||
|
dataIndex: 'paymentExecutionRate', |
||||
|
resizable: true |
||||
|
}, |
||||
|
{ |
||||
|
title: '中央资金', |
||||
|
dataIndex: 'centralMoney', |
||||
|
resizable: true, |
||||
|
}, |
||||
|
{ |
||||
|
title: '省级资金', |
||||
|
dataIndex: 'provincialMoney', |
||||
|
resizable: true |
||||
|
}, |
||||
|
{ |
||||
|
title: '上级资金支付率', |
||||
|
dataIndex: 'superiorFundExecutionRate', |
||||
|
resizable: true, |
||||
|
}, |
||||
|
{ |
||||
|
title: '项目总进度', |
||||
|
dataIndex: 'projectProgress', |
||||
|
resizable: true, |
||||
|
slots: { customRender: 'projectProgress' }, |
||||
|
}, |
||||
|
]; |
||||
|
export const danweizhutisearchFormSchema: FormSchema[] = [ |
||||
|
{ |
||||
|
//标题名称
|
||||
|
label: '责任单位', |
||||
|
//字段
|
||||
|
field: 'dutyWorkplace', |
||||
|
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
||||
|
component: 'Input', |
||||
|
labelWidth: 'auto' |
||||
|
}, |
||||
|
{ |
||||
|
label: '行政区划', |
||||
|
field: 'adminDivision', |
||||
|
component: 'Input', |
||||
|
labelWidth: 'auto' |
||||
|
//colProps: { span: 6 },
|
||||
|
}, |
||||
|
|
||||
|
{ |
||||
|
//标题名称
|
||||
|
label: '单位属性', |
||||
|
//字段
|
||||
|
field: 'workplaceProperties', |
||||
|
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
||||
|
component: 'Input', |
||||
|
labelWidth: 'auto' |
||||
|
}, |
||||
|
|
||||
|
]; |
||||
|
|
||||
|
export const shifanxiangmucolumns: BasicColumn[] = [ |
||||
|
{ |
||||
|
title: '项目名称', |
||||
|
dataIndex: 'projectName', |
||||
|
resizable: true, |
||||
|
|
||||
|
}, |
||||
|
{ |
||||
|
title: '行政区划', |
||||
|
dataIndex: 'adminDivision', |
||||
|
resizable: true |
||||
|
}, |
||||
|
{ |
||||
|
title: '责任单位', |
||||
|
dataIndex: 'dutyWorkplace', |
||||
|
resizable: true |
||||
|
}, |
||||
|
{ |
||||
|
title: '单位属性', |
||||
|
dataIndex: 'workplaceProperties', |
||||
|
resizable: true |
||||
|
}, |
||||
|
{ |
||||
|
title: '上级指导处室', |
||||
|
dataIndex: 'superLeader', |
||||
|
format: 'dict|superLeader', |
||||
|
resizable: true |
||||
|
}, |
||||
|
{ |
||||
|
title: '合同金额', |
||||
|
dataIndex: 'totalMoney', |
||||
|
resizable: true |
||||
|
}, |
||||
|
{ |
||||
|
title: '合同资金支付率', |
||||
|
dataIndex: 'paymentExecutionRate', |
||||
|
resizable: true |
||||
|
}, |
||||
|
{ |
||||
|
title: '中央资金', |
||||
|
dataIndex: 'centralMoney', |
||||
|
resizable: true, |
||||
|
}, |
||||
|
{ |
||||
|
title: '省级资金', |
||||
|
dataIndex: 'provincialMoney', |
||||
|
resizable: true |
||||
|
}, |
||||
|
{ |
||||
|
title: '上级资金支付率', |
||||
|
dataIndex: 'superiorFundExecutionRate', |
||||
|
resizable: true, |
||||
|
}, |
||||
|
{ |
||||
|
title: '项目总进度', |
||||
|
dataIndex: 'projectProgress', |
||||
|
resizable: true, |
||||
|
slots: { customRender: 'projectProgress' }, |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
export const shifanxiangsearchFormSchema: FormSchema[] = [ |
||||
|
{ |
||||
|
label: '项目名称', |
||||
|
field: 'projectName', |
||||
|
component: 'Input', |
||||
|
labelWidth: 'auto' |
||||
|
//colProps: { span: 6 },
|
||||
|
}, |
||||
|
{ |
||||
|
label: '行政区划', |
||||
|
field: 'adminDivision', |
||||
|
component: 'Input', |
||||
|
labelWidth: 'auto' |
||||
|
//colProps: { span: 6 },
|
||||
|
}, |
||||
|
{ |
||||
|
//标题名称
|
||||
|
label: '责任单位', |
||||
|
//字段
|
||||
|
field: 'dutyWorkplace', |
||||
|
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
||||
|
component: 'Input', |
||||
|
labelWidth: 'auto' |
||||
|
}, |
||||
|
{ |
||||
|
//标题名称
|
||||
|
label: '单位属性', |
||||
|
//字段
|
||||
|
field: 'workplaceProperties', |
||||
|
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
||||
|
component: 'Input', |
||||
|
labelWidth: 'auto' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'superLeader', |
||||
|
label: '上级指导处室', |
||||
|
component: 'DictSelect', |
||||
|
componentProps: { |
||||
|
dictType: 'superLeader', |
||||
|
}, |
||||
|
labelWidth: 'auto' |
||||
|
|
||||
|
}, |
||||
|
]; |
@ -0,0 +1,37 @@ |
|||||
|
<template> |
||||
|
<PageWrapper dense> |
||||
|
<!--引用表格--> |
||||
|
<BasicTable @register="registerTable"> |
||||
|
<template #projectProgress="{ record }"> |
||||
|
<el-progress :percentage="Number(record.projectProgress)*100>0?Number(record.projectProgress)*100:0"></el-progress> |
||||
|
</template> |
||||
|
</BasicTable> |
||||
|
</PageWrapper> |
||||
|
</template> |
||||
|
|
||||
|
<script lang="ts" name="system-user" setup> |
||||
|
//ts语法 |
||||
|
import { ref } from 'vue'; |
||||
|
import { ActionItem, BasicTable, TableAction, useTable } from '@/components/Table'; |
||||
|
import { PageWrapper } from '@/components/Page'; |
||||
|
|
||||
|
import { danweizhuticolumns, danweizhutisearchFormSchema } from './childBoard.data' |
||||
|
|
||||
|
import { getDimensionPageSorted } from './childBoard.api'; |
||||
|
|
||||
|
const [registerTable] = useTable({ |
||||
|
title: '项目归档信息', |
||||
|
columns: danweizhuticolumns, |
||||
|
api: getDimensionPageSorted, |
||||
|
useSearchForm: true, |
||||
|
showIndexColumn: true, |
||||
|
//表单查询项设置 |
||||
|
formConfig: { |
||||
|
schemas: danweizhutisearchFormSchema, |
||||
|
}, |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
<style scoped></style> |
@ -0,0 +1,215 @@ |
|||||
|
<template> |
||||
|
<div style="background-color: #ececec; padding: 20px"> |
||||
|
<a-row :gutter="16"> |
||||
|
<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"> |
||||
|
<template #default="{ percentage }"> |
||||
|
|
||||
|
|
||||
|
<div class="flex flex-col ..."> |
||||
|
<div>总进度</div> |
||||
|
<div class="mt-4"> {{ percentage }}%</div> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
</el-progress> |
||||
|
</a-col> |
||||
|
<a-col :span="4" class="flex justify-center items-center "> |
||||
|
<div class="flex flex-col"> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
{{ data.totalProgress.notStartedNum }} |
||||
|
</div> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
未启动 |
||||
|
</div> |
||||
|
</div> |
||||
|
</a-col> |
||||
|
<a-col :span="4" class="flex justify-center items-center "> |
||||
|
<div class="flex flex-col"> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
{{data.totalProgress.purchasedNum}} |
||||
|
</div> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
已采购 |
||||
|
</div> |
||||
|
</div> |
||||
|
</a-col> |
||||
|
<a-col :span="4" class="flex justify-center items-center "> |
||||
|
<div class="flex flex-col"> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
{{ data.totalProgress.finishNum }} |
||||
|
</div> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
建设完成 |
||||
|
</div> |
||||
|
</div> |
||||
|
</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"> |
||||
|
<template #default="{ percentage }"> |
||||
|
<div class="flex flex-col ..."> |
||||
|
<div>合同总金额</div> |
||||
|
<div class="mt-4">{{data.countFundByFundType.totalMoney}}</div> |
||||
|
<div class="mt-4"> {{ percentage }}%</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-progress> |
||||
|
</a-col> |
||||
|
<a-col :span="16" class="flex justify-center items-center"> |
||||
|
<div class="flex flex-col w-full"> |
||||
|
<div> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">中央资金</div> |
||||
|
<div class="mr-2"><el-progress class="w-80" :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> |
||||
|
</div> |
||||
|
<div class="mt-4"> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">省级资金</div> |
||||
|
<div class="mr-2"><el-progress class="w-80" :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> |
||||
|
</div> |
||||
|
<div class="mt-4"> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">市级资金</div> |
||||
|
<div class="mr-2"><el-progress class="w-80" :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> |
||||
|
</div> |
||||
|
<div class="mt-4"> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">区县资金</div> |
||||
|
<div class="mr-2"><el-progress class="w-80" :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> |
||||
|
<div class="mt-4"> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">自筹资金</div> |
||||
|
<div class="mr-2"><el-progress class="w-80" :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> |
||||
|
</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> |
||||
|
</a-col> |
||||
|
<a-col :span="12"> |
||||
|
<a-card :body-style="{ padding: 0, overflow: 'hidden' }" class="h-104"> |
||||
|
<bar title="资金支付情况" :data="barData" /> |
||||
|
</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, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
data: { |
||||
|
total: '0', |
||||
|
rkNum: '0', |
||||
|
ptNum: '0', |
||||
|
totalProgress: { |
||||
|
progress: '0', |
||||
|
notStartedNum: '0', |
||||
|
purchasedNum: '0', |
||||
|
finishNum: '0', |
||||
|
}, |
||||
|
countFundByFundType: { |
||||
|
totalMoney: '0.00', |
||||
|
totalCentral: '0.00', |
||||
|
totalProvincial: '0.00', |
||||
|
totalCity: '0.00', |
||||
|
totalCounty: '0.00', |
||||
|
totalSelf: '0.00', |
||||
|
payAmount: '0.00', |
||||
|
payCentral: '0.00', |
||||
|
payProvincial: '0.00', |
||||
|
payCity: '0.00', |
||||
|
payCounty: '0.00', |
||||
|
paySelf: '0.00', |
||||
|
paymentExecutionRate: '0.0', |
||||
|
payCentralExecutionRate: '0.0', |
||||
|
payProvincialExecutionRate: '0.00', |
||||
|
payCityExecutionRate: '0.00', |
||||
|
payCountyExecutionRate: '0.00', |
||||
|
paySelfExecutionRate: '0.00', |
||||
|
}, |
||||
|
countFundByCondition:[], |
||||
|
progress:[] |
||||
|
}, |
||||
|
bas_barData: { |
||||
|
names:[], |
||||
|
values:[] |
||||
|
}, |
||||
|
barData: { |
||||
|
names:[], |
||||
|
paymentExecutionRates:[], |
||||
|
superiorFundExecutionRates:[] |
||||
|
} |
||||
|
}; |
||||
|
}, |
||||
|
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) |
||||
|
}) |
||||
|
}, |
||||
|
methods: {}, |
||||
|
}; |
||||
|
|
||||
|
|
||||
|
</script> |
@ -0,0 +1,31 @@ |
|||||
|
<template> |
||||
|
<PageWrapper> |
||||
|
<div> |
||||
|
<a-tabs v-model:activeKey="activeKey" type="card"> |
||||
|
|
||||
|
<a-tab-pane key="1" tab="改革任务"><gaiGeRenWu :loading="loading" class="enter-y" v-if="activeKey=='1'"/></a-tab-pane> |
||||
|
<a-tab-pane key="2" tab="行政区划"> |
||||
|
<xingZhengQuHua v-if="activeKey=='2'"/> |
||||
|
</a-tab-pane> |
||||
|
<a-tab-pane key="3" tab="单位主体"><danWeiZhuTi v-if="activeKey=='3'"/></a-tab-pane> |
||||
|
<a-tab-pane key="4" tab="示范项目"><shiFanXiangMu v-if="activeKey=='4'"/></a-tab-pane> |
||||
|
|
||||
|
</a-tabs> |
||||
|
|
||||
|
<!-- <DynamicInfo :loading="loading" class="!my-4 enter-y" /> --> |
||||
|
</div> |
||||
|
</PageWrapper> |
||||
|
</template> |
||||
|
<script lang="ts" setup> |
||||
|
import { ref, reactive, onMounted } from 'vue'; |
||||
|
import { PageWrapper } from '@/components/Page'; |
||||
|
import gaiGeRenWu from './gaiGeRenWu.vue'; |
||||
|
import xingZhengQuHua from './xingZhengQuHua.vue'; |
||||
|
import danWeiZhuTi from './danWeiZhuTi.vue'; |
||||
|
import shiFanXiangMu from './shiFanXiangMu.vue'; |
||||
|
// import ProjectCard from './ProjectCard.vue'; |
||||
|
|
||||
|
const loading = ref(true); |
||||
|
const activeKey = ref('1'); |
||||
|
|
||||
|
</script> |
@ -0,0 +1,37 @@ |
|||||
|
<template> |
||||
|
<PageWrapper dense> |
||||
|
<!--引用表格--> |
||||
|
<BasicTable @register="registerTable"> |
||||
|
<template #projectProgress="{ record }"> |
||||
|
<el-progress :percentage="Number(record.projectProgress)*100"></el-progress> |
||||
|
</template> |
||||
|
</BasicTable> |
||||
|
</PageWrapper> |
||||
|
</template> |
||||
|
|
||||
|
<script lang="ts" name="system-user" setup> |
||||
|
//ts语法 |
||||
|
import { ref } from 'vue'; |
||||
|
import { ActionItem, BasicTable, TableAction, useTable } from '@/components/Table'; |
||||
|
import { PageWrapper } from '@/components/Page'; |
||||
|
|
||||
|
import { shifanxiangmucolumns, shifanxiangsearchFormSchema } from './childBoard.data' |
||||
|
|
||||
|
import { getPageSorted } from './childBoard.api'; |
||||
|
|
||||
|
const [registerTable] = useTable({ |
||||
|
title: '项目归档信息', |
||||
|
columns: shifanxiangmucolumns, |
||||
|
api:getPageSorted, |
||||
|
useSearchForm: true, |
||||
|
showIndexColumn: true, |
||||
|
//表单查询项设置 |
||||
|
formConfig: { |
||||
|
schemas: shifanxiangsearchFormSchema, |
||||
|
}, |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
<style scoped></style> |
@ -0,0 +1,217 @@ |
|||||
|
<template> |
||||
|
<div style="background-color: #ececec; padding: 20px"> |
||||
|
<a-row :gutter="16"> |
||||
|
<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"> |
||||
|
<template #default="{ percentage }"> |
||||
|
|
||||
|
|
||||
|
<div class="flex flex-col ..."> |
||||
|
<div>总进度</div> |
||||
|
<div class="mt-4"> {{ percentage }}%</div> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
</el-progress> |
||||
|
</a-col> |
||||
|
<a-col :span="4" class="flex justify-center items-center "> |
||||
|
<div class="flex flex-col"> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
{{ data.totalProgress.notStartedNum }} |
||||
|
</div> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
未启动 |
||||
|
</div> |
||||
|
</div> |
||||
|
</a-col> |
||||
|
<a-col :span="4" class="flex justify-center items-center "> |
||||
|
<div class="flex flex-col"> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
{{data.totalProgress.purchasedNum}} |
||||
|
</div> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
已采购 |
||||
|
</div> |
||||
|
</div> |
||||
|
</a-col> |
||||
|
<a-col :span="4" class="flex justify-center items-center "> |
||||
|
<div class="flex flex-col"> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
{{ data.totalProgress.finishNum }} |
||||
|
</div> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
建设完成 |
||||
|
</div> |
||||
|
</div> |
||||
|
</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"> |
||||
|
<template #default="{ percentage }"> |
||||
|
<div class="flex flex-col ..."> |
||||
|
<div>合同总金额</div> |
||||
|
<div class="mt-4">{{data.countFundByFundType.totalMoney}}</div> |
||||
|
<div class="mt-4"> {{ percentage }}%</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-progress> |
||||
|
</a-col> |
||||
|
<a-col :span="16" class="flex justify-center items-center"> |
||||
|
<div class="flex flex-col w-full"> |
||||
|
<div> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">中央资金</div> |
||||
|
<div class="mr-2"><el-progress class="w-80" :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> |
||||
|
</div> |
||||
|
<div class="mt-4"> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">省级资金</div> |
||||
|
<div class="mr-2"><el-progress class="w-80" :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> |
||||
|
</div> |
||||
|
<div class="mt-4"> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">市级资金</div> |
||||
|
<div class="mr-2"><el-progress class="w-80" :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> |
||||
|
</div> |
||||
|
<div class="mt-4"> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">区县资金</div> |
||||
|
<div class="mr-2"><el-progress class="w-80" :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> |
||||
|
<div class="mt-4"> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">自筹资金</div> |
||||
|
<div class="mr-2"><el-progress class="w-80" :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> |
||||
|
</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> |
||||
|
</a-col> |
||||
|
<a-col :span="12"> |
||||
|
<a-card :body-style="{ padding: 0, overflow: 'hidden' }" class="h-104"> |
||||
|
<bar title="资金支付情况" :data="barData"/> |
||||
|
</a-card> |
||||
|
</a-col> |
||||
|
</a-row> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script lang="ts"> |
||||
|
import bas_bar from './bas_bar.vue' |
||||
|
import bar from './bar.vue' |
||||
|
import { showCountBoardByAdminDivision} from './childBoard.api' |
||||
|
export default { |
||||
|
components: { |
||||
|
bas_bar, |
||||
|
bar, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
data: { |
||||
|
total: '0', |
||||
|
rkNum: '0', |
||||
|
ptNum: '0', |
||||
|
totalProgress: { |
||||
|
progress: '0', |
||||
|
notStartedNum: '0', |
||||
|
purchasedNum: '0', |
||||
|
finishNum: '0', |
||||
|
}, |
||||
|
countFundByFundType: { |
||||
|
totalMoney: '0.00', |
||||
|
totalCentral: '0.00', |
||||
|
totalProvincial: '0.00', |
||||
|
totalCity: '0.00', |
||||
|
totalCounty: '0.00', |
||||
|
totalSelf: '0.00', |
||||
|
payAmount: '0.00', |
||||
|
payCentral: '0.00', |
||||
|
payProvincial: '0.00', |
||||
|
payCity: '0.00', |
||||
|
payCounty: '0.00', |
||||
|
paySelf: '0.00', |
||||
|
paymentExecutionRate: '0.0', |
||||
|
payCentralExecutionRate: '0.0', |
||||
|
payProvincialExecutionRate: '0.00', |
||||
|
payCityExecutionRate: '0.00', |
||||
|
payCountyExecutionRate: '0.00', |
||||
|
paySelfExecutionRate: '0.00', |
||||
|
}, |
||||
|
countFundByCondition:[], |
||||
|
progress:[] |
||||
|
}, |
||||
|
bas_barData: { |
||||
|
names:[], |
||||
|
values:[] |
||||
|
}, |
||||
|
barData: { |
||||
|
names:[], |
||||
|
paymentExecutionRates:[], |
||||
|
superiorFundExecutionRates:[] |
||||
|
} |
||||
|
}; |
||||
|
}, |
||||
|
async created() { |
||||
|
this.data = await showCountBoardByAdminDivision() |
||||
|
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) |
||||
|
}) |
||||
|
}, |
||||
|
methods: {}, |
||||
|
}; |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
</script> |
@ -0,0 +1,315 @@ |
|||||
|
<template> |
||||
|
<div style="background-color: #ececec; padding: 20px"> |
||||
|
<a-row :gutter="16"> |
||||
|
<a-col :span="8"> |
||||
|
<a-card :body-style="{ padding: 0, overflow: 'hidden' }"> |
||||
|
<a-row> |
||||
|
<a-col :span="8"> |
||||
|
<div |
||||
|
class="bg-gradient-to-b from-cyan-500 to-blue-500 h-full flex justify-center items-center" |
||||
|
> |
||||
|
<img src="@/assets/images/项目数量.png" class="w-1/2" /> |
||||
|
</div> |
||||
|
</a-col> |
||||
|
<a-col :span="16"> |
||||
|
<a-row> |
||||
|
<a-col :span="12" :offset="3"> |
||||
|
<p class="font-semibold text-2xl">项目数量</p> |
||||
|
</a-col> |
||||
|
</a-row> |
||||
|
<a-row class="mt-4"> |
||||
|
<a-col :span="12" :offset="12" |
||||
|
><a-typography-title :level="1">{{ data.total }}</a-typography-title></a-col |
||||
|
> |
||||
|
</a-row> |
||||
|
</a-col> |
||||
|
</a-row> |
||||
|
</a-card> |
||||
|
</a-col> |
||||
|
<a-col :span="8"> |
||||
|
<a-card :body-style="{ padding: 0, overflow: 'hidden' }"> |
||||
|
<a-row> |
||||
|
<a-col :span="8"> |
||||
|
<div |
||||
|
class="bg-gradient-to-b from-sky-500 to-indigo-500 h-full flex justify-center items-center" |
||||
|
> |
||||
|
<img src="@/assets/images/项目入库.png" class="w-1/2" /> |
||||
|
</div> |
||||
|
</a-col> |
||||
|
<a-col :span="16"> |
||||
|
<a-row> |
||||
|
<a-col :span="24" :offset="3"> |
||||
|
<p class="font-semibold text-2xl">入库项目数量</p> |
||||
|
</a-col> |
||||
|
</a-row> |
||||
|
<a-row class="mt-4"> |
||||
|
<a-col :span="12" :offset="12" |
||||
|
><a-typography-title :level="1">{{ data.rkNum }}</a-typography-title></a-col |
||||
|
> |
||||
|
</a-row> |
||||
|
</a-col> |
||||
|
</a-row> |
||||
|
</a-card> |
||||
|
</a-col> |
||||
|
<a-col :span="8"> |
||||
|
<a-card :body-style="{ padding: 0, overflow: 'hidden' }"> |
||||
|
<a-row> |
||||
|
<a-col :span="8"> |
||||
|
<div |
||||
|
class="bg-gradient-to-b from-violet-500 to-fuchsia-500 h-full flex justify-center items-center" |
||||
|
> |
||||
|
<img src="@/assets/images/配套.png" class="w-1/2" /> |
||||
|
</div> |
||||
|
</a-col> |
||||
|
<a-col :span="16"> |
||||
|
<a-row> |
||||
|
<a-col :span="24" :offset="3"> |
||||
|
<p class="font-semibold text-2xl">配套项目数量</p> |
||||
|
</a-col> |
||||
|
</a-row> |
||||
|
<a-row class="mt-4"> |
||||
|
<a-col :span="12" :offset="12" |
||||
|
><a-typography-title :level="1">{{ data.ptNum }}</a-typography-title></a-col |
||||
|
> |
||||
|
</a-row> |
||||
|
</a-col> |
||||
|
</a-row> |
||||
|
</a-card> |
||||
|
</a-col> |
||||
|
<!-- 下部分卡片 --> |
||||
|
</a-row> |
||||
|
<a-row :gutter="16" class="mt-10"> |
||||
|
<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-96"> |
||||
|
<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 h-96"> |
||||
|
<div class="flex flex-col"> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
<p class="text-2xl">{{ data.totalProgress.notStartedNum }}</p> |
||||
|
</div> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
<p class="text-1xl">未启动</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</a-col> |
||||
|
<a-col :span="4" class="flex justify-center items-center h-96"> |
||||
|
<div class="flex flex-col"> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
<p class="text-2xl">{{ data.totalProgress.purchasedNum }}</p> |
||||
|
</div> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
<p class="text-1xl">已采购</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</a-col> |
||||
|
<a-col :span="4" class="flex justify-center items-center h-96"> |
||||
|
<div class="flex flex-col"> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
<p class="text-2xl">{{ data.totalProgress.finishNum }}</p> |
||||
|
</div> |
||||
|
<div class="text-center"> |
||||
|
<!-- 这里放置内容 --> |
||||
|
<p class="text-1xl">建设完成</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</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-96"> |
||||
|
<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">{{ data.countFundByFundType.totalMoney }}</div> |
||||
|
<div class="mt-4"> {{ percentage }}%</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-progress> |
||||
|
</a-col> |
||||
|
<a-col :span="16" class="flex justify-center items-center h-96"> |
||||
|
<div class="flex flex-col w-full"> |
||||
|
<div> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">中央资金</div> |
||||
|
<div class="mr-2" |
||||
|
><el-progress |
||||
|
class="w-80" |
||||
|
: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> |
||||
|
</div> |
||||
|
<div class="mt-4"> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">省级资金</div> |
||||
|
<div class="mr-2" |
||||
|
><el-progress |
||||
|
class="w-80" |
||||
|
: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> |
||||
|
</div> |
||||
|
<div class="mt-4"> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">市级资金</div> |
||||
|
<div class="mr-2" |
||||
|
><el-progress |
||||
|
class="w-80" |
||||
|
: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> |
||||
|
</div> |
||||
|
<div class="mt-4"> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">区县资金</div> |
||||
|
<div class="mr-2" |
||||
|
><el-progress |
||||
|
class="w-80" |
||||
|
: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> |
||||
|
<div class="mt-4"> |
||||
|
<div class="flex flex-wrap"> |
||||
|
<div class="mr-2">自筹资金</div> |
||||
|
<div class="mr-2" |
||||
|
><el-progress |
||||
|
class="w-80" |
||||
|
: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> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</a-col> |
||||
|
</a-row> |
||||
|
</a-card> |
||||
|
</a-col> |
||||
|
</a-row> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script lang="ts"> |
||||
|
import { showCountBoard } from './totalProjectBoard.api'; |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
data: { |
||||
|
total: '0', |
||||
|
rkNum: '0', |
||||
|
ptNum: '0', |
||||
|
totalProgress: { |
||||
|
progress: '0', |
||||
|
notStartedNum: '0', |
||||
|
purchasedNum: '0', |
||||
|
finishNum: '0', |
||||
|
}, |
||||
|
countFundByFundType: { |
||||
|
totalMoney: '0.00', |
||||
|
totalCentral: '0.00', |
||||
|
totalProvincial: '0.00', |
||||
|
totalCity: '0.00', |
||||
|
totalCounty: '0.00', |
||||
|
totalSelf: '0.00', |
||||
|
payAmount: '0.00', |
||||
|
payCentral: '0.00', |
||||
|
payProvincial: '0.00', |
||||
|
payCity: '0.00', |
||||
|
payCounty: '0.00', |
||||
|
paySelf: '0.00', |
||||
|
paymentExecutionRate: '0.0', |
||||
|
payCentralExecutionRate: '0.0', |
||||
|
payProvincialExecutionRate: '0.00', |
||||
|
payCityExecutionRate: '0.00', |
||||
|
payCountyExecutionRate: '0.00', |
||||
|
paySelfExecutionRate: '0.00', |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
}, |
||||
|
async created() { |
||||
|
this.data = await showCountBoard() |
||||
|
}, |
||||
|
methods: {}, |
||||
|
}; |
||||
|
// import { ref, onMounted, reactive ,defineProps} from 'vue'; |
||||
|
// import { showCountBoard } from './totalProjectBoard.api'; |
||||
|
// showCountBoard().then(res => { |
||||
|
// data =res |
||||
|
// console.log("res",res) |
||||
|
// }) |
||||
|
</script> |
@ -0,0 +1,13 @@ |
|||||
|
<template> |
||||
|
<PageWrapper> |
||||
|
<div> |
||||
|
<ProjectCard class="enter-y" /> |
||||
|
</div> |
||||
|
</PageWrapper> |
||||
|
</template> |
||||
|
<script lang="ts" setup> |
||||
|
import { ref, reactive, onMounted } from 'vue'; |
||||
|
import { PageWrapper } from '@/components/Page'; |
||||
|
import ProjectCard from './ProjectCard.vue'; |
||||
|
|
||||
|
</script> |
@ -0,0 +1,18 @@ |
|||||
|
import { defHttp } from '@/utils/http/axios'; |
||||
|
|
||||
|
export enum Api { |
||||
|
showCountBoard = '/huzhouProject/showCountBoard', |
||||
|
|
||||
|
queryPlanModuleDetailPage = "/huzhouPlan/queryPlanModuleDetailPage", |
||||
|
|
||||
|
} |
||||
|
/** |
||||
|
* 总体看板 |
||||
|
*/ |
||||
|
|
||||
|
export const showCountBoard = () => defHttp.get({ url: Api.showCountBoard}) |
||||
|
|
||||
|
// export const submitplaninfoUploadFile = (params?) =>defHttp.post({ url: Api.submitplaninfoUploadFile,headers:{ "Content-Type": "multipart/form-data" }, params })
|
||||
|
|
||||
|
|
||||
|
|
Loading…
Reference in new issue