ソースを参照

feat(Web管理端): 新增方案删除入口(弹窗确认后级联删除任务,任务5/6)

iwt 1 週間 前
親
コミット
c751f7a60f

+ 9 - 0
cfc-web/src/api/healthPlan.js

@@ -57,3 +57,12 @@ export function adminGetHealthPlanDetail(data) {
     data
   })
 }
+
+/** 管理端:删除健康方案(级联删除方案任务,含每日实例) */
+export function adminDeleteHealthPlan(data) {
+  return request({
+    url: '/api/admin/health-plan/delete',
+    method: 'post',
+    data
+  })
+}

+ 28 - 2
cfc-web/src/views/admin/HealthPlanManage.vue

@@ -56,9 +56,10 @@
             <span class="sort-header" @click.stop="onSortClick('createdAt', $event)">创建时间<span v-if="sortIndex('createdAt') !== null" class="sort-index" :class="sortClass('createdAt') === 'sort-asc' ? 'sort-asc-badge' : 'sort-desc-badge'">{{ sortIndex('createdAt') }}</span>{{ sortIcon('createdAt') }}</span>
           </template>
       </el-table-column>
-      <el-table-column label="操作" width="100">
+      <el-table-column label="操作" width="140">
         <template slot-scope="{ row }">
           <el-button size="mini" type="primary" @click="showDetail(row)">详情</el-button>
+          <el-button size="mini" type="danger" style="margin-left:6px" @click="onDeletePlan(row)">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -128,7 +129,7 @@
 
 <script>
 import SortMixin from '@/mixins/SortMixin'
-import { adminListHealthPlans, adminGetHealthPlanDetail } from '@/api/healthPlan'
+import { adminListHealthPlans, adminGetHealthPlanDetail, adminDeleteHealthPlan } from '@/api/healthPlan'
 
 export default {
   name: 'HealthPlanManage',
@@ -184,6 +185,31 @@ export default {
       this.pageNum = page
       this.loadPlans()
     },
+    async onDeletePlan(row) {
+      try {
+        await this.$confirm(
+          '删除后不可恢复:该方案及其已生成的所有任务(含每日生成的实例)将一并删除。确认删除?',
+          '删除方案',
+          { type: 'warning', confirmButtonText: '删除', confirmButtonClass: 'el-button--danger' }
+        )
+      } catch (e) {
+        return // 用户取消
+      }
+      try {
+        const res = await adminDeleteHealthPlan({ planId: row.id })
+        if (res.code === 200) {
+          const count = (res.data && res.data.taskCount) || 0
+          this.$message.success('已删除方案及 ' + count + ' 条任务')
+          // 删除本页最后一条且不在第一页时回退一页,避免空页
+          if (this.plans.length === 1 && this.pageNum > 1) this.pageNum = this.pageNum - 1
+          this.loadPlans()
+        } else {
+          this.$message.error(res.message || '删除失败')
+        }
+      } catch (e) {
+        this.$message.error('删除失败')
+      }
+    },
     async showDetail(row) {
       this.detailVisible = true
       this.detailLoading = true