From 8917dcf6bf3ca3bd3c74b64b7b16f894c8a49bb6 Mon Sep 17 00:00:00 2001
From: xingyu4j <xingyu4j@vip.qq.com>
Date: Tue, 1 Nov 2022 17:12:26 +0800
Subject: [PATCH] perf: vxe demo

---
 .../src/plugins/vxeTable/index.ts             | 11 +++++++++++
 .../src/views/system/post/index.vue           | 19 +++++++++++++------
 2 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts b/yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts
index a7c840cbb..bfe355d05 100644
--- a/yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts
+++ b/yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts
@@ -103,6 +103,9 @@ VXETable.setup({
   input: {
     clearable: true
   },
+  form: {
+    titleColon: true // 是否显示标题冒号
+  },
   modal: {
     width: 600, // 窗口的宽度
     height: 400, // 窗口的高度
@@ -124,6 +127,14 @@ VXETable.setup({
       : XEUtils.toFormatString(XEUtils.get(enUS, key), args)
   }
 })
+// 格式金额,默认2位数
+VXETable.formats.add('formatAmount', ({ cellValue }, digits = 2) => {
+  return XEUtils.commafy(XEUtils.toNumber(cellValue), { digits })
+})
+// 格式日期,默认 yyyy-MM-dd HH:mm:ss
+VXETable.formats.add('formatDate', ({ cellValue }, format = 'yyyy-MM-dd HH:mm:ss') => {
+  return XEUtils.toDateString(cellValue, format)
+})
 export const setupVxeTable = (app: App<Element>) => {
   // 表格功能
   app.use(Filter).use(Edit).use(Menu).use(Export).use(Keyboard).use(Validator)
diff --git a/yudao-ui-admin-vue3/src/views/system/post/index.vue b/yudao-ui-admin-vue3/src/views/system/post/index.vue
index 3607a2a12..f9c36f366 100644
--- a/yudao-ui-admin-vue3/src/views/system/post/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/post/index.vue
@@ -1,9 +1,15 @@
 <script setup lang="ts">
 import { reactive, ref } from 'vue'
 import dayjs from 'dayjs'
-import XEUtils from 'xe-utils'
 import { useI18n } from '@/hooks/web/useI18n'
-import { VxeFormEvents, VxeFormItemProps, VxeGrid, VxeGridInstance, VxeGridProps } from 'vxe-table'
+import {
+  VxeFormEvents,
+  VxeFormInstance,
+  VxeFormItemProps,
+  VxeGrid,
+  VxeGridInstance,
+  VxeGridProps
+} from 'vxe-table'
 import * as PostApi from '@/api/system/post'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { ContentWrap } from '@/components/ContentWrap'
@@ -14,6 +20,7 @@ import { ElMessage, ElMessageBox } from 'element-plus'
 const { t } = useI18n() // 国际化
 
 const xGrid = ref<VxeGridInstance>()
+const xForm = ref<VxeFormInstance>()
 const dialogVisible = ref(false) // 是否显示弹出层
 const dialogTitle = ref('edit') // 弹出层标题
 const actionType = ref('') // 操作按钮的类型
@@ -93,9 +100,7 @@ const gridOptions = reactive<VxeGridProps>({
       title: t('common.createTime'),
       width: 160,
       sortable: true,
-      formatter({ cellValue }) {
-        return XEUtils.toDateString(cellValue, 'yyyy-MM-dd HH:ss:mm')
-      }
+      formatter: 'formatDate'
     },
     {
       field: 'action',
@@ -203,6 +208,8 @@ const handleDetail = (row: PostVO) => {
 }
 // 新增操作
 const handleCreate = () => {
+  const $form = xForm.value
+  $form?.reset()
   setDialogTile('create')
 }
 
@@ -308,11 +315,11 @@ const submitForm: VxeFormEvents.Submit = async () => {
     <template #default>
       <!-- 对话框(添加 / 修改) -->
       <vxe-form
+        ref="xForm"
         v-if="['create', 'update'].includes(actionType)"
         :data="formData"
         :items="formItems"
         :rules="rules"
-        titleColon
         @submit="submitForm"
       />
       <Descriptions