Browse Source

更新表单模板

wanggaokun 1 year ago
parent
commit
4b3eb68517

+ 1 - 1
km-admin/src/main/resources/application-dev.yml

@@ -72,7 +72,7 @@ spring.data:
 
 redisson:
   # redis key前缀
-  keyPrefix:
+  keyPrefix: km
   # 线程池数量
   threads: 4
   # Netty线程池数量

+ 1 - 1
km-admin/src/main/resources/application-prod.yml

@@ -72,7 +72,7 @@ spring.data:
 
 redisson:
   # redis key前缀
-  keyPrefix:
+  keyPrefix: km
   # 线程池数量
   threads: 16
   # Netty线程池数量

+ 9 - 0
km-modules/km-generator/src/main/java/com/km/generator/service/GenTableServiceImpl.java

@@ -1,5 +1,7 @@
 package com.km.generator.service;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.km.common.core.constant.Constants;
@@ -336,8 +338,15 @@ public class GenTableServiceImpl extends BaseServiceImpl<GenTableMapper, GenTabl
     }
 
     private Result getResult(Long tableId) {
+        // 校验是否存在
         GenTable table = genTableMapper.selectOneById(tableId);
+        if (ObjectUtil.isEmpty(table)) {
+            throw new ServiceException("表定义不存在");
+        }
         List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(table.getTableId());
+        if(CollUtil.isEmpty(list)) {
+            throw new ServiceException("字段义不存在");
+        }
         table.setColumns(list);
         // 设置主子表信息
         setSubTable(table);

+ 5 - 5
km-modules/km-generator/src/main/resources/vm/js/api.ts.vm

@@ -50,21 +50,21 @@ export const del${BusinessName}Api = (${pkColumn.javaField}: any) => {
  * @returns returns
  */
 export const importTemplateApi = () => {
-    return http.download('/${moduleName}/${businessName}/importTemplate', {})
+    return http.downloadPost('/${moduleName}/${businessName}/importTemplate', {})
 }
 
 /**
  * @name 导入数据
  * @returns returns
  */
-export const importDataApi = (data: any) => {
-    return http.download('/${moduleName}/${businessName}/importData', data)
+export const import${BusinessName}DataApi = (data: any) => {
+    return http.post('/${moduleName}/${businessName}/importData', data)
 }
 
 /**
  * @name 导出数据
  * @returns returns
  */
-export const exportApi = (data: any) => {
-    return http.download('/${moduleName}/${businessName}/export', data)
+export const export${BusinessName}Api = (data: any) => {
+    return http.downloadPost('/${moduleName}/${businessName}/export', data)
 }

+ 55 - 55
km-modules/km-generator/src/main/resources/vm/vue/index.vue.vm

@@ -1,6 +1,6 @@
 <template>
     <div class="table-box">
-        <ProTable ref="proTable" :columns="columns" row-key="${pkColumn.javaField}" :request-api="list${BusinessName}Api" :init-param="initParam" :data-callback="dataCallback">
+        <ProTable ref="proTable" :columns="columns" row-key="${pkColumn.javaField}" :request-api="list${BusinessName}Api" >
             <!-- 表格 header 按钮 -->
             <template #tableHeader="scope">
                 <el-button type="primary" v-auth="['${moduleName}:${businessName}:add']" :icon="CirclePlus" @click="openDialog(1, '${functionName}新增')">
@@ -69,8 +69,8 @@
         add${BusinessName}Api,
         update${BusinessName}Api,
         importTemplateApi,
-        importDataApi,
-        exportApi,
+        import${BusinessName}DataApi,
+        export${BusinessName}Api,
         get${BusinessName}Api
     } from '@/api/modules/${moduleName}/${businessName}'
         #if(${dicts} != '')
@@ -80,29 +80,15 @@
     // ProTable 实例
     const proTable = ref<ProTableInstance>()
 
-    // 如果表格需要初始化请求参数,直接定义传给 ProTable (之后每次请求都会自动带上该参数,此参数更改之后也会一直带上,改变此参数会自动刷新表格数据)
-    const initParam = reactive({ type: 1 })
-
-    // dataCallback 是对于返回的表格数据做处理,如果你后台返回的数据不是 list && total && pageNum && pageSize 这些字段,可以在这里进行处理成这些字段
-    const dataCallback = (data: any) => {
-        const page = proTable.value!.pageable
-        return {
-            list: data.data,
-            total: data.total,
-            pageNum: page.pageNum,
-            pageSize: page.pageSize
-        }
-    }
-
     // 删除${functionName}信息
     const delete${BusinessName} = async (params: any) => {
-        await useHandleData(del${BusinessName}Api, { id: [params.${pkColumn.javaField}] }, `删除【${params.id}】${functionName}`)
+        await useHandleData(del${BusinessName}Api, params.${pkColumn.javaField}, `删除【params.${pkColumn.javaField}】${functionName}`)
         proTable.value?.getTableList()
     }
 
     // 批量删除${functionName}信息
-    const batchDelete = async (id: string[]) => {
-        await useHandleData(del${BusinessName}Api, { id }, '删除所选${functionName}信息')
+    const batchDelete = async (ids: string[]) => {
+        await useHandleData(del${BusinessName}Api, ids, '删除所选${functionName}信息')
         proTable.value?.clearSelection()
         proTable.value?.getTableList()
     }
@@ -110,7 +96,7 @@
     // 导出${functionName}列表
     const downloadFile = async () => {
         ElMessageBox.confirm('确认导出${functionName}数据?', '温馨提示', { type: 'warning' }).then(() =>
-            useDownload(exportApi, '${functionName}列表', proTable.value?.searchParam)
+            useDownload(export${BusinessName}Api, '${functionName}列表', proTable.value?.searchParam)
         )
     }
 
@@ -120,7 +106,7 @@
         const params = {
             title: '${functionName}',
             tempApi: importTemplateApi,
-            importApi: importDataApi,
+            importApi: import${BusinessName}DataApi,
             getTableList: proTable.value?.getTableList
         }
         dialogRef.value?.acceptParams(params)
@@ -134,12 +120,12 @@
             res = await get${BusinessName}Api(row?.${pkColumn.javaField} || null)
         }
         // 重置表单
-        setFieldList()
+        setFormItems()
         const params = {
             title,
             width: 580,
             isEdit: type !== 3,
-            fieldList: fieldList,
+            fieldList: formItems,
             model: type == 1 ? {} : res.data,
             api: type == 1 ? add${BusinessName}Api : update${BusinessName}Api,
             getTableList: proTable.value?.getTableList
@@ -204,9 +190,9 @@
         { prop: 'operation', label: '操作', width: 230, fixed: 'right' }
     ])
     // 表单配置项
-    let fieldList: Form.FieldItem[] = []
-    const setFieldList = () => {
-        fieldList = [
+    let formItems: ProForm.ItemsOptions[] = []
+    const setFormItems = () => {
+        formItems = [
             #foreach($column in $columns)
                 #set($field=$column.javaField)
                 #if($column.insert && !$column.pk)
@@ -221,51 +207,51 @@
                         #if($column.htmlType == "input")
                             {
                                 label: '${comment}',
-                                field: '${field}',
+                                prop: '${field}',
                                 #if($column.required)
                                     rules: [{required: true, message: '${comment}不能为空', trigger: 'blur'}],
                                 #else
                                 #end
-                                placeholder: '请输入${comment}'
+                                compOptions: {
+                                    placeholder: '请输入${comment}'
+                                }
                             },
                         #elseif($column.htmlType == "select" && "" != $dictType)
                             {
                                 label: '${comment}',
-                                field: '${field}',
-                                enum: () => getDictsApi('$dictType'),
-                                type: 'select',
+                                prop: '${field}',
                                 #if($column.required)
                                     rules: [{required: true, message: '${comment}不能为空', trigger: 'change'}],
                                 #else
                                 #end
-                                options: {
+                                compOptions: {
+                                    elTagName: 'select',
                                     labelKey: 'dictLabel',
-                                    valueKey: 'dictValue'
-                                },
-                                placeholder: '请选择${comment}'
+                                    valueKey: 'dictValue',
+                                    enum: () => getDictsApi('$dictType'),
+                                    placeholder: '请选择${comment}'
+                                }
                             },
                         #elseif($column.htmlType == "checkbox" && "" != $dictType)
                             {
                                 label: '${comment}',
-                                field: '${field}',
-                                enum: () => getDictsApi('$dictType'),
-                                type: 'checkbox',
+                                prop: '${field}',
                                 #if($column.required)
                                     rules: [{required: true, message: '${comment}不能为空', trigger: 'change'}],
                                 #else
                                 #end
-                                options: {
+                                compOptions: {
+                                    elTagName: 'checkbox-group',
                                     labelKey: 'dictLabel',
-                                    valueKey: 'dictValue'
-                                },
-                                placeholder: '请选择${comment}'
+                                    valueKey: 'dictValue',
+                                    enum: () => getDictsApi('$dictType'),
+                                    placeholder: '请选择${comment}'
+                                }
                             },
                         #elseif($column.htmlType == "radio" && "" != $dictType)
                             {
                                 label: '${comment}',
-                                field: '${field}',
-                                enum: () => getDictsApi('$dictType'),
-                                type: 'radio',
+                                prop: '${field}',
                                 #if($column.required)
                                     rules: [{required: true, message: '${comment}不能为空', trigger: 'change'}],
                                 #else
@@ -274,39 +260,53 @@
                                     labelKey: 'dictLabel',
                                     valueKey: 'dictValue'
                                 },
-                                placeholder: '请选择${comment}'
+                                compOptions: {
+                                    elTagName: 'radio-group',
+                                    labelKey: 'dictLabel',
+                                    valueKey: 'dictValue',
+                                    enum: () => getDictsApi('$dictType'),
+                                    placeholder: '请选择${comment}'
+                                }
                             },
                         #elseif($column.htmlType == "datetime")
                             {
                                 label: '${comment}',
-                                field: '${field}',
-                                type: 'date-picker',
+                                prop: '${field}',
                                 #if($column.required)
                                     rules: [{required: true, message: '${comment}不能为空', trigger: 'change'}],
                                 #else
                                 #end
-                                placeholder: '请选择${comment}'
+                                compOptions: {
+                                    elTagName: 'date-picker',
+                                    type: 'date',
+                                    placeholder: '请选择${comment}'
+                                }
                             },
                         #elseif($column.htmlType == "textarea")
                             {
                                 label: '${comment}',
-                                field: '${field}',
-                                type: 'textarea',
+                                prop: '${field}',
                                 #if($column.required)
                                     rules: [{required: true, message: '${comment}不能为空', trigger: 'blur'}],
                                 #else
                                 #end
-                                placeholder: '请输入内容'
+                                compOptions: {
+                                    type: 'textarea',
+                                    clearable: true,
+                                    placeholder: '请输入内容'
+                                }
                             },
                         #else
                             {
                                 label: '${comment}',
-                                field: '${field}',
+                                prop: '${field}',
                                 #if($column.required)
                                     rules: [{required: true, message: '${comment}不能为空', trigger: 'blur'}],
                                 #else
                                 #end
-                                placeholder: '请输入${comment}'
+                                compOptions: {
+                                    placeholder: '请输入${comment}'
+                                }
                             },
                         #end
                     #end

+ 10 - 10
script/sql/postgresql/postgresql-km-V1.0.0.sql

@@ -15,18 +15,18 @@ SET check_function_bodies = false;
 SET xmloption = content;
 SET client_min_messages = warning;
 SET row_security = off;
-
-DROP DATABASE IF EXISTS km;
+-- 按场景可放开注释
+-- DROP DATABASE IF EXISTS km;
+-- --
+-- -- Name: km; Type: DATABASE; Schema: -; Owner: postgres
+-- --
 --
--- Name: km; Type: DATABASE; Schema: -; Owner: postgres
+-- CREATE DATABASE km WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE_PROVIDER = libc LOCALE = 'en_US.utf8';
 --
-
-CREATE DATABASE km WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE_PROVIDER = libc LOCALE = 'en_US.utf8';
-
-
-ALTER DATABASE km OWNER TO postgres;
-
-\connect km
+--
+-- ALTER DATABASE km OWNER TO postgres;
+--
+-- \connect km
 
 SET statement_timeout = 0;
 SET lock_timeout = 0;