2023年7月24日 修改问题,新增页面

This commit is contained in:
bai 2023-07-24 00:27:28 +08:00
parent 731665e0a2
commit 9ef3a0b002
7 changed files with 417 additions and 8 deletions

View File

@ -50,6 +50,15 @@ const site: AppRouteModule = {
title: '评课足迹',
},
},
{
path: 'pjjgMore',
name: 'pjjgMore',
component: () => import('/@/views/site/pjjgPage/more.vue'),
meta: {
// affix: true,
title: '评价结果',
},
},
{
path: 'yuyuekechengMore',
name: 'yuyuekechengMore',

View File

@ -61,9 +61,9 @@
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)"/>
</template>
<!--字段回显插槽-->
<template #htmlSlot="{text}">
<!-- <template #htmlSlot="{text}">
<div v-html="text"></div>
</template>
</template> -->
<!--省市区字段回显插槽-->
<!--<template #pcaSlot="{text}">
{{ getAreaTextByCode(text) }}

View File

@ -30,6 +30,9 @@
<a-menu-item key="3" v-if="getSysConfig().flag2=='1'">
<a class="abox" @click="toDom('rkjcDom')">任教课程</a>
</a-menu-item>
<a-menu-item key="8">
<a class="abox" @click="toDom('pjjgDom')">评价结果</a>
</a-menu-item>
<a-menu-item key="4" v-if="getSysConfig().flag3=='1'">
<a class="abox" @click="toDom('yykcDom')">预约课程</a>
</a-menu-item>
@ -46,7 +49,7 @@
</a-col>
</a-row>
<!-- <div style="background-color: #fff;">
<div>&nbsp;</div>
<div class="topLinkTextEllipsis"><a class="abox" @click="toDom('tkzjDom')">听课足迹</a></div>
@ -59,7 +62,7 @@
</div>
<span class="topTitle" >
<RouterLink :to="{path:'/site/index'}" style="color:white;">{{ projectName }}
<RouterLink :to="{path:'/site/index'}" style="color:white;">{{ projectName }}
<span style="font-size: 16px;" v-if="getSysConfig().flag1">{{getSysConfig().flag1}}({{getSysConfig().bxqkssj}}{{getSysConfig().bxqjssj}})</span>
<span style="font-size: 16px;margin-left: 20px;" >本学期听课要求{{tkyqcs}}已完成{{tkyqywc}}</span>
</RouterLink>

View File

@ -16,6 +16,8 @@
<tingKeZuJiPage v-if="getUserSf()=='T'"/>
<!-- 任教教程 -->
<renKeJiaoChengPage v-if="getUserSf()=='T'&&getSysConfig().flag2=='1'" />
<!-- 评价结果 -->
<pjjgPage hiden/>
<!-- 预约课程 -->
<yuYueKeChengPage ref="yykcModeal" @orther-load="yykcLoad" v-if="getUserSf()=='T'&&getSysConfig().flag3=='1'"/>
<!-- 精彩公开课 -->
@ -78,8 +80,6 @@
import jingCaiGongKaiKePage from '/@/views/site/jingCaiGongKaiKe/index.vue'
import kxstkktPage from '/@/views/site/kxstkkt/index.vue'
import kclbZzsk from '/@/views/site/jrkclb/kclbZzsk.vue';
import kclbXyjk from '/@/views/site/jrkclb/kclbXyjk.vue';
import kclbRkb from '/@/views/site/jrkclb/kclbRkb.vue';
@ -88,8 +88,31 @@
import StudentJrkbPage from '/@/views/site/studentJrkb/index.vue';
import StudentJlrkbPage from '/@/views/site/studentJlrkb/index.vue';
import pjjgPage from '/@/views/site/pjjgPage/index.vue';
import { getUserSf,getSysConfig } from '/@/views/site/utils/index';
import { defHttp } from '/@/utils/http/axios';
import { defHttp } from '/@/utils/http/axios';
// const headerPage = () => import('/@/views/site/common/header.vue');
// const footerPage = () => import('/@/views/site/common/footer.vue');
// const tongjiPage = () => import('/@/views/site/tongJi/index.vue');
// const lunboPage = () => import('/@/views/site/lunBo/index.vue');
// const tongZhiGongGaoPage = () => import('/@/views/site/tongZhiGongGao/index.vue');
// const renKeJiaoChengPage = () => import('/@/views/site/renKeJiaoCheng/index.vue');
// const tingKeZuJiPage = () => import('/@/views/site/tingKeZuJi/index.vue');
// const yuYueKeChengPage = () => import('/@/views/site/yuYueKeCheng/index.vue');
// const jingCaiGongKaiKePage = () => import('/@/views/site/jingCaiGongKaiKe/index.vue');
// const kxstkktPage = () => import('/@/views/site/kxstkkt/index.vue');
// const kclbZzsk = () => import('/@/views/site/jrkclb/kclbZzsk.vue');
// const kclbXyjk = () => import('/@/views/site/jrkclb/kclbXyjk.vue');
// const kclbRkb = () => import('/@/views/site/jrkclb/kclbRkb.vue');
// const StudentJrkbPage = () => import('/@/views/site/studentJrkb/index.vue');
// const StudentJlrkbPage = () => import('/@/views/site/studentJlrkb/index.vue');
const activeKey = ref('1');
const zzskModeal = ref();
@ -117,7 +140,7 @@ import { defHttp } from '/@/utils/http/axios';
// }
// })()
// };
//
onMounted(() => {
// var width = window.screen.width * window.devicePixelRatio;

View File

@ -0,0 +1,50 @@
<template>
<a-row class="rowGutter" id="pjjgDom">
<a-col :xs="{ span: 24 }" :sm="{ span: 24 }" :lg="{ span: 24 }" style="padding: 0 2px 0 0;">
<a-card style="min-height: 222px;">
<template #title>
<span style="font-size: 24px;font-weight: bold;">评课结果</span>
</template>
<template #extra>
<!-- <RouterLink target='_blank' to="/site/tingKeZuJiMore">查看更多</RouterLink> -->
<a style="padding-right: 0.5rem;" @click="reloadTkzj()">刷新</a>
<RouterLink to="/site/pjjgMore">查看更多</RouterLink>
</template>
<list :queryParam="{ pageSize: 4, ...tkzjParam }" style="max-height: 106px;"/>
</a-card>
</a-col>
</a-row>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import list from '/@/views/site/pjjgPage/list.vue';
import { nextTick } from 'vue';
const tkzjParam = ref({});
const pkzjParam = ref({});
function reloadTkzj(){
console.log('1');
tkzjParam.value = { isReload: true };
// nextTick(() => {
// tkzjParam.value = { isReload: false };
// });
}
function reloadPkzj(){
pkzjParam.value = { isReload: true };
// nextTick(() => {
// pkzjParam.value = { isReload: false };
// });
}
</script>
<style lang="less" scoped>
.wenZiJuZhong {
text-align: center;
}
.wenZiJiaCu {
font-weight: 700;
}
</style>

View File

@ -0,0 +1,189 @@
<template>
<a-list item-layout="horizontal" :data-source="list" :grid="{ gutter: 16, xs: 2, sm: 4, md: 4, lg: 4, xl: 4, xxl: 4, xxxl: 4 }">
<!-- <a-list item-layout="horizontal" :data-source="list" :loading="loadingList" :grid="{ column: }"> -->
<template #renderItem="{ item }">
<a-list-item>
<a-card>
<div class="wenZiJiaCu fs1d1r">
<div>课程名称{{ item.kcmc }}</div>
<div>授课教师{{ item.skjs }}</div>
<div>开课单位{{ item.kkdw }}</div>
<div>授课地点{{ item.skdd }}</div>
<div>教师评价{{ item.jspjPjf }}</div>
<div>学生评价{{ item.xspjPjf }}</div>
<div style="text-align: center;margin: 0.5rem 0;">
<a-row>
<a-col :xs="{ span: 24 }" :sm="{ span: 12 }" :lg="{ span: 12 }">
<a-button type="primary" style="margin: 0.5rem 0;" @click="openJspjPage(item)">教师评价</a-button>
</a-col>
<a-col :xs="{ span: 24 }" :sm="{ span: 12 }" :lg="{ span: 12 }">
<a-button type="primary" style="margin: 0.5rem 0;" @click="openXspjPage(item)">学生评评价</a-button>
</a-col>
</a-row>
</div>
</div>
</a-card>
<!-- <a-list-item-meta>
<template #title>
<div class="wenZiJiaCu fs1d1r">
<div>课程名称{{ item.kcmc }}</div>
<div>授课教师{{ item.skjs }}</div>
<div>开课单位{{ item.kkdw }}</div>
<div>授课地点{{ item.skdd }}</div>
<div>教师评价{{ item.jspjPjf }}</div>
<div>学生评价{{ item.xspjPjf }}</div>
<div style="text-align: center;">
<a-button type="primary" style="margin-right: 1rem;" @click="openJspjPage(item)">教师评价</a-button>
<a-button type="primary" style="margin-right: 1rem;" @click="openXspjPage(item)">学生评评价</a-button>
</div>
</div>
</template>
<template #description> -->
<!-- -{{ item }}- -->
<!-- <div class="wenZiJiaCu">
<span v-if="item.score" class="hand" style="color: #337ab7;" @click="viewModal.view(item)">已评分{{ item.score }}</span>
<span v-if="item.source != null" class="hand" style="padding-left: .5rem;color: #337ab7;"></span>
<span v-if="item.source=='0'" class="hand" style="padding-left: .5rem;color: #337ab7;">课程中心</span>
<span v-else-if="item.source=='1'" class="hand" style="padding-left: .5rem;color: #337ab7;">老系统</span>
<span v-else-if="item.source=='2'" class="hand" style="padding-left: .5rem;color: #337ab7;">政务大厅</span>
<span v-else-if="item.source=='3'" class="hand" style="padding-left: .5rem;color: #337ab7;">纸质评价</span>
<span v-if="item.source != null" class="hand" style="padding-left: .5rem;color: #337ab7;">--</span>
<span v-if="item.evaluationver=='1'" class="hand" style="padding-left: .5rem;color: #337ab7;">原始数据</span>
<span v-else-if="item.evaluationver=='2'" class="hand" style="padding-left: .5rem;color: #337ab7;">线上听课</span>
<span v-else-if="item.evaluationver=='3'" class="hand" style="padding-left: .5rem;color: #337ab7;">听课记录</span>
<span v-else-if="item.evaluationver=='4'" class="hand" style="padding-left: .5rem;color: #337ab7;">同行专家</span>
<span v-if="item.source != null" class="hand" style="padding-left: .5rem;color: #337ab7;"></span>
</div> -->
<!-- </template> -->
<!-- <template #avatar>
<div class="wenZiJuZhong dateAndTime">
<i class="fas fa-users" />
<div>{{ item.shijian }}</div>
<div style="color: #1ab394;">{{ item.tkrq }}</div>
</div>
</template> -->
<!-- </a-list-item-meta> -->
</a-list-item>
</template>
</a-list>
<a-pagination v-model="current" :total="total" show-less-items @change="handlePageChange" v-if="props.flagPage" style="text-align: right;" :hideOnSinglePage="true"/>
<addModalPage ref="tingKeZuJiAddModal"/>
<viewModalPage ref="viewModal"/>
<fwdtModalPage ref="fwdtModal"/>
</template>
<script setup lang="ts">
import { ref, onMounted, watch } from 'vue';
import { TeamOutlined, FormOutlined } from '@ant-design/icons-vue';
import { Pagination } from 'ant-design-vue';
import { getUserId, getSysConfig } from '/@/views/site/utils/index';
import addModalPage from '/@/views/site/tingKeZuJi/components/addModal.vue';
import viewModalPage from '/@/views/site/tingKeZuJi/components/viewModal.vue';
import fwdtModalPage from '/@/views/site/tingKeZuJi/components/fwdtModal.vue';
import { defHttp } from '/@/utils/http/axios';
import { tuple } from 'ant-design-vue/lib/_util/type';
enum Api {
// list = '/kcTingke/kcTingke/findTingKeZuJiBytingketimeAndUserId'
// list = '/qa/kcEvaluation/queryPkZuJiList'
list = '/ktgl/kcKetangbiao/list'
}
const tingKeZuJiAddModal = ref();
const viewModal = ref();
const fwdtModal = ref();
const current = ref<number>(0);
const total = ref<number>(2);
const loadingList = ref<boolean>(false);
const APagination = Pagination;
const emit = defineEmits(['changeParam']);
const props = defineProps({
queryParam: { type: Object, default: () => ({}) },
flagPage: { type:Boolean,default:false}
});
/**
* 列表接口
* @param params
*/
const listApi = (params) => defHttp.get({ url: Api.list, params });
const list = ref<any>([]);
onMounted(() => {
init();
});
watch(
() => props.queryParam,
(v) => init(),
{
deep:true,
immediate:true,
}
);
function init() {
console.log('init');
loadingList.value = true
listApi({ jgh: getUserId(), searchByNowXqxn: true, ...props.queryParam }).then(res => {
list.value = res?.records ?? [];
total.value = res.total;
current.value = res.current;
list.value = res.records
loadingList.value = false
});
}
function handlePageChange(record){
emit('changeParam',record);
// loadData();
}
function onSearch() {
init();
}
//
function openJspjPage(item) {
}
//
function openXspjPage(item) {
}
defineExpose({
onSearch
});
</script>
<style lang="less" scoped>
.wenZiJuZhong {
text-align: center;
}
.wenZiJiaCu {
font-weight: 700;
}
.fs1d1r {
font-size: 16px;
min-height: 55.281px;
}
.hand {
cursor:pointer;
}
.dateAndTime {
padding-top: 10px;
}
</style>

View File

@ -0,0 +1,135 @@
<template>
<div id="siteMain">
<div id="maxSite">
<a-layout>
<!-- 页头 -->
<headerPage/>
<!-- 主体部分 -->
<a-layout-content>
<a-card style="min-height: calc(100vh - 68px * 2);">
<div style="font-size: 24px;font-weight: bold;height: 70px;">评课足迹
<span>{{getSysConfig().flag1}} {{dateFormat(getSysConfig().bxqkssj, 'MM月dd日')}} {{dateFormat(getSysConfig().bxqjssj, 'MM月dd日')}}</span>
</div>
<a-row :gutter="[16,16]">
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
<a-date-picker placeholder="请选择开始日期" format="YYYY-MM-DD" valueFormat="YYYY-MM-DD" v-model:value="queryParam.startDate" style="width: 100%" />
</a-col>
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
<a-date-picker placeholder="请选择结束日期" format="YYYY-MM-DD" valueFormat="YYYY-MM-DD" v-model:value="queryParam.endDate" style="width: 100%" />
</a-col>
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }" class="dictBox">
<j-dict-select-tag v-model:value="queryParam.kkdw" dictCode="kc_kkdw_view,kkdw,kkdw" placeholder="请选择院系" style="width: 100%;"/>
</a-col>
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }" class="dictBox">
<j-dict-select-tag v-model:value="queryParam.hh" :dictCode="`kc_jieci_view,jieciname,jieci`" placeholder="请选择节次" style="width: 100%;"/>
</a-col>
<!-- <a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
<a-select style="width: 100%;" v-model:value="queryParam.pj">
<a-select-option value="">全部</a-select-option>
<a-select-option value="0">未评价</a-select-option>
<a-select-option value="1">已评价</a-select-option>
</a-select>
</a-col> -->
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
<!-- <a-input placeholder="输入课程名或教师名……" v-model:value="queryParam.searchInput" style="width: 100%" /> -->
<a-input-search v-model:value="queryParam.searchInput" placeholder="输入课程名或教师名……" enter-button @search="onSearch"/>
</a-col>
</a-row>
<a-divider class="divider"/>
<a-row>
<a-col :span="24" >
<list ref="listRef" :queryParam="queryParam" flagPage @change-param="changeParam"/>
</a-col>
</a-row>
</a-card>
</a-layout-content>
<!-- 页尾 -->
<footerPage/>
</a-layout>
</div>
</div>
</template>
<script lang="ts" setup>
import { ref, reactive, watch, onMounted } from 'vue';
import headerPage from '/@/views/site/common/header.vue';
import footerPage from '/@/views/site/common/footer.vue';
import list from '/@/views/site/pjjgPage/list.vue';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import { getSysConfig } from '/@/views/site/utils/index';
import { dateFormat } from '/@/utils/common/compUtils';
const queryParam = ref<any>({ startDate: getSysConfig().bxqkssj, endDate: '', pageSize: 12 });
//
onMounted(() => {
const format = 'yyyy-MM-dd';
queryParam.value.endDate = dateFormat(new Date(), format)
onSearch()
});
const listRef = ref();
function onSearch(){
listRef.value.onSearch();
}
function changeParam(pageNo){
queryParam.value.pageNo = pageNo;
onSearch();
}
</script>
<style lang="less" scoped>
#siteMain {
// font-size: ;
// height: 100%;
background: #f3f3f4;
#maxSite {
//
max-width: 1170px;
//
margin: 0 auto;
.rowGutter{
margin-top: 1rem;
margin-bottom: 1rem;
}
.ant-layout-header {
color: #fff;
background: #1ab394;
}
.ant-layout-footer {
line-height: 1.5;
background: #FFF;
}
.ant-layout-sider {
color: #fff;
line-height: 120px;
background: #3ba0e9;
}
.ant-layout-content {
min-height: 120px;
color: #000;
line-height: 120px;
background: #f3f3f4;
}
.dictBox :deep(.ant-select) {
width: 100%;
}
}
}
/**暗黑模式特殊配色*/
[data-theme='dark'] #siteMain #maxSite {
.ant-layout-header, .ant-layout-footer {
background: #6aa0c7;
}
.ant-layout-content {
background: #107bcb;
}
.ant-layout-sider {
background: #3499ec;
}
}
</style>