Prechádzať zdrojové kódy

💊 佐证材料删除功能

快乐的梦鱼 1 mesiac pred
rodič
commit
fa12e56b7b

+ 8 - 0
src/api/collect/AssessmentContent.ts

@@ -850,6 +850,14 @@ export class AssessmentContentApi extends AppServerRequestModule<DataModel> {
   }
 
   /**
+   * 删除证明材料
+   * POST `/ich/check/delAnnex`
+   */
+  async delAnnex(id: number) {
+    return this.post('/ich/check/delAnnex', '删除证明材料', { id });
+  }
+
+  /**
    * 传承人基础信息(默认当前用户;管理员可传 userId)
    */
   async getInheritorBasic(userId?: number) {

+ 35 - 0
src/pages/collect/assessment/components/EvaluationFormBlock.vue

@@ -61,6 +61,7 @@
             v-show="currentForm.id"
             :ref="(el) => bindUploaderRef(item.id, el)"
             :upload="getAnnexUpload(item.id)"
+            :onDeleteClick="(file) => handleAnnexRemove(item.id, file)"
             :max-upload-count="100"
             :max-file-size="20 * 1024 * 1024"
             :group-type="true"
@@ -301,6 +302,40 @@ function bindUploaderRef(itemId: number, el: unknown) {
     loadAnnexListByItem(itemId);
 }
 
+function handleAnnexRemove(itemId: number, item: UploaderItem): Promise<void> {
+  const annexItem = item as AnnexUploaderItem;
+  const meta = annexItem.annexMeta;
+  if (!meta?.id || item.state !== 'success')
+    return Promise.resolve();
+  return new Promise((resolve, reject) => {
+    uni.showModal({
+      title: '确认删除',
+      content: '确定要删除该佐证材料吗?',
+      confirmText: '删除',
+      confirmColor: '#ff4d4f',
+      success: async (res) => {
+        if (!res.confirm) {
+          reject(new Error('cancel'));
+          return;
+        }
+        try {
+          await AssessmentContentApi.delAnnex(meta.id);
+          await loadAnnexListByItem(itemId);
+          uni.showToast({ title: '删除成功', icon: 'success' });
+          resolve();
+        } catch (err) {
+          uni.showToast({
+            title: err instanceof Error ? err.message : '删除失败',
+            icon: 'none',
+          });
+          reject(err);
+        }
+      },
+      fail: () => reject(new Error('cancel')),
+    });
+  });
+}
+
 function getAnnexUpload(itemId: number) {
   const cached = uploadCoMap.get(itemId);
   if (cached)