From 48b04d85a2c548399bcb4ed72d8c00bd45f2e808 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期二, 28 十月 2025 13:13:48 +0800
Subject: [PATCH] feat: init
---
.vscode/extensions.json | 3
src/views/CustomerManage/constants/customerManage.ts | 54 +++++++
src/views/CustomerManage/CustomerManage.vue | 144 ++++++++++++++++++++
src/views/CustomerManage/components/AddOrEditCustomerView.vue | 47 ++++++
src/hooks/useEvent.ts | 2
.vscode/settings.json | 39 +++++
src/views/CustomerManage/AddOrEditCustomer.vue | 19 ++
src/router/index.ts | 52 +++++++
src/views/CustomerManage/CustomerDetail.vue | 11 +
src/views/CustomerManage/constants/index.ts | 1
10 files changed, 371 insertions(+), 1 deletions(-)
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..a7cea0b
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,3 @@
+{
+ "recommendations": ["Vue.volar"]
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..6577781
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,39 @@
+{
+ "[json]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[typescript]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[jsonc]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[javascript]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[vue]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[scss]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+
+ "[html]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+
+ "editor.codeActionsOnSave": {
+ "source.fixAll": "explicit",
+ "source.fixAll.eslint": "explicit",
+ "source.fixAll.stylelint": "explicit"
+ },
+
+ "editor.formatOnSave": true,
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+
+ "eslint.enable": true,
+ "eslint.validate": ["vue", "ts", "tsx"],
+
+ "stylelint.enable": true,
+ "stylelint.validate": ["css", "less", "postcss", "scss", "vue", "sass"]
+}
diff --git a/src/hooks/useEvent.ts b/src/hooks/useEvent.ts
index 3d01572..7c89841 100644
--- a/src/hooks/useEvent.ts
+++ b/src/hooks/useEvent.ts
@@ -7,6 +7,8 @@
'taskManage:edit': any;
sureTaskSettlementOrder: any;
checkReceiveTask: any;
+ 'customerManage:add': any;
+ 'customerManage:edit': any;
};
export type GlobalEventListener<T extends keyof GlobalEvent> = (payload: GlobalEvent[T]) => any;
diff --git a/src/router/index.ts b/src/router/index.ts
index 51af27c..ca65353 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -96,6 +96,56 @@
},
},
{
+ path: '/CustomerManage',
+ redirect: 'noRedirect',
+ component: Layout,
+ hidden: false,
+ alwaysShow: true,
+ meta: {
+ rank: 10010,
+ title: '瀹㈡埛绠$悊',
+ rootMenu: true,
+ icon: 'home',
+ },
+ children: [
+ {
+ path: '/CustomerManage',
+ name: 'CustomerManage',
+ hidden: false,
+ alwaysShow: true,
+ component: () => import('@/views/CustomerManage/CustomerManage.vue'),
+ meta: {
+ rank: 10011,
+ title: '瀹㈡埛绠$悊',
+ // rootMenu: true,
+ icon: 'home',
+ },
+ },
+ {
+ path: '/AddOrEditCustomer/:id?',
+ name: 'AddOrEditCustomer',
+ hidden: false,
+ alwaysShow: true,
+ component: () => import('@/views/CustomerManage/AddOrEditCustomer.vue'),
+ meta: {
+ rank: 10011,
+ title: '鏂板瀹㈡埛',
+ },
+ },
+ {
+ path: '/CustomerDetail/:id',
+ name: 'CustomerDetail',
+ hidden: false,
+ alwaysShow: true,
+ component: () => import('@/views/CustomerManage/CustomerDetail.vue'),
+ meta: {
+ rank: 10011,
+ title: '瀹㈡埛璇︽儏',
+ },
+ },
+ ],
+ },
+ {
path: '/FlexJobManage',
redirect: 'noRedirect',
component: Layout,
@@ -361,7 +411,7 @@
component: () => import('@/views/FinanceManage/FinanceManage.vue'),
meta: {
rank: 10071,
- title: '璐㈠姟绠$悊',
+ title: '鍙戞斁鏄庣粏',
// rootMenu: true,
icon: 'home',
},
diff --git a/src/views/CustomerManage/AddOrEditCustomer.vue b/src/views/CustomerManage/AddOrEditCustomer.vue
new file mode 100644
index 0000000..219c8f0
--- /dev/null
+++ b/src/views/CustomerManage/AddOrEditCustomer.vue
@@ -0,0 +1,19 @@
+<template>
+ <AddOrEditCustomerView :isDetail="false"/>
+</template>
+
+<script lang="ts">
+import { setPageTitle } from '@/utils';
+
+export default defineComponent({
+ name: 'AddOrEditCustomer',
+ beforeRouteEnter(to) {
+ to.meta.title = to.params.id ? '缂栬緫瀹㈡埛' : '鏂板瀹㈡埛';
+ setPageTitle(to.meta.title as string);
+ },
+});
+</script>
+
+<script setup lang="ts">
+import AddOrEditCustomerView from './components/AddOrEditCustomerView.vue';
+</script>
diff --git a/src/views/CustomerManage/CustomerDetail.vue b/src/views/CustomerManage/CustomerDetail.vue
new file mode 100644
index 0000000..10fc45d
--- /dev/null
+++ b/src/views/CustomerManage/CustomerDetail.vue
@@ -0,0 +1,11 @@
+<template>
+ <AddOrEditCustomerView isDetail />
+</template>
+
+<script setup lang="ts">
+import AddOrEditCustomerView from './components/AddOrEditCustomerView.vue';
+
+defineOptions({
+ name: 'CustomerDetail',
+});
+</script>
diff --git a/src/views/CustomerManage/CustomerManage.vue b/src/views/CustomerManage/CustomerManage.vue
new file mode 100644
index 0000000..b255d5c
--- /dev/null
+++ b/src/views/CustomerManage/CustomerManage.vue
@@ -0,0 +1,144 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableQueryFilterBar @on-reset="reset">
+ <template #query>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.keywords"
+ style="width: 300px"
+ placeholder="浼佷笟鍚嶇О/淇$敤浠g爜/濮撳悕/鐢佃瘽"
+ @on-click-search="getList"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ </template>
+ <template #btn>
+ <el-button
+ @click="goAddOrEdit()"
+ icon="Plus"
+ type="primary"
+ >鏂板瀹㈡埛</el-button
+ >
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2 v-bind="proTableProps" :columns="CustomerManageColumns" :operationBtns="operationBtns">
+ </ProTableV2>
+ </AppContainer>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableQueryFilterBar,
+ OperationBtnType,
+ ProTableV2,
+ SearchInput,
+ LoadingLayout,
+ AppContainer,
+ QueryFilterItem,
+ useTable,
+ useFormDialog,
+ defineOperationBtns
+} from '@bole-core/components';
+import * as taskServices from '@/services/api/task';
+import {CustomerManageColumns} from './constants';
+
+defineOptions({
+ name: 'CustomerManage',
+});
+
+const operationBtns=defineOperationBtns([
+ {
+ data: {
+ enCode: 'detailBtn',
+ name: '鏌ョ湅',
+ },
+ emits: {
+ onClick: (role) => goDetail(role),
+ },
+ },
+ {
+ data: {
+ enCode: 'editBtn',
+ name: '缂栬緫',
+ },
+ emits: {
+ onClick: (role) => goAddOrEdit(role),
+ },
+ },
+])
+
+const BaseState = {
+ loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+const eventContext = useGlobalEventContext();
+
+eventContext.addEvent('customerManage:add', () => {
+ getList();
+});
+
+eventContext.addEvent('customerManage:edit', () => {
+ getList(paginationState.pageIndex);
+});
+
+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) {}
+ },
+ {
+ defaultExtraParams: {
+ keywords: '',
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ },
+ }
+);
+
+const router=useRouter();
+
+function goAddOrEdit(row?: API.GetTaskInfosQueryResultItem) {
+ router.push({
+ name: 'AddOrEditCustomer',
+ params: {
+ id: row?.id ?? '',
+ },
+ });
+}
+
+function goDetail(row: API.GetTaskInfosQueryResultItem) {
+ router.push({
+ name: 'CustomerDetail',
+ params: {
+ id: row?.id ?? '',
+ },
+ });
+}
+</script>
diff --git a/src/views/CustomerManage/components/AddOrEditCustomerView.vue b/src/views/CustomerManage/components/AddOrEditCustomerView.vue
new file mode 100644
index 0000000..76fbab5
--- /dev/null
+++ b/src/views/CustomerManage/components/AddOrEditCustomerView.vue
@@ -0,0 +1,47 @@
+<template>
+ <div></div>
+</template>
+
+<script setup lang="ts">
+import { Message, BoleRegExp } from '@bole-core/core';
+import { useQuery } from '@tanstack/vue-query';
+import {
+ LoadingLayout,
+ AppScrollContainer,
+ ProForm,
+ ProFormItemV2,
+ ChunkCell,
+ ProFormText,
+ ProFormSelect,
+ ProFormTextArea,
+ ProFormCol,
+ ProFormColItem,
+} from '@bole-core/components';
+import { FormRules, FormInstance } from 'element-plus';
+
+defineOptions({
+ name: 'AddOrEditCustomerView',
+})
+
+type Props = {
+ isDetail: boolean;
+}
+
+const props = withDefaults(defineProps<Props>(), {
+
+})
+
+const route = useRoute();
+const id = route.params.id as string;
+const isEdit = !!id;
+
+const { closeViewPush } = useRouteView();
+const eventContext = useGlobalEventContext();
+
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+
+</style>
+
diff --git a/src/views/CustomerManage/constants/customerManage.ts b/src/views/CustomerManage/constants/customerManage.ts
new file mode 100644
index 0000000..94ab1ea
--- /dev/null
+++ b/src/views/CustomerManage/constants/customerManage.ts
@@ -0,0 +1,54 @@
+ import {defineColumns} from '@bole-core/components'
+
+ export const CustomerManageColumns = defineColumns([
+ {
+ id: '1',
+ enCode: 'name',
+ name: '浼佷笟鍚嶇О',
+ },
+ {
+ id: '2',
+ enCode: 'phoneNumber',
+ name: '缁熶竴淇$敤浠g爜',
+ },
+ {
+ id: '3',
+ enCode: 'status',
+ name: '瀹㈡埛ID',
+ },
+ {
+ id: '4',
+ enCode: 'createdTime',
+ name: '娉曚汉濮撳悕',
+ },
+ {
+ id: '5',
+ enCode: 'createdTime',
+ name: '鑱旂郴浜哄悕绉�',
+ },
+ {
+ id: '6',
+ enCode: 'createdTime',
+ name: '鑱旂郴鐢佃瘽',
+ },
+ {
+ id: '7',
+ enCode: 'createdTime',
+ name: '鐪佷唤',
+ },
+ {
+ id: '8',
+ enCode: 'createdTime',
+ name: '鍩庡競',
+ },
+ {
+ id: '9',
+ enCode: 'createdTime',
+ name: '鍚堜綔鐘舵��',
+ },
+ {
+ id: '10',
+ enCode: 'createdTime',
+ name: '绛剧害鐘舵��',
+ },
+ ])
diff --git a/src/views/CustomerManage/constants/index.ts b/src/views/CustomerManage/constants/index.ts
new file mode 100644
index 0000000..c9d7805
--- /dev/null
+++ b/src/views/CustomerManage/constants/index.ts
@@ -0,0 +1 @@
+export * from './customerManage'
--
Gitblit v1.9.1