diff --git a/api/app/lib/controllers/patrolManage/patrolReport.js b/api/app/lib/controllers/patrolManage/patrolReport.js
new file mode 100644
index 0000000..9ff6c05
--- /dev/null
+++ b/api/app/lib/controllers/patrolManage/patrolReport.js
@@ -0,0 +1,36 @@
+'use strict';
+
+async function getPatrolReport(ctx, next) {
+    try {
+        const models = ctx.fs.dc.models;
+        const { limit, page, projectId, startTime, endTime } = ctx.query;
+        let options = {
+            where: {}
+        };
+        if (limit) {
+            options.limit = Number(limit);
+        }
+        if (page && limit) {
+            options.offset = Number(page) * Number(limit);
+        }
+        if (projectId) {
+            options.where.projectId = projectId;
+        }
+        if (startTime && endTime) {
+            options.where.inspectTm = { $between: [startTime, endTime] };
+        }
+        const res = await models.ReportInfo.findAndCountAll(options);
+        ctx.status = 200;
+        ctx.body = res;
+    } catch (error) {
+        ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
+        ctx.status = 400;
+        ctx.body = {
+            "message": "获取巡检报告失败"
+        }
+    }
+}
+
+module.exports = {
+    getPatrolReport,
+}
\ No newline at end of file
diff --git a/api/app/lib/index.js b/api/app/lib/index.js
index 6f6cb92..492d7ef 100644
--- a/api/app/lib/index.js
+++ b/api/app/lib/index.js
@@ -54,7 +54,7 @@ module.exports.models = function (dc) { // dc = { orm: Sequelize对象, ORM: Seq
     });
 
     const { Department, User, UserResource, Resource, Project, Point,
-        PatrolPlan, PatrolRecord,
+        PatrolPlan, PatrolRecord, ReportInfo,
         CheckItems, CheckItemsGroup,
         PatrolTemplate, PatrolTemplateCheckItems, PatrolRecordIssueHandle
     } = dc.models;
@@ -93,6 +93,9 @@ module.exports.models = function (dc) { // dc = { orm: Sequelize对象, ORM: Seq
     PatrolPlan.belongsTo(User, { foreignKey: 'userId', targetKey: 'id' });
     User.hasMany(PatrolPlan, { foreignKey: 'userId', sourceKey: 'id' });
 
+    ReportInfo.belongsTo(Project, { foreignKey: 'projectId', targetKey: 'id' });
+    Project.hasMany(ReportInfo, { foreignKey: 'projectId', sourceKey: 'id' });
+
     CheckItems.belongsTo(CheckItemsGroup, { foreignKey: 'groupId', targetKey: 'id' });
     CheckItemsGroup.hasMany(CheckItems, { foreignKey: 'groupId', sourceKey: 'id' });
 };
diff --git a/api/app/lib/models/report_info.js b/api/app/lib/models/report_info.js
new file mode 100644
index 0000000..d4ffbe8
--- /dev/null
+++ b/api/app/lib/models/report_info.js
@@ -0,0 +1,60 @@
+/* eslint-disable*/
+'use strict';
+
+module.exports = dc => {
+    const DataTypes = dc.ORM;
+    const sequelize = dc.orm;
+    const ReportInfo = sequelize.define("reportInfo", {
+        id: {
+            type: DataTypes.INTEGER,
+            allowNull: false,
+            defaultValue: null,
+            comment: null,
+            primaryKey: true,
+            field: "id",
+            autoIncrement: true,
+        },
+        projectId: {
+            type: DataTypes.INTEGER,
+            allowNull: false,
+            defaultValue: null,
+            comment: null,
+            primaryKey: false,
+            field: "project_id",
+            autoIncrement: false
+        },
+        excelPath: {
+            type: DataTypes.STRING,
+            allowNull: false,
+            defaultValue: null,
+            comment: null,
+            primaryKey: false,
+            field: "excel_path",
+            autoIncrement: false
+        },
+        inspectTm: {
+            type: DataTypes.DATE,
+            allowNull: false,
+            defaultValue: null,
+            comment: null,
+            primaryKey: false,
+            field: "inspect_tm",
+            autoIncrement: false
+        },
+        reportTm: {
+            type: DataTypes.DATE,
+            allowNull: false,
+            defaultValue: null,
+            comment: null,
+            primaryKey: false,
+            field: "report_tm",
+            autoIncrement: false
+        }
+    }, {
+        tableName: "report_info",
+        comment: "",
+        indexes: []
+    });
+    dc.models.ReportInfo = ReportInfo;
+    return ReportInfo;
+};
\ No newline at end of file
diff --git a/api/app/lib/routes/patrolManage/patrolReport.js b/api/app/lib/routes/patrolManage/patrolReport.js
new file mode 100644
index 0000000..2732214
--- /dev/null
+++ b/api/app/lib/routes/patrolManage/patrolReport.js
@@ -0,0 +1,8 @@
+'use strict';
+
+const patrolReport = require('../../controllers/patrolManage/patrolReport');
+
+module.exports = function (app, router, opts) {
+    app.fs.api.logAttr['GET/patrolReport'] = { content: '获取巡检报告', visible: false };
+    router.get('/patrolReport', patrolReport.getPatrolReport);
+};
\ No newline at end of file
diff --git a/weapp/package/inspectionReport/inspectionReport.js b/weapp/package/inspectionReport/inspectionReport.js
index 9d4afcc..15ada30 100644
--- a/weapp/package/inspectionReport/inspectionReport.js
+++ b/weapp/package/inspectionReport/inspectionReport.js
@@ -18,7 +18,7 @@ Page({
     endTime: new Date().getTime(),
     formatStartTime: moment(new Date().getTime()).format('YYYY-MM-DD'),
     formatEndTime: moment(new Date().getTime()).format('YYYY-MM-DD'),
-    report: [1, 2], // 巡检报告
+    report: [], // 巡检报告
   },
 
   showPopup(e) {
@@ -29,18 +29,13 @@ Page({
   onClose(e) {
     const { item } = e.currentTarget.dataset;
     this.setData({ [`${item}Visible`]: false });
-    console.log('请求报告')
     // 获取报告
-    // const body = {}
-    // Request.get(getPatrolReport(body)).then(res => {
-    //   console.log(res)
-    // })
+    this.getPatrolReport();
   },
 
   onStruChange(e) {
     if (e.detail) {
-      const { value, index } = e.detail;
-      console.log(`当前值:${value}, 当前索引:${index}`);
+      const { index } = e.detail;
       this.setData({
         curStru: index
       })
@@ -60,16 +55,18 @@ Page({
     });
   },
 
-  download() {
+  download(e) {
+    const { url } = e.currentTarget.dataset;
     wx.showLoading({ title: '下载中...' });
     wx.downloadFile({
-      url: 'http://10.8.16.102:5900/_file-server/project/d178aef7-4a88-41c4-aa82-4254fbcf884e/16518450744352.jpg', // 仅为示例,并非真实的资源
+      url: getApp().globalData.imgUrl + url,
       success(downloadRes) {
         wx.hideLoading();
         if (downloadRes.statusCode === 200) {
           const filePath = downloadRes.tempFilePath;
           wx.openDocument({
             filePath: filePath,
+            showMenu: true,
             success: function (res) {
               console.log('打开文档成功');
             }
@@ -79,13 +76,35 @@ Page({
     })
   },
 
+  getPatrolReport() {
+    const { structures, curStru, formatStartTime, formatEndTime } = this.data;
+    const params = {
+      projectId: structures[curStru].id,
+      startTime: formatStartTime + ' 00:00:00',
+      endTime: formatEndTime + ' 23:59:59',
+    }
+    wx.showLoading({ title: '查询中...' });
+    Request.get(getPatrolReport(params)).then(res => {
+      wx.hideLoading();
+      this.setData({
+        report: res.rows.map(r => {
+          const fileName = r.excelPath.substring(r.excelPath.lastIndexOf('/') + 1);
+          return { ...r, fileName }
+        })
+      })
+    })
+  },
+
   getStructuresList() {
     this.setData({ struLoading: true });
     Request.get(getStructuresList()).then(res => {
       this.setData({
         struLoading: false,
-        structures: ['全部', ...res.rows.map(s => s.name)]
-      })
+        structures: [
+          { name: '全部', id: '' },
+          ...res.rows.map(s => ({ name: s.name, id: s.id }))
+        ]
+      }, () => { this.getPatrolReport(); })
     })
   },
 
diff --git a/weapp/package/inspectionReport/inspectionReport.wxml b/weapp/package/inspectionReport/inspectionReport.wxml
index e29cddb..ae63a38 100644
--- a/weapp/package/inspectionReport/inspectionReport.wxml
+++ b/weapp/package/inspectionReport/inspectionReport.wxml
@@ -1,9 +1,9 @@
 
 
   
-    
+    
     
-      
+      
     
     
     
@@ -18,9 +18,9 @@
     
       
         
-        2143654.docx
+        {{item.fileName}}
       
-      下载
+      打开
     
   
   
diff --git a/weapp/utils/getApiUrl.js b/weapp/utils/getApiUrl.js
index 747be14..cf8313e 100644
--- a/weapp/utils/getApiUrl.js
+++ b/weapp/utils/getApiUrl.js
@@ -55,6 +55,7 @@ exports.getStructuresList = () => {
 }
 
 // 获取巡检报告
-exports.getPatrolReport = () => {
-    return `/getPatrolReport`
+exports.getPatrolReport = (query) => {
+    const { projectId, startTime, endTime } = query;
+    return `/patrolReport?projectId=${projectId}&startTime=${startTime}&endTime=${endTime}`
 }
\ No newline at end of file