From b43d04ef7295105e78feb5980de619f58a9803a6 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期二, 06 九月 2022 17:49:06 +0800
Subject: [PATCH] 2022.9.6  代码结构整理

---
 pages/m_learn/learncase/learncase.json                    |    3 
 pages/m_consult/consultdetailqa/consultdetailqa.js        |  108 
 pages/m_ledger/ledgerhome/ledgerhome.json                 |    7 
 pages/m_notice/notice/notice.json                         |    5 
 pages/m_user/userregistercompany/userregistercompany.json |   11 
 pages/m_user/userregistertype/userregistertype.wxml       |   13 
 pages/m_learn/learfile/learnfile.wxml                     |   34 
 pages/m_assessment/gradereport/gradereport.js             |  286 ++
 pages/m_ledger/ledgerupload/ledgerupload.wxml             |   26 
 pages/m_promise/promisefile/promisefile.json              |   10 
 pages/m_promise/promisesign/promisesign.js                |  205 +
 pages/m_consult/consultdetailcase/consultdetailcase.wxss  |  105 
 pages/m_notice/notice/notice.wxss                         |  101 
 pages/m_assessment/gradereport/gradereport.json           |    8 
 pages/m_learn/learncase/learncase.wxss                    |    1 
 pages/m_user/userregistergov/userregistergov.json         |    3 
 pages/m_assessment/assessment/assessment.json             |    0 
 pages/m_consult/consultdetailqa/consultdetailqa.wxml      |   72 
 pages/m_ledger/ledgerhistory/ledgerhistory.js             |  224 +
 pages/m_consult/consultdetailcase/consultdetailcase.js    |   96 
 pages/m_consult/consulthome/consulthome.json              |   10 
 pages/m_consult/consultdetailitem/consultdetailitem.wxml  |   52 
 pages/m_learn/learn/learn.wxss                            |  128 
 pages/m_promise/promiseresult/promiseresult.wxml          |    5 
 pages/m_service/p_servicehome/servicehome.wxss            |   39 
 pages/m_learn/behaviors/beLearn.js                        |   65 
 pages/m_assessment/gradedetail/gradedetail.wxss           |   29 
 pages/m_consult/consultonline/consultonline.wxml          |   22 
 pages/m_assessment/assessment/assessment.js               |   14 
 pages/m_consult/consultdetail/consultdetail.wxml          |   37 
 pages/m_promise/promisefile/promisefile.js                |  147 +
 pages/m_promise/promisefile/promisefile.wxss              |   63 
 pages/m_consult/consultresultmore/consultresultmore.js    |   82 
 pages/m_assessment/grade/grade.js                         |    6 
 pages/m_ledger/ledgerhome/ledgerhome.wxss                 |  173 +
 pages/m_learn/learncase/learncase.js                      |   66 
 pages/m_consult/consultsearch/consultsearch.wxss          |  124 
 pages/m_notice/notice/notice.js                           |   99 
 pages/m_assessment/assessment/assessment.wxss             |    0 
 pages/m_assessment/gradedetail/gradedetail.json           |    6 
 pages/m_user/userregistercompany/userregistercompany.wxss |   43 
 pages/m_service/p_servicehome/servicehome.json            |    3 
 pages/m_learn/learn/learn.json                            |    8 
 pages/m_promise/promiseresult/promiseresult.json          |    6 
 pages/m_user/userregistergov/userregistergov.js           |   17 
 pages/m_promise/promiseinfo/promiseinfo.js                |  270 +
 pages/m_user/userlogin/userlogin.js                       |  144 +
 pages/m_consult/consultresult/consultresult.json          |    8 
 pages/m_ledger/ledgerhistory/ledgerhistory.json           |    8 
 pages/m_consult/consultproblem/consultproblem.wxml        |   38 
 pages/m_user/userlogin/userlogin.wxml                     |    9 
 pages/m_consult/consultdetail/consultdetail.json          |    6 
 pages/m_consult/consultdetail/consultdetail.js            |  113 
 pages/m_consult/consultdetailqa/consultdetailqa.wxss      |  114 
 pages/m_notice/notice/notice.wxml                         |   48 
 pages/m_user/userregistertype/userregistertype.json       |    4 
 pages/m_promise/promisehome/promise.js                    |  160 +
 pages/m_common/pagevideo/pagevideo.wxml                   |   42 
 pages/m_learn/learncase/learncase.wxml                    |    2 
 pages/m_consult/consultonline/consultonline.wxss          |  118 
 pages/m_consult/consultresultmore/consultresultmore.wxml  |   48 
 pages/m_service/p_servicehome/servicehome.wxml            |   25 
 pages/m_consult/consulthome/consulthome.js                |  237 +
 pages/m_consult/consultresult/consultresult.js            |  123 
 pages/m_consult/consultsearch/consultsearch.json          |    8 
 pages/m_user/mine/mine.wxml                               |   62 
 pages/m_assessment/assessment/assessment.wxml             |    0 
 pages/m_assessment/gradereport/gradereport.wxss           |   67 
 pages/m_promise/promisesign/promisesign.wxml              |   13 
 pages/m_promise/promisefile/promisefile.wxml              |   45 
 pages/m_user/userregistercompany/userregistercompany.js   |  249 +
 pages/m_consult/consultdetail/consultdetail.wxss          |   32 
 pages/m_learn/learfile/learnfile.js                       |   66 
 app.json                                                  |   93 
 pages/m_user/mine/mine.js                                 |   27 
 pages/m_common/pagevideo/pagevideo.js                     |   86 
 pages/m_consult/consultonline/consultonline.json          |    8 
 pages/m_consult/consultproblem/consultproblem.wxss        |   76 
 pages/m_user/userregistercompany/userregistercompany.wxml |   27 
 pages/m_user/userregistergov/userregistergov.wxss         |    1 
 pages/m_consult/consultdetailcase/consultdetailcase.json  |   11 
 pages/m_user/userloginpw/userloginpw.wxss                 |   70 
 pages/m_promise/promisehome/promise.wxss                  |   77 
 pages/m_consult/consultproblem/consultproblem.json        |    9 
 pages/m_user/userlogin/userlogin.wxss                     |   22 
 pages/m_user/userlogin/userlogin.json                     |    3 
 pages/m_user/mine/mine.json                               |    5 
 pages/m_user/userloginpw/userloginpw.js                   |   18 
 pages/m_ledger/ledgerhistory/ledgerhistory.wxml           |   36 
 pages/m_common/pagevideo/pagevideo.wxss                   |   14 
 pages/m_user/userloginpw/userloginpw.json                 |    4 
 pages/m_user/userregistertype/userregistertype.js         |   35 
 pages/m_promise/promisehome/promise.json                  |    5 
 pages/m_consult/consultdetailitem/consultdetailitem.js    |  105 
 pages/m_consult/consultresultmore/consultresultmore.wxss  |   52 
 pages/m_user/mine/mine.wxss                               |   45 
 pages/m_consult/consultdetailqa/consultdetailqa.json      |   10 
 pages/m_assessment/gradereport/gradereport.wxml           |   57 
 pages/m_promise/promisesign/promisesign.json              |    6 
 pages/m_promise/promiseinfo/promiseinfo.wxss              |   68 
 pages/m_promise/promiseinfo/promiseinfo.json              |   11 
 pages/m_ledger/ledgerhome/ledgerhome.js                   |  297 ++
 pages/m_promise/promisesign/promisesign.wxss              |   53 
 pages/m_consult/consultonline/consultonline.js            |  111 
 pages/m_ledger/ledgerupload/ledgerupload.js               |  161 +
 pages/m_assessment/grade/grade.json                       |    9 
 pages/m_learn/learfile/learnfile.json                     |    3 
 pages/m_consult/consultresultmore/consultresultmore.json  |    6 
 pages/m_consult/consulthome/consulthome.wxml              |  173 +
 pages/m_consult/consultresult/consultresult.wxss          |   70 
 pages/m_user/userregistergov/userregistergov.wxml         |    2 
 pages/m_service/p_servicehome/servicehome.js              |   66 
 pages/home/home.js                                        |   12 
 pages/m_user/userloginpw/userloginpw.wxml                 |   20 
 pages/m_user/userregistertype/userregistertype.wxss       |   28 
 pages/m_consult/consultdetailitem/consultdetailitem.json  |    6 
 pages/m_promise/promisehome/promise.wxml                  |   30 
 pages/m_consult/behaviors/behConsultItem.js               |  109 
 pages/m_promise/promiseresult/promiseresult.js            |   44 
 pages/m_assessment/gradedetail/gradedetail.js             |   22 
 pages/m_consult/consultproblem/consultproblem.js          |  228 +
 pages/m_ledger/ledgerupload/ledgerupload.wxss             |   36 
 pages/m_consult/consultdetailcase/consultdetailcase.wxml  |   78 
 pages/m_ledger/ledgerhistory/ledgerhistory.wxss           |   85 
 pages/m_consult/consultdetailitem/consultdetailitem.wxss  |   89 
 pages/m_learn/learfile/learnfile.wxss                     |    1 
 pages/home/home.wxml                                      |    4 
 pages/m_assessment/grade/grade.wxss                       |   70 
 pages/m_promise/promiseresult/promiseresult.wxss          |    5 
 pages/m_learn/learn/learn.wxml                            |  120 
 pages/m_common/pagevideo/pagevideo.json                   |    6 
 pages/m_assessment/grade/grade.wxml                       |    0 
 pages/m_consult/consultsearch/consultsearch.js            |  140 +
 pages/m_assessment/gradedetail/gradedetail.wxml           |   67 
 pages/m_promise/promiseinfo/promiseinfo.wxml              |   34 
 pages/m_learn/learn/learn.js                              |  179 +
 pages/m_ledger/ledgerupload/ledgerupload.json             |   10 
 /dev/null                                                 |    1 
 pages/m_ledger/ledgerhome/ledgerhome.wxml                 |   85 
 pages/m_consult/consulthome/consulthome.wxss              |  148 +
 pages/m_consult/consultsearch/consultsearch.wxml          |   28 
 pages/m_consult/consultresult/consultresult.wxml          |   59 
 142 files changed, 8,219 insertions(+), 78 deletions(-)

diff --git a/app.json b/app.json
index 6208b1f..1edee92 100644
--- a/app.json
+++ b/app.json
@@ -1,44 +1,55 @@
 {
+  "entryPagePath": "pages/m_user/userlogin/userlogin",
   "pages": [
-    "pages/module_user/userlogin/userlogin",
-    "pages/login/login",
     "pages/home/home",
-    "pages/text/text",
-    "pages/promiseinfo/promiseinfo",
-    "pages/promise/promise",
-    "pages/assessment/assessment",
-    "pages/mine/mine",
-    "pages/module_learn/learn/learn",
-    "pages/grade/grade",
-    "pages/gradedetail/gradedetail",
-    "pages/promisefile/promisefile",
-    "pages/promiseresult/promiseresult",
-    "pages/notice/notice",
-    "pages/gradereport/gradereport",
-    "pages/test/test",
-    "pages/test2/test2",
-    "pages/promisesign/promisesign",
-    "pages/module_consult/consulthome/consulthome",
-    "pages/module_consult/consultsearch/consultsearch",
-    "pages/module_consult/consultresult/consultresult",
-    "pages/module_consult/consultdetail/consultdetail",
-    "pages/module_consult/consultonline/consultonline",
-    "pages/module_ledger/ledgerhome/ledgerhome",
-    "pages/module_ledger/ledgerupload/ledgerupload",
-    "pages/module_ledger/ledgerhistory/ledgerhistory",
-    "pages/module_user/userloginpw/userloginpw",
-    "pages/module_user/userregistertype/userregistertype",
-    "pages/module_user/userregistergov/userregistergov",
-    "pages/module_user/userregistercompany/userregistercompany",
-    "pages/module_consult/consultproblem/consultproblem",
+
+    "pages/m_assessment/assessment/assessment",
+    "pages/m_assessment/grade/grade",
+    "pages/m_assessment/gradedetail/gradedetail",
+    "pages/m_assessment/gradereport/gradereport",
+
+    "pages/m_common/pagevideo/pagevideo",
+
+    "pages/m_consult/consulthome/consulthome",
+    "pages/m_consult/consultsearch/consultsearch",
+    "pages/m_consult/consultresult/consultresult",
+    "pages/m_consult/consultdetail/consultdetail",
+    "pages/m_consult/consultonline/consultonline",
+    "pages/m_consult/consultproblem/consultproblem",
+    "pages/m_consult/consultresultmore/consultresultmore",
+    "pages/m_consult/consultdetailitem/consultdetailitem",
+    "pages/m_consult/consultdetailqa/consultdetailqa",
+    "pages/m_consult/consultdetailcase/consultdetailcase",
+
+    "pages/m_learn/learn/learn",
+    "pages/m_learn/learfile/learnfile",
+    "pages/m_learn/learncase/learncase",
+
+    "pages/m_ledger/ledgerhome/ledgerhome",
+    "pages/m_ledger/ledgerupload/ledgerupload",
+    "pages/m_ledger/ledgerhistory/ledgerhistory",
+
+    "pages/m_notice/notice/notice",
+    
+    "pages/m_promise/promiseinfo/promiseinfo",
+    "pages/m_promise/promisehome/promise",
+    "pages/m_promise/promisefile/promisefile",
+    "pages/m_promise/promiseresult/promiseresult",
+    "pages/m_promise/promisesign/promisesign",
+
+    "pages/m_service/p_servicehome/servicehome",
+        
+    "pages/m_user/userloginpw/userloginpw",
+    "pages/m_user/userregistertype/userregistertype",
+    "pages/m_user/userregistergov/userregistergov",
+    "pages/m_user/userregistercompany/userregistercompany",
+    "pages/m_user/mine/mine",
+    "pages/m_user/userlogin/userlogin",
+
     "pages/icons/icons",
-    "pages/module_common/pagevideo/pagevideo",
-    "pages/module_consult/consultresultmore/consultresultmore",
-    "pages/module_consult/consultdetailitem/consultdetailitem",
-    "pages/module_learn/learfile/learnfile",
-    "pages/module_learn/learncase/learncase",
-    "pages/module_consult/consultdetailqa/consultdetailqa",
-    "pages/module_consult/consultdetailcase/consultdetailcase"
+    "pages/text/text",
+    "pages/test/test",
+    "pages/test2/test2"
   ],
   "window": {
     "backgroundTextStyle": "light",
@@ -57,25 +68,25 @@
         "selectedIconPath": "res/icons/tab_1_select.png"
       },
       {
-        "pagePath": "pages/assessment/assessment",
+        "pagePath": "pages/m_assessment/assessment/assessment",
         "text": "鑷祴鏅鸿瘎",
         "iconPath": "/res/icons/tab_2.png",
         "selectedIconPath": "res/icons/tab_2_select.png"
       },
       {
-        "pagePath": "pages/module_ledger/ledgerhome/ledgerhome",
+        "pagePath": "pages/m_ledger/ledgerhome/ledgerhome",
         "text": "鍙拌处绠$悊",
         "iconPath": "/res/icons/tab_5.png",
         "selectedIconPath": "res/icons/tab_5_select.png"
       },
       {
-        "pagePath": "pages/promise/promise",
+        "pagePath": "pages/m_service/p_servicehome/servicehome",
         "text": "瀹堟硶鎵胯",
         "iconPath": "/res/icons/tab_3.png",
         "selectedIconPath": "res/icons/tab_3_select.png"
       },
       {
-        "pagePath": "pages/mine/mine",
+        "pagePath": "pages/m_user/mine/mine",
         "text": "鎴戠殑",
         "iconPath": "/res/icons/tab_4.png",
         "selectedIconPath": "res/icons/tab_4_select.png"
diff --git a/pages/home/home.js b/pages/home/home.js
index f7c2d96..af065cf 100644
--- a/pages/home/home.js
+++ b/pages/home/home.js
@@ -230,29 +230,29 @@
     switch (index) {
       case "0":
         //娴嬭瘎鍘嗗彶璁板綍
-        url = `/pages/gradereport/gradereport?period=${this.data.historyPoint.period}`
+        url = `/pages/m_assessment/gradereport/gradereport?period=${this.data.historyPoint.period}`
         break;
       case "5":
         wx.switchTab({
-          url: '/pages/module_ledger/ledgerhome/ledgerhome',
+          url: '/pages/m_ledger/ledgerhome/ledgerhome',
         })
         return;
       case "6":
         wx.switchTab({
-          url: '/pages/promise/promise',
+          url: '/pages/m_promise/promisehome/promise',
         })
         break;
       case "1":
         //宸ヤ綔鎻愰啋
-        url = "/pages/notice/notice"
+        url = "/pages/m_notice/notice/notice"
         break;
       case "2":
         //鏅鸿兘鍦ㄧ嚎鍜ㄨ
-        url = "/pages/module_consult/consulthome/consulthome"
+        url = "/pages/m_consult/consulthome/consulthome"
         break;
       case "3":
         //鍦ㄧ嚎瀹堟硶瀛︿範
-        url = `/pages/module_learn/learn/learn`
+        url = `/pages/m_learn/learn/learn`
         break;
       case "4":
         //瀹堟硶鍔ㄦ��
diff --git a/pages/home/home.wxml b/pages/home/home.wxml
index 6fcb5fe..3d8627d 100644
--- a/pages/home/home.wxml
+++ b/pages/home/home.wxml
@@ -88,13 +88,13 @@
 
     <view class="flex-h" style="padding: 8px 10px;">
       <view class="image-btn" bindtap="goto" data-index="2">
-        <image src="../../res/icons/btn_bg_2.png" class="" />
+        <image src="/res/icons/btn_bg_2.png" class="" />
         <text class="image-btn_title">鏅鸿兘鍦ㄧ嚎鍜ㄨ</text>
         <text class="image-btn_abstract">鍦ㄧ嚎鏅鸿兘鍜ㄨ鏈嶅姟</text>
         <view class="image-btn_goto"></view>
       </view>
       <view class="image-btn" bindtap="goto" data-index="3">
-        <image src="../../res/icons/btn_bg_1.png" class="" />
+        <image src="/res/icons/btn_bg_1.png" class="" />
         <text class="image-btn_title">鍦ㄧ嚎瀹堟硶瀛︿範</text>
         <text class="image-btn_abstract">瀹炴椂鍦ㄧ嚎瀛︿範鏈嶅姟</text>
         <view class="image-btn_goto"></view>
diff --git a/pages/login/login.wxss b/pages/login/login.wxss
deleted file mode 100644
index 3813a57..0000000
--- a/pages/login/login.wxss
+++ /dev/null
@@ -1,80 +0,0 @@
-.login-container{
-  display: flex;
-  flex-direction: column;
-  justify-content: flex-start;
-  align-items: center;
-  height: 100vh;
-  z-index: 1;
-}
-
-.banner-bg {
-  position: fixed;
-  width: 100%;
-  height: 100vh;
-  background: linear-gradient(#57E4CB, white);
-}
-
-.top-view {
-  margin-top: 80px;
-}
-
-.bottom-view{
-  width: 60%;margin-top: 80px;
-  /* background-color: blue; */
-}
-
-.login-img{
-  width: 100px;
-  height: 100px;
-  margin-top: 0px;
-}
-.bottom-btn{
-  color: white;
-  background-color: #5b92fd;
-  box-shadow: 2px 2px 2px ;
-  border-radius: 25px;
-  width: 100% !important;
-}
-.page-text{
-  font-size: 16px;
-  font-weight: 800;
-  color: white;
-  margin-bottom: 80px;
-}
-
-.agree-text {
-  width: 70vw;
-  text-align: center;
-  font-size: 12px;
-  color: #b8b8b8;
-  margin-top: 12rpx;
-}
-
-.user-info {
-  display: flex;
-  flex-flow: column;
-  align-items: center;
-  width: 70%;
-  /* background-color: burlywood; */
-}
-
-.user-info_item>text{
-  color: #49494971;
-  line-height: 30px;
-}
-
-.user-info_item>input{
-  height: 30px;
-  line-height: 30px;
-  border: #929292 1px solid;
-  border-radius: 4px;
-  background-color: white;
-}
-
-.user-info_item {
-  display: flex;
-  flex-flow: column;
-  justify-content: flex-start;
-  align-items: flex-start;
-  margin-bottom: 8px;
-}
\ No newline at end of file
diff --git a/pages/assessment/assessment.js b/pages/m_assessment/assessment/assessment.js
similarity index 93%
rename from pages/assessment/assessment.js
rename to pages/m_assessment/assessment/assessment.js
index 00da6ea..3079544 100644
--- a/pages/assessment/assessment.js
+++ b/pages/m_assessment/assessment/assessment.js
@@ -1,8 +1,8 @@
 // pages/assessment/assessment.js
-const util = require('../../utils/util')
-const echarts = require("../../component/ec-canvas/echarts")
-const assessmentService = require("../../service/assessmentservice")
-const moment = require('../../utils/moment.min')
+const util = require('../../../utils/util')
+const echarts = require("../../../component/ec-canvas/echarts")
+const assessmentService = require("../../../service/assessmentservice")
+const moment = require('../../../utils/moment.min')
 const app = getApp()
 
 function setOption(chart, data) {
@@ -290,15 +290,15 @@
       case "0":
         //鍘绘祴璇勬垨鑰呮煡鐪嬭鎯�
         if (this.data.score) {
-          url = `/pages/gradereport/gradereport?period=${this.data.thisPeriod}`
+          url = `/pages/m_assessment/gradereport/gradereport?period=${this.data.thisPeriod}`
         } else {
-          url = `/pages/grade/grade?record=false`
+          url = `/pages/m_assessment/grade/grade?record=false`
         }
         break;
       case "1":
         //
         var period = e.currentTarget.dataset.period
-        url = `/pages/gradereport/gradereport?period=${period}`
+        url = `/pages/m_assessment/gradereport/gradereport?period=${period}`
         break;
       case "2":
         //
diff --git a/pages/assessment/assessment.json b/pages/m_assessment/assessment/assessment.json
similarity index 100%
rename from pages/assessment/assessment.json
rename to pages/m_assessment/assessment/assessment.json
diff --git a/pages/assessment/assessment.wxml b/pages/m_assessment/assessment/assessment.wxml
similarity index 100%
rename from pages/assessment/assessment.wxml
rename to pages/m_assessment/assessment/assessment.wxml
diff --git a/pages/assessment/assessment.wxss b/pages/m_assessment/assessment/assessment.wxss
similarity index 100%
rename from pages/assessment/assessment.wxss
rename to pages/m_assessment/assessment/assessment.wxss
diff --git a/pages/grade/grade.js b/pages/m_assessment/grade/grade.js
similarity index 96%
rename from pages/grade/grade.js
rename to pages/m_assessment/grade/grade.js
index c25443c..9a0b4a7 100644
--- a/pages/grade/grade.js
+++ b/pages/m_assessment/grade/grade.js
@@ -1,6 +1,6 @@
 // pages/grade/grade.js
-const assessmentService = require("../../service/assessmentservice")
-const moment = require('../../utils/moment.min')
+const assessmentService = require("../../../service/assessmentservice")
+const moment = require('../../../utils/moment.min')
 const app = getApp()
 
 Page({
@@ -189,7 +189,7 @@
       showDialog2: false,
     })
     wx.redirectTo({
-      url: '/pages/gradereport/gradereport'
+      url: '/pages/m_assessment/gradereport/gradereport'
     })
   },
 
diff --git a/pages/m_assessment/grade/grade.json b/pages/m_assessment/grade/grade.json
new file mode 100644
index 0000000..416607c
--- /dev/null
+++ b/pages/m_assessment/grade/grade.json
@@ -0,0 +1,9 @@
+{
+  "navigationBarTitleText": "鑷祴鏅鸿瘎",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {
+    "c-dialog": "/component/commondialog/commondialog",
+    "mp-icon": "/component/icon/icon"
+  }
+}
\ No newline at end of file
diff --git a/pages/grade/grade.wxml b/pages/m_assessment/grade/grade.wxml
similarity index 100%
rename from pages/grade/grade.wxml
rename to pages/m_assessment/grade/grade.wxml
diff --git a/pages/m_assessment/grade/grade.wxss b/pages/m_assessment/grade/grade.wxss
new file mode 100644
index 0000000..a029050
--- /dev/null
+++ b/pages/m_assessment/grade/grade.wxss
@@ -0,0 +1,70 @@
+/* pages/grade/grade.wxss */
+.banner-bg {
+  position: fixed;
+  width: 100%;
+  height: 5vh;
+  background-color: #57E4CB;
+}
+
+.e-title__1{
+  text-align: center;
+  padding: 16px 16px 4px 16px;
+  font-size: 20px;
+  font-weight: 600;
+}
+
+.e-title__2 {
+  font-size: 16px;
+  padding: 8px;
+}
+
+.e-content {
+  display: flex;
+  justify-content: space-between;
+  font-size: 14px;
+  color: var(--fyui-text-color_2);
+  background-color: #F7FEF9;
+  padding: 8px 10px;
+  margin-left: 4px;
+  margin-right: 4px;
+  margin-bottom: 4px;
+}
+
+.select {
+  background-color: #46b194;
+  color: white;
+}
+
+.submit {
+  border-radius: 4px;
+  background: linear-gradient(to right, #6DF1A9, #62EBCF);
+  margin: 8px;
+  color: white;
+  padding: 8px;
+}
+
+.calculaiton_img {
+  width: 80px;
+  height: 80px;
+}
+
+.loading_over_group {
+  display: block;
+  margin: auto;
+  width: 50%;
+}
+
+.loading_over {
+  display: flex;
+  justify-content: flex-start;
+}
+
+.loading_over>image {
+  width: 16px;
+  height: 16px;
+}
+
+.loading_text {
+  font-size: 12px;
+  color: #545555;
+}
\ No newline at end of file
diff --git a/pages/m_assessment/gradedetail/gradedetail.js b/pages/m_assessment/gradedetail/gradedetail.js
new file mode 100644
index 0000000..9498e6e
--- /dev/null
+++ b/pages/m_assessment/gradedetail/gradedetail.js
@@ -0,0 +1,22 @@
+// pages/gradedetail/gradedetail.js
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    rank: 1,
+    level: '浣�',
+    period: '2022骞�5鏈�',
+    time: '2022骞�5鏈�10鏃�'
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad: function (options) {
+    this.setData({
+      score: options.score
+    })
+  },
+})
\ No newline at end of file
diff --git a/pages/m_assessment/gradedetail/gradedetail.json b/pages/m_assessment/gradedetail/gradedetail.json
new file mode 100644
index 0000000..3b7081b
--- /dev/null
+++ b/pages/m_assessment/gradedetail/gradedetail.json
@@ -0,0 +1,6 @@
+{
+  "navigationBarTitleText": "璇︽儏",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/m_assessment/gradedetail/gradedetail.wxml b/pages/m_assessment/gradedetail/gradedetail.wxml
new file mode 100644
index 0000000..8ed18b1
--- /dev/null
+++ b/pages/m_assessment/gradedetail/gradedetail.wxml
@@ -0,0 +1,67 @@
+<!--pages/gradedetail/gradedetail.wxml-->
+<view class="page">
+  <view class="banner-bg"></view>
+  <view class="page__bd">
+    <view class="fyui-panel">
+      <view class="flex-h">
+        <view>鑰冩牳寰楀垎</view>
+        <view>{{score}}</view>
+      </view>
+      <view class="flex-h">
+        <view>椋庨櫓鎺掑悕</view>
+        <view>{{rank}}</view>
+      </view>
+      <view class="flex-h">
+        <view>椋庨櫓绛夌骇</view>
+        <view>{{level}}</view>
+      </view>
+      <view class="flex-h">
+        <view>鑰冩牳鍛ㄦ湡</view>
+        <view>{{period}}</view>
+      </view>
+      <view class="flex-h last">
+        <view>鑷瘎鏃堕棿</view>
+        <view>{{time}}</view>
+      </view>
+    </view>
+    <view style="margin-left: 12px; font-weight: 600; font-size: 14px;margin-top: 8px;">鎵e垎缁嗗垯</view>
+    <view class="fyui-panel">
+      <view class="flex-h">
+        <view>鎵e垎绫诲瀷</view>
+        <view>璁惧</view>
+      </view>
+      <view class="flex-h">
+        <view>鎵e垎鍒嗗��</view>
+        <view>-10</view>
+      </view>
+      <view class="flex-h">
+        <view>鎵e垎鎻忚堪</view>
+        <view>璁惧绉佽嚜鎷嗛櫎锛屾湭瑙勮寖瀹夎璁惧</view>
+      </view>
+      <view class="flex-h" style="margin-bottom: 16px;">
+        <view>鐩稿叧寤鸿</view>
+        <view>寤鸿鍙婃椂瑙勮寖瀹夎璁惧</view>
+      </view>
+
+      <view class="flex-h first" style="padding-top: 16px;">
+        <view>鎵e垎绫诲瀷</view>
+        <view>鏁版嵁</view>
+      </view>
+      <view class="flex-h">
+        <view>鎵e垎鍒嗗��</view>
+        <view>-10</view>
+      </view>
+      <view class="flex-h">
+        <view>鎵e垎鎻忚堪</view>
+        <view>鏁版嵁閮ㄥ垎瓒呮爣</view>
+      </view>
+      <view class="flex-h">
+        <view>鐩稿叧寤鸿</view>
+        <view>寤鸿瑙勮寖鐢熶骇锛屽姞寮虹幆淇濋槻鎶�</view>
+      </view>
+    </view>
+  </view>
+  <view class="page__ft">
+
+  </view>
+</view>
\ No newline at end of file
diff --git a/pages/m_assessment/gradedetail/gradedetail.wxss b/pages/m_assessment/gradedetail/gradedetail.wxss
new file mode 100644
index 0000000..3937423
--- /dev/null
+++ b/pages/m_assessment/gradedetail/gradedetail.wxss
@@ -0,0 +1,29 @@
+/* pages/gradedetail/gradedetail.wxss */
+.page__bd {
+  font-size: 14px;
+}
+.banner-bg {
+  position: fixed;
+  width: 100%;
+  height: 5vh;
+  background-color: #57E4CB;
+}
+
+.fyui-panel {
+  padding: 8px;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+}
+
+.fyui-panel .flex-h {
+  margin-top: 6px;
+}
+
+.fyui-panel .first {
+  border-top: 1px rgba(214, 214, 214, 0.308) solid;
+}
+
+.fyui-panel .last {
+  border-bottom: 0px rgba(214, 214, 214, 0.308) solid;
+}
\ No newline at end of file
diff --git a/pages/m_assessment/gradereport/gradereport.js b/pages/m_assessment/gradereport/gradereport.js
new file mode 100644
index 0000000..e3095a0
--- /dev/null
+++ b/pages/m_assessment/gradereport/gradereport.js
@@ -0,0 +1,286 @@
+// pages/gradereport/gradereport.js
+const echarts = require("../../../component/ec-canvas/echarts")
+const assessmentService = require("../../../service/assessmentservice")
+const moment = require('../../../utils/moment.min')
+const app = getApp()
+
+function setOption(chart, data) {
+  var option = {
+    title: {
+      text: data.score, //涓绘爣棰樻枃鏈�
+      subtext: `娴嬭瘎${data.level}`, //鍓爣棰樻枃鏈�
+      left: 'center',
+      top: '40%',
+      textStyle: {
+        fontSize: 20,
+        fontWeight: 'bold',
+        color: 'black',
+        align: 'center',
+        textBorderColor: 'black',
+        // textBorderWidth: 1
+      },
+      subtextStyle: {
+        fontFamily: "寰蒋闆呴粦",
+        fontSize: 10,
+        color: 'black',
+        textBorderColor: 'black',
+        // textBorderWidth: 1
+      },
+      // backgroundColor: 'black'
+    },
+    color: ['white'],
+    tooltip: {},
+    legend: {
+      show: false
+    },
+    radar: {
+      radius: '60%',
+      axisName: {
+        color: 'white'
+      },
+      shape: 'polygon',
+      axisLine: {
+        show: true,
+        lineStyle: {
+          color: 'white',
+          type: 'dashed',
+          join: 'round'
+        }
+      },
+      axisLabel: {
+        show: false
+      },
+      splitLine: {
+        show: true,
+        color: 'white'
+      },
+      splitArea: {
+        show: true,
+        areaStyle: {
+          color: ['#4ca796', '#63c5b3', '#74DFCB', '#76E6D2', '#75ECD7'],
+        }
+      },
+      indicator: data.indicator
+    },
+    series: [{
+      name: "寰楀垎",
+      type: "radar",
+      areaStyle: {
+        color: 'white',
+        opacity: 0.9
+      },
+      label: {
+        show: false,
+        position: 'inside'
+      },
+      data: [{
+        value: data.value,
+        name: "寰楀垎"
+      }]
+    }],
+    // grid: {
+    //   x: 30,
+    //   y: 30,
+    //   x2: 35,
+    //   y2: 53
+    // },
+  };
+
+  chart.setOption(option);
+}
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    ec: {
+      lazyLoad: true
+    },
+    creditText: '----------------------',
+    gradeDetails: [{
+      name: '鑷瘎寰楀垎',
+      detail: '--'
+    }, {
+      name: '椋庨櫓鎺掑悕',
+      detail: '--'
+    }, {
+      name: '椋庨櫓绛夌骇',
+      detail: '--'
+    }, {
+      name: '鑷瘎鍛ㄦ湡',
+      detail: '--'
+    }, {
+      name: '鑷瘎鏃堕棿',
+      detail: '--'
+    }],
+
+    //澶卞垎鐨勭被鍨�
+    losePointsItem: [],
+    losePoints: [{
+      baseRule: '',
+      name: '',
+      itemlist: [{
+        ruleName: '----',
+        score: '--',
+        remark: '------------'
+      },{
+        ruleName: '----',
+        score: '--',
+        remark: '------------'
+      }]
+    }]
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad: function (options) {
+    if (options.period) {
+      this.setData({
+        period: options.period
+      })
+    } else {
+      let now = moment()
+      //鏍规嵁褰撳墠鏃堕棿鑾峰彇璇勪及鍛ㄦ湡YYYY/M-M
+      let period = `${now.year()}/${now.month()+1}-${now.month()+1}`
+      this.setData({
+        period: period
+      })
+    }
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady: function () {
+    this.ecComponent = this.selectComponent('#mychart-dom-radar');
+    this.initChart()
+    this.getDetail()
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず
+   */
+  onShow: function () {
+
+  },
+
+  initChart: function () {
+    var data = {
+      score: '--',
+      level: '涓�鑸�',
+      indicator: [{
+        name: "娉曡",
+        max: 100
+      }, {
+        name: "绠$悊",
+        max: 100
+      }, {
+        name: "鎵胯",
+        max: 100
+      }, {
+        name: "瀹堟硶",
+        max: 100
+      }, {
+        name: "璁惧",
+        max: 100
+      }],
+      value: [100, 100, 80, 5, 67, 82]
+    }
+    this.ecComponent.init((canvas, width, height, dpr) => {
+      // 鑾峰彇缁勪欢鐨� canvas銆亀idth銆乭eight 鍚庣殑鍥炶皟鍑芥暟
+      // 鍦ㄨ繖閲屽垵濮嬪寲鍥捐〃
+      const chart = echarts.init(canvas, null, {
+        width: width,
+        height: height,
+        devicePixelRatio: dpr // new
+      });
+      // setOption(chart, data);
+
+      // 灏嗗浘琛ㄥ疄渚嬬粦瀹氬埌 this 涓婏紝鍙互鍦ㄥ叾浠栨垚鍛樺嚱鏁帮紙濡� dispose锛変腑璁块棶
+      this.chart = chart;
+
+      // 娉ㄦ剰杩欓噷涓�瀹氳杩斿洖 chart 瀹炰緥锛屽惁鍒欎細褰卞搷浜嬩欢澶勭悊绛�
+      return chart;
+    });
+  },
+
+  getDetail() {
+    var that = this
+    assessmentService.getDetail(app.globalData.accessToken.userId, this.data.period, {
+      success(data) {
+        let creditText = data.creditText
+        let year = data.period.split('/')[0]
+        let month = data.period.split('/')[1].split('-')[0]
+        let gradeDetails = [{
+          name: '鑷瘎寰楀垎',
+          detail: data.score
+        }, {
+          name: '椋庨櫓鎺掑悕',
+          detail: data.rank
+        }, {
+          name: '椋庨櫓绛夌骇',
+          detail: data.level
+        }, {
+          name: '鑷瘎鍛ㄦ湡',
+          detail: `${year}骞�${month}鏈坄
+        }, {
+          name: '鑷瘎鏃堕棿',
+          detail: moment(data.time).format("YYYY-MM-DD HH:mm")
+        }]
+        let losePointsItem = []
+        let losePoints = []
+        for (const key in data.loseScore) {
+          const s = data.loseScore[key];
+          if (Object.keys(s).length > 0) {
+            losePointsItem.push(key)
+            for (const key1 in s) {
+              const rule = s[key1];
+              let p = {
+                baseRule: key,
+                name: key1,
+                itemlist: []
+              }
+              rule.forEach(r => {
+                // fixme :  姝ゅ鏆傛椂灏嗐�愰楗�戠被鍨嬬殑浼佷笟璇勪及寤鸿鐨勭涓�鍙ヨ瘽鍒犻櫎
+                if (app.globalData.userInfo.extension2  === '1') {
+                  const i = r.third.indexOf('锛�')
+                  r.third = r.third.slice(i+1)
+                  r.third = r.third.replaceAll('浣�', '鎮�')
+                }
+                p.itemlist.push({
+                  ruleName: r.first,
+                  score: r.second,
+                  remark: r.third
+                })
+              });
+              losePoints.push(p)
+            }
+          }
+        }
+        let classPoints = {
+          score: data.score,
+          level: data.level,
+          indicator: [],
+          value: []
+        }
+        data.classScore.forEach(c => {
+          classPoints.indicator.push({
+            name: c.first,
+            max: c.second
+          })
+          classPoints.value.push(c.third)
+        });
+
+        that.setData({
+          creditText: creditText,
+          gradeDetails: gradeDetails,
+          losePoints: losePoints,
+          losePointsItem: losePointsItem
+        })
+        setOption(that.chart, classPoints)
+      }
+    })
+  }
+})
\ No newline at end of file
diff --git a/pages/m_assessment/gradereport/gradereport.json b/pages/m_assessment/gradereport/gradereport.json
new file mode 100644
index 0000000..8cf8e7c
--- /dev/null
+++ b/pages/m_assessment/gradereport/gradereport.json
@@ -0,0 +1,8 @@
+{
+  "navigationBarTitleText": "娴嬭瘎鍒嗘瀽",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {
+    "ec-canvas": "/component/ec-canvas/ec-canvas"
+  }
+}
\ No newline at end of file
diff --git a/pages/m_assessment/gradereport/gradereport.wxml b/pages/m_assessment/gradereport/gradereport.wxml
new file mode 100644
index 0000000..c4d4a8d
--- /dev/null
+++ b/pages/m_assessment/gradereport/gradereport.wxml
@@ -0,0 +1,57 @@
+<!--pages/gradedetail/gradedetail.wxml-->
+<view class="page">
+  <view class="banner-bg"></view>
+  <view class="page__bd">
+    <!-- 闆疯揪鍥� -->
+    <view class="radar-panel">
+      <ec-canvas id="mychart-dom-radar" canvas-id="mychart-radar" ec="{{ ec }}"></ec-canvas>
+    </view>
+    <!-- 寰楀垎瑙h -->
+    <view class="marks">
+      <image src="/res/icons/qmark1.png" class="mark"></image>
+      <image src="/res/icons/qmark2.png" class="mark"></image>
+    </view>
+    <view class="fyui-panel">
+      <view class="fyui-panel_title">鑷瘎瑙h</view>
+      <view class="fyui-panel_desc">{{creditText}}</view>
+    </view>
+    <!-- 寰楀垎璇︽儏 -->
+    <view class="fyui-panel gradient">
+      <view class="fyui-panel_title">寰楀垎璇︽儏</view>
+      <block wx:for="{{gradeDetails}}" wx:key="index">
+        <view class="flex-h">
+          <view>{{item.name}}</view>
+          <view>{{item.detail}}</view>
+        </view>
+      </block>
+    </view>
+    <!-- 澶卞垎鏉$洰 -->
+    <view class="fyui-panel fyui-panel__max">
+      <view class="fyui-panel_title">鑷瘎璇婃柇</view>
+      <view wx:if="{{losePoints.length > 0}}">
+        鏈娴嬭瘎涓昏澶卞垎绫诲埆涓�<text style="color: orange;font-weight: 600;font-size: 16px;" wx:for="{{losePointsItem}}" wx:key="index">{{index > 0 ? "銆�" : ""}}{{item}}</text>
+        绛夊叡璁�<text style="color: orange;font-weight: 600;font-size: 18px;">{{losePoints.length}}</text>椤癸紝鍏蜂綋闂璇婃柇鍙婂缓璁涓嬶細
+      </view>
+      <view wx:else="">鎮ㄦ湰娆¤嚜璇勬弧鍒嗭紝鏆傛棤璇婃柇寤鸿銆�</view>
+      <block wx:for="{{losePoints}}" wx:key="index">
+        <view class="{{index !=0 ? 'first' : ''}}">
+          <view class="fyui-panel_title">{{index + 1}}. 銆�<text style="color: orange;">{{item.baseRule}}</text>銆憑{item.name}}</view>
+          <block wx:for="{{item.itemlist}}" wx:for-item="rule" wx:key="index">
+            <view class="fyui-panel_desc">
+              <view>闂锛�</view>{{rule.ruleName}}
+            </view>
+            <view class="fyui-panel_desc">
+              <view>鎵e垎锛�</view><text style="color: orange;">{{rule.score}}鍒�</text>
+            </view>
+            <view class="fyui-panel_desc">
+              <view>寤鸿锛�</view>{{rule.remark}}
+            </view>
+          </block>
+        </view>
+      </block>
+    </view>
+  </view>
+  <view class="page__ft">
+
+  </view>
+</view>
\ No newline at end of file
diff --git a/pages/m_assessment/gradereport/gradereport.wxss b/pages/m_assessment/gradereport/gradereport.wxss
new file mode 100644
index 0000000..124bd72
--- /dev/null
+++ b/pages/m_assessment/gradereport/gradereport.wxss
@@ -0,0 +1,67 @@
+/* pages/gradedetail/gradedetail.wxss */
+.page__bd {
+  font-size: 14px;
+}
+.banner-bg {
+  position: fixed;
+  width: 100%;
+  height: 80vh;
+  background: linear-gradient(#57E4CB, white);
+}
+
+.radar-panel {
+  width: 100%;
+  height: 35vh;
+  color: #ffffffbe;
+}
+
+.fyui-panel {
+  padding: 16px 8px;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+  z-index: -1;
+}
+
+.gradient {
+  background: linear-gradient(#95f7e575, white);
+}
+
+.fyui-panel__max {
+  padding: 16px 18px;
+  margin-top: 1px;
+}
+
+.marks {
+  display: flex;
+  margin-left: 20px;
+  margin-bottom: -24px;
+  z-index: 1;
+}
+
+.mark {
+  width: 16px;
+  height: 30px;
+}
+
+.fyui-panel .flex-h {
+  margin-top: 6px;
+  padding: 0 4px;
+}
+
+.fyui-panel .first {
+  border-top: 1px rgba(214, 214, 214, 0.308) solid;
+  padding-top: 14px;
+}
+
+.fyui-panel .last {
+  border-bottom: 0px rgba(214, 214, 214, 0.308) solid;
+}
+
+.fyui-panel__max .fyui-panel_desc{
+  display: flex;
+}
+
+.fyui-panel__max .fyui-panel_desc>view{
+  white-space: nowrap;
+}
\ No newline at end of file
diff --git a/pages/m_common/pagevideo/pagevideo.js b/pages/m_common/pagevideo/pagevideo.js
new file mode 100644
index 0000000..6359bb8
--- /dev/null
+++ b/pages/m_common/pagevideo/pagevideo.js
@@ -0,0 +1,86 @@
+// pages/module_common/pagevideo/pagevideo.js
+const lawservice = require("../../../service/lawservice")
+const moment = require('../../../utils/moment.min')
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    video: {},
+    resources: []
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+    var that = this
+    this.getOpenerEventChannel().on('acceptDataFromOpenerPage', function (data) {
+      setTimeout(() => {
+        that.setData({
+          video: data
+        })  
+      }, 500);
+      
+      if (data.lrResourcetitle) {
+        wx.setNavigationBarTitle({
+          title: data.lrResourcetitle,
+        })
+      }
+    })
+
+    this.getResources()
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜�
+   */
+  onShareAppMessage() {
+
+  },
+
+  onReachBottom () {
+    console.log('onReachBottom');
+    if (this.cPage && this.tPage) {
+      if (this.cPage < this.tPage) {
+        this.getResources(this.cPage + 1)
+      }
+    }
+  },
+
+  getResources(cPage = 1) {
+    var that = this
+    let user = app.globalData.userInfo
+    lawservice.getLawRegulations(user.guid, cPage, {
+      sceneTypeId: user.extension2,
+      fileType: 4
+    }, {
+      onHead(header) {
+        that.cPage = parseInt(header.currentPage)
+        that.tPage = parseInt(header.totalPage)
+        console.log(`cPage:${that.cPage}, tPage:${that.tPage}`);
+      },
+      success(data) {
+        let resources = that.data.resources
+        data.forEach(d => {
+          d.views = parseInt(Math.random() * 1000 + 10)
+          d.lrPublishdate = moment(d.lrPublishdate).format('YYYY骞碝M鏈圖D鏃�')
+        });
+        resources = resources.concat(data)
+        that.setData({
+          resources
+        })
+      }
+    }, 4)
+  },
+})
\ No newline at end of file
diff --git a/pages/m_common/pagevideo/pagevideo.json b/pages/m_common/pagevideo/pagevideo.json
new file mode 100644
index 0000000..d4ecc0c
--- /dev/null
+++ b/pages/m_common/pagevideo/pagevideo.json
@@ -0,0 +1,6 @@
+{
+  "navigationBarTitleText": "瑙嗛鎾斁",
+  "navigationBarBackgroundColor": "#65EAD2",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/m_common/pagevideo/pagevideo.wxml b/pages/m_common/pagevideo/pagevideo.wxml
new file mode 100644
index 0000000..c4d6098
--- /dev/null
+++ b/pages/m_common/pagevideo/pagevideo.wxml
@@ -0,0 +1,42 @@
+<!--pages/module_common/pagevideo/pagevideo.wxml-->
+<view class="page">
+  <view class="page__hd">
+    <video class="video" id="myVideo" src="{{video.lrBodyurl}}" binderror="videoErrorCallback" show-center-play-btn='{{false}}' show-play-btn="{{true}}" controls autoplay custom-cache="{{false}}" poster="{{video.lrPicurl}}" picture-in-picture-mode="{{['push', 'pop']}}" bindenterpictureinpicture='bindVideoEnterPictureInPicture' bindleavepictureinpicture='bindVideoLeavePictureInPicture'></video>
+  </view>
+  <view class="page__bd">
+    <view class="fyui-box  fyui-box__text">
+      <view class="fyui-box__hd">
+        {{video.lrResourcetitle}}
+      </view>
+      <view class="fyui-box__bd">
+        <view class="fyui-box__content">{{video.lrResourcedesc}}</view>
+
+      </view>
+      <view class="fyui-box__ft">
+        <view>{{video.lrPublishdate}}</view>
+        <view>
+          <image src="/res/icons/view.png" class="icon"></image>{{video.views}}
+        </view>
+      </view>
+    </view>
+  </view>
+  <view class="page__ft">
+    <view class="title">鐩稿叧瑙嗛</view>
+    <view wx:for="{{resources}}" wx:key="index" wx:item="item">
+      <view class="fyui-box fyui-panel" bindtap="gotoResource" data-index="{{index}}">
+        <view class="fyui-box__hd">
+          <image src="{{item.lrPicurl}}" class="" mode="aspectFill"/>
+        </view>
+        <view class="fyui-box__bd">
+          <view class="fyui-box__content">{{item.lrResourcetitle}}</view>
+          <view class="fyui-box__tag">
+            <view>{{item.lrPublishdate}}</view>
+            <view class="flex-h">
+              <image src="/res/icons/view.png" class="icon"></image>{{item.views}}
+            </view>
+          </view>
+        </view>
+      </view>
+    </view>
+  </view>
+</view>
\ No newline at end of file
diff --git a/pages/m_common/pagevideo/pagevideo.wxss b/pages/m_common/pagevideo/pagevideo.wxss
new file mode 100644
index 0000000..4275664
--- /dev/null
+++ b/pages/m_common/pagevideo/pagevideo.wxss
@@ -0,0 +1,14 @@
+/* pages/module_common/pagevideo/pagevideo.wxss */
+.page__hd{
+  padding: 0;
+}
+.video{
+  width: 100%;
+}
+
+.title{
+  text-align: start;
+  padding: 0 16px;
+  font-weight: 600;
+  font-size: 16px;
+}
\ No newline at end of file
diff --git a/pages/m_consult/behaviors/behConsultItem.js b/pages/m_consult/behaviors/behConsultItem.js
new file mode 100644
index 0000000..1fdb653
--- /dev/null
+++ b/pages/m_consult/behaviors/behConsultItem.js
@@ -0,0 +1,109 @@
+const consultservice = require("../../../service/consultservice")
+const app = getApp()
+
+/**
+ * 鏅鸿兘鍦ㄧ嚎鍜ㄨ鐨勬煡璇笌鏌ョ湅璇︽儏
+ */
+module.exports = Behavior({
+  data: {
+    result: []
+  },
+  methods:{
+    // onReachBottom () {
+    //   console.log('onReachBottom');
+    //   if (this.cPage && this.tPage) {
+    //     if (this.cPage < this.tPage) {
+    //       this.searchMore(this.cPage + 1)
+    //     }
+    //   }
+    // },
+    // searchMore (cPage = 1) {
+    //   var that = this
+    //   wx.showLoading({
+    //     title: '鎼滅储涓�',
+    //     mask: true,
+    //     success: (res) => {},
+    //     fail: (res) => {},
+    //     complete: (res) => {},
+    //   })
+    //   setTimeout(() => {
+    //     wx.hideLoading()
+    //   }, 20000);
+    //   consultservice.searchLaw(app.globalData.accessToken.userId, '澶ф皵姹℃煋', cPage, 5, {
+    //     onPage(head){
+    //       that.cPage = head.page
+    //       that.tPage = head.totalPage
+    //     },
+    //     success (res) {
+    //       let result = that.data.result
+    //       res.forEach(r => {
+    //         r.des = r.des.replace('\\n', '<br/>')
+    //         if (result.length === 0) {
+    //           result.push({
+    //             typeId: r.typeId,
+    //             typeName: r.typeName,
+    //             contents: [r]
+    //           })
+    //         } else {
+    //           result[0].contents.push(r)
+    //         }
+    //       });
+    //       that.setData({
+    //         result
+    //       })
+    //       console.log(result);
+    //     },
+    //     complete (res) {
+    //       wx.hideLoading()
+    //     }
+    //   }, 2)
+    // },
+    /**
+     * 鏌ョ湅鏌ヨ缁撴灉璇︽儏
+     */
+    gotoDetail (e) {
+      const iList = e.currentTarget.dataset.index.split(',')
+      const i1 = iList[0]
+      const i2 = iList[1]
+      const r = this.data.result[i1]
+      switch (r.typeId) {
+        //娉曞緥娉曡鏂囦欢
+        case 1:
+          const fileId = r.contents[i2].id
+          wx.navigateTo({
+            url: '/pages/m_consult/consultdetail/consultdetail',
+            success: (res) => {
+              // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+              res.eventChannel.emit('acceptDataFromOpenerPage', {
+                fileId: fileId
+              })
+            },
+          })
+          break;
+        //娉曞緥娉曡鏉$洰
+        case 2:
+          const itemId = r.contents[i2].id
+          wx.navigateTo({
+            url: '/pages/m_consult/consultdetailitem/consultdetailitem',
+            success: (res) => {
+              // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+              res.eventChannel.emit('acceptDataFromOpenerPage', {
+                itemId: itemId
+              })
+            },
+          })
+          break;
+        //鎵ф硶妗堜緥
+        case 3:
+  
+          break;
+        //鐜繚闂
+        case 4:
+  
+          break;
+        default:
+          break;
+      }
+    },
+  }
+})
\ No newline at end of file
diff --git a/pages/m_consult/consultdetail/consultdetail.js b/pages/m_consult/consultdetail/consultdetail.js
new file mode 100644
index 0000000..c46b5c1
--- /dev/null
+++ b/pages/m_consult/consultdetail/consultdetail.js
@@ -0,0 +1,113 @@
+// pages/m_consult/consultdetail/consultdetail.js
+const consultservice = require("../../../service/consultservice")
+const moment = require('../../../utils/moment.min')
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    fileId: 'Zi5EEhijAKugYeHe',
+    content: {}
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+    var that = this
+    this.getOpenerEventChannel().on('acceptDataFromOpenerPage', function (data) {
+      that.setData({
+        fileId: data.fileId
+      })
+
+      that.getFile()
+    })
+    // that.getFile()
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず
+   */
+  onShow() {
+
+  },
+
+  getFile () {
+    var that = this
+    wx.showLoading({
+      title: '鍔犺浇涓�',
+      mask: true,
+      success: (res) => {},
+      fail: (res) => {},
+      complete: (res) => {},
+    })
+    setTimeout(() => {
+      wx.hideLoading()
+    }, 20000);
+    consultservice.getMgtFile(app.globalData.accessToken.userId, this.data.fileId, {
+      success (res) {
+        res.mfReleaseDate = that.formateTime(res.mfReleaseDate)
+        res.mfEffectiveDate = that.formateTime(res.mfEffectiveDate)
+        res.mfClosingDate = that.formateTime(res.mfClosingDate)
+        that.setData({
+          content: res
+        })
+      },
+      complete (res) {
+        wx.hideLoading()
+      }
+    })
+  },
+
+  formateTime (t) {
+    if (t) {
+      return moment(t).format("YYYY骞碝M鏈圖D鏃�") 
+    } else {
+      return undefined
+    }
+  },
+
+  openFile () {
+    let content = this.data.content
+    if (content.mfFileUrl == undefined || content.mfFileUrl == null || content.mfFileUrl.length == 0) {
+      wx.showToast({
+        title: '鏂囦欢鏆傛椂鏃犳硶璁块棶',
+        duration: 1000,
+        icon: 'none',
+        mask: true,
+      })
+      return
+    }
+    console.log(content.mfFileUrl);
+    wx.showLoading({
+      title: ' 鏂囦欢涓嬭浇涓�',
+      mask: true,
+    })
+    wx.downloadFile({
+      url: content.mfFileUrl,
+      success: function (res) {
+        wx.hideLoading()
+        const filePath = res.tempFilePath
+        wx.openDocument({
+          filePath: filePath,
+          success: function (res) {
+            console.log('鎵撳紑鏂囨。鎴愬姛')
+          },
+          fail (error) {
+            console.log(error);
+          }
+        })
+      }
+    })
+  }
+})
\ No newline at end of file
diff --git a/pages/m_consult/consultdetail/consultdetail.json b/pages/m_consult/consultdetail/consultdetail.json
new file mode 100644
index 0000000..8e4d3a3
--- /dev/null
+++ b/pages/m_consult/consultdetail/consultdetail.json
@@ -0,0 +1,6 @@
+{
+  "navigationBarTitleText": "娉曞緥娉曡",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultdetail/consultdetail.wxml b/pages/m_consult/consultdetail/consultdetail.wxml
new file mode 100644
index 0000000..07308d1
--- /dev/null
+++ b/pages/m_consult/consultdetail/consultdetail.wxml
@@ -0,0 +1,37 @@
+<!--pages/m_consult/consultdetail/consultdetail.wxml-->
+<view class="page">
+  <view class="page__hd">
+    <view class="f-title">銆妠{content.mfName}}銆�</view>
+    <!-- <view class="f-tag">鍙戝竷鏃堕棿锛歿{content.mfReleaseDate}}</view> -->
+    <text class="f-summary" user-select="true" decode="true" space="emsp">銆愭憳瑕併�戯細{{content.mfSummary}}</text>
+  </view>
+  <view class="page__bd">
+    <view class="fyui-panel">
+      <!-- <view>绠�绉帮細{{content.mfShortName}}</view> -->
+      <view>鍙戝竷鍗曚綅锛歿{content.mfReleaseOrg}}</view>
+      <view>鏂囧彿锛歿{content.mfReferenceNumber}}</view>
+      <view>鏂囦欢绫诲埆锛歿{content.mfFileType}}</view>
+      <view>鏂囦欢绾у埆锛歿{content.mfMgtLevel}}</view>
+    </view>
+    <view class="fyui-panel">
+      <view>鐩稿叧琛屼笟锛歿{content.mfFileIndustry}}</view>
+      <view>鐜繚瑕佺礌锛歿{content.mfEpItemType}}銆亄{content.mfEpItemSubtype}}</view>
+      <!-- <view>鏂囦欢涓嬭浇</view> -->
+    </view>
+    <view class="fyui-panel">
+      <view>渚濇嵁锛歿{content.mfFileBasis}}</view>
+    </view>
+    <view class="fyui-panel">
+      <view>鍙戝竷鏃堕棿锛歿{content.mfReleaseDate}}</view>
+      <view>瀹炴柦鏃堕棿锛歿{content.mfEffectiveDate}}</view>
+      <view>淇鎯呭喌锛歿{content.mfFileRevise}}</view>
+    </view>
+    
+    <!-- <view class="fyui-panel">
+      <view>鍏抽敭璇嶏細{{content.mfKeywordLv1}}</view>
+    </view> -->
+  </view>
+  <view class="page__ft">
+    <view class="submit" bindtap="openFile">鏌ョ湅鏂囦欢</view>
+  </view>
+</view>
\ No newline at end of file
diff --git a/pages/m_consult/consultdetail/consultdetail.wxss b/pages/m_consult/consultdetail/consultdetail.wxss
new file mode 100644
index 0000000..98a2ed5
--- /dev/null
+++ b/pages/m_consult/consultdetail/consultdetail.wxss
@@ -0,0 +1,32 @@
+/* pages/m_consult/consultdetail/consultdetail.wxss */
+.page__bd {
+  /* padding-left: 10px;
+  padding-right: 10px; */
+}
+.f-title {
+  font-size: 22px;
+  font-weight: 600;
+  color: var(--fyui-text-color_1);
+}
+
+.f-tag {
+  font-size: 12px;
+  color: var(--fyui-text-color_2);
+  text-align: end;
+  margin-bottom: 16px;
+}
+
+.f-summary {
+  font-size: 14px;
+  color: var(--fyui-text-color_2);
+}
+
+.fyui-panel{
+  padding: 8px;
+  font-size: 14px;
+  color: var(--fyui-text-color_1);
+}
+
+.fyui-panel>view{
+  margin-bottom: 4px;
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultdetailcase/consultdetailcase.js b/pages/m_consult/consultdetailcase/consultdetailcase.js
new file mode 100644
index 0000000..13427e2
--- /dev/null
+++ b/pages/m_consult/consultdetailcase/consultdetailcase.js
@@ -0,0 +1,96 @@
+// pages/m_consult/consultdetailcase/consultdetailcase.js
+const consultservice = require("../../../service/consultservice")
+const util = require("../../../utils/util")
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    showloading: false,
+    case: {},
+    caseTag: [],
+
+    showDialog: false,
+    groups: [
+      'actionSlot1',
+    ]
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+    var that = this
+    this.getOpenerEventChannel().on('acceptDataFromOpenerPage', function (data) {
+      that.setData({
+        caseId: data.caseId
+      })
+      that.getCase()
+    })
+  },
+
+  getCase() {
+    this.setData({
+      showloading: true
+    })
+    var that = this
+    consultservice.getCase(app.globalData.accessToken.userId, this.data.caseId, {
+      success(res) {
+        let caseTag = []
+        if (res.ecIsPunish) caseTag.push({icon: '/res/icons/cq_punish.png', name: '娑夊強琛屾斂澶勭綒'})
+        if (res.ecIsIllegal) caseTag.push({icon: '/res/icons/cq_illegal.png', name: '娑夊強鍒戜簨璐d换'})
+        if (res.ecIsSupervise) caseTag.push({icon: '/res/icons/cq_supervise.png', name: '娑夊強鐜繚鐫e療瑕佺偣'})
+        if (res.ecIsShotspot) caseTag.push({icon: '/res/icons/cq_shotspot.png', name: '娑夊強鐜繚绠$悊鐑偣'})
+        if (res.ecIsMinor) caseTag.push({icon: '/res/icons/cq_minor.png', name: '娑夊強杞诲井杩濇硶'})
+        if (res.ecIsDetained) caseTag.push({icon: '/res/icons/cq_detained.png', name: '娑夊強琛屾斂鎷樼暀'})
+
+        res.ecSummary = res.ecSummary.replaceAll('\\n', '<br/>')
+        res.ecMeaning = res.ecMeaning.replaceAll('\\n', '<br/>')
+        res.ecExamined = res.ecExamined.replaceAll('\\n', '<br/>')
+        res.ecEnlightenment = res.ecEnlightenment.replaceAll('\\n', '<br/>')
+        res.ecOccurDate = util.formatTime(res.ecOccurDate)
+        that.setData({
+          case: res,
+          caseTag
+        })
+        console.log(res);
+      },
+      complete(res) {
+        that.setData({
+          showloading: false
+        })
+      }
+    })
+  },
+
+  openDialog: function () {
+    this.setData({
+      showDialog: true
+    })
+  },
+  closeDialog: function () {
+    this.setData({
+      showDialog: false
+    })
+  },
+  btnClick(e) {
+    console.log(e)
+    this.closeDialog()
+  },
+
+  previewImage(e) {
+    const i = e.currentTarget.dataset.index
+    // const img = this.data.case.ecAppendixUrl[i]
+    const remark = this.data.case.ecAppendixText[i]
+    const previewImageUrls = this.data.case.ecAppendixUrl;
+    this.setData({
+      previewImageUrls,
+      remark,
+      previewCurrent: 0,
+      showPreview: true
+    });
+  },
+})
\ No newline at end of file
diff --git a/pages/m_consult/consultdetailcase/consultdetailcase.json b/pages/m_consult/consultdetailcase/consultdetailcase.json
new file mode 100644
index 0000000..5ec34b0
--- /dev/null
+++ b/pages/m_consult/consultdetailcase/consultdetailcase.json
@@ -0,0 +1,11 @@
+{
+  "navigationBarTitleText": "妗堜緥璇︽儏",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {
+    "mp-loading": "/component/loading/loading",
+    "mp-actionSheet": "/component/actionsheet/actionsheet",
+    "mp-icon": "/component/icon/icon",
+    "my-gallery": "/component/mygallery/mygallery"
+  }
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultdetailcase/consultdetailcase.wxml b/pages/m_consult/consultdetailcase/consultdetailcase.wxml
new file mode 100644
index 0000000..956de91
--- /dev/null
+++ b/pages/m_consult/consultdetailcase/consultdetailcase.wxml
@@ -0,0 +1,78 @@
+<!--pages/m_consult/consultdetailcase/consultdetailcase.wxml-->
+<view class="page">
+  <view class="page__hd">
+    <view class="fyui-box  fyui-box__text">
+      <view class="fyui-box__hd">
+        <view>{{case.ecTitle}}</view>
+      </view>
+      <view class="fyui-box__bd">
+        <view class="q-tag" bindtap="openDialog">
+          <block wx:for="{{caseTag}}" wx:key="index">
+            <image src="{{item.icon}}"></image>
+          </block>
+        </view>
+      </view>
+      <view class="fyui-box__ft" style="flex-direction: column;">
+        <view class="flex-h" style="justify-content: flex-start;"><image class="image-16" src="/res/icons/locate.png"></image>妗堝彂鍦板潃锛歿{case.ecProvinceName + case.ecCityName}}</view>
+        <view class="flex-h" style="justify-content: flex-start;"><image class="image-16" src="/res/icons/time.png"></image>妗堝彂鏃堕棿锛歿{case.ecOccurDate}}</view>
+      </view>
+    </view>
+  </view>
+  <view class="page__bd">
+    <view class="fyui-panel flex-h">
+      <view class="flex-h" style="justify-content: flex-start;">
+        <image class="image-16" src="/res/icons/case_forfeit.png"></image>
+        缃氭鏁伴
+      </view>
+      <view style="color: red;">{{case.ecForfeit}}涓囧厓</view>
+    </view>
+    <view class="fyui-panel">
+      <view>妗堜緥绫诲埆锛歿{case.ecType}}</view>
+      <view>瑕佺礌绫诲埆锛歿{case.ecEpItemType}}</view>
+      <view>瑕佺礌瀛愮被锛歿{case.ecEpItemSubtype}}</view>
+    </view>
+    <view class="fyui-panel">
+      <view class="case-type">妗堟儏绠�浠�</view>
+      <view class="case-image-group" wx:for="{{case.ecAppendixUrl}}" wx:key="index">
+        <image src="{{item}}" mode="widthFix" bindtap="previewImage" data-index="{{index}}"></image>
+        <view>{{case.ecAppendixText[index]}}</view>
+      </view>
+      <rich-text nodes="{{case.ecSummary}}"></rich-text>
+    </view>
+    <view class="fyui-panel" style="background-color: #FFF8DE;">
+      <view class="case-type" style="background-color: #FFEBA6;">鏌ュ鎯呭喌</view>
+      <rich-text nodes="{{case.ecExamined}}"></rich-text>
+    </view>
+    <view class="fyui-panel" style="background-color: #E6F6FC;">
+      <view class="case-type" style="background-color: #AFEAFD;">妗堜緥鎰忎箟</view>
+      <rich-text nodes="{{case.ecMeaning}}"></rich-text>
+    </view>
+    <view class="fyui-panel" style="background-color: #E6FCF4;">
+      <view class="case-type" style="background-color: #AAFFE0;">妗堜欢鍚ず</view>
+      <rich-text nodes="{{case.ecEnlightenment}}"></rich-text>
+    </view>
+    <view class="fyui-panel q-link-group">
+      <view wx:if="{{case.ecIsAssociated}}" class="q-link">
+        <image src="/res/icons/link_1.png"></image>
+        鐩稿叧鏉$洰
+      </view>
+    </view>
+  </view>
+  <view class="page__ft">
+    <mp-loading duration="{{900}}" type="dot-gray" show="{{showloading}}" animated="{{true}}"></mp-loading>
+  </view>
+
+  <mp-actionSheet bindactiontap="btnClick" show="{{showDialog}}" actions="{{groups}}" showCancel="{{false}}">
+    <view slot="{{'actionSlot' + '1'}}" class="custom-action">
+      <image class="custom-action__bg" src="/res/icons/bg_star.png"></image>
+      <block wx:for="{{caseTag}}" wx:key="index">
+        <view class="custom-action__tag" style="{{questionTag.length == 1 ? 'flex: 1;' : ''}}">
+          <image src="{{item.icon}}"></image>
+          <view>{{item.name}}</view>
+        </view>
+      </block>
+    </view>
+  </mp-actionSheet>
+
+  <my-gallery hide-on-click="{{true}}" show-delete="{{false}}" show="{{showPreview}}" img-urls="{{previewImageUrls}}" current="{{previewCurrent}}" remark="{{remark}}"></my-gallery>
+</view>
\ No newline at end of file
diff --git a/pages/m_consult/consultdetailcase/consultdetailcase.wxss b/pages/m_consult/consultdetailcase/consultdetailcase.wxss
new file mode 100644
index 0000000..6bf8acb
--- /dev/null
+++ b/pages/m_consult/consultdetailcase/consultdetailcase.wxss
@@ -0,0 +1,105 @@
+/* pages/m_consult/consultdetailcase/consultdetailcase.wxss */
+.page__hd {
+  padding: 0;
+}
+
+.fyui-box .fyui-box__hd {
+  display: flex;
+}
+
+.q-tag {
+  display: flex;
+  justify-content: flex-end;
+}
+
+.q-tag>image {
+  width: 16px;
+  height: 16px;
+  /* background-color: red; */
+  padding: 4px;
+}
+
+.q-link-group {
+  display: flex;
+}
+
+.q-link{
+  display: flex;
+  align-items: center;
+  background-color: #CFFFF7;
+  color: #25D4B6;
+  padding: 6px 8px;
+  border-radius: 6px;
+}
+
+.q-link>image{
+  width: 16px;
+  height: 16px;
+}
+
+.fyui-box__bd {
+  margin-top: 8px;
+  font-size: 14px;
+}
+
+.custom-action {
+  position: relative;
+  min-height: 40vh;
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.custom-action__bg{
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+
+.custom-action__tag{
+  font-size: 14px;
+  color: var(--fyui-text-color_1);
+  font-weight: 600;
+  width: 50%;
+  text-align: center;
+  z-index: 2;
+}
+
+.custom-action__tag>image{
+  width: 64px;
+  height: 64px;
+}
+
+.fyui-panel {
+  margin: 10px 0 0 0 ;
+  padding: 10px 16px;
+  font-size: 14px;
+  border-radius: 0;
+}
+
+.case-type {
+  display: inline-block;
+  border-radius: 8px;
+  background-color: #F6F6F6;
+  padding: 4px 12px;
+  font-size: 14px;
+  margin-bottom: 4px;
+}
+
+.case-image-group {
+  /* display: flex;
+  flex-direction: column;
+  justify-content: flex-start; */
+}
+
+.case-image-group>image {
+  width: 100%;
+}
+
+.case-image-group>view {
+  font-size: 12px;
+  text-align: center;
+  color: var(--fyui-text-color_3);
+  margin-bottom: 8px;
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultdetailitem/consultdetailitem.js b/pages/m_consult/consultdetailitem/consultdetailitem.js
new file mode 100644
index 0000000..e0537c3
--- /dev/null
+++ b/pages/m_consult/consultdetailitem/consultdetailitem.js
@@ -0,0 +1,105 @@
+// pages/m_consult/consultdetailitem/consultdetailitem.js
+const consultservice = require("../../../service/consultservice")
+const app = getApp()
+const behavior = require('../behaviors/behConsultItem')
+
+Page({
+  behaviors: [behavior],
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    content:[],
+    more:[]
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+    var that = this
+    this.getOpenerEventChannel().on('acceptDataFromOpenerPage', function (data) {
+      that.setData({
+        itemId: data.itemId
+      })
+
+      that.getItem()
+    })
+    this.searchMore(1)
+  },
+
+  onReachBottom () {
+    console.log('onReachBottom');
+    if (this.cPage && this.tPage) {
+      if (this.cPage < this.tPage) {
+        this.searchMore(this.cPage + 1)
+      }
+    }
+  },
+  searchMore (cPage = 1) {
+    var that = this
+    wx.showLoading({
+      title: '鎼滅储涓�',
+      mask: true,
+      success: (res) => {},
+      fail: (res) => {},
+      complete: (res) => {},
+    })
+    setTimeout(() => {
+      wx.hideLoading()
+    }, 20000);
+    consultservice.searchLaw(app.globalData.accessToken.userId, '澶ф皵姹℃煋', cPage, 5, {
+      onPage(head){
+        that.cPage = head.page
+        that.tPage = head.totalPage
+      },
+      success (res) {
+        let result = that.data.result
+        res.forEach(r => {
+          r.des = r.des.replaceAll('\\n', '<br/>')
+          if (result.length === 0) {
+            result.push({
+              typeId: r.typeId,
+              typeName: r.typeName,
+              contents: [r]
+            })
+          } else {
+            result[0].contents.push(r)
+          }
+        });
+        that.setData({
+          result
+        })
+        console.log(result);
+      }, 
+      complete (res) {
+        wx.hideLoading()
+      }
+    }, 2)
+  },
+
+  getItem () {
+    var that = this
+    wx.showLoading({
+      title: '鍔犺浇涓�',
+      mask: true,
+      success: (res) => {},
+      fail: (res) => {},
+      complete: (res) => {},
+    })
+    setTimeout(() => {
+      wx.hideLoading()
+    }, 20000);
+    consultservice.getMgtItem(app.globalData.accessToken.userId, this.data.itemId, {
+      success (res) {
+        res.miItemContent = res.miItemContent.replaceAll('\\n', '<br/>')
+        that.setData({
+          content: res
+        })
+      },
+      complete (res) {
+        wx.hideLoading()
+      }
+    })
+  },
+})
\ No newline at end of file
diff --git a/pages/m_consult/consultdetailitem/consultdetailitem.json b/pages/m_consult/consultdetailitem/consultdetailitem.json
new file mode 100644
index 0000000..55ec7ef
--- /dev/null
+++ b/pages/m_consult/consultdetailitem/consultdetailitem.json
@@ -0,0 +1,6 @@
+{
+  "navigationBarTitleText": "娉曡缁嗗垯",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultdetailitem/consultdetailitem.wxml b/pages/m_consult/consultdetailitem/consultdetailitem.wxml
new file mode 100644
index 0000000..0942125
--- /dev/null
+++ b/pages/m_consult/consultdetailitem/consultdetailitem.wxml
@@ -0,0 +1,52 @@
+<!--pages/m_consult/consultdetailitem/consultdetailitem.wxml-->
+<view class="page">
+  <!-- <view class="page__hd">
+      <view class="f-tag">鍙戝竷鏃堕棿锛歿{content.mfReleaseDate}}</view>
+  </view> -->
+  <view class="page__bd">
+    <view class="fyui-panel">
+      <rich-text class="f-title" nodes="{{content.miItemContent}}"></rich-text>
+
+      <!-- <view>绠�绉帮細{{content.mfShortName}}</view> -->
+
+    </view>
+
+    <view class="fyui-panel">
+      <view>鍏抽敭璇嶏細{{content.miKeyword}}</view>
+    </view>
+
+    <view class="fyui-panel">
+      <view>鏉ユ簮锛氥�妠{content.mfName}}銆�</view>
+      <view>绔犺妭锛歿{content.miChapterName}}</view>
+      <view>鏉$洰锛歿{content.miItemName}}</view>
+    </view>
+  </view>
+  <view class="page__ft">
+    <block wx:for="{{result}}" wx:key="i1" wx:for-item="catagory" wx:for-index="i1">
+      <view class="page__hd">
+        <view>鐩稿叧鏉$洰 ></view>
+      </view>
+      <view class="page__bd">
+        <view class="fyui-panel">
+          <block wx:if="{{catagory.typeId === 2}}">
+            <view wx:for="{{catagory.contents}}" wx:key="i2" wx:for-index="i2" data-index="{{i1}},{{i2}}" bindtap="gotoDetail">
+              <view class="fyui-box  fyui-box__text">
+                <view class="fyui-box__hd">
+                  <rich-text nodes="{{item.des}}" class="fyui-box__content des subtitle"></rich-text>
+                </view>
+                <view class="fyui-box__bd">
+                  <!-- <view class="fyui-box__content tag">鐩稿叧琛屼笟 -> {{item.fileIndustry}}</view> -->
+                  <text class="tag2">鏉ユ簮锛氥�妠{item.fileName}}銆� {{item.chapterName}}{{item.name ? ' ' + item.name : ''}}</text>
+                </view>
+                <view class="fyui-box__ft">
+                  <text class="keyword">鍏抽敭璇嶏細</text>
+                  <view class="keyword-item"><text wx:for="{{item.keywords}}" wx:for-index="i" wx:for-item="word" wx:key="i">{{word}}</text></view>
+                </view>
+              </view>
+            </view>
+          </block>
+        </view>
+      </view>
+    </block>
+  </view>
+</view>
\ No newline at end of file
diff --git a/pages/m_consult/consultdetailitem/consultdetailitem.wxss b/pages/m_consult/consultdetailitem/consultdetailitem.wxss
new file mode 100644
index 0000000..e344a4b
--- /dev/null
+++ b/pages/m_consult/consultdetailitem/consultdetailitem.wxss
@@ -0,0 +1,89 @@
+/* pages/m_consult/consultdetailitem/consultdetailitem.wxss */
+/* .page__hd {
+  padding: 0;
+} */
+.page__ft{
+  text-align: start;
+}
+
+.f-title {
+  font-size: 17px;
+  font-weight: 600;
+  color: var(--fyui-text-color_1);
+}
+
+.f-tag {
+  font-size: 12px;
+  color: var(--fyui-text-color_2);
+  text-align: end;
+  margin-bottom: 16px;
+}
+
+.f-summary {
+  font-size: 14px;
+  color: var(--fyui-text-color_2);
+}
+
+.fyui-panel{
+  padding: 8px;
+  font-size: 14px;
+  color: var(--fyui-text-color_1);
+}
+
+.fyui-panel>view{
+  margin-bottom: 4px;
+}
+
+
+
+.keyword {
+  white-space: nowrap;
+}
+.keyword-item {
+  display: flex;
+  justify-content: flex-start;
+  flex-wrap: wrap;
+}
+
+.keyword-item>text {
+  white-space: nowrap;
+  margin-right: 8px;
+  padding: 0px 6px;
+  color: #2c7064;
+}
+
+.des {
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 4;
+  width: 100%;
+  overflow: hidden;
+  /* text-overflow: ellipsis; */
+}
+
+.tag {
+  margin-bottom: 8px;
+}
+
+.subtitle{
+  font-size: 15px;
+}
+
+.tag2{
+  font-size: 12px;
+  color: var(--fyui-text-color_3);
+}
+
+.btn-more{
+  text-align: center;
+  background-color: white;
+  margin: 0 10px;
+  border-top: 1px solid var(--fyui-BG_1);
+  color: var(--fyui-text-color_2);
+  padding: 8px;
+  font-size: 12px;
+}
+
+.btn-more:active{
+  background-color: var(--fyui-BG-COLOR-ACTIVE);
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultdetailqa/consultdetailqa.js b/pages/m_consult/consultdetailqa/consultdetailqa.js
new file mode 100644
index 0000000..ebd1704
--- /dev/null
+++ b/pages/m_consult/consultdetailqa/consultdetailqa.js
@@ -0,0 +1,108 @@
+// pages/m_consult/consultdetailqa/consultdetailqa.js
+const consultservice = require("../../../service/consultservice")
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    showloading: false,
+    question: {},
+    //闂娑夊強鐨勯」鐩�
+    questionTag: [{
+      icon: '',
+      name: ''
+    }],
+    answers: [],
+
+    showDialog: false,
+    groups: [
+      'actionSlot1',
+      // { text: '绀轰緥鑿滃崟', value: 1 },
+      // { text: '绀轰緥鑿滃崟', value: 2 },
+      // { text: '璐熷悜鑿滃崟', type: 'warn', value: 3 }
+    ]
+},
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+    var that = this
+    this.getOpenerEventChannel().on('acceptDataFromOpenerPage', function (data) {
+      that.setData({
+        qId: data.qId
+      })
+
+      that.getQuestion()
+      that.getAnswers()
+    })
+  },
+
+  getQuestion() {
+    this.setData({
+      showloading: true
+    })
+    var that = this
+    consultservice.getQuestion(app.globalData.accessToken.userId, this.data.qId, {
+      success(res) {
+        let questionTag = []
+        if (res.cqIsPunish) questionTag.push({icon: '/res/icons/cq_punish.png', name: '娑夊強琛屾斂澶勭綒'})
+        if (res.cqIsIllegal) questionTag.push({icon: '/res/icons/cq_illegal.png', name: '娑夊強鍒戜簨璐d换'})
+        if (res.cqIsSupervise) questionTag.push({icon: '/res/icons/cq_supervise.png', name: '娑夊強鐜繚鐫e療瑕佺偣'})
+        if (res.cqIsShotspot) questionTag.push({icon: '/res/icons/cq_shotspot.png', name: '娑夊強鐜繚绠$悊鐑偣'})
+        that.setData({
+          question: res,
+          questionTag
+        })
+        console.log(res);
+      },
+      complete(res) {
+        that.setData({
+          showloading: false
+        })
+      }
+    })
+  },
+
+  getAnswers() {
+    this.setData({
+      showloading: true
+    })
+    var that = this
+    consultservice.getAnswers(app.globalData.accessToken.userId, this.data.qId, {
+      success(res) {
+        res.forEach(r => {
+          r.saContent = r.saContent.replaceAll('\\n', '<br/>')
+        });
+        that.setData({
+          answers: res
+        })
+        console.log(res);
+      },
+      complete(res) {
+        that.setData({
+          showloading: false
+        })
+      }
+    })
+  },
+
+
+  openDialog: function () {
+    this.setData({
+      showDialog: true
+    })
+  },
+  closeDialog: function () {
+    this.setData({
+      showDialog: false
+    })
+  },
+  btnClick(e) {
+    console.log(e)
+    this.closeDialog()
+  }
+})
\ No newline at end of file
diff --git a/pages/m_consult/consultdetailqa/consultdetailqa.json b/pages/m_consult/consultdetailqa/consultdetailqa.json
new file mode 100644
index 0000000..b3fcf90
--- /dev/null
+++ b/pages/m_consult/consultdetailqa/consultdetailqa.json
@@ -0,0 +1,10 @@
+{
+  "navigationBarTitleText": "鐜繚闂瓟",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {
+    "mp-loading": "/component/loading/loading",
+    "mp-actionSheet": "/component/actionsheet/actionsheet",
+    "mp-icon": "/component/icon/icon"
+  }
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultdetailqa/consultdetailqa.wxml b/pages/m_consult/consultdetailqa/consultdetailqa.wxml
new file mode 100644
index 0000000..e5ad574
--- /dev/null
+++ b/pages/m_consult/consultdetailqa/consultdetailqa.wxml
@@ -0,0 +1,72 @@
+<!--pages/m_consult/consultdetailqa/consultdetailqa.wxml-->
+<view class="page">
+  <view class="page__hd">
+    <view class="fyui-box  fyui-box__text">
+      <view class="fyui-box__hd">
+        <view>{{question.cqContent}}</view>
+      </view>
+      <view class="fyui-box__bd">
+        <view class="q-tag" bindtap="openDialog">
+          <block wx:for="{{questionTag}}" wx:key="index">
+            <image src="{{item.icon}}"></image>
+          </block>
+          <!-- <image wx:if="{{question.cqIsPunish}}" src="/res/icons/cq_punish.png"></image>
+          <image wx:if="{{question.cqIsIllegal}}" src="/res/icons/cq_illegal.png"></image>
+          <image wx:if="{{question.cqIsSupervise}}" src="/res/icons/cq_supervise.png"></image>
+          <image wx:if="{{question.cqIsShotspot}}" src="/res/icons/cq_shotspot.png"></image> -->
+        </view>
+      </view>
+      <view class="fyui-box__ft" style="flex-direction: column;">
+        <view>鍏眥{answers.length}}鏉″洖绛�</view>
+        <view class="q-link-group">
+          <view wx:if="{{question.cqIsAssociated}}" class="q-link">
+            <image src="/res/icons/link_1.png"></image>
+            鐩稿叧鏉$洰
+          </view>
+        </view>
+      </view>
+    </view>
+  </view>
+  <view class="page__bd">
+    <block wx:for="{{answers}}" wx:for-index="index" wx:key="index">
+      <view class="fyui-box  fyui-box__text">
+        <view class="fyui-box__hd">
+          <image class="user-avator" src="/res/icons/con_qa.png"></image>
+          <view>
+            <view class="user-name">鐜繚鏅鸿兘鍔╂墜</view>
+            <view class="user-tag">鐜繚鏅鸿兘鍔╂墜</view>
+          </view>
+        </view>
+        <view class="fyui-box__bd">
+          <!-- <view class="fyui-box__content tag">鐩稿叧琛屼笟 -> {{item.fileIndustry}}</view> -->
+          <rich-text nodes="{{item.saContent}}" class=""></rich-text>
+        </view>
+        <view class="a-tag-group">
+          <view class="a-tag">
+            <image class="image-16" src="/res/icons/favourite.png"></image>156
+          </view>
+          <view class="a-tag">
+            <image class="image-16" src="/res/icons/like.png"></image>156
+          </view>
+        </view>
+      </view>
+      <view wx:if="{{index < answers.length - 1}}" class="next-answer"></view>
+      <view wx:else class="next-answer">鈥斺�斿埌搴曚簡鈥斺��</view>
+    </block>
+  </view>
+  <view class="page__ft">
+    <mp-loading duration="{{900}}" type="dot-gray" show="{{showloading}}" animated="{{true}}"></mp-loading>
+  </view>
+
+  <mp-actionSheet bindactiontap="btnClick" show="{{showDialog}}" actions="{{groups}}" showCancel="{{false}}">
+    <view slot="{{'actionSlot' + '1'}}" class="custom-action">
+      <image class="custom-action__bg" src="/res/icons/bg_star.png"></image>
+      <block wx:for="{{questionTag}}" wx:key="index">
+        <view class="custom-action__tag" style="{{questionTag.length == 1 ? 'flex: 1;' : ''}}">
+          <image src="{{item.icon}}"></image>
+          <view>{{item.name}}</view>
+        </view>
+      </block>
+    </view>
+  </mp-actionSheet>
+</view>
\ No newline at end of file
diff --git a/pages/m_consult/consultdetailqa/consultdetailqa.wxss b/pages/m_consult/consultdetailqa/consultdetailqa.wxss
new file mode 100644
index 0000000..14d7a82
--- /dev/null
+++ b/pages/m_consult/consultdetailqa/consultdetailqa.wxss
@@ -0,0 +1,114 @@
+/* pages/m_consult/consultdetailqa/consultdetailqa.wxss */
+.page__hd {
+  padding: 0;
+}
+
+.fyui-box .fyui-box__hd {
+  display: flex;
+}
+
+.q-tag {
+  display: flex;
+  justify-content: flex-end;
+}
+
+.q-tag>image {
+  width: 16px;
+  height: 16px;
+  /* background-color: red; */
+  padding: 4px;
+}
+
+.q-link-group {
+  display: flex;
+  justify-content: flex-end;
+}
+
+.q-link{
+  display: flex;
+  align-items: center;
+  background-color: #CFFFF7;
+  color: #25D4B6;
+  padding: 6px 8px;
+  border-radius: 6px;
+}
+
+.q-link>image{
+  width: 16px;
+  height: 16px;
+}
+
+.fyui-box .fyui-box__hd .user-avator{
+  width: 36px;
+  height: 36px;
+  border-radius: 50%;
+}
+
+.fyui-box .fyui-box__hd .user-name{
+  margin-left: 8px;
+  font-size: 14px;
+  font-weight: 500;
+  color: var(--fyui-text-color_1);
+}
+
+.user-tag {
+  margin-left: 8px;
+  font-size: 10px;
+  font-weight: 100;
+  color: var(--fyui-text-color_2);
+}
+
+.fyui-box__bd {
+  margin-top: 8px;
+  font-size: 14px;
+}
+
+.next-answer {
+  text-align: center;
+  font-size: 12px;
+  color: var(--fyui-text-color_3);
+  padding: 8px;
+}
+
+.a-tag-group {
+  display: flex;
+  justify-content: flex-end;
+  color: var(--fyui-text-color_3);
+  font-size: 12px;
+}
+
+.a-tag {
+  display: flex;
+  align-items: center;
+  line-height: 20px;
+  margin-left: 8px;
+}
+
+.custom-action {
+  position: relative;
+  min-height: 40vh;
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.custom-action__bg{
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+
+.custom-action__tag{
+  font-size: 14px;
+  color: var(--fyui-text-color_1);
+  font-weight: 600;
+  width: 50%;
+  text-align: center;
+  z-index: 2;
+}
+
+.custom-action__tag>image{
+  width: 64px;
+  height: 64px;
+}
\ No newline at end of file
diff --git a/pages/m_consult/consulthome/consulthome.js b/pages/m_consult/consulthome/consulthome.js
new file mode 100644
index 0000000..471e6c8
--- /dev/null
+++ b/pages/m_consult/consulthome/consulthome.js
@@ -0,0 +1,237 @@
+// pages/m_consult/consulthome/consulthome.js
+const consultservice = require("../../../service/consultservice")
+const moment = require('../../../utils/moment.min')
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    searchTips: '璇疯緭鍏ュ叧閿瓧鎼滅储',
+    hotTopics: [],
+
+    tabList: [{
+      name: '鐑棬',
+      tag: 0
+    }, {
+      name: '鏂囦欢',
+      tag: 0
+    }, {
+      name: '鏉$洰',
+      tag: 0
+    }, {
+      name: '闂瓟',
+      tag: 0
+    }, {
+      name: '妗堜緥',
+      tag: 0
+    }],
+
+    pageList: [
+      [],
+      [],
+      [],
+      [],
+      [],
+    ],
+
+    //妗堜緥鎵�娑夊強鐨勮鐐�
+    caseTag: []
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad: function (options) {
+    this.getHotTopic()
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady: function () {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず
+   */
+  onShow: function () {
+
+  },
+
+  // 鎼滅储
+  gotoSearch() {
+    wx.navigateTo({
+      url: "/pages/m_consult/consultsearch/consultsearch"
+    })
+  },
+
+  // 鍔熻兘鎸夐挳
+  goto(e) {
+    var url = ""
+    var index = e.currentTarget.dataset.index
+    switch (index) {
+      case "0":
+        url = "/pages/m_consult/consultproblem/consultproblem"
+        break;
+      case "1":
+        url = "/pages/m_consult/consultsearch/consultsearch"
+        break;
+      case "2":
+        url = "/pages/m_consult/consultonline/consultonline"
+        break;
+    }
+    if (url != "") {
+      wx.navigateTo({
+        url: url
+      })
+    } else {
+      wx.showToast({
+        title: '鍔熻兘鏁鏈熷緟',
+        duration: 1000,
+        icon: 'none',
+        mask: true,
+      })
+    }
+  },
+
+  /**
+   * 鑾峰彇鐑棬鎼滅储鍐呭
+   */
+  getHotTopic() {
+    var that = this
+    // 1. 鐑棬娉曞緥娉曡
+    consultservice.getTopicLaw(app.globalData.accessToken.userId, {
+      success(res) {
+        res.forEach(r => {
+          r.mfKeywordLv1 = r.mfKeywordLv1.split('銆�').slice(0, 5)
+          r.mfReleaseDate = that.formatTime(r.mfReleaseDate)
+          r.mfEffectiveDate = that.formatTime(r.mfEffectiveDate)
+          r.mfClosingDate = that.formatTime(r.mfClosingDate)
+        });
+        that.setData({
+          'pageList[0]': res,
+          'pageList[1]': res
+        })
+      }
+    })
+    // 2. 鐑棬娉曞緥娉曡鏉$洰
+    consultservice.getTopicItem(app.globalData.accessToken.userId, {
+      success(res) {
+        res.forEach(r => {
+          r.miItemContent = r.miItemContent.replaceAll('\\n', '<br/>')
+        });
+        that.setData({
+          'pageList[2]': res
+        })
+      }
+    })
+    // 3. 鐑棬闂瓟
+    consultservice.getTopicQA(app.globalData.accessToken.userId, {
+      success(res) {
+        res.forEach(r => {
+          r.cqCreateTime = that.formatTime(r.cqCreateTime)
+        });
+        that.setData({
+          'pageList[3]': res
+        })
+      }
+    })
+    // 4. 鐑棬妗堜緥
+    consultservice.getTopicCase(app.globalData.accessToken.userId, {
+      success(res) {
+        res.forEach(r => {
+          r.ecSummary = r.ecSummary.replaceAll('\\n', '<br/>')
+          r.ecMeaning = r.ecMeaning.replaceAll('\\n', '<br/>')
+          r.ecExamined = r.ecExamined.replaceAll('\\n', '<br/>')
+          r.ecEnlightenment = r.ecEnlightenment.replaceAll('\\n', '<br/>')
+          r.ecOccurDate = that.formatTime(r.ecOccurDate)
+        });
+        that.setData({
+          'pageList[4]': res
+        })
+        console.log(that.data.pageList);
+      }
+    })
+  },
+
+
+  // 鍘诲線鏂囦欢璇︽儏
+  gotoFile(e) {
+    const iList = e.currentTarget.dataset.index.split(',')
+    const i1 = iList[0]
+    const i2 = iList[1]
+    var fileId = this.data.pageList[i1][i2].mfGuid
+    wx.navigateTo({
+      url: '/pages/m_consult/consultdetail/consultdetail',
+      success: (res) => {
+        // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+        res.eventChannel.emit('acceptDataFromOpenerPage', {
+          fileId: fileId
+        })
+      },
+    })
+  },
+
+  // 鍘诲線鏉$洰璇︽儏
+  gotoItem(e) {
+    const iList = e.currentTarget.dataset.index.split(',')
+    const i1 = iList[0]
+    const i2 = iList[1]
+    var itemId = this.data.pageList[i1][i2].miGuid
+    wx.navigateTo({
+      url: '/pages/m_consult/consultdetailitem/consultdetailitem',
+      success: (res) => {
+        // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+        res.eventChannel.emit('acceptDataFromOpenerPage', {
+          itemId: itemId
+        })
+      },
+    })
+  },
+
+  // 鍘诲線闂瓟璇︽儏
+  gotoQA(e) {
+    const iList = e.currentTarget.dataset.index.split(',')
+    const i1 = iList[0]
+    const i2 = iList[1]
+    var qId = this.data.pageList[i1][i2].cqGuid
+    wx.navigateTo({
+      url: '/pages/m_consult/consultdetailqa/consultdetailqa',
+      success: (res) => {
+        // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+        res.eventChannel.emit('acceptDataFromOpenerPage', {
+          qId: qId
+        })
+      },
+    })
+  },
+
+  // 鍘诲線妗堜緥璇︽儏
+  gotoCase(e) {
+    const iList = e.currentTarget.dataset.index.split(',')
+    const i1 = iList[0]
+    const i2 = iList[1]
+    var caseId = this.data.pageList[i1][i2].ecGuid
+    wx.navigateTo({
+      url: '/pages/m_consult/consultdetailcase/consultdetailcase',
+      success: (res) => {
+        // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+        res.eventChannel.emit('acceptDataFromOpenerPage', {
+          caseId: caseId
+        })
+      },
+    })
+  },
+
+  formatTime(t) {
+    if (t) {
+      return moment(t).format("YYYY.MM.DD")
+    } else {
+      return undefined
+    }
+  },
+})
\ No newline at end of file
diff --git a/pages/m_consult/consulthome/consulthome.json b/pages/m_consult/consulthome/consulthome.json
new file mode 100644
index 0000000..b732a06
--- /dev/null
+++ b/pages/m_consult/consulthome/consulthome.json
@@ -0,0 +1,10 @@
+{
+  "navigationBarTitleText": "鏅鸿兘鍜ㄨ",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {
+    "mp-icon": "/component/icon/icon",
+    "switch-tab": "/component/switchtab/switchtab",
+    "mp-loading": "/component/loading/loading"
+  }
+}
\ No newline at end of file
diff --git a/pages/m_consult/consulthome/consulthome.wxml b/pages/m_consult/consulthome/consulthome.wxml
new file mode 100644
index 0000000..b53ee34
--- /dev/null
+++ b/pages/m_consult/consulthome/consulthome.wxml
@@ -0,0 +1,173 @@
+<!--pages/m_consult/consulthome/consulthome.wxml-->
+<view class="page">
+  <view class="page__hd">
+    <view class="search-bar" bindtap="gotoSearch">
+      <mp-icon icon="search" size="15" color="black"></mp-icon>
+      <text>{{searchTips}}</text>
+    </view>
+  </view>
+  <view class="page__bd">
+    <view class="flex-h">
+      <view class="card" bindtap="goto" data-index="0">
+        <image src="/res/icons/con_pro_bg.png" class="card-bg" mode="scaleToFill" />
+        <view class="card-title">鐜繚闂</view>
+        <view class="card-abstract">甯歌浼佷笟闂</view>
+        <image src="/res/icons/con_pro.png" mode="aspectFit" class="icon"></image>
+      </view>
+      <view class="divider"></view>
+      <view class="card middle" bindtap="goto" data-index="1">
+        <image src="/res/icons/con_lib_bg.png" class="card-bg" mode="scaleToFill" />
+        <view class="card-title">鐜繚鐭ヨ瘑搴�</view>
+        <view class="card-abstract">鐢熸�佺幆澧冩硶寰嬫硶瑙�</view>
+        <image src="/res/icons/con_lib.png" mode="aspectFit" class="icon"></image>
+      </view>
+      <view class="divider"></view>
+      <view class="card" bindtap="goto" data-index="2">
+        <image src="/res/icons/con_qa_bg.png" class="card-bg" mode="scaleToFill" />
+        <view class="card-title">鏅鸿兘鍜ㄨ</view>
+        <view class="card-abstract">鐜繚鏅鸿兘鍔╂墜</view>
+        <image src="/res/icons/con_qa.png" mode="aspectFit" class="icon"></image>
+      </view>
+    </view>
+
+
+    <switch-tab tabList="{{tabList}}" pageList="{{pageList}}">
+      <view slot="slot{{i1}}" wx:for="{{pageList}}" wx:for-item="page" wx:key="i1" wx:for-index="i1">
+        <block wx:if="{{page.length > 0}}">
+
+          <block wx:if="{{i1 == 0 || i1 == 1}}">
+            <view wx:for="{{page}}" wx:key="i2" wx:for-index="i2" data-index="{{i1}},{{i2}}" bindtap="gotoFile">
+              <view class="fyui-box  fyui-box__text">
+                <view class="fyui-box__hd">
+                  {{item.mfName}}
+                </view>
+                <view class="fyui-box__bd">
+                  <view class="fyui-box__content tag">
+                    <view>鏂囦欢绫诲埆锛歿{item.mfFileType}}</view>
+                    <view>鐢熸晥鏃堕棿锛歿{item.mfEffectiveDate}}</view>
+                    <view>鏂囧彿锛歿{item.mfReferenceNumber}}</view>
+                    <view>鐩稿叧琛屼笟 -> {{item.mfFileIndustry}}</view>
+                  </view>
+                  <view class="fyui-box__content des">{{item.mfSummary}}</view>
+                </view>
+                <view class="fyui-box__ft">
+                  <text class="keyword">鍏抽敭璇嶏細</text>
+                  <view class="keyword-item">
+                    <text wx:for="{{item.mfKeywordLv1}}" wx:for-index="i" wx:for-item="word" wx:key="i">{{word}}</text>
+                  </view>
+                </view>
+              </view>
+            </view>
+          </block>
+
+          <block wx:elif="{{i1 == 2}}">
+            <view wx:for="{{page}}" wx:key="i2" wx:for-index="i2" data-index="{{i1}},{{i2}}" bindtap="gotoItem">
+              <view class="fyui-box  fyui-box__text">
+                <view class="fyui-box__hd">
+                  <rich-text nodes="{{item.miItemContent}}" class="fyui-box__content des subtitle"></rich-text>
+                </view>
+                <view class="fyui-box__bd">
+                  <!-- <view class="fyui-box__content tag">鐩稿叧琛屼笟 -> {{item.fileIndustry}}</view> -->
+                  <text class="tag2">鎵�灞炵珷鑺傦細{{item.miChapterName}} {{item.miItemName ? ' ' + item.miItemName : ''}}</text>
+                  <text class="tag2">鎵�灞炴枃浠讹細銆妠{item.mfName}}銆�</text>
+                  <text class="tag2" wx:if="{{item.miReferenceNumber}}">鎵�灞炴枃鍙凤細{{item.miReferenceNumber}}</text>
+                </view>
+                <view class="fyui-box__ft">
+                  <!-- <text class="tag3 {{item.effective? '' : 'tag3_disable'}}">{{item.effective ? '鐢熸晥涓�':'宸插け鏁�' }}</text>
+                  <text class="tag3 {{item.relatedItems? '' : 'tag3_disable'}}">{{item.relatedItems ? '鍏宠仈鏉$洰' + item.relatedItems + '涓� >':'鏃犲叧鑱旀潯鐩�' }}</text>
+                  <text class="tag3 {{item.relatedCases? '' : 'tag3_disable'}}">{{item.relatedCases ? '鍏宠仈妗堜緥' + item.relatedCases + '涓� >':'鏃犲叧鑱旀渚�' }}</text> -->
+                  <!-- <text class="keyword">鍏抽敭璇嶏細</text>
+                <view class="keyword-item"><text wx:for="{{item.keywords}}" wx:for-index="i" wx:for-item="word" wx:key="i">{{word}}</text></view> -->
+                </view>
+              </view>
+            </view>
+          </block>
+
+          <block wx:elif="{{i1 == 3}}">
+            <view wx:for="{{page}}" wx:key="i2" wx:for-index="i2" data-index="{{i1}},{{i2}}" bindtap="gotoQA">
+              <view class="fyui-box  fyui-box__text">
+                <view class="fyui-box__hd">
+                  <text class="fyui-box__content des subtitle">{{item.cqContent}}</text>
+                </view>
+                <view class="fyui-box__bd answer">
+                  <!-- <view class="fyui-box__content tag">鐩稿叧琛屼笟 -> {{item.fileIndustry}}</view> -->
+                  <view class="tag2">绛旓細</view>
+                  <rich-text class="tag2 des" nodes="{{item.answer}}"></rich-text>
+                </view>
+                <view class="fyui-box__ft">
+                  <text class="tag3">鎻愰棶鏃堕棿锛歿{item.cqCreateTime}}</text>
+                  <text class="tag3">鍥炲鏃堕棿锛歿{item.cqCreateTime}}</text>
+                  <!-- <text class="keyword">鍏抽敭璇嶏細</text>
+                <view class="keyword-item"><text wx:for="{{item.keywords}}" wx:for-index="i" wx:for-item="word" wx:key="i">{{word}}</text></view> -->
+                </view>
+              </view>
+            </view>
+          </block>
+
+          <block wx:elif="{{i1 == 4}}">
+            <view wx:for="{{page}}" wx:key="i2" wx:for-index="i2" data-index="{{i1}},{{i2}}" bindtap="gotoCase">
+              <view class="fyui-box fyui-box__text">
+                <view class="fyui-box__hd">
+                  <text class="fyui-box__content des subtitle">{{item.ecTitle}}</text>
+                </view>
+                <view class="fyui-box__bd">
+                  <view class="case-bd">
+                    <rich-text class="tag2 des" nodes="{{item.ecSummary}}"></rich-text>
+                    <image wx:if="{{item.ecAppendixUrl.length > 0}}" src="{{item.ecAppendixUrl[0]}}" mode="aspectFill"></image>
+                  </view>
+                </view>
+                <view class="fyui-box__ft">
+                  <text class="tag3">妗堝彂鍦板潃锛歿{item.ecProvinceName + item.ecCityName}}</text>
+                  <text class="tag3">妗堝彂鏃堕棿锛歿{item.ecOccurDate}}</text>
+                </view>
+                <view class="fyui-box__ft_2">
+                  <view style="white-space: nowrap;">娑夊強锛�</view>
+                  <view class="case-tag-group">
+                    <view class="case-tag" wx:if="{{item.ecIsPunish}}">
+                      <image src="/res/icons/cq_punish.png"></image>
+                      <text>琛屾斂澶勭綒</text>
+                    </view>
+                    <view class="case-tag" wx:if="{{item.ecIsDetained}}">
+                      <image src="/res/icons/cq_detained.png"></image>
+                      <text>琛屾斂鎷樼暀</text>
+                    </view>
+                    <view class="case-tag" wx:if="{{item.ecIsIllegal}}">
+                      <image src="/res/icons/cq_illegal.png"></image>
+                      <text>鍒戜簨璐d换</text>
+                    </view>
+                    <view class="case-tag" wx:if="{{item.ecIsShotspot}}">
+                      <image src="/res/icons/cq_shotspot.png"></image>
+                      <text>鐜繚鐑偣</text>
+                    </view>
+                    <view class="case-tag" wx:if="{{item.ecIsSupervise}}">
+                      <image src="/res/icons/cq_supervise.png"></image>
+                      <text>鐫e療瑕佺偣</text>
+                    </view>
+                    <view class="case-tag" wx:if="{{item.ecIsMinor}}">
+                      <image src="/res/icons/cq_minor.png"></image>
+                      <text>杞诲井杩濇硶</text>
+                    </view>
+                  </view>
+                </view>
+              </view>
+            </view>
+          </block>
+        </block>
+
+        <view wx:else class="page__ft">
+          <mp-loading duration="{{900}}" type="dot-gray" show="{{true}}" animated="{{true}}"></mp-loading>
+        </view>
+      </view>
+    </switch-tab>
+
+
+    <!-- <view class="fyui-cell fyui-cell_select">
+      <view class="fyui-cell__bd">鐑棬</view>
+      <view class="fyui-cell__ft">鏇村</view>
+    </view> -->
+
+  </view>
+  <view class="page__ft">
+
+  </view>
+</view>
\ No newline at end of file
diff --git a/pages/m_consult/consulthome/consulthome.wxss b/pages/m_consult/consulthome/consulthome.wxss
new file mode 100644
index 0000000..10bae57
--- /dev/null
+++ b/pages/m_consult/consulthome/consulthome.wxss
@@ -0,0 +1,148 @@
+/* pages/m_consult/consulthome/consulthome.wxss */
+.page__bd {
+  padding: 10px;
+}
+
+.search-bar {
+  min-width: 50vw;
+  padding: 6px 8px;
+  font-size: 12px;
+  line-height: 24px;
+  color: var(--fyui-text-color_2);
+  text-align: left;
+  background-color: white;
+  border-radius: 10px;
+}
+
+.card {
+  position: relative;
+  /* background-color: cyan; */
+  border-radius: 10px;
+  padding: 6px;
+  text-align: center;
+  flex: 1;
+}
+
+.card:active {
+  background-color: var(--fyui-BG-COLOR-ACTIVE);
+}
+
+.card .card-bg {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: -1;
+}
+
+.divider {
+  width: 8px;
+}
+.card .card-title {
+  font-size: 18px;
+  font-weight: bold;
+}
+
+.card .card-abstract {
+  font-size: 11px;
+  color: var(--fyui-text-color_2);
+}
+
+.card .icon {
+  height: 56px;
+  width: 60px;
+}
+
+
+/* --fyui-box */
+.fyui-box__tag {
+  justify-content: space-evenly;
+}
+
+.keyword {
+  white-space: nowrap;
+}
+.keyword-item {
+  display: flex;
+  justify-content: flex-start;
+  flex-wrap: wrap;
+}
+
+.keyword-item>text {
+  white-space: nowrap;
+  margin-right: 8px;
+  padding: 0px 6px;
+  color: #2c7064;
+}
+
+.des {
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 3;
+  width: 100%;
+  overflow: hidden;
+  /* text-overflow: ellipsis; */
+}
+
+.fyui-box__text .fyui-box__bd .tag {
+  margin-bottom: 8px;
+  font-size: 14px;
+}
+
+.fyui-box .answer {
+  display: flex;
+  flex-direction: row;
+  /* justify-content: space-between; */
+  /* background-color: red; */
+}
+
+.subtitle{
+  font-size: 15px;
+}
+
+.tag2{
+  line-height: 18px;
+  font-size: 12px;
+  color: var(--fyui-text-color_3);
+}
+
+.fyui-box__text .fyui-box__ft {
+  font-size: 12px;
+}
+
+.case-bd{
+  display: flex;
+}
+
+.case-bd>image{
+  width: 60%;
+  height: 54px;
+  border-radius: 4px;
+  margin-left: 4px;
+}
+
+.fyui-box__ft_2 {
+  display: flex;
+  font-size: 12px;
+  color: var(--fyui-text-color_3);
+  margin-top: 16px;
+}
+
+.case-tag-group {
+  display: flex;
+  flex-wrap: wrap;
+}
+
+.case-tag {
+  display: flex;
+  align-items: center;
+}
+.case-tag>image {
+  width: 14px;
+  height: 14px;
+}
+
+.case-tag>text {
+  white-space: nowrap;
+  margin-left: 4px;
+  margin-right: 4px;
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultonline/consultonline.js b/pages/m_consult/consultonline/consultonline.js
new file mode 100644
index 0000000..9d994c1
--- /dev/null
+++ b/pages/m_consult/consultonline/consultonline.js
@@ -0,0 +1,111 @@
+// pages/m_consult/consultonline/consultonline.js
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    userId: app.globalData.accessToken.userId,
+    record: [{
+        id: 'system',
+        time: '',
+        userId: 'system',
+        userName: '鏅鸿兘瀹㈡湇',
+        text: '鐢ㄦ埛鎮ㄥソ锛屽緢楂樺叴涓轰綘鏈嶅姟',
+      },
+      {
+        id: 'system',
+        time: '',
+        userId: 'system',
+        userName: '鏅鸿兘瀹㈡湇',
+        text: '鐢ㄦ埛鎮ㄥソ锛屽緢楂樺叴涓烘偍鏈嶅姟锛屾湰鏈堜俊鐢ㄨ嚜璇勭粨鏋滆緝 濂斤紝缁х画淇濇寔鍝�.鐢ㄦ埛鎮ㄥソ锛屽緢楂樺叴涓烘偍鏈嶅姟锛屾湰鏈堜俊鐢ㄨ嚜璇勭粨鏋滆緝 濂斤紝缁х画淇濇寔鍝�.鐢ㄦ埛鎮ㄥソ锛屽緢楂樺叴涓烘偍鏈嶅姟锛屾湰鏈堜俊鐢ㄨ嚜璇勭粨鏋滆緝 濂斤紝缁х画淇濇寔鍝�.鐢ㄦ埛鎮ㄥソ锛屽緢楂樺叴涓烘偍鏈嶅姟锛屾湰鏈堜俊鐢ㄨ嚜璇勭粨鏋滆緝 濂斤紝缁х画淇濇寔鍝�.鐢ㄦ埛鎮ㄥソ锛屽緢楂樺叴涓烘偍鏈嶅姟锛屾湰鏈堜俊鐢ㄨ嚜璇勭粨鏋滆緝 濂斤紝缁х画淇濇寔鍝�.',
+      },
+
+    ],
+
+    focus: false,
+    value: '',
+    placeholder: '璇疯緭鍏ュ叧閿瓧'
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず
+   */
+  onShow() {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌
+   */
+  onHide() {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇
+   */
+  onUnload() {
+
+  },
+
+  clearInput() {
+    this.setData({
+      value: '',
+      focus: true,
+    });
+  },
+
+  inputChange(e) {
+    this.setData({
+      value: e.detail.value
+    });
+  },
+
+  send() {
+    let record = this.data.record
+    record.push({
+      id: '',
+      time: '',
+      userId: app.globalData.accessToken.userId,
+      userName: app.globalData.userInfo.acountname,
+      text: this.data.value,
+    })
+    this.getAnswer(this.data.value)
+    this.setData({
+      record,
+      value: ''
+    })
+  },
+
+  getAnswer(q) {
+    let record = this.data.record
+
+    setTimeout(() => {
+      record.push({
+        id: 'system',
+        time: '',
+        userId: 'system',
+        userName: '鏅鸿兘瀹㈡湇',
+        text: '鐢ㄦ埛鎮ㄥソ锛屽緢楂樺叴涓轰綘鏈嶅姟',
+      })
+      this.setData({record})
+    }, 1000);
+  }
+})
\ No newline at end of file
diff --git a/pages/m_consult/consultonline/consultonline.json b/pages/m_consult/consultonline/consultonline.json
new file mode 100644
index 0000000..6f0e366
--- /dev/null
+++ b/pages/m_consult/consultonline/consultonline.json
@@ -0,0 +1,8 @@
+{
+  "navigationBarTitleText": "鏅鸿兘鍜ㄨ",
+  "navigationBarBackgroundColor": "#EFF9F4",
+  "navigationBarTextStyle": "black",
+  "usingComponents": {
+    "mp-icon": "/component/icon/icon"
+  }
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultonline/consultonline.wxml b/pages/m_consult/consultonline/consultonline.wxml
new file mode 100644
index 0000000..4e0273e
--- /dev/null
+++ b/pages/m_consult/consultonline/consultonline.wxml
@@ -0,0 +1,22 @@
+<!--pages/m_consult/consultonline/consultonline.wxml-->
+<view class="consult-record">
+  <block wx:for="{{record}}">
+    <view wx:if="{{userId == item.userId}}" wx:key="index" class="consult-record_item_user">
+      <view class="consult-text_user">{{item.text}}</view>
+    </view>
+    <view wx:else class="consult-record_item">
+      <image src="/res/icons/avator_sys.png" class="consult-avator"></image>
+      <view class="consult-text">{{item.text}}</view>
+    </view>
+  </block>
+</view>
+<view class="consult-input">
+  <view class="consult-input_box">
+    <view class="search-bar">
+      <!-- <mp-icon icon="search" size="15" color="black"></mp-icon> -->
+      <input type="text" class="search-bar__input" placeholder="{{placeholder}}" value="{{value}}" focus="{{focus}}" bindinput="inputChange" />
+      <text class="weui-icon-clear" hover-class="weui-active" wx:if="{{value.length > 0}}" bindtap="clearInput"></text>
+    </view>
+    <view wx:if="{{value.length > 0}}" class="btn" bindtap="send">鍙戦��</view>
+  </view>
+</view>
\ No newline at end of file
diff --git a/pages/m_consult/consultonline/consultonline.wxss b/pages/m_consult/consultonline/consultonline.wxss
new file mode 100644
index 0000000..fe858d7
--- /dev/null
+++ b/pages/m_consult/consultonline/consultonline.wxss
@@ -0,0 +1,118 @@
+/* pages/m_consult/consultonline/consultonline.wxss */
+.consult-record {
+  padding: 8px;
+  background-color: #EFF9F4;
+  height: 100vh;
+}
+
+.consult-record_item {
+  display: flex;
+  align-items: flex-start;
+  justify-content: flex-start;
+  margin-bottom: 16px;
+}
+
+.consult-record_item_user {
+  display: flex;
+  align-items: flex-start;
+  justify-content: flex-end;
+  margin-bottom: 16px;
+}
+
+.consult-avator {
+  width: 40px;
+  height: 40px;
+}
+
+.consult-text {
+  max-width: 80%;
+  margin-left: 4px;
+  padding: 10px;
+  background-color: white;
+  border: 0px solid #CCCCCC;
+  border-radius: 16px;
+  border-top-left-radius: 0;
+  box-shadow: 1px 1px #CCCCCC;
+  font-size: 12px;
+}
+
+.consult-text_user {
+  max-width: 80%;
+  margin-left: 4px;
+  padding: 10px;
+  /* background-color: #49c4ad; */
+  background: linear-gradient(to top right, #58bba9, #52e6ca);
+  border: 0px solid #CCCCCC;
+  border-radius: 16px;
+  border-top-right-radius: 0;
+  box-shadow: 1px 1px #CCCCCC;
+  font-size: 12px;
+  color: white;
+}
+
+
+.consult-input {
+  position: fixed;
+  bottom: 0;
+  /* padding-bottom: calc(10px + constant(safe-area-inset-bottom)); */
+  padding-bottom: calc(10px + env(safe-area-inset-bottom));
+  left: 0;
+  width: 100%;
+}
+
+.consult-input_box {
+  display: flex;
+  align-items: center;
+  padding: 0 8px;
+}
+
+.search-bar {
+  flex: 1;
+  position: relative;
+  min-width: 50vw;
+  padding: 6px 8px;
+  font-size: 12px;
+  line-height: 24px;
+  color: var(--fyui-text-color_2);
+  text-align: left;
+  background-color: white;
+  border-radius: 10px;
+  display: flex;
+  align-items: center;
+}
+
+.search-bar .weui-icon-clear {
+  /* position: absolute;
+  top: 50%;
+  right: 0;
+  margin-top: -16px; */
+  padding-left: 8px;
+  width: 16px;
+  height: 16px;
+  -webkit-mask-size: 16px;
+  mask-size: 16px;
+  /* display: block; */
+}
+
+.search-bar .search-bar__input {
+  width: 100%;
+  border: 0;
+  font-size: 14px;
+  line-height: 20px;
+  box-sizing: content-box;
+  background: transparent;
+  caret-color: var(--weui-BRAND);
+  color: var(--weui-FG-0);
+}
+
+.btn {
+  border-radius: 20px;
+  line-height: 20px;
+  font-size: 12px;
+  min-width: 40px;
+  background: linear-gradient(to top right, #58bba9, #52e6ca);
+  padding: 4px 2px;
+  text-align: center;
+  color: white;
+  margin-left: 4px;
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultproblem/consultproblem.js b/pages/m_consult/consultproblem/consultproblem.js
new file mode 100644
index 0000000..301f980
--- /dev/null
+++ b/pages/m_consult/consultproblem/consultproblem.js
@@ -0,0 +1,228 @@
+// pages/m_consult/consultproblem/consultproblem.js
+const consultservice = require("../../../service/consultservice")
+const util = require("../../../utils/util")
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    loading: false,
+    menus: [
+      { name: '澶ф皵', value: 1 },
+      { name: '姘�', value: 2 },
+      { name: '娴锋磱', value: 3 },
+      { name: '鍦熷¥', value: 4 },
+      { name: '鍣0', value: 5 },
+      { name: '鍏�', value: 6 },
+      { name: '杈愬皠', value: 7 },
+      { name: '鏍�', value: 8 },
+      { name: '鍥轰綋搴熺墿', value: 9 },
+      { name: '鍖栧鍝�', value: 10 },
+      { name: '鍙拌处', value: 21 },
+      { name: '鎵ф硶', value: 31 },
+      { name: '鐫e療', value: 41 },
+      { name: '鐩戞祴', value: 51 },
+      { name: '鏈嶅姟', value: 61 },
+      { name: '鍏朵粬', value: 99 }
+    ],
+    items: [
+      [
+        { name: 'PM', value: 1  },
+        { name: 'NOX', value: 2  },
+        { name: 'O3', value: 3  },
+        { name: 'VOCs', value: 4  },
+        { name: '宸ヤ笟搴熸皵', value: 5  },
+        { name: '鏈哄姩杞﹀熬姘�', value: 6  },
+        { name: '鎵皹', value: 7  },
+        { name: '椁愰ギ娌圭儫', value: 8  },
+        { name: '鎭惰嚟', value: 9  },
+        { name: '鍏朵粬', value: 99 },
+      ],
+      [
+        { name: '鍦拌〃姘�', value: 1  },
+        { name: '鍦颁笅姘�', value: 2  },
+        { name: '楗敤姘�', value: 3  },
+        { name: '宸ヤ笟搴熸按', value: 4  },
+        { name: '鐢熸椿姹℃按', value: 5  },
+        { name: '鍟嗕笟姹℃按', value: 6  },
+        { name: '鍏朵粬', value: 99  },
+      ],
+      [
+        { name: '鐭虫补鍙婂叾浜у搧', value: 1  },
+        { name: '閲嶉噾灞炲拰閰哥⒈', value: 2  },
+        { name: '鍐滆嵂', value: 3  },
+        { name: '鏈夋満鐗╄川鍜岃惀鍏荤洂绫�', value: 4  },
+        { name: '鏀惧皠鎬ф牳绱�', value: 5  },
+        { name: '鍥轰綋搴熺墿', value: 6  },
+        { name: '搴熺儹', value: 7  },
+        { name: '鍏朵粬', value: 99  },
+      ],
+      [
+        { name: '鍐滅敯鑰曞湴', value: 1  },
+        { name: '宸ヤ笟浼佷笟鐢ㄥ湴', value: 2  },
+        { name: '鐭虫补寮�閲囩敤鍦�', value: 3  },
+        { name: '鐭垮北寮�閲囩敤鍦�', value: 4  },
+        { name: '鍏朵粬', value: 99  },
+      ],
+      [
+        { name: '宸ヤ笟鐢熶骇鍣0', value: 1  },
+        { name: '浜ら�氳繍杈撳櫔澹�', value: 2  },
+        { name: '寤虹瓚鏂藉伐鍣0', value: 3  },
+        { name: '绀句細鐢熸椿鍣0', value: 4  },
+        { name: '鍏朵粬', value: 99  },
+      ],
+      [
+        { name: '鐧戒寒姹℃煋', value: 1  },
+        { name: '浜哄伐鐧芥樇姹℃煋', value: 2  },
+        { name: '褰╁厜姹℃煋', value: 3  },
+        { name: '鍏朵粬', value: 99  },
+      ],
+      [
+        { name: '鐢电杈愬皠', value: 1  },
+        { name: '鏀惧皠鎬ц緪灏�', value: 2  },
+        { name: '鍏朵粬', value: 99  },
+      ],
+      [],
+      [],
+      [],
+      [],
+      [],
+      [],
+      [],
+      [],
+    ],
+    selected: [{
+      name: '鍏ㄩ儴',
+      value: null
+    },{
+      name: '鍏ㄩ儴',
+      value: null
+    }],
+
+    questions: []
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+    this.getQuestionsByType(1)
+    this.getEnElementTypes()
+    this.getEnElementSubTypes()
+  },
+
+  getQuestionsByType(page = 1) {
+    this.setData({loading: true})
+    setTimeout(() => {
+      this.setData({loading: false})
+    }, 100000);
+    var that = this
+    consultservice.getQuestionsByType(
+      app.globalData.accessToken.userId,
+      this.data.selected[0].value, this.data.selected[1].value,
+      page, 10, {
+        onPage(head) {
+          that.cPage = head.page
+          that.tPage = head.totalPage
+          that.setData({
+            totalCount: head.totalCount
+          })
+        },
+        success(res) {
+          res.forEach(r => {
+            r.cqCreateTime = util.formatTime(r.cqCreateTime)
+            r.answer = r.answer.replaceAll('\\n', '<br/>')
+          });
+          let questions = that.data.questions
+          if (page == 1) {
+            questions = []
+          }
+          questions = questions.concat(res)
+          that.setData({questions})
+        },
+        complete(e) {
+          that.setData({loading: false})
+        }
+      })
+  },
+
+  getEnElementTypes() {
+    var that = this
+    consultservice.getEnElementTypes(app.globalData.accessToken.userId, {
+      success(res) {
+        const menus = [{
+          name: '鍏ㄩ儴',
+          value: null,
+        }]
+        res.forEach(r => {
+          menus.push({
+            name: r.first,
+            value: r.second,
+          })
+        });
+        that.setData({menus})
+      }
+    })
+  },
+
+  getEnElementSubTypes() {
+    var that = this
+    consultservice.getEnElementSubTypes(app.globalData.accessToken.userId, {
+      success(res) {
+        const items = [
+          [{
+            name: '鍏ㄩ儴',
+            value: null,
+          }]
+        ]
+        res.forEach(r => {
+          const l = []
+          r.forEach(s => {
+            l.push({
+              name: s.first,
+              value: s.second,  
+            })
+          });
+          items.push(l)
+        });
+        that.setData({items})
+      }
+    })
+  },
+
+  openChooseType() {
+    this.setData({
+      showMenu: true
+    })
+  },
+
+  chooseMenu(e) {
+    console.log('chooseMenu');
+    console.log(e);
+    const i = e.detail
+    const menu = this.data.menus[i[0]]
+    const item = this.data.items[i[0]][i[1]]
+    this.setData({
+      selected: [menu, item]
+    })
+    this.getQuestionsByType()
+  },
+
+  // 鍘诲線闂瓟璇︽儏
+  gotoQA(e) {
+    const index = e.currentTarget.dataset.index
+    var qId = this.data.questions[index].cqGuid
+    wx.navigateTo({
+      url: '/pages/m_consult/consultdetailqa/consultdetailqa',
+      success: (res) => {
+        // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+        res.eventChannel.emit('acceptDataFromOpenerPage', {
+          qId: qId
+        })
+      },
+    })
+  },
+})
\ No newline at end of file
diff --git a/pages/m_consult/consultproblem/consultproblem.json b/pages/m_consult/consultproblem/consultproblem.json
new file mode 100644
index 0000000..280d969
--- /dev/null
+++ b/pages/m_consult/consultproblem/consultproblem.json
@@ -0,0 +1,9 @@
+{
+  "navigationBarTitleText": "甯歌闂",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {
+    "mp-loading": "/component/loading/loading",
+    "mp-sidebar": "/component/sidebar/sidebar"
+  }
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultproblem/consultproblem.wxml b/pages/m_consult/consultproblem/consultproblem.wxml
new file mode 100644
index 0000000..2213c06
--- /dev/null
+++ b/pages/m_consult/consultproblem/consultproblem.wxml
@@ -0,0 +1,38 @@
+<!--pages/m_consult/consultproblem/consultproblem.wxml-->
+<import src="/template/nodata.wxml"></import>
+
+<view class="page">
+  <view class="page__hd">
+    <text style="color: #57E4CB;">{{selected[0].name}} > {{selected[1].name}}</text>
+    <view class="filter" bindtap="openChooseType">
+      <image src="/res/icons/filter.png" class="image-16"></image>
+      绛涢��
+    </view>
+  </view>
+  <view class="page__bd">
+    <block wx:if="{{!loading}}">
+      <block wx:if="{{questions.length > 0}}">
+        <block wx:for="{{questions}}" wx:key="index">
+          <view class="fyui-box  fyui-box__text" bindtap="gotoQA" data-index="{{index}}">
+            <view class="fyui-box__hd">
+              <text class="fyui-box__content des subtitle">{{item.cqContent}}</text>
+            </view>
+            <view class="fyui-box__bd answer">
+              <view>绛旓細</view>
+              <rich-text class="des" nodes="{{item.answer}}"></rich-text>
+            </view>
+            <view class="fyui-box__ft">
+              <text class="tag3">鎻愰棶鏃堕棿锛歿{item.cqCreateTime}}</text>
+              <text class="tag3">鍥炲鏃堕棿锛歿{item.cqCreateTime}}</text>
+            </view>
+          </view>
+          <view wx:if="{{index == questions.length - 1}}" class="next-answer">鈥斺�斿埌搴曚簡鈥斺��</view>
+        </block>
+      </block>
+      <template wx:else is="nodataPage"></template>
+    </block>
+    <mp-loading duration="{{900}}" type="dot-gray" show="{{loading}}" animated="{{true}}"></mp-loading>
+  </view>
+  
+  <mp-sidebar show="{{showMenu}}" menus="{{menus}}" items="{{items}}" bindsubmit="chooseMenu"></mp-sidebar>
+</view>
\ No newline at end of file
diff --git a/pages/m_consult/consultproblem/consultproblem.wxss b/pages/m_consult/consultproblem/consultproblem.wxss
new file mode 100644
index 0000000..1b2afc2
--- /dev/null
+++ b/pages/m_consult/consultproblem/consultproblem.wxss
@@ -0,0 +1,76 @@
+/* pages/m_consult/consultproblem/consultproblem.wxss */
+.page__hd {
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: space-between;
+  background-color: white;
+  padding: 16px;
+}
+
+.switch-tab {
+  border-radius: 8px;
+  color: var(--fyui-text-color_1);
+  width: 20vw;
+  background-color: white;
+  padding: 1vw;
+  margin-bottom: 8px;
+  text-align: center;
+  font-weight: 500;
+  font-size: 14px;
+}
+.switch-tab_selected {
+  background: linear-gradient(to bottom right, #65EAD2, #2BDEDC);
+  color: white;
+}
+
+.fyui-box__content {
+  padding: 0 8px;
+}
+
+.fyui-box__tag {
+  display: flex;
+  /* background-color: red; */
+  width: 100%;
+  justify-content: flex-end;
+}
+
+.fyui-box__tag .flex-h{
+  margin-right: 16px;
+}
+
+.fyui-box .answer {
+  display: flex;
+  flex-direction: row;
+  line-height: 18px;
+  font-size: 12px;
+  color: var(--fyui-text-color_3);
+}
+
+.des {
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 3;
+  width: 100%;
+  overflow: hidden;
+  /* text-overflow: ellipsis; */
+}
+
+.subtitle{
+  font-size: 15px;
+}
+
+.next-answer {
+  text-align: center;
+  font-size: 12px;
+  color: var(--fyui-text-color_3);
+  padding: 8px;
+}
+
+.filter {
+  display: flex;
+  align-items: center;
+}
+
+.filter:active {
+  background-color: var(--fyui-BG-COLOR-ACTIVE);
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultresult/consultresult.js b/pages/m_consult/consultresult/consultresult.js
new file mode 100644
index 0000000..7365b04
--- /dev/null
+++ b/pages/m_consult/consultresult/consultresult.js
@@ -0,0 +1,123 @@
+// pages/m_consult/consultresult/consultresult.js
+const consultservice = require("../../../service/consultservice")
+const app = getApp()
+const behavior = require('../behaviors/behConsultItem')
+
+Page({
+  behaviors: [behavior],
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    keyword: '',
+    result: []
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad: function (options) {
+    var that = this
+    this.getOpenerEventChannel().on('acceptDataFromOpenerPage', function (data) {
+      console.log(data);
+      that.setData({
+        keyword: data.keyword
+      })
+
+      that.search()
+    })
+  },
+
+  search () {
+    var that = this
+    wx.showLoading({
+      title: '鎼滅储涓�',
+      mask: true,
+      success: (res) => {},
+      fail: (res) => {},
+      complete: (res) => {},
+    })
+    setTimeout(() => {
+      wx.hideLoading()
+    }, 20000);
+    consultservice.searchLaw(app.globalData.accessToken.userId, this.data.keyword, 1, 5, {
+      success (res) {
+        let result = []
+        let thisTypeId = ''
+        let thisIndex = -1
+        res.forEach(r => {
+          r.des = r.des.replaceAll('\\n', '<br/>')
+          if (thisTypeId === '' || thisTypeId != r.typeId) {
+            thisTypeId = r.typeId
+            thisIndex++
+            result.push({
+              typeId: r.typeId,
+              typeName: r.typeName,
+              contents: [r]
+            })
+          } else {
+            result[thisIndex].contents.push(r)
+          }
+        });
+        that.setData({
+          result
+        })
+        console.log(result);
+      },
+      complete (res) {
+        wx.hideLoading()
+      }
+    })
+  },
+
+  // gotoDetail (e) {
+  //   const iList = e.currentTarget.dataset.index.split(',')
+  //   const i1 = iList[0]
+  //   const i2 = iList[1]
+  //   const r = this.data.result[i1]
+  //   switch (r.typeId) {
+  //     //娉曞緥娉曡鏂囦欢
+  //     case 1:
+  //       const fileId = r.contents[i2].id
+  //       wx.navigateTo({
+  //         url: '/pages/m_consult/consultdetail/consultdetail',
+  //         success: (res) => {
+  //           // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+  //           res.eventChannel.emit('acceptDataFromOpenerPage', {
+  //             fileId: fileId
+  //           })
+  //         },
+  //       })
+  //       break;
+  //     //娉曞緥娉曡鏉$洰
+  //     case 2:
+
+  //       break;
+  //     //鎵ф硶妗堜緥
+  //     case 3:
+
+  //       break;
+  //     //鐜繚闂
+  //     case 4:
+
+  //       break;
+  //     default:
+  //       break;
+  //   }
+  // },
+
+  gotoMore(e){
+    const typeId = e.currentTarget.dataset.typeid
+    const keyword = this.data.keyword
+    wx.navigateTo({
+      url: '/pages/m_consult/consultresultmore/consultresultmore',
+      success: (res) => {
+        // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+        res.eventChannel.emit('acceptDataFromOpenerPage', {
+          typeId: typeId,
+          keyword: keyword
+        })
+      },
+    })
+  }
+})
\ No newline at end of file
diff --git a/pages/m_consult/consultresult/consultresult.json b/pages/m_consult/consultresult/consultresult.json
new file mode 100644
index 0000000..3970db1
--- /dev/null
+++ b/pages/m_consult/consultresult/consultresult.json
@@ -0,0 +1,8 @@
+{
+  "navigationBarTitleText": "鎼滅储缁撴灉",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {
+    "mp-icon": "/component/icon/icon"
+  }
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultresult/consultresult.wxml b/pages/m_consult/consultresult/consultresult.wxml
new file mode 100644
index 0000000..9baabd2
--- /dev/null
+++ b/pages/m_consult/consultresult/consultresult.wxml
@@ -0,0 +1,59 @@
+<!--pages/m_consult/consultresult/consultresult.wxml-->
+<import src="/template/nodata.wxml"></import>
+
+<view class="page">
+  <block wx:if="{{result.length > 0}}">
+    <block wx:for="{{result}}" wx:key="i1" wx:for-item="catagory" wx:for-index="i1">
+      <view class="page__hd">
+        <view><text style="color: #57E4CB;">{{keyword}}</text>鐨剓{catagory.typeName}} ></view>
+      </view>
+      <view class="page__bd">
+        <view class="fyui-panel">
+          <block wx:if="{{catagory.typeId === 1}}">
+            <view wx:for="{{catagory.contents}}" wx:key="i2" wx:for-index="i2" data-index="{{i1}},{{i2}}" bindtap="gotoDetail">
+              <view class="fyui-box  fyui-box__text">
+                <view class="fyui-box__hd">
+                  {{item.name}}
+                </view>
+                <view class="fyui-box__bd">
+                  <view class="fyui-box__content tag">鐩稿叧琛屼笟 -> {{item.fileIndustry}}</view>
+                  <view class="fyui-box__content des">{{item.des}}</view>
+                </view>
+                <view class="fyui-box__ft">
+                  <text class="keyword">鍏抽敭璇嶏細</text>
+                  <view class="keyword-item"><text wx:for="{{item.keywords}}" wx:for-index="i" wx:for-item="word" wx:key="i">{{word}}</text></view>
+                </view>
+              </view>
+            </view>
+
+          </block>
+          <block wx:else="{{catagory.typeId === 2}}">
+            <view wx:for="{{catagory.contents}}" wx:key="i2" wx:for-index="i2" data-index="{{i1}},{{i2}}" bindtap="gotoDetail">
+              <view class="fyui-box  fyui-box__text">
+                <view class="fyui-box__hd">
+                  <rich-text nodes="{{item.des}}" class="fyui-box__content des subtitle"></rich-text>
+                </view>
+                <view class="fyui-box__bd">
+                  <!-- <view class="fyui-box__content tag">鐩稿叧琛屼笟 -> {{item.fileIndustry}}</view> -->
+                  <text class="tag2">鎵�灞炵珷鑺傦細{{item.chapterName}} {{item.name ? ' ' + item.name : ''}}</text>
+                  <text class="tag2">鎵�灞炴枃浠讹細銆妠{item.fileName}}銆�</text>
+                  <text class="tag2" wx:if="{{item.referenceNumber}}">鎵�灞炴枃鍙凤細{{item.referenceNumber}}</text>
+                </view>
+                <view class="fyui-box__ft">
+                  <text class="tag3 {{item.effective? '' : 'tag3_disable'}}">{{item.effective ? '鐢熸晥涓�':'宸插け鏁�' }}</text>
+                  <text class="tag3 {{item.relatedItems? '' : 'tag3_disable'}}">{{item.relatedItems ? '鍏宠仈鏉$洰' + item.relatedItems + '涓� >':'鏃犲叧鑱旀潯鐩�' }}</text>
+                  <text class="tag3 {{item.relatedCases? '' : 'tag3_disable'}}">{{item.relatedCases ? '鍏宠仈妗堜緥' + item.relatedCases + '涓� >':'鏃犲叧鑱旀渚�' }}</text>
+                  <!-- <text class="keyword">鍏抽敭璇嶏細</text>
+                <view class="keyword-item"><text wx:for="{{item.keywords}}" wx:for-index="i" wx:for-item="word" wx:key="i">{{word}}</text></view> -->
+                </view>
+              </view>
+            </view>
+          </block>
+        </view>
+        <view class="btn-more" data-typeid="{{catagory.typeId}}" bindtap="gotoMore">鏌ョ湅鏇村</view>
+      </view>
+    </block>
+  </block>
+  <template wx:else is="nodataPage"></template>
+  <view class="page__ft"></view>
+</view>
\ No newline at end of file
diff --git a/pages/m_consult/consultresult/consultresult.wxss b/pages/m_consult/consultresult/consultresult.wxss
new file mode 100644
index 0000000..4953c3d
--- /dev/null
+++ b/pages/m_consult/consultresult/consultresult.wxss
@@ -0,0 +1,70 @@
+/* pages/m_consult/consultresult/consultresult.wxss */
+.keyword {
+  white-space: nowrap;
+}
+.keyword-item {
+  display: flex;
+  justify-content: flex-start;
+  flex-wrap: wrap;
+}
+
+.keyword-item>text {
+  white-space: nowrap;
+  margin-right: 8px;
+  padding: 0px 6px;
+  color: #2c7064;
+}
+
+.des {
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 4;
+  width: 100%;
+  overflow: hidden;
+  /* text-overflow: ellipsis; */
+}
+
+.tag {
+  margin-bottom: 8px;
+}
+
+.subtitle{
+  font-size: 15px;
+}
+
+.tag2{
+  font-size: 12px;
+  color: var(--fyui-text-color_3);
+}
+
+.btn-more{
+  text-align: center;
+  background-color: white;
+  margin: 0 10px;
+  border-top: 1px solid var(--fyui-BG_1);
+  color: var(--fyui-text-color_2);
+  padding: 8px;
+  font-size: 12px;
+}
+
+.btn-more:active{
+  background-color: var(--fyui-BG-COLOR-ACTIVE);
+}
+
+.tag3{
+  font-size: 10px;
+  background-color: var(--fyui-primary-color);
+  color: white;
+  border-radius: 2px;
+  padding: 2px 4px;
+  white-space: nowrap;
+  margin-right: 10px;
+}
+
+.tag3_disable{
+  background-color: var(--fyui-text-color_3);
+}
+
+.fyui-box__text .fyui-box__ft{
+  justify-content: flex-start;
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultresultmore/consultresultmore.js b/pages/m_consult/consultresultmore/consultresultmore.js
new file mode 100644
index 0000000..f6fa2a1
--- /dev/null
+++ b/pages/m_consult/consultresultmore/consultresultmore.js
@@ -0,0 +1,82 @@
+// pages/m_consult/consultresultmore/consultresultmore.js
+const consultservice = require("../../../service/consultservice")
+const app = getApp()
+const behavior = require('../behaviors/behConsultItem')
+
+Page({
+  behaviors: [behavior],
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    // result: []
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+    var that = this
+    this.getOpenerEventChannel().on('acceptDataFromOpenerPage', function (data) {
+      console.log('getOpenerEventChannel:');
+      console.log(data);
+      that.setData({
+        keyword: data.keyword,
+        typeId: data.typeId,
+      })
+
+      that.search(1)
+    })
+  },
+
+  onReachBottom () {
+    console.log('onReachBottom');
+    if (this.cPage && this.tPage) {
+      if (this.cPage < this.tPage) {
+        this.search(this.cPage + 1)
+      }
+    }
+  },
+
+  search (cPage = 1) {
+    var that = this
+    wx.showLoading({
+      title: '鎼滅储涓�',
+      mask: true,
+      success: (res) => {},
+      fail: (res) => {},
+      complete: (res) => {},
+    })
+    setTimeout(() => {
+      wx.hideLoading()
+    }, 20000);
+    consultservice.searchLaw(app.globalData.accessToken.userId, this.data.keyword, cPage, 5, {
+      onPage(head){
+        that.cPage = head.page
+        that.tPage = head.totalPage
+      },
+      success (res) {
+        let result = that.data.result
+        res.forEach(r => {
+          r.des = r.des.replaceAll('\\n', '<br/>')
+          if (result.length === 0) {
+            result.push({
+              typeId: r.typeId,
+              typeName: r.typeName,
+              contents: [r]
+            })
+          } else {
+            result[0].contents.push(r)
+          }
+        });
+        that.setData({
+          result
+        })
+        console.log(result);
+      },
+      complete (res) {
+        wx.hideLoading()
+      }
+    }, this.data.typeId)
+  },
+})
\ No newline at end of file
diff --git a/pages/m_consult/consultresultmore/consultresultmore.json b/pages/m_consult/consultresultmore/consultresultmore.json
new file mode 100644
index 0000000..a4ab906
--- /dev/null
+++ b/pages/m_consult/consultresultmore/consultresultmore.json
@@ -0,0 +1,6 @@
+{
+  "navigationBarTitleText": "鏇村缁撴灉",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultresultmore/consultresultmore.wxml b/pages/m_consult/consultresultmore/consultresultmore.wxml
new file mode 100644
index 0000000..d01b4b7
--- /dev/null
+++ b/pages/m_consult/consultresultmore/consultresultmore.wxml
@@ -0,0 +1,48 @@
+<!--pages/m_consult/consultresultmore/consultresultmore.wxml-->
+<view class="page">
+  <block wx:for="{{result}}" wx:key="i1" wx:for-item="catagory" wx:for-index="i1">
+    <view class="page__hd">
+      <view><text style="color: #57E4CB;">{{keyword}}</text>鐨剓{catagory.typeName}} ></view>
+    </view>
+    <view class="page__bd">
+      <view class="fyui-panel">
+        <block wx:if="{{catagory.typeId === 1}}">
+          <view wx:for="{{catagory.contents}}" wx:key="i2" wx:for-index="i2" data-index="{{i1}},{{i2}}" bindtap="gotoDetail">
+            <view class="fyui-box  fyui-box__text">
+              <view class="fyui-box__hd">
+                {{item.name}}
+              </view>
+              <view class="fyui-box__bd">
+                <view class="fyui-box__content tag">鐩稿叧琛屼笟 -> {{item.fileIndustry}}</view>
+                <view class="fyui-box__content des">{{item.des}}</view>
+              </view>
+              <view class="fyui-box__ft">
+                <text class="keyword">鍏抽敭璇嶏細</text>
+                <view class="keyword-item"><text wx:for="{{item.keywords}}" wx:for-index="i" wx:for-item="word" wx:key="i">{{word}}</text></view>
+              </view>
+            </view>
+          </view>
+
+        </block>
+        <block wx:else="{{catagory.typeId === 2}}">
+          <view wx:for="{{catagory.contents}}" wx:key="i2" wx:for-index="i2" data-index="{{i1}},{{i2}}" bindtap="gotoDetail">
+            <view class="fyui-box  fyui-box__text">
+              <view class="fyui-box__hd">
+                <rich-text nodes="{{item.des}}" class="fyui-box__content des subtitle"></rich-text>
+              </view>
+              <view class="fyui-box__bd">
+                <!-- <view class="fyui-box__content tag">鐩稿叧琛屼笟 -> {{item.fileIndustry}}</view> -->
+                <text class="tag2">鏉ユ簮锛氥�妠{item.fileName}}銆� {{item.chapterName}}{{item.name ? ' ' + item.name : ''}}</text>
+              </view>
+              <view class="fyui-box__ft">
+                <text class="keyword">鍏抽敭璇嶏細</text>
+                <view class="keyword-item"><text wx:for="{{item.keywords}}" wx:for-index="i" wx:for-item="word" wx:key="i">{{word}}</text></view>
+              </view>
+            </view>
+          </view>
+        </block>
+      </view>
+    </view>
+  </block>
+  <view class="page__ft"></view>
+</view>
diff --git a/pages/m_consult/consultresultmore/consultresultmore.wxss b/pages/m_consult/consultresultmore/consultresultmore.wxss
new file mode 100644
index 0000000..360fb80
--- /dev/null
+++ b/pages/m_consult/consultresultmore/consultresultmore.wxss
@@ -0,0 +1,52 @@
+/* pages/m_consult/consultresult/consultresult.wxss */
+.keyword {
+  white-space: nowrap;
+}
+.keyword-item {
+  display: flex;
+  justify-content: flex-start;
+  flex-wrap: wrap;
+}
+
+.keyword-item>text {
+  white-space: nowrap;
+  margin-right: 8px;
+  padding: 0px 6px;
+  color: #2c7064;
+}
+
+.des {
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 4;
+  width: 100%;
+  overflow: hidden;
+  /* text-overflow: ellipsis; */
+}
+
+.tag {
+  margin-bottom: 8px;
+}
+
+.subtitle{
+  font-size: 15px;
+}
+
+.tag2{
+  font-size: 12px;
+  color: var(--fyui-text-color_3);
+}
+
+.btn-more{
+  text-align: center;
+  background-color: white;
+  margin: 0 10px;
+  border-top: 1px solid var(--fyui-BG_1);
+  color: var(--fyui-text-color_2);
+  padding: 8px;
+  font-size: 12px;
+}
+
+.btn-more:active{
+  background-color: var(--fyui-BG-COLOR-ACTIVE);
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultsearch/consultsearch.js b/pages/m_consult/consultsearch/consultsearch.js
new file mode 100644
index 0000000..459d685
--- /dev/null
+++ b/pages/m_consult/consultsearch/consultsearch.js
@@ -0,0 +1,140 @@
+// pages/m_consult/consultsearch/consultsearch.js
+const consultservice = require("../../../service/consultservice")
+const app = getApp()
+
+Page({
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    focus: false,
+    placeholder: '鎼滅储',
+    value: '',
+
+    history: [],
+
+    hotTopic: [],
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad: function (options) {
+    this.getHotTopic()
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady: function () {
+
+  },
+
+  onShow: function () {
+    this.getLocalHistory()
+  },
+
+  clearInput() {
+    this.setData({
+      value: '',
+      focus: true,
+      result: []
+    });
+  },
+
+  inputChange(e) {
+    this.setData({
+      value: e.detail.value
+    });
+  },
+
+  /**
+   * 鎼滅储
+   */
+  search() {
+    if (this.data.value.length == 0) {
+      wx.navigateBack({
+        delta: 1,
+      })
+      return
+    }
+    var that = this
+    wx.navigateTo({
+      url: '/pages/m_consult/consultresult/consultresult',
+      success: (res) => {
+        // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+        res.eventChannel.emit('acceptDataFromOpenerPage', {
+          keyword: that.data.value
+        })
+      },
+    })
+    
+    if (this.data.history.indexOf(this.data.value) == -1) {
+      let h = this.data.history
+      h.unshift(this.data.value)
+      if (h.length > 10) {
+        h = h.slice(0, 10)
+      }
+      this.setData({
+        history: h
+      })
+      wx.setStorage({
+        data: JSON.stringify(h),
+        key: 'search_history',
+      })
+    }
+  },
+
+  selectHistory (e) {
+    var i = e.currentTarget.dataset.index
+    var kw = this.data.history[i]
+    this.setData({
+      value: kw
+    })
+    this.search()
+  },
+
+  /**
+   * 鑾峰彇鏈湴缂撳瓨鎼滅储鍘嗗彶
+   */
+  getLocalHistory() {
+    var that = this
+    wx.getStorage({
+      key: 'search_history',
+      success: (res) => {
+        let h = JSON.parse(res.data)
+        that.setData({
+          history: h
+        })
+      },
+    })
+  },
+
+  /**
+   * 鑾峰彇鐑棬鎼滅储鍐呭
+   */
+  getHotTopic() {
+    var that = this
+    consultservice.getTopicLaw(app.globalData.accessToken.userId, {
+      success (res) {
+        that.setData({
+          hotTopic: res
+        })
+      }
+    })
+  },
+
+  gotoDetail (e) {
+    var i = e.currentTarget.dataset.index
+    var fileId = this.data.hotTopic[i].mfGuid
+    wx.navigateTo({
+      url: '/pages/m_consult/consultdetail/consultdetail',
+      success: (res) => {
+        // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+        res.eventChannel.emit('acceptDataFromOpenerPage', {
+          fileId: fileId
+        })
+      },
+    })
+  }
+})
\ No newline at end of file
diff --git a/pages/m_consult/consultsearch/consultsearch.json b/pages/m_consult/consultsearch/consultsearch.json
new file mode 100644
index 0000000..026ed97
--- /dev/null
+++ b/pages/m_consult/consultsearch/consultsearch.json
@@ -0,0 +1,8 @@
+{
+  "navigationBarTitleText": "鐜繚鐭ヨ瘑搴撲竴閿煡璇�",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {
+    "mp-icon": "/component/icon/icon"
+  }
+}
\ No newline at end of file
diff --git a/pages/m_consult/consultsearch/consultsearch.wxml b/pages/m_consult/consultsearch/consultsearch.wxml
new file mode 100644
index 0000000..b3412c3
--- /dev/null
+++ b/pages/m_consult/consultsearch/consultsearch.wxml
@@ -0,0 +1,28 @@
+<!--pages/m_consult/consultsearch/consultsearch.wxml-->
+<view class="page">
+  <view class="page__hd">
+    <view class="search-bar">
+      <mp-icon icon="search" size="15" color="black"></mp-icon>
+      <input type="text" class="search-bar__input" placeholder="{{placeholder}}" value="{{value}}" focus="{{focus}}" bindinput="inputChange" />
+      <text class="weui-icon-clear" hover-class="weui-active" wx:if="{{value.length > 0}}" bindtap="clearInput"></text>
+    </view>
+    <view class="btn" bindtap="search">{{value.length > 0 ? '鎼滅储' : '鍙栨秷'}}</view>
+  </view>
+  <view class="page__bd">
+    <view wx:if="{{history.length > 0}}">
+      <view>鍘嗗彶璁板綍</view>
+      <view class="history-record">
+        <text wx:for="{{history}}" wx:key="index" data-index="{{index}}" bindtap="selectHistory">{{item}}</text>
+      </view>
+    </view>
+
+    <view>澶у閮藉湪鎼�</view>
+    <view class="hot-topic">
+      <view wx:for="{{hotTopic}}" wx:key="index" class="hot-topic__item" data-index="{{index}}" bindtap="gotoDetail">
+        <view class="{{index < 3 ? 'hot-topic__hot' : 'hot-topic__normal'}}">{{index + 1}}</view>
+        <view class="hot-topic__name">{{item.mfName}}</view>
+      </view>
+    </view>
+  </view>
+  <view class="page__ft"></view>
+</view>
\ No newline at end of file
diff --git a/pages/m_consult/consultsearch/consultsearch.wxss b/pages/m_consult/consultsearch/consultsearch.wxss
new file mode 100644
index 0000000..7433353
--- /dev/null
+++ b/pages/m_consult/consultsearch/consultsearch.wxss
@@ -0,0 +1,124 @@
+/* pages/m_consult/consultsearch/consultsearch.wxss */
+.page__hd {
+  /* background-color: white; */
+  padding: 10px;
+  display: flex;
+  align-items: center;
+}
+
+.page__bd {
+  padding-left: 10px;
+  padding-right: 10px;
+  font-size: 14px;
+}
+
+.search-bar {
+  flex: 1;
+  position: relative;
+  min-width: 50vw;
+  padding: 6px 8px;
+  font-size: 12px;
+  line-height: 24px;
+  color: var(--fyui-text-color_2);
+  text-align: left;
+  background-color: white;
+  border-radius: 20px;
+  border: 2px solid #57E4CB;
+  display: flex;
+  align-items: center;
+}
+
+.search-bar .weui-icon-clear {
+  /* position: absolute;
+  top: 50%;
+  right: 0;
+  margin-top: -16px; */
+  padding-left: 8px;
+  width: 16px;
+  height: 16px;
+  -webkit-mask-size: 16px;
+  mask-size: 16px;
+  /* display: block; */
+}
+
+.search-bar .search-bar__input {
+  width: 100%;
+  border: 0;
+  font-size: 14px;
+  line-height: 20px;
+  box-sizing: content-box;
+  background: transparent;
+  caret-color: var(--weui-BRAND);
+  color: var(--weui-FG-0);
+}
+
+.btn {
+  border-radius: 20px;
+  line-height: 20px;
+  font-size: 14px;
+  width: 70px;
+  background: linear-gradient(to top right, #42E4D5, #94DBF2);
+  padding: 4px 2px;
+  text-align: center;
+  color: white;
+  margin-left: 4px;
+}
+
+.history-record {
+  display: flex;
+  flex-wrap: wrap;
+  margin-bottom: 16px;
+}
+
+.history-record>text {
+  white-space: nowrap;
+  background-color: rgb(255, 255, 255);
+  margin-right: 8px;
+  margin-bottom: 4px;
+  padding: 2px 6px;
+  color: var(--fyui-text-color_2);
+  border-radius: 8px;
+  /* border: 1px solid var(--fyui-text-color_3); */
+}
+
+.hot-topic {
+  background-color: white;
+  position: relative;
+  overflow: hidden;
+  border-radius: 8px;
+  padding: 8px;
+}
+
+.hot-topic .hot-topic__item {
+  display: flex;
+  margin-bottom: 8px;
+}
+
+.hot-topic .hot-topic__hot{
+  background-color: rgba(255, 0, 0, 0.692);
+  width: 20px;
+  height: 20px;
+  text-align: center;
+  color: white;
+}
+
+.hot-topic .hot-topic__normal{
+  background-color: rgba(255, 166, 0, 0.692);
+  width: 20px;
+  height: 20px;
+  text-align: center;
+  color: white;
+}
+
+.hot-topic .hot-topic__name{
+  width: 100%;
+  margin-left: 8px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  /* background-color: orange; */
+}
+
+.hot-topic .hot-topic__name:active{
+  background-color: var(--fyui-BG-COLOR-ACTIVE);
+}
\ No newline at end of file
diff --git a/pages/m_learn/behaviors/beLearn.js b/pages/m_learn/behaviors/beLearn.js
new file mode 100644
index 0000000..47ad59a
--- /dev/null
+++ b/pages/m_learn/behaviors/beLearn.js
@@ -0,0 +1,65 @@
+const app = getApp()
+
+/**
+ * 瀹堟硶瀛︿範鏉愭枡鐨勮幏鍙栧拰鎵撳紑
+ */
+module.exports = Behavior({
+  data: {
+    resources: [],
+  },
+  methods: {
+    /**
+     * 瀹堟硶瀛︿範鏉愭枡鍐呭璺宠浆
+     */
+    behaviorOpenFile: function (f) {
+      var url = ""
+      switch (f.lrResourcefiletype) {
+        //鏂囨。
+        case 1:
+          let bodyUrl = f.lrBodyurl
+          wx.showLoading({
+            title: ' 鏂囦欢涓嬭浇涓�',
+            mask: true,
+          })
+          wx.downloadFile({
+            url: bodyUrl,
+            success: function (res) {
+              wx.hideLoading()
+              const filePath = res.tempFilePath
+              wx.openDocument({
+                filePath: filePath,
+                success: function (res) {
+                  console.log('鎵撳紑鏂囨。鎴愬姛')
+                },
+                fail(error) {
+                  console.log(error);
+                }
+              })
+            }
+          })
+          break;
+          //閾炬帴
+        case 2:
+          url = ""
+          break;
+          //鍥剧墖
+        case 3:
+          url = ""
+          break;
+          //瑙嗛
+        case 4:
+          url = "/pages/m_common/pagevideo/pagevideo"
+          break;
+      }
+      if (url != "") {
+        wx.navigateTo({
+          url: url,
+          success: (res) => {
+            // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+            res.eventChannel.emit('acceptDataFromOpenerPage', f)
+          },
+        })
+      }
+    }
+  }
+})
\ No newline at end of file
diff --git a/pages/m_learn/learfile/learnfile.js b/pages/m_learn/learfile/learnfile.js
new file mode 100644
index 0000000..1821ca5
--- /dev/null
+++ b/pages/m_learn/learfile/learnfile.js
@@ -0,0 +1,66 @@
+// pages/m_learn/learfile/learnfile.js
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず
+   */
+  onShow() {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌
+   */
+  onHide() {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇
+   */
+  onUnload() {
+
+  },
+
+  /**
+   * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔
+   */
+  onPullDownRefresh() {
+
+  },
+
+  /**
+   * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁�
+   */
+  onReachBottom() {
+
+  },
+
+  /**
+   * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜�
+   */
+  onShareAppMessage() {
+
+  }
+})
\ No newline at end of file
diff --git a/pages/m_learn/learfile/learnfile.json b/pages/m_learn/learfile/learnfile.json
new file mode 100644
index 0000000..8835af0
--- /dev/null
+++ b/pages/m_learn/learfile/learnfile.json
@@ -0,0 +1,3 @@
+{
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/m_learn/learfile/learnfile.wxml b/pages/m_learn/learfile/learnfile.wxml
new file mode 100644
index 0000000..7e32922
--- /dev/null
+++ b/pages/m_learn/learfile/learnfile.wxml
@@ -0,0 +1,34 @@
+<!--pages/m_learn/learfile/learnfile.wxml-->
+<view class="page__bd ">
+  <view wx:for="{{resources}}" wx:key="index" wx:item="item" bindtap="openFile" data-index="{{index}}">
+    <view wx:if="{{item.lrResourcefiletype != 4}}" class="fyui-box fyui-panel">
+      <view class="fyui-box__hd">
+        <image src="{{item.lrPicurl}}" class="" mode="aspectFill" />
+      </view>
+      <view class="fyui-box__bd">
+        <view class="fyui-box__content">{{item.lrResourcetitle}}</view>
+        <view class="fyui-box__tag">
+          <view>{{item.lrPublishdate}}</view>
+          <view class="flex-h">
+            <image src="/res/icons/view.png" class="icon"></image>{{item.views}}
+          </view>
+        </view>
+      </view>
+    </view>
+    <view wx:else class="fyui-panel fyui-panel_video">
+      <view style="position: relative;">
+        <image src="{{item.lrPicurl}}" class="video-poster" mode="aspectFit" />
+        <mp-icon class="video-play" icon="play" color="white" size="50" type="filled"></mp-icon>
+      </view>
+      <view class="video-title">{{item.lrResourcetitle}}</view>
+      <view class="tag">
+        <view>{{item.lrPublishdate}}</view>
+        <view class="flex-h">
+          <image src="/res/icons/view.png" class="icon"></image>{{item.views}}
+        </view>
+      </view>
+    </view>
+  </view>
+</view>
+
+<view class="page__ft"></view>
\ No newline at end of file
diff --git a/pages/m_learn/learfile/learnfile.wxss b/pages/m_learn/learfile/learnfile.wxss
new file mode 100644
index 0000000..870b219
--- /dev/null
+++ b/pages/m_learn/learfile/learnfile.wxss
@@ -0,0 +1 @@
+/* pages/m_learn/learfile/learnfile.wxss */
\ No newline at end of file
diff --git a/pages/m_learn/learn/learn.js b/pages/m_learn/learn/learn.js
new file mode 100644
index 0000000..7b9b47f
--- /dev/null
+++ b/pages/m_learn/learn/learn.js
@@ -0,0 +1,179 @@
+// pages/learn/learn.js
+const lawservice = require("../../../service/lawservice")
+const moment = require('../../../utils/moment.min')
+const beLearn = require('../behaviors/beLearn')
+const app = getApp()
+
+Page({
+  behaviors: [beLearn],
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    currentTab: 0,
+    tabList: [{
+        "name": "VOCs鎺掓斁"
+      },
+      {
+        "name": "鍙拌处"
+      },
+      {
+        "name": "娌荤悊璁炬柦璁惧"
+      },
+      {
+        "name": "鍦ㄧ嚎鐩戞祴璁惧"
+      }
+    ],
+    pageList: [
+
+    ],
+    banners: [
+      {
+        pic: '',
+        url: '',
+        fileType: ''
+      },
+    ],
+    resources: [],
+    text2: [{
+      title: "鍥犺繚绔犲缓绛戝鑷存墽娉�",
+      content: "鎵ф硶鎻忚堪锛氱幆淇濅富绠¢儴闂ㄥ彲璋冮槄骞朵綔涓烘墽娉曟函婧愪緷鎹箣涓�鐜繚涓荤閮ㄩ棬鍙皟闃呭苟浣滀负鎵ф硶婧簮渚濇嵁涔嬩竴",
+      tags: ['杩濇硶鎼缓', '渚濇硶鎷嗛櫎'],
+      views: 123,
+      time: '2021骞�3鏈�2鏃�',
+      likes: 233
+    }, {
+      title: "鍥犺繚绔犲缓绛戝鑷存墽娉�",
+      content: "鎵ф硶鎻忚堪锛氱幆淇濅富绠¢儴闂ㄥ彲璋冮槄骞朵綔涓烘墽娉曟函婧愪緷鎹箣涓�鐜繚涓荤閮ㄩ棬鍙皟闃呭苟浣滀负鎵ф硶婧簮渚濇嵁涔嬩竴",
+      tags: ['杩濇硶鎼缓', '渚濇硶鎷嗛櫎'],
+      views: 123,
+      time: '2021骞�3鏈�2鏃�',
+      likes: 233
+    }, {
+      title: "鍥犺繚绔犲缓绛戝鑷存墽娉�",
+      content: "鎵ф硶鎻忚堪锛氱幆淇濅富绠¢儴闂ㄥ彲璋冮槄骞朵綔涓烘墽娉曟函婧愪緷鎹箣涓�鐜繚涓荤閮ㄩ棬鍙皟闃呭苟浣滀负鎵ф硶婧簮渚濇嵁涔嬩竴",
+      tags: ['杩濇硶鎼缓', '渚濇硶鎷嗛櫎'],
+      views: 123,
+      time: '2021骞�3鏈�2鏃�',
+      likes: 233
+    }, {
+      title: "鍥犺繚绔犲缓绛戝鑷存墽娉�",
+      content: "鎵ф硶鎻忚堪锛氱幆淇濅富绠¢儴闂ㄥ彲璋冮槄骞朵綔涓烘墽娉曟函婧愪緷鎹箣涓�鐜繚涓荤閮ㄩ棬鍙皟闃呭苟浣滀负鎵ф硶婧簮渚濇嵁涔嬩竴",
+      tags: ['杩濇硶鎼缓', '渚濇硶鎷嗛櫎'],
+      views: 123,
+      time: '2021骞�3鏈�2鏃�',
+      likes: 233
+    }]
+  },
+  //璁$畻swiper楂樺害鏂规硶锛堝湪鍒囨崲鐨勬椂鍊欒皟鐢級
+  tabsHeight(element) {
+    let that = this;
+    let query = wx.createSelectorQuery(); //蹇呴』瑕佸厛鍒涘缓涓�涓煡璇�
+    query.select(element).boundingClientRect(function (rect) {
+      that.setData({
+        pageheight: rect.height + 'px'
+      });
+    }).exec();
+  },
+  swichNav: function (e) {
+    var that = this;
+    if (this.data.currentTab === e.target.dataset.current) {
+      return false;
+    } else {
+      that.setData({
+        currentTab: e.target.dataset.current,
+        navScrollLeft: e.target.dataset.current >= 4 ? ((e.target.dataset.current) * 60) : 0 //鍒ゆ柇褰撳墠閫変腑鐨勪釜鏁版槸鍚︽槸绗�5涓�
+      })
+      that.tabsHeight('.page' + e.target.dataset.current); //鏌ヨ鍝竴涓厓绱�
+    }
+  },
+  bindChange: function (e) {
+    var that = this;
+    that.setData({
+      currentTab: e.detail.current,
+      navScrollLeft: e.detail.current >= 4 ? ((e.detail.current) * 60) : 0 //鍒ゆ柇褰撳墠閫変腑鐨勪釜鏁版槸鍚︽槸绗�5涓�
+    });
+    // that.tabsHeight('.page'+e.target.dataset.current);	//鏌ヨ鍝竴涓厓绱�
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad: function (options) {
+    // this.tabsHeight('.page0');
+    this.getResources()
+  },
+
+  onReachBottom () {
+    console.log('onReachBottom');
+    if (this.cPage && this.tPage) {
+      if (this.cPage < this.tPage) {
+        this.getResources(this.cPage + 1)
+      }
+    }
+  },
+
+  getBanner() {
+    let banners = []
+    for (let i = 0; i < 6; i++) {
+      const d = this.data.resources[i]
+      banners.push({
+        pic: d.lrPicurl,
+        url: d.lrBodyurl,
+        fileType: d.lrResourcefiletype,
+      })
+    }
+    this.setData({
+      banners
+    })
+  },
+
+  getResources(cPage = 1) {
+    var that = this
+    let user = app.globalData.userInfo
+    lawservice.getLawRegulations(user.guid, cPage, {sceneTypeId: user.extension2}, {
+      onHead(header) {
+        that.cPage = parseInt(header.currentPage)
+        that.tPage = parseInt(header.totalPage)
+        console.log(`cPage:${that.cPage}, tPage:${that.tPage}`);
+      },
+      success(data) {
+        let resources = that.data.resources
+        data.forEach(d => {
+          d.views = parseInt(Math.random() * 1000 + 10)
+          d.lrPublishdate = moment(d.lrPublishdate).format('YYYY骞碝M鏈圖D鏃�')
+        });
+        resources = resources.concat(data)
+        that.setData({
+          resources
+        })
+        if (that.cPage == 1) {
+          that.getBanner()
+        }
+      }
+    }, 10)
+  },
+
+  openFile(e) {
+    var index = e.currentTarget.dataset.index
+    let f = this.data.resources[index]
+    this.behaviorOpenFile(f)
+  },
+  goto: function (e) {
+    var url = ""
+    var index = e.currentTarget.dataset.index
+    switch (index) {
+      case '0':
+        url = '/pages'
+        break;
+      case '1':
+        url = ""
+        break;
+    }
+    if (url != "") {
+      wx.navigateTo({
+        url: url,
+      })
+    }
+  }
+})
\ No newline at end of file
diff --git a/pages/m_learn/learn/learn.json b/pages/m_learn/learn/learn.json
new file mode 100644
index 0000000..c8fcfef
--- /dev/null
+++ b/pages/m_learn/learn/learn.json
@@ -0,0 +1,8 @@
+{
+  "navigationBarTitleText": "瀹堟硶瀛︿範",
+  "navigationBarBackgroundColor": "#65EAD2",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {
+    "mp-icon": "/component/icon/icon"
+  }
+}
\ No newline at end of file
diff --git a/pages/m_learn/learn/learn.wxml b/pages/m_learn/learn/learn.wxml
new file mode 100644
index 0000000..2db44ee
--- /dev/null
+++ b/pages/m_learn/learn/learn.wxml
@@ -0,0 +1,120 @@
+<!--pages/learn/learn.wxml-->
+<view class="page ">
+
+  <!-- <view class="swiper-tab">
+    <scroll-view scroll-left="{{navScrollLeft}}" scroll-x="true" show-scrollbar="false" scroll-with-animation="true">
+      <block wx:for="{{tabList}}" wx:key="i">
+        <view class="swiper-tab-list {{currentTab==index ? 'on' : ''}}" data-current="{{index}}" bindtap="swichNav">{{item.name}}</view>
+      </block>
+    </scroll-view>
+  </view> -->
+  <!-- <swiper current="{{currentTab}}" class="swiper-box" duration="300" bindchange="bindChange" style="height: {{pageheight}};">
+    <block wx:for="{{pageList}}" wx:for-item="page" wx:key="n">
+
+      <swiper-item>
+
+        <view class="page{{index}}">
+
+        </view>
+      </swiper-item>
+    </block>
+  </swiper> -->
+
+  <view class="page__bd ">
+    <view class="fyui-panel">
+      <swiper indicator-dots="true" autoplay="true" circular="true" interval="2000" duration="500" previous-margin="0px" next-margin="0px">
+        <block wx:for='{{banners}}' wx:key='u'>
+          <swiper-item>
+            <image src='{{item.pic}}' mode="aspectFill" class='swiper-item-images' data-index="{{index}}" bindtap="openFile" />
+          </swiper-item>
+        </block>
+      </swiper>
+    </view>
+
+    <view class="flex-h" style="padding: 8px 10px;">
+      <view class="image-btn" bindtap="goto" data-index="0">
+        <image src="/res/icons/learn_1.png" class="image-btn__2" mode="aspectFit" />
+        <view class="image-btn_title">
+          <view class="image-btn_title_t">鐜繚瀹堟硶</view>
+          <view>瑙嗛銆佹枃妗f潗鏂�</view>
+          <mp-icon class="image-btn_goto" icon="arrow" color="#7F7F7F" size="8" type="filled"></mp-icon>
+        </view>
+
+      </view>
+      <view class="flex-v">
+        <view class="image-btn" style="background-color: #F4EED3;" bindtap="goto" data-index="1">
+          <image src="/res/icons/learn_2.png" class="image-btn__2" mode="aspectFit" />
+          <view class="image-btn_title">
+            <view class="image-btn_title_t">鎵ф硶妗堜緥</view>
+            <view>鐩稿叧鎵ф硶妗堜緥</view>
+            <mp-icon class="image-btn_goto" icon="arrow" color="#7F7F7F" size="8" type="filled"></mp-icon>
+          </view>
+        </view>
+      </view>
+    </view>
+
+    <!-- <view class="fyui-cell fyui-cell_select title">
+      <view class="fyui-cell__bd">鐜繚瀹堟硶</view>
+      <view class="fyui-cell__ft">鏇村</view>
+    </view> -->
+    <view wx:for="{{resources}}" wx:key="index" wx:item="item" bindtap="openFile" data-index="{{index}}">
+      <view wx:if="{{item.lrResourcefiletype != 4}}" class="fyui-box fyui-panel">
+        <view class="fyui-box__hd">
+          <image src="{{item.lrPicurl}}" class="" mode="aspectFill" />
+        </view>
+        <view class="fyui-box__bd">
+          <view class="fyui-box__content">{{item.lrResourcetitle}}</view>
+          <view class="fyui-box__tag">
+            <view>{{item.lrPublishdate}}</view>
+            <view class="flex-h">
+              <image src="/res/icons/view.png" class="icon"></image>{{item.views}}
+            </view>
+          </view>
+        </view>
+      </view>
+      <view wx:else class="fyui-panel fyui-panel_video">
+        <view style="position: relative;">
+          <image src="{{item.lrPicurl}}" class="video-poster" mode="aspectFit" />
+          <mp-icon class="video-play" icon="play" color="white" size="50" type="filled"></mp-icon>
+        </view>
+        <view class="video-title">{{item.lrResourcetitle}}</view>
+        <view class="tag">
+          <view>{{item.lrPublishdate}}</view>
+          <view class="flex-h">
+            <image src="/res/icons/view.png" class="icon"></image>{{item.views}}
+          </view>
+        </view>
+      </view>
+    </view>
+
+    <!-- <view class="fyui-cell fyui-cell_select title">
+      <view class="fyui-cell__bd">鎵ф硶妗堜緥</view>
+      <view class="fyui-cell__ft">鏇村</view>
+    </view>
+    <view wx:for="{{text2}}" wx:key="index" data-index="index" wx:for-item="item">
+      <view class="fyui-box fyui-panel fyui-box__text">
+        <view class="fyui-box__hd">
+          {{item.title}}
+        </view>
+        <view class="fyui-box__bd">
+          <view class="fyui-box__content">{{item.content}}</view>
+          <view class="fyui-box__tag">
+            <view wx:for="{{item.tags}}" wx:key="i" data-index="i" wx:for-item="tag">{{tag}}</view>
+          </view>
+        </view>
+        <view class="fyui-box__ft">
+          <view class="flex-h">
+            <image src="/res/icons/view.png" class="icon"></image>{{item.views}}
+          </view>
+          <view class="flex-h">
+            <image src="/res/icons/like.png" class="icon"></image>{{item.likes}}
+          </view>
+          <view>{{item.time}}</view>
+        </view>
+      </view>
+    </view> -->
+
+  </view>
+
+  <view class="page__ft"></view>
+</view>
\ No newline at end of file
diff --git a/pages/m_learn/learn/learn.wxss b/pages/m_learn/learn/learn.wxss
new file mode 100644
index 0000000..6ca3db0
--- /dev/null
+++ b/pages/m_learn/learn/learn.wxss
@@ -0,0 +1,128 @@
+/* pages/learn/learn.wxss */
+.swiper-tab{
+  position: fixed;
+  width: 100%;
+  text-align: center;
+  line-height: 80rpx;
+  white-space: nowrap;
+  z-index: 2;
+  background-color: #65EAD2;
+}
+
+.swiper-tab-list{
+  font-size: 30rpx;
+  display: inline-block;
+  min-width: 18%;
+  padding: 0 1%;
+  color: rgba(255, 255, 255, 0.658);
+}
+
+.on{ 
+  color: white;
+  font-weight: bold;
+  border-bottom: 4rpx solid white;
+}
+
+.swiper-box{
+  position: absolute;
+  display: block;
+  top: 80rpx;
+  width: 100%;
+  margin-top: 10px;
+  background-color: var(--fyui-BG_1);
+}
+
+.city-item{
+  width: 100%;
+  display: flex;
+  flex-flow: row nowrap;
+  margin-bottom: 10px;
+}
+
+.img{
+  width: 40%;
+  height: 100px;
+}
+
+.text{
+  width: 60%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  font-size: 24px;
+  border: 1px solid #ddd;
+  box-sizing: border-box;
+}
+
+.swiper-item-images{
+  width: 100%;
+  height: 300rpx;
+}
+
+.image-btn{
+  position: relative;
+  width: 46vw;
+  height: 20vw;
+  background-color: #ECEEF9;
+}
+
+.image-btn_title{
+  position: relative;
+  white-space: nowrap;
+  z-index: 1;
+  color: var(--fyui-text-color_2);
+  font-size: 12px;
+  margin: 10px;
+}
+
+.image-btn_title_t{
+  color: var(--fyui-text-color_1);
+  font-weight: 600;
+  font-size: 16px;
+}
+
+.image-btn__2 {
+  position: absolute;
+  width: 30vw;
+  height: 20vw;
+  /* background-color: red; */
+  right: 0;
+  bottom: 0;
+  z-index: 0;
+}
+
+.image-btn_goto{
+  display: block;
+  background-color: white;
+  width: 20px;
+  height: 20px;
+  text-align: center;
+  border-radius: 50%;
+}
+
+.fyui-panel_video .video-poster {
+  width: 100%;
+  background-color: black;
+}
+
+.fyui-panel_video .video-title{
+  padding: 2px 16px;
+  font-size: 16px;
+}
+
+.fyui-panel_video .video-play {
+  position: absolute;
+  top: calc(50% - 25px);
+  left: calc(50% - 25px);
+  z-index: 10;
+  background-color: rgba(138, 138, 138, 0.712);
+  border-radius: 50%;
+}
+
+.fyui-panel_video .tag{
+  display: flex;
+  justify-content: space-between;
+  font-size: 12px;
+  color: var(--fyui-text-color_2);
+  padding: 4px 16px;
+}
\ No newline at end of file
diff --git a/pages/m_learn/learncase/learncase.js b/pages/m_learn/learncase/learncase.js
new file mode 100644
index 0000000..e31c7dc
--- /dev/null
+++ b/pages/m_learn/learncase/learncase.js
@@ -0,0 +1,66 @@
+// pages/m_learn/learncase/learncase.js
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず
+   */
+  onShow() {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌
+   */
+  onHide() {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇
+   */
+  onUnload() {
+
+  },
+
+  /**
+   * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔
+   */
+  onPullDownRefresh() {
+
+  },
+
+  /**
+   * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁�
+   */
+  onReachBottom() {
+
+  },
+
+  /**
+   * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜�
+   */
+  onShareAppMessage() {
+
+  }
+})
\ No newline at end of file
diff --git a/pages/m_learn/learncase/learncase.json b/pages/m_learn/learncase/learncase.json
new file mode 100644
index 0000000..8835af0
--- /dev/null
+++ b/pages/m_learn/learncase/learncase.json
@@ -0,0 +1,3 @@
+{
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/m_learn/learncase/learncase.wxml b/pages/m_learn/learncase/learncase.wxml
new file mode 100644
index 0000000..138f3fa
--- /dev/null
+++ b/pages/m_learn/learncase/learncase.wxml
@@ -0,0 +1,2 @@
+<!--pages/m_learn/learncase/learncase.wxml-->
+<text>pages/m_learn/learncase/learncase.wxml</text>
diff --git a/pages/m_learn/learncase/learncase.wxss b/pages/m_learn/learncase/learncase.wxss
new file mode 100644
index 0000000..8aac863
--- /dev/null
+++ b/pages/m_learn/learncase/learncase.wxss
@@ -0,0 +1 @@
+/* pages/m_learn/learncase/learncase.wxss */
\ No newline at end of file
diff --git a/pages/m_ledger/ledgerhistory/ledgerhistory.js b/pages/m_ledger/ledgerhistory/ledgerhistory.js
new file mode 100644
index 0000000..a37850b
--- /dev/null
+++ b/pages/m_ledger/ledgerhistory/ledgerhistory.js
@@ -0,0 +1,224 @@
+// pages/m_ledger/ledgerHistory/ledgerhistory.js
+const ledgerservice = require("../../../service/ledgerservice")
+const moment = require('../../../utils/moment.min')
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    year: 2000,
+    maxYear: 2000,
+
+    months: [{
+      month: 1,
+      hasData: true
+    }, {
+      month: 2,
+      hasData: true
+    }, {
+      month: 3,
+      hasData: true
+    }, {
+      month: 4,
+      hasData: true
+    }, {
+      month: 5,
+      hasData: true
+    }, {
+      month: 6,
+      hasData: true
+    }, {
+      month: 7,
+      hasData: true
+    }, {
+      month: 8,
+      hasData: true
+    }, {
+      month: 9,
+      hasData: true
+    }, {
+      month: 10,
+      hasData: true
+    }, {
+      month: 11,
+      hasData: true
+    }, {
+      month: 12,
+      hasData: true
+    }],
+    selectedMonIndex: 0,
+
+    recordList: [],
+
+    previewImageUrls:[],
+    previewCurrent: 0,
+    showPreview: false,
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+    var that = this
+    this.initTime()
+    this.getRecord()
+    this.getOpenerEventChannel().on('acceptDataFromOpenerPage', function (data) {
+      let ledgerMap = new Map()
+      data.tabList.forEach(t => {
+        ledgerMap.set(t.name, {
+          notUpload: t.tag,
+          total: t.total,
+          ledgers: []
+        })
+      });
+      that.setData({
+        ledgerMap
+      })
+    })
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady() {
+
+  },
+
+  onShow(){
+    if (this.data.marginTop == undefined) {
+      this.topHeight('.page__hd')
+    }
+  },
+
+  initTime(year) {
+    var date = new Date()
+    let maxYear = date.getFullYear()
+    var thisMonth = date.getMonth()
+    if (year == undefined) {
+      year = maxYear + '骞�'
+    }
+    this.setData({
+      year: year,
+      maxYear: maxYear,
+    })
+    this.setData({
+      selectedMonIndex: thisMonth
+    })
+  },
+
+  bindYearChange(e) {
+    let y = e.detail.value
+    this.setData({
+      year: `${y}骞碻
+    })
+    this.getRecord()
+  },
+
+  selectMonth(e) {
+    let index = e.currentTarget.dataset.index
+    this.setData({
+      selectedMonIndex: index
+    })
+    this.getRecord()
+  },
+
+  getRecord() {
+    var that = this
+    var userId = app.globalData.accessToken.userId
+    var sceneType = app.globalData.userInfo.extension2
+    let month = this.data.months[this.data.selectedMonIndex].month
+    let year = parseInt(this.data.year.split("骞�")[0])
+    var time = moment().year(year).month(month - 1).format('YYYY-MM-DD')
+    wx.showLoading({
+      title: '鍔犺浇涓�',
+      mask: true,
+      success: (res) => {},
+      fail: (res) => {},
+      complete: (res) => {},
+    })
+    setTimeout(() => {
+      wx.hideLoading()
+    }, 20000);
+    ledgerservice.getLedgerDetail(userId, undefined, sceneType, time, {
+      success(res) {
+        let ledgerMap = that.data.ledgerMap
+        ledgerMap.forEach((e, key) => {
+          e.ledgers = []
+        });
+        res.forEach(r => {
+          let t = ledgerMap.get(r.ledgerType)
+          t.ledgers.push(r)
+        });
+        let recordList = []
+        ledgerMap.forEach((e, key) => {
+          recordList.push({
+            ledgerType: key,
+            total: e.total,
+            notUpload: e.notUpload,
+            ledgers: e.ledgers
+          })
+        });
+        // for (const key in ledgerMap) {
+        //   const e = ledgerMap.get(key);
+
+        // }
+        that.setData({
+          ledgerMap: ledgerMap,
+          recordList: recordList
+        })
+        console.log(recordList);
+      },
+      complete(res) {
+        wx.hideLoading()
+      }
+    })
+  },
+
+  topHeight(element) {
+    let that = this;
+    let query = wx.createSelectorQuery(); //蹇呴』瑕佸厛鍒涘缓涓�涓煡璇�
+    query.select(element).boundingClientRect(function (rect) {
+      that.setData({
+        marginTop: rect.height + 'px'
+      });
+    }).exec();
+  },
+
+  gotoLedgerDetail(e) {
+    var i = e.currentTarget.dataset.index.split(',')
+    var indexGroup = [parseInt(i[0]), parseInt(i[1])]
+    var ledger = this.data.recordList[indexGroup[0]].ledgers[indexGroup[1]]
+    console.log(ledger);
+    wx.navigateTo({
+      url: '/pages/m_ledger/ledgerupload/ledgerupload',
+      success: (res) => {
+        // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+        res.eventChannel.emit('acceptDataFromOpenerPage', {
+          ledger: ledger,
+          indexGroup: indexGroup,
+          barTitle: '鍘嗗彶鍙拌处'
+        })
+      },
+    })
+  },
+  
+  previewImage(e) {
+    var i = e.currentTarget.dataset.index.split(',')
+    var indexGroup = [parseInt(i[0]), parseInt(i[1])]
+    var ledger = this.data.recordList[indexGroup[0]].ledgers[indexGroup[1]]
+
+    const ledgerTitle = ledger.ledgerName
+    const ledgerRemark = ledger.remark1
+    const previewImageUrls = ledger.path1;
+    this.setData({
+      previewImageUrls,
+      ledgerRemark,
+      ledgerTitle,
+      previewCurrent: 0,
+      showPreview: true
+    });
+  },
+})
\ No newline at end of file
diff --git a/pages/m_ledger/ledgerhistory/ledgerhistory.json b/pages/m_ledger/ledgerhistory/ledgerhistory.json
new file mode 100644
index 0000000..2f2cabf
--- /dev/null
+++ b/pages/m_ledger/ledgerhistory/ledgerhistory.json
@@ -0,0 +1,8 @@
+{
+  "navigationBarTitleText": "鍘嗗彶鍙拌处",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "usingComponents": {
+    "mp-icon": "/component/icon/icon",
+    "my-gallery": "/component/mygallery/mygallery"
+  }
+}
\ No newline at end of file
diff --git a/pages/m_ledger/ledgerhistory/ledgerhistory.wxml b/pages/m_ledger/ledgerhistory/ledgerhistory.wxml
new file mode 100644
index 0000000..80feec7
--- /dev/null
+++ b/pages/m_ledger/ledgerhistory/ledgerhistory.wxml
@@ -0,0 +1,36 @@
+<!--pages/m_ledger/ledgerHistory/ledgerhistory.wxml-->
+<import src="/template/nodata.wxml"></import>
+<view class="page">
+  <view class="page__hd">
+    <view class="flex-h">
+      <text class="title">鏌ョ湅璁板綍</text>
+      <picker bindchange="bindYearChange" data-type="year" value="{{year}}" mode="date" fields="year" end="{{maxYear}}">
+        <view class="fyui-selector">
+          {{year}}
+          <mp-icon extClass="arrow-down" icon="arrow" color="black" size="{{12}}"></mp-icon>
+        </view>
+      </picker>
+    </view>
+    <view class="horizal-list">
+      <view class="{{selectedMonIndex == index ? 'tag_selected':'tag_unselected'}} {{item.hasData ? 'tag_has_data':''}}" wx:for="{{months}}" wx:key="month" bindtap="selectMonth" data-index="{{index}}">{{item.month}}鏈�</view>
+    </view>
+  </view>
+  <view class="page__bd" style="margin-top: {{marginTop}};">
+    <block wx:if="{{recordList.length > 0}}">
+      <view wx:for="{{recordList}}" wx:key="index" wx:for-index="i1" class="fyui-panel">
+        <view class="flex-h">
+          <view class="ledger-type">{{item.ledgerType}}</view>
+          <view class="ledger-type_2">({{item.ledgers.length}} / {{item.total}})</view>
+        </view>
+        <view class="ledger-group">
+          <view wx:for="{{item.ledgers}}" wx:for-item="ledger" wx:for-index="i2" wx:key="i2" class="ledger-group_item" bindtap="previewImage" data-index="{{i1}},{{i2}}">
+            <image class="" src="{{ledger.path1[0]}}" mode="aspectFill"></image>
+            <view>{{ledger.ledgerName}}</view>
+          </view>
+        </view>
+      </view>
+    </block>
+    <template wx:else is="nodataPage"></template>
+  </view>
+</view>
+<my-gallery hide-on-click="{{true}}" show-delete="{{false}}" show="{{showPreview}}" img-urls="{{previewImageUrls}}" current="{{previewCurrent}}" title="{{ledgerTitle}}" remark="{{ledgerRemark}}"></my-gallery>
\ No newline at end of file
diff --git a/pages/m_ledger/ledgerhistory/ledgerhistory.wxss b/pages/m_ledger/ledgerhistory/ledgerhistory.wxss
new file mode 100644
index 0000000..273adfc
--- /dev/null
+++ b/pages/m_ledger/ledgerhistory/ledgerhistory.wxss
@@ -0,0 +1,85 @@
+/* pages/m_ledger/ledgerHistory/ledgerhistory.wxss */
+.page__hd {
+  background-color: var(--fyui-BG_1);
+  position: fixed;
+  z-index: 2;
+}
+.flex-h{
+  padding: 8px;
+}
+
+.title{
+  font-size: 14px;
+  font-weight: 550;
+  margin: 4px 0;
+}
+
+.arrow-down {
+  transform: rotateZ(90deg);
+  margin-left: 6px;
+}
+
+.tag_unselected,
+.tag_selected {
+  font-size: 12px;
+  background-color: #b4b4b45b;
+  /* border: 1px solid rgb(175, 173, 173); */
+  border-radius: 2px;
+  color: var(--fyui-text-color_3);
+  padding: 6rpx 18rpx;
+  margin-bottom: 8px;
+  width: 10%;
+  text-align: center;
+}
+
+.tag_has_data {
+  color: var(--fyui-text-color_1);
+  background-color: white;
+}
+
+.tag_selected {
+  background-color: var(--fyui-primary-color);
+  color: white;
+}
+
+.horizal-list {
+  display: flex;
+  flex-flow: row;
+  flex-wrap: wrap;
+  white-space: nowrap;
+  justify-content: space-around;
+}
+
+.ledger-type{
+  font-size: 14px;
+  font-weight: 600;
+  padding: 0 8px;
+}
+
+.ledger-type_2{
+  font-size: 14px;
+  padding: 0 8px;
+  color: var(--fyui-text-color_3);
+}
+
+.ledger-group{
+  display: flex;
+  flex-wrap: wrap;
+}
+
+.ledger-group_item{
+  width: 46vw;
+  text-align: center;
+  font-size: 14px;
+}
+
+.ledger-group_item>image{
+  width: 40vw;
+  height: 40vw;
+  border-radius: 8px;
+}
+
+.ledger-group_item>view{
+  font-size: 12px;
+  margin-bottom: 8px;
+}
\ No newline at end of file
diff --git a/pages/m_ledger/ledgerhome/ledgerhome.js b/pages/m_ledger/ledgerhome/ledgerhome.js
new file mode 100644
index 0000000..cd0e5dd
--- /dev/null
+++ b/pages/m_ledger/ledgerhome/ledgerhome.js
@@ -0,0 +1,297 @@
+// pages/m_ledger/ledgerhome/ledgerhome.js
+const ledgerservice = require("../../../service/ledgerservice")
+const moment = require('../../../utils/moment.min')
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    thisMonth: '',
+    lastMonth: '',
+
+    //鎻愪氦鏈熼檺
+    deadline: '',
+    //鍓╀綑鎻愪氦澶╂暟
+    leftday: 0,
+
+    //鏈湀姹囨��
+    thisMonthInfo: {
+      //蹇呭~椤规�绘暟
+      totalMust: 0,
+      //蹇呭~椤规彁浜ゆ暟
+      finishedMust: 0,
+      //閫夊~椤规�绘暟
+      totalSelect: 0,
+      //閫夊~椤规彁浜ゆ暟
+      finishedSelect: 0,
+      //鎻愪氦鎯呭喌
+      status: '',
+      //瓒呮椂鎯呭喌
+      overtime: '',
+      //寤鸿
+      suggestion: ''
+    },
+    //涓婃湀姹囨��
+    lastMonthInfo: {
+      totalMust: 0,
+      finishedMust: 0,
+      totalSelect: 0,
+      finishedSelect: 0,
+      status: '',
+      overtime: '',
+      suggestion: ''
+    },
+
+    //閫夐」鍗$浉鍏�
+    currentTab: 0,
+    tabList: [],
+    pageList: [],
+    pageheight: '300px',
+
+    //褰撳墠鏄剧ず鏈堜唤
+    showThisMonth: true,
+  },
+
+  //姣忔湀鍙拌处鎻愪氦鏈熼檺鏃�
+  DEADLINEDAY: 10,
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+    let now = moment()
+    let deadline = now.format(`MM-${this.DEADLINEDAY}`)
+    let leftday = this.DEADLINEDAY + 1 - now.date()
+    let thisMonth = now.format('YYYY-MM')
+    let lastMonth = now.add(-1, 'M').format('YYYY-MM')
+    this.setData({
+      deadline,
+      leftday,
+      thisMonth,
+      lastMonth
+    })
+
+    now = moment()
+    this.getLedgerType(now.format('YYYY-MM-DD'), r => {
+      this.setData({
+        tabList: r[0],
+        pageList: r[1],
+        thisMonthInfo: r[2]
+      })
+    }) //鏈湀
+    this.getLedgerType(now.add(-1, 'M').format('YYYY-MM-DD'), r => {
+      this.setData({
+        lastMonthInfo: r[2]
+      })
+    }, true) //涓婃湀
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず
+   */
+  onShow() {
+
+  },
+
+  getLedgerType(time, success, lastMonth) {
+    var that = this
+    // var time = moment().format('YYYY-MM-DD')
+    ledgerservice.getLedgerSummary(app.globalData.accessToken.userId, app.globalData.userInfo.extension2, time, {
+      success(res) {
+        let r = that.parseLedgerType(res, lastMonth)
+        success(r)
+      }
+    })
+  },
+
+  parseLedgerType(subtypes, lastMonth) {
+    let monthInfo = {
+      totalMust: 0,
+      finishedMust: 0,
+      totalSelect: 0,
+      finishedSelect: 0,
+      status: '',
+      overtime: '',
+      suggestion: ''
+    }
+    let map = new Map()
+    subtypes.forEach(s => {
+      //鏈堝害缁熻
+      if (s.needUpdate) {
+        monthInfo.totalMust++
+        if (s.upLoad) {
+          monthInfo.finishedMust++
+        }
+      } else {
+        monthInfo.totalSelect++
+        if (s.upLoad) {
+          monthInfo.finishedSelect++
+        }
+      }
+
+      //閫夐」鍗�
+      if (s.upLoad) {
+        s.tag = '/res/icons/round_check_fill.png'
+        s.opacity = 0.2
+      } else if (s.ledgerFinished) {
+        s.tag = '/res/icons/warning_yellow.png'
+        s.opacity = 1
+      } else if (!s.needUpdate) {
+        s.tag = '/res/icons/warning_selected.png'
+        s.opacity = 0.5
+      } else {
+        s.tag = '/res/icons/warning_red.png'
+        s.opacity = 1
+      }
+      if (!map.has(s.ledgerType)) {
+        map.set(s.ledgerType, [])
+      }
+      map.get(s.ledgerType).push(s)
+    });
+
+    //
+    if (monthInfo.finishedMust == 0) {
+      monthInfo.status = '鏈彁浜�'
+      if (lastMonth) {
+        monthInfo.suggestion = '褰撴湡鍙拌处瀹屽叏鏈彁浜わ紝涓ラ噸褰卞搷璇勪及缁撴灉锛屽悗缁娉ㄦ剰'
+      } else {
+        monthInfo.suggestion = '璇峰敖蹇彁浜ゅ彴璐�'
+      }
+    } else if (monthInfo.finishedMust < monthInfo.totalMust) {
+      monthInfo.status = '閮ㄥ垎鎻愪氦'
+      if (lastMonth) {
+        monthInfo.suggestion = '褰撴湡鍙拌处閮ㄥ垎鏈彁浜わ紝浼氬奖鍝嶈瘎浼扮粨鏋滐紝鍚庣画璇峰敖閲忔彁浜ゆ墍鏈夊彴璐�'
+      } else {
+        monthInfo.suggestion = '褰撳墠宸叉彁浜ら儴鍒嗗彴璐︼紝璇疯ˉ鍏ㄥ墿浣欏彴璐�'
+      }
+    } else {
+      monthInfo.status = '宸叉彁浜�'
+      if (lastMonth) {
+        monthInfo.suggestion = '褰撴湡鍙拌处宸插叏閮ㄦ彁浜わ紝璇蜂繚鎸�'
+      } else {
+        monthInfo.suggestion = '鏈湡鍙拌处宸插叏閮ㄦ彁浜�'
+      }
+    }
+    monthInfo.overtime = moment().date() - this.DEADLINEDAY
+    monthInfo.percent = Math.round(monthInfo.finishedMust / monthInfo.totalMust * 100)
+
+    console.log(lastMonth);
+    console.log(monthInfo);
+
+    //閫夐」鍗�
+    var t = []
+    var p = []
+    for (let item of map) {
+      console.log(item);
+      let notUpload = 0
+      item[1].forEach(l => {
+        if (l.needUpdate && !l.upLoad) {
+          notUpload++
+        }
+      });
+      t.push({
+        name: item[0],
+        tag: notUpload,
+        total: item[1].length
+      })
+      p.push(item[1])
+    }
+
+    return [t, p, monthInfo]
+  },
+
+  gotoLedgerDetail(e) {
+    var i = e.currentTarget.dataset.index.split(',')
+    var indexGroup = [parseInt(i[0]), parseInt(i[1])]
+    var ledger = this.data.pageList[indexGroup[0]][indexGroup[1]]
+    console.log(ledger);
+
+    var that = this
+    wx.navigateTo({
+      url: '/pages/m_ledger/ledgerupload/ledgerupload',
+      events: {
+        uploadOver: function (data) {
+          let i = data.indexGroup
+          let pageList = that.data.pageList
+          pageList[i[0]][i[1]].upLoad = true
+          pageList[i[0]][i[1]].tag = '/res/icons/round_check_fill.png'
+          that.setData({
+            pageList
+          })
+        }
+      },
+      success: (res) => {
+        // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+        res.eventChannel.emit('acceptDataFromOpenerPage', {
+          ledger: ledger,
+          indexGroup: indexGroup
+        })
+      },
+    })
+  },
+
+  gotoHistory(){
+    let tabList = this.data.tabList
+    wx.navigateTo({
+      url: '/pages/m_ledger/ledgerhistory/ledgerhistory',
+      success: (res) => {
+        // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+        res.eventChannel.emit('acceptDataFromOpenerPage', {
+          tabList: tabList,
+        })
+      },
+    })
+  },
+
+
+  //璁$畻swiper楂樺害鏂规硶锛堝湪鍒囨崲鐨勬椂鍊欒皟鐢級
+  tabsHeight(element) {
+    let that = this;
+    let query = wx.createSelectorQuery(); //蹇呴』瑕佸厛鍒涘缓涓�涓煡璇�
+    query.select(element).boundingClientRect(function (rect) {
+      console.log(rect.height);
+      let pageheight = that.data.pageheight.split('px')[0]
+      pageheight = parseInt(pageheight)
+      if (rect.height > pageheight) {
+        that.setData({
+          pageheight: rect.height + 'px'
+        }); 
+      }
+    }).exec();
+  },
+  swichNav: function (e) {
+    var that = this;
+    if (this.data.currentTab === e.target.dataset.current) {
+      return false;
+    } else {
+      that.setData({
+        currentTab: e.target.dataset.current,
+        navScrollLeft: e.target.dataset.current >= 3 ? ((e.target.dataset.current) * 60) : 0 //鍒ゆ柇褰撳墠閫変腑鐨勪釜鏁版槸鍚︽槸绗�5涓�
+      })
+      // that.tabsHeight('.page' + e.target.dataset.current); //鏌ヨ鍝竴涓厓绱�
+    }
+  },
+  bindChange: function (e) {
+    var that = this;
+    that.setData({
+      currentTab: e.detail.current,
+      navScrollLeft: e.detail.current >= 3 ? ((e.detail.current) * 60) : 0 //鍒ゆ柇褰撳墠閫変腑鐨勪釜鏁版槸鍚︽槸绗�5涓�
+    });
+    that.tabsHeight('.page' + e.detail.current);	//鏌ヨ鍝竴涓厓绱�
+  },
+
+  changeMonth(){
+    let showThisMonth = !this.data.showThisMonth
+    this.setData({showThisMonth})
+  }
+})
\ No newline at end of file
diff --git a/pages/m_ledger/ledgerhome/ledgerhome.json b/pages/m_ledger/ledgerhome/ledgerhome.json
new file mode 100644
index 0000000..b012b03
--- /dev/null
+++ b/pages/m_ledger/ledgerhome/ledgerhome.json
@@ -0,0 +1,7 @@
+{
+  "navigationBarTitleText": "鍙拌处绠$悊",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "usingComponents": {
+    "mp-icon": "/component/icon/icon"
+  }
+}
\ No newline at end of file
diff --git a/pages/m_ledger/ledgerhome/ledgerhome.wxml b/pages/m_ledger/ledgerhome/ledgerhome.wxml
new file mode 100644
index 0000000..72bc305
--- /dev/null
+++ b/pages/m_ledger/ledgerhome/ledgerhome.wxml
@@ -0,0 +1,85 @@
+<!--pages/m_ledger/ledgerhome/ledgerhome.wxml-->
+<view class="page">
+  <view class="banner-bg"></view>
+  <view class="page__hd">
+    <!-- <view class="fyui-panel"> -->
+    <view class="head_right" bindtap="changeMonth">
+      <text class="head_tag" >{{showThisMonth ? thisMonth + '鏈湀' : lastMonth + '涓婃湀'}}姹囨��</text>
+      <mp-icon style="margin-left: 4px;" icon="transfer2" color="white" size="{{20}}"></mp-icon>
+    </view>
+    <view class="card">
+      <block wx:if="{{showThisMonth}}">
+        <view class="head_row">
+          <view class="head_row_item">
+            <view class="head_tag">瀹屾垚搴�</view>
+            <view class="head_1 head_1_big">{{thisMonthInfo.percent}}<text class="head_row_item_tag">%</text></view>
+          </view>
+          <view class="head_row_item">
+            <view class="head_tag">蹇呭~椤�</view>
+            <view class="head_1">{{thisMonthInfo.finishedMust}}<text class="head_row_item_tag">/{{thisMonthInfo.totalMust}}</text></view>
+          </view>
+          <view class="head_row_item">
+            <view class="head_tag">閫夊~椤�</view>
+            <view class="head_1">{{thisMonthInfo.finishedSelect}}<text class="head_row_item_tag">/{{thisMonthInfo.totalSelect}}</text></view>
+          </view>
+        </view>
+        <view class="head_row">
+          <view class="head_tag">鏈湡鍙拌处鎻愪氦鏃ワ細{{deadline}}</view>
+          <view wx:if="{{leftday > 0}}" class="head_tag">鍓╀綑<text>{{leftday}}</text>澶�</view>
+          <view wx:else class="head_tag">閫炬湡 <text>{{thisMonthInfo.overtime}}</text>澶�</view>
+        </view>
+        <view class="head_tag">寤鸿锛歿{thisMonthInfo.suggestion}}</view>
+
+      </block>
+      <block wx:else>
+        <view class="head_row">
+          <view class="head_row_item">
+            <view class="head_tag">瀹屾垚搴�</view>
+            <view class="head_1">{{lastMonthInfo.percent}}<text class="head_row_item_tag">%</text></view>
+          </view>
+          <view class="head_row_item">
+            <view class="head_tag">蹇呭~椤�</view>
+            <view class="head_1">{{lastMonthInfo.finishedMust}}<text class="head_row_item_tag">/{{lastMonthInfo.totalMust}}</text></view>
+          </view>
+          <view class="head_row_item">
+            <view class="head_tag">閫夊~椤�</view>
+            <view class="head_1">{{lastMonthInfo.finishedSelect}}<text class="head_row_item_tag">/{{lastMonthInfo.totalSelect}}</text></view>
+          </view>
+        </view>
+        <view class="head_row">
+          <view class="head_tag">鎻愪氦鎯呭喌锛歿{lastMonthInfo.status}}</view>
+        </view>
+        <view class="head_tag">寤鸿锛歿{lastMonthInfo.suggestion}}</view>
+      </block>
+    </view>
+    <view class="head_right">
+      <text class="head_btn" bindtap="gotoHistory">鍘嗗彶璁板綍 ></text>
+    </view>
+  </view>
+  <!-- </view> -->
+  <view class="page__bd">
+    <view class="swiper-tab">
+      <scroll-view class="swiper-tab_view" scroll-into-view="item{{currentTab}}" scroll-x="true" show-scrollbar="true" scroll-with-animation="true">
+        <block wx:for="{{tabList}}" wx:key="i">
+          <view id="item{{index}}" class="swiper-tab-list {{currentTab==index ? 'on' : ''}}" data-current="{{index}}" bindtap="swichNav">
+            {{item.name}}
+            <text wx:if="{{item.tag > 0}}" class="swiper-tab-list__tag">{{item.tag}}</text>
+          </view>
+        </block>
+      </scroll-view>
+    </view>
+    <swiper current="{{currentTab}}" class="swiper-box" duration="300" bindchange="bindChange" style="height: {{pageheight}};">
+      <block wx:for="{{pageList}}" wx:for-item="page" wx:key="n" wx:for-index="i1">
+        <swiper-item>
+          <view class="ledger-group page{{i1}}">
+            <view wx:for="{{page}}" wx:for-item="ledger" wx:key="t" class="ledger-item" wx:for-index="i2" data-index="{{i1}},{{i2}}" bindtap="gotoLedgerDetail" style="opacity: {{ledger.opacity}};">
+              <image class="ledger-tag" src="{{ledger.tag}}" mode="aspectFit"></image>
+              <image class="ledger-icon" src="{{ledger.iconUrl}}"></image>
+              <view>{{ledger.ledgerName}}</view>
+            </view>
+          </view>
+        </swiper-item>
+      </block>
+    </swiper>
+  </view>
+</view>
\ No newline at end of file
diff --git a/pages/m_ledger/ledgerhome/ledgerhome.wxss b/pages/m_ledger/ledgerhome/ledgerhome.wxss
new file mode 100644
index 0000000..8a2dc56
--- /dev/null
+++ b/pages/m_ledger/ledgerhome/ledgerhome.wxss
@@ -0,0 +1,173 @@
+/* pages/m_ledger/ledgerhome/ledgerhome.wxss */
+.banner-bg {
+  position: fixed;
+  width: 100%;
+  height: 60%;
+  background: linear-gradient(to bottom, #57E4CB, #83b6ae);
+}
+
+.page__hd {
+  /* text-align: center; */
+  display: flex;
+  flex-flow: column;
+  justify-content: flex-start;
+  /* color: #50854C; */
+  color: white;
+  padding: 8px 16px;
+}
+
+.card{
+  height: 26vh;
+  /* background-color: royalblue; */
+}
+
+.head_row{
+  display: flex;
+  /* padding: 0 30px; */
+  justify-content: space-between;
+  align-items: baseline;
+}
+
+.head_row_item{
+  text-align: center;
+  /* width: 20vw; */
+  flex: 1;
+  /* background-color: red; */
+}
+
+.head_row_item_tag{
+  font-size: 12px;
+  font-weight: 559;
+}
+
+.head_right {
+  text-align: end;
+  font-size: 12px;
+  /* background-color: brown; */
+  margin-bottom: 8px;
+  vertical-align: middle;
+}
+
+.head_tag{
+  font-size: 12px;
+  color: white;
+}
+
+.head_btn{
+  background-color: rgb(11, 90, 77);
+  padding: 4px 6px;
+  border-radius: 4px;
+}
+
+.head_btn:active{
+  background-color: rgba(11, 90, 77, 0.5);
+}
+
+.head_tag>text {
+  font-size: 40px;
+  font-weight: 600;
+}
+
+.head_1 {
+  font-size: 30px;
+}
+
+.head_1_big{
+  font-size: 30px;
+}
+
+.head_3 {
+  font-size: 12px;
+  margin-bottom: 16px;
+}
+
+.page__bd {
+  padding-bottom: 0;
+}
+
+.swiper-tab{
+  width: 100%;
+  text-align: center;
+  line-height: 80rpx;
+  white-space: nowrap;
+  z-index: 2;
+  /* background-color: #65EAD2; */
+  /* background-color: #70ea65; */
+  /* padding: 2px; */
+}
+
+.swiper-tab_view{
+  /* background-color: blueviolet; */
+}
+
+.swiper-tab-list{
+  position: relative;
+  font-size: 30rpx;
+  display: inline-block;
+  min-width: 18%;
+  padding: 0 16px;
+  color: rgba(255, 255, 255, 0.658);
+}
+
+.swiper-tab-list__tag{
+  position: absolute;
+  top: 2px;
+  right: 4px;
+  font-size: 10px;
+  line-height: 16px;
+  width: 16px;
+  background-color: brown;
+  border-radius: 50%;
+}
+
+.on{ 
+  color: white;
+  font-weight: bold;
+  border-bottom: 4rpx solid white;
+}
+
+.swiper-box{
+  display: block;
+  top: 80rpx;
+  width: 100%;
+  margin-top: 1px;
+  background-color: white;
+}
+
+.ledger-group {
+  display: flex;
+  flex-wrap: wrap;
+  /* background-color: white; */
+  justify-content: flex-start;
+}
+
+.ledger-item {
+  position: relative;
+  width: 33.33333vw;
+  text-align: center;
+  /* background-color: teal; */
+  margin-top: 16px;
+  margin-bottom: 16px;
+  font-size: x-small;
+}
+
+.ledger-item:active{
+  background-color: var(--fyui-BG-COLOR-ACTIVE);
+}
+
+.ledger-icon {
+  width: 60px;
+  height: 60px;
+}
+
+.ledger-tag {
+  position: absolute;
+  right: 6vw;
+  top: 6px;
+  width: 32px;
+  height: 16px;
+  color: white;
+  padding: 1px;
+  border-radius: 50%;
+  font-size: 10px;
+}
\ No newline at end of file
diff --git a/pages/m_ledger/ledgerupload/ledgerupload.js b/pages/m_ledger/ledgerupload/ledgerupload.js
new file mode 100644
index 0000000..540b229
--- /dev/null
+++ b/pages/m_ledger/ledgerupload/ledgerupload.js
@@ -0,0 +1,161 @@
+// pages/m_ledger/ledgerupload/ledgerupload.js
+const ledgerservice = require("../../../service/ledgerservice")
+const moment = require('../../../utils/moment.min')
+const $f = require('../../../service/baserequest')
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    imgFiles: [],
+
+    remark: '',
+    remarkDisable: false,
+
+    previewImageUrls:[],
+    previewCurrent: 0,
+    showPreview: false,
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+    var that = this
+    this.getOpenerEventChannel().on('acceptDataFromOpenerPage', function(data) {
+      that.setData({
+        ledger: data.ledger,
+        indexGroup: data.indexGroup
+      })
+      if (data.barTitle) {
+        wx.setNavigationBarTitle({
+          title: data.barTitle,
+        })
+      }
+
+      that.checkStatus()
+    })
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady() {
+
+  },
+
+  checkStatus() {
+    if (this.data.ledger.path1) {
+      let imgFiles = this.data.ledger.path1
+      let remark = this.data.ledger.remark1 == null ? '' : this.data.ledger.remark1
+      let remarkDisable = true
+      this.setData({imgFiles, remark, remarkDisable})
+    }else if (this.data.ledger.upLoad) {
+      var that = this
+      var userId = app.globalData.accessToken.userId
+      var typeId = this.data.ledger.ledgerSubTypeId
+      var sceneType = app.globalData.userInfo.extension2
+      var time = moment().format('YYYY-MM-DD')
+      ledgerservice.getLedgerDetail(userId, typeId, sceneType, time, {
+        success (res) {
+          if (res.length > 0) {
+            let detail = res[0]
+            if (detail.upLoad) {
+              let imgFiles = detail.path1
+              let remark = detail.remark1 == null ? '' : detail.remark1
+              let remarkDisable = true
+              that.setData({imgFiles, remark, remarkDisable})
+            }
+          }
+        }
+      })
+    }
+  },
+
+  uploadFile(file) {
+    let data = file.detail.newFiles
+    console.log(data);
+    data.forEach(element => {
+      element.loading = false
+    });
+    this.setData({
+      imgFiles: data
+    })
+  },
+
+  onSubmit: function () {
+    if (this.data.imgFiles.length == 0) {
+      wx.showToast({
+        title: '璇疯嚦灏戦�夋嫨涓�寮犲浘鐗�',
+        icon: 'none',
+      })
+    } else {
+      this.setData({
+        showDialog: true,
+      })
+    }
+  },
+
+  submitLedger() {
+    var that = this
+
+    this.setData({
+      showDialog: false,
+    })
+    wx.showLoading({
+      title: '鎻愪氦涓�',
+      mask: true,
+      success: (res) => {},
+      fail: (res) => {},
+      complete: (res) => {},
+    })
+    setTimeout(() => {
+      wx.hideLoading()
+    }, 20000);
+    let path = []
+    this.data.imgFiles.forEach(f => {
+      path.push(f.url)
+    });
+    let ledger = this.data.ledger
+    ledger.remark1 = this.data.remark
+    ledgerservice.uploadLedger(app.globalData.accessToken.userId, ledger, path, {
+      success (res) {
+        wx.hideLoading({
+          success: (res) => {
+            wx.showToast({
+              title: '鎻愪氦鎴愬姛',
+              duration: 1000,
+              icon: 'success',
+              mask: true,
+              success: (res) => {
+                that.getOpenerEventChannel().emit('uploadOver', {
+                  indexGroup: that.data.indexGroup
+                })
+                wx.navigateBack({
+                  delta: 1,
+                })
+              },
+            })
+          },
+        })
+      },
+      complete (res) {
+      }
+    })
+  },
+
+  previewImage(e) {
+    const {
+      index
+    } = e.currentTarget.dataset;
+    const previewImageUrls = this.data.imgFiles;
+    this.setData({
+      previewImageUrls,
+      previewCurrent: index,
+      showPreview: true
+    });
+  },
+})
\ No newline at end of file
diff --git a/pages/m_ledger/ledgerupload/ledgerupload.json b/pages/m_ledger/ledgerupload/ledgerupload.json
new file mode 100644
index 0000000..16f6fbb
--- /dev/null
+++ b/pages/m_ledger/ledgerupload/ledgerupload.json
@@ -0,0 +1,10 @@
+{
+  "navigationBarTitleText": "涓婁紶鍙拌处",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {
+    "mp-upload":"/component/uploader/uploader",
+    "c-dialog": "/component/commondialog/commondialog",
+    "mp-gallery": "/component/gallery/gallery"
+  }
+}
\ No newline at end of file
diff --git a/pages/m_ledger/ledgerupload/ledgerupload.wxml b/pages/m_ledger/ledgerupload/ledgerupload.wxml
new file mode 100644
index 0000000..0901cf7
--- /dev/null
+++ b/pages/m_ledger/ledgerupload/ledgerupload.wxml
@@ -0,0 +1,26 @@
+<!--pages/m_ledger/ledgerupload/ledgerupload.wxml-->
+<view class="page">
+  <view class="page__hd">
+    {{ledger.ledgerName}}
+  </view>
+  <view class="page__bd">
+    <textarea disabled="{{remarkDisable}}" value="{{remark}}" class="text-area" name="des" cols="30" rows="10" placeholder="鍙�夊垯杈撳叆鍙拌处澶囨敞"></textarea>
+    <view wx:if="{{!ledger.upLoad}}" class="weui-upload-view">
+      <mp-upload title="涓婁紶鍙拌处鍥剧墖" titleClass="upload-title-class" max-count="6" files="{{imgFiles}}"
+        binduploadImg="uploadFile" binddelete="delImg"></mp-upload>
+    </view>
+    <view wx:else class="img-group">
+      <view wx:for="{{imgFiles}}" wx:key="index">
+        <image class="img-group_img" src="{{item}}" mode="aspectFill" bindtap="previewImage" data-index="{{index}}"></image>
+      </view>
+    </view>
+  </view>
+  <view class="page__ft">
+    <view wx:if="{{!ledger.upLoad}}" class="submit" bindtap="onSubmit">鎻愪氦</view>
+  </view>
+
+  <c-dialog show="{{showDialog}}" yes="纭" bindconfirm="submitLedger">
+    <view>纭鏄惁鎻愪氦鍙拌处锛�</view>
+  </c-dialog>
+  <mp-gallery class="gallery" hide-on-click="{{true}}" show-delete="{{false}}" show="{{showPreview}}" img-urls="{{previewImageUrls}}" current="{{previewCurrent}}"></mp-gallery>
+</view>
\ No newline at end of file
diff --git a/pages/m_ledger/ledgerupload/ledgerupload.wxss b/pages/m_ledger/ledgerupload/ledgerupload.wxss
new file mode 100644
index 0000000..4be33b7
--- /dev/null
+++ b/pages/m_ledger/ledgerupload/ledgerupload.wxss
@@ -0,0 +1,36 @@
+/* pages/m_ledger/ledgerupload/ledgerupload.wxss */
+.page {
+  background-color: white;
+}
+
+.page__hd {
+  font-weight: 600;
+}
+
+.page__bd {
+  padding: 10px;
+}
+
+.upload-title-class {
+  font-size: small;
+}
+
+.text-area {
+  background-color: rgba(255, 255, 255, 0.185);
+  width: 100%;
+}
+
+.img-group {
+  display: flex;
+  flex-wrap: wrap;
+}
+
+.img-group>view {
+  width: 30vw;
+  text-align: center;
+}
+
+.img-group .img-group_img {
+  width: 29vw;
+  height: 29vw;
+}
\ No newline at end of file
diff --git a/pages/m_notice/notice/notice.js b/pages/m_notice/notice/notice.js
new file mode 100644
index 0000000..0944050
--- /dev/null
+++ b/pages/m_notice/notice/notice.js
@@ -0,0 +1,99 @@
+// pages/notice/notice.js
+const notificationservice = require("../../../service/notificationservice")
+const moment = require('../../../utils/moment.min')
+const util = require("../../../utils/util.js")
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    currentTab: 0,
+    tabList: [{
+        "name": "宸ヤ綔閫氱煡"
+      },
+      {
+        "name": "棰勮璀︾ず"
+      },
+      {
+        "name": "绯荤粺閫氱煡"
+      }
+    ],
+    pageList: [
+      [],
+      [],
+      []
+    ]
+  },
+
+  //璁$畻swiper楂樺害鏂规硶锛堝湪鍒囨崲鐨勬椂鍊欒皟鐢級
+  tabsHeight(element) {
+    let that = this;
+    let query = wx.createSelectorQuery(); //蹇呴』瑕佸厛鍒涘缓涓�涓煡璇�
+    query.select(element).boundingClientRect(function (rect) {
+      that.setData({
+        pageheight: rect.height + 'px'
+      });
+    }).exec();
+  },
+  swichNav: function (e) {
+    var that = this;
+    if (this.data.currentTab === e.target.dataset.current) {
+      return false;
+    } else {
+      that.setData({
+        currentTab: e.target.dataset.current,
+        navScrollLeft: e.target.dataset.current >= 4 ? ((e.target.dataset.current) * 60) : 0 //鍒ゆ柇褰撳墠閫変腑鐨勪釜鏁版槸鍚︽槸绗�5涓�
+      })
+      that.tabsHeight('.page'+e.target.dataset.current);	//鏌ヨ鍝竴涓厓绱�
+    }
+  },
+  bindChange: function (e) {
+    var that = this;
+    that.setData({
+      currentTab: e.detail.current,
+      navScrollLeft: e.detail.current >= 4 ? ((e.detail.current) * 60) : 0 //鍒ゆ柇褰撳墠閫変腑鐨勪釜鏁版槸鍚︽槸绗�5涓�
+    });
+    // that.tabsHeight('.page'+e.target.dataset.current);	//鏌ヨ鍝竴涓厓绱�
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad: function (options) {
+    this.tabsHeight('.page0');
+    this.getNotice()
+  },
+
+  onReachBottom () {
+    if (this.cPage && this.tPage) {
+      if (this.cPage < this.tPage) {
+        this.getNotice(this.cPage + 1)
+      }
+    }
+  },
+
+  getNotice(cPage = 1) {
+    var that = this
+    notificationservice.getNotification(app.globalData.accessToken.userId, cPage, {
+      onHead(header) {
+        that.cPage = parseInt(header.currentPage)
+        that.tPage = parseInt(header.totalPage)
+        console.log(`cPage:${that.cPage}, tPage:${that.tPage}`);
+      },
+      success(res) {
+        res.forEach(r => {
+          r.updateTime = util.formatTime(r.updateTime)
+        });
+        let notices = that.data.pageList[0].concat(res)
+        that.setData({
+          ['pageList[0]']: notices
+        })
+
+        that.tabsHeight('.page0');	//鍒锋柊楂樺害
+      }
+    }, 5)
+  },
+})
\ No newline at end of file
diff --git a/pages/m_notice/notice/notice.json b/pages/m_notice/notice/notice.json
new file mode 100644
index 0000000..cc5ffee
--- /dev/null
+++ b/pages/m_notice/notice/notice.json
@@ -0,0 +1,5 @@
+{
+  "navigationBarTitleText": "鏅鸿兘宸ヤ綔鎻愰啋",
+  "navigationBarBackgroundColor": "#EAFFF1",
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/m_notice/notice/notice.wxml b/pages/m_notice/notice/notice.wxml
new file mode 100644
index 0000000..7bb07a2
--- /dev/null
+++ b/pages/m_notice/notice/notice.wxml
@@ -0,0 +1,48 @@
+<!--pages/notice/notice.wxml-->
+<import src="/template/nodata.wxml"></import>
+
+<view class="page">
+  <view class="swiper-tab">
+    <scroll-view scroll-left="{{navScrollLeft}}" scroll-x="true" show-scrollbar="false" scroll-with-animation="true">
+      <block wx:for="{{tabList}}" wx:key="i">
+        <view class="swiper-tab-list {{currentTab==index ? 'on' : ''}}" data-current="{{index}}" bindtap="swichNav">{{item.name}}</view>
+      </block>
+    </scroll-view>
+  </view>
+
+  <swiper current="{{currentTab}}" class="swiper-box" duration="300" bindchange="bindChange" style="height: {{pageheight}};">
+    <block wx:for="{{pageList}}" wx:for-item="page" wx:key="n">
+      <swiper-item>
+        <view class="page{{index}}">
+          <block wx:if="{{page.length > 0}}">
+            <view wx:for="{{page}}" wx:for-item="notice" wx:key="index">
+              <view class="fyui-box  fyui-box__text">
+                <view class="fyui-box__hd">
+                  <image src="/res/icons/notice.png" class=""></image>
+                  <view class="title">
+                    <view>宸ヤ綔閫氱煡</view>
+                    <text>{{notice.updateTime}}</text>
+                  </view>
+                </view>
+                <view class="fyui-box__bd">
+                  <!-- <view class="fyui-box__content tag">鐩稿叧琛屼笟 -> {{item.fileIndustry}}</view> -->
+                  <view class="fyui-box__content des">{{notice.content}}</view>
+                </view>
+                <view class="fyui-box__ft">
+                  <text class="detail">鏌ョ湅璇︽儏 ></text>
+                  <button wx:if="{{notice.needSigned}}" class="sign" size="mini" type="{{notice.hasSigned ? 'default' : 'primary'}}" plain="{{notice.hasSigned}}" loading="">
+                    {{notice.hasSigned ? '宸茬鏀�' : '绛炬敹'}}
+                  </button>
+                </view>
+              </view>
+            </view>
+            <view class="page__ft"></view>
+          </block>
+          <template is="nodataPage" wx:else></template>
+        </view>
+      </swiper-item>
+    </block>
+  </swiper>
+
+
+</view>
\ No newline at end of file
diff --git a/pages/m_notice/notice/notice.wxss b/pages/m_notice/notice/notice.wxss
new file mode 100644
index 0000000..b6f3038
--- /dev/null
+++ b/pages/m_notice/notice/notice.wxss
@@ -0,0 +1,101 @@
+/* pages/notice/notice.wxss */
+.swiper-tab{
+  position: fixed;
+  width: 100%;
+  text-align: center;
+  line-height: 80rpx;
+  white-space: nowrap;
+  z-index: 2;
+  background-color: #EAFFF1;
+}
+
+.swiper-tab-list{
+  font-size: 30rpx;
+  display: inline-block;
+  min-width: 30%;
+  padding: 0 1%;
+  color: black;
+}
+
+.on{ 
+  color: #6BD9B9;
+  font-weight: bold;
+  border-bottom: 4rpx solid #6BD9B9;
+}
+
+.swiper-box{
+  position: absolute;
+  display: block;
+  top: 80rpx;
+  width: 100%;
+  /* margin-top: 10px; */
+  background-color: var(--fyui-BG_1);
+}
+
+.fyui-box {
+  margin-bottom: 16px;
+}
+
+
+.fyui-box .fyui-box__hd {
+  display: flex;
+  align-items: center;
+}
+
+.title {
+  display: flex;
+  width: 100%;
+  justify-content: space-between;
+  align-items: flex-end;
+}
+.title>text {
+  font-size: small;
+  color: var(--fyui-text-color_2);
+}
+
+
+.fyui-box .fyui-box__hd>image {
+  width: 12px;
+  height: 12px;
+  background-color: #4C97F8;
+  padding: 5px;
+  border-radius: 50%;
+}
+
+.fyui-box__ft {
+  /* position: relative; */
+  /* padding: 20px; */
+  margin-top: 40px;
+  align-items: center;
+}
+
+.fyui-box__ft:before{
+  content: " ";
+  width: 100%;
+  height: 1px;
+  background-color: var(--fyui-BG_1);
+  bottom: 50px;
+  position: absolute;
+}
+
+.detail {
+  white-space: nowrap;
+  color: var(--fyui-text-color_1);
+}
+.sign {
+  background-color: red;
+  margin: 0;
+}
+
+.des {
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 4;
+  width: 100%;
+  overflow: hidden;
+  /* text-overflow: ellipsis; */
+}
+
+.page__ft {
+  color: var(--fyui-text-color_2);
+}
\ No newline at end of file
diff --git a/pages/m_promise/promisefile/promisefile.js b/pages/m_promise/promisefile/promisefile.js
new file mode 100644
index 0000000..4b85580
--- /dev/null
+++ b/pages/m_promise/promisefile/promisefile.js
@@ -0,0 +1,147 @@
+// pages/promisefile/promisefile.js
+const promiseservice = require("../../../service/promiseservice")
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    imgFiles: []
+  },
+
+  commitmentVo: {
+    city: '',
+    district: '',
+    department: '',
+    socialCode: '',
+    number: '',
+    juridicalPerson: '',
+    idNo: '',
+    type1: false,
+    type2: false,
+    type3: false,
+    type4: false,
+    year: '',
+    month: '',
+    day: ''
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad: function (options) {
+    var that = this
+    var date = new Date()
+    var year = date.getFullYear()
+    var mon = date.getMonth() + 1
+    var day = date.getDate()
+    this.setData({
+      date: `${year}骞�${mon}鏈�${day}鏃
+    })
+
+    this.getOpenerEventChannel().on('acceptDataFromOpenerPage', function (data) {
+      that.commitmentVo = data
+    })
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady: function () {
+    // this.selectComponent('#sign-dialog').init()
+  },
+
+  startSign() {
+    var that = this
+
+    wx.navigateTo({
+      url: '/pages/m_promise/promisesign/promisesign',
+      events: {
+        onSignSuccess: function (imgPath) {
+          console.log('signover:' + imgPath);
+          that.signOver(imgPath)
+        }
+      },
+    })
+    
+    // wx.getStorage({
+    //   key: 'signPath',
+    //   success: (result) => {
+    //     console.log(result.data);
+    //     that.signOver(result.data)
+    //   },
+    //   fail: (res) => {
+    //     console.log(res);
+    //     wx.navigateTo({
+    //       url: '/pages/promisesign/promisesign',
+    //       events: {
+    //         onSignSuccess: function (imgPath) {
+    //           console.log('signover:' + imgPath);
+    //           that.signOver(imgPath)
+    //         }
+    //       },
+    //     })
+    //   },
+    //   complete: (res) => {},
+    // })
+  },
+
+  signOver(imgPath) {
+    let path = "imgFiles[0]"
+    this.setData({
+      [path]: imgPath
+    })
+  },
+
+  onSubmit: function () {
+    // wx.setStorage({
+    //   key: "promise",
+    //   data: true,
+    // })
+    // wx.navigateTo({
+    //   url: '/pages/promiseresult/promiseresult',
+    // })
+    wx.showLoading({
+      title: '鎵胯涔︾敓鎴愪腑',
+      mask: true,
+      success: (res) => {},
+      fail: (res) => {},
+      complete: (res) => {},
+    })
+    // setTimeout(() => {
+    //   wx.hideLoading()
+    // }, 20000);
+
+    let signPic = this.data.imgFiles[0]
+
+    promiseservice.createCommitment(app.globalData.accessToken.userId, this.commitmentVo, signPic, {
+      success(data) {
+        if (data.success) {
+          wx.navigateTo({
+            url: '/pages/m_promise/promiseresult/promiseresult',
+            success: function (res) {
+              console.log(res);
+              // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+              res.eventChannel.emit('acceptDataFromOpenerPage', {
+                promise: {
+                  picPath: data.data[0],
+                  pdfPath: data.data[1],
+                }
+              })
+            }
+          }) 
+        }
+      },
+      fail(res) {
+      },
+      complete(res) {
+        console.log(res);
+        wx.hideLoading({
+        })
+      }
+    })
+
+  }
+})
\ No newline at end of file
diff --git a/pages/m_promise/promisefile/promisefile.json b/pages/m_promise/promisefile/promisefile.json
new file mode 100644
index 0000000..53e208b
--- /dev/null
+++ b/pages/m_promise/promisefile/promisefile.json
@@ -0,0 +1,10 @@
+{
+  "usingComponents": {
+    "mp-upload":"/component/uploader/uploader",
+    "mp-icon": "/component/icon/icon",
+    "c-dialog": "/component/commondialog/commondialog"
+  },
+  "navigationBarTitleText": "瀹堟硶鎵胯涔�",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/pages/m_promise/promisefile/promisefile.wxml b/pages/m_promise/promisefile/promisefile.wxml
new file mode 100644
index 0000000..4fa31c9
--- /dev/null
+++ b/pages/m_promise/promisefile/promisefile.wxml
@@ -0,0 +1,45 @@
+<!--pages/promisefile/promisefile.wxml-->
+<view class="page">
+  <view class="banner-bg"></view>
+  <view class="page__bd">
+    <view class="fyui-panel">
+      <view class="p-title">瀹堟硶鎵胯涔�</view>
+      <text class="p-content">
+        涓烘帹鍔ㄧ粡娴庣ぞ浼氬彲鎸佺画鍙戝睍锛屼笉鏂敼鍠勫尯鍩熺幆澧冭川閲忥紝鍔姏鍔犲揩鐢熸�佸煄甯傚缓璁炬浼愶紝鏈紒涓氶儜閲嶆壙璇猴細\n
+        涓�銆佺墷鍥烘爲绔嬬幆淇濇剰璇嗐�傛繁鍏ュ紑灞曠幆澧冨浼犳暀鑲诧紝鍊″绉戝鍙戝睍鐞嗗康锛屽姞寮轰紒涓氭枃鍖栧缓璁撅紝鏍戠珛鈥滀繚鎶ょ幆澧冨厜鑽o紝姹℃煋鐜鍙�烩�濇剰璇嗭紝鍧氭寔鍦ㄤ紒涓氬彂灞曚腑鍔犲己鐜淇濇姢锛屽湪淇濇姢鐜涓績杩涗紒涓氬彂灞曘��
+        寮哄寲淇濇姢鐜灏辨槸淇濇姢缇や紬鍋ュ悍鐨勭ぞ浼氳矗浠绘劅锛屽潥鎸佲�滈闃蹭负涓汇�侀槻娌荤粨鍚堚�濇柟閽堬紝鍒囧疄鑲╄礋璧风幆澧冧繚鎶ょ殑绀句細璐d换锛屼績杩涚ぞ浼氥�佺粡娴庡拰鐜鐨勫彲鎸佺画鍙戝睍銆俓n
+        浜屻�佷弗鏍奸伒瀹堢幆淇濇硶瑙勩�傚潥鍐宠疮褰昏惤瀹炵幆澧冧繚鎶ゆ斂绛栨硶瑙勫拰鏍囧噯锛屼弗鏍兼墽琛屾帓姹$敵鎶ュ拰鎺掓薄鏀惰垂绛夊埗搴︼紝鑷閬靛畧寤鸿椤圭洰鐜褰卞搷璇勪环鍜屸�滀笁鍚屾椂鈥濊瀹氾紝涓诲姩鎺ュ彈鐜鐜板満鎵ф硶妫�鏌ュ拰鐩戠潱绠$悊锛�
+        鍋氬埌鏃犵幆澧冩薄鏌撲簨鏁呭彂鐢燂紝纭繚鐜璐ㄩ噺鏀瑰杽銆俓n
+        涓夈�佸垏瀹炲姞寮烘薄鏌撻槻娌汇�傚潥鎸佽蛋绉戞妧鍚噺楂樸�佽祫婧愭秷鑰楀皯銆佺幆澧冩薄鏌撳皯銆佺粡娴庢晥鐩婂ソ鐨勬柊鍨嬪伐涓氬寲閬撹矾銆傚姞寮轰紒涓氳妭鑳藉噺鎺掓姇鍏ュ拰鎶�鏈敼閫犲姏搴︼紝纭繚鑺傝兘鍑忔帓鐩爣鍏ㄩ潰瀹炵幇銆傚姞寮烘薄鏌撴不鐞嗚鏂界殑杩愯绠$悊锛岀‘淇濆簾姘淬�佸簾姘斻�佸櫔澹板拰鍥哄簾杈炬爣鎺掓斁銆備富鍔ㄦ窐姹拌惤鍚庣殑鐢熶骇璁惧鍜屽伐鑹猴紝绉瀬瀹炴柦娓呮磥鐢熶骇锛屽彂灞曞惊鐜粡娴庯紝鎻愰珮璧勬簮鐨勫悎鐞嗗埄鐢ㄧ巼锛屽噺灏戞薄鏌撶墿鐨勬帓鏀俱�傚埗璁㈢瀛﹀彲琛岀殑绐佸彂鐜浜嬩欢搴旀�ラ妗堬紝骞剁粍缁囧簲鎬ユ紨缁冿紝纭繚鐜瀹夊叏銆俓n
+        鍥涖�佽嚜瑙夋帴鍙楃ぞ浼氱洃鐫c�傚姞寮轰紒涓氱幆澧冪鐞嗭紝寮哄寲璇氫俊鎰忚瘑锛屾仾瀹堢幆淇濅俊鐢紝灏嗚瘹淇$悊蹇佃疮绌夸簬浼佷笟鐢熶骇缁忚惀鍏ㄨ繃绋嬶紝鍏ㄥ姏鎵撻�犫�滆祫婧愯妭绾﹀瀷鍜岀幆澧冨弸濂藉瀷鈥濅紒涓氬搧鐗屻�傛墡瀹炴帹杩涗紒涓氱幆澧冧俊鎭叕寮�宸ヤ綔锛屼富鍔ㄥ鐞嗗ソ鍘傜兢鍏崇郴锛岃嚜瑙夌淮鎶ゅソ缇や紬鐨勭幆澧冩潈鐩婏紝鑷鎺ュ彈绀句細鍏紬鍜屾柊闂诲獟浣撶洃鐫c�傝繖鏄垜浠悜绀句細浣滃嚭鐨勫簞涓ユ壙璇猴紝鏁绀句細鍚勭晫浜堜互鐩戠潱銆傛垜浠皢杩涗竴姝ュ姞寮鸿嚜寰嬫剰璇嗭紝瑙嗙幆淇濅负浼佷笟鐢熷懡锛屽仛璇氫俊瀹堟硶浼佷笟銆俓n
+      </text>
+      <view style="text-align: end;">{{date}}</view>
+      <view class="flex-h" style="margin-top: 16px;">
+        <view>
+          <text class="p-sign">娉曚汉绛惧悕锛堝繀濉級</text>
+          <view class="weui-upload-view">
+            <!-- <mp-upload data-type="0" max-count="1" files="{{imgFiles[0]}}" binduploadImg="uploadFile" binddelete="delImg"></mp-upload> -->
+            <view wx:if="{{imgFiles.length == 0}}" class="">
+              <view class="top-right" bindtap="startSign">
+                <view class="sign-btn">
+                  <mp-icon type="field" icon="add" color="gray" size="{{60}}"></mp-icon>
+                </view>
+              </view>
+            </view>
+            <image wx:else class="sign-img" src="{{imgFiles[0]}}" mode="aspectFill" />
+          </view>
+        </view>
+        <view style="display: none;">
+          <text class="p-sign">鍗曚綅绛剧珷锛堥�夊~锛�</text>
+          <view class="weui-upload-view">
+            <mp-upload data-type="1" max-count="1" files="{{imgFiles[1]}}" binduploadImg="uploadFile"
+              binddelete="delImg"></mp-upload>
+          </view>
+        </view>
+      </view>
+    </view>
+  </view>
+  <view class="page__ft">
+    <view class="submit" bindtap="onSubmit">纭鎵胯</view>
+  </view>
+</view>
\ No newline at end of file
diff --git a/pages/m_promise/promisefile/promisefile.wxss b/pages/m_promise/promisefile/promisefile.wxss
new file mode 100644
index 0000000..649c84a
--- /dev/null
+++ b/pages/m_promise/promisefile/promisefile.wxss
@@ -0,0 +1,63 @@
+/* pages/promisefile/promisefile.wxss */
+.page__bd {
+  font-size: 14px;
+}
+
+.banner-bg {
+  position: fixed;
+  width: 100%;
+  height: 5vh;
+  background-color: #57E4CB;
+}
+
+.fyui-panel {
+  padding: 8px;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+}
+
+.p-title {
+  text-align: center;
+  padding-top: 16px;
+  font-size: 20px;
+  font-weight: 600;
+}
+
+.p-content {
+  font-size: 14px;
+}
+
+.p-sign {
+  font-size: 12px;
+  color: var(--fyui-text-color_2);
+}
+
+.submit {
+  border-radius: 4px;
+  background: linear-gradient(to right, #6DF1A9, #62EBCF);
+  margin: 8px;
+  color: white;
+  padding: 8px;
+}
+
+.sign-btn {
+  width: 96px;
+  height: 96px;
+  text-align: center;
+}
+
+.sign-img {
+  float: left;
+  margin-right: 8px;
+  margin-bottom: 8px;
+  width: 96px;
+  height: 96px;
+  background: no-repeat 50%;
+  background-size: cover
+}
+
+.top-right {
+  margin-top: 6px;
+  margin-right: 6px;
+}
\ No newline at end of file
diff --git a/pages/m_promise/promisehome/promise.js b/pages/m_promise/promisehome/promise.js
new file mode 100644
index 0000000..b230b86
--- /dev/null
+++ b/pages/m_promise/promisehome/promise.js
@@ -0,0 +1,160 @@
+// pages/promise/promise.js
+const moment = require('../../../utils/moment.min')
+const promiseservice = require("../../../service/promiseservice")
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    text1: "宸插紑鍚�!璇峰強鏃跺畬鎴愭壙璇�",
+    text3: "鍘绘壙璇�",
+    status: 0,
+
+    promise: [{
+      period: '鎵胯鍛ㄦ湡锛�2021骞�1鏈垀2021骞�12鏈�',
+      time: '2021骞�1鏈�6鏃ュ畬鎴�',
+      picPath: [],
+      pdfPath: ''
+    }],
+    deadline: "鎵胯鎴鏃堕棿锛�----骞�--鏈�--鏃�",
+  },
+
+  promiseHistory: [],
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad: function (options) {
+    this._initPlanYear()
+    // this.getCommitment()
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず
+   */
+  onShow: function () {
+    console.log("promise: onshow");
+    this.getCommitment()
+  },
+
+  /**
+   * 鍒濆鍖栧勾浠�
+   */
+  _initPlanYear() {
+    var now = moment()
+    var year = now.year()
+    var period = `${now.year()}/${now.month()+1}-${now.month()+1}`
+    var deadline = now.endOf('year').format("YYYY骞碝M鏈圖D鏃�")
+    this.setData({
+      year: year,
+      deadline: `鎵胯鎴鏃堕棿锛�${deadline}`
+    })
+  },
+
+  /**
+   * 鍒ゆ柇褰撳墠鍛ㄦ湡鍐呯殑鎵胯鏄惁瀹屾垚
+   */
+  checkStatus() {
+    if (this.promiseHistory.length > 0) {
+      var first = this.promiseHistory[0]
+      var cTime = moment(first.cmCreateTime)
+      let leftDays = cTime.add(1, 'years').diff(moment(), 'days')
+      // that.setData({
+      //   promsieInfo: {
+      //     leftDays: leftDays
+      //   }
+      // })
+      if (leftDays > 0) {
+        var deadline = cTime.format("YYYY-MM-DD")
+        this.setData({
+          text1: "鏈鎵胯宸插畬鎴�",
+          text3: "鏌ョ湅鎵胯",
+          status: 1,
+          deadline: `鎵胯鏈夋晥鏃堕棿锛氬墿浣�${leftDays}澶ー
+        })
+      } else {
+        this.setData({
+          text1: "璇峰強鏃跺畬鎴愭壙璇�",
+          text3: "鍘绘壙璇�",
+          status: 0,
+        })
+        this._initPlanYear()
+      }
+    }
+  },
+
+  /**
+   * 鑾峰彇鍘嗗彶璁板綍
+   */
+  getCommitment() {
+    var that = this
+    promiseservice.getCommitment(app.globalData.accessToken.userId, {
+      success(data) {
+        that.promiseHistory = data
+        let promise = []
+        data.forEach(d => {
+          const time = moment(d.cmCreateTime)
+          promise.push({
+            period: `鎵胯鍛ㄦ湡锛�${time.year()}骞�1鏈垀${time.year()}骞�12鏈坄,
+            time: `${time.format('YYYY骞碝M鏈圖D鏃�')}瀹屾垚`,
+            picPath: d.cmUrl,
+            pdfPath: d.cmPdfUrl
+          })
+        });
+        that.setData({
+          promise
+        })
+
+        that.checkStatus()
+      }
+    })
+  },
+
+  /**
+   * 璺宠浆鑷冲幓鎵胯
+   */
+  gotoPromise(e) {
+    var status = e.currentTarget.dataset.status
+    if (status == 0) {
+      wx.navigateTo({
+        url: '/pages/m_promise/promiseinfo/promiseinfo'
+      })
+    } else {
+      this.gotoResult(0)
+    }
+  },
+
+  /**
+   * 璺宠浆鑷虫壙璇鸿鎯�
+   */
+  gotoDetail(e) {
+    var i = e.currentTarget.dataset.index
+    this.gotoResult(i)
+  },
+
+  gotoResult(i) {
+    var p = this.data.promise[i]
+    wx.navigateTo({
+      url: '/pages/m_promise/promiseresult/promiseresult',
+      success: function (res) {
+        // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+        res.eventChannel.emit('acceptDataFromOpenerPage', {
+          promise: {
+            picPath: p.picPath,
+            pdfPath: p.pdfPath
+          }
+        })
+      }
+    })
+  },
+
+  /**
+   * 璺宠浆鑷冲巻鍙茶褰�
+   */
+  gotoHistory() {
+
+  }
+})
\ No newline at end of file
diff --git a/pages/m_promise/promisehome/promise.json b/pages/m_promise/promisehome/promise.json
new file mode 100644
index 0000000..7880e90
--- /dev/null
+++ b/pages/m_promise/promisehome/promise.json
@@ -0,0 +1,5 @@
+{
+  "usingComponents": {},
+  "navigationBarTitleText": "瀹堟硶鎵胯",
+  "navigationBarBackgroundColor": "#57E4CB"
+}
\ No newline at end of file
diff --git a/pages/m_promise/promisehome/promise.wxml b/pages/m_promise/promisehome/promise.wxml
new file mode 100644
index 0000000..36f5bb0
--- /dev/null
+++ b/pages/m_promise/promisehome/promise.wxml
@@ -0,0 +1,30 @@
+<!--pages/promise/promise.wxml-->
+<view class="page">
+  <!-- <view class="banner-bg"></view> -->
+
+  <view class="page__hd">
+    <view>
+      <view class="title">{{text1}}</view>
+      <view class="tag">{{deadline}}</view>
+      <view class="btn" bindtap="gotoPromise" data-status="{{status}}">{{text3}}</view>
+    </view>
+    <view wx:if="{{status == 1}}" bindtap="gotoPromise" data-status="{{status}}">
+      <image class="file" src="{{promise[0].picPath[0]}}" mode="aspectFit"></image>
+      <view class="tag">{{promise[0].time}}</view>
+    </view>
+  </view>
+  <view class="page__bd">
+    <view class="fyui-cell fyui-cell_select title">
+      <view class="fyui-cell__bd">鍘嗗彶鎵胯</view>
+      <view class="fyui-cell__ft">鏌ョ湅鏇村</view>
+    </view>
+    <view wx:for="{{promise}}" wx:key="index">
+      <view class="p-cell fyui-panel">
+        <view class="p-title">| 瀹堟硶鎵胯</view>
+        <view class="p-content">{{item.period}}</view>
+        <view class="p-tag">{{item.time}}</view>
+        <view class="p-btn" bindtap="gotoDetail" data-index="{{index}}">鍘荤湅鐪�</view>
+      </view>
+    </view>
+  </view>
+</view>
\ No newline at end of file
diff --git a/pages/m_promise/promisehome/promise.wxss b/pages/m_promise/promisehome/promise.wxss
new file mode 100644
index 0000000..cc528fb
--- /dev/null
+++ b/pages/m_promise/promisehome/promise.wxss
@@ -0,0 +1,77 @@
+/* pages/promise/promise.wxss */
+.banner-bg {
+  position: fixed;
+  width: 100%;
+  height: 50vh;
+  background: linear-gradient(to bottom, #57E4CB, #bbf3eb);
+}
+.page__hd {
+  background: linear-gradient(to bottom, #57E4CB, #bbf3eb);
+  height: 30vh;
+  display: flex;
+  justify-content: space-between;
+}
+
+.page__hd .title {
+  font-size: 20px;
+  font-weight: 600;
+  margin-top: 8px;
+}
+
+.page__hd .tag {
+  font-size: 12px;
+  color: #55A37D;
+  margin-top: 8px;
+  /* background-color: red; */
+  text-align: end;
+}
+
+.page__hd .btn {
+  border-radius: 20px;
+  line-height: 20px;
+  background: linear-gradient(to right, #6EF0A5, #62EAD2);
+  padding: 8px 4px;
+  text-align: center;
+  color: white;
+  width: 30vw;
+  margin-top: 50px;
+}
+
+.page__hd .file {
+  width: 40vw;
+  height: 25vh;
+}
+
+.p-cell{
+  position: relative;
+  padding: 8px;
+}
+
+.p-title{
+  font-weight: 600;
+  font-size: 14px;
+  color: #5CE395;
+}
+
+.p-content{
+  margin-top: 16px;
+  margin-bottom: 16px;
+  font-size: 16px;
+  font-weight: 600;
+}
+
+.p-tag{
+  color: var(--fyui-text-color_3);
+  font-size: 10px;
+}
+
+.p-btn{
+  position: absolute;
+  top: 0;
+  right: 0;
+  border-radius: 4px;
+  background: linear-gradient(to right, #6EF0A5, #62EAD2);
+  padding: 4px 16px;
+  color: white;
+  font-size: 14px;
+}
\ No newline at end of file
diff --git a/pages/m_promise/promiseinfo/promiseinfo.js b/pages/m_promise/promiseinfo/promiseinfo.js
new file mode 100644
index 0000000..113a3ee
--- /dev/null
+++ b/pages/m_promise/promiseinfo/promiseinfo.js
@@ -0,0 +1,270 @@
+// pages/promiseinfo/promiseinfo.js
+const userservice = require("../../../service/userservice")
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    sceneTypeMap: {
+      '1': '椁愰ギ',
+      '2': '宸ュ湴',
+      '3': '鐮佸ご',
+      '4': '鍫嗗満',
+      '5': '鎼呮媽绔�',
+      '6': '宸ヤ笟浼佷笟',
+      '7': '姹戒慨',
+    },
+    sceneType: '--',
+
+    msg: [{
+        name: "鍗曚綅鍚嶇О",
+        id: "department",
+        input: true,
+        value: "",
+        noValue: false
+      },
+      {
+        name: "淇$敤浠g爜",
+        id: "socialCode",
+        input: true,
+        value: "",
+        noValue: false
+      },
+      {
+        name: "鎶ュ缓鍙�",
+        id: "number",
+        input: true,
+        value: "",
+        noValue: false,
+        required: false
+      },
+      {
+        name: "娉曚汉濮撳悕",
+        id: "juridicalPerson",
+        input: true,
+        value: '',
+        noValue: false
+      },
+      {
+        name: "韬唤璇佸彿",
+        id: "idNo",
+        input: true,
+        value: "",
+        noValue: false,
+        maxLength: 18
+      },
+    ],
+
+    commitTypes: [{
+        value: 'type1',
+        name: '鐜繚涓讳綋璐d换鎵胯',
+        checked: true
+      },
+      {
+        value: 'type2',
+        name: '鐜琛屾斂璁稿彲浜嬮」',
+        checked: false
+      },
+      {
+        value: 'type3',
+        name: '鐜繚涓撻」璧勯噾鎴栧叾浠栬祫閲戣ˉ鍔�',
+        checked: false
+      },
+      {
+        value: 'type4',
+        name: '鍏朵粬鐜繚鐢虫姤浜嬮」',
+        checked: false
+      }
+    ],
+    commitTypeIndex: 0,
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad: function (options) {
+    let st = this.data.sceneTypeMap[app.globalData.userInfo.extension2]
+    switch (st) {
+      case '2':
+      case '3':
+      case '4':
+      case '5':
+      case '6':
+        this.setData({
+          'msg[2].name': '鎶ュ缓鍙�'
+        })
+        break;
+
+      case '1':
+      case '7':
+        this.setData({
+          'msg[2].name': '鐜瘎瀹℃壒鏂囧彿'
+        })
+        break;
+      default:
+        this.setData({
+          'msg[2].name': '鐜瘎瀹℃壒鏂囧彿'
+        })
+        break;
+    }
+    this.setData({
+      sceneType: st
+    })
+    this.getUserBaseInfo()
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady: function () {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず
+   */
+  onShow: function () {
+
+  },
+
+  changeMsg(e) {
+    let id = e.detail.params.id
+    let value = e.detail.params.value
+    let msg = this.data.msg
+    let msgLength = msg.length
+    for (let i = 0; i < msgLength; i++) {
+      if (msg[i].id === id) {
+        let path = "msg[" + i + "].value"
+        let nPath = "msg[" + i + "].noValue"
+        this.setData({
+          [path]: value,
+          [nPath]: false
+        })
+      }
+    }
+  },
+
+  checkboxChange(e) {
+    console.log('checkbox鍙戠敓change浜嬩欢锛屾惡甯alue鍊间负锛�', e.detail.value)
+
+    const items = this.data.commitTypes
+    const values = e.detail.value
+    for (let i = 0, lenI = items.length; i < lenI; ++i) {
+      items[i].checked = false
+
+      for (let j = 0, lenJ = values.length; j < lenJ; ++j) {
+        if (items[i].value === values[j]) {
+          items[i].checked = true
+          break
+        }
+      }
+    }
+
+    this.setData({
+      commitTypes: items
+    })
+    // console.log(this.data.commitTypes);
+  },
+
+  getUserBaseInfo() {
+    var that = this
+    userservice.getBaseInfo(app.globalData.accessToken.userId, {
+      success(data) {
+        const msg = that.data.msg
+        msg[0].value = data.company.ciName
+        msg[1].value = data.company.ciOrgCode
+        msg[3].value = data.company.ciJuridicalPerson
+        that.setData({
+          msg
+        })
+      }
+    })
+  },
+
+  onSubmit: function () {
+    if (!this.submitCheck()) return
+
+    var _data = this.data
+    wx.navigateTo({
+      url: '/pages/m_promise/promisefile/promisefile',
+      success: function (res) {
+        // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+        res.eventChannel.emit('acceptDataFromOpenerPage', {
+          city: '',
+          district: '',
+          department: _data.msg[0].value,
+          socialCode: _data.msg[1].value,
+          number: _data.msg[2].value,
+          juridicalPerson: _data.msg[3].value,
+          idNo: _data.msg[4].value,
+          type1: _data.commitTypes[0].checked,
+          type2: _data.commitTypes[1].checked,
+          type3: _data.commitTypes[2].checked,
+          type4: _data.commitTypes[3].checked,
+          year: '',
+          month: '',
+          day: ''
+        })
+      }
+    })
+  },
+
+  /**
+   * 淇℃伅瀹屾暣搴︽鏌�
+   */
+  submitCheck() {
+    let msg = this.data.msg
+    let msgLength = msg.length
+    //纭淇℃伅瀹屾暣搴�
+    for (let i = 0; i < msgLength; i++) {
+      if (msg[i].required != false && msg[i].value === "") {
+        let error = msg[i].name + "涓嶅彲涓虹┖"
+        let path = "msg[" + i + "].noValue"
+        this.setData({
+          errorMsg: error,
+          [path]: true
+        })
+
+        wx.pageScrollTo({
+          duration: 300,
+          scrollTop: 0,
+          // selector:"#" + msg[i].id,
+        })
+        return false
+      }
+
+      //韬唤璇佷綅鏁板垽鏂�
+      if (i == 4) {
+        if (msg[i].value.length < msg[i].maxLength) {
+          let error = msg[i].name + "浣嶆暟閿欒"
+          let path = "msg[" + i + "].noValue"
+          this.setData({
+            errorMsg: error,
+            [path]: true
+          })
+
+          return false
+        }
+      }
+    }
+
+    var cList = []
+    for (let i = 0; i < this.data.commitTypes.length; i++) {
+      const t = this.data.commitTypes[i];
+      if (t.checked) {
+        cList.push(t)
+      }
+    }
+    if (cList.length == 0) {
+      this.setData({
+        errorMsg: '鑷冲皯閫夋嫨涓�椤规壙璇虹被鍨�',
+      })
+      return false
+    }
+
+    return true
+  }
+})
\ No newline at end of file
diff --git a/pages/m_promise/promiseinfo/promiseinfo.json b/pages/m_promise/promiseinfo/promiseinfo.json
new file mode 100644
index 0000000..726e6ed
--- /dev/null
+++ b/pages/m_promise/promiseinfo/promiseinfo.json
@@ -0,0 +1,11 @@
+{
+  "usingComponents": {
+    "mp-cells":"/component/cells/cells",
+    "mp-cell":"/component/cell/cell",
+    "input-cell":"/component/inputcell/inputcell",
+    "mp-toptips":"/component/toptips/toptips"
+  },
+  "navigationBarTitleText": "瀹堟硶鎵胯",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/pages/m_promise/promiseinfo/promiseinfo.wxml b/pages/m_promise/promiseinfo/promiseinfo.wxml
new file mode 100644
index 0000000..65543c5
--- /dev/null
+++ b/pages/m_promise/promiseinfo/promiseinfo.wxml
@@ -0,0 +1,34 @@
+<!--pages/promiseinfo/promiseinfo.wxml-->
+<view class="page">
+  <mp-toptips type="error" msg="{{errorMsg}}" show="{{errorMsg}}" delay="2000"></mp-toptips>
+  
+  <view class="banner-bg"></view>
+  <view class="page__bd">
+    <view class="fyui-panel">
+      <view class="flex-h">
+        <view>浼佷笟绫诲瀷</view>
+        <view class="content">{{sceneType}}</view>
+      </view>
+      <mp-cells>
+        <input-cell wx:for="{{msg}}" wx:key="id" item="{{item}}" bindpassValue="changeMsg"></input-cell>
+      </mp-cells>
+
+      <view class="flex-h">
+        <view>浼佷笟鎵胯绫诲瀷</view>
+      </view>
+      <view class="last">
+        <checkbox-group bindchange="checkboxChange">
+          <label wx:for="{{commitTypes}}" wx:key="value" class="weui-cell weui-check__label">
+            <view class="weui-cell__hd">
+              <checkbox value="{{item.value}}" checked="{{item.checked}}"></checkbox>
+            </view>
+            <view class="weui-cell__bd">{{item.name}}</view>
+          </label>
+        </checkbox-group>
+      </view>
+    </view>
+  </view>
+  <view class="page__ft">
+    <view class="submit" bindtap="onSubmit">鐢熸垚鎵胯</view>
+  </view>
+</view>
\ No newline at end of file
diff --git a/pages/m_promise/promiseinfo/promiseinfo.wxss b/pages/m_promise/promiseinfo/promiseinfo.wxss
new file mode 100644
index 0000000..03ddef0
--- /dev/null
+++ b/pages/m_promise/promiseinfo/promiseinfo.wxss
@@ -0,0 +1,68 @@
+/* pages/promiseinfo/promiseinfo.wxss */
+.page__bd {
+  font-size: 16px;
+}
+.banner-bg {
+  position: fixed;
+  width: 100%;
+  height: 5vh;
+  background-color: #57E4CB;
+}
+
+.fyui-panel {
+  padding: 8px;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+}
+
+.fyui-panel .flex-h {
+  margin: 10px 0;
+}
+
+.fyui-panel .first {
+  border-top: 1px rgba(214, 214, 214, 0.308) solid;
+}
+
+.fyui-panel .last {
+  border-bottom: 0px rgba(214, 214, 214, 0.308) solid;
+}
+
+.submit {
+  border-radius: 4px;
+  background: linear-gradient(to right, #6DF1A9, #62EBCF);
+  margin: 8px;
+  color: white;
+  padding: 8px;
+}
+.content {
+  padding-right: 14px;
+  color: var(--fyui-text-color_2);
+}
+/* .content:after {
+  content: " ";
+  width: 12px;
+  height: 24px;
+  -webkit-mask-position: 0 0;
+  mask-position: 0 0;
+  -webkit-mask-repeat: no-repeat;
+  mask-repeat: no-repeat;
+  -webkit-mask-size: 100%;
+  mask-size: 100%;
+  background-color: currentColor;
+  color: var(--fyui-text-color_2);
+  -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);
+  mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);
+  position: absolute;
+  top: 50%;
+  right: 0px;
+  margin-top: -12px
+} */
+
+.check-item {
+  display: flex;
+}
+
+.weui-cell {
+  padding: 10px 16px;
+}
\ No newline at end of file
diff --git a/pages/m_promise/promiseresult/promiseresult.js b/pages/m_promise/promiseresult/promiseresult.js
new file mode 100644
index 0000000..567fb32
--- /dev/null
+++ b/pages/m_promise/promiseresult/promiseresult.js
@@ -0,0 +1,44 @@
+// pages/promiseresult/promiseresult.js
+const $f = require("../../../service/baserequest")
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    promise: {
+      picPath: [],
+      pdfPath: '',
+    }
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad: function (options) {
+    var that = this
+    this.getOpenerEventChannel().on('acceptDataFromOpenerPage', function (data) {
+      console.log(data);
+      // data.promise.picPath = $f.basePicUrl + data.promise.picPath
+      // data.promise.pdfPath = $f.basePicUrl + data.promise.pdfPath
+      that.setData({
+        promise: data.promise
+      })
+    })
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇
+   */
+  onUnload: function () {
+    var pages = getCurrentPages()
+    var d = pages.length - 1
+    wx.navigateBack({
+      delta: d,
+      success: (res) => {},
+      fail: (res) => {},
+      complete: (res) => {},
+    })
+  },
+})
\ No newline at end of file
diff --git a/pages/m_promise/promiseresult/promiseresult.json b/pages/m_promise/promiseresult/promiseresult.json
new file mode 100644
index 0000000..5b9bcfc
--- /dev/null
+++ b/pages/m_promise/promiseresult/promiseresult.json
@@ -0,0 +1,6 @@
+{
+  "navigationBarTitleText": "鎵胯涔�",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white",
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/m_promise/promiseresult/promiseresult.wxml b/pages/m_promise/promiseresult/promiseresult.wxml
new file mode 100644
index 0000000..7da1965
--- /dev/null
+++ b/pages/m_promise/promiseresult/promiseresult.wxml
@@ -0,0 +1,5 @@
+<!--pages/promiseresult/promiseresult.wxml-->
+<view class="">
+<image wx:for="{{promise.picPath}}" src="{{item}}" class="image" 	show-menu-by-longpress="true" mode="widthFix"></image>
+<!-- <image src="https://fyami.com.cn:447/images/commitment-restaurant-1659927781518.jpg" class="image" 	show-menu-by-longpress="true" mode="widthFix"></image> -->
+</view>
diff --git a/pages/m_promise/promiseresult/promiseresult.wxss b/pages/m_promise/promiseresult/promiseresult.wxss
new file mode 100644
index 0000000..22c1d30
--- /dev/null
+++ b/pages/m_promise/promiseresult/promiseresult.wxss
@@ -0,0 +1,5 @@
+/* pages/promiseresult/promiseresult.wxss */
+image {
+  width: 100%;
+  height: 100vh;
+}
\ No newline at end of file
diff --git a/pages/m_promise/promisesign/promisesign.js b/pages/m_promise/promisesign/promisesign.js
new file mode 100644
index 0000000..17c7c09
--- /dev/null
+++ b/pages/m_promise/promisesign/promisesign.js
@@ -0,0 +1,205 @@
+// pages/promisesign/promisesign.js
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    isDrawed: false,
+
+    width: '1px',
+    height: '1px'
+  },
+
+  //鍐冲畾鏄惁缁樺埗鐨勬渶灏忓儚绱犺窛绂�
+  TOUCH_TOLERANCE: 4,
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad: function (options) {
+    
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady: function () {
+    this.init()
+  },
+
+  init: function () {
+    wx.createSelectorQuery().in(this)
+      .select('.sign-canvas')
+      .fields({
+        node: true,
+        size: true
+      })
+      .exec((res) => {
+        //Canvas 瀵硅薄
+        const canvas = res[0].node
+        //娓叉煋涓婁笅鏂�
+        const ctx = canvas.getContext('2d')
+
+        //Canvas鐢诲竷鐨勫疄闄呯粯鍒堕珮搴�
+        this.width = res[0].width
+        this.height = res[0].height
+
+        //鍒濆鍖栫敾甯冨ぇ灏�
+        const dpr = wx.getWindowInfo().pixelRatio
+        canvas.width = this.width * dpr
+        canvas.height = this.height * dpr
+        ctx.scale(dpr, dpr)
+
+        this.canvas = canvas
+        this.ctx = ctx
+      })
+  },
+  touchStart(e) {
+    if (this.canvas && e.touches.length > 0) {
+      var t = e.touches[0];
+      this.ctx.moveTo(t.x, t.y)
+      this.tempX = t.x
+      this.tempY = t.y
+    }
+  },
+  touchMove(e) {
+    if (this.canvas && e.touches.length > 0) {
+      var t = e.touches[0];
+      var dx = Math.abs(t.x - this.tempX)
+      var dy = Math.abs(t.y - this.tempY)
+      if (dx >= this.TOUCH_TOLERANCE || dy >= this.TOUCH_TOLERANCE) {
+        this.ctx.lineTo(t.x, t.y)
+        this.ctx.stroke()
+        this.tempX = t.x
+        this.tempY = t.y
+      }
+    }
+  },
+  touchEnd(e) {
+    if (this.canvas && e.touches.length > 0) {
+      var t = e.touches[0];
+      this.ctx.lineTo(t.x, t.y)
+      this.ctx.stroke()
+    }
+    this.setData({
+      isDrawed: true
+    })
+  },
+
+  onCancel() {
+    wx.navigateBack({
+      success: (res) => {},
+      fail: (res) => {},
+      complete: (res) => {},
+    })
+  },
+  onSubmit() {
+    if (!this.data.isDrawed) {
+      wx.showToast({
+        title: '璇峰厛鍦ㄧ鍚嶅尯鍩熺鍚�',
+        duration: 2000,
+        icon: 'none',
+        mask: true,
+      })
+      return
+    }
+    wx.showLoading({
+      title: '绛惧悕鍥剧墖澶勭悊涓�',
+      mask: true,
+      success: (res) => {},
+      fail: (res) => {},
+      complete: (res) => {},
+    })
+    setTimeout(() => {
+      wx.hideLoading()
+    }, 10000);
+    var that = this
+    this.rotate(function (rotateCanvas){
+      wx.canvasToTempFilePath({
+        canvas: rotateCanvas,
+        success(res) {
+          let imgPath = res.tempFilePath
+          wx.setStorage({
+            data: imgPath,
+            key: 'signPath',
+            success(){
+              console.log('sign-success:' + imgPath);
+              wx.hideLoading({
+                success: (res) => {
+                  wx.showToast({
+                    title: '绛惧悕鐢熸垚鎴愬姛',
+                    duration: 1500,
+                    icon: 'success',
+                  })
+                  that.getOpenerEventChannel().emit('onSignSuccess', imgPath)
+                  wx.navigateBack()
+                },
+              })
+            }
+          })
+        },
+        fail(err) {
+          console.log(err)
+          wx.hideLoading({
+            success: (res) => {
+              wx.showToast({
+                title: '绛惧悕鍥剧墖瀵煎嚭寮傚父锛岃閲嶈瘯',
+                duration: 1500,
+                icon: 'error',
+              })
+            },
+          })
+        },
+      })
+    })
+  },
+  //鏃嬭浆鍥剧墖锛岀敓鎴愭柊canvas瀹炰緥
+  rotate(cb) {
+    const that = this;
+    wx.createSelectorQuery().select('#handWriting2')
+      .fields({
+        node: true,
+        size: true
+      })
+      .exec((res) => {
+        const rotateCanvas = res[0].node;
+        const rotateCtx = rotateCanvas.getContext('2d');
+        //this.ctxW-->鎵�缁樺埗canvas鐨剋idth
+        //this.ctxH -->鎵�缁樺埗canvas鐨刪eight
+        rotateCanvas.width = that.canvas.height;
+        rotateCanvas.height = that.canvas.width;
+        that.setData({
+          width: rotateCanvas.width,
+          height: rotateCanvas.height,
+        })
+        wx.canvasToTempFilePath({
+          canvas: that.canvas,
+          success(res) {
+            that.tempFilePath = res.tempFilePath;
+            const img = rotateCanvas.createImage();
+            img.src = res.tempFilePath;
+            img.onload = function () {
+              rotateCtx.translate(rotateCanvas.width / 2, rotateCanvas.height / 2);
+              rotateCtx.rotate(270 * Math.PI / 180);
+              rotateCtx.drawImage(img, -rotateCanvas.height / 2, -rotateCanvas.width / 2);
+              // rotateCtx.scale(that.pixelRatio, that.pixelRatio);
+              cb(rotateCanvas);
+            };
+          },
+          fail(err) {
+            console.log(err)
+            wx.hideLoading({
+              success: (res) => {
+                wx.showToast({
+                  title: '绛惧悕鍥剧墖澶勭悊寮傚父锛岃閲嶈瘯',
+                  duration: 1500,
+                  icon: 'error',
+                })
+              },
+            })
+          }
+        })
+      })
+  }
+})
\ No newline at end of file
diff --git a/pages/m_promise/promisesign/promisesign.json b/pages/m_promise/promisesign/promisesign.json
new file mode 100644
index 0000000..7a92666
--- /dev/null
+++ b/pages/m_promise/promisesign/promisesign.json
@@ -0,0 +1,6 @@
+{
+  "usingComponents": {},
+  "navigationBarTitleText": "绛惧悕",
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/pages/m_promise/promisesign/promisesign.wxml b/pages/m_promise/promisesign/promisesign.wxml
new file mode 100644
index 0000000..4363b53
--- /dev/null
+++ b/pages/m_promise/promisesign/promisesign.wxml
@@ -0,0 +1,13 @@
+<!--pages/test2/test2.wxml-->
+<view class="page">
+        <view class="canvas">
+                <canvas id="signCanvas" type="2d" class="sign-canvas" bindtouchstart="touchStart"
+                        bindtouchmove="touchMove" bindtouchend="touchEnd" disable-scroll="true"></canvas>
+                <view class="tips">璇锋棆杞睆骞曡嚦姝ゆ柟鍚戠鍚�</view>
+        </view>
+        <view class="btn-group">
+                <view class="cancel" bindtap="onCancel">鍙栨秷</view>
+                <view class="submit" bindtap="onSubmit">纭</view>
+        </view>
+        <canvas id="handWriting2" type="2d" style="position: absolute; z-index: -1; width:{{width}};height:{{height}};"></canvas>
+</view>
\ No newline at end of file
diff --git a/pages/m_promise/promisesign/promisesign.wxss b/pages/m_promise/promisesign/promisesign.wxss
new file mode 100644
index 0000000..f2b5db8
--- /dev/null
+++ b/pages/m_promise/promisesign/promisesign.wxss
@@ -0,0 +1,53 @@
+/* pages/test2/test2.wxss */
+.page {
+  overflow: hidden;
+}
+
+.canvas {
+  display: flex;
+  margin-top: 4px;
+}
+
+.sign-canvas {
+  border: 1px solid;
+  width: 80%;
+  height: 80vh;
+  margin: auto;
+}
+
+
+
+.submit {
+  border-radius: 4px;
+  background: linear-gradient(to right, #6DF1A9, #62EBCF);
+  margin: 8px;
+  color: white;
+  padding: 8px;
+  text-align: center;
+  flex: 1;
+}
+
+.cancel {
+  border-radius: 4px;
+  background-color: rgb(189, 188, 188);
+  margin: 8px;
+  color: white;
+  padding: 8px;
+  text-align: center;
+  flex: 1;
+}
+
+.tips {
+  /* background-color: cornsilk; */
+  transform: rotateZ(90deg);
+  width: 40px;
+  font-size: 16px;
+  height: 22px;
+  margin-top: 180px;
+  white-space: nowrap;
+}
+
+.btn-group {
+  display: flex;
+
+}
\ No newline at end of file
diff --git a/pages/m_service/p_servicehome/servicehome.js b/pages/m_service/p_servicehome/servicehome.js
new file mode 100644
index 0000000..4a21e96
--- /dev/null
+++ b/pages/m_service/p_servicehome/servicehome.js
@@ -0,0 +1,66 @@
+// pages/m_service/p_servicehome/servicehome.js
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず
+   */
+  onShow() {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌
+   */
+  onHide() {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇
+   */
+  onUnload() {
+
+  },
+
+  /**
+   * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔
+   */
+  onPullDownRefresh() {
+
+  },
+
+  /**
+   * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁�
+   */
+  onReachBottom() {
+
+  },
+
+  /**
+   * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜�
+   */
+  onShareAppMessage() {
+
+  }
+})
\ No newline at end of file
diff --git a/pages/m_service/p_servicehome/servicehome.json b/pages/m_service/p_servicehome/servicehome.json
new file mode 100644
index 0000000..8835af0
--- /dev/null
+++ b/pages/m_service/p_servicehome/servicehome.json
@@ -0,0 +1,3 @@
+{
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/m_service/p_servicehome/servicehome.wxml b/pages/m_service/p_servicehome/servicehome.wxml
new file mode 100644
index 0000000..564e5c1
--- /dev/null
+++ b/pages/m_service/p_servicehome/servicehome.wxml
@@ -0,0 +1,25 @@
+<!--pages/m_service/p_servicehome/servicehome.wxml-->
+<include src="/pages/home/home"/>
+<view class="page">
+  <view class="page__hd flex-h">
+    <view class="image-btn" bindtap="goto" data-index="2">
+      <image src="/res/icons/btn_bg_2.png" class="" />
+      <text class="image-btn_title">鏅鸿兘鍦ㄧ嚎鍜ㄨ</text>
+      <text class="image-btn_abstract">鍦ㄧ嚎鏅鸿兘鍜ㄨ鏈嶅姟</text>
+      <view class="image-btn_goto"></view>
+    </view>
+    <view class="image-btn" bindtap="goto" data-index="3">
+      <image src="/res/icons/btn_bg_1.png" class="" />
+      <text class="image-btn_title">鍦ㄧ嚎瀹堟硶瀛︿範</text>
+      <text class="image-btn_abstract">瀹炴椂鍦ㄧ嚎瀛︿範鏈嶅姟</text>
+      <view class="image-btn_goto"></view>
+    </view>
+  </view>
+  <view class="page__bd">
+    <view class="fyui-panel">
+      <view>涓撳睘娉曞姟鏈嶅姟</view>
+      <view></view>
+    </view>
+  </view>
+  <view class="page__ft"></view>
+</view>
\ No newline at end of file
diff --git a/pages/m_service/p_servicehome/servicehome.wxss b/pages/m_service/p_servicehome/servicehome.wxss
new file mode 100644
index 0000000..61de52c
--- /dev/null
+++ b/pages/m_service/p_servicehome/servicehome.wxss
@@ -0,0 +1,39 @@
+/* pages/m_service/p_servicehome/servicehome.wxss */
+.image-btn {
+  position: relative;
+}
+
+.image-btn>image {
+  width: 46vw;
+  height: 90px;
+}
+
+.image-btn .image-btn_title {
+  position: absolute;
+  left: 8px;
+  top: 4px;
+  color: white;
+  font-size: 15px;
+}
+
+.image-btn .image-btn_abstract {
+  position: absolute;
+  left: 8px;
+  top: 28px;
+  color: white;
+  font-size: 10px;
+}
+
+.image-btn .image-btn_goto {
+  position: absolute;
+  left: 8px;
+  top: 48px;
+  width: 24px;
+  height: 24px;
+  background-color: white;
+  text-align: center;
+  border-radius: 50%;
+  background-repeat: no-repeat;
+  background-position: center;
+  background-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)
+}
\ No newline at end of file
diff --git a/pages/m_user/mine/mine.js b/pages/m_user/mine/mine.js
new file mode 100644
index 0000000..a5515b2
--- /dev/null
+++ b/pages/m_user/mine/mine.js
@@ -0,0 +1,27 @@
+// pages/mine/mine.js
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad: function (options) {
+    this.setData({
+      userRealName: app.globalData.userInfo.realname
+    })
+  },
+
+  logout() {
+    wx.reLaunch({
+      url: '/pages/m_user/userlogin/userlogin',
+    })
+  }
+})
\ No newline at end of file
diff --git a/pages/m_user/mine/mine.json b/pages/m_user/mine/mine.json
new file mode 100644
index 0000000..61c5995
--- /dev/null
+++ b/pages/m_user/mine/mine.json
@@ -0,0 +1,5 @@
+{
+  "navigationBarBackgroundColor": "#57E4CB",
+  "navigationBarTitleText": "鎴戠殑",
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/m_user/mine/mine.wxml b/pages/m_user/mine/mine.wxml
new file mode 100644
index 0000000..1f38c59
--- /dev/null
+++ b/pages/m_user/mine/mine.wxml
@@ -0,0 +1,62 @@
+<!--pages/mine/mine.wxml-->
+<view class="page">
+  <view class="page__hd">
+    <view class="flex-h">
+      <image class="user-icon" src="/res/icons/learn_2.png" mode="aspectFill"></image>
+      <view class="flex-v">
+        <view class="user-name">{{userRealName}}</view>
+        <view class="user-tag"></view>
+      </view>
+    </view>
+  </view>
+  <view class="page__bd">
+    <view class="fyui-panel">
+      <view class="fyui-cell fyui-cell_select title" bindtap="goto" data-index="0">
+        <view class="fyui-cell__hd">
+          <image src="/res/icons/icon3.png" class="icon" />
+        </view>
+        <view class="fyui-cell__bd">浼佷笟璁よ瘉</view>
+        <view class="fyui-cell__ft"></view>
+      </view>
+      <view class="fyui-cell fyui-cell_select title" bindtap="goto" data-index="1">
+        <view class="fyui-cell__hd">
+          <image src="/res/icons/icon4.png" class="icon" />
+        </view>
+        <view class="fyui-cell__bd">閫氱煡绠$悊</view>
+        <view class="fyui-cell__ft"></view>
+      </view>
+      <view class="fyui-cell fyui-cell_select title" bindtap="goto" data-index="2">
+        <view class="fyui-cell__hd">
+          <image src="/res/icons/icon5.png" class="icon" />
+        </view>
+        <view class="fyui-cell__bd">闂鍙嶉</view>
+        <view class="fyui-cell__ft"></view>
+      </view>
+      <view class="fyui-cell fyui-cell_select title" bindtap="goto" data-index="3">
+        <view class="fyui-cell__hd">
+          <image src="/res/icons/icon5.png" class="icon" />
+        </view>
+        <view class="fyui-cell__bd">鎴戠殑鏀惰棌</view>
+        <view class="fyui-cell__ft"></view>
+      </view>
+      <view class="fyui-cell fyui-cell_select title" bindtap="goto" data-index="4">
+        <view class="fyui-cell__hd">
+          <image src="/res/icons/icon5.png" class="icon" />
+        </view>
+        <view class="fyui-cell__bd">鎴戣鍜ㄨ</view>
+        <view class="fyui-cell__ft"></view>
+      </view>
+      <view class="fyui-cell fyui-cell_select title" bindtap="goto" data-index="5">
+        <view class="fyui-cell__hd">
+          <image src="/res/icons/icon5.png" class="icon" />
+        </view>
+        <view class="fyui-cell__bd">鐜繚鏃ョ▼</view>
+        <view class="fyui-cell__ft"></view>
+      </view>
+    </view>
+  </view>
+
+  <view class="page__ft">
+    <view class="logout" bindtap="logout">閫�鍑鸿处鎴�</view>
+  </view>
+</view>
diff --git a/pages/m_user/mine/mine.wxss b/pages/m_user/mine/mine.wxss
new file mode 100644
index 0000000..623d764
--- /dev/null
+++ b/pages/m_user/mine/mine.wxss
@@ -0,0 +1,45 @@
+/* pages/mine/mine.wxss */
+.page__hd {
+  background: linear-gradient(to bottom, #57E4CB, #bbf3eb);
+  padding-top: 30px;
+  padding-bottom: 30px;
+}
+
+.flex-h {
+  justify-content: flex-start;
+  align-items: center;
+}
+
+.flex-v {
+  flex: 1;
+  justify-content: space-between;
+  margin-left: 20px;
+}
+
+.logout {
+  border-radius: 4px;
+  margin: 8px;
+  padding: 8px;
+  background-color: white;
+}
+
+.user-icon {
+  width: 70px;
+  height: 70px;
+  border-radius: 50%;
+}
+
+.user-name {
+  /* white-space: nowrap; */
+  font-size: 16px;
+  font-weight: 600;
+}
+
+.user-tag {
+  font-size: 12px;
+  color: var(--fyui-text-color_2);
+}
+
+.title:active {
+  background-color: var(--fyui-BG-COLOR-ACTIVE);
+}
\ No newline at end of file
diff --git a/pages/m_user/userlogin/userlogin.js b/pages/m_user/userlogin/userlogin.js
new file mode 100644
index 0000000..5c60b43
--- /dev/null
+++ b/pages/m_user/userlogin/userlogin.js
@@ -0,0 +1,144 @@
+// pages/m_user/userlogin/userlogin.js
+const $f = require("../../../service//baserequest")
+const userservice = require("../../../service/userservice")
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    bgPath: $f.baseIconUrl + 'userlogin-1.png'
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad: function (options) {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
+   */
+  onReady: function () {
+    // this.login()
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず
+   */
+  onShow: function () {
+
+  },
+
+  loginWx() {
+    var that = this
+    wx.getUserProfile({
+      lang: 'zh_CN',
+      desc: '鐢ㄤ簬鏄剧ず锛屾彁绀虹敤鎴峰綋鍓嶅凡鐧诲綍',
+      success(res) {
+        console.log(res);
+        // wx.login({
+        //   timeout: 10000,
+        //   success: (result) => {
+        //     console.log(result);
+        //   },
+        //   fail: (res) => {},
+        //   complete: (res) => {},
+        // })
+
+        that.login()
+      }
+    })
+  },
+
+  login() {
+    //鑾峰彇缂撳瓨鐨勭敤鎴疯处鎴峰瘑鐮�
+    var that = this
+    wx.getStorage({
+      key: 'accessToken',
+      success(res) { //鑾峰彇鎴愬姛鑷姩鐧诲綍
+        app.globalData.accessToken = res.data
+        that.setData({
+          userName: res.data.userName,
+          password: res.data.password
+        })
+
+        wx.showLoading({
+          title: '鐧诲綍涓�',
+          mask: true,
+        })
+        setTimeout(() => {
+          wx.hideLoading()
+        }, 10000);
+        userservice.login(that.data.userName, that.data.password, {
+          success(data) {
+            if (data.success) {
+              app.globalData.accessToken = {
+                userName: that.data.userName,
+                password: that.data.password,
+                userId: data.userId,
+                suserId: data.suserId,
+              }
+              wx.setStorage({
+                key: 'accessToken',
+                data: app.globalData.accessToken,
+              })
+              that.getUserInfo()
+            } else {
+              wx.showToast({
+                title: '璐︽埛鎴栧瘑鐮侀敊璇�',
+                duration: 1000,
+                icon: 'none',
+              })
+            }
+          },
+          complete() {
+            that.setData({
+              loading: false
+            })
+            wx.hideLoading()
+          }
+        })
+      },
+      fail(e) { //鑾峰彇澶辫触
+        //鍚庡彴鏌ヨ寰俊鏄惁缁戝畾璐﹀彿锛屾湭缁戝畾鍒欒烦杞敞鍐岀晫闈�
+        wx.navigateTo({
+          url: '/pages/m_user/userregistercompany/userregistercompany',
+          success: (result) => {},
+          fail: (res) => {},
+          complete: (res) => {},
+        })
+      }
+    })
+  },
+
+  getUserInfo() {
+    userservice.getUserInfo(app.globalData.accessToken.userId, {
+      success(data) {
+        app.globalData.userInfo = data
+        app.globalData.isLogin = true
+        wx.setStorage({
+          key: 'userInfo',
+          data: data,
+          success: (result) => {
+            wx.switchTab({
+              url: '/pages/home/home',
+            })
+          }
+        })
+      }
+    })
+  },
+
+  gotoLogin() {
+    wx.navigateTo({
+      url: '/pages/m_user/userloginpw/userloginpw',
+      success: (result) => {},
+      fail: (res) => {},
+      complete: (res) => {},
+    })
+  }
+})
\ No newline at end of file
diff --git a/pages/m_user/userlogin/userlogin.json b/pages/m_user/userlogin/userlogin.json
new file mode 100644
index 0000000..8835af0
--- /dev/null
+++ b/pages/m_user/userlogin/userlogin.json
@@ -0,0 +1,3 @@
+{
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/m_user/userlogin/userlogin.wxml b/pages/m_user/userlogin/userlogin.wxml
new file mode 100644
index 0000000..5c4156f
--- /dev/null
+++ b/pages/m_user/userlogin/userlogin.wxml
@@ -0,0 +1,9 @@
+<!--pages/m_user/userlogin/userlogin.wxml-->
+<view>
+  <image class="banner-bg" src="{{bgPath}}"></image>
+  <view class="login-btn">
+    <view class="submit" bindtap="loginWx">寰俊鐢ㄦ埛涓�閿櫥褰�</view>
+    <view class="login-btn_text" bindtap="gotoLogin">璐﹀彿瀵嗙爜鐧诲綍/娉ㄥ唽</view>
+  </view>
+
+</view>
\ No newline at end of file
diff --git a/pages/m_user/userlogin/userlogin.wxss b/pages/m_user/userlogin/userlogin.wxss
new file mode 100644
index 0000000..edcbdea
--- /dev/null
+++ b/pages/m_user/userlogin/userlogin.wxss
@@ -0,0 +1,22 @@
+/* pages/m_user/userlogin/userlogin.wxss */
+.banner-bg {
+  z-index: -1;
+  position: fixed;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  /* background-color: aqua; */
+}
+
+.login-btn {
+  margin-top: 50vh;
+  text-align: center;
+}
+
+.login-btn_text {
+  color: #2F655B;
+}
+
+.login-btn_text:active {
+  color: #2f655b71;
+}
\ No newline at end of file
diff --git a/pages/login/login.js b/pages/m_user/userloginpw/userloginpw.js
similarity index 85%
rename from pages/login/login.js
rename to pages/m_user/userloginpw/userloginpw.js
index dfc83cd..b7fbbb7 100644
--- a/pages/login/login.js
+++ b/pages/m_user/userloginpw/userloginpw.js
@@ -1,6 +1,7 @@
-// pages/login/login.js
-const userservice = require("../../service/userservice")
+// pages/m_user/userloginpw/userloginpw.js
+const userservice = require("../../../service/userservice")
 const app = getApp()
+
 Page({
 
   /**
@@ -19,9 +20,6 @@
 
   },
 
-  /**
-   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
-   */
   onReady() {
     var that = this
     //鑾峰彇缂撳瓨鐨勭敤鎴疯处鎴峰瘑鐮�
@@ -103,6 +101,7 @@
     userservice.getUserInfo(app.globalData.accessToken.userId, {
       success(data) {
         app.globalData.userInfo = data
+        app.globalData.isLogin = true
         wx.setStorage({
           key: 'userInfo',
           data: data,
@@ -115,4 +114,13 @@
       }
     })
   },
+
+  gotoRegister() {
+    wx.navigateTo({
+      url: '/pages/m_user/userregistertype/userregistertype',
+      success: (result) => {},
+      fail: (res) => {},
+      complete: (res) => {},
+    })
+  }
 })
\ No newline at end of file
diff --git a/pages/m_user/userloginpw/userloginpw.json b/pages/m_user/userloginpw/userloginpw.json
new file mode 100644
index 0000000..e301e43
--- /dev/null
+++ b/pages/m_user/userloginpw/userloginpw.json
@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "鐧诲綍",
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/login/login.wxml b/pages/m_user/userloginpw/userloginpw.wxml
similarity index 64%
rename from pages/login/login.wxml
rename to pages/m_user/userloginpw/userloginpw.wxml
index accfda3..0acbb40 100644
--- a/pages/login/login.wxml
+++ b/pages/m_user/userloginpw/userloginpw.wxml
@@ -1,26 +1,20 @@
+<!--pages/m_user/userloginpw/userloginpw.wxml-->
 <view class="page">
-  <view class="banner-bg"></view>
   <view class="login-container">
-    <view class="top-view">
-      <image class="login-img" src="/res/icons/icon1.png"></image>
-    </view>
-    <view class="page-text">涓皬浼佷笟瀹堟硶鏈嶅姟骞冲彴</view>
     <view class="user-info">
       <view class="user-info_item">
         <text>璐﹀彿锛�</text>
-        <input type="text" placeholder="璇疯緭鍏ヨ处鍙�" value="{{userName}}" bindinput="inputUserName"/>
+        <input type="text" placeholder="璇疯緭鍏ヨ处鍙�" value="{{userName}}" bindinput="inputUserName" />
       </view>
       <view class="user-info_item">
         <text>瀵嗙爜锛�</text>
-        <input type="password" placeholder="璇疯緭鍏ュ瘑鐮�" value="{{password}}" bindinput="inputPassword"/>
+        <input type="password" placeholder="璇疯緭鍏ュ瘑鐮�" value="{{password}}" bindinput="inputPassword" />
       </view>
     </view>
-    <view class="bottom-view">
-
-      <button class="bottom-btn" bindtap="login" loading="{{loading}}" hover-class="hoverClass">
-        鐧诲綍
-      </button>
-    </view>
+    <button class="bottom-btn {{password.length > 0 ? 'bottom-btn_active' : ''}}" bindtap="login" loading="{{loading}}" disabled="{{password.length == 0}}">
+      鐧诲綍
+    </button>
+    <view class="login-btn_text" bindtap="gotoRegister">鍘绘敞鍐�</view>
     <!-- <view>
       <label class="weui-agree" bindtap="checkboxChange">
         <checkbox class="weui-agree__checkbox-check" value="agree" checked="{{agree}}"/>
diff --git a/pages/m_user/userloginpw/userloginpw.wxss b/pages/m_user/userloginpw/userloginpw.wxss
new file mode 100644
index 0000000..be04797
--- /dev/null
+++ b/pages/m_user/userloginpw/userloginpw.wxss
@@ -0,0 +1,70 @@
+/* pages/m_user/userloginpw/userloginpw.wxss */
+.login-container{
+  display: flex;
+  flex-direction: column;
+  justify-content: flex-start;
+  align-items: center;
+  height: 100vh;
+  z-index: 1;
+  background-color: white;
+}
+
+.bottom-btn{
+  width: 90% !important;
+  color: #828282;
+  background-color: #EEEEEE;
+  margin-top: 80px;
+}
+
+.bottom-btn_active {
+  color: white;
+  background: linear-gradient(to right, #6DF1A9, #62EBCF);
+}
+
+
+.agree-text {
+  width: 70vw;
+  text-align: center;
+  font-size: 12px;
+  color: #b8b8b8;
+  margin-top: 12rpx;
+}
+
+.user-info {
+  font-size: 20px;
+  width: 100%;
+  /* background-color: burlywood; */
+  margin-top: 30px;
+}
+.user-info_item {
+  display: flex;
+  justify-content: flex-start;
+  align-items: flex-start;
+  margin-bottom: 8px;
+  padding: 8px 30px;
+}
+
+.user-info_item>text{
+  color: var(--fyui-text-color_1);
+  line-height: 30px;
+  white-space: nowrap;
+  font-weight: 600;
+}
+
+.user-info_item>input{
+  height: 30px;
+  line-height: 30px;
+  width: 100%;
+  border-bottom: #929292 1px solid;
+  background-color: white;
+  font-size: medium;
+}
+
+.login-btn_text {
+  margin-top: 24px;
+  color: #2F655B;
+}
+
+.login-btn_text:active {
+  color: #2f655b71;
+}
\ No newline at end of file
diff --git a/pages/m_user/userregistercompany/userregistercompany.js b/pages/m_user/userregistercompany/userregistercompany.js
new file mode 100644
index 0000000..cdad29c
--- /dev/null
+++ b/pages/m_user/userregistercompany/userregistercompany.js
@@ -0,0 +1,249 @@
+// pages/m_user/userregistercompany/userregistercompany.js
+const userservice = require("../../../service/userservice")
+const app = getApp()
+
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+    sceneTypes: [
+      {value: '1', name: '椁愰ギ'},
+      {value: '7', name: '姹戒慨'},
+      {value: '6', name: '宸ヤ笟浼佷笟' },
+      {value: '2', name: '宸ュ湴'},
+      {value: '3', name: '鐮佸ご'},
+      {value: '4', name: '鍫嗗満'},
+      {value: '5', name: '鎼呮媽绔�' },
+    ],
+    sceneTypeIndex: 0,
+
+    imgFiles: [],
+
+    msg: [{
+        name: "鐢ㄦ埛鍚嶇О",
+        id: "username",
+        input: true,
+        value: "",
+        noValue: false,
+      },
+      {
+        name: "鏂板瘑鐮�",
+        id: "password",
+        input: true,
+        type: 'password',
+        maxLength: 20,
+        value: "",
+        noValue: false
+      },
+      {
+        name: "纭瀵嗙爜",
+        id: "number",
+        input: true,
+        type: 'password',
+        placeholder: '璇峰啀娆$‘璁ゅ瘑鐮�',
+        maxLength: 20,
+        value: "",
+        noValue: false,
+      },
+      {
+        name: "浼佷笟鍚嶇О",
+        id: "department",
+        input: true,
+        value: '',
+        noValue: false,
+      },
+      {
+        name: "浼佷笟鍦板潃",
+        id: "address",
+        input: true,
+        value: '',
+        noValue: false,
+      },
+      {
+        name: "鑱旂郴鏂瑰紡",
+        id: "contract",
+        input: true,
+        value: '',
+        noValue: false,
+        required: false
+      },
+      {
+        name: "淇$敤浠g爜",
+        id: "code",
+        input: true,
+        value: "",
+        noValue: false,
+        required: false
+      },
+    ],
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+
+  },
+
+  changeSceneType(e) {
+    let i = e.detail.value
+    this.setData({
+      sceneTypeIndex: i
+    })
+  },
+
+  changeMsg(e) {
+    let id = e.detail.params.id
+    let value = e.detail.params.value
+    let msg = this.data.msg
+    let msgLength = msg.length
+    for (let i = 0; i < msgLength; i++) {
+      if (msg[i].id === id) {
+        let path = "msg[" + i + "].value"
+        let nPath = "msg[" + i + "].noValue"
+        this.setData({
+          [path]: value,
+          [nPath]: false
+        })
+      }
+    }
+  },
+
+  uploadFile(file) {
+    let data = file.detail.newFiles
+    data.forEach(element => {
+      element.loading = false
+    });
+    this.setData({
+      imgFiles: data
+    })
+  },
+
+  onSubmit: function () {
+    if (!this.submitCheck()) return
+
+    let msg = this.data.msg
+    let info = {
+      sceneType: this.data.sceneTypes[this.data.sceneTypeIndex].value,
+      userName: msg[0].value,
+      password: msg[1].value,
+      department: msg[3].value,
+      address: msg[4].value,
+      telephone: msg[5].value,
+      orgCode: msg[6].value
+    }
+
+    wx.showLoading({
+      title: '娉ㄥ唽涓�',
+      mask: true,
+    })
+    setTimeout(() => {
+      wx.hideLoading()
+    }, 10000);
+    var that = this
+    userservice.register(info, {
+      success(res) {
+        if (res.success) {
+          app.globalData.accessToken = {
+            userId: res.userId,
+            suserId: res.suserId,
+          }
+          that.getUserInfo()
+        } else {
+          wx.hideLoading({
+            success: (res) => {
+              wx.showToast({
+                title: '鐢ㄦ埛鍚嶇О閲嶅',
+                duration: 2000,
+                icon: 'error',
+                mask: true,
+              })
+            },
+            fail: (res) => {},
+            complete: (res) => {},
+          })
+        }
+      }
+    })
+  },
+
+  /**
+   * 淇℃伅瀹屾暣搴︽鏌�
+   */
+  submitCheck() {
+    let msg = this.data.msg
+    let msgLength = msg.length
+    //纭淇℃伅瀹屾暣搴�
+    for (let i = 0; i < msgLength; i++) {
+      if (msg[i].required != false && msg[i].value === "") {
+        let error = msg[i].name + "涓嶅彲涓虹┖"
+        let path = "msg[" + i + "].noValue"
+        this.setData({
+          errorMsg: error,
+          [path]: true
+        })
+
+        wx.pageScrollTo({
+          duration: 300,
+          scrollTop: 0,
+          // selector:"#" + msg[i].id,
+        })
+        return false
+      }
+    }
+
+    //瀵嗙爜涓�鑷存�х‘璁�
+    if (msg[1].value != msg[2].value) {
+      let error = "涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�"
+      this.setData({
+        errorMsg: error,
+      })
+      return false
+    }
+    //瀵嗙爜澶嶆潅搴︾‘璁�
+    var pwError
+    var pw = msg[1].value
+    var regex1 = /[a-zA-Z]/
+    var regex2 = /[0-9]/
+    var r = regex1.test(pw) && regex2.test(pw)
+    console.log('regex:' + r);
+    if (pw.length < 6) {
+      pwError = '瀵嗙爜浣嶆暟鏈�灏�6浣�'
+    } else if (!r) {
+      pwError = '瀵嗙爜蹇呴』鍖呭惈瀛楁瘝鍜屾暟瀛�'
+    }
+    if (pwError) {
+      this.setData({
+        errorMsg: pwError,
+      })
+      return false
+    }
+
+    return true
+  },
+
+  getUserInfo() {
+    userservice.getUserInfo(app.globalData.accessToken.userId, {
+      success(data) {
+        app.globalData.accessToken.userName = data.acountname
+        app.globalData.accessToken.password = data.acountname
+        wx.setStorage({
+          key: 'accessToken',
+          data: app.globalData.accessToken,
+        })
+        app.globalData.userInfo = data
+        wx.setStorage({
+          key: 'userInfo',
+          data: data,
+          success: (result) => {
+            wx.switchTab({
+              url: '/pages/home/home',
+            })
+          }
+        })
+      }
+    })
+  },
+})
\ No newline at end of file
diff --git a/pages/m_user/userregistercompany/userregistercompany.json b/pages/m_user/userregistercompany/userregistercompany.json
new file mode 100644
index 0000000..6ea54dc
--- /dev/null
+++ b/pages/m_user/userregistercompany/userregistercompany.json
@@ -0,0 +1,11 @@
+{
+  "navigationBarTitleText": "浼佷笟璐︽埛娉ㄥ唽",
+  "usingComponents": {
+    "mp-cells":"/component/cells/cells",
+    "mp-cell":"/component/cell/cell",
+    "input-cell":"/component/inputcell/inputcell",
+    "mp-toptips":"/component/toptips/toptips",
+    "mp-icon": "/component/icon/icon",
+    "mp-upload":"/component/uploader/uploader"
+  }
+}
\ No newline at end of file
diff --git a/pages/m_user/userregistercompany/userregistercompany.wxml b/pages/m_user/userregistercompany/userregistercompany.wxml
new file mode 100644
index 0000000..78fc1c9
--- /dev/null
+++ b/pages/m_user/userregistercompany/userregistercompany.wxml
@@ -0,0 +1,27 @@
+<!--pages/m_user/userregistercompany/userregistercompany.wxml-->
+<view class="page">
+  <mp-toptips type="error" msg="{{errorMsg}}" show="{{errorMsg}}" delay="2000"></mp-toptips>
+
+  <view class="page__bd">
+    <view class="top-card">
+      <view class="tag"><text style="color: transparent;">*</text>浼佷笟绫诲瀷</view>
+      <picker mode="selector" bindchange="changeSceneType" value="{{sceneTypeIndex}}" range="{{sceneTypes}}" range-key="name" class="value">
+        <view>{{sceneTypes[sceneTypeIndex].name}}</view>
+      </picker>
+      <mp-icon icon="arrow" color="#7F7F7F" size="{{10}}"></mp-icon>
+    </view>
+
+    <view class="items">
+      <mp-cells>
+        <input-cell wx:for="{{msg}}" wx:key="id" item="{{item}}" bindpassValue="changeMsg"></input-cell>
+      </mp-cells>
+    </view>
+
+    <view class="weui-upload-view">
+      <mp-upload title="涓婁紶钀ヤ笟鎵х収" titleClass="upload-title-class" max-count="1" files="{{imgFiles}}" binduploadImg="uploadFile" binddelete="delImg"></mp-upload>
+    </view>
+  </view>
+  <view class="page__ft">
+    <view class="submit" bindtap="onSubmit">鎻愪氦</view>
+  </view>
+</view>
\ No newline at end of file
diff --git a/pages/m_user/userregistercompany/userregistercompany.wxss b/pages/m_user/userregistercompany/userregistercompany.wxss
new file mode 100644
index 0000000..033a471
--- /dev/null
+++ b/pages/m_user/userregistercompany/userregistercompany.wxss
@@ -0,0 +1,43 @@
+/* pages/m_user/userregistercompany/userregistercompany.wxss */
+.top-card {
+  /* position: relative; */
+  display: flex;
+  flex-direction: row;
+  background-color: white;
+  border-radius: 4px;
+  /* margin: 0px 8px 8px 8px; */
+  margin-top: 8px;
+  padding: 8px;
+  font-size: 16px;
+}
+
+.items {
+  padding: 0 8px;
+  background-color: white;
+}
+
+.top-card .tag {
+  /* display: inline-block; */
+  width: 105px;
+  white-space: nowrap;
+}
+
+.top-card .value {
+  flex-grow: 1;
+}
+
+.top-card .value view {
+  max-width: 200px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.weui-upload-view {
+  background-color: white;
+  padding: 8px;
+}
+
+.page__ft {
+  background-color: white;
+}
\ No newline at end of file
diff --git a/pages/m_user/userregistergov/userregistergov.js b/pages/m_user/userregistergov/userregistergov.js
new file mode 100644
index 0000000..02dc10c
--- /dev/null
+++ b/pages/m_user/userregistergov/userregistergov.js
@@ -0,0 +1,17 @@
+// pages/m_user/userregistergov/userregistergov.js
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+
+  },
+})
\ No newline at end of file
diff --git a/pages/m_user/userregistergov/userregistergov.json b/pages/m_user/userregistergov/userregistergov.json
new file mode 100644
index 0000000..8835af0
--- /dev/null
+++ b/pages/m_user/userregistergov/userregistergov.json
@@ -0,0 +1,3 @@
+{
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/m_user/userregistergov/userregistergov.wxml b/pages/m_user/userregistergov/userregistergov.wxml
new file mode 100644
index 0000000..1dd8c05
--- /dev/null
+++ b/pages/m_user/userregistergov/userregistergov.wxml
@@ -0,0 +1,2 @@
+<!--pages/m_user/userregistergov/userregistergov.wxml-->
+<text>pages/m_user/userregistergov/userregistergov.wxml</text>
diff --git a/pages/m_user/userregistergov/userregistergov.wxss b/pages/m_user/userregistergov/userregistergov.wxss
new file mode 100644
index 0000000..ad09645
--- /dev/null
+++ b/pages/m_user/userregistergov/userregistergov.wxss
@@ -0,0 +1 @@
+/* pages/m_user/userregistergov/userregistergov.wxss */
\ No newline at end of file
diff --git a/pages/m_user/userregistertype/userregistertype.js b/pages/m_user/userregistertype/userregistertype.js
new file mode 100644
index 0000000..a7d0db8
--- /dev/null
+++ b/pages/m_user/userregistertype/userregistertype.js
@@ -0,0 +1,35 @@
+// pages/m_user/userregistertype/userregistertype.js
+Page({
+
+  /**
+   * 椤甸潰鐨勫垵濮嬫暟鎹�
+   */
+  data: {
+
+  },
+
+  /**
+   * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
+   */
+  onLoad(options) {
+
+  },
+
+  gotoRegisterInfo(e) {
+    let index = e.currentTarget.dataset.index
+    let url = ""
+    switch(index) {
+      case "0":
+        url = `/pages/m_user/userregistercompany/userregistercompany`
+        break;
+      case "1":
+        url = `/pages/m_user/userregistergov/userregistergov`
+        break;
+    }
+    if (url != "") {
+      wx.navigateTo({
+        url: url
+      })
+    }
+  }
+})
\ No newline at end of file
diff --git a/pages/m_user/userregistertype/userregistertype.json b/pages/m_user/userregistertype/userregistertype.json
new file mode 100644
index 0000000..05f88e1
--- /dev/null
+++ b/pages/m_user/userregistertype/userregistertype.json
@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "閫夋嫨娉ㄥ唽绫诲瀷",
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/m_user/userregistertype/userregistertype.wxml b/pages/m_user/userregistertype/userregistertype.wxml
new file mode 100644
index 0000000..b5e55d2
--- /dev/null
+++ b/pages/m_user/userregistertype/userregistertype.wxml
@@ -0,0 +1,13 @@
+<!--pages/m_user/userregistertype/userregistertype.wxml-->
+<view>
+  <view class="text-1">鎮ㄨ娉ㄥ唽锛�</view>
+  <view class="re-type" bindtap="gotoRegisterInfo" data-index="0">
+    <image src="/res/icons/re_company.png"></image>
+    <view>浼佷笟璐︽埛</view>
+  </view>
+  <view class="divider"></view>
+  <view class="re-type" bindtap="gotoRegisterInfo" data-index="0">
+    <image src="/res/icons/re_manage.png"></image>
+    <view>绠$悊璐︽埛</view>
+  </view>
+</view>
\ No newline at end of file
diff --git a/pages/m_user/userregistertype/userregistertype.wxss b/pages/m_user/userregistertype/userregistertype.wxss
new file mode 100644
index 0000000..55afaae
--- /dev/null
+++ b/pages/m_user/userregistertype/userregistertype.wxss
@@ -0,0 +1,28 @@
+/* pages/m_user/userregistertype/userregistertype.wxss */
+.text-1 {
+  text-align: center;
+  color: var(--fyui-text-color_1);
+  font-weight: 600;
+  font-size: 18px;
+}
+
+.re-type {
+  text-align: center;
+  margin: 60px;
+}
+
+.re-type:active {
+  color: var(--fyui-text-color_3);
+}
+
+.re-type>image {
+  width: 120px;
+  height: 120px;
+}
+
+.divider {
+  margin: 20px;
+  width: auto;
+  height: 1px;
+  background-color: var(--fyui-BG_1);
+}
\ No newline at end of file
diff --git a/pages/module_learn/learfile/learnfile.wxss b/pages/module_learn/learfile/learnfile.wxss
deleted file mode 100644
index 6cad3ae..0000000
--- a/pages/module_learn/learfile/learnfile.wxss
+++ /dev/null
@@ -1 +0,0 @@
-/* pages/module_learn/learfile/learnfile.wxss */
\ No newline at end of file
diff --git a/pages/module_learn/learncase/learncase.wxml b/pages/module_learn/learncase/learncase.wxml
deleted file mode 100644
index e46be67..0000000
--- a/pages/module_learn/learncase/learncase.wxml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!--pages/module_learn/learncase/learncase.wxml-->
-<text>pages/module_learn/learncase/learncase.wxml</text>
diff --git a/pages/module_learn/learncase/learncase.wxss b/pages/module_learn/learncase/learncase.wxss
deleted file mode 100644
index e585a82..0000000
--- a/pages/module_learn/learncase/learncase.wxss
+++ /dev/null
@@ -1 +0,0 @@
-/* pages/module_learn/learncase/learncase.wxss */
\ No newline at end of file
diff --git a/pages/module_user/userregistergov/userregistergov.wxml b/pages/module_user/userregistergov/userregistergov.wxml
deleted file mode 100644
index b2482e6..0000000
--- a/pages/module_user/userregistergov/userregistergov.wxml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!--pages/module_user/userregistergov/userregistergov.wxml-->
-<text>pages/module_user/userregistergov/userregistergov.wxml</text>
diff --git a/pages/module_user/userregistergov/userregistergov.wxss b/pages/module_user/userregistergov/userregistergov.wxss
deleted file mode 100644
index c33620c..0000000
--- a/pages/module_user/userregistergov/userregistergov.wxss
+++ /dev/null
@@ -1 +0,0 @@
-/* pages/module_user/userregistergov/userregistergov.wxss */
\ No newline at end of file

--
Gitblit v1.9.3