2023-07-23 01:29:23 +08:00
< template >
< div >
<!-- 查询区域 -- >
< div class = "jeecg-basic-table-form-container" >
< a -form @keyup.enter.native ="searchQuery" :model ="queryParam" :label-col ="labelCol" :wrapper-col ="wrapperCol" >
< a -row :gutter ="24" >
2023-08-18 21:25:54 +08:00
< a -col :span ="8" >
< a -form -item label = "学年学期" >
< j -dict -select -tag ref = "xqDictTag" placeholder = "请选择学年学期" v -model :value ="queryParam.xqxn" dictCode = "kc_xqxn_history,title,title,true order by start_time desc" / >
< / a - f o r m - i t e m >
< / a - c o l >
2023-07-23 01:29:23 +08:00
< a -col :lg ="8" >
< a -form -item label = "单位名称" >
<!-- < j -dict -select -tag placeholder = "请选择单位名称" v -model :value ="queryParam.tklx" dictCode = "tpkwcqkjzglx" / > -- >
2023-07-28 23:45:21 +08:00
< j -dict -select -tag placeholder = "请选择单位名称" v -model :value ="queryParam.dwmc" dictCode = "kc_export_config_tpkwcqkjzglx,dwmc,dwmc,true group by dwmc" / >
2023-07-23 01:29:23 +08:00
< / a - f o r m - i t e m >
< / a - c o l >
< a -col :lg ="8" >
2023-07-28 23:45:21 +08:00
< a -form -item label = "教师工号" >
<!-- < j -dict -select -tag placeholder = "请选择教师" v -model :value ="queryParam.gh" dictCode = "xxhbuser,xm,gh" / > -- >
< j -input placeholder = "请输入教师工号" v -model :value ="queryParam.gh" / >
< / a - f o r m - i t e m >
< / a - c o l >
< a -col :lg ="8" >
< a -form -item label = "教师姓名" >
<!-- < j -dict -select -tag placeholder = "请选择教师" v -model :value ="queryParam.gh" dictCode = "xxhbuser,xm,gh" / > -- >
< j -input placeholder = "请输入教师姓名" v -model :value ="queryParam.xm" / >
2023-07-23 01:29:23 +08:00
< / a - f o r m - i t e m >
< / a - c o l >
< a -col :lg ="8" >
2023-08-09 00:40:10 +08:00
< a -form -item label = "听课身份" >
2023-08-09 23:36:27 +08:00
< j -dict -select -tag mode = "multiple" placeholder = "请选择听课身份" v -model :value ="queryParam.tklx" dictCode = "tpkwcqkjzglx" / >
2023-07-23 01:29:23 +08:00
< / a - f o r m - i t e m >
< / a - c o l >
< a -col :xl ="6" :lg ="7" :md ="8" :sm ="24" >
< span style = "float: left; overflow: hidden" class = "table-page-search-submitButtons" >
< 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 - b u t t o n >
2023-07-28 23:45:21 +08:00
< a -button type = "primary" preIcon = "ant-design:export-outlined" @click ="onExport" style = "margin-left: 8px" > 导出 < / a - b u t t o n >
2023-07-23 01:29:23 +08:00
<!-- < a @ click = "toggleSearchStatus = !toggleSearchStatus" style = "margin-left: 8px" >
{ { toggleSearchStatus ? '收起' : '展开' } }
< Icon : icon = "toggleSearchStatus ? 'ant-design:up-outlined' : 'ant-design:down-outlined'" / >
< / a > -- >
< / a - c o l >
< / span >
< / a - c o l >
< / a - r o w >
< / a - f o r m >
< / div >
<!-- 引用表格 -- >
< BasicTable @register ="registerTable" :rowSelection ="rowSelection" >
<!-- 插槽 : table标题 -- >
< template # tableTitle >
2023-07-28 23:45:21 +08:00
<!-- < a -button type = "primary" @click ="handleAdd" preIcon = "ant-design:plus-outlined" > 新增 < / a - b u t t o n >
< a -button type = "primary" @click ="handleAddYq" preIcon = "ant-design:plus-outlined" > 听课要求 < / a - b u t t o n > - - >
2023-07-23 01:29:23 +08:00
<!-- < j -upload -button type = "primary" preIcon = "ant-design:import-outlined" @click ="onImportXls" > 导入 < / j -upload -button > -- >
2023-07-28 23:45:21 +08:00
<!-- < a -dropdown v-if ="selectedRowKeys.length > 0" >
2023-07-23 01:29:23 +08:00
< template # overlay >
< a -menu >
< a -menu -item key = "1" @click ="batchHandleDelete" >
< Icon icon = "ant-design:delete-outlined" > < / Icon >
删除
< / a - m e n u - i t e m >
< / a - m e n u >
< / template >
< a -button > 批量操作
< Icon icon = "mdi:chevron-down" > < / Icon >
< / a - b u t t o n >
2023-07-28 23:45:21 +08:00
< / a - d r o p d o w n > - - >
2023-07-23 01:29:23 +08:00
< / template >
<!-- 操作栏 -- >
< template # action = "{ record }" >
< TableAction :actions ="getTableAction(record)" :dropDownActions ="getDropDownAction(record)" / >
< / template >
<!-- 字段回显插槽 -- >
2023-07-24 00:27:28 +08:00
<!-- < template # htmlSlot = "{text}" >
2023-07-23 01:29:23 +08:00
< div v-html ="text" > < / div >
2023-07-24 00:27:28 +08:00
< / template > -- >
2023-07-23 01:29:23 +08:00
<!-- 省市区字段回显插槽 -- >
<!-- < template # pcaSlot = "{text}" >
{ { getAreaTextByCode ( text ) } }
< / template > -- >
< template # fileSlot = "{text}" >
< span v-if ="!text" style="font-size: 12px;font-style: italic;" > 无文件 < / span >
< a -button v -else :ghost ="true" type = "primary" preIcon = "ant-design:download-outlined" size = "small" @click ="downloadFile(text)" > 下载 < / a -button >
< / template >
< / BasicTable >
<!-- 表单区域 -- >
< KcExportConfigTpkwcqkjzglxModal ref = "registerModal" @success ="handleSuccess" > < / KcExportConfigTpkwcqkjzglxModal >
2023-07-28 23:45:21 +08:00
< KcTksfrzbModal ref = "registerYqModal" @success ="handleSuccess" > < / KcTksfrzbModal >
2023-07-23 01:29:23 +08:00
< / div >
< / template >
< script lang = "ts" name = "config-kcExportConfigTpkwcqkjzglx" setup >
import { ref , reactive } from 'vue' ;
import { BasicTable , useTable , TableAction } from '/@/components/Table' ;
import { useListPage } from '/@/hooks/system/useListPage' ;
import { columns } from './KcExportConfigTpkwcqkjzglx.data' ;
import { list , deleteOne , batchDelete , getImportUrl , getExportUrl } from './KcExportConfigTpkwcqkjzglx.api' ;
import { downloadFile } from '/@/utils/common/renderUtils' ;
import KcExportConfigTpkwcqkjzglxModal from './components/KcExportConfigTpkwcqkjzglxModal.vue'
2023-07-28 23:45:21 +08:00
import KcTksfrzbModal from './components/KcTksfrzbModal.vue'
2023-07-23 01:29:23 +08:00
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue' ;
import { defHttp } from '/@/utils/http/axios' ;
import { useMessage } from '/@/hooks/web/useMessage' ;
2023-07-28 23:45:21 +08:00
import { JInput } from '/@/components/Form' ;
2023-08-18 21:25:54 +08:00
import { getSysConfig } from '/@/views/site/utils/index' ;
2023-07-23 01:29:23 +08:00
const queryParam = ref < any > ( { } ) ;
const toggleSearchStatus = ref < boolean > ( false ) ;
const registerModal = ref ( ) ;
2023-07-28 23:45:21 +08:00
const registerYqModal = ref ( ) ;
2023-07-23 01:29:23 +08:00
const { createMessage } = useMessage ( ) ;
//注册table数据
const { prefixCls , tableContext , onExportXls , onImportXls } = useListPage ( {
tableProps : {
title : 'kc_export_config_tpkwcqkjzglx' ,
api : list ,
columns ,
canResize : false ,
useSearchForm : false ,
2023-07-28 23:45:21 +08:00
showActionColumn : false ,
2023-07-23 01:29:23 +08:00
actionColumn : {
width : 120 ,
fixed : 'right' ,
} ,
beforeFetch : ( params ) => {
params . column = '' , params . order = '' ; //新生成的默认不带排序
2023-08-18 23:47:49 +08:00
params . xqxn = getSysConfig ( ) . flag1 ;
2023-07-23 01:29:23 +08:00
return Object . assign ( params , queryParam . value ) ;
} ,
} ,
exportConfig : {
name : "kc_export_config_tpkwcqkjzglx" ,
url : getExportUrl ,
} ,
importConfig : {
url : getImportUrl ,
success : handleSuccess
} ,
} ) ;
2023-08-18 21:25:54 +08:00
2023-07-23 01:29:23 +08:00
const [ registerTable , { reload , collapseAll , updateTableDataRecord , findTableDataRecord , getDataSource } , { rowSelection , selectedRowKeys } ] = tableContext ;
const labelCol = reactive ( {
xs : { span : 24 } ,
sm : { span : 7 } ,
} ) ;
const wrapperCol = reactive ( {
xs : { span : 24 } ,
sm : { span : 16 } ,
} ) ;
/ * *
* 新增事件
* /
function handleAdd ( ) {
registerModal . value . disableSubmit = false ;
registerModal . value . add ( ) ;
}
2023-07-28 23:45:21 +08:00
function handleAddYq ( ) {
registerYqModal . value . disableSubmit = false ;
registerYqModal . value . add ( ) ;
}
2023-07-23 01:29:23 +08:00
/ * *
* 编辑事件
* /
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 ) ,
} ,
] ;
}
/ * *
* 下拉操作栏
* /
function getDropDownAction ( record ) {
return [
{
label : '详情' ,
onClick : handleDetail . bind ( null , record ) ,
} , {
label : '删除' ,
popConfirm : {
title : '是否确认删除' ,
confirm : handleDelete . bind ( null , record ) ,
}
}
]
}
/ * *
* 查询
* /
function searchQuery ( ) {
reload ( ) ;
}
/ * *
* 重置
* /
function searchReset ( ) {
queryParam . value = { } ;
selectedRowKeys . value = [ ] ;
//刷新数据
reload ( ) ;
}
function onExport ( ) {
2023-07-28 23:45:21 +08:00
if ( ! queryParam . value . dwmc ) {
createMessage . warn ( '请选择导出的单位' ) ;
return ;
}
2023-07-23 01:29:23 +08:00
onExportWord ( ) ;
}
async function onExportWord ( ) {
2023-07-30 09:24:43 +08:00
let fileName = '教学听课情况表.pdf' ;
// let fileName = '教学听课情况表.docx';
2023-07-23 01:29:23 +08:00
let paramsForm = queryParam . value ;
2023-07-30 09:24:43 +08:00
const data = await defHttp . get ( { url : '/config/kcExportConfigTpkwcqkjzglx/exportPdf' , params : paramsForm , responseType : 'blob' } , { isTransformResponse : false } ) ;
// const data = await defHttp.get({ url: '/config/kcExportConfigTpkwcqkjzglx/exportWord', params: paramsForm, responseType: 'blob' }, { isTransformResponse: false });
2023-07-23 01:29:23 +08:00
if ( ! data ) {
createMessage . warning ( '文件下载失败' ) ;
return ;
}
2023-07-30 09:24:43 +08:00
let blobOptions = { type : 'application/pdf' } ;
// let blobOptions = { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' };
2023-07-23 01:29:23 +08:00
let navigator : any = window . navigator ;
let msSaveBlob = navigator . msSaveBlob ;
if ( typeof msSaveBlob !== 'undefined' ) {
msSaveBlob ( new Blob ( [ data ] , blobOptions ) , fileName ) ;
} else {
let url = window . URL . createObjectURL ( new Blob ( [ data ] , blobOptions ) ) ;
let link = document . createElement ( 'a' ) ;
link . style . display = 'none' ;
link . href = url ;
link . setAttribute ( 'download' , fileName ) ;
document . body . appendChild ( link ) ;
link . click ( ) ;
document . body . removeChild ( link ) ; //下载完成移除元素
window . URL . revokeObjectURL ( url ) ; //释放掉blob对象
}
}
< / script >
< style lang = "less" scoped >
. jeecg - basic - table - form - container {
. table - page - search - submitButtons {
display : block ;
margin - bottom : 24 px ;
white - space : nowrap ;
}
. query - group - cust {
width : calc ( 50 % - 15 px ) ;
min - width : 100 px ! important ;
}
. query - group - split - cust {
width : 30 px ;
display : inline - block ;
text - align : center
}
}
< / style >