添加下载模板功能
This commit is contained in:
parent
c41418ffec
commit
8407632fdb
|
@ -156,7 +156,6 @@ public class XxhbjwxtjxrwController extends JeecgController<Xxhbjwxtjxrw, IXxhbj
|
|||
* @param request
|
||||
* @param xxhbjwxtjxrw
|
||||
*/
|
||||
@RequiresPermissions("xxhbjwxtjxrw:xxhbjwxtjxrw:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, Xxhbjwxtjxrw xxhbjwxtjxrw) {
|
||||
return super.exportXls(request, xxhbjwxtjxrw, Xxhbjwxtjxrw.class, "教务系统教学任务");
|
||||
|
|
|
@ -32,64 +32,64 @@ import lombok.experimental.Accessors;
|
|||
public class Xxhbjwxtjxrw implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**xnxqdm*/
|
||||
@Excel(name = "xnxqdm", width = 15)
|
||||
@ApiModelProperty(value = "xnxqdm")
|
||||
/**学年学期*/
|
||||
@Excel(name = "学年学期", width = 15)
|
||||
@ApiModelProperty(value = "学年学期")
|
||||
private java.lang.String xnxqdm;
|
||||
/**kcmc*/
|
||||
@Excel(name = "课程名称", width = 15)
|
||||
@ApiModelProperty(value = "课程名称")
|
||||
private java.lang.String kcmc;
|
||||
/**kcrwdm*/
|
||||
@Excel(name = "开课任务编号", width = 15)
|
||||
@ApiModelProperty(value = "开课任务编号")
|
||||
@Excel(name = "课程号", width = 15)
|
||||
@ApiModelProperty(value = "课程号")
|
||||
private java.lang.String kcrwdm;
|
||||
/**kclb*/
|
||||
@Excel(name = "kclb", width = 15)
|
||||
@ApiModelProperty(value = "kclb")
|
||||
@Excel(name = "课程类别", width = 15)
|
||||
@ApiModelProperty(value = "课程类别")
|
||||
private java.lang.String kclb;
|
||||
/**xf*/
|
||||
@Excel(name = "xf", width = 15)
|
||||
@ApiModelProperty(value = "xf")
|
||||
@Excel(name = "学分", width = 15)
|
||||
@ApiModelProperty(value = "学分")
|
||||
private java.lang.String xf;
|
||||
/**zxs*/
|
||||
@Excel(name = "zxs", width = 15)
|
||||
@ApiModelProperty(value = "zxs")
|
||||
@Excel(name = "学时", width = 15)
|
||||
@ApiModelProperty(value = "学时")
|
||||
private java.lang.String zxs;
|
||||
/**kkyxmc*/
|
||||
@Excel(name = "kkyxmc", width = 15)
|
||||
@ApiModelProperty(value = "kkyxmc")
|
||||
@Excel(name = "开课单位名称", width = 15)
|
||||
@ApiModelProperty(value = "开课单位名称")
|
||||
private java.lang.String kkyxmc;
|
||||
/**专业名称*/
|
||||
@Excel(name = "专业名称", width = 15)
|
||||
@ApiModelProperty(value = "专业名称")
|
||||
/**所属校内专业(大类)名称*/
|
||||
@Excel(name = "所属校内专业(大类)名称", width = 15)
|
||||
@ApiModelProperty(value = "所属校内专业(大类)名称")
|
||||
private String zymc;
|
||||
/**teaxm*/
|
||||
@Excel(name = "teaxm", width = 15)
|
||||
@ApiModelProperty(value = "teaxm")
|
||||
@Excel(name = "任课教师[职称]", width = 15)
|
||||
@ApiModelProperty(value = "任课教师[职称]")
|
||||
private java.lang.String teaxm;
|
||||
/**bjxx*/
|
||||
@Excel(name = "bjxx", width = 15)
|
||||
@ApiModelProperty(value = "bjxx")
|
||||
@Excel(name = "班级", width = 15)
|
||||
@ApiModelProperty(value = "班级")
|
||||
private java.lang.String bjxx;
|
||||
/**xn*/
|
||||
@Excel(name = "xn", width = 15)
|
||||
@ApiModelProperty(value = "xn")
|
||||
@Excel(name = "学年", width = 15)
|
||||
@ApiModelProperty(value = "学年")
|
||||
private java.lang.String xn;
|
||||
/**xqmc*/
|
||||
@Excel(name = "xqmc", width = 15)
|
||||
@ApiModelProperty(value = "xqmc")
|
||||
@Excel(name = "学期", width = 15)
|
||||
@ApiModelProperty(value = "学期")
|
||||
private java.lang.String xqmc;
|
||||
/**sjfs*/
|
||||
@Excel(name = "sjfs", width = 15)
|
||||
@ApiModelProperty(value = "sjfs")
|
||||
@Excel(name = "试卷份数", width = 15)
|
||||
@ApiModelProperty(value = "试卷份数")
|
||||
private java.lang.String sjfs;
|
||||
/**khfsmc*/
|
||||
@Excel(name = "khfsmc", width = 15)
|
||||
@ApiModelProperty(value = "khfsmc")
|
||||
@Excel(name = "考试方式", width = 15)
|
||||
@ApiModelProperty(value = "考试方式")
|
||||
private java.lang.String khfsmc;
|
||||
/**isUploadSj*/
|
||||
@Excel(name = "isUploadSj", width = 15)
|
||||
@ApiModelProperty(value = "isUploadSj")
|
||||
@Excel(name = "是否能上传考核分析及试卷样本", width = 15)
|
||||
@ApiModelProperty(value = "是否能上传考核分析及试卷样本")
|
||||
private java.lang.String isUploadSj;
|
||||
}
|
||||
|
|
|
@ -156,7 +156,6 @@ public class XxhbjwxtxsmdController extends JeecgController<Xxhbjwxtxsmd, IXxhbj
|
|||
* @param request
|
||||
* @param xxhbjwxtxsmd
|
||||
*/
|
||||
@RequiresPermissions("xxhbjwxtxsmd:xxhbjwxtxsmd:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, Xxhbjwxtxsmd xxhbjwxtxsmd) {
|
||||
return super.exportXls(request, xxhbjwxtxsmd, Xxhbjwxtxsmd.class, "教务系统学生名单");
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
附件1:课堂教学评价表
|
||||
课堂教学评价表
|
||||
课程名称: 授课教师: 授课时间: 年 月 日
|
||||
评价重点
|
||||
评价标准
|
||||
评价等级
|
||||
|
||||
|
||||
优
|
||||
良
|
||||
及格
|
||||
不及格
|
||||
课程思政
|
||||
课堂教学中坚持正确政治方向,贯穿教书育人。落实课程思政要求,积极引导学生树立正确的世界观、人生观和价值观,注重学生理想信念和道德修养的培养。
|
||||
|
||||
|
||||
|
||||
|
||||
教学内容
|
||||
课程教学目标明确,体现"以学为中心、以教为主导"教学理念。教学内容围绕教学目标设计,内容充实新颖,反映学科前沿,具有高阶性、创新性和挑战度。
|
||||
|
||||
|
||||
|
||||
|
||||
教学态度
|
||||
教学准备充分,讲课精神饱满。注重为人师表,仪态大方,教风严谨。教学过程遵守新时代高校教师职业行为十项准则,无与教师身份不符的言行。
|
||||
|
||||
|
||||
|
||||
|
||||
教学方法
|
||||
讲述生动,层次分明,重点突出。信息技术与教学过程有机融合,教学方法和手段运用得当,支持学生的互动和参与,有效激发学生积极思维。
|
||||
|
||||
|
||||
|
||||
|
||||
教学效果
|
||||
学生学习态度认真,聚精会神听讲,师生互动,课堂气氛活跃,课堂育人效果好,教学目标达成度高。
|
||||
|
||||
|
||||
|
||||
|
||||
总体评价
|
||||
|
||||
|
||||
|
||||
|
||||
问题与建议:
|
||||
|
||||
专家签名: 年 月 日
|
|
@ -0,0 +1,50 @@
|
|||
附件2:试卷评价表
|
||||
试卷评价表
|
||||
课程名称: 开课学院: 学生专业 年级 试卷份数:
|
||||
评价重点
|
||||
评价标准
|
||||
评价等级
|
||||
|
||||
|
||||
优
|
||||
良
|
||||
及格
|
||||
不及格
|
||||
试卷命题
|
||||
试卷命题符合课程教学大纲,注重考核学生综合运用理论知识分析和解决问题的能力。
|
||||
|
||||
|
||||
|
||||
|
||||
适应程度
|
||||
试题难易度适中,符合学生情况。题型灵活多样,题量适当。
|
||||
|
||||
|
||||
|
||||
|
||||
试卷评阅
|
||||
参考答案与评分标准正确、合理,得分点细致明确。阅卷规范,依照参考答案与评分标准评阅,无统计分数、登录分数等错误。
|
||||
|
||||
|
||||
|
||||
|
||||
试卷分析
|
||||
试卷分析针对性强,对学生存在的问题剖析深入,有明确的改进措施。
|
||||
|
||||
|
||||
|
||||
|
||||
总体评价
|
||||
|
||||
|
||||
|
||||
|
||||
问题与建议:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
专家签名: 年 月 日
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
附件3:本科毕业论文(设计)评价表
|
||||
本科毕业论文(设计)评价表
|
||||
专业: 年级: 份数
|
||||
序号
|
||||
评价标准
|
||||
评价等级
|
||||
|
||||
|
||||
优
|
||||
良
|
||||
及格
|
||||
不及格
|
||||
1
|
||||
A.毕业论文(设计)选题来自教师专业实践、科研课题,选题符合专业培养目标,工作量适中,有一定的理论意义、实际应用价值。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
B.毕业论文(设计)选题以实验、实习、工程实践和社会调查等实践性工作为基础,选题符合专业培养目标,工作量适中,有一定的理论意义、实际应用价值。
|
||||
|
||||
|
||||
|
||||
|
||||
2
|
||||
毕业论文(设计)论点明确、论据充分、论述有理、结构完整、格式规范。
|
||||
|
||||
|
||||
|
||||
|
||||
3
|
||||
教师针对学生毕业论文(设计)中的问题进行有效指导,有明确的改进要求,记录详细、具体,材料完整、规范。答辩程序规范,问题明晰、记录完整、准确。
|
||||
|
||||
|
||||
|
||||
|
||||
4
|
||||
成绩评定标准明确、具体,成绩评定客观、公正。
|
||||
|
||||
|
||||
|
||||
|
||||
总体评价
|
||||
|
||||
|
||||
|
||||
|
||||
问题与建议:
|
||||
|
||||
|
||||
|
||||
|
||||
专家签名: 年 月 日
|
|
@ -28,18 +28,26 @@ export const columns: BasicColumn[] = [
|
|||
{
|
||||
title: '学分',
|
||||
align: "center",
|
||||
dataIndex: 'xf'
|
||||
dataIndex: 'xf',
|
||||
width: 80
|
||||
},
|
||||
{
|
||||
title: '学时',
|
||||
align: "center",
|
||||
dataIndex: 'zxs'
|
||||
dataIndex: 'zxs',
|
||||
width: 80
|
||||
},
|
||||
{
|
||||
title: '开课单位名称',
|
||||
align: "center",
|
||||
dataIndex: 'kkyxmc'
|
||||
},
|
||||
{
|
||||
title: '所属校内专业(大类)名称',
|
||||
align: "center",
|
||||
dataIndex: 'zymc',
|
||||
width: 220
|
||||
},
|
||||
{
|
||||
title: '任课教师[职称]',
|
||||
align: "center",
|
||||
|
|
|
@ -0,0 +1,235 @@
|
|||
<template>
|
||||
<div class="p-2">
|
||||
<!--查询区域-->
|
||||
<div class="jeecg-basic-table-form-container">
|
||||
<a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||
<a-row :gutter="24">
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
<!--引用表格-->
|
||||
<BasicTable @register="registerTable" :rowSelection="rowSelection">
|
||||
<!--插槽:table标题-->
|
||||
<template #tableTitle>
|
||||
<a-button type="primary" v-auth="'xxhbjwxtjxrw:xxhbjwxtjxrw:add'" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button>
|
||||
<a-button type="primary" v-auth="'xxhbjwxtjxrw:xxhbjwxtjxrw:exportXls'" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
|
||||
<j-upload-button type="primary" v-auth="'xxhbjwxtjxrw:xxhbjwxtjxrw: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-button v-auth="'xxhbjwxtjxrw:xxhbjwxtjxrw: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>
|
||||
<!-- 表单区域 -->
|
||||
<XxhbjwxtjxrwModal ref="registerModal" @success="handleSuccess"></XxhbjwxtjxrwModal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" name="xxhbjwxtjxrw-xxhbjwxtjxrw" setup>
|
||||
import { ref, reactive } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '/@/components/Table';
|
||||
import { useListPage } from '/@/hooks/system/useListPage';
|
||||
import { columns, superQuerySchema } from './Xxhbjwxtjxrw.data';
|
||||
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl } from './Xxhbjwxtjxrw.api';
|
||||
import { downloadFile } from '/@/utils/common/renderUtils';
|
||||
import XxhbjwxtjxrwModal from './components/XxhbjwxtjxrwModal.vue'
|
||||
import { useUserStore } from '/@/store/modules/user';
|
||||
|
||||
const formRef = ref();
|
||||
const queryParam = reactive<any>({});
|
||||
const toggleSearchStatus = ref<boolean>(false);
|
||||
const registerModal = ref();
|
||||
const userStore = useUserStore();
|
||||
//注册table数据
|
||||
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
|
||||
tableProps: {
|
||||
title: '教务系统教学任务',
|
||||
api: list,
|
||||
columns,
|
||||
canResize:false,
|
||||
useSearchForm: false,
|
||||
actionColumn: {
|
||||
width: 120,
|
||||
fixed: 'right',
|
||||
},
|
||||
beforeFetch: async (params) => {
|
||||
return Object.assign(params, queryParam);
|
||||
},
|
||||
},
|
||||
exportConfig: {
|
||||
name: "教务系统教学任务",
|
||||
url: getExportUrl,
|
||||
params: queryParam,
|
||||
},
|
||||
importConfig: {
|
||||
url: getImportUrl,
|
||||
success: handleSuccess
|
||||
},
|
||||
});
|
||||
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] = tableContext;
|
||||
const labelCol = reactive({
|
||||
xs:24,
|
||||
sm:4,
|
||||
xl:6,
|
||||
xxl:4
|
||||
});
|
||||
const wrapperCol = reactive({
|
||||
xs: 24,
|
||||
sm: 20,
|
||||
});
|
||||
|
||||
// 高级查询配置
|
||||
const superQueryConfig = reactive(superQuerySchema);
|
||||
|
||||
/**
|
||||
* 高级查询事件
|
||||
*/
|
||||
function handleSuperQuery(params) {
|
||||
Object.keys(params).map((k) => {
|
||||
queryParam[k] = params[k];
|
||||
});
|
||||
searchQuery();
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增事件
|
||||
*/
|
||||
function handleAdd() {
|
||||
registerModal.value.disableSubmit = false;
|
||||
registerModal.value.add();
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑事件
|
||||
*/
|
||||
function handleEdit(record: Recordable) {
|
||||
registerModal.value.disableSubmit = false;
|
||||
registerModal.value.edit(record);
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
*/
|
||||
function handleDetail(record: Recordable) {
|
||||
registerModal.value.disableSubmit = true;
|
||||
registerModal.value.edit(record);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除事件
|
||||
*/
|
||||
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: 'xxhbjwxtjxrw:xxhbjwxtjxrw:edit'
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 下拉操作栏
|
||||
*/
|
||||
function getDropDownAction(record) {
|
||||
return [
|
||||
{
|
||||
label: '详情',
|
||||
onClick: handleDetail.bind(null, record),
|
||||
}, {
|
||||
label: '删除',
|
||||
popConfirm: {
|
||||
title: '是否确认删除',
|
||||
confirm: handleDelete.bind(null, record),
|
||||
placement: 'topLeft',
|
||||
},
|
||||
auth: 'xxhbjwxtjxrw:xxhbjwxtjxrw:delete'
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询
|
||||
*/
|
||||
function searchQuery() {
|
||||
reload();
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置
|
||||
*/
|
||||
function searchReset() {
|
||||
formRef.value.resetFields();
|
||||
selectedRowKeys.value = [];
|
||||
//刷新数据
|
||||
reload();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.jeecg-basic-table-form-container {
|
||||
padding: 0;
|
||||
.table-page-search-submitButtons {
|
||||
display: block;
|
||||
margin-bottom: 24px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.query-group-cust{
|
||||
min-width: 100px !important;
|
||||
}
|
||||
.query-group-split-cust{
|
||||
width: 30px;
|
||||
display: inline-block;
|
||||
text-align: center
|
||||
}
|
||||
.ant-form-item:not(.ant-form-item-with-help){
|
||||
margin-bottom: 16px;
|
||||
height: 32px;
|
||||
}
|
||||
:deep(.ant-picker),:deep(.ant-input-number){
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -4,6 +4,23 @@
|
|||
<div class="jeecg-basic-table-form-container">
|
||||
<a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24" style="text-align: right;">
|
||||
模板下载:
|
||||
<a-popover placement="topRight" type="primary">
|
||||
<template #content>
|
||||
<a-button type="primary" style="margin-left: 10px;margin-top: 10px" @click="textDown('a1','课堂教学评价表')">课堂教学评价表</a-button>
|
||||
<a-button type="primary" style="margin-left: 10px;margin-top: 10px" @click="textDown('a2','试卷评价表')">试卷评价表</a-button>
|
||||
<a-button type="primary" style="margin-left: 10px;margin-top: 10px" @click="textDown('a3','本科毕业论文(设计)评价表')">本科毕业论文(设计)评价表</a-button>
|
||||
</template>
|
||||
<template #title>
|
||||
<span>专家用评价表</span>
|
||||
</template>
|
||||
<a-button>专家用评价表</a-button>
|
||||
</a-popover>
|
||||
|
||||
<!-- <a-button type="primary" style="margin-left: 10px;">专家用评价表</a-button>
|
||||
<a-button type="primary" style="margin-left: 10px;">专家工作量统计</a-button> -->
|
||||
</a-col>
|
||||
<a-col :lg="6">
|
||||
<a-form-item name="xn">
|
||||
<template #label><span title="学年">学年</span></template>
|
||||
|
@ -43,6 +60,7 @@
|
|||
<a-col :lg="6">
|
||||
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</a-button>
|
||||
<a-button type="primary" preIcon="ant-design:reload-outlined" @click="searchReset" style="margin-left: 8px">重置</a-button>
|
||||
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls" style="margin-left: 8px"> 导出</a-button>
|
||||
<a @click="toggleSearchStatus = !toggleSearchStatus" style="margin-left: 8px">
|
||||
{{ toggleSearchStatus ? '收起' : '展开' }}
|
||||
<Icon :icon="toggleSearchStatus ? 'ant-design:up-outlined' : 'ant-design:down-outlined'" />
|
||||
|
@ -123,6 +141,21 @@
|
|||
// 高级查询配置
|
||||
const superQueryConfig = reactive(superQuerySchema);
|
||||
|
||||
|
||||
function textDown(type,downame){
|
||||
var a = document.createElement("a"); //创建一个<a></a>标签
|
||||
a.href = "/download/"+type+".docx";
|
||||
//给a标签的href属性值加上地址,注意,这里是绝对路径,不用加 点.
|
||||
a.download =downame+".docx";
|
||||
//设置下载文件文件名,这里加上.xlsx指定文件类型,pdf文件就指定.fpd即可
|
||||
a.style.display = "none"; // 障眼法藏起来a标签
|
||||
document.body.appendChild(a);
|
||||
// 将a标签追加到文档对象中
|
||||
a.click(); //模拟点击了a标签,会触发a标签的href的读取,浏览器就会自动下载了
|
||||
a.remove();
|
||||
// 一次性的,用完就删除a标签
|
||||
}
|
||||
|
||||
/**
|
||||
* 高级查询事件
|
||||
*/
|
||||
|
|
|
@ -0,0 +1,212 @@
|
|||
<template>
|
||||
<div class="p-2">
|
||||
<!--查询区域-->
|
||||
<div class="jeecg-basic-table-form-container">
|
||||
<a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||
<a-row :gutter="24">
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
<!--引用表格-->
|
||||
<BasicTable @register="registerTable" :rowSelection="rowSelection">
|
||||
<!--操作栏-->
|
||||
<template #action="{ record }">
|
||||
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)"/>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<!-- 表单区域 -->
|
||||
<XxhbjwxtxsmdModal ref="registerModal" @success="handleSuccess"></XxhbjwxtxsmdModal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" name="xxhbjwxtxsmd-xxhbjwxtxsmd" setup>
|
||||
import { ref, reactive } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '/@/components/Table';
|
||||
import { useListPage } from '/@/hooks/system/useListPage';
|
||||
import { columns, superQuerySchema } from './Xxhbjwxtxsmd.data';
|
||||
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl } from './Xxhbjwxtxsmd.api';
|
||||
import { downloadFile } from '/@/utils/common/renderUtils';
|
||||
import XxhbjwxtxsmdModal from './components/XxhbjwxtxsmdModal.vue'
|
||||
import { useUserStore } from '/@/store/modules/user';
|
||||
|
||||
const formRef = ref();
|
||||
const queryParam = reactive<any>({});
|
||||
const toggleSearchStatus = ref<boolean>(false);
|
||||
const registerModal = ref();
|
||||
const userStore = useUserStore();
|
||||
//注册table数据
|
||||
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
|
||||
tableProps: {
|
||||
title: '教务系统学生名单',
|
||||
api: list,
|
||||
columns,
|
||||
canResize:false,
|
||||
useSearchForm: false,
|
||||
actionColumn: {
|
||||
width: 120,
|
||||
fixed: 'right',
|
||||
},
|
||||
beforeFetch: async (params) => {
|
||||
return Object.assign(params, queryParam);
|
||||
},
|
||||
},
|
||||
exportConfig: {
|
||||
name: "教务系统学生名单",
|
||||
url: getExportUrl,
|
||||
params: queryParam,
|
||||
},
|
||||
importConfig: {
|
||||
url: getImportUrl,
|
||||
success: handleSuccess
|
||||
},
|
||||
});
|
||||
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] = tableContext;
|
||||
const labelCol = reactive({
|
||||
xs:24,
|
||||
sm:4,
|
||||
xl:6,
|
||||
xxl:4
|
||||
});
|
||||
const wrapperCol = reactive({
|
||||
xs: 24,
|
||||
sm: 20,
|
||||
});
|
||||
|
||||
// 高级查询配置
|
||||
const superQueryConfig = reactive(superQuerySchema);
|
||||
|
||||
/**
|
||||
* 高级查询事件
|
||||
*/
|
||||
function handleSuperQuery(params) {
|
||||
Object.keys(params).map((k) => {
|
||||
queryParam[k] = params[k];
|
||||
});
|
||||
searchQuery();
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增事件
|
||||
*/
|
||||
function handleAdd() {
|
||||
registerModal.value.disableSubmit = false;
|
||||
registerModal.value.add();
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑事件
|
||||
*/
|
||||
function handleEdit(record: Recordable) {
|
||||
registerModal.value.disableSubmit = false;
|
||||
registerModal.value.edit(record);
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
*/
|
||||
function handleDetail(record: Recordable) {
|
||||
registerModal.value.disableSubmit = true;
|
||||
registerModal.value.edit(record);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除事件
|
||||
*/
|
||||
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: 'xxhbjwxtxsmd:xxhbjwxtxsmd:edit'
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 下拉操作栏
|
||||
*/
|
||||
function getDropDownAction(record) {
|
||||
return [
|
||||
{
|
||||
label: '详情',
|
||||
onClick: handleDetail.bind(null, record),
|
||||
}, {
|
||||
label: '删除',
|
||||
popConfirm: {
|
||||
title: '是否确认删除',
|
||||
confirm: handleDelete.bind(null, record),
|
||||
placement: 'topLeft',
|
||||
},
|
||||
auth: 'xxhbjwxtxsmd:xxhbjwxtxsmd:delete'
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询
|
||||
*/
|
||||
function searchQuery() {
|
||||
reload();
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置
|
||||
*/
|
||||
function searchReset() {
|
||||
formRef.value.resetFields();
|
||||
selectedRowKeys.value = [];
|
||||
//刷新数据
|
||||
reload();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.jeecg-basic-table-form-container {
|
||||
padding: 0;
|
||||
.table-page-search-submitButtons {
|
||||
display: block;
|
||||
margin-bottom: 24px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.query-group-cust{
|
||||
min-width: 100px !important;
|
||||
}
|
||||
.query-group-split-cust{
|
||||
width: 30px;
|
||||
display: inline-block;
|
||||
text-align: center
|
||||
}
|
||||
.ant-form-item:not(.ant-form-item-with-help){
|
||||
margin-bottom: 16px;
|
||||
height: 32px;
|
||||
}
|
||||
:deep(.ant-picker),:deep(.ant-input-number){
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -73,12 +73,14 @@
|
|||
import { downloadFile } from '/@/utils/common/renderUtils';
|
||||
import XxhbjwxtxsmdModal from './components/XxhbjwxtxsmdModal.vue'
|
||||
import { useUserStore } from '/@/store/modules/user';
|
||||
import { downloadFile as ajaxDownloadFileFn } from '/@/api/common/api';
|
||||
|
||||
const formRef = ref();
|
||||
const queryParam = reactive<any>({});
|
||||
const toggleSearchStatus = ref<boolean>(false);
|
||||
const registerModal = ref();
|
||||
const userStore = useUserStore();
|
||||
const spinning = ref<boolean>(false);
|
||||
|
||||
const jxrwInfo = reactive<any>({});
|
||||
//注册table数据
|
||||
|
@ -119,7 +121,20 @@
|
|||
sm: 20,
|
||||
});
|
||||
|
||||
|
||||
function textDown(){
|
||||
var a = document.createElement("a"); //创建一个<a></a>标签
|
||||
a.href = "/download/a.docx";
|
||||
//给a标签的href属性值加上地址,注意,这里是绝对路径,不用加 点.
|
||||
a.download ="a.docx";
|
||||
//设置下载文件文件名,这里加上.xlsx指定文件类型,pdf文件就指定.fpd即可
|
||||
a.style.display = "none"; // 障眼法藏起来a标签
|
||||
document.body.appendChild(a);
|
||||
// 将a标签追加到文档对象中
|
||||
a.click(); //模拟点击了a标签,会触发a标签的href的读取,浏览器就会自动下载了
|
||||
a.remove();
|
||||
// 一次性的,用完就删除a标签
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑事件
|
||||
*/
|
||||
|
@ -140,6 +155,7 @@
|
|||
* 操作栏
|
||||
*/
|
||||
function getTableAction(record) {
|
||||
if(record.studentPath){
|
||||
return [
|
||||
{
|
||||
label: '预览',
|
||||
|
@ -150,6 +166,14 @@
|
|||
onClick: handleEdit.bind(null, record),
|
||||
},
|
||||
];
|
||||
|
||||
}else{
|
||||
return [
|
||||
{
|
||||
label: '暂无文件',
|
||||
disabled:true,
|
||||
},];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue