Merge remote-tracking branch 'origin/master'

master
王家东 2 weeks ago
commit a042ae5c7a
  1. 4
      jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
  2. 10
      jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/disciplinefieid/controller/DisciplineFieidController.java
  3. 41
      jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/instrument/controller/InstrumentController.java
  4. 15
      jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/instrumenttype/controller/InstrumentTypeController.java
  5. 20
      jeecgboot-vue3/src/views/projectApplication/project/ProjectList.vue
  6. 12
      jeecgboot-vue3/src/views/projectLog/ProjectLog.data.ts
  7. 218
      jeecgboot-vue3/src/views/projectLog/ProjectLogBasicModal.vue
  8. 23
      jeecgboot-vue3/src/views/projectLog/ProjectLogList.vue

@ -84,6 +84,10 @@ public class ShiroConfig {
} }
// 配置不会被拦截的链接 顺序判断 // 配置不会被拦截的链接 顺序判断
filterChainDefinitionMap.put("/instrument/instrument/listcms", "anon"); //cms仪器资源接口
filterChainDefinitionMap.put("/instrument/instrument/queryByIdCms", "anon"); //cms仪器资源接口
filterChainDefinitionMap.put("/disciplinefieid/disciplineFieid/listcms", "anon"); //cms学科领域接口
filterChainDefinitionMap.put("/instrumenttype/instrumentType/listcms", "anon"); //cms仪器分类接口
filterChainDefinitionMap.put("/expert/expert/listadminCMS", "anon"); //cms专家模块不拦截 filterChainDefinitionMap.put("/expert/expert/listadminCMS", "anon"); //cms专家模块不拦截
filterChainDefinitionMap.put("/expert/expert/directioncalListCMS", "anon"); //cms专家模块不拦截 filterChainDefinitionMap.put("/expert/expert/directioncalListCMS", "anon"); //cms专家模块不拦截
filterChainDefinitionMap.put("/expert/expert/CMSexpinfo", "anon"); //cms专家模块不拦截 filterChainDefinitionMap.put("/expert/expert/CMSexpinfo", "anon"); //cms专家模块不拦截

@ -75,6 +75,16 @@ public class DisciplineFieidController extends JeecgController<DisciplineFieid,
return Result.OK(pageList); return Result.OK(pageList);
} }
@ApiOperation(value="学科领域-分页列表查询", notes="学科领域-分页列表查询")
@GetMapping(value = "/listcms")
public Result<List<DisciplineFieid>> listcms() {
QueryWrapper<DisciplineFieid> queryWrapper = new QueryWrapper();
List<DisciplineFieid> pageList = disciplineFieidService.list(queryWrapper);
return Result.OK(pageList);
}
/** /**
* 添加 * 添加
* *

@ -94,6 +94,47 @@ public class InstrumentController extends JeecgController<Instrument, IInstrumen
return Result.OK(pageList); return Result.OK(pageList);
} }
/**
* 分页列表查询
*
* @param instrument
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "仪器信息表-分页列表查询")
@ApiOperation(value="仪器信息表-分页列表查询", notes="仪器信息表-分页列表查询")
@GetMapping(value = "/listcms")
public Result<IPage<Instrument>> listcms(Instrument instrument,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<Instrument> queryWrapper = QueryGenerator.initQueryWrapper(instrument, req.getParameterMap());
queryWrapper.eq("state","3");
Page<Instrument> page = new Page<Instrument>(pageNo, pageSize);
IPage<Instrument> pageList = instrumentService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "仪器信息表-通过id查询")
@ApiOperation(value="仪器信息表-通过id查询", notes="仪器信息表-通过id查询")
@GetMapping(value = "/queryByIdCms")
public Result<Instrument> queryByIdCms(@RequestParam(name="id",required=true) String id) {
Instrument instrument = instrumentService.getById(id);
if(instrument==null) {
return Result.error("未找到对应数据");
}
return Result.OK(instrument);
}
/** /**
* 分页列表查询 * 分页列表查询
* *

@ -75,6 +75,21 @@ public class InstrumentTypeController extends JeecgController<InstrumentType, II
return Result.OK(pageList); return Result.OK(pageList);
} }
/**
* 分页列表查询
*
* @return
*/
//@AutoLog(value = "仪器分类-分页列表查询")
@ApiOperation(value="仪器分类-分页列表查询", notes="仪器分类-分页列表查询")
@GetMapping(value = "/listcms")
public Result<List<InstrumentType>> listcms() {
QueryWrapper<InstrumentType> queryWrapper = new QueryWrapper();
List<InstrumentType> pageList = instrumentTypeService.list(queryWrapper);
return Result.OK(pageList);
}
/** /**
* 添加 * 添加
* *

@ -42,21 +42,9 @@
<!-- 表单区域 --> <!-- 表单区域 -->
<ProjectModal @register="registerModal" @success="handleSuccess"></ProjectModal> <ProjectModal @register="registerModal" @success="handleSuccess"></ProjectModal>
</div> </div>
<div>
<ProjectLogModal
@register="registerModal"
v-model:value="editCronValue"
:exeStartTime="exeStartTime"
:hideYear="hideYear"
:remote="remote"
:hideSecond="hideSecond"
/>
</div>
</template> </template>
<script lang="ts" name="project-project" setup> <script lang="ts" name="project-project" setup>
// import EasyCronModal from '/@/components/Form/src/jeecg/components/JEasyCron/EasyCronModal.vue';
import ProjectLogModal from '/@/views/projectLog/ProjectLogBasicModal.vue'
import {ref, reactive, computed, unref, onMounted} from 'vue'; import {ref, reactive, computed, unref, onMounted} 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';
@ -86,7 +74,6 @@ const checkedKeys = ref<Array<string | number>>([]);
const userStore = useUserStore(); const userStore = useUserStore();
//model //model
const [registerModal, {openModal}] = useModal(); const [registerModal, {openModal}] = useModal();
//table
const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({ const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({
tableProps:{ tableProps:{
title: '项目表', title: '项目表',
@ -179,12 +166,13 @@ function go_yusuanshu(record) {
go('/projectApplication/kejigongguan/yusuanshu?id='+record.id); go('/projectApplication/kejigongguan/yusuanshu?id='+record.id);
} }
function projectLog(record) { function go_projectLog(record) {
// go('/comp/jeecg/basic?id=' +'666'); // go('/comp/jeecg/basic?id=' +'666');
go('/projectApplication/kejigongguan/yusuanshu?id='+record.id); go('/projectLog/projectLogList?id='+record.id);
} }
/** /**
* 编辑事件 * 编辑事件
*/ */
@ -254,7 +242,7 @@ function getTableAction(record){
}, },
{ {
label: '日志查询', label: '日志查询',
onClick: handleDetail.bind(null, record), onClick: go_projectLog.bind(null, record),
} }
]; ];
//() //()

@ -46,6 +46,11 @@ export const formSchema: FormSchema[] = [
field: 'projectName', field: 'projectName',
component: 'Input', component: 'Input',
}, },
{
label: '操作人名称',
field: 'operatorName',
component: 'Input',
},
{ {
label: '操作说明', label: '操作说明',
field: 'operationMark', field: 'operationMark',
@ -60,11 +65,6 @@ export const formSchema: FormSchema[] = [
valueFormat: 'YYYY-MM-DD HH:mm:ss' valueFormat: 'YYYY-MM-DD HH:mm:ss'
}, },
}, },
{
label: '操作人名称',
field: 'operatorName',
component: 'Input',
},
{ {
label: '项目书状态', label: '项目书状态',
field: 'projectStatus', field: 'projectStatus',
@ -109,4 +109,4 @@ export const superQuerySchema = {
export function getBpmFormSchema(_formData): FormSchema[]{ export function getBpmFormSchema(_formData): FormSchema[]{
// formSchema // formSchema
return formSchema; return formSchema;
} }

@ -1,44 +1,190 @@
<template> <template>
<BasicModal @register="registerModal" title="日志" width="1024px" @ok="onOk"> <div>
<PageWrapper> <!--引用表格-->
<a-card title="流程进度" :bordered="true"> <BasicTable @register="registerTable" :rowSelection="rowSelection">
<a-steps :current="1" progress-dot size="small"> <!--插槽:table标题-->
<a-step title="申请人提交"> <template #tableTitle>
<template #description> <div>Jeecg</div> <p>2016-12-12 12:32</p> </template> <a-button type="primary" v-auth="'projectLog:project_log:add'" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button>
</a-step> <a-button type="primary" v-auth="'projectLog:project_log:exportXls'" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<a-step title="申请单位提交"> <j-upload-button type="primary" v-auth="'projectLog:project_log:importExcel'" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>
<template #description> <a-dropdown v-if="selectedRowKeys.length > 0">
<p>Chad</p> <template #overlay>
</template> <a-menu>
</a-step> <a-menu-item key="1" @click="batchHandleDelete">
<a-step title="科技主管提交" /> <Icon icon="ant-design:delete-outlined"></Icon>
<a-step title="市科技局提交" /> 删除
<a-step title="财政主管处理" /> </a-menu-item>
</a-steps> </a-menu>
</a-card> </template>
</PageWrapper> <a-button v-auth="'projectLog:project_log:deleteBatch'">批量操作
</BasicModal> <Icon icon="mdi:chevron-down"></Icon>
</a-button>
</a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)"/>
</template>
<!--字段回显插槽-->
<template v-slot:bodyCell="{ column, record, index, text }">
</template>
</BasicTable>
<!-- 表单区域 -->
<ProjectLogModal @register="registerModal" @success="handleSuccess"></ProjectLogModal>
</div>
</template> </template>
<script lang="ts"> <script lang="ts" name="projectLog-projectLog" setup>
import { defineComponent } from 'vue'; import {ref, reactive, computed, unref} from 'vue';
import { useAttrs } from '/@/hooks/core/useAttrs'; import {BasicTable, useTable, TableAction} from '/@/components/Table';
import { BasicModal, useModalInner } from '/@/components/Modal'; import {useModal} from '/@/components/Modal';
import PageWrapper from "@/components/Page/src/PageWrapper.vue"; import { useListPage } from '/@/hooks/system/useListPage'
import ProjectLogModal from './components/ProjectLogModal.vue'
import {columns, searchFormSchema, superQuerySchema} from './ProjectLog.data';
import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './ProjectLog.api';
import { downloadFile } from '/@/utils/common/renderUtils';
import { useUserStore } from '/@/store/modules/user';
const queryParam = reactive<any>({});
const checkedKeys = ref<Array<string | number>>([]);
const userStore = useUserStore();
//model
const [registerModal, {openModal}] = useModal();
//table
const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({
tableProps:{
title: '项目操作日志',
api: list,
columns,
canResize:false,
formConfig: {
//labelWidth: 120,
schemas: searchFormSchema,
autoSubmitOnEnter:true,
showAdvancedButton:true,
fieldMapToNumber: [
],
fieldMapToTime: [
],
},
actionColumn: {
width: 120,
fixed:'right'
},
beforeFetch: (params) => {
return Object.assign(params, queryParam);
},
},
exportConfig: {
name:"项目操作日志",
url: getExportUrl,
params: queryParam,
},
importConfig: {
url: getImportUrl,
success: handleSuccess
},
})
const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext
export default defineComponent({ //
name: 'ProjectLogModal', const superQueryConfig = reactive(superQuerySchema);
inheritAttrs: false,
components: {PageWrapper, BasicModal},
setup() {
const attrs = useAttrs();
const [registerModal, { closeModal }] = useModalInner();
function onOk() { /**
closeModal(); * 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
reload();
}
/**
* 新增事件
*/
function handleAdd() {
openModal(true, {
isUpdate: false,
showFooter: true,
});
}
/**
* 编辑事件
*/
function handleEdit(record: Recordable) {
openModal(true, {
record,
isUpdate: true,
showFooter: true,
});
}
/**
* 详情
*/
function handleDetail(record: Recordable) {
openModal(true, {
record,
isUpdate: true,
showFooter: false,
});
}
/**
* 删除事件
*/
async function handleDelete(record) {
await deleteOne({id: record.id}, handleSuccess);
}
/**
* 批量删除事件
*/
async function batchHandleDelete() {
await batchDelete({ids: selectedRowKeys.value}, handleSuccess);
}
/**
* 成功回调
*/
function handleSuccess() {
(selectedRowKeys.value = []) && reload();
}
/**
* 操作栏
*/
function getTableAction(record){
return [
{
label: '编辑',
onClick: handleEdit.bind(null, record),
auth: 'projectLog:project_log:edit'
} }
]
}
/**
* 下拉操作栏
*/
function getDropDownAction(record){
return [
{
label: '详情',
onClick: handleDetail.bind(null, record),
}, {
label: '删除',
popConfirm: {
title: '是否确认删除',
confirm: handleDelete.bind(null, record),
placement: 'topLeft',
},
auth: 'projectLog:project_log:delete'
}
]
}
return { attrs, registerModal, onOk };
},
});
</script> </script>
<style lang="less" scoped>
:deep(.ant-picker),:deep(.ant-input-number){
width: 100%;
}
</style>

@ -3,7 +3,7 @@
<!--引用表格--> <!--引用表格-->
<BasicTable @register="registerTable" :rowSelection="rowSelection"> <BasicTable @register="registerTable" :rowSelection="rowSelection">
<!--插槽:table标题--> <!--插槽:table标题-->
<template #tableTitle> <!-- <template #tableTitle>
<a-button type="primary" v-auth="'projectLog:project_log:add'" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button> <a-button type="primary" v-auth="'projectLog:project_log:add'" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button>
<a-button type="primary" v-auth="'projectLog:project_log:exportXls'" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button> <a-button type="primary" v-auth="'projectLog:project_log:exportXls'" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<j-upload-button type="primary" v-auth="'projectLog:project_log:importExcel'" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button> <j-upload-button type="primary" v-auth="'projectLog:project_log:importExcel'" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>
@ -20,16 +20,16 @@
<Icon icon="mdi:chevron-down"></Icon> <Icon icon="mdi:chevron-down"></Icon>
</a-button> </a-button>
</a-dropdown> </a-dropdown>
<!-- 高级查询 --> &lt;!&ndash; 高级查询 &ndash;&gt;
<super-query :config="superQueryConfig" @search="handleSuperQuery" /> <super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template> </template>
<!--操作栏--> &lt;!&ndash;操作栏&ndash;&gt;
<template #action="{ record }"> <template #action="{ record }">
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)"/> <TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)"/>
</template> </template>
<!--字段回显插槽--> &lt;!&ndash;字段回显插槽&ndash;&gt;
<template v-slot:bodyCell="{ column, record, index, text }"> <template v-slot:bodyCell="{ column, record, index, text }">
</template> </template>-->
</BasicTable> </BasicTable>
<!-- 表单区域 --> <!-- 表单区域 -->
<ProjectLogModal @register="registerModal" @success="handleSuccess"></ProjectLogModal> <ProjectLogModal @register="registerModal" @success="handleSuccess"></ProjectLogModal>
@ -46,16 +46,25 @@
import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './ProjectLog.api'; import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './ProjectLog.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';
import {useRoute} from "vue-router";
import {defHttp} from "@/utils/http/axios";
const queryParam = reactive<any>({}); const queryParam = reactive<any>({});
const checkedKeys = ref<Array<string | number>>([]); const checkedKeys = ref<Array<string | number>>([]);
const userStore = useUserStore(); const userStore = useUserStore();
//model //model
const [registerModal, {openModal}] = useModal(); const [registerModal, {openModal}] = useModal();
const route = useRoute();
const listByProjectId = () =>{
// console.log("projectId",props.projectId)
let params = {projectId: route.query.id}
return defHttp.get({url: '/projectLog/projectLog/list', params});
}
//table //table
const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({ const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({
tableProps:{ tableProps:{
title: '项目操作日志', title: '项目操作日志',
api: list, api: listByProjectId,
columns, columns,
canResize:false, canResize:false,
formConfig: { formConfig: {
@ -187,4 +196,4 @@
:deep(.ant-picker),:deep(.ant-input-number){ :deep(.ant-picker),:deep(.ant-input-number){
width: 100%; width: 100%;
} }
</style> </style>

Loading…
Cancel
Save