bill vor 1 Jahr
Ursprung
Commit
ef814a2e0e

+ 8 - 0
src/app/fire/routeConfig.ts

@@ -5,6 +5,7 @@ export const FireRouteName = {
   ...RouteName,
   dispatch: "dispatch",
   teaching: "teaching",
+  recycle: "recycle",
 } as const;
 
 export const menuRouteNames = [
@@ -18,6 +19,7 @@ export const menuRouteNames = [
   FireRouteName.user,
   FireRouteName.downloadLog,
   FireRouteName.setting,
+  FireRouteName.recycle,
 ];
 
 export const routes: Routes = [
@@ -33,4 +35,10 @@ export const routes: Routes = [
     component: () => import("./view/dispatch/index.vue"),
     meta: { title: "教学平台", icon: "iconfire_study" },
   },
+  {
+    name: FireRouteName.recycle,
+    path: "recycle",
+    component: () => import("./view/dispatch/index.vue"),
+    meta: { title: "案件回收", icon: "icon-del" },
+  },
 ];

+ 13 - 6
src/app/fire/store/fire.ts

@@ -63,11 +63,13 @@ type FirePaggingParams = PaggingReq<Fire & { queryType: FirePaggingRoute }>;
 export const getFirePagging = async (params: FirePaggingParams) =>
   (await axios.get(getFireList, { params })).data as PaggingRes<Fire>;
 
-export const addFire = async (fire: Omit<Fire, "id">) => axios.post(insertFire, fire);
+export const addFire = async (fire: Omit<Fire, "id">) =>
+  axios.post(insertFire, fire);
 
 export const setFire = async (fire: Fire) => await axios.post(updateFire, fire);
 
-export const delFire = (fire: Fire) => setFire({ ...fire, isDelete: 1 });
+export const delFire = (fire: Fire, isDelete = 1) =>
+  setFire({ ...fire, isDelete: isDelete });
 
 export const getFire = async (projectId: string) =>
   (await axios.get<Fire>(fireDetail, { params: { type: 0, projectId } })).data;
@@ -85,8 +87,13 @@ export type FireLeaveMsg = {
   createTime: number;
 };
 
-export const getFireLeaveMsgPagging = async (params: PaggingReq<{ projectId: string }>) =>
-  (await axios.get(getMessageList, { params })).data as PaggingRes<FireLeaveMsg>;
+export const getFireLeaveMsgPagging = async (
+  params: PaggingReq<{ projectId: string }>
+) =>
+  (await axios.get(getMessageList, { params }))
+    .data as PaggingRes<FireLeaveMsg>;
 
-export const addFireLeaveMsg = (params: { content: string; projectId: string }) =>
-  axios.post(insertMessage, params);
+export const addFireLeaveMsg = (params: {
+  content: string;
+  projectId: string;
+}) => axios.post(insertMessage, params);

+ 71 - 48
src/app/fire/view/dispatch/index.vue

@@ -2,29 +2,31 @@
   <Header :pagging="pagging" :isTeached="isTeached" />
   <List :pagging="pagging" :checkPerm="isTeached ? 'cancel' : 'teach'">
     <template v-slot:tableCtrl>
-      <template v-if="isTeached">
-        <el-button
-          type="primary"
-          @click="revokeTeaching()"
-          v-pdpath="'cancel'"
-          :class="{ disable: !pagging.state.table.selectRows.length }"
-        >
-          撤销教学
-        </el-button>
-      </template>
-      <template v-else>
-        <el-button type="primary" @click="openMap"> 查看地图案件分布 </el-button>
-        <el-button type="primary" @click="addHandler" v-pdpath="'add'">
-          新增火调项目
-        </el-button>
-        <el-button
-          type="primary"
-          @click="setTeaching"
-          v-pdpath="'teach'"
-          :class="{ disable: !pagging.state.table.selectRows.length }"
-        >
-          设为教学项目
-        </el-button>
+      <template v-if="!isRecycle">
+        <template v-if="isTeached">
+          <el-button
+            type="primary"
+            @click="revokeTeaching()"
+            v-pdpath="'cancel'"
+            :class="{ disable: !pagging.state.table.selectRows.length }"
+          >
+            撤销教学
+          </el-button>
+        </template>
+        <template v-else>
+          <el-button type="primary" @click="openMap"> 查看地图案件分布 </el-button>
+          <el-button type="primary" @click="addHandler" v-pdpath="'add'">
+            新增火调项目
+          </el-button>
+          <el-button
+            type="primary"
+            @click="setTeaching"
+            v-pdpath="'teach'"
+            :class="{ disable: !pagging.state.table.selectRows.length }"
+          >
+            设为教学项目
+          </el-button>
+        </template>
       </template>
     </template>
 
@@ -35,37 +37,58 @@
     </template>
 
     <template v-slot:rowCtrl="{ row }: { row: Fire }">
-      <template v-if="isTeached">
-        <span class="oper-span" @click="gotoQuery(row.caseId)" v-pdpath="['view']">
-          查看
-        </span>
-        <span
-          class="oper-span"
-          @click="showMessageHandler(row)"
-          v-pdpath="['message:look']"
-          >留言
-        </span>
+      <template v-if="!isRecycle">
+        <template v-if="isTeached">
+          <span class="oper-span" @click="gotoQuery(row.caseId)" v-pdpath="['view']">
+            查看
+          </span>
+          <span
+            class="oper-span"
+            @click="showMessageHandler(row)"
+            v-pdpath="['message:look']"
+            >留言
+          </span>
+        </template>
+        <template v-else>
+          <CaseEditMenu
+            :prev-menu="[
+              {
+                key: 'info',
+                label: '火调信息',
+                onClick: () => editHandler(row),
+              },
+            ]"
+            :caseId="row.caseId"
+            v-if="row.caseId"
+          />
+          <span class="oper-span" @click="gotoQuery(row.caseId)" v-pdpath="['view']">
+            查看
+          </span>
+          <span
+            class="oper-span"
+            @click="pagging.del(row)"
+            style="color: var(--primaryColor)"
+            v-pdpath="['del']"
+          >
+            删除
+          </span>
+        </template>
       </template>
       <template v-else>
-        <CaseEditMenu
-          :prev-menu="[
-            {
-              key: 'info',
-              label: '火调信息',
-              onClick: () => editHandler(row),
-            },
-          ]"
-          :caseId="row.caseId"
-          v-if="row.caseId"
-        />
-        <span class="oper-span" @click="gotoQuery(row.caseId)" v-pdpath="['view']">
-          查看
+        <span
+          class="oper-span"
+          @click="async () => {
+            await editFire({...row, isDelete: 0} as any)
+            pagging.refresh();
+          }"
+          style="color: var(--primaryColor)"
+        >
+          恢复
         </span>
         <span
           class="oper-span"
           @click="pagging.del(row)"
           style="color: var(--primaryColor)"
-          v-pdpath="['del']"
         >
           删除
         </span>
@@ -86,7 +109,7 @@ import { addFire, editFire, showLeaveMsgList, addLeaveMsg } from "./quisk";
 import { shareCase } from "@/view/case/quisk";
 import { ElMessage } from "element-plus";
 
-const { pagging, isTeached } = useFirePagging();
+const { pagging, isTeached, isRecycle } = useFirePagging();
 
 // 撤销教学
 const revokeTeaching = async (row?: Fire) => {

+ 18 - 6
src/app/fire/view/dispatch/pagging.ts

@@ -14,10 +14,15 @@ export const useFirePagging = () => {
   const isTeached = computed(
     () => router.currentRoute.value.name === FireRouteName.teaching
   );
+  const isRecycle = computed(
+    () => router.currentRoute.value.name === FireRouteName.recycle
+  );
 
   const pagging = usePagging({
     get: getFirePagging,
-    del: delFire,
+    del: async (raw) => {
+      await delFire(raw, isRecycle.value ? 2 : 1);
+    },
     mapper: {
       delMsg: "删除火调项目,相关档案也会一并删除,确定要删除吗?",
     },
@@ -26,6 +31,7 @@ export const useFirePagging = () => {
       projectName: "",
       projectAddress: "",
       deptId: "",
+      isDelete: 0,
       accidentDate: "",
       status: FireStatus.all,
       projectSiteCode: "",
@@ -35,11 +41,17 @@ export const useFirePagging = () => {
   });
 
   watch(
-    () => [pagging.state.query.queryType, isTeached.value],
+    () => [pagging.state.query.queryType, isTeached.value, isRecycle.value],
     () => {
-      pagging.state.query.queryType = isTeached.value
-        ? FirePaggingRoute.teached
-        : FirePaggingRoute.fire;
+      if (isRecycle.value) {
+        pagging.state.query.queryType = FirePaggingRoute.fire;
+        pagging.state.query.isDelete = 1;
+      } else {
+        pagging.state.query.isDelete = 0;
+        pagging.state.query.queryType = isTeached.value
+          ? FirePaggingRoute.teached
+          : FirePaggingRoute.fire;
+      }
     },
     { flush: "sync", immediate: true }
   );
@@ -52,6 +64,6 @@ export const useFirePagging = () => {
     { flush: "sync" }
   );
 
-  return { pagging, isTeached };
+  return { pagging, isTeached, isRecycle };
 };
 export type FirePagging = ReturnType<typeof useFirePagging>["pagging"];

+ 2 - 1
src/assets/style/public.scss

@@ -312,7 +312,8 @@ body {
 }
 
 .el-message-box__status {
-  top: -31px !important;
+  top : -20px !important;
+  left: -31px;
 }
 
 .el-message-box__title span::before {

+ 9 - 0
src/assets/style/theme/d8000a.scss

@@ -0,0 +1,9 @@
+@forward 'element-plus/theme-chalk/src/common/var.scss'with ($colors: ('primary': ('base': #d8000a, )),
+  $common-component-size: ('default': 40px));
+
+@use "element-plus/theme-chalk/src/index.scss"as *;
+
+.delBtn {
+  color   : #d8000a;
+  // color: rgb(250, 85, 85);
+}

+ 1 - 0
src/setSystem.ts

@@ -32,6 +32,7 @@ const update = () => {
 };
 
 export const themeColors = [
+  "d8000a",
   "0960bd",
   "0084f4",
   "009688",

+ 5 - 1
src/view/layout/slide/index.vue

@@ -18,10 +18,14 @@
 import subMenu from "./submenu.vue";
 import { getPermissionRoutes } from "@/store/permission";
 import { RouteName, router } from "@/router";
+import { FireRouteName } from "@/app/fire/routeConfig";
 
 const props = defineProps<{ names: string[] }>();
 
-const routes = getPermissionRoutes(props.names, [RouteName.setting]);
+const routes = getPermissionRoutes(props.names, [
+  RouteName.setting,
+  FireRouteName.recycle,
+]);
 </script>
 
 <style lang="scss" scoped>