dbsd_kczx/src/views/kc/statistics/evaluationList/index.vue

231 lines
6.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div style="width:100%;height: 100%;">
<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">
<a-col :lg="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-form-item>
</a-col>
<!--<template v-if="toggleSearchStatus">-->
<a-col :lg="8">
<a-form-item label="学院">
<j-dict-select-tag placeholder="请选择学院" v-model:value="queryParam.dwmc" dictCode="xxhbuser,DWMC,DWH,true group by DWH"/>
</a-form-item>
</a-col>
<a-col :lg="8">
<a-form-item label="数据来源">
<j-dict-select-tag
placeholder="请选择数据来源" v-model:value="queryParam.source"
:options="[{ value: 0, label: '课程中心'}, { value: 1, label: '老系统'},{ value: 2, label: '政务大厅'},{ value: 3, label: '纸质评价'}]"
/>
</a-form-item>
</a-col>
<!--</template>-->
<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-button>
<!--<a @click="toggleSearchStatus = !toggleSearchStatus" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
<Icon :icon="toggleSearchStatus ? 'ant-design:up-outlined' : 'ant-design:down-outlined'"/>
</a>-->
</a-col>
</span>
</a-col>
</a-row>
</a-form>
</div>
<a-table :loading="loading" :data-source="dataSource" :pagination="ipagination" @change="tableChange" bordered size="middle" class="ant-table-striped">
<a-table-column title="学期" data-index="xqxn"/>
<a-table-column title="学院" data-index="dwmc"/>
<a-table-column title="教工号" data-index="upuserid"/>
<a-table-column title="教师姓名" data-index="upuser"/>
<a-table-column title="职称" data-index="tksf"/>
<a-table-column title="课程名称" data-index="kcmc"/>
<a-table-column title="评价日期" data-index="upDate"/>
<!-- <a-table-column title="评价量表" data-index="sourceName"/> -->
<!-- 一般听课表线上听课表同行评价表
evaluationver -->
<a-table-column title="评价量表" align="center" data-index="evaluationver">
<template #default="{ text }">
<span v-if="text == '2'">线上课堂评价表</span>
<span v-else-if="text == '3'">听课记录表</span>
<span v-else-if="text == '4'">同行评价表</span>
</template>
</a-table-column>
<a-table-column title="数据来源" data-index="sourceName"/>
</a-table>
</div>
<a-modal :visible="isShowAllLive" width="80%" style="top: 20px" title="直播" :ok-button-props="{ style: { display: 'none' } }" cancelText="关闭" @cancel="() => (isShowAllLive = false,showAllLiveRef.close())">
<!-- <showAllLive ref="showAllLiveRef" :currentItem="currentItem"/> -->
</a-modal>
</template>
<script lang="ts" setup name="viewsKcStatisticsEvaluationListIndex">
import { defHttp } from '/@/utils/http/axios';
import { ref, onMounted, Ref, watch, reactive } from 'vue';
import { nextTick } from 'vue';
import { useMessage } from '/@/hooks/web/useMessage';
import { execAvyApi, getAvyCtrlLiveOpenOrCloseUrl } from "/@/views/site/utils/index";
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
const showAllLiveRef = ref();
const leftList:Ref<any> = ref([]);
const currentItem:Ref<any> = ref({});
const showAllLiveKey:Ref<string> = ref('showAllLiveKey');
const isShowAllLive:Ref<boolean> = ref(false);
const loading:Ref<boolean> = ref(false);
const dataSource = ref<any>([]);
const queryParam:Ref<any> = ref({});
const { createMessage } = useMessage();
onMounted(() => {
loadData();
});
enum Api {
list = '/statistics/getEvaluationList',
}
/**
* 列表接口
* @param params
*/
const list = (params) => defHttp.get({ url: Api.list, params });
const labelCol = reactive({
xs: { span: 24 },
sm: { span: 7 },
});
const wrapperCol = reactive({
xs: { span: 24 },
sm: { span: 16 },
});
const ipagination = ref(
{
current: 1,
pageSize: 10,
pageSizeOptions: ['10', '20', '30'],
showTotal: (total, range) => {
return range[0] + '-' + range[1] + ' 共' + total + '条';
},
showQuickJumper: true,
showSizeChanger: true,
total: 0,
}
);
const xqDictTag = ref();
watch(() => xqDictTag.value?.dictOptions,(d) => {
if(d){
queryParam.value.xqxn = d[0]?.value
nextTick(() => {
loadData();
})
}
},{
deep:true,
immediate:true,
});
function loadData(){
loading.value = true;
let params = { pageNo: 0, pageSize: 10 };
params.pageNo = ipagination.value.current;
params.pageSize = ipagination.value.pageSize;
list({ ...params, ...queryParam.value }).then(res => {
dataSource.value = (res?.records) ?? [];
ipagination.value.total = res.total;
}).finally(() => {
loading.value = false;
});
}
function tableChange(pagination) {
ipagination.value.current = pagination.current;
ipagination.value.pageSize = pagination.pageSize;
loadData();
}
/**
* 查询
*/
function searchQuery() {
loadData();
}
/**
* 重置
*/
function searchReset() {
queryParam.value = {};
//刷新数据
loadData();
}
</script>
<style lang="less" scoped>
.videoMax{
width: 25%;
}
.videoCardMain {
:deep(.ant-card-body) {
padding: 0;
}
}
/* 隐藏video 进度条 */
video::-webkit-media-controls-timeline {
display: none;
}
.green {
color: green;
}
.red {
color: red;
}
.jeecg-basic-table-form-container {
.ant-form {
padding: 12px 10px 6px 10px;
margin-bottom: 8px;
background-color: #fff;
border-radius: 2px;
}
.table-page-search-submitButtons {
display: block;
margin-bottom: 24px;
white-space: nowrap;
}
.query-group-cust{
width: calc(50% - 15px);
min-width: 100px !important;
}
.query-group-split-cust{
width: 30px;
display: inline-block;
text-align: center
}
}
.jeecg-basic-table-form-containera{
line-height: 24px;
background: #fff;
padding: 20px 0 0 10px;
margin-bottom: -20px;
}
.jeecg-basic-table .ant-table-wrapper .ant-table-title {
min-height: 0px !important;
padding: 0 0 8px 0 !important;
}
</style>