2023-07-28 23:45:21 +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-28 23:34:36 +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-28 23:45:21 +08:00
< a -col :lg ="8" >
2023-11-17 16:18:49 +08:00
< a -form -item label = "学院名称" >
2023-07-28 23:45:21 +08:00
<!-- < j -dict -select -tag placeholder = "请选择单位名称" v -model :value ="queryParam.tklx" dictCode = "tpkwcqkjzglx" / > -- >
2023-11-17 16:18:49 +08:00
< j -dict -select -tag placeholder = "请选择学院名称" v -model :value ="queryParam.dwmc" dictCode = "kc_kkdw21_view,kkdw,kkdw" / >
2023-07-28 23:45:21 +08:00
< / 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.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" / >
< / 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-28 23:45:21 +08:00
< / a - f o r m - i t e m >
< / a - c o l >
2023-07-28 23:51:27 +08:00
< a -col :lg ="8" >
2023-08-09 00:40:10 +08:00
< a -form -item label = "听课类型" >
2023-07-28 23:51:27 +08:00
<!-- < j -dict -select -tag placeholder = "请输入身份" v -model :value ="queryParam.tklx" dictCode = "tpkwcqkjzglx" / > -- >
2023-08-09 00:40:10 +08:00
< j -input placeholder = "请输入听课类型" v -model :value ="queryParam.sf" / >
2023-07-28 23:51:27 +08:00
< / a - f o r m - i t e m >
< / a - c o l >
2023-12-04 23:46:29 +08:00
< a -col :span ="8" >
< a -form -item label = "在职状态" >
< j -dict -select -tag ref = "xqDictTag" placeholder = "请选择在职状态" v -model :value ="queryParam.zt" dictCode = "kc_export_config_tpkwcqkjzglx,zt,zt,true group by zt" / >
< / a - f o r m - i t e m >
< / a - c o l >
<!-- < a -col :lg ="8" >
2023-10-09 10:36:03 +08:00
< a -form -item label = "听课类型" >
< j -input placeholder = "请输入听课类型" v -model :value ="queryParam.rjzy" / >
< / a - f o r m - i t e m >
2023-12-04 23:46:29 +08:00
< / a - c o l > - - >
2023-07-28 23:45:21 +08:00
< 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 >
<!-- < 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 >
< a -button type = "primary" @click ="handleAdd" preIcon = "ant-design:plus-outlined" > 新增 < / a - b u t t o n >
2023-10-27 22:35:08 +08:00
<!-- < a -button type = "primary" @click ="handleAddYq" preIcon = "ant-design:plus-outlined" > 听课要求 < / a - b u t t o n > - - >
2023-08-25 00:40:30 +08:00
<!-- < a -button v-if ="!roleList.filter(x => x.roleCode == 'admin' ).length" admin type="primary" preIcon="ant-design:export-outlined" @click="onExportXls" > 导出 < / a -button > -- >
< a -button type = "primary" preIcon = "ant-design:export-outlined" @click ="onExportXls" > 导出 < / a -button >
2023-07-28 23:45:21 +08:00
<!-- < j -upload -button type = "primary" 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 - 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 >
< / a - d r o p d o w n >
2023-10-27 22:35:08 +08:00
< a -button type = "primary" @click ="handleTkyqList" preIcon = "ant-design:plus-outlined" > 听课要求 < / a - b u t t o n >
2023-07-28 23:45:21 +08:00
< / template >
<!-- 操作栏 -- >
< template # action = "{ record }" >
< TableAction :actions ="getTableAction(record)" :dropDownActions ="getDropDownAction(record)" / >
< / template >
<!-- 字段回显插槽 -- >
<!-- < template # htmlSlot = "{text}" >
< div v-html ="text" > < / div >
< / template > -- >
<!-- 省市区字段回显插槽 -- >
<!-- < 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 >
< KcTksfrzbModal ref = "registerYqModal" @success ="handleSuccess" > < / KcTksfrzbModal >
2023-10-19 19:59:54 +08:00
< KcTkypListModal ref = "registerTkyplistModal" > < / KcTkypListModal >
2023-07-28 23:45:21 +08:00
< / div >
< / template >
< script lang = "ts" name = "config-kcExportConfigTpkwcqkjzglx" setup >
2023-08-28 23:34:36 +08:00
import { ref , reactive , computed , watch , nextTick } from 'vue' ;
2023-07-28 23:45:21 +08:00
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'
import KcTksfrzbModal from './components/KcTksfrzbModal.vue'
2023-10-19 19:59:54 +08:00
import KcTkypListModal from './tkypList/KcTkypListModal.vue'
2023-07-28 23:45:21 +08:00
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue' ;
import { defHttp } from '/@/utils/http/axios' ;
import { useMessage } from '/@/hooks/web/useMessage' ;
import { JInput } from '/@/components/Form' ;
2023-08-25 00:40:30 +08:00
import { getUserInfo , getUserId } from '/@/views/site/utils/index' ;
2023-08-28 23:34:36 +08:00
const xqDictTag = ref ( ) ;
watch ( ( ) => xqDictTag . value ? . dictOptions , ( d ) => {
if ( d ) {
queryParam . value . xqxn = d [ 0 ] ? . value
if ( queryParam . value . xqxn ) {
nextTick ( ( ) => {
reload ( ) ;
} )
}
}
} , {
deep : true ,
immediate : true ,
} ) ;
2023-08-25 00:40:30 +08:00
const roleList = computed ( ( ) => getUserInfo ( ) ? . roleList ? ? [ ] ) ;
2023-07-28 23:45:21 +08:00
const queryParam = ref < any > ( { } ) ;
const toggleSearchStatus = ref < boolean > ( false ) ;
const registerModal = ref ( ) ;
const registerYqModal = ref ( ) ;
2023-10-19 19:59:54 +08:00
const registerTkyplistModal = ref ( ) ;
2023-07-28 23:45:21 +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-08-28 23:34:36 +08:00
immediate : false ,
2023-07-28 23:45:21 +08:00
actionColumn : {
width : 120 ,
fixed : 'right' ,
} ,
beforeFetch : ( params ) => {
params . column = '' , params . order = '' ; //新生成的默认不带排序
2023-08-25 00:40:30 +08:00
params . findByDwmc = ! roleList . value . filter ( x => x . roleCode == 'admin' ) . length
params . findGh = getUserId ( )
2023-07-28 23:45:21 +08:00
return Object . assign ( params , queryParam . value ) ;
} ,
} ,
exportConfig : {
2023-07-30 11:53:33 +08:00
name : "人员信息" ,
2023-07-28 23:45:21 +08:00
url : getExportUrl ,
2023-08-25 00:40:30 +08:00
params : ( ) => {
let params : any = { } ;
params . findByDwmc = ! roleList . value . filter ( x => x . roleCode == 'admin' ) . length
params . findGh = getUserId ( )
return Object . assign ( params , queryParam . value ) ;
}
2023-07-28 23:45:21 +08:00
} ,
importConfig : {
url : getImportUrl ,
success : handleSuccess
} ,
} ) ;
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 ( ) ;
}
function handleAddYq ( ) {
registerYqModal . value . disableSubmit = false ;
registerYqModal . value . add ( ) ;
}
2023-10-19 19:59:54 +08:00
function handleTkyqList ( ) {
registerTkyplistModal . value . disableSubmit = false ;
registerTkyplistModal . value . add ( ) ;
}
2023-07-28 23:45:21 +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 ( ) {
2023-08-25 00:40:30 +08:00
// queryParam.value.findByDwmc = !!roleList.value.filter(x => x.roleCode == 'admin' ).length
// queryParam.value.findGh = getUserId()
2023-07-28 23:45:21 +08:00
reload ( ) ;
}
/ * *
* 重置
* /
function searchReset ( ) {
queryParam . value = { } ;
selectedRowKeys . value = [ ] ;
2023-08-25 00:40:30 +08:00
// queryParam.value.findByDwmc = !!roleList.value.filter(x => x.roleCode == 'admin' ).length
// queryParam.value.findGh = getUserId()
2023-07-28 23:45:21 +08:00
//刷新数据
reload ( ) ;
}
function onExport ( ) {
2023-07-30 11:53:33 +08:00
// if(!queryParam.value.dwmc) {
// createMessage.warn('请选择导出的单位');
// return ;
// }
2023-07-28 23:45:21 +08:00
onExportWord ( ) ;
}
async function onExportWord ( ) {
// let fileName = '教学听课情况表.pdf';
let fileName = '教学听课情况表.docx' ;
let paramsForm = queryParam . value ;
2023-08-25 00:40:30 +08:00
// paramsForm = { ...paramsForm, findByDwmc: !!roleList.value.filter(x => x.roleCode == 'admin' ).length, findGh: getUserId() }
2023-07-28 23:45:21 +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 } ) ;
if ( ! data ) {
createMessage . warning ( '文件下载失败' ) ;
return ;
}
// let blobOptions = { type: 'application/pdf' };
let blobOptions = { type : 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' } ;
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 >