diff --git a/sample-form-manager-ui/admin/src/api/libray.js b/sample-form-manager-ui/admin/src/api/libray.js
new file mode 100644
index 0000000000000000000000000000000000000000..0efb59a5af927e86e3166cb4ef6210c706ff29e6
--- /dev/null
+++ b/sample-form-manager-ui/admin/src/api/libray.js
@@ -0,0 +1,62 @@
+import request from '@/utils/request'
+
+/**
+ *  鏉愭枡鍏叡搴�
+ */
+
+// 鑾峰彇鍏叡搴撳垪琛�
+export const getPubdatumList = (data) => {
+    return request({
+      url: `/sampleform/pubdatum/list`,
+      method: "post",
+      data,
+    });
+  };
+
+
+//   鍒犻櫎鍏叡搴撴潗鏂�
+export const delPubdatum = (params) => {
+    return request({
+        url: `/sampleform/pubdatum/delete`,
+        method: "get",
+        params,
+    });
+};
+
+//   鍔犲叆鏍疯〃浜嬮」
+export const createMatter = (params) => {
+    return request({
+      url: `/sampleform/matter/createMatter`,
+      method: "get",
+      params,
+    });
+  };
+
+//   鏌ヨ鏍疯〃绯荤粺浜嬮」鍒楄〃
+export const getWriteMatterList = (data) => {
+    return request({
+      url: `/sampleform/pubdatum/list`,
+      method: "post",
+      data,
+    });
+  };
+
+//   淇濆瓨鏂板鏍疯〃浜嬮」
+export const addMatter = (data) => {
+    return request({
+      url: `/sampleform/matter/save`,
+      method: "post",
+      data,
+    });
+  };
+
+
+
+//   鎺ㄨ崘浜嬮」
+export const recommendMatter = (params) => {
+    return request({
+      url: `/sampleform/matter/recommend`,
+      method: "get",
+      params,
+    });
+  };
\ No newline at end of file
diff --git a/sample-form-manager-ui/admin/src/pages/software/librarymanage/LibraryManage.vue b/sample-form-manager-ui/admin/src/pages/software/librarymanage/LibraryManage.vue
index 032b9d646d33e128a21aed900113e11535b33d43..d3cbdcb4b11bafb2866e9041cdea334c60b7aca0 100644
--- a/sample-form-manager-ui/admin/src/pages/software/librarymanage/LibraryManage.vue
+++ b/sample-form-manager-ui/admin/src/pages/software/librarymanage/LibraryManage.vue
@@ -6,15 +6,15 @@
       </div>
       <TableHeader>
         <div slot="left">
-          <el-button size="small" type="primary" @click="handleAddMaterials"
+<!--          <el-button size="small" type="primary" @click="handleAddMaterials"
             >鍔犲叆鏉愭枡</el-button
-          >
+          >-->
           <el-button size="small" type="danger" @click="handleDelAll"
             >鎵归噺绉婚櫎</el-button
           >
         </div>
         <div slot="right" class="flex">
-          <el-select
+<!--          <el-select
             v-model="department"
             size="small"
             class="autoWidth"
@@ -30,7 +30,7 @@
               :value="item.id"
             >
             </el-option>
-          </el-select>
+          </el-select>-->
           <el-input
             size="small"
             v-model="searchVal"
@@ -49,6 +49,7 @@
         <el-table
           ref="multipleTable"
           size="small"
+          v-loading="loading"
           :data="tableData"
           border
           tooltip-effect="dark"
@@ -69,20 +70,20 @@
           </el-table-column>
           <el-table-column
             show-overflow-tooltip
-            label="閮ㄩ棬"
+            label="閮ㄩ棬缂栧彿"
             align="center"
-            prop="department"
-            width="80"
+            prop="deptCode"
+            width="160"
           >
           </el-table-column>
           <el-table-column prop="name" show-overflow-tooltip label="鏉愭枡鍚嶇О">
             <template slot-scope="scope">
-              <p class="short">{{ scope.row.name }}</p>
-              <p class="full-name">鏉愭枡鍏ㄧО锛歿{ scope.row.name2 }}</p>
+              <p class="short">{{ scope.row.materialName }}</p>
+              <p class="full-name">鏉愭枡鍏ㄧО锛歿{ scope.row.materiaFullName }}</p>
             </template>
           </el-table-column>
           <el-table-column
-            prop="time"
+            prop="createTime"
             label="娣诲姞鏃堕棿"
             align="center"
             width="150"
@@ -135,12 +136,12 @@
 import TableHeader from "@/components/TableHeader.vue";
 import AddMaterals from "./modal/AddMaterals.vue";
 import PreviewMaterals from "./modal/PreviewMaterals.vue";
-import { mapGetters } from "vuex";
+import { getPubdatumList,delPubdatum } from "@/api/libray";
 export default {
   components: {
     TableHeader,
     AddMaterals,
-    PreviewMaterals,
+    PreviewMaterals
   },
   data() {
     return {
@@ -170,6 +171,7 @@ export default {
       size: 10,
       total: 10,
       pageSizes: [10, 20, 30, 40, 50, 100, 200],
+      loading: false,
       selectKeys: [],
       depList: [],
       libVisible: false,
@@ -177,10 +179,30 @@ export default {
       previewVisible: false,
     };
   },
-  computed: {
-    ...mapGetters(["deptList"]),
+  created() {
+    this.getPbuList();
   },
+  // computed: {
+  //   ...mapGetters(["deptList"]),
+  // },
   methods: {
+    // 绯荤粺浜嬮」鍒楄〃
+    async getPbuList() {
+      this.loading = true;
+      let res = await getPubdatumList({
+        page: this.current,
+        size: this.size,
+      });
+      this.loading = false;
+      console.log("res",res)
+      if (res.data.code === 1) {
+        let { data, total } = res.data.data;
+        this.tableData = data;
+        this.total = total;
+
+      }
+    },
+
     // 鍔犲叆鏉愭枡
     handleAddMaterials() {
       this.libVisible = true;
@@ -191,6 +213,9 @@ export default {
         this.$message.warning("璇峰厛鍕鹃€夋暟鎹�");
         return;
       }
+
+      let ids = this.selectKeys.map((v) => v.id).join(",");
+      this.handleDel(ids);
     },
     // 鎼滅储
     handleSearch() {
@@ -232,6 +257,13 @@ export default {
       )
         .then(async () => {
           console.log(id);
+          let res = await delPubdatum({ id });
+          let { code, msg } = res.data;
+          if (code === 1) {
+            this.$message.success(msg);
+            this.getPbuList();
+            this.selectKeys = [];
+          }
         })
         .catch(() => {
           console.log("鍙栨秷鎴愬姛锛�");
diff --git a/sample-form-manager/src/main/java/com/mortals/xhx/module/matter/service/impl/MatterDatumServiceImpl.java b/sample-form-manager/src/main/java/com/mortals/xhx/module/matter/service/impl/MatterDatumServiceImpl.java
index 06a389fc4aca5582712d5d95721e3ef5ab367968..dbd5f173a39d87a4147d50586c02566cfb4dd26c 100644
--- a/sample-form-manager/src/main/java/com/mortals/xhx/module/matter/service/impl/MatterDatumServiceImpl.java
+++ b/sample-form-manager/src/main/java/com/mortals/xhx/module/matter/service/impl/MatterDatumServiceImpl.java
@@ -94,17 +94,27 @@ public class MatterDatumServiceImpl extends AbstractCRUDServiceImpl<MatterDatumD
             matterEntity.setDatumCount(count);
             matterService.update(matterEntity, context);
         }
+        addPubdatum(entity, context);
+        super.saveAfter(entity, context);
+    }
 
-        if(!ObjectUtils.isEmpty(entity.getPub())&&entity.getPub()==YesNoEnum.YES.getValue()){
+    private void addPubdatum(MatterDatumEntity entity, Context context) {
+        if (!ObjectUtils.isEmpty(entity.getPub()) && entity.getPub() == YesNoEnum.YES.getValue()) {
             //娣诲姞鍒板叕鍏卞簱
             PubdatumEntity pubdatumEntity = new PubdatumEntity();
             pubdatumEntity.initAttrValue();
-            BeanUtils.copyProperties(entity,pubdatumEntity,new String[]{"id"});
+            BeanUtils.copyProperties(entity, pubdatumEntity, new String[]{"id"});
             pubdatumEntity.setCreateTime(new Date());
             pubdatumEntity.setCreateUserId(getContextUserId(context));
-            pubdatumService.save(pubdatumEntity,context);
+            pubdatumService.save(pubdatumEntity, context);
         }
-        super.saveAfter(entity, context);
+    }
+
+
+    @Override
+    protected void updateAfter(MatterDatumEntity entity, Context context) throws AppException {
+        addPubdatum(entity, context);
+        super.updateAfter(entity, context);
     }
 
     @Override