Compare commits

..

26 Commits

Author SHA1 Message Date
337d5a9489 Merge pull request #5692 from hoperunChen/fix-QQYUN-7527
fix QQYUN-7527 vue3代码生成默认带上高级查询
2023-12-26 14:35:56 +08:00
6d1094936b Merge pull request #5691 from hoperunChen/Fix-QQYUN-7583
fix QQYUN-7583 Vue3风格表单页面多选控件渲染成了下拉多选
2023-12-26 14:00:59 +08:00
8836a2793a Merge pull request #5690 from hoperunChen/fix-issues-#5658
fix issues #5658 树表复选框与展开按钮重叠问题
2023-12-26 13:59:52 +08:00
c36ece8923 补充信息 2023-12-23 19:24:15 +08:00
a82213b90c 还原错误提交 2023-12-21 15:47:28 +08:00
98facdd2ee Merge branch 'master' of https://github.com/zhangdaiscott/jeecg-boot.git 2023-12-21 15:45:21 +08:00
d080b0b5ea SpringBoot3+JDK17版本可以下载了 2023-12-21 15:36:09 +08:00
338902ca0c Merge pull request #5706 from hoperunChen/fix-issue-vue3-#939
fix issue vue3 #939 npm run build 失败
2023-12-21 14:59:56 +08:00
7ae6a11cf0 fix issue vue3 #939: modify file suffix 2023-12-21 14:31:51 +08:00
cdbe1cb1a9 fix issue vue3 #939 2023-12-21 13:31:04 +08:00
232037ec58 1 2023-12-20 16:26:51 +08:00
b18c1120ab 流程引擎推荐 2023-12-20 16:25:45 +08:00
f6a7831963 1 2023-12-20 15:16:41 +08:00
08a4473bbc 1 2023-12-20 15:12:14 +08:00
9008ddafa4 1 2023-12-20 15:10:59 +08:00
7012ed4c2c 流程引擎 2023-12-20 15:08:54 +08:00
1d8c8c30d0 升级hutool版本号,解决hutool漏洞问题 CVE-2023-42278、CVE-2023-42277、CVE-2023-42276、CVE-2023-33695、CVE-2023-3276、CVE-2022-4565 2023-12-20 11:09:40 +08:00
090f790df4 fix QQYUN-7527 vue3代码生成,默认带上高级查询 2023-12-19 11:06:05 +08:00
82d051f388 fix QQYUN-7583 Vue3风格表单页面多选控件渲染成了下拉多选 2023-12-19 11:05:16 +08:00
5a3631c332 fix issues #5658 树表复选框与展开按钮重叠问题 2023-12-19 11:03:18 +08:00
c00b5526c3 解决3.6.1版本添加online报表报错Subject does not have permission [online:report:add] #5672 2023-12-16 10:42:24 +08:00
2e35abd3a3 大龄码农的思考 2023-12-15 13:57:51 +08:00
9bc3f6c56e 源码下载说明 2023-12-15 13:53:42 +08:00
5588912b62 分支说明 2023-12-15 13:43:06 +08:00
37cf913d6d springboot3分支 2023-12-14 11:57:48 +08:00
94ba767090 SpringBoot3(JDK17)版本介绍 2023-12-14 11:54:44 +08:00
28 changed files with 568 additions and 67 deletions

View File

@ -58,13 +58,12 @@ Download the source code
| `jeecg-boot` | SpringBoot background source code (support microservices) | | `jeecg-boot` | SpringBoot background source code (support microservices) |
| `jeecgboot-vue3` | Vue3+TS new front-end source code| | `jeecgboot-vue3` | Vue3+TS new front-end source code|
| `jeecg-uniapp` | [APP development framework, a code multi terminal adaptation, and support APP, small program, H5](https://github.com/jeecgboot/jeecg-uniapp) | | `jeecg-uniapp` | [APP development framework, a code multi terminal adaptation, and support APP, small program, H5](https://github.com/jeecgboot/jeecg-uniapp) |
| `jeecg-boot-starter` | [Stater relies on the project to be maintained separately. Click Download](https://gitee.com/jeecg/jeecg-boot-starter) | | `SpringBoot3+JDK17` | [BranchSourceCode](https://github.com/jeecgboot/jeecg-boot/tree/springboot3) [UpgradeBlog](https://blog.csdn.net/zhangdaiscott/article/details/134805602) |
| `More` | [Download more source code](http://jeecg.com/download) | | `More` | [Download more source code](http://jeecg.com/download) |
For the project For the project
----------------------------------- -----------------------------------
Jeecg-Boot low code development platform can be applied in the development of any J2EE project, especially for SAAS projects, enterprise information management system (MIS), internal office system (OA), enterprise resource planning system (ERP), customer relationship management system (CRM), etc. Its semi-intelligent manual Merge development method, Can significantly improve the development efficiency of more than 70%, greatly reduce the development cost. Jeecg-Boot low code development platform can be applied in the development of any J2EE project, especially for SAAS projects, enterprise information management system (MIS), internal office system (OA), enterprise resource planning system (ERP), customer relationship management system (CRM), etc. Its semi-intelligent manual Merge development method, Can significantly improve the development efficiency of more than 70%, greatly reduce the development cost.
@ -94,6 +93,11 @@ Technical documentation
Thinking
-----------------------------------
> We are pursuing the goal of implementing complex business systems without writing code! That has been done so far
- https://www.qiaoqiaoyun.com
Star charts Star charts
----------------------------------- -----------------------------------

View File

@ -49,16 +49,17 @@ Jeecg-Boot低代码开发平台可以应用在任何J2EE项目的开发中
| Github | [jeecgboot-vue3](https://github.com/jeecgboot/jeecgboot-vue3) | [jeecg-boot](https://github.com/jeecgboot/jeecg-boot) | | Github | [jeecgboot-vue3](https://github.com/jeecgboot/jeecgboot-vue3) | [jeecg-boot](https://github.com/jeecgboot/jeecg-boot) |
| 码云 | [jeecgboot-vue3](https://gitee.com/jeecg/jeecgboot-vue3) | [jeecg-boot](https://gitee.com/jeecg/jeecg-boot) | | 码云 | [jeecgboot-vue3](https://gitee.com/jeecg/jeecgboot-vue3) | [jeecg-boot](https://gitee.com/jeecg/jeecg-boot) |
> 官方已推出 `SpringBoot3+JDK17版本` [分支源码下载](https://github.com/jeecgboot/jeecg-boot/tree/springboot3) | [升级SpringBoot3博客](https://blog.csdn.net/zhangdaiscott/article/details/134805602)
#### 项目说明 #### 项目说明
| 项目名 | 说明 | | 项目名 | 说明 |
|--------------------|------------------------| |--------------------|------------------------|
| `jeecg-boot` | JAVA后台源码支持微服务 |
| `jeecgboot-vue3` | 前端源码 (Vue3版本) | | `jeecgboot-vue3` | 前端源码 (Vue3版本) |
| `jeecg-boot` | 后端JAVA源码支持微服务 |
| `jeecg-uniapp` | [APP开发框架一份代码多终端适配同时支持APP、小程序、H5](https://github.com/jeecgboot/jeecg-uniapp) | | `jeecg-uniapp` | [APP开发框架一份代码多终端适配同时支持APP、小程序、H5](https://github.com/jeecgboot/jeecg-uniapp) |
| `jeecg-boot-starter` | [Stater依赖项目单独维护点击下载](https://gitee.com/jeecg/jeecg-boot-starter) | | `更多开源项目` | [更多底层源码下载](http://jeecg.com/download) |
| `更多开源项目` | [更多源码下载](http://jeecg.com/download) |
快速搭建开发环境 快速搭建开发环境
@ -92,6 +93,12 @@ Docker快速启动项目
> ` 提醒【QQ群是自助服务群建议给帮助您解决问题的同学发送指定红包表示感谢】 ` > ` 提醒【QQ群是自助服务群建议给帮助您解决问题的同学发送指定红包表示感谢】 `
大龄码农的思考
-----------------------------------
> 作为码农年纪大了写不动代码了怎么办??哎!!
所以我们团队在追求不写代码也可实现复杂业务系统!目前已经做到了,不信你到敲敲云零代码试试(通过流程串联修改业务数据)
- https://www.qiaoqiaoyun.com
技术支持 技术支持
@ -104,8 +111,6 @@ Docker快速启动项目
VUE2版本专题介绍 VUE2版本专题介绍
----------------------------------- -----------------------------------
#### 项目介绍 #### 项目介绍
@ -462,8 +467,11 @@ Star走势图
``` ```
### 流程引擎推荐
JeecgBoot企业版本默认集成了activiti和flowable两套方案大家在使用本开源项目时如果想进一步集成流程引擎推荐结合贺波老师的书 [《深入Activiti流程引擎核心原理与高阶实战》](https://item.m.jd.com/product/13928958.html?gx=RnAomTM2bmCImZxDqYAkVCoIHuIYVqc)
<img src="https://jeecgos.oss-cn-beijing.aliyuncs.com/files/tuijian20231220161656.png" width="25%" height="auto">
### 系统效果 ### 系统效果

View File

@ -256,6 +256,15 @@
<groupId>commons-fileupload</groupId> <groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId> <artifactId>commons-fileupload</artifactId>
</dependency> </dependency>
<!--加载hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-crypto</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -132,6 +132,56 @@
</#if> </#if>
</#function> </#function>
<#-- ** 高级查询生成(Vue3 * -->
<#function superQueryFieldListForVue3(po,order)>
<#-- 字段展示/DB类型 -->
<#assign baseAttrs="view: '${po.classType}', type: 'string',">
<#if po.fieldDbType=='int' || po.fieldDbType=='double' || po.fieldDbType=='BigDecimal'>
<#assign baseAttrs="view: 'number', type: 'number',">
</#if>
<#-- 特殊类型控件扩展字段 -->
<#assign extAttrs="">
<#assign dictCode="">
<#if po.dictTable?default('')?trim?length gt 1 && po.dictText?default('')?trim?length gt 1 && po.dictField?default("")?trim?length gt 1>
<#assign dictCode="dictTable: '${po.dictTable}', dictCode: '${po.dictField}', dictText: '${po.dictText}'">
<#elseif po.dictField?default("")?trim?length gt 1>
<#assign dictCode="dictCode: '${po.dictField}'">
</#if>
<#if po.classType=='list' || po.classType=='list_multi' || po.classType=='sel_search' || po.classType=='checkbox'>
<#assign extAttrs="${dictCode},">
<#elseif po.classType=='cat_tree'>
<#-- 分类字典树 -->
<#assign extAttrs="pcode: '${po.dictField}',">
<#elseif po.classType=='sel_tree'>
<#-- 自定义树 -->
<#if po.dictText??>
<#-- dictText示例:id,pid,name,has_child -->
<#if po.dictText?split(',')[2]?? && po.dictText?split(',')[0]??>
<#assign extAttrs="dict: '${po.dictTable},${po.dictText?split(',')[2]},${po.dictText?split(',')[0]}'">
<#elseif po.dictText?split(',')[1]??>
<#assign extAttrs="pidField: '${po.dictText?split(',')[1]}'">
<#elseif po.dictText?split(',')[3]??>
<#assign extAttrs="hasChildField: '${po.dictText?split(',')[3]}'">
</#if>
</#if>
<#assign extAttrs="${extAttrs}, pidValue: '${po.dictField}',">
<#elseif po.classType=='popup'>
<#-- popup -->
<#if po.dictText?default("")?trim?length gt 1 && po.dictText?index_of(',') gt 0>
<#-- 如果有多个回填字段,找到popup字段对应的来源字段 -->
<#assign orgFieldIx=po.dictText?split(',')?seq_index_of(po.fieldDbName)>
<#assign orgField=po.dictField?split(',')[orgFieldIx]>
<#else>
<#assign orgField=po.dictField?default("")>
</#if>
<#assign extAttrs="code: '${po.dictTable?default('')}', orgFields: '${orgField}', destFields: '${po.fieldName}', popupMulti: false,">
</#if>
<#return "${po.fieldName}: {title: '${po.filedComment}',order: ${order},${baseAttrs}${extAttrs}}" >
</#function>
<#-- vue3 获取表单modal的宽度--> <#-- vue3 获取表单modal的宽度-->
<#function getModalWidth fieldRowNum> <#function getModalWidth fieldRowNum>

View File

@ -37,6 +37,8 @@
<Icon icon="mdi:chevron-down"></Icon> <Icon icon="mdi:chevron-down"></Icon>
</a-button> </a-button>
</a-dropdown> </a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template> </template>
<!--操作栏--> <!--操作栏-->
<template #action="{ record }"> <template #action="{ record }">
@ -71,12 +73,12 @@
</template> </template>
<script lang="ts" name="${entityPackage}-${entityName?uncap_first}" setup> <script lang="ts" name="${entityPackage}-${entityName?uncap_first}" setup>
import {ref, computed, unref} from 'vue'; import {ref, reactive, computed, unref} from 'vue';
import {BasicTable, useTable, TableAction} from '/@/components/Table'; import {BasicTable, useTable, TableAction} from '/@/components/Table';
import {useModal} from '/@/components/Modal'; import {useModal} from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage' import { useListPage } from '/@/hooks/system/useListPage'
import ${entityName}Modal from './components/${entityName}Modal.vue' import ${entityName}Modal from './components/${entityName}Modal.vue'
import {columns, searchFormSchema} from './${entityName}.data'; import {columns, searchFormSchema, superQuerySchema} from './${entityName}.data';
import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './${entityName}.api'; import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './${entityName}.api';
import { downloadFile } from '/@/utils/common/renderUtils'; import { downloadFile } from '/@/utils/common/renderUtils';
import { useUserStore } from '/@/store/modules/user'; import { useUserStore } from '/@/store/modules/user';
@ -91,6 +93,7 @@
<#if bpm_flag==true> <#if bpm_flag==true>
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
</#if> </#if>
const queryParam = reactive<any>({});
const checkedKeys = ref<Array<string | number>>([]); const checkedKeys = ref<Array<string | number>>([]);
const userStore = useUserStore(); const userStore = useUserStore();
//注册model //注册model
@ -136,10 +139,14 @@
width: 120, width: 120,
fixed:'right' fixed:'right'
}, },
beforeFetch: (params) => {
return Object.assign(params, queryParam);
},
}, },
exportConfig: { exportConfig: {
name:"${tableVo.ftlDescription}", name:"${tableVo.ftlDescription}",
url: getExportUrl, url: getExportUrl,
params: queryParam,
}, },
importConfig: { importConfig: {
url: getImportUrl, url: getImportUrl,
@ -149,6 +156,20 @@
const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext
// 高级查询配置
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
reload();
}
/** /**
* 新增事件 * 新增事件
*/ */

View File

@ -247,8 +247,13 @@ export const formSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{
dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
@ -376,6 +381,16 @@ export const formSchema: FormSchema[] = [
</#if> </#if>
]; ];
// 高级查询数据
export const superQuerySchema = {
<#list columns as po>
<#if po.isShowList =='Y' && po.fieldName !='id'>
${superQueryFieldListForVue3(po,po_index)},
</#if>
</#list>
};
/** /**

View File

@ -101,6 +101,8 @@
<Icon icon="mdi:chevron-down"></Icon> <Icon icon="mdi:chevron-down"></Icon>
</a-button> </a-button>
</a-dropdown> </a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template> </template>
<!--操作栏--> <!--操作栏-->
<template #action="{ record }"> <template #action="{ record }">
@ -137,7 +139,7 @@
import { ref, reactive } from 'vue'; import { ref, reactive } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table'; import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage'; import { useListPage } from '/@/hooks/system/useListPage';
import { columns } from './${entityName}.data'; import { columns, superQuerySchema } from './${entityName}.data';
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl } from './${entityName}.api'; import { list, deleteOne, batchDelete, getImportUrl, getExportUrl } from './${entityName}.api';
import { downloadFile } from '/@/utils/common/renderUtils'; import { downloadFile } from '/@/utils/common/renderUtils';
import ${entityName}Modal from './components/${entityName}Modal.vue' import ${entityName}Modal from './components/${entityName}Modal.vue'
@ -198,6 +200,21 @@
sm: 20, sm: 20,
}); });
// 高级查询配置
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
searchQuery();
}
/** /**
* 新增事件 * 新增事件
*/ */

View File

@ -233,10 +233,15 @@ export const formSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode: "${form_field_dictCode}" dictCode: "${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{ componentProps:{
dictCode: "${form_field_dictCode}" dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{
dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='sel_search'> <#elseif po.classType=='sel_search'>
component: 'JSearchSelect', component: 'JSearchSelect',
@ -361,3 +366,12 @@ export const formSchema: FormSchema[] = [
}, },
</#if> </#if>
]; ];
// 高级查询数据
export const superQuerySchema = {
<#list columns as po>
<#if po.isShowList =='Y' && po.fieldName !='id'>
${superQueryFieldListForVue3(po,po_index)},
</#if>
</#list>
};

View File

@ -43,6 +43,8 @@
<Icon icon="ant-design:down-outlined"></Icon> <Icon icon="ant-design:down-outlined"></Icon>
</a-button> </a-button>
</a-dropdown> </a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template> </template>
<!--操作栏--> <!--操作栏-->
<template #action="{ record }"> <template #action="{ record }">
@ -78,12 +80,12 @@
<script lang="ts" name="${entityPackage}-${entityName?uncap_first}" setup> <script lang="ts" name="${entityPackage}-${entityName?uncap_first}" setup>
//ts语法 //ts语法
import {ref, computed, unref, toRaw, nextTick} from 'vue'; import {ref, reactive, computed, unref, toRaw, nextTick} from 'vue';
import {BasicTable, TableAction} from '/@/components/Table'; import {BasicTable, TableAction} from '/@/components/Table';
import {useModal} from '/@/components/Modal'; import {useModal} from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage' import { useListPage } from '/@/hooks/system/useListPage'
import ${entityName}Modal from './components/${entityName}Modal.vue'; import ${entityName}Modal from './components/${entityName}Modal.vue';
import {columns,searchFormSchema} from './${entityName}.data'; import {columns, searchFormSchema, superQuerySchema} from './${entityName}.data';
import { downloadFile } from '/@/utils/common/renderUtils'; import { downloadFile } from '/@/utils/common/renderUtils';
import {list, delete${entityName}, batchDelete${entityName}, getExportUrl,getImportUrl, getChildList,getChildListBatch} from './${entityName}.api'; import {list, delete${entityName}, batchDelete${entityName}, getExportUrl,getImportUrl, getChildList,getChildListBatch} from './${entityName}.api';
<#if list_need_pca> <#if list_need_pca>
@ -92,6 +94,7 @@
<#if bpm_flag==true> <#if bpm_flag==true>
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
</#if> </#if>
const queryParam = reactive<any>({});
const expandedRowKeys = ref([]); const expandedRowKeys = ref([]);
//字典model //字典model
const [registerModal, {openModal}] = useModal(); const [registerModal, {openModal}] = useModal();
@ -102,6 +105,7 @@
title: '${tableVo.ftlDescription}', title: '${tableVo.ftlDescription}',
columns, columns,
canResize:false, canResize:false,
isTreeTable: true,
formConfig: { formConfig: {
//labelWidth: 120, //labelWidth: 120,
schemas: searchFormSchema, schemas: searchFormSchema,
@ -136,10 +140,14 @@
width: 240, width: 240,
fixed:'right' fixed:'right'
}, },
beforeFetch: (params) => {
return Object.assign(params, queryParam);
},
}, },
exportConfig: { exportConfig: {
name:"${tableVo.ftlDescription}", name:"${tableVo.ftlDescription}",
url: getExportUrl, url: getExportUrl,
params: queryParam,
}, },
importConfig: { importConfig: {
url: getImportUrl, url: getImportUrl,
@ -149,6 +157,19 @@
const [registerTable, {reload, collapseAll, updateTableDataRecord, findTableDataRecord,getDataSource},{ rowSelection, selectedRowKeys }] = tableContext const [registerTable, {reload, collapseAll, updateTableDataRecord, findTableDataRecord,getDataSource},{ rowSelection, selectedRowKeys }] = tableContext
// 高级查询配置
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
reload();
}
/** /**
* 新增事件 * 新增事件
*/ */

View File

@ -273,8 +273,13 @@ export const formSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{
dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
@ -405,6 +410,15 @@ export const formSchema: FormSchema[] = [
</#if> </#if>
]; ];
// 高级查询数据
export const superQuerySchema = {
<#list columns as po>
<#if po.isShowList =='Y' && po.fieldName !='id'>
${superQueryFieldListForVue3(po,po_index)},
</#if>
</#list>
};
/** /**
* 流程表单调用这个方法获取formSchema * 流程表单调用这个方法获取formSchema

View File

@ -111,6 +111,8 @@
<Icon icon="ant-design:down-outlined"></Icon> <Icon icon="ant-design:down-outlined"></Icon>
</a-button> </a-button>
</a-dropdown> </a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template> </template>
<!--操作栏--> <!--操作栏-->
<template #action="{ record }"> <template #action="{ record }">
@ -148,7 +150,7 @@
import { ref, reactive, unref } from 'vue'; import { ref, reactive, unref } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table'; import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage'; import { useListPage } from '/@/hooks/system/useListPage';
import { columns } from './${entityName}.data'; import { columns, superQuerySchema } from './${entityName}.data';
import {list, delete${entityName}, batchDelete${entityName}, getExportUrl,getImportUrl, getChildList,getChildListBatch} from './${entityName}.api'; import {list, delete${entityName}, batchDelete${entityName}, getExportUrl,getImportUrl, getChildList,getChildListBatch} from './${entityName}.api';
import { downloadFile } from '/@/utils/common/renderUtils'; import { downloadFile } from '/@/utils/common/renderUtils';
import ${entityName}Modal from './components/${entityName}Modal.vue' import ${entityName}Modal from './components/${entityName}Modal.vue'
@ -207,6 +209,19 @@
sm: 20, sm: 20,
}); });
// 高级查询配置
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
reload();
}
/** /**
* 新增事件 * 新增事件
*/ */

View File

@ -263,10 +263,15 @@ export const formSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode: "${form_field_dictCode}" dictCode: "${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{ componentProps:{
dictCode: "${form_field_dictCode}" dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{
dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='sel_search'> <#elseif po.classType=='sel_search'>
component: 'JSearchSelect', component: 'JSearchSelect',
@ -394,3 +399,12 @@ export const formSchema: FormSchema[] = [
}, },
</#if> </#if>
]; ];
// 高级查询数据
export const superQuerySchema = {
<#list columns as po>
<#if po.isShowList =='Y' && po.fieldName !='id'>
${superQueryFieldListForVue3(po,po_index)},
</#if>
</#list>
};

View File

@ -37,6 +37,8 @@
<Icon icon="mdi:chevron-down"></Icon> <Icon icon="mdi:chevron-down"></Icon>
</a-button> </a-button>
</a-dropdown> </a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template> </template>
<!--操作栏--> <!--操作栏-->
<template #action="{ record }"> <template #action="{ record }">
@ -81,7 +83,7 @@
</template> </template>
<script lang="ts" name="${entityPackage}-${entityName?uncap_first}" setup> <script lang="ts" name="${entityPackage}-${entityName?uncap_first}" setup>
import {ref, computed, unref,provide} from 'vue'; import {ref, reactive, computed, unref,provide} from 'vue';
import {BasicTable, useTable, TableAction} from '/@/components/Table'; import {BasicTable, useTable, TableAction} from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage' import { useListPage } from '/@/hooks/system/useListPage'
import {useModal} from '/@/components/Modal'; import {useModal} from '/@/components/Modal';
@ -90,7 +92,7 @@
<#list subTables as sub> <#list subTables as sub>
import ${sub.entityName}List from './${sub.entityName}List.vue' import ${sub.entityName}List from './${sub.entityName}List.vue'
</#list> </#list>
import {columns, searchFormSchema} from './${entityName}.data'; import {columns, searchFormSchema, superQuerySchema} from './${entityName}.data';
import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './${entityName}.api'; import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './${entityName}.api';
import {downloadFile} from '/@/utils/common/renderUtils'; import {downloadFile} from '/@/utils/common/renderUtils';
<#if list_need_pca> <#if list_need_pca>
@ -104,6 +106,7 @@
<#if bpm_flag==true> <#if bpm_flag==true>
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
</#if> </#if>
const queryParam = reactive<any>({});
//注册model //注册model
const [registerModal, {openModal}] = useModal(); const [registerModal, {openModal}] = useModal();
//注册table数据 //注册table数据
@ -145,6 +148,9 @@
width: 120, width: 120,
fixed:'right' fixed:'right'
}, },
beforeFetch: (params) => {
return Object.assign(params, queryParam);
},
pagination:{ pagination:{
current: 1, current: 1,
pageSize: 5, pageSize: 5,
@ -154,6 +160,7 @@
exportConfig: { exportConfig: {
name:"${tableVo.ftlDescription}", name:"${tableVo.ftlDescription}",
url: getExportUrl, url: getExportUrl,
params: queryParam,
}, },
importConfig: { importConfig: {
url: getImportUrl, url: getImportUrl,
@ -166,6 +173,20 @@
const mainId = computed(() => (unref(selectedRowKeys).length > 0 ? unref(selectedRowKeys)[0] : '')); const mainId = computed(() => (unref(selectedRowKeys).length > 0 ? unref(selectedRowKeys)[0] : ''));
//下发 mainId,子组件接收 //下发 mainId,子组件接收
provide('mainId', mainId); provide('mainId', mainId);
// 高级查询配置
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
reload();
}
/** /**
* 新增事件 * 新增事件
*/ */

View File

@ -240,8 +240,13 @@ export const formSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{
dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
@ -507,8 +512,13 @@ export const ${sub.entityName?uncap_first}FormSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{
dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
@ -628,3 +638,12 @@ export const ${sub.entityName?uncap_first}FormSchema: FormSchema[] = [
</#list> </#list>
]; ];
</#list> </#list>
// 高级查询数据
export const superQuerySchema = {
<#list columns as po>
<#if po.isShowList =='Y' && po.fieldName !='id'>
${superQueryFieldListForVue3(po,po_index)},
</#if>
</#list>
};

View File

@ -106,6 +106,8 @@
<Icon icon="mdi:chevron-down"></Icon> <Icon icon="mdi:chevron-down"></Icon>
</a-button> </a-button>
</a-dropdown> </a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template> </template>
<!--操作栏--> <!--操作栏-->
<template #action="{ record }"> <template #action="{ record }">
@ -154,7 +156,7 @@
import { BasicTable, useTable, TableAction } from '/@/components/Table'; import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage' import { useListPage } from '/@/hooks/system/useListPage'
import ${entityName}Modal from './components/${entityName}Modal.vue' import ${entityName}Modal from './components/${entityName}Modal.vue'
import { columns, searchFormSchema } from './${entityName}.data'; import { columns, searchFormSchema, superQuerySchema } from './${entityName}.data';
import { list, deleteOne, batchDelete, getImportUrl,getExportUrl } from './${entityName}.api'; import { list, deleteOne, batchDelete, getImportUrl,getExportUrl } from './${entityName}.api';
import { downloadFile } from '/@/utils/common/renderUtils'; import { downloadFile } from '/@/utils/common/renderUtils';
<#include "/common/form/native/vue3NativeImport.ftl"> <#include "/common/form/native/vue3NativeImport.ftl">
@ -212,6 +214,19 @@
//下发 mainId,子组件接收 //下发 mainId,子组件接收
provide('mainId', mainId); provide('mainId', mainId);
// 高级查询配置
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
reload();
}
/** /**
* 新增事件 * 新增事件
*/ */

View File

@ -240,8 +240,13 @@ export const formSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{
dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
@ -507,8 +512,13 @@ export const ${sub.entityName?uncap_first}FormSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{
dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
@ -628,3 +638,12 @@ export const ${sub.entityName?uncap_first}FormSchema: FormSchema[] = [
</#list> </#list>
]; ];
</#list> </#list>
// 高级查询数据
export const superQuerySchema = {
<#list columns as po>
<#if po.isShowList =='Y' && po.fieldName !='id'>
${superQueryFieldListForVue3(po,po_index)},
</#if>
</#list>
};

View File

@ -51,6 +51,8 @@
<Icon icon="mdi:chevron-down"></Icon> <Icon icon="mdi:chevron-down"></Icon>
</a-button> </a-button>
</a-dropdown> </a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template> </template>
<!--操作栏--> <!--操作栏-->
<template #action="{ record }"> <template #action="{ record }">
@ -85,7 +87,7 @@
</template> </template>
<script lang="ts" name="${entityPackage}-${entityName?uncap_first}" setup> <script lang="ts" name="${entityPackage}-${entityName?uncap_first}" setup>
import {ref, computed, unref} from 'vue'; import {ref, reactive, computed, unref} from 'vue';
import {BasicTable, useTable, TableAction} from '/@/components/Table'; import {BasicTable, useTable, TableAction} from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage' import { useListPage } from '/@/hooks/system/useListPage'
import {useModal} from '/@/components/Modal'; import {useModal} from '/@/components/Modal';
@ -93,7 +95,7 @@
<#list subTables as sub> <#list subTables as sub>
import ${sub.entityName}SubTable from './subTables/${sub.entityName}SubTable.vue' import ${sub.entityName}SubTable from './subTables/${sub.entityName}SubTable.vue'
</#list> </#list>
import {columns, searchFormSchema} from './${entityName}.data'; import {columns, searchFormSchema, superQuerySchema} from './${entityName}.data';
import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './${entityName}.api'; import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './${entityName}.api';
import {downloadFile} from '/@/utils/common/renderUtils'; import {downloadFile} from '/@/utils/common/renderUtils';
<#if list_need_pca> <#if list_need_pca>
@ -108,6 +110,7 @@
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
</#if> </#if>
import { useUserStore } from '/@/store/modules/user'; import { useUserStore } from '/@/store/modules/user';
const queryParam = reactive<any>({});
// 展开key // 展开key
const expandedRowKeys = ref<any[]>([]); const expandedRowKeys = ref<any[]>([]);
//注册model //注册model
@ -154,10 +157,14 @@
width: 120, width: 120,
fixed:'right' fixed:'right'
}, },
beforeFetch: (params) => {
return Object.assign(params, queryParam);
},
}, },
exportConfig: { exportConfig: {
name:"${tableVo.ftlDescription}", name:"${tableVo.ftlDescription}",
url: getExportUrl, url: getExportUrl,
params: queryParam,
}, },
importConfig: { importConfig: {
url: getImportUrl, url: getImportUrl,
@ -166,9 +173,24 @@
}) })
const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext
// 高级查询配置
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
reload();
}
/** /**
* 展开事件 * 展开事件
* */ */
function handleExpand(expanded, record){ function handleExpand(expanded, record){
expandedRowKeys.value=[]; expandedRowKeys.value=[];
if (expanded === true) { if (expanded === true) {

View File

@ -243,8 +243,13 @@ export const formSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{
dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
@ -508,8 +513,13 @@ export const ${sub.entityName?uncap_first}FormSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{
dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
@ -794,6 +804,29 @@ export const ${sub.entityName?uncap_first}JVxeColumns: JVxeColumn[] = [
</#if> </#if>
</#list> </#list>
// 高级查询数据
export const superQuerySchema = {
<#list columns as po>
<#if po.isShowList =='Y' && po.fieldName !='id'>
${superQueryFieldListForVue3(po,po_index)},
</#if>
</#list>
//子表高级查询
<#list subTables as sub>
${sub.entityName?uncap_first}: {
title: '${sub.ftlDescription}',
view: 'table',
fields: {
<#list sub.colums as subCol>
<#if subCol.isShowList =='Y' && subCol.fieldName !='id'>
${superQueryFieldListForVue3(subCol,subCol_index)},
</#if>
</#list>
}
},
</#list>
};
/** /**
* 流程表单调用这个方法获取formSchema * 流程表单调用这个方法获取formSchema
* @param param * @param param

View File

@ -37,6 +37,8 @@
<Icon icon="mdi:chevron-down"></Icon> <Icon icon="mdi:chevron-down"></Icon>
</a-button> </a-button>
</a-dropdown> </a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template> </template>
<!--操作栏--> <!--操作栏-->
<template #action="{ record }"> <template #action="{ record }">
@ -71,12 +73,12 @@
</template> </template>
<script lang="ts" name="${entityPackage}-${entityName?uncap_first}" setup> <script lang="ts" name="${entityPackage}-${entityName?uncap_first}" setup>
import {ref, computed, unref} from 'vue'; import {ref, reactive, computed, unref} from 'vue';
import {BasicTable, useTable, TableAction} from '/@/components/Table'; import {BasicTable, useTable, TableAction} from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage' import { useListPage } from '/@/hooks/system/useListPage'
import {useModal} from '/@/components/Modal'; import {useModal} from '/@/components/Modal';
import ${entityName}Modal from './components/${entityName}Modal.vue' import ${entityName}Modal from './components/${entityName}Modal.vue'
import {columns, searchFormSchema} from './${entityName}.data'; import {columns, searchFormSchema, superQuerySchema} from './${entityName}.data';
import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './${entityName}.api'; import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './${entityName}.api';
import {downloadFile} from '/@/utils/common/renderUtils'; import {downloadFile} from '/@/utils/common/renderUtils';
import { useUserStore } from '/@/store/modules/user'; import { useUserStore } from '/@/store/modules/user';
@ -91,6 +93,7 @@
<#if bpm_flag==true> <#if bpm_flag==true>
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
</#if> </#if>
const queryParam = reactive<any>({});
const checkedKeys = ref<Array<string | number>>([]); const checkedKeys = ref<Array<string | number>>([]);
const userStore = useUserStore(); const userStore = useUserStore();
//注册model //注册model
@ -136,10 +139,14 @@
width: 120, width: 120,
fixed:'right' fixed:'right'
}, },
beforeFetch: (params) => {
return Object.assign(params, queryParam);
},
}, },
exportConfig: { exportConfig: {
name:"${tableVo.ftlDescription}", name:"${tableVo.ftlDescription}",
url: getExportUrl, url: getExportUrl,
params: queryParam,
}, },
importConfig: { importConfig: {
url: getImportUrl, url: getImportUrl,
@ -149,6 +156,19 @@
const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext
// 高级查询配置
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
reload();
}
/** /**
* 新增事件 * 新增事件
*/ */

View File

@ -243,8 +243,13 @@ export const formSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{
dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
@ -448,11 +453,16 @@ export const ${sub.entityName?uncap_first}FormSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
} },
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{
dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='sel_search'> <#elseif po.classType=='sel_search'>
component: 'JSearchSelect', component: 'JSearchSelect',
componentProps:{ componentProps:{
@ -735,6 +745,30 @@ export const ${sub.entityName?uncap_first}Columns: JVxeColumn[] = [
</#list> </#list>
// 高级查询数据
export const superQuerySchema = {
<#list columns as po>
<#if po.isShowList =='Y' && po.fieldName !='id'>
${superQueryFieldListForVue3(po,po_index)},
</#if>
</#list>
//子表高级查询
<#list subTables as sub>
${sub.entityName?uncap_first}: {
title: '${sub.ftlDescription}',
view: 'table',
fields: {
<#list sub.colums as subCol>
<#if subCol.isShowList =='Y' && subCol.fieldName !='id'>
${superQueryFieldListForVue3(subCol,subCol_index)},
</#if>
</#list>
}
},
</#list>
};
/** /**
* 流程表单调用这个方法获取formSchema * 流程表单调用这个方法获取formSchema
* @param param * @param param

View File

@ -105,6 +105,8 @@
<Icon icon="mdi:chevron-down"></Icon> <Icon icon="mdi:chevron-down"></Icon>
</a-button> </a-button>
</a-dropdown> </a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template> </template>
<!--操作栏--> <!--操作栏-->
<template #action="{ record }"> <template #action="{ record }">
@ -144,7 +146,7 @@
import { useListPage } from '/@/hooks/system/useListPage' import { useListPage } from '/@/hooks/system/useListPage'
import {useModal} from '/@/components/Modal'; import {useModal} from '/@/components/Modal';
import ${entityName}Modal from './components/${entityName}Modal.vue' import ${entityName}Modal from './components/${entityName}Modal.vue'
import {columns, searchFormSchema} from './${entityName}.data'; import {columns, searchFormSchema, superQuerySchema} from './${entityName}.data';
import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './${entityName}.api'; import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './${entityName}.api';
import {downloadFile} from '/@/utils/common/renderUtils'; import {downloadFile} from '/@/utils/common/renderUtils';
<#include "/common/form/native/vue3NativeImport.ftl"> <#include "/common/form/native/vue3NativeImport.ftl">
@ -195,6 +197,19 @@
const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext
// 高级查询配置
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
reload();
}
/** /**
* 新增事件 * 新增事件
*/ */

View File

@ -229,8 +229,13 @@ export const formSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{
dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
@ -425,11 +430,16 @@ export const ${sub.entityName?uncap_first}FormSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
} },
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{
dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='sel_search'> <#elseif po.classType=='sel_search'>
component: 'JSearchSelect', component: 'JSearchSelect',
componentProps:{ componentProps:{
@ -710,3 +720,26 @@ export const ${sub.entityName?uncap_first}Columns: JVxeColumn[] = [
] ]
</#if> </#if>
</#list> </#list>
// 高级查询数据
export const superQuerySchema = {
<#list columns as po>
<#if po.isShowList =='Y' && po.fieldName !='id'>
${superQueryFieldListForVue3(po,po_index)},
</#if>
</#list>
//子表高级查询
<#list subTables as sub>
${sub.entityName?uncap_first}: {
title: '${sub.ftlDescription}',
view: 'table',
fields: {
<#list sub.colums as subCol>
<#if subCol.isShowList =='Y' && subCol.fieldName !='id'>
${superQueryFieldListForVue3(subCol,subCol_index)},
</#if>
</#list>
}
},
</#list>
};

View File

@ -37,6 +37,8 @@
<Icon icon="mdi:chevron-down"></Icon> <Icon icon="mdi:chevron-down"></Icon>
</a-button> </a-button>
</a-dropdown> </a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template> </template>
<!--操作栏--> <!--操作栏-->
<template #action="{ record }"> <template #action="{ record }">
@ -71,12 +73,12 @@
</template> </template>
<script lang="ts" name="${entityPackage}-${entityName?uncap_first}" setup> <script lang="ts" name="${entityPackage}-${entityName?uncap_first}" setup>
import {ref, computed, unref} from 'vue'; import {ref, reactive, computed, unref} from 'vue';
import {BasicTable, useTable, TableAction} from '/@/components/Table'; import {BasicTable, useTable, TableAction} from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage' import { useListPage } from '/@/hooks/system/useListPage'
import {useModal} from '/@/components/Modal'; import {useModal} from '/@/components/Modal';
import ${entityName}Modal from './components/${entityName}Modal.vue' import ${entityName}Modal from './components/${entityName}Modal.vue'
import {columns, searchFormSchema} from './${entityName}.data'; import {columns, searchFormSchema, superQuerySchema} from './${entityName}.data';
import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './${entityName}.api'; import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './${entityName}.api';
import {downloadFile} from '/@/utils/common/renderUtils'; import {downloadFile} from '/@/utils/common/renderUtils';
import { useUserStore } from '/@/store/modules/user'; import { useUserStore } from '/@/store/modules/user';
@ -91,6 +93,7 @@
<#if bpm_flag==true> <#if bpm_flag==true>
import { startProcess } from '/@/api/common/api'; import { startProcess } from '/@/api/common/api';
</#if> </#if>
const queryParam = reactive<any>({});
const userStore = useUserStore(); const userStore = useUserStore();
const checkedKeys = ref<Array<string | number>>([]); const checkedKeys = ref<Array<string | number>>([]);
//注册model //注册model
@ -136,10 +139,14 @@
width: 120, width: 120,
fixed:'right' fixed:'right'
}, },
beforeFetch: (params) => {
return Object.assign(params, queryParam);
},
}, },
exportConfig: { exportConfig: {
name:"${tableVo.ftlDescription}", name:"${tableVo.ftlDescription}",
url: getExportUrl, url: getExportUrl,
params: queryParam,
}, },
importConfig: { importConfig: {
url: getImportUrl, url: getImportUrl,
@ -149,6 +156,19 @@
const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext
// 高级查询配置
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
reload();
}
/** /**
* 新增事件 * 新增事件
*/ */

View File

@ -240,8 +240,13 @@ export const formSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{
dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
@ -442,8 +447,13 @@ export const ${sub.entityName?uncap_first}FormSchema: FormSchema[] = [
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
<#elseif po.classType=='list_multi' || po.classType=='checkbox'> <#elseif po.classType=='list_multi'>
component: 'JSelectMultiple', component: 'JSelectMultiple',
componentProps:{
dictCode:"${form_field_dictCode}"
},
<#elseif po.classType=='checkbox'>
component: 'JCheckbox',
componentProps:{ componentProps:{
dictCode:"${form_field_dictCode}" dictCode:"${form_field_dictCode}"
}, },
@ -727,3 +737,27 @@ export const ${sub.entityName?uncap_first}Columns: JVxeColumn[] = [
] ]
</#if> </#if>
</#list> </#list>
// 高级查询数据
export const superQuerySchema = {
<#list columns as po>
<#if po.isShowList =='Y' && po.fieldName !='id'>
${superQueryFieldListForVue3(po,po_index)},
</#if>
</#list>
//子表高级查询
<#list subTables as sub>
${sub.entityName?uncap_first}: {
title: '${sub.ftlDescription}',
view: 'table',
fields: {
<#list sub.colums as subCol>
<#if subCol.isShowList =='Y' && subCol.fieldName !='id'>
${superQueryFieldListForVue3(subCol,subCol_index)},
</#if>
</#list>
}
},
</#list>
};

View File

@ -11,4 +11,7 @@ ${AnsiColor.BRIGHT_BLUE}
${AnsiColor.BRIGHT_GREEN} ${AnsiColor.BRIGHT_GREEN}
Jeecg Boot Version: 3.6.1 Jeecg Boot Version: 3.6.1
Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version} Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}
产品官网: www.jeecg.com
版权所属: 北京国炬信息技术有限公司
公司官网: www.guojusoft.com
${AnsiColor.BLACK} ${AnsiColor.BLACK}

15
pom.xml
View File

@ -47,7 +47,7 @@
<ojdbc6.version>11.2.0.3</ojdbc6.version> <ojdbc6.version>11.2.0.3</ojdbc6.version>
<sqljdbc4.version>4.0</sqljdbc4.version> <sqljdbc4.version>4.0</sqljdbc4.version>
<mysql-connector-java.version>8.0.27</mysql-connector-java.version> <mysql-connector-java.version>8.0.27</mysql-connector-java.version>
<hutool.version>5.3.8</hutool.version> <hutool.version>5.8.23</hutool.version>
<!-- 持久层 --> <!-- 持久层 -->
<mybatis-plus.version>3.5.3.1</mybatis-plus.version> <mybatis-plus.version>3.5.3.1</mybatis-plus.version>
@ -244,7 +244,7 @@
<dependency> <dependency>
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<artifactId>hibernate-re</artifactId> <artifactId>hibernate-re</artifactId>
<version>3.6.0-beta</version> <version>3.6.1</version>
</dependency> </dependency>
<!--mongon db--> <!--mongon db-->
@ -323,6 +323,17 @@
<artifactId>okhttp</artifactId> <artifactId>okhttp</artifactId>
<version>4.4.1</version> <version>4.4.1</version>
</dependency> </dependency>
<!-- hutool工具类-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-crypto</artifactId>
<version>${hutool.version}</version>
</dependency>
<!--minio--> <!--minio-->
<dependency> <dependency>
<groupId>io.minio</groupId> <groupId>io.minio</groupId>