diff --git a/front/public/static/assets/warning-reservoir.png b/front/public/static/assets/warning-reservoir.png
new file mode 100644
index 00000000..21aeec74
Binary files /dev/null and b/front/public/static/assets/warning-reservoir.png differ
diff --git a/front/src/api/assertReport.js b/front/src/api/assertReport.js
new file mode 100644
index 00000000..6abfedc7
--- /dev/null
+++ b/front/src/api/assertReport.js
@@ -0,0 +1,72 @@
+import request from '@/utils/request'
+//获取中间地图
+export function getDistrictFundStatement() {
+ return request({
+ url: '/processForm/tabilityapplication/getDistrictFundStatement',
+ method: 'get',
+ })
+}
+//左侧获取组件资源节约资金列表
+export function getComponentFundStatement() {
+ return request({
+ url: '/processForm/tabilityapplication/getComponentFundStatement',
+ method: 'get',
+ })
+ }
+//左侧获取应用资源列表
+export function getResourceFundStatement() {
+ return request({
+ url: '/processForm/tabilityapplication/getResourceFundStatement',
+ method: 'get',
+ })
+ }
+//左侧基础设施
+export function getInfrastructureFundStatement() {
+ return request({
+ url: '/processForm/tabilityapplication/getInfrastructureFundStatement',
+ method: 'get',
+ })
+ }
+ //右侧市级部门共享排行
+export function getProvideDeptFundStatement() {
+ return request({
+ url: '/processForm/tabilityapplication/getProvideDeptFundStatement',
+ method: 'get',
+ })
+ }
+ //右侧市级部门申请排行
+ export function getApplyDeptFundStatement() {
+ return request({
+ url: '/processForm/tabilityapplication/getApplyDeptFundStatement',
+ method: 'get',
+ })
+ }
+//右侧区市提供排行
+export function getProvideDistrictFundStatement() {
+ return request({
+ url: '/processForm/tabilityapplication/getProvideDistrictFundStatement',
+ method: 'get',
+ })
+ }
+//右侧区市申请排行
+export function getApplyDistrictFundStatement() {
+ return request({
+ url: '/processForm/tabilityapplication/getApplyDistrictFundStatement',
+ method: 'get',
+ })
+ }
+//右侧资源汇聚总量
+export function selectTotal() {
+ return request({
+ url: '/resource/selectTotal',
+ method: 'get',
+ })
+ }
+ //首页 获取总节省资金
+ //右侧资源汇聚总量
+export function getApplyPriceCount() {
+ return request({
+ url: '/processForm/tabilityapplication/getApplyPriceCount',
+ method: 'get',
+ })
+ }
\ No newline at end of file
diff --git a/front/src/assets/capabilityCloud/num_bg.png b/front/src/assets/capabilityCloud/num_bg.png
new file mode 100644
index 00000000..9efb723a
Binary files /dev/null and b/front/src/assets/capabilityCloud/num_bg.png differ
diff --git a/front/src/assets/common/homePage/big-bak.png b/front/src/assets/common/homePage/big-bak.png
index aa1e54a6..79fed5e8 100644
Binary files a/front/src/assets/common/homePage/big-bak.png and b/front/src/assets/common/homePage/big-bak.png differ
diff --git a/front/src/assets/common/homePage/big-bak1.png b/front/src/assets/common/homePage/big-bak1.png
new file mode 100644
index 00000000..aa1e54a6
Binary files /dev/null and b/front/src/assets/common/homePage/big-bak1.png differ
diff --git a/front/src/utils/arrayMethod.js b/front/src/utils/arrayMethod.js
new file mode 100644
index 00000000..98144d2e
--- /dev/null
+++ b/front/src/utils/arrayMethod.js
@@ -0,0 +1,150 @@
+/*
+ * @Author: hisense.wuhongjian
+ * @Date: 2021-08-12 10:50:17
+ * @LastEditors: hisense.wuhongjian
+ * @LastEditTime: 2021-08-12 14:20:07
+ * @Description: 数组公共方法
+ */
+/**
+ * @description: 根据属性名过滤数组,支持一维属性及二维属性
+ * @param {*} arr 待过滤的数组
+ * @param {*} param 一维属性 'param' 二维属性 'param1[param2]'
+ * @return {*} 过滤之后的数组
+ */
+export function arrFilterByParam(arr, param) {
+ const res = new Map();
+ const paramArr = param.split('[');
+ if (paramArr.length > 1) {
+ const first = paramArr[0];
+ const second = paramArr[1].split(']')[0];
+ return arr.filter(
+ (list) => !res.has(list[first][second]) && res.set(list[first][second], 1));
+ } else {
+ return arr.filter(
+ (list) => !res.has(list[param]) && res.set(list[param], 1));
+ }
+}
+//获取时间戳转换为日期格式 或者 2021-09-24 19:53:01:765 转化为正常时间。
+// filters: {
+// formatDate(time) {
+// var date = new Date(time);
+// return formatDate(date, 'yyyy-MM-dd hh:mm:ss');
+// }
+// },
+//{{ 输入时间 | formatDate }}
+export function formatDate (date, fmt) {
+ if (/(y+)/.test(fmt)) {
+ fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
+ }
+ let o = {
+ 'M+': date.getMonth() + 1,
+ 'd+': date.getDate(),
+ 'h+': date.getHours(),
+ 'm+': date.getMinutes(),
+ 's+': date.getSeconds()
+ };
+ for (let k in o) {
+ if (new RegExp(`(${k})`).test(fmt)) {
+ let str = o[k] + '';
+ fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
+ }
+ }
+ return fmt;
+};
+
+function padLeftZero (str) {
+ return ('00' + str).substr(str.length);
+};
+
+// 把数字改成数组。
+export function NumbersConvertedToArrays(inNum) {
+ const str = inNum.toString();
+ const arr = str.split("");
+ const arrlenght = arr.length;
+ if (arrlenght == 2) {
+ arr.unshift(0);
+ }
+ if (arrlenght == 1) {
+ arr.unshift(0);
+ arr.unshift(0);
+ }
+ return arr;
+};
+// var lon = 107.631131;
+// var lat = 29.2331231;
+// var lonDMS = transformDMS(lon, "lon");
+// var latDMS = transformDMS(lat, "lat");
+
+// console.log(lonDMS); // 107°44′35″E
+// console.log(latDMS); // 29°14′17″N
+ // 经纬度转度分秒
+ export function transformDMS(degree, direction) {
+ var D = plusZeroAtHead(Math.floor(degree));
+ var M = plusZeroAtHead(Math.floor((degree - D) * 60));
+ var S = plusZeroAtHead(Math.floor(((degree - D) * 60 - M) * 60));
+ var result = D + "°" + M + "′" + S + "″";
+
+ // 如果是个位数, 则在首位加 0
+ function plusZeroAtHead(num) {
+ if (num > -10 && num < 0) {
+ num = "-0" + Math.abs(num)
+ }
+ if (num > 0 && num < 10) {
+ return "0" + num
+ }
+ return num;
+ }
+
+ if (direction === "lon") {
+ D > 0 ? result += "E" : result += "W";
+ return result;
+ }
+ if (direction === "lat") {
+ D > 0 ? result += "N" : result += "S";
+ return result;
+ }
+ return result;
+};
+export function getBlob(url,cb) {
+ var xhr = new XMLHttpRequest();
+ let that=this;
+ xhr.open('GET', url, true);
+ xhr.responseType = 'blob';
+ xhr.onload = function() {
+ if (xhr.status === 200) {
+ cb(xhr.response);
+ }
+ };
+ xhr.send();
+};
+/**
+ * 保存
+ * @param {Blob} blob
+ * @param {String} filename 想要保存的文件名称
+ */
+export function saveAs(blob, filename) {
+ if (window.navigator.msSaveOrOpenBlob) {
+ navigator.msSaveBlob(blob, filename);
+ } else {
+ var link = document.createElement('a');
+ var body = document.querySelector('body');
+
+ link.href = window.URL.createObjectURL(blob);
+ link.download = filename;
+
+ // fix Firefox
+ link.style.display = 'none';
+ body.appendChild(link);
+
+ link.click();
+ body.removeChild(link);
+
+ window.URL.revokeObjectURL(link.href);
+ }
+};
+
+//获取天气图标logo 公共部分
+
+
+
+
diff --git a/front/src/views/assertReport/components/ReservoirBottom.vue b/front/src/views/assertReport/components/ReservoirBottom.vue
new file mode 100644
index 00000000..b3d17846
--- /dev/null
+++ b/front/src/views/assertReport/components/ReservoirBottom.vue
@@ -0,0 +1,130 @@
+
+
+ {{ item.type }} {{ item.count }}