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. 10
      jeecgboot-vue3/src/views/projectLog/ProjectLog.data.ts
  7. 216
      jeecgboot-vue3/src/views/projectLog/ProjectLogBasicModal.vue
  8. 21
      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/directioncalListCMS", "anon"); //cms专家模块不拦截
filterChainDefinitionMap.put("/expert/expert/CMSexpinfo", "anon"); //cms专家模块不拦截

@ -75,6 +75,16 @@ public class DisciplineFieidController extends JeecgController<DisciplineFieid,
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);
}
/**
* 分页列表查询
*
* @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
*/
//@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>
</div>
<div>
<ProjectLogModal
@register="registerModal"
v-model:value="editCronValue"
:exeStartTime="exeStartTime"
:hideYear="hideYear"
:remote="remote"
:hideSecond="hideSecond"
/>
</div>
</template>
<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 {BasicTable, useTable, TableAction} from '/@/components/Table';
import {useModal} from '/@/components/Modal';
@ -86,7 +74,6 @@ const checkedKeys = ref<Array<string | number>>([]);
const userStore = useUserStore();
//model
const [registerModal, {openModal}] = useModal();
//table
const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({
tableProps:{
title: '项目表',
@ -179,12 +166,13 @@ function go_yusuanshu(record) {
go('/projectApplication/kejigongguan/yusuanshu?id='+record.id);
}
function projectLog(record) {
function go_projectLog(record) {
// 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: '日志查询',
onClick: handleDetail.bind(null, record),
onClick: go_projectLog.bind(null, record),
}
];
//()

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

@ -1,44 +1,190 @@
<template>
<BasicModal @register="registerModal" title="日志" width="1024px" @ok="onOk">
<PageWrapper>
<a-card title="流程进度" :bordered="true">
<a-steps :current="1" progress-dot size="small">
<a-step title="申请人提交">
<template #description> <div>Jeecg</div> <p>2016-12-12 12:32</p> </template>
</a-step>
<a-step title="申请单位提交">
<template #description>
<p>Chad</p>
<div>
<!--引用表格-->
<BasicTable @register="registerTable" :rowSelection="rowSelection">
<!--插槽:table标题-->
<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: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>
<a-dropdown v-if="selectedRowKeys.length > 0">
<template #overlay>
<a-menu>
<a-menu-item key="1" @click="batchHandleDelete">
<Icon icon="ant-design:delete-outlined"></Icon>
删除
</a-menu-item>
</a-menu>
</template>
</a-step>
<a-step title="科技主管提交" />
<a-step title="市科技局提交" />
<a-step title="财政主管处理" />
</a-steps>
</a-card>
</PageWrapper>
</BasicModal>
<a-button v-auth="'projectLog:project_log:deleteBatch'">批量操作
<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>
<script lang="ts">
import { defineComponent } from 'vue';
import { useAttrs } from '/@/hooks/core/useAttrs';
import { BasicModal, useModalInner } from '/@/components/Modal';
import PageWrapper from "@/components/Page/src/PageWrapper.vue";
<script lang="ts" name="projectLog-projectLog" setup>
import {ref, reactive, computed, unref} from 'vue';
import {BasicTable, useTable, TableAction} from '/@/components/Table';
import {useModal} from '/@/components/Modal';
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
},
})
export default defineComponent({
name: 'ProjectLogModal',
inheritAttrs: false,
components: {PageWrapper, BasicModal},
setup() {
const attrs = useAttrs();
const [registerModal, { closeModal }] = useModalInner();
const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext
function onOk() {
closeModal();
}
//
const superQueryConfig = reactive(superQuerySchema);
return { attrs, registerModal, onOk };
/**
* 高级查询事件
*/
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'
}
]
}
</script>
<style lang="less" scoped>
:deep(.ant-picker),:deep(.ant-input-number){
width: 100%;
}
</style>

@ -3,7 +3,7 @@
<!--引用表格-->
<BasicTable @register="registerTable" :rowSelection="rowSelection">
<!--插槽: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: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>
@ -20,16 +20,16 @@
<Icon icon="mdi:chevron-down"></Icon>
</a-button>
</a-dropdown>
<!-- 高级查询 -->
&lt;!&ndash; 高级查询 &ndash;&gt;
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<!--操作栏-->
&lt;!&ndash;操作栏&ndash;&gt;
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)"/>
</template>
<!--字段回显插槽-->
&lt;!&ndash;字段回显插槽&ndash;&gt;
<template v-slot:bodyCell="{ column, record, index, text }">
</template>
</template>-->
</BasicTable>
<!-- 表单区域 -->
<ProjectLogModal @register="registerModal" @success="handleSuccess"></ProjectLogModal>
@ -46,16 +46,25 @@
import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './ProjectLog.api';
import { downloadFile } from '/@/utils/common/renderUtils';
import { useUserStore } from '/@/store/modules/user';
import {useRoute} from "vue-router";
import {defHttp} from "@/utils/http/axios";
const queryParam = reactive<any>({});
const checkedKeys = ref<Array<string | number>>([]);
const userStore = useUserStore();
//model
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
const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({
tableProps:{
title: '项目操作日志',
api: list,
api: listByProjectId,
columns,
canResize:false,
formConfig: {

Loading…
Cancel
Save