From 1788c96aea9247cc36ef8b82734997f1a6a92fb4 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 23 八月 2024 11:07:42 +0800
Subject: [PATCH] 新增新版本。静安区特供版

---
 src/components/mission/MissionManage.vue |  197 +++++++++++++++++++++++++-----------------------
 1 files changed, 103 insertions(+), 94 deletions(-)

diff --git a/src/components/mission/MissionManage.vue b/src/components/mission/MissionManage.vue
index d7efdb4..7e67122 100644
--- a/src/components/mission/MissionManage.vue
+++ b/src/components/mission/MissionManage.vue
@@ -7,116 +7,125 @@
   >
     浠诲姟绠$悊
   </el-button>
-  <el-dialog v-model="dialogVisible" :show-close="false" align-center>
-    <template #header="{ close, titleId, titleClass }">
-      <BaseCard direction="top-left" borderless="t">
-        <template #content>
-          <el-row justify="space-between" align="middle">
-            <el-row align="middle">
-              <font-awesome-icon icon="fa fa-list" class="m-r-4" />
-              <span :id="titleId" :class="titleClass">璧拌埅浠诲姟绠$悊</span>
-            </el-row>
-            <font-awesome-icon
-              icon="fa fa-times"
-              class="cursor-p m-r-4"
-              @click="close"
-            />
-          </el-row>
-        </template>
-      </BaseCard>
-    </template>
-    <BaseCard size="medium">
-      <template #content>
-        <el-row class="mission-table">
-          <el-col :span="20">
-            <el-table
-              :data="missionList"
-              table-layout="fixed"
-              size="small"
-              :show-overflow-tooltip="true"
-              border
-              row-class-name="t-row"
-              cell-class-name="t-cell"
-              header-row-class-name="t-header-row"
-              header-cell-class-name="t-header-cell"
-            >
-              <el-table-column
-                type="index"
-                label="搴忓彿"
-                align="center"
-                width="50"
-              />
-              <el-table-column
-                prop="missionCode"
-                label="浠诲姟缂栧彿"
-                align="center"
-              />
-              <el-table-column
-                prop="startTime"
-                label="寮�濮嬫椂闂�"
-                align="center"
-                :formatter="timeFormatter"
-              />
-              <el-table-column
-                prop="endTime"
-                label="缁撴潫鏃堕棿"
-                align="center"
-                :formatter="timeFormatter"
-              />
-              <el-table-column label="绠$悊" width="70" align="center">
-                <template #default="{ row }">
-                  <el-button
-                    type="primary"
-                    size="small"
-                    class="el-button-custom"
-                    @click="deleteMission(row)"
-                    >鍒犻櫎</el-button
-                  >
-                </template>
-              </el-table-column>
-            </el-table>
-          </el-col>
-          <el-col :span="4" class="flex-col">
-            <div>
-              <!-- <el-button type="primary" class="el-button-custom">
+  <CardDialog v-model="dialogVisible" title="璧拌埅浠诲姟绠$悊">
+    <el-row class="mission-table">
+      <el-col :span="20">
+        <el-table
+          :data="missionStore.missionList"
+          table-layout="fixed"
+          size="small"
+          :show-overflow-tooltip="true"
+          border
+          height="64vh"
+          row-class-name="t-row"
+          cell-class-name="t-cell"
+          header-row-class-name="t-header-row"
+          header-cell-class-name="t-header-cell"
+        >
+          <el-table-column
+            type="index"
+            label="搴忓彿"
+            align="center"
+            width="50"
+          />
+          <el-table-column prop="missionCode" label="浠诲姟缂栧彿" align="center" />
+          <el-table-column
+            prop="startTime"
+            label="寮�濮嬫椂闂�"
+            align="center"
+            :formatter="timeFormatter"
+          />
+          <el-table-column
+            prop="endTime"
+            label="缁撴潫鏃堕棿"
+            align="center"
+            :formatter="timeFormatter"
+          />
+          <el-table-column label="绠$悊" width="140" align="center">
+            <template #default="{ row }">
+              <el-button
+                type="primary"
+                size="small"
+                class="el-button-custom"
+                @click="deleteMission(row)"
+                >鍒犻櫎</el-button
+              >
+              <el-button
+                :loading="row.downloadLoading"
+                type="primary"
+                size="small"
+                class="el-button-custom"
+                @click="downloadReport(row)"
+                >鎶ュ憡</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-col>
+      <el-col :span="4" class="flex-col">
+        <div>
+          <!-- <el-button type="primary" class="el-button-custom">
                 鏂板缓浠诲姟
               </el-button> -->
-              <MissionCreate></MissionCreate>
-            </div>
-            <div>
-              <el-button type="primary" class="el-button-custom">
-                鏁版嵁瀵煎叆
-              </el-button>
-            </div>
-            <div>
-              <el-button type="primary" class="el-button-custom">
-                涓嬭浇妯℃澘
-              </el-button>
-            </div>
-          </el-col>
-        </el-row>
-      </template>
-    </BaseCard>
-  </el-dialog>
+          <MissionCreate></MissionCreate>
+        </div>
+        <!-- <div>
+          <el-button type="primary" class="el-button-custom">
+            鏁版嵁瀵煎叆
+          </el-button>
+        </div> -->
+        <!-- <div>
+          <el-button type="primary" class="el-button-custom">
+            涓嬭浇妯℃澘
+          </el-button>
+        </div> -->
+      </el-col>
+    </el-row>
+  </CardDialog>
+  <MessageBox
+    v-model="msgBoxVisible"
+    :on-confirm="onConfirm"
+    title="鍒犻櫎璧拌埅浠诲姟"
+    msg="纭鏄惁鍒犻櫎璇ヨ蛋鑸换鍔�"
+    confirmText="鍒犻櫎"
+  ></MessageBox>
 </template>
 <script>
 import moment from 'moment';
-import { mapState } from 'pinia';
+import missionApi from '@/api/missionApi';
+import { mapStores } from 'pinia';
 import { useMissionStore } from '@/stores/mission';
+import { useFetchData } from '@/composables/fetchData';
 
 export default {
+  setup() {
+    const { loading, fetchData } = useFetchData();
+    return { loading, fetchData };
+  },
   props: {},
   data() {
     return {
-      dialogVisible: false
+      dialogVisible: false,
+      msgBoxVisible: false,
+      onConfirm: undefined
     };
   },
   computed: {
-    ...mapState(useMissionStore, ['missionList'])
+    ...mapStores(useMissionStore)
   },
   methods: {
-    createMission() {},
-    deleteMission(row) {},
+    deleteMission(row) {
+      this.onConfirm = () => {
+        this.missionStore.deleteMission(row.missionCode);
+      };
+      this.msgBoxVisible = true;
+    },
+    downloadReport(row) {
+      row.downloadLoading = true;
+      missionApi
+        .downloadReport(row.missionCode)
+        .finally(() => (row.downloadLoading = false));
+    },
     timeFormatter(row, col, cellValue, index) {
       return moment(cellValue).format('YYYY-MM-DD HH:mm:ss');
     }

--
Gitblit v1.9.3