From 44f10c278aae48b8793ae7309488c24494e69866 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期二, 18 十一月 2025 14:46:19 +0800
Subject: [PATCH] fix: s

---
 src/views/MaterialReview/MaterialReview.vue                       |   35 ++++++++
 src/views/MaterialReview/MaterialReReviewList.vue                 |   35 ++++++++
 src/constants/reward.ts                                           |    1 
 src/services/api/typings.d.ts                                     |    8 ++
 src/views/MaterialReview/components/ParkBountyApplyRedoDialog.vue |   76 +++++++++++++++++++
 src/services/api/ParkBountyApply.ts                               |   30 +++++++
 src/views/MaterialReview/MaterialReviewDetail.vue                 |   12 ++
 7 files changed, 191 insertions(+), 6 deletions(-)

diff --git a/src/constants/reward.ts b/src/constants/reward.ts
index d637c28..3240cec 100644
--- a/src/constants/reward.ts
+++ b/src/constants/reward.ts
@@ -22,6 +22,7 @@
 }
 
 export const BountyCheckStatusEnumText = {
+  [BountyCheckStatusEnum.Redoed]: '宸叉挙鍥�',
   [BountyCheckStatusEnum.WaitCheck]: '寰呭鏍�',
   [BountyCheckStatusEnum.CheckPassed]: '瀹℃牳閫氳繃',
   [BountyCheckStatusEnum.CheckReject]: '瀹℃牳鏈�氳繃',
diff --git a/src/services/api/ParkBountyApply.ts b/src/services/api/ParkBountyApply.ts
index 978cf23..b64751b 100644
--- a/src/services/api/ParkBountyApply.ts
+++ b/src/services/api/ParkBountyApply.ts
@@ -931,6 +931,36 @@
   });
 }
 
+/** 鏀垮姟绔�-鏉愭枡瀹℃牳-澶栭儴瀹℃牳鎾ゅ洖 POST /api/ParkBountyApply/OutcheckParkBountyApplyRedoed */
+export async function outcheckParkBountyApplyRedoed(
+  body: API.OutcheckParkBountyApplyRedoedInput,
+  options?: API.RequestConfig
+) {
+  return request<number>('/api/ParkBountyApply/OutcheckParkBountyApplyRedoed', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
+/** 澶栭儴瀹℃牳鎾ゅ洖-澶嶅鎾ゅ洖 POST /api/ParkBountyApply/OutcheckParkBountyApplyReRedoed */
+export async function outcheckParkBountyApplyReRedoed(
+  body: API.OutcheckParkBountyApplyRedoedInput,
+  options?: API.RequestConfig
+) {
+  return request<number>('/api/ParkBountyApply/OutcheckParkBountyApplyReRedoed', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 鏀垮姟绔�-鏉愭枡瀹℃牳-澶栭儴澶嶅鏍� POST /api/ParkBountyApply/OutReCheckParkBountyApply */
 export async function outReCheckParkBountyApply(
   body: API.OutReCheckParkBountyApplyInput,
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index a324258..2bee1ca 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -9374,6 +9374,8 @@
     outReCheckStatus?: BountyCheckStatusEnum;
     /** 鏀垮姟绔瀹℃椂闂� */
     outReCheckTime?: string;
+    /** 鎾ゅ洖鍘熷洜 */
+    reasonForWithdrawal?: string;
   }
 
   interface GetParkBountyApplyListOutputPageOutput {
@@ -16676,6 +16678,12 @@
     extraListFiles?: CustomerUploadMonthApplyFileTypeDto[];
   }
 
+  interface OutcheckParkBountyApplyRedoedInput {
+    parkBountyApplyId?: string;
+    /** 鎾ゅ洖鍘熷洜 */
+    reasonForWithdrawal?: string;
+  }
+
   interface OutReCheckParkBountyApplyInput {
     parkBountyApplyId?: string;
     outReCheckStatus?: BountyCheckStatusEnum;
diff --git a/src/views/MaterialReview/MaterialReReviewList.vue b/src/views/MaterialReview/MaterialReReviewList.vue
index 43178ac..39f1213 100644
--- a/src/views/MaterialReview/MaterialReReviewList.vue
+++ b/src/views/MaterialReview/MaterialReReviewList.vue
@@ -59,6 +59,7 @@
 
       <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
       </ProTableV2>
+      <ParkBountyApplyRedoDialog v-bind="dialogProps" />
     </AppContainer>
   </LoadingLayout>
 </template>
@@ -76,14 +77,16 @@
   QueryFilterItem,
   FieldDatePicker,
   FieldSelect,
+  useFormDialog,
 } from '@bole-core/components';
-import { OrderInputType } from '@bole-core/core';
+import { Message, OrderInputType } from '@bole-core/core';
 import { format } from '@/utils';
 import { BountyCheckStatusEnum, BountyCheckStatusEnumText, DataRangeEnumText } from '@/constants';
 import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
 import _ from 'lodash';
 import { ModelValueType } from 'element-plus';
 import { useAccess, useGlobalEventContext, useIndustrialParkDropDownList } from '@/hooks';
+import ParkBountyApplyRedoDialog from './components/ParkBountyApplyRedoDialog.vue';
 
 defineOptions({
   name: 'MaterialReviewList',
@@ -106,7 +109,7 @@
   },
   redoBtn: {
     emits: {
-      onClick: (role) => goAudit(role),
+      onClick: (role) => openDialog(role),
     },
     extraProps: {
       hide: (row: API.GetParkBountyApplyListOutput) =>
@@ -212,4 +215,32 @@
     },
   });
 }
+
+function openDialog(row: API.GetParkBountyApplyListOutput) {
+  handleAdd({
+    parkBountyApplyId: row.id,
+  });
+}
+
+const { dialogProps, handleAdd, editForm } = useFormDialog({
+  onConfirm: outcheckParkBountyApplyReRedoed,
+  defaultFormParams: {
+    reasonForWithdrawal: '',
+    parkBountyApplyId: '',
+  },
+});
+
+async function outcheckParkBountyApplyReRedoed() {
+  try {
+    let params: API.OutcheckParkBountyApplyRedoedInput = {
+      parkBountyApplyId: editForm.parkBountyApplyId,
+      reasonForWithdrawal: editForm.reasonForWithdrawal,
+    };
+    let res = await parkBountyApplyServices.outcheckParkBountyApplyReRedoed(params);
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(paginationState.pageIndex);
+    }
+  } catch (error) {}
+}
 </script>
diff --git a/src/views/MaterialReview/MaterialReview.vue b/src/views/MaterialReview/MaterialReview.vue
index 3d9dc5a..29530d4 100644
--- a/src/views/MaterialReview/MaterialReview.vue
+++ b/src/views/MaterialReview/MaterialReview.vue
@@ -59,6 +59,7 @@
 
       <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
       </ProTableV2>
+      <ParkBountyApplyRedoDialog v-bind="dialogProps" />
     </AppContainer>
   </LoadingLayout>
 </template>
@@ -76,14 +77,16 @@
   QueryFilterItem,
   FieldDatePicker,
   FieldSelect,
+  useFormDialog,
 } from '@bole-core/components';
-import { OrderInputType } from '@bole-core/core';
+import { Message, OrderInputType } from '@bole-core/core';
 import { format } from '@/utils';
 import { BountyCheckStatusEnum, BountyCheckStatusEnumText, DataRangeEnumText } from '@/constants';
 import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
 import _ from 'lodash';
 import { ModelValueType } from 'element-plus';
 import { useAccess, useGlobalEventContext, useIndustrialParkDropDownList } from '@/hooks';
+import ParkBountyApplyRedoDialog from './components/ParkBountyApplyRedoDialog.vue';
 
 defineOptions({
   name: 'MaterialReviewList',
@@ -106,7 +109,7 @@
   },
   redoBtn: {
     emits: {
-      onClick: (role) => goAudit(role),
+      onClick: (role) => openDialog(role),
     },
     extraProps: {
       hide: (row: API.GetParkBountyApplyListOutput) =>
@@ -203,6 +206,34 @@
     },
   });
 }
+
+function openDialog(row: API.GetParkBountyApplyListOutput) {
+  handleAdd({
+    parkBountyApplyId: row.id,
+  });
+}
+
+const { dialogProps, handleAdd, editForm } = useFormDialog({
+  onConfirm: outcheckParkBountyApplyRedoed,
+  defaultFormParams: {
+    reasonForWithdrawal: '',
+    parkBountyApplyId: '',
+  },
+});
+
+async function outcheckParkBountyApplyRedoed() {
+  try {
+    let params: API.OutcheckParkBountyApplyRedoedInput = {
+      parkBountyApplyId: editForm.parkBountyApplyId,
+      reasonForWithdrawal: editForm.reasonForWithdrawal,
+    };
+    let res = await parkBountyApplyServices.outcheckParkBountyApplyRedoed(params);
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(paginationState.pageIndex);
+    }
+  } catch (error) {}
+}
 </script>
 
 <style lang="scss" scoped>
diff --git a/src/views/MaterialReview/MaterialReviewDetail.vue b/src/views/MaterialReview/MaterialReviewDetail.vue
index cfcbac6..f893421 100644
--- a/src/views/MaterialReview/MaterialReviewDetail.vue
+++ b/src/views/MaterialReview/MaterialReviewDetail.vue
@@ -13,8 +13,11 @@
                 >
               </span>
               <span class="page-form-layout-title-item remark">
-                <TextOverTooltip v-if="form.outCheckStatus === BountyCheckStatusEnum.CheckReject">
-                  {{ `澶嶅鏈�氳繃鍘熷洜:${form.outCheckRemark ?? ''}` }}
+                <TextOverTooltip v-if="form.outReCheckStatus === BountyCheckStatusEnum.CheckReject">
+                  {{ `澶嶅鏈�氳繃鍘熷洜:${form.outReCheckRemark ?? ''}` }}
+                </TextOverTooltip>
+                <TextOverTooltip v-if="form.outReCheckStatus === BountyCheckStatusEnum.Redoed">
+                  {{ `鎾ゅ洖鍘熷洜:${form.reasonForWithdrawal ?? ''}` }}
                 </TextOverTooltip>
               </span>
             </template>
@@ -28,6 +31,9 @@
               <span class="page-form-layout-title-item remark">
                 <TextOverTooltip v-if="form.outCheckStatus === BountyCheckStatusEnum.CheckReject">
                   {{ `瀹℃牳鏈�氳繃鍘熷洜:${form.outCheckRemark ?? ''}` }}
+                </TextOverTooltip>
+                <TextOverTooltip v-if="form.outCheckStatus === BountyCheckStatusEnum.Redoed">
+                  {{ `鎾ゅ洖鍘熷洜:${form.reasonForWithdrawal ?? ''}` }}
                 </TextOverTooltip>
               </span>
             </template>
@@ -112,6 +118,7 @@
 
   outReCheckStatus: '' as any as BountyCheckStatusEnum,
   outReCheckRemark: '',
+  reasonForWithdrawal: '',
 
   suportPlatRecharge: false,
   suportFinance: false,
@@ -165,6 +172,7 @@
 
     form.suportPlatRecharge = data.suportPlatRecharge;
     form.suportFinance = data.suportFinance;
+    form.reasonForWithdrawal = data.reasonForWithdrawal ?? '';
 
     getList();
   },
diff --git a/src/views/MaterialReview/components/ParkBountyApplyRedoDialog.vue b/src/views/MaterialReview/components/ParkBountyApplyRedoDialog.vue
new file mode 100644
index 0000000..bbb6715
--- /dev/null
+++ b/src/views/MaterialReview/components/ParkBountyApplyRedoDialog.vue
@@ -0,0 +1,76 @@
+<template>
+  <ProDialog title="鎾ゅ洖鐢虫姤" v-model="visible" @close="onDialogClose" destroy-on-close draggable>
+    <ProForm :model="form" ref="dialogForm" label-width="110px">
+      <ProFormItemV2
+        label="鎾ゅ洖鍘熷洜"
+        prop="reasonForWithdrawal"
+        :check-rules="[{ message: '璇疯緭鍏ユ挙鍥炲師鍥�' }]"
+      >
+        <ProFormTextArea
+          placeholder="璇疯緭鍏�"
+          v-model="form.reasonForWithdrawal"
+          :maxlength="150"
+          show-word-limit
+        ></ProFormTextArea>
+      </ProFormItemV2>
+    </ProForm>
+    <template #footer>
+      <span class="dialog-footer">
+        <el-button @click="emit('onCancel')">鍙� 娑�</el-button>
+        <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button>
+      </span>
+    </template>
+  </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import {
+  ProDialog,
+  ProForm,
+  ProFormItemV2,
+  ProFormTextArea,
+  UploadUserFile,
+} from '@bole-core/components';
+
+defineOptions({
+  name: 'ParkBountyApplyRedoDialog',
+});
+
+// type Props = {};
+
+// const props = withDefaults(defineProps<Props>(), {});
+
+const visible = defineModel({ type: Boolean });
+
+type Form = {
+  title?: string;
+  reasonForWithdrawal: string;
+  parkBountyApplyId: string;
+};
+
+const form = defineModel<Form>('form');
+
+const emit = defineEmits<{
+  (e: 'onConfirm'): void;
+  (e: 'onCancel'): void;
+}>();
+
+const dialogForm = ref<FormInstance>();
+
+function onDialogClose() {
+  if (!dialogForm.value) return;
+  dialogForm.value.resetFields();
+}
+
+function handleConfirm() {
+  if (!dialogForm.value) return;
+  dialogForm.value.validate((valid) => {
+    if (valid) {
+      emit('onConfirm');
+    } else {
+      return;
+    }
+  });
+}
+</script>

--
Gitblit v1.9.1