From a4d12fcdc4cf6018b039ac6e0010f9f226d769d5 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 20 八月 2025 16:02:57 +0800
Subject: [PATCH] fix: bug

---
 src/views/AgreementManage/constants/columns.ts                |   34 +++++
 src/views/AgreementManage/AgreementManageList.vue             |  187 +++++++++++++++++++++++++++++++
 src/views/FinanceManage/components/UsageDetailView.vue        |   13 -
 src/views/AgreementManage/constants/index.ts                  |    1 
 src/router/index.ts                                           |   32 +++++
 src/views/AgreementManage/components/TemplateAddDialog.vue    |   75 ++++++++++++
 src/views/FinanceManage/components/DistributionDetailView.vue |   13 -
 7 files changed, 335 insertions(+), 20 deletions(-)

diff --git a/src/router/index.ts b/src/router/index.ts
index e0fdbc8..9e0b9a9 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -285,13 +285,41 @@
     ],
   },
   {
-    path: '/FinanceManage',
+    path: '/AgreementManage',
     redirect: 'noRedirect',
     component: Layout,
     hidden: false,
     alwaysShow: true,
     meta: {
       rank: 10050,
+      title: '鍗忚绠$悊',
+      rootMenu: true,
+      icon: 'home',
+    },
+    children: [
+      {
+        path: '/AgreementManageList',
+        name: 'AgreementManageList',
+        hidden: false,
+        alwaysShow: true,
+        component: () => import('@/views/AgreementManage/AgreementManageList.vue'),
+        meta: {
+          rank: 10051,
+          title: '鍗忚绠$悊',
+          // rootMenu: true,
+          icon: 'home',
+        },
+      },
+    ],
+  },
+  {
+    path: '/FinanceManage',
+    redirect: 'noRedirect',
+    component: Layout,
+    hidden: false,
+    alwaysShow: true,
+    meta: {
+      rank: 10060,
       title: '璐㈠姟绠$悊',
       rootMenu: true,
       icon: 'home',
@@ -304,7 +332,7 @@
         alwaysShow: true,
         component: () => import('@/views/FinanceManage/FinanceManage.vue'),
         meta: {
-          rank: 10051,
+          rank: 10061,
           title: '璐㈠姟绠$悊',
           // rootMenu: true,
           icon: 'home',
diff --git a/src/views/AgreementManage/AgreementManageList.vue b/src/views/AgreementManage/AgreementManageList.vue
new file mode 100644
index 0000000..c812998
--- /dev/null
+++ b/src/views/AgreementManage/AgreementManageList.vue
@@ -0,0 +1,187 @@
+<template>
+  <LoadingLayout :loading="state.loading">
+    <AppContainer>
+      <ProTableQueryFilterBar @on-reset="reset">
+        <template #query>
+          <QueryFilterItem tip-content="鍒剁増鐘舵��">
+            <FieldRadio
+              v-model="extraParamState.status"
+              :value-enum="[
+                { label: '宸插畬鎴�', value: 1 },
+                { label: '寰呭埗鐗�', value: 0 },
+              ]"
+              buttonStyle
+              showAllBtn
+              @change="getList()"
+            />
+          </QueryFilterItem>
+          <QueryFilterItem>
+            <FieldDatePicker
+              v-model="extraParamState.time"
+              type="daterange"
+              range-separator="~"
+              start-placeholder="璧峰鏃堕棿"
+              end-placeholder="鎴鏃堕棿"
+              clearable
+              @change="getList()"
+              tooltipContent="涓婁紶鏃堕棿"
+            ></FieldDatePicker>
+          </QueryFilterItem>
+          <QueryFilterItem>
+            <SearchInput
+              v-model="extraParamState.keywords"
+              style="width: 250px"
+              placeholder="妯℃澘鍚嶇О"
+              @on-click-search="getList"
+              @keyup.enter="getList()"
+            >
+            </SearchInput>
+          </QueryFilterItem>
+        </template>
+        <template #btn>
+          <el-button type="primary" @click="handleAdd()">鏂板妯℃澘</el-button>
+        </template>
+      </ProTableQueryFilterBar>
+      <ProTableV2
+        v-bind="proTableProps"
+        :columns="AgreementbManageColumns"
+        :operationBtns="operationBtns"
+      >
+      </ProTableV2>
+    </AppContainer>
+    <TemplateAddDialog v-bind="dialogProps"></TemplateAddDialog>
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+  ProTableQueryFilterBar,
+  ProTableV2,
+  SearchInput,
+  LoadingLayout,
+  AppContainer,
+  QueryFilterItem,
+  useTable,
+  FieldDatePicker,
+  FieldRadio,
+  defineOperationBtns,
+  UploadUserFile,
+  useFormDialog,
+  bolePreview,
+} from '@bole-core/components';
+import { AgreementbManageColumns } from './constants';
+import { EnumUserGender } from '@/constants';
+import { downloadFileByUrl } from '@/utils';
+import { ModelValueType } from 'element-plus';
+import * as taskServices from '@/services/api/task';
+import TemplateAddDialog from './components/TemplateAddDialog.vue';
+
+defineOptions({
+  name: 'AgreementManageList',
+});
+
+const operationBtns = defineOperationBtns([
+  {
+    data: {
+      enCode: 'checkBtn',
+      name: '鏌ョ湅',
+    },
+    emits: {
+      onClick: (role) => handleCheck(role),
+    },
+  },
+  {
+    data: {
+      enCode: 'downloadBtn',
+      name: '涓嬭浇',
+    },
+    emits: {
+      onClick: (role) => handleDownload(role),
+    },
+  },
+  {
+    data: {
+      enCode: 'deleteBtn',
+      name: '鍒犻櫎',
+    },
+    emits: {
+      onClick: (role) => handleDelete(role),
+    },
+  },
+]);
+
+const router = useRouter();
+
+const BaseState = {
+  loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+onMounted(async () => {
+  await getList();
+  state.loading = false;
+});
+
+const {
+  getDataSource: getList,
+  proTableProps,
+  paginationState,
+  extraParamState,
+  reset,
+} = useTable(
+  async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.GetTaskInfosQuery = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+        keywords: extraParamState.keywords,
+      };
+
+      let res = await taskServices.getTaskInfos(params, {
+        showLoading: !state.loading,
+      });
+      return res;
+    } catch (error) {
+      console.log('error: ', error);
+    }
+  },
+  {
+    defaultExtraParams: {
+      keywords: '',
+      status: '' as any as EnumUserGender,
+      time: [] as unknown as ModelValueType,
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+    },
+    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
+    columnsRenderProps: {},
+  }
+);
+
+const { dialogProps, handleAdd, editForm } = useFormDialog({
+  onConfirm: handleAddOrEdit,
+  defaultFormParams: {
+    name: '',
+    url: [] as UploadUserFile[],
+  },
+});
+
+async function handleAddOrEdit() {}
+
+function handleDelete(row) {
+  console.log('row: ', row);
+}
+
+function handleDownload(row) {
+  downloadFileByUrl('', '妯℃澘');
+}
+
+function handleCheck(row) {
+  bolePreview({
+    fileUrl: '',
+  });
+}
+</script>
diff --git a/src/views/AgreementManage/components/TemplateAddDialog.vue b/src/views/AgreementManage/components/TemplateAddDialog.vue
new file mode 100644
index 0000000..ea7851c
--- /dev/null
+++ b/src/views/AgreementManage/components/TemplateAddDialog.vue
@@ -0,0 +1,75 @@
+<template>
+  <ProDialog title="鏂板妯℃澘" v-model="visible" @close="onDialogClose" destroy-on-close draggable>
+    <ProForm :model="form" ref="dialogForm" label-width="100px">
+      <ProFormItemV2 label="妯℃澘鍚嶇О:" prop="name" :check-rules="[{ message: '璇疯緭鍏ユā鏉垮悕绉�' }]">
+        <ProFormText v-model.trim="form.name"> </ProFormText>
+      </ProFormItemV2>
+      <ProFormItemV2
+        label="涓婁紶妯℃澘:"
+        prop="url"
+        :check-rules="[{ message: '璇蜂笂浼犳ā鏉�', type: 'upload' }]"
+      >
+        <ProFormUpload
+          v-model:file-url="form.url"
+          :limit="1"
+          :limitFileSize="10"
+          accept="xlsx,xls"
+        ></ProFormUpload>
+      </ProFormItemV2>
+    </ProForm>
+    <template #footer>
+      <span class="dialog-footer">
+        <el-button type="primary" @click="handleConfirm">鎻愪氦</el-button>
+        <el-button type="default" @click="emit('onCancel')">鍙栨秷</el-button>
+      </span>
+    </template>
+  </ProDialog>
+</template>
+
+<script setup lang="ts">
+import {
+  ProDialog,
+  ProForm,
+  ProFormItemV2,
+  ProFormUpload,
+  ProFormText,
+  UploadUserFile,
+} from '@bole-core/components';
+import { FormInstance } from 'element-plus';
+
+defineOptions({
+  name: 'TemplateAddDialog',
+});
+
+type Form = {
+  title?: string;
+  name: string;
+  url: UploadUserFile[];
+};
+
+const visible = defineModel({ type: Boolean });
+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>
diff --git a/src/views/AgreementManage/constants/columns.ts b/src/views/AgreementManage/constants/columns.ts
new file mode 100644
index 0000000..e6cfc33
--- /dev/null
+++ b/src/views/AgreementManage/constants/columns.ts
@@ -0,0 +1,34 @@
+import { defineColumns } from '@bole-core/components';
+
+export const AgreementbManageColumns = defineColumns([
+  {
+    id: '1',
+    enCode: 'name',
+    name: '妯℃澘鍚嶇О',
+  },
+  {
+    id: '2',
+    enCode: 'identity',
+    name: '涓婁紶鏃堕棿',
+  },
+  {
+    id: '3',
+    enCode: 'gender',
+    name: '鍒剁増鐘舵��',
+  },
+  {
+    id: '5',
+    enCode: 'age',
+    name: '妯℃澘ID',
+  },
+  {
+    id: '6',
+    enCode: 'contactPhoneNumber',
+    name: '鍒剁増鏃堕棿',
+  },
+  {
+    id: '7',
+    enCode: 'hireStatus',
+    name: '浜岀淮鐮�',
+  },
+]);
diff --git a/src/views/AgreementManage/constants/index.ts b/src/views/AgreementManage/constants/index.ts
new file mode 100644
index 0000000..a7f066b
--- /dev/null
+++ b/src/views/AgreementManage/constants/index.ts
@@ -0,0 +1 @@
+export * from './columns';
diff --git a/src/views/FinanceManage/components/DistributionDetailView.vue b/src/views/FinanceManage/components/DistributionDetailView.vue
index 222e5b3..bb7857d 100644
--- a/src/views/FinanceManage/components/DistributionDetailView.vue
+++ b/src/views/FinanceManage/components/DistributionDetailView.vue
@@ -19,9 +19,8 @@
   useTable,
   defineOperationBtns,
 } from '@bole-core/components';
-// import * as flexEnterpriseServices from '@/services/api/FlexEnterprise';
 import { DistributionDetailColumns } from '../constants';
-import { FlexEnterpriseSettingStatus } from '@/constants';
+import * as taskServices from '@/services/api/task';
 
 defineOptions({
   name: 'DistributionDetailView',
@@ -49,17 +48,15 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetFlexEnterpriseInput = {
+      let params: API.GetOpenTaskInfosQuery = {
         pageModel: {
           rows: pageSize,
           page: pageIndex,
           orderInput: extraParamState.orderInput,
         },
-        flexEnterpriseSettingStatus: extraParamState.flexEnterpriseSettingStatus,
-        searchWord: extraParamState.searchWord,
       };
 
-      let res = await flexEnterpriseServices.getFlexEnterpriseList(params, {
+      let res = await taskServices.getOpenTaskInfos(params, {
         showLoading: !state.loading,
       });
       return res;
@@ -69,11 +66,9 @@
   },
   {
     defaultExtraParams: {
-      searchWord: '',
       orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
-      flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
     },
-    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
+    queryKey: ['taskServices/getOpenTaskInfos'],
     columnsRenderProps: {},
   }
 );
diff --git a/src/views/FinanceManage/components/UsageDetailView.vue b/src/views/FinanceManage/components/UsageDetailView.vue
index d4cfad9..fd56379 100644
--- a/src/views/FinanceManage/components/UsageDetailView.vue
+++ b/src/views/FinanceManage/components/UsageDetailView.vue
@@ -9,9 +9,8 @@
 
 <script setup lang="ts">
 import { ProTableV2, LoadingLayout, AppContainer, useTable } from '@bole-core/components';
-// import * as flexEnterpriseServices from '@/services/api/FlexEnterprise';
 import { UsageDetailColumns } from '../constants';
-import { FlexEnterpriseSettingStatus } from '@/constants';
+import * as taskServices from '@/services/api/task';
 
 defineOptions({
   name: 'UsageDetailView',
@@ -37,17 +36,15 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetFlexEnterpriseInput = {
+      let params: API.GetOpenTaskInfosQuery = {
         pageModel: {
           rows: pageSize,
           page: pageIndex,
           orderInput: extraParamState.orderInput,
         },
-        flexEnterpriseSettingStatus: extraParamState.flexEnterpriseSettingStatus,
-        searchWord: extraParamState.searchWord,
       };
 
-      let res = await flexEnterpriseServices.getFlexEnterpriseList(params, {
+      let res = await taskServices.getOpenTaskInfos(params, {
         showLoading: !state.loading,
       });
       return res;
@@ -57,11 +54,9 @@
   },
   {
     defaultExtraParams: {
-      searchWord: '',
       orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
-      flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
     },
-    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
+    queryKey: ['taskServices/getOpenTaskInfos'],
     columnsRenderProps: {},
   }
 );

--
Gitblit v1.9.1