From 1d839bd0fca331b565deb640bbec0c85e3711791 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期五, 05 九月 2025 16:03:01 +0800
Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/flexJobAdminBClient

---
 src/views/ServiceChargeManage/ServiceChargeDetail.vue |  193 +++++++++++++++++++++++++++++++++--------------
 1 files changed, 134 insertions(+), 59 deletions(-)

diff --git a/src/views/ServiceChargeManage/ServiceChargeDetail.vue b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
index 507a280..d316f43 100644
--- a/src/views/ServiceChargeManage/ServiceChargeDetail.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
@@ -1,12 +1,7 @@
 <template>
   <LoadingLayout :loading="isLoading">
-    <AppScrollContainer>
+    <AppContainer>
       <ChunkCell title="缁撶畻鍗曡鎯�">
-        <template #titleRight>
-          <el-button type="primary" icon="Download" @click="handleDownloadTemplate()"
-            >鐢靛瓙鍥炲崟涓嬭浇</el-button
-          >
-        </template>
         <ProForm :model="form" ref="formRef" label-width="120px" :is-read="true">
           <ProFormCol>
             <ProFormColItem :span="8">
@@ -15,50 +10,44 @@
               </ProFormItemV2>
             </ProFormColItem>
             <ProFormColItem :span="8">
-              <ProFormItemV2 label="浠诲姟缂栧彿:" prop="name">
-                <ProFormText v-model="form.name"> </ProFormText>
+              <ProFormItemV2 label="浠诲姟缂栧彿:" prop="code">
+                <ProFormText v-model="form.code"> </ProFormText>
               </ProFormItemV2>
             </ProFormColItem>
-            <ProFormColItem :span="8"></ProFormColItem>
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="8">
-              <ProFormItemV2 label="缁撶畻鍗曞悕绉�:" prop="name">
-                <ProFormText v-model="form.name"> </ProFormText>
+              <ProFormItemV2 label="缁撶畻鍗曞悕绉�:" prop="settlementOrderName">
+                <ProFormText v-model="form.settlementOrderName"> </ProFormText>
               </ProFormItemV2>
             </ProFormColItem>
             <ProFormColItem :span="8">
-              <ProFormItemV2 label="涓婁紶鏃堕棿:" prop="name">
+              <ProFormItemV2 label="涓婁紶鏃堕棿:" prop="settlementOrderTime">
                 <ProFormDatePicker
-                  v-model="form.name"
+                  v-model="form.settlementOrderTime"
                   type="date"
                   format="YYYY-MM-DD HH:mm"
                 ></ProFormDatePicker>
               </ProFormItemV2>
             </ProFormColItem>
-            <ProFormColItem :span="8"></ProFormColItem>
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="8">
-              <ProFormItemV2 label="缁撶畻閲戦:" prop="money">
-                <ProFormInputNumber v-model="form.money"> </ProFormInputNumber>
+              <ProFormItemV2 label="缁撶畻閲戦:" prop="settlementAmount">
+                <ProFormInputNumber v-model="form.settlementAmount" format-value="money">
+                </ProFormInputNumber>
               </ProFormItemV2>
             </ProFormColItem>
             <ProFormColItem :span="8">
-              <ProFormItemV2 label="瀹炲彂閲戦:" prop="money">
-                <ProFormInputNumber v-model="form.money"> </ProFormInputNumber>
-              </ProFormItemV2>
-            </ProFormColItem>
-            <ProFormColItem :span="8">
-              <ProFormItemV2 label="鐘舵��:" prop="status">
-                <ProFormRadio v-model="form.status" :value-enum="[{ label: '鏄�', value: 1 }]">
-                </ProFormRadio>
+              <ProFormItemV2 label="瀹炲彂閲戦:" prop="actualSettlementAmount">
+                <ProFormInputNumber v-model="form.actualSettlementAmount" format-value="money">
+                </ProFormInputNumber>
               </ProFormItemV2>
             </ProFormColItem>
           </ProFormCol>
         </ProForm>
       </ChunkCell>
-      <ChunkCell title="缁撶畻娴佺▼">
+      <!-- <ChunkCell title="缁撶畻娴佺▼">
         <div class="step-wrapper">
           <el-steps :active="1" align-center finish-status="process">
             <el-step title="缁撶畻鍗曚笂浼�" :icon="Edit">
@@ -79,15 +68,15 @@
             </el-step>
           </el-steps>
         </div>
-      </ChunkCell>
-      <ChunkCell title="缁撶畻鍚嶅崟">
+      </ChunkCell> -->
+      <ChunkCell title="缁撶畻鍚嶅崟" style="flex: 1">
         <ProTableQueryFilterBar @on-reset="reset">
           <template #query>
             <QueryFilterItem>
               <SearchInput
-                v-model="extraParamState.searchWord"
+                v-model="extraParamState.keywords"
                 style="width: 300px"
-                placeholder="浜哄憳濮撳悕/韬唤璇佸彿/鎵嬫満鍙�"
+                placeholder="濮撳悕/鎵嬫満/韬唤璇佸彿/瀹㈡埛"
                 @on-click-search="getList"
               >
               </SearchInput>
@@ -97,7 +86,7 @@
         <ProTableV2
           v-bind="proTableProps"
           :columns="SettlementListColumns"
-          :operationBtns="operationBtns"
+          :show-operation-column="false"
           :auto-height="false"
           ref="proTable"
           :tableProps="{
@@ -105,13 +94,25 @@
           }"
         >
         </ProTableV2>
+        <div class="chuck-add-or-edit-actions">
+          <el-button class="chuck-add-or-edit-actions" @click="handleBack">鍙栨秷</el-button>
+          <el-button
+            v-if="!isDetail"
+            class="chuck-add-or-edit-actions"
+            type="primary"
+            @click="handleSubmit"
+            >纭</el-button
+          >
+        </div>
       </ChunkCell>
-    </AppScrollContainer>
+    </AppContainer>
+    <EditAccountInfoDialog v-bind="dialogProps"></EditAccountInfoDialog>
   </LoadingLayout>
 </template>
 <script setup lang="ts">
 import {
   LoadingLayout,
+  AppContainer,
   AppScrollContainer,
   ChunkCell,
   ProForm,
@@ -121,57 +122,74 @@
   ProFormColItem,
   ProFormDatePicker,
   ProFormInputNumber,
-  ProFormRadio,
   useTable,
   ProTableV2,
   defineOperationBtns,
   SearchInput,
   QueryFilterItem,
   ProTableQueryFilterBar,
-  TextOverTooltip,
+  useFormDialog,
 } from '@bole-core/components';
-import { Edit, Upload } from '@element-plus/icons-vue';
 import { SettlementListColumns } from './constants';
-import {} from '@/constants';
-import * as flexTaskServices from '@/services/api/FlexTask';
 import { useQuery } from '@tanstack/vue-query';
-import { downloadFileByUrl, OrderInputType } from '@bole-core/core';
-import * as flexEnterpriseServices from '@/services/api/FlexEnterprise';
+import * as taskServices from '@/services/api/task';
+import * as taskUserServices from '@/services/api/taskUser';
+import EditAccountInfoDialog from './components/EditAccountInfoDialog.vue';
+import { Message } from '@bole-core/core';
+import { paginateList, setOssFileName, toThousand } from '@/utils';
 
 defineOptions({
   name: 'ServiceChargeDetail',
 });
 
+const { closeViewPush } = useRouteView();
+const eventContext = useGlobalEventContext();
 const operationBtns = defineOperationBtns([
   {
     data: {
-      enCode: 'downloadBtn',
-      name: '涓嬭浇鍥炲崟',
+      enCode: 'editBtn',
+      name: '缂栬緫',
+    },
+    emits: {
+      onClick: (role) => openDialog(role),
     },
   },
 ]);
 
 const route = useRoute();
 const id = (route.params.id as string) ?? '';
+const url = (route.query.url as string) ?? '';
+
+const isDetail = computed(() => !url);
 
 const form = reactive({
   name: '',
-  money: 0,
-  status: 1,
+  settlementAmount: 0,
+  actualSettlementAmount: 0,
+  code: '',
+  settlementOrderName: '',
+  settlementOrderTime: '',
 });
 
 const { isLoading } = useQuery({
-  queryKey: ['flexTaskServices/getFlexTaskDetail', id],
+  queryKey: ['taskServices/getSettlementTask', id],
   queryFn: async () => {
-    return await flexTaskServices.getFlexTaskDetail(
+    return await taskServices.getSettlementTask(
       { id: id },
       {
         showLoading: false,
       }
     );
   },
-  placeholderData: () => ({} as API.GetFlexTaskDetailForBackOutput),
-  onSuccess(data) {},
+  placeholderData: () => ({} as API.GetSettlementTaskQueryResult),
+  onSuccess(data) {
+    form.name = data.name;
+    form.settlementAmount = data.settlementAmount ?? 0;
+    form.actualSettlementAmount = data.actualSettlementAmount ?? 0;
+    form.code = data.code;
+    form.settlementOrderName = setOssFileName(data.settlementOrderName);
+    form.settlementOrderTime = data.settlementOrderTime ?? '';
+  },
   enabled: !!id,
 });
 
@@ -184,33 +202,90 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetFlexEnterpriseInput = {
+      let params: API.APIgetSettlementTaskUsersParams = {
+        taskInfoId: id,
+        settlementOrderUrl: url,
+      };
+      let res = await taskUserServices.getSettlementTaskUsers(params);
+      if (extraParamState.keywords) {
+        res.data = res.data?.filter((item) => {
+          return (
+            item.name.includes(extraParamState.keywords) ||
+            item.contactPhoneNumber.includes(extraParamState.keywords) ||
+            item.identity.includes(extraParamState.keywords)
+          );
+        });
+      }
+      return Promise.resolve({
         pageModel: {
           rows: pageSize,
           page: pageIndex,
-          orderInput: extraParamState.orderInput,
+          totalCount: res.data.length,
         },
-        searchWord: extraParamState.searchWord,
-      };
-
-      let res = await flexEnterpriseServices.getFlexEnterpriseList(params);
-      return res;
+        data: paginateList(res.data, pageIndex, pageSize),
+      });
     } catch (error) {
       console.log('error: ', error);
     }
   },
   {
     defaultExtraParams: {
-      searchWord: '',
-      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
+      keywords: '',
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
     },
-    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
-    columnsRenderProps: {},
+    queryKey: ['taskUserServices/getSettlementTaskUsers'],
+    columnsRenderProps: {
+      settlementTime: { type: 'date' },
+      settlementAmount: { type: 'money' },
+      actualSettlementAmount: { type: 'money' },
+    },
   }
 );
 
-function handleDownloadTemplate() {
-  downloadFileByUrl('', '鐢靛瓙鍥炲崟');
+const { dialogProps, handleAdd, handleEdit, editForm } = useFormDialog({
+  onConfirm: handleAddOrEdit,
+  defaultFormParams: {
+    id: '',
+    name: '',
+  },
+});
+
+function openDialog(row?) {
+  if (row) {
+    handleEdit({
+      id: row?.id,
+      name: row?.name,
+    });
+  }
+}
+
+async function handleAddOrEdit() {}
+
+async function handleSubmit() {
+  try {
+    let params: API.SureTaskSettlementOrderCommand = {
+      taskInfoId: id,
+      settlementOrderUrl: url,
+      taskInfoUsers:
+        proTableProps.value.tableData?.length > 0
+          ? proTableProps.value.tableData.map(
+              (x) => ({ ...x } as API.SureTaskSettlementOrderCommandUser)
+            )
+          : [],
+    };
+    let res = await taskServices.sureTaskSettlementOrder(params);
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      eventContext.emit('sureTaskSettlementOrder');
+      handleBack();
+    }
+  } catch (error) {}
+}
+
+function handleBack() {
+  closeViewPush(route, {
+    name: 'ServiceChargeManageList',
+  });
 }
 
 onMounted(() => {

--
Gitblit v1.9.1