diff --git a/sample-form-client-ui/admin/src/App.vue b/sample-form-client-ui/admin/src/App.vue
index f0ed4adac612d1bdd360a542d4bae53a4b205382..5140188ce04ee36f3205ab9d41199f38693010d6 100644
--- a/sample-form-client-ui/admin/src/App.vue
+++ b/sample-form-client-ui/admin/src/App.vue
@@ -66,7 +66,7 @@ export default {
         },
         serviceInfo: {
           homeUrl: "http://192.168.0.24:8080/#/",
-          serverUrl: "http://112.19.80.237:11078/",
+          serverUrl: "http://192.168.0.98:11078/",
         },
         // devicenum: "18-93-7F-C0-AD-B5",
         devicenum: "B8-2D-28-22-54-6C",
diff --git a/sample-form-client-ui/admin/src/api/index.js b/sample-form-client-ui/admin/src/api/index.js
index a141570aa16b8ecf3d8c5583037ad4ae8ccdf0f7..31176866905b63806db6f108f82b472806f50644 100644
--- a/sample-form-client-ui/admin/src/api/index.js
+++ b/sample-form-client-ui/admin/src/api/index.js
@@ -47,6 +47,16 @@ export const getSampleformMatterList = (data) => {
   });
 };
 
+// 鏌ヨ浜嬮」璇︽儏
+export const getSampleformMatterInfo = (params) => {
+  let baseUrl = local.getLocal("serverUrl");
+  return request({
+    url: `${baseUrl}sampleform/matter/interinfo`,
+    method: "get",
+    params,
+  });
+};
+
 // 鏌ヨ璁惧鍏宠仈浜嬮」鍒楄〃
 export const getDeviceMatterList = (data) => {
   let baseUrl = local.getLocal("serverUrl");
@@ -77,6 +87,16 @@ export const getMaterialsList = (data) => {
   });
 };
 
+// 鑾峰彇浜嬮」鏂囦欢澶癸紙鍒嗙被锛夊垪琛�
+export const getMatterFolderList = (data) => {
+  let baseUrl = local.getLocal("serverUrl");
+  return request({
+    url: `${baseUrl}sampleform/matter/category/list`,
+    method: "post",
+    data,
+  });
+};
+
 // 琛ㄥ崟鍚堟垚
 export const mergeFormToDocx = (data) => {
   let baseUrl = local.getLocal("serverUrl");
diff --git a/sample-form-client-ui/admin/src/assets/fonts/demo_index.html b/sample-form-client-ui/admin/src/assets/fonts/demo_index.html
index 2f0484b393fba9ce38e6c81caf5d2e4dc16de52e..69fbe5bc3c1d0ae707787a5eda6b43fb40ba3f5d 100644
--- a/sample-form-client-ui/admin/src/assets/fonts/demo_index.html
+++ b/sample-form-client-ui/admin/src/assets/fonts/demo_index.html
@@ -47,7 +47,7 @@
         <li class="dib"><span>Symbol</span></li>
       </ul>
       
-      <a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=3737952" target="_blank" class="nav-more">鏌ョ湅椤圭洰</a>
+      <a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=4136233" target="_blank" class="nav-more">鏌ョ湅椤圭洰</a>
       
     </div>
     <div class="tab-container">
@@ -55,21 +55,9 @@
           <ul class="icon_lists dib-box">
           
             <li class="dib">
-              <span class="icon iconfont">&#xe63e;</span>
-                <div class="name">鐏劙</div>
-                <div class="code-name">&amp;#xe63e;</div>
-              </li>
-          
-            <li class="dib">
-              <span class="icon iconfont">&#xec1e;</span>
-                <div class="name">鐐�</div>
-                <div class="code-name">&amp;#xec1e;</div>
-              </li>
-          
-            <li class="dib">
-              <span class="icon iconfont">&#xe606;</span>
-                <div class="name">棣栭〉</div>
-                <div class="code-name">&amp;#xe606;</div>
+              <span class="icon iconfont">&#xeac5;</span>
+                <div class="name">24gf-folderOpen</div>
+                <div class="code-name">&amp;#xeac5;</div>
               </li>
           
           </ul>
@@ -90,9 +78,9 @@
 <pre><code class="language-css"
 >@font-face {
   font-family: 'iconfont';
-  src: url('iconfont.woff2?t=1669186016573') format('woff2'),
-       url('iconfont.woff?t=1669186016573') format('woff'),
-       url('iconfont.ttf?t=1669186016573') format('truetype');
+  src: url('iconfont.woff2?t=1713341009276') format('woff2'),
+       url('iconfont.woff?t=1713341009276') format('woff'),
+       url('iconfont.ttf?t=1713341009276') format('truetype');
 }
 </code></pre>
           <h3 id="-iconfont-">绗簩姝ワ細瀹氫箟浣跨敤 iconfont 鐨勬牱寮�</h3>
@@ -119,29 +107,11 @@
         <ul class="icon_lists dib-box">
           
           <li class="dib">
-            <span class="icon iconfont icon-hot"></span>
-            <div class="name">
-              鐏劙
-            </div>
-            <div class="code-name">.icon-hot
-            </div>
-          </li>
-          
-          <li class="dib">
-            <span class="icon iconfont icon-dot"></span>
-            <div class="name">
-              鐐�
-            </div>
-            <div class="code-name">.icon-dot
-            </div>
-          </li>
-          
-          <li class="dib">
-            <span class="icon iconfont icon-home"></span>
+            <span class="icon iconfont icon-folder"></span>
             <div class="name">
-              棣栭〉
+              24gf-folderOpen
             </div>
-            <div class="code-name">.icon-home
+            <div class="code-name">.icon-folder
             </div>
           </li>
           
@@ -174,26 +144,10 @@
           
             <li class="dib">
                 <svg class="icon svg-icon" aria-hidden="true">
-                  <use xlink:href="#icon-hot"></use>
-                </svg>
-                <div class="name">鐏劙</div>
-                <div class="code-name">#icon-hot</div>
-            </li>
-          
-            <li class="dib">
-                <svg class="icon svg-icon" aria-hidden="true">
-                  <use xlink:href="#icon-dot"></use>
-                </svg>
-                <div class="name">鐐�</div>
-                <div class="code-name">#icon-dot</div>
-            </li>
-          
-            <li class="dib">
-                <svg class="icon svg-icon" aria-hidden="true">
-                  <use xlink:href="#icon-home"></use>
+                  <use xlink:href="#icon-folder"></use>
                 </svg>
-                <div class="name">棣栭〉</div>
-                <div class="code-name">#icon-home</div>
+                <div class="name">24gf-folderOpen</div>
+                <div class="code-name">#icon-folder</div>
             </li>
           
           </ul>
diff --git a/sample-form-client-ui/admin/src/assets/fonts/iconfont.css b/sample-form-client-ui/admin/src/assets/fonts/iconfont.css
index 1f89e08e3710ab6f2480c57bd8b3e94c2292fb5e..da70f53a05ac2fa99e58ef4870963ffe409c5887 100644
--- a/sample-form-client-ui/admin/src/assets/fonts/iconfont.css
+++ b/sample-form-client-ui/admin/src/assets/fonts/iconfont.css
@@ -1,8 +1,8 @@
 @font-face {
-  font-family: "iconfont"; /* Project id 3737952 */
-  src: url('iconfont.woff2?t=1669186016573') format('woff2'),
-       url('iconfont.woff?t=1669186016573') format('woff'),
-       url('iconfont.ttf?t=1669186016573') format('truetype');
+  font-family: "iconfont"; /* Project id 4136233 */
+  src: url('iconfont.woff2?t=1713341009276') format('woff2'),
+       url('iconfont.woff?t=1713341009276') format('woff'),
+       url('iconfont.ttf?t=1713341009276') format('truetype');
 }
 
 .iconfont {
@@ -13,15 +13,7 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
-.icon-hot:before {
-  content: "\e63e";
-}
-
-.icon-dot:before {
-  content: "\ec1e";
-}
-
-.icon-home:before {
-  content: "\e606";
+.icon-folder:before {
+  content: "\eac5";
 }
 
diff --git a/sample-form-client-ui/admin/src/assets/fonts/iconfont.js b/sample-form-client-ui/admin/src/assets/fonts/iconfont.js
index 5586921d161be821ba8b84a5ef1b05f4747e29ad..a78c37cb15b6514aa691c6c55d84ab7d8298434f 100644
--- a/sample-form-client-ui/admin/src/assets/fonts/iconfont.js
+++ b/sample-form-client-ui/admin/src/assets/fonts/iconfont.js
@@ -1 +1 @@
-window._iconfont_svg_string_3737952='<svg><symbol id="icon-hot" viewBox="0 0 1024 1024"><path d="M768 332.8l-76.8 76.8c0 0 0-307.2-256-409.6 0 0-25.6 281.6-153.6 384s-384 409.6 128 640c0 0-256-281.6 76.8-486.4 0 0-25.6 102.4 102.4 204.8s0 281.6 0 281.6S1203.2 870.4 768 332.8z"  ></path></symbol><symbol id="icon-dot" viewBox="0 0 1024 1024"><path d="M512 624a112 112 0 1 0 0-224 112 112 0 0 0 0 224z"  ></path></symbol><symbol id="icon-home" viewBox="0 0 1114 1024"><path d="M993.886268 442.729412V963.764706a60.235294 60.235294 0 0 1-60.235294 60.235294h-231.755294a60.235294 60.235294 0 0 1-60.235294-60.235294v-241.664h-176.609882V963.764706a60.235294 60.235294 0 0 1-60.235295 60.235294H180.709798a60.235294 60.235294 0 0 1-60.235294-60.235294V445.44l-70.987295 59.512471a30.117647 30.117647 0 1 1-38.731294-46.140236l538.744471-451.764706a30.117647 30.117647 0 0 1 39.183059 0.421647l515.403294 451.764706a30.117647 30.117647 0 0 1-39.695059 45.296942L993.886268 442.729412z m-60.205176-52.766118L568.414268 69.812706 180.709798 394.872471V963.764706h224.105411v-241.664a60.235294 60.235294 0 0 1 60.235295-60.235294h176.609882a60.235294 60.235294 0 0 1 60.235294 60.235294V963.764706H933.650974V391.529412l0.030118-1.566118z" fill="#7F7F7F" ></path></symbol></svg>',function(n){var t=(t=document.getElementsByTagName("script"))[t.length-1],e=t.getAttribute("data-injectcss"),t=t.getAttribute("data-disable-injectsvg");if(!t){var o,i,a,d,c,s=function(t,e){e.parentNode.insertBefore(t,e)};if(e&&!n.__iconfont__svg__cssinject__){n.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(t){console&&console.log(t)}}o=function(){var t,e=document.createElement("div");e.innerHTML=n._iconfont_svg_string_3737952,(e=e.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",e=e,(t=document.body).firstChild?s(e,t.firstChild):t.appendChild(e))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(o,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),o()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(a=o,d=n.document,c=!1,r(),d.onreadystatechange=function(){"complete"==d.readyState&&(d.onreadystatechange=null,l())})}function l(){c||(c=!0,a())}function r(){try{d.documentElement.doScroll("left")}catch(t){return void setTimeout(r,50)}l()}}(window);
\ No newline at end of file
+window._iconfont_svg_string_4136233='<svg><symbol id="icon-folder" viewBox="0 0 1024 1024"><path d="M81.16 412.073333L0 709.653333V138.666667a53.393333 53.393333 0 0 1 53.333333-53.333334h253.413334a52.986667 52.986667 0 0 1 37.713333 15.62l109.253333 109.253334a10.573333 10.573333 0 0 0 7.54 3.126666H842.666667a53.393333 53.393333 0 0 1 53.333333 53.333334v74.666666H173.773333a96.2 96.2 0 0 0-92.613333 70.74z m922-7.113333a52.933333 52.933333 0 0 0-42.386667-20.96H173.773333a53.453333 53.453333 0 0 0-51.453333 39.333333L11.773333 828.666667a53.333333 53.333333 0 0 0 51.453334 67.333333h787a53.453333 53.453333 0 0 0 51.453333-39.333333l110.546667-405.333334a52.953333 52.953333 0 0 0-9.073334-46.373333z" fill="#5C5C66" ></path></symbol></svg>',function(n){var t=(t=document.getElementsByTagName("script"))[t.length-1],e=t.getAttribute("data-injectcss"),t=t.getAttribute("data-disable-injectsvg");if(!t){var o,i,a,d,c,s=function(t,e){e.parentNode.insertBefore(t,e)};if(e&&!n.__iconfont__svg__cssinject__){n.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(t){console&&console.log(t)}}o=function(){var t,e=document.createElement("div");e.innerHTML=n._iconfont_svg_string_4136233,(e=e.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",e=e,(t=document.body).firstChild?s(e,t.firstChild):t.appendChild(e))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(o,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),o()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(a=o,d=n.document,c=!1,r(),d.onreadystatechange=function(){"complete"==d.readyState&&(d.onreadystatechange=null,l())})}function l(){c||(c=!0,a())}function r(){try{d.documentElement.doScroll("left")}catch(t){return void setTimeout(r,50)}l()}}(window);
\ No newline at end of file
diff --git a/sample-form-client-ui/admin/src/assets/fonts/iconfont.json b/sample-form-client-ui/admin/src/assets/fonts/iconfont.json
index 51fd52f3ceabf87a7c29505d7ba7518def690f05..ade2f810d78b82694419e773fd590605c74b76c6 100644
--- a/sample-form-client-ui/admin/src/assets/fonts/iconfont.json
+++ b/sample-form-client-ui/admin/src/assets/fonts/iconfont.json
@@ -1,30 +1,16 @@
 {
-  "id": "3737952",
-  "name": "zzdy",
+  "id": "4136233",
+  "name": "濉崟-鏍疯〃",
   "font_family": "iconfont",
   "css_prefix_text": "icon-",
   "description": "",
   "glyphs": [
     {
-      "icon_id": "1221891",
-      "name": "鐏劙",
-      "font_class": "hot",
-      "unicode": "e63e",
-      "unicode_decimal": 58942
-    },
-    {
-      "icon_id": "4933869",
-      "name": "鐐�",
-      "font_class": "dot",
-      "unicode": "ec1e",
-      "unicode_decimal": 60446
-    },
-    {
-      "icon_id": "5849190",
-      "name": "棣栭〉",
-      "font_class": "home",
-      "unicode": "e606",
-      "unicode_decimal": 58886
+      "icon_id": "7594875",
+      "name": "24gf-folderOpen",
+      "font_class": "folder",
+      "unicode": "eac5",
+      "unicode_decimal": 60101
     }
   ]
 }
diff --git a/sample-form-client-ui/admin/src/assets/fonts/iconfont.ttf b/sample-form-client-ui/admin/src/assets/fonts/iconfont.ttf
index e05b9581184cf5d0df406380a332e323967765ae..3be40079a7ba90d67acbfe0a0b9a37db1eae6d47 100644
Binary files a/sample-form-client-ui/admin/src/assets/fonts/iconfont.ttf and b/sample-form-client-ui/admin/src/assets/fonts/iconfont.ttf differ
diff --git a/sample-form-client-ui/admin/src/assets/fonts/iconfont.woff b/sample-form-client-ui/admin/src/assets/fonts/iconfont.woff
index dfed37a16e51f90417eb6fe770266ac790e54ff4..4afa5ab2665c8f39e49d826fe9374bfa2925d38f 100644
Binary files a/sample-form-client-ui/admin/src/assets/fonts/iconfont.woff and b/sample-form-client-ui/admin/src/assets/fonts/iconfont.woff differ
diff --git a/sample-form-client-ui/admin/src/assets/fonts/iconfont.woff2 b/sample-form-client-ui/admin/src/assets/fonts/iconfont.woff2
index 9d7da2c26db5d689efce5f7993c5f9e9ed74125c..3035bd36c4a5a02b8a711104362b5f4dad136e5d 100644
Binary files a/sample-form-client-ui/admin/src/assets/fonts/iconfont.woff2 and b/sample-form-client-ui/admin/src/assets/fonts/iconfont.woff2 differ
diff --git a/sample-form-client-ui/admin/src/components/MateralsList.vue b/sample-form-client-ui/admin/src/components/MateralsList.vue
index 8d9634f0b3ac241c98d12b988a9e2542af49482c..bc379ebe7e88462d461b6ff35013239d939c3ed2 100644
--- a/sample-form-client-ui/admin/src/components/MateralsList.vue
+++ b/sample-form-client-ui/admin/src/components/MateralsList.vue
@@ -105,6 +105,7 @@ export default {
           matterName: this.matterInfo.matterName,
           matterId: row.matterId,
           id: row.id,
+          categoryId: row.categoryId || "",
         },
       });
     },
diff --git a/sample-form-client-ui/admin/src/components/PageTop.vue b/sample-form-client-ui/admin/src/components/PageTop.vue
index 2e78b208800e371c52c7c326b85f0b5f2e5127f2..07806dc2e518a308f26363142e78335a500a45ed 100644
--- a/sample-form-client-ui/admin/src/components/PageTop.vue
+++ b/sample-form-client-ui/admin/src/components/PageTop.vue
@@ -25,4 +25,4 @@ export default {};
     color: #333333;
   }
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/sample-form-client-ui/admin/src/components/SearchBox.vue b/sample-form-client-ui/admin/src/components/SearchBox.vue
index f7bb570ca370fe9bc26fca1d2cd1578849588802..49bfeb5c417f9ea3e9574b00a12ba8d515aafdd2 100644
--- a/sample-form-client-ui/admin/src/components/SearchBox.vue
+++ b/sample-form-client-ui/admin/src/components/SearchBox.vue
@@ -1,7 +1,7 @@
 <template>
   <div class="search-box" :style="{ width }">
     <el-input
-      placeholder="杈撳叆浜嬮」琛ㄥ崟鍏抽敭璇嶆垨鎺掗槦缂栧彿鏌ヨ"
+      :placeholder="placeholder"
       :value="value"
       @keyup.native.enter="handleSearch"
       @input="changeInput"
@@ -54,6 +54,10 @@ export default {
       Number,
       default: "",
     },
+    placeholder: {
+      type: String,
+      default: "杈撳叆浜嬮」琛ㄥ崟鍏抽敭璇嶆垨鎺掗槦缂栧彿鏌ヨ",
+    },
   },
   data() {
     return {};
diff --git a/sample-form-client-ui/admin/src/components/YPagination.vue b/sample-form-client-ui/admin/src/components/YPagination.vue
new file mode 100644
index 0000000000000000000000000000000000000000..51f018f8b36f867a454665992c61a8ad163e2fe2
--- /dev/null
+++ b/sample-form-client-ui/admin/src/components/YPagination.vue
@@ -0,0 +1,118 @@
+<template>
+  <div class="page-turner" v-if="!hideOnSinglePage">
+    <div
+      :class="['btn-prev', { disabled: current == 1 }]"
+      @click="changePage(-1)"
+    >
+      <span> 涓婁竴椤� </span>
+    </div>
+    <div class="page-info">
+      <div>
+        褰撳墠 <span>{{ current }} / {{ sizeTotal }}</span> 椤�
+      </div>
+      <div>
+        鍏� <span>{{ total }}</span> 鏉′俊鎭�
+      </div>
+    </div>
+    <div
+      :class="[
+        'btn-next',
+        { disabled: current == sizeTotal || this.total == 0 },
+      ]"
+      @click="changePage(1)"
+    >
+      <span> 涓嬩竴椤� </span>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    current: {
+      type: Number,
+      required: true,
+      default: 0,
+    },
+    size: {
+      type: Number,
+      required: true,
+      default: 0,
+    },
+    total: {
+      type: Number,
+      required: true,
+      default: 0,
+    },
+    hideOnSinglePage: {
+      type: Boolean,
+      required: false,
+      default: false,
+    },
+  },
+  data() {
+    return {};
+  },
+  computed: {
+    sizeTotal() {
+      return Math.ceil(this.total / this.size);
+    },
+  },
+  methods: {
+    changePage(cur) {
+      if (
+        (this.current == 1 && cur == -1) ||
+        (this.current == this.sizeTotal && cur == 1) ||
+        this.total == 0
+      ) {
+        return;
+      }
+      this.$emit("change", this.current + cur);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.page-turner {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  gap: 20px;
+}
+
+.btn-prev,
+.btn-next {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  gap: 20px;
+  width: 150px;
+  height: 44px;
+  border: 1px solid var(--main-theme-color);
+  border-radius: 8px;
+  color: var(--main-theme-color);
+  cursor: pointer;
+  span {
+    font-size: 20px;
+  }
+}
+
+.page-info {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  gap: 20px;
+  gap: 20px;
+  color: #353535;
+  font-size: 18px;
+  span {
+    color: var(--main-theme-color);
+  }
+}
+.disabled {
+  border-color: #c0c4cc;
+  color: #353535;
+  cursor: no-drop;
+}
+</style>
diff --git a/sample-form-client-ui/admin/src/pages/home/Home.vue b/sample-form-client-ui/admin/src/pages/home/Home.vue
index be050495129787b1ac0065fe6e61c02162732f3d..42a18e8080be1180162c782ca1be9d16b09cdb8d 100644
--- a/sample-form-client-ui/admin/src/pages/home/Home.vue
+++ b/sample-form-client-ui/admin/src/pages/home/Home.vue
@@ -365,10 +365,12 @@ export default {
     },
     // 鏌ョ湅鏉愭枡鍒楄〃
     checkMatter(row) {
-      let time = this.$moment().format("YYYY-MM-DD HH:mm:ss");
-      this.SET_operTime(time);
-      this.matterInfo = row;
-      this.visible = true;
+      this.$router.push({
+        path: "/matterify",
+        query: {
+          matterId: row.id,
+        },
+      });
     },
     // 鏌ョ湅鏉愭枡
     checkMaterial(row) {
@@ -378,6 +380,7 @@ export default {
         query: {
           matterId: row.matterId,
           id: row.id,
+          categoryId: row.categoryId || "",
         },
       });
     },
diff --git a/sample-form-client-ui/admin/src/pages/searchpage/SearchPage.vue b/sample-form-client-ui/admin/src/pages/searchpage/SearchPage.vue
index 16e4c122b8a68ab8ad4ae2cd8927bc2e0920a5c7..45030c0c12771d89f1780d0d1a38e0a50a45d751 100644
--- a/sample-form-client-ui/admin/src/pages/searchpage/SearchPage.vue
+++ b/sample-form-client-ui/admin/src/pages/searchpage/SearchPage.vue
@@ -12,7 +12,7 @@
           >浠借〃鍗� -->
         </div>
         <SearchBox
-          slot="search"
+          slot="search-right"
           width="834px"
           @click="handleSearch"
           v-model="searchVal"
diff --git a/sample-form-client-ui/admin/src/pages/showpage/MatterIfy.vue b/sample-form-client-ui/admin/src/pages/showpage/MatterIfy.vue
index a7cc8ca4231939fe30f9f8473e3f6353fca446d6..49cc9881d962541a5ae36984b3703e92cdb5915c 100644
--- a/sample-form-client-ui/admin/src/pages/showpage/MatterIfy.vue
+++ b/sample-form-client-ui/admin/src/pages/showpage/MatterIfy.vue
@@ -1,10 +1,235 @@
 <template>
-  <div>11</div>
+  <div class="search-page flex flexc">
+    <Header>
+      <div slot="title" class="title">蹇€熸煡鐪�</div>
+    </Header>
+    <div class="main flex1 flex flexc">
+      <PageTop>
+        <div slot="count" class="count">
+          鍏辫<span class="data-count">{{ total + 1 }}</span
+          >涓枃浠跺す
+        </div>
+        <SearchBox
+          slot="search-right"
+          width="834px"
+          placeholder="杈撳叆鏂囦欢澶瑰叧閿瓧鎼滅储"
+          @click="handleSearch"
+          v-model="searchVal"
+        ></SearchBox>
+      </PageTop>
+      <!-- 浜嬮」鏂囦欢澶� -->
+      <div class="folder-box flex1">
+        <div class="folder-list">
+          <div class="folder-item" @click="handleCheck({})">
+            <div class="folder-img-box flex aic jcc">
+              <i class="iconfont icon-folder"></i>
+            </div>
+            <p class="folder-name tac">鎵€鏈�</p>
+          </div>
+          <div
+            class="folder-item"
+            v-for="v in folderList"
+            :key="v.id"
+            @click="handleCheck(v)"
+          >
+            <div class="folder-img-box flex aic jcc">
+              <i class="iconfont icon-folder"></i>
+            </div>
+            <p class="folder-name tac">{{ v.categoryName }}</p>
+          </div>
+        </div>
+        <!-- <YEmpty v-else width="200" text="鏆傛棤鏁版嵁"></YEmpty> -->
+        <!-- 鍒嗛〉 -->
+        <div class="tac">
+          <el-pagination
+            prev-text="涓婁竴椤�"
+            next-text="涓嬩竴椤�"
+            layout="prev,next"
+            :total="total"
+            hide-on-single-page
+            :current-page="current"
+            :page-size="size"
+            @current-change="changePage"
+          >
+          </el-pagination>
+        </div>
+      </div>
+    </div>
+    <!-- 鏉愭枡鍒楄〃 -->
+    <MateralsList
+      :matterInfo="matterInfo"
+      :visible.sync="visible"
+    ></MateralsList>
+  </div>
 </template>
 
 <script>
-export default {};
+import Header from "@/components/Header.vue";
+import PageTop from "@/components/PageTop.vue";
+import SearchBox from "@/components/SearchBox.vue";
+import MateralsList from "@/components/MateralsList.vue";
+import YEmpty from "@/components/YEmpty.vue";
+import {
+  getMatterFolderList,
+  getMaterialsList,
+  getSampleformMatterInfo,
+} from "@/api";
+import { mapMutations } from "vuex";
+export default {
+  components: {
+    Header,
+    PageTop,
+    SearchBox,
+    MateralsList,
+    YEmpty,
+  },
+  data() {
+    return {
+      row: 4,
+      searchVal: "",
+      total: 0,
+      current: 1,
+      size: 16,
+      matterInfo: {},
+      folderList: [],
+      visible: false,
+    };
+  },
+  created() {
+    this.getMatterFolderList();
+  },
+  watch: {
+    searchVal(newVal) {
+      if (newVal === "") {
+        this.current = 1;
+        this.getMatterFolderList();
+      }
+    },
+  },
+  methods: {
+    ...mapMutations(["SET_operTime"]),
+    // 鑾峰彇浜嬮」鍒嗙被
+    async getMatterFolderList() {
+      let res = await getMatterFolderList({
+        page: this.current,
+        size: this.size,
+        matterId: this.$route.query.matterId,
+        categoryName: `%${this.searchVal}%`,
+      });
+      if (res.data.code == 1) {
+        let { data, total } = res.data.data;
+        this.total = total;
+        this.folderList = data;
+      }
+    },
+
+    // 鎼滅储
+    handleSearch() {
+      this.current = 1;
+      this.getMatterFolderList();
+    },
+    // 鍒嗛〉
+    changePage(cur) {
+      this.current = cur;
+      this.getMatterFolderList();
+    },
+    // 鏌ョ湅
+    async handleCheck(row) {
+      let res = await getSampleformMatterInfo({
+        id: this.$route.query.matterId,
+      });
+      if (res.data.code == 1) {
+        let { data } = res.data;
+        let result = await getMaterialsList({
+          categoryId: row.id,
+          matterId: this.$route.query.matterId,
+          page: 1,
+          size: -1,
+        });
+        if (result.data.code == 1) {
+          data.matterDatumList = result.data.data.data;
+          this.matterInfo = data;
+          let time = this.$moment().format("YYYY-MM-DD HH:mm:ss");
+          this.SET_operTime(time);
+          this.matterInfo = data;
+          this.visible = true;
+        }
+      }
+    },
+  },
+};
 </script>
 
 <style lang="less" scoped>
-</style>
\ No newline at end of file
+.search-page {
+  width: 100%;
+  height: 100%;
+  background-color: #f5f5f5;
+}
+.main {
+  padding: 0px 40px;
+  padding-bottom: 30px;
+  .data-count {
+    color: #ff0000;
+  }
+}
+.folder-box {
+  width: 1840px;
+  height: 800px;
+  padding: 30px;
+  padding-bottom: 10px;
+  background: #ffffff;
+  border-radius: 16px;
+  position: relative;
+  .empty {
+    position: absolute;
+    left: 0;
+    top: 0;
+    right: 0;
+    bottom: 0;
+  }
+  .folder-list {
+    display: flex;
+    flex-wrap: wrap;
+    gap: 40px 115px;
+  }
+
+  .folder-item {
+    display: flex;
+    flex-direction: column;
+    gap: 20px;
+    cursor: pointer;
+    .folder-img-box {
+      width: 134px;
+      height: 129px;
+      background-color: rgba(250, 147, 45, 0.1);
+      border-radius: 16px;
+      i {
+        font-size: 90px;
+        color: #fca134;
+      }
+    }
+    .folder-name {
+      font-family: Source Han Sans CN;
+      font-weight: 500;
+      font-size: 24px;
+      color: #333333;
+    }
+  }
+}
+:deep(.btn-prev) {
+  margin-right: 80px;
+}
+:deep(.btn-prev),
+:deep(.btn-next) {
+  width: 78px;
+  height: 25px;
+  font-family: Source Han Sans CN;
+  font-weight: 400;
+  color: var(--main-theme-color);
+  line-height: 28px;
+  span {
+    font-size: 28px;
+  }
+}
+</style>
diff --git a/sample-form-client-ui/admin/src/pages/showpage/MatterList.vue b/sample-form-client-ui/admin/src/pages/showpage/MatterList.vue
index 9a7fc5d1e14800f60510e6a8f7cb96d1b7ae0222..afe0354a3b4a0569c311e72b3a1e4bb0ce19e091 100644
--- a/sample-form-client-ui/admin/src/pages/showpage/MatterList.vue
+++ b/sample-form-client-ui/admin/src/pages/showpage/MatterList.vue
@@ -89,6 +89,7 @@ import PageTop from "@/components/PageTop.vue";
 import SearchBox from "@/components/SearchBox.vue";
 import MateralsList from "../../components/MateralsList.vue";
 import YEmpty from "@/components/YEmpty.vue";
+import YPagination from "@/components/YPagination.vue";
 import { getDeviceMatterList } from "@/api";
 import { mapMutations } from "vuex";
 export default {
@@ -99,6 +100,7 @@ export default {
     SearchBox,
     MateralsList,
     YEmpty,
+    YPagination,
   },
   data() {
     return {
@@ -156,10 +158,16 @@ export default {
       this.getDeviceMatterList();
     },
     handleCheck(row) {
-      let time = this.$moment().format("YYYY-MM-DD HH:mm:ss");
-      this.SET_operTime(time);
-      this.matterInfo = row;
-      this.visible = true;
+      // let time = this.$moment().format("YYYY-MM-DD HH:mm:ss");
+      // this.SET_operTime(time);
+      // this.matterInfo = row;
+      // this.visible = true;
+      this.$router.push({
+        path: "/matterify",
+        query: {
+          matterId: row.matterId,
+        },
+      });
     },
     // 閲嶇疆鎼滅储
     // handleClear() {
diff --git a/sample-form-client-ui/admin/src/pages/showpage/ShowMaterials.vue b/sample-form-client-ui/admin/src/pages/showpage/ShowMaterials.vue
index d6eba79865cf9bc713e83d69d24d1b5f3ba53c47..2e972936e1af870098eb3744984c42da7f04c873 100644
--- a/sample-form-client-ui/admin/src/pages/showpage/ShowMaterials.vue
+++ b/sample-form-client-ui/admin/src/pages/showpage/ShowMaterials.vue
@@ -173,6 +173,7 @@ export default {
       matterName: "", // 浜嬮」鍚嶇О
       matterId: this.$route.query.matterId, // 浜嬮」id
       materailsId: this.$route.query.id, // 鏉愭枡id
+      categoryId: this.$route.query.categoryId, // 鍒嗙被id
       materailsList: [],
       active: 0,
       scale: 100,
@@ -202,6 +203,7 @@ export default {
         page: 1,
         size: -1,
         matterId: this.matterId,
+        categoryId: this.categoryId,
       });
       let { data } = res.data.data;
       data.forEach((v) => {