Merge branch 'master' of https://gitee.com/mini-org-project/course_information_center_vue
2
.env
|
@ -2,7 +2,7 @@
|
||||||
VITE_PORT = 3100
|
VITE_PORT = 3100
|
||||||
|
|
||||||
# 网站标题 //课程信息中心
|
# 网站标题 //课程信息中心
|
||||||
VITE_GLOB_APP_TITLE = 管理系统
|
VITE_GLOB_APP_TITLE = 东师课程信息中心
|
||||||
|
|
||||||
# 简称,用于配置文件名字 不要出现空格、数字开头等特殊字符
|
# 简称,用于配置文件名字 不要出现空格、数字开头等特殊字符
|
||||||
VITE_GLOB_APP_SHORT_NAME = CourseInformationCenter
|
VITE_GLOB_APP_SHORT_NAME = CourseInformationCenter
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { generate } from '@ant-design/colors';
|
import { generate } from '@ant-design/colors';
|
||||||
|
|
||||||
export const primaryColor = '#1890FF';
|
// export const primaryColor = '#1890FF';
|
||||||
|
export const primaryColor = '#18a689';
|
||||||
|
|
||||||
export const darkMode = 'light';
|
export const darkMode = 'light';
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,8 @@
|
||||||
|
|
||||||
<title><%= title %></title>
|
<title><%= title %></title>
|
||||||
<link rel="icon" href="/logo.png" />
|
<link rel="icon" href="/logo.png" />
|
||||||
<link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.css">
|
<!-- <link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.css"> -->
|
||||||
|
<!-- <link rel="stylesheet" href="/resource/css/fontawesome.min.css"> -->
|
||||||
<!-- 全局配置 -->
|
<!-- 全局配置 -->
|
||||||
<script>
|
<script>
|
||||||
window._CONFIG = {};
|
window._CONFIG = {};
|
||||||
|
@ -158,7 +159,7 @@
|
||||||
</style>
|
</style>
|
||||||
<div class="app-loading">
|
<div class="app-loading">
|
||||||
<div class="app-loading-wrap">
|
<div class="app-loading-wrap">
|
||||||
<img src="/resource/img/logo.png" class="app-loading-logo" alt="Logo" />
|
<!-- <img src="/resource/img/logo.png" class="app-loading-logo" alt="Logo" /> -->
|
||||||
<div class="app-loading-dots">
|
<div class="app-loading-dots">
|
||||||
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
|
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
19
package.json
|
@ -34,16 +34,17 @@
|
||||||
"gen:icon": "esno ./build/generate/icon/index.ts"
|
"gen:icon": "esno ./build/generate/icon/index.ts"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jeecg/online": "3.4.4-RC",
|
|
||||||
"@iconify/iconify": "^2.2.1",
|
|
||||||
"@ant-design/colors": "^6.0.0",
|
"@ant-design/colors": "^6.0.0",
|
||||||
"@ant-design/icons-vue": "^6.1.0",
|
"@ant-design/icons-vue": "^6.1.0",
|
||||||
|
"@fortawesome/fontawesome-free": "^6.4.0",
|
||||||
|
"@iconify/iconify": "^2.2.1",
|
||||||
|
"@jeecg/online": "3.4.4-RC",
|
||||||
"@logicflow/core": "^1.1.13",
|
"@logicflow/core": "^1.1.13",
|
||||||
"@logicflow/extension": "^1.1.13",
|
"@logicflow/extension": "^1.1.13",
|
||||||
"@vue/shared": "^3.2.33",
|
|
||||||
"@vue/runtime-core": "^3.2.33",
|
"@vue/runtime-core": "^3.2.33",
|
||||||
"@vueuse/shared": "^8.3.0",
|
"@vue/shared": "^3.2.33",
|
||||||
"@vueuse/core": "^8.3.0",
|
"@vueuse/core": "^8.3.0",
|
||||||
|
"@vueuse/shared": "^8.3.0",
|
||||||
"@zxcvbn-ts/core": "^2.0.1",
|
"@zxcvbn-ts/core": "^2.0.1",
|
||||||
"ant-design-vue": "^3.2.12",
|
"ant-design-vue": "^3.2.12",
|
||||||
"axios": "^0.26.1",
|
"axios": "^0.26.1",
|
||||||
|
@ -66,11 +67,11 @@
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
"path-to-regexp": "^6.2.0",
|
"path-to-regexp": "^6.2.0",
|
||||||
"pinia": "2.0.12",
|
"pinia": "2.0.12",
|
||||||
"print-js": "^1.6.0",
|
|
||||||
"pinyin-pro": "^3.11.0",
|
"pinyin-pro": "^3.11.0",
|
||||||
"qs": "^6.10.3",
|
"print-js": "^1.6.0",
|
||||||
"qrcode": "^1.5.0",
|
"qrcode": "^1.5.0",
|
||||||
"qrcodejs2": "0.0.2",
|
"qrcodejs2": "0.0.2",
|
||||||
|
"qs": "^6.10.3",
|
||||||
"resize-observer-polyfill": "^1.5.1",
|
"resize-observer-polyfill": "^1.5.1",
|
||||||
"showdown": "^2.1.0",
|
"showdown": "^2.1.0",
|
||||||
"sortablejs": "^1.15.0",
|
"sortablejs": "^1.15.0",
|
||||||
|
@ -81,6 +82,7 @@
|
||||||
"vue-cropperjs": "^5.0.0",
|
"vue-cropperjs": "^5.0.0",
|
||||||
"vue-i18n": "^9.1.9",
|
"vue-i18n": "^9.1.9",
|
||||||
"vue-infinite-scroll": "^2.0.2",
|
"vue-infinite-scroll": "^2.0.2",
|
||||||
|
"vue-json-pretty": "^2.0.6",
|
||||||
"vue-print-nb-jeecg": "^1.0.10",
|
"vue-print-nb-jeecg": "^1.0.10",
|
||||||
"vue-router": "^4.0.14",
|
"vue-router": "^4.0.14",
|
||||||
"vue-types": "^4.1.1",
|
"vue-types": "^4.1.1",
|
||||||
|
@ -88,7 +90,6 @@
|
||||||
"vxe-table": "4.1.0",
|
"vxe-table": "4.1.0",
|
||||||
"vxe-table-plugin-antd": "3.0.5",
|
"vxe-table-plugin-antd": "3.0.5",
|
||||||
"xe-utils": "^3.3.1",
|
"xe-utils": "^3.3.1",
|
||||||
"vue-json-pretty": "^2.0.6",
|
|
||||||
"xss": "^1.0.13"
|
"xss": "^1.0.13"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -96,6 +97,7 @@
|
||||||
"@commitlint/config-conventional": "^16.2.1",
|
"@commitlint/config-conventional": "^16.2.1",
|
||||||
"@iconify/json": "^2.1.30",
|
"@iconify/json": "^2.1.30",
|
||||||
"@purge-icons/generated": "^0.8.1",
|
"@purge-icons/generated": "^0.8.1",
|
||||||
|
"@rys-fe/vite-plugin-theme": "^0.8.6",
|
||||||
"@types/codemirror": "^5.60.5",
|
"@types/codemirror": "^5.60.5",
|
||||||
"@types/crypto-js": "^4.1.1",
|
"@types/crypto-js": "^4.1.1",
|
||||||
"@types/fs-extra": "^9.0.13",
|
"@types/fs-extra": "^9.0.13",
|
||||||
|
@ -106,9 +108,9 @@
|
||||||
"@types/mockjs": "^1.0.6",
|
"@types/mockjs": "^1.0.6",
|
||||||
"@types/node": "^17.0.25",
|
"@types/node": "^17.0.25",
|
||||||
"@types/nprogress": "^0.2.0",
|
"@types/nprogress": "^0.2.0",
|
||||||
|
"@types/pinyin": "^2.10.0",
|
||||||
"@types/qrcode": "^1.4.2",
|
"@types/qrcode": "^1.4.2",
|
||||||
"@types/qs": "^6.9.7",
|
"@types/qs": "^6.9.7",
|
||||||
"@types/pinyin": "^2.10.0",
|
|
||||||
"@types/showdown": "^1.9.4",
|
"@types/showdown": "^1.9.4",
|
||||||
"@types/sortablejs": "^1.10.7",
|
"@types/sortablejs": "^1.10.7",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.20.0",
|
"@typescript-eslint/eslint-plugin": "^5.20.0",
|
||||||
|
@ -171,7 +173,6 @@
|
||||||
"vite-plugin-pwa": "^0.12.3",
|
"vite-plugin-pwa": "^0.12.3",
|
||||||
"vite-plugin-style-import": "^2.0.0",
|
"vite-plugin-style-import": "^2.0.0",
|
||||||
"vite-plugin-svg-icons": "^2.0.1",
|
"vite-plugin-svg-icons": "^2.0.1",
|
||||||
"@rys-fe/vite-plugin-theme": "^0.8.6",
|
|
||||||
"vite-plugin-vue-setup-extend": "^0.4.0",
|
"vite-plugin-vue-setup-extend": "^0.4.0",
|
||||||
"vite-plugin-windicss": "^1.8.7",
|
"vite-plugin-windicss": "^1.8.7",
|
||||||
"vue-eslint-parser": "^8.3.0",
|
"vue-eslint-parser": "^8.3.0",
|
||||||
|
|
After Width: | Height: | Size: 7.3 KiB |
BIN
public/logo.png
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 7.3 KiB |
After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
@ -21,6 +21,10 @@ import { useSso } from '/@/hooks/web/useSso';
|
||||||
// 注册online模块lib
|
// 注册online模块lib
|
||||||
import { registerPackages } from '/@/utils/monorepo/registerPackages';
|
import { registerPackages } from '/@/utils/monorepo/registerPackages';
|
||||||
|
|
||||||
|
// 增加fortawesome图标
|
||||||
|
import '@fortawesome/fontawesome-free/css/all.css'
|
||||||
|
import '@fortawesome/fontawesome-free/js/all'
|
||||||
|
|
||||||
// 在本地开发中引入的,以提高浏览器响应速度
|
// 在本地开发中引入的,以提高浏览器响应速度
|
||||||
if (import.meta.env.DEV) {
|
if (import.meta.env.DEV) {
|
||||||
import('ant-design-vue/dist/antd.less');
|
import('ant-design-vue/dist/antd.less');
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<a-layout-footer>
|
<a-layout-footer>
|
||||||
<span class="footerLeft">TEL:0431-85099971</span>
|
<span class="footerLeft">TEL:0431-85099971</span>
|
||||||
<span class="footerRight">Copyright 东北师范大学教务处 2023</span>
|
<span class="footerRight">Copyright 东北师范大学教务处 2022</span>
|
||||||
</a-layout-footer>
|
</a-layout-footer>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
|
@ -9,7 +9,9 @@
|
||||||
意见反馈
|
意见反馈
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span class="topTitle">管理系统</span>
|
<span class="topTitle">
|
||||||
|
{{ projectName }}
|
||||||
|
</span>
|
||||||
<span class="topRight">
|
<span class="topRight">
|
||||||
<a-dropdown>
|
<a-dropdown>
|
||||||
<span class="ant-dropdown-link topRightMenu" @click.prevent>
|
<span class="ant-dropdown-link topRightMenu" @click.prevent>
|
||||||
|
@ -33,11 +35,13 @@
|
||||||
</a-layout-header>
|
</a-layout-header>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { DownOutlined, ArrowUpOutlined } from '@ant-design/icons-vue';
|
import { DownOutlined, ArrowUpOutlined } from '@ant-design/icons-vue';
|
||||||
import { useUserStore } from '/@/store/modules/user';
|
import { useUserStore } from '/@/store/modules/user';
|
||||||
import YjfkModal from '/@/views/site/yjfk/YjfkModal.vue';
|
import YjfkModal from '/@/views/site/yjfk/YjfkModal.vue';
|
||||||
|
|
||||||
|
const projectName = import.meta.env.VITE_GLOB_APP_TITLE;
|
||||||
|
|
||||||
const YjfkModalTab = ref();
|
const YjfkModalTab = ref();
|
||||||
//用户相关
|
//用户相关
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
|
|
|
@ -187,7 +187,6 @@
|
||||||
background: #f3f3f4;
|
background: #f3f3f4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
/**暗黑模式特殊配色*/
|
/**暗黑模式特殊配色*/
|
||||||
[data-theme='dark'] #siteMain #maxSite {
|
[data-theme='dark'] #siteMain #maxSite {
|
||||||
|
@ -202,3 +201,11 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
<style>
|
||||||
|
.wenZiJiaCu {
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #337ab7;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -22,7 +22,8 @@
|
||||||
<div class="ggkTwoTitle ggkCcxs" :title="item.zc +`·`+item.xy">{{item.zc}} {{item.xy}}</div>
|
<div class="ggkTwoTitle ggkCcxs" :title="item.zc +`·`+item.xy">{{item.zc}} {{item.xy}}</div>
|
||||||
<div class="ggkThreeTitle ggkCcxs">{{item.ktzt}}</div>
|
<div class="ggkThreeTitle ggkCcxs">{{item.ktzt}}</div>
|
||||||
<div class="ggkFourTitle">0人听课</div>
|
<div class="ggkFourTitle">0人听课</div>
|
||||||
<div><a-button type="primary" class="ggkButton" target="_blank" :href="item.kclj" >进入课堂</a-button></div>
|
<!-- -{{ item.kclj }}--{{ item.jslj }} -->
|
||||||
|
<div><a-button type="primary" class="ggkButton" target="_blank" :href="item.kclj" @click.stop>进入课堂</a-button></div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -43,8 +43,8 @@
|
||||||
const emit = defineEmits(['register', 'ok']);
|
const emit = defineEmits(['register', 'ok']);
|
||||||
const formData = reactive<Record<string, any>>({
|
const formData = reactive<Record<string, any>>({
|
||||||
userid: '',
|
userid: '',
|
||||||
kqtx: '',
|
kqtx: '1',
|
||||||
mrkctx: '',
|
mrkctx: '1',
|
||||||
});
|
});
|
||||||
|
|
||||||
const { createMessage } = useMessage();
|
const { createMessage } = useMessage();
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
<template>
|
<template>
|
||||||
<a-card>
|
<a-card class="wenZiJiaCu" style="font-size: 1.1rem;">
|
||||||
您可根据实际情况选择下面三个评价表中的一个或者两个给予评价:
|
您可根据实际情况选择下面三个评价表中的一个或者两个给予评价:
|
||||||
<div class="p15">
|
<div class="p15">
|
||||||
<a-row>
|
<a-row>
|
||||||
<a-col :span="8">
|
<a-col :span="8">
|
||||||
<a-button type="primary"><RouterLink target='_blank' :to="{path:'/site/qaAddPage',query:{ type: 4, ktId }}">线上课题评价表</RouterLink></a-button>
|
<a-button type="primary" class="wenZiJiaCu"><RouterLink target='_blank' :to="{path:'/site/qaAddPage',query:{ type: 2, ktId }}">线上课堂评价表</RouterLink></a-button>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="8">
|
<a-col :span="8">
|
||||||
<a-button type="primary"><RouterLink target='_blank' :to="{path:'/site/qaAddPage',query:{ type: 3, ktId }}">听课记录表</RouterLink></a-button>
|
<a-button type="primary" class="wenZiJiaCu"><RouterLink target='_blank' :to="{path:'/site/qaAddPage',query:{ type: 3, ktId }}">听课记录表</RouterLink></a-button>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="8">
|
<a-col :span="8">
|
||||||
<a-button type="primary"><RouterLink target='_blank' :to="{path:'/site/qaAddPage',query:{ type: 2, ktId }}">同行评价表</RouterLink></a-button>
|
<a-button type="primary" class="wenZiJiaCu"><RouterLink target='_blank' :to="{path:'/site/qaAddPage',query:{ type: 4, ktId }}">同行评价表</RouterLink></a-button>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
</div>
|
</div>
|
||||||
|
@ -18,13 +18,13 @@
|
||||||
说明:
|
说明:
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
1.线上课堂评价表:是根据线上课堂的特点研制的,如果您听的是线上课堂,请您填写该评价表;如果您同时是该课程所属学科的专家/教师,也欢迎您同时填写《同行评价表》。
|
1.线上课堂评价表:是根据线上课堂的特点研制的,如果您听的是线上课堂,请您填写该评价表;如果您同时是该课程所属学科的专家/教师,也欢迎您同时填写《同行评价表》。
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
2.听课记录表:是方便行政人员和非该课程所属学科的教师听课使用的评价表,主要用来反映课堂教学的整体情况。
|
2.听课记录表:是方便行政人员和非该课程所属学科的教师听课使用的评价表,主要用来反映课堂教学的整体情况。
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
3.同行评价表:是专门为该课程方面的专家/教师听课研制的评价表,更能反映该课堂的教学质量。
|
3.同行评价表:是专门为该课程方面的专家/教师听课研制的评价表,更能反映该课堂的教学质量。
|
||||||
</p>
|
</p>
|
||||||
</a-card>
|
</a-card>
|
||||||
</template>
|
</template>
|
||||||
|
@ -39,6 +39,11 @@
|
||||||
*/
|
*/
|
||||||
function view( ...data ) {
|
function view( ...data ) {
|
||||||
let record = data[0]??{};
|
let record = data[0]??{};
|
||||||
|
|
||||||
|
console.log(`🚀 --------------------------------------------------🚀`);
|
||||||
|
console.log(`🚀 ~ file: addForm.vue:43 ~ view ~ record:`, record);
|
||||||
|
console.log(`🚀 --------------------------------------------------🚀`);
|
||||||
|
|
||||||
ktId.value = record.ketangbiaoid
|
ktId.value = record.ketangbiaoid
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="renKeJiaoChengBase">
|
<div class="renKeJiaoChengBase">
|
||||||
<a-modal :width="width" :visible="visible" @ok="handleOk" :okButtonProps="{ class: { 'jee-hidden': disableSubmit } }" @cancel="handleCancel" :getContainer="getPDom" cancelText="关闭">
|
<a-modal :width="width" :visible="visible" @ok="handleOk" :okButtonProps="{ class: { 'jee-hidden': disableSubmit } }" @cancel="handleCancel" :getContainer="getPDom" cancelText="关闭">
|
||||||
<template #title>
|
<template #title>
|
||||||
<div style="text-align: center;">请选择评价表</div>
|
<div style="text-align: center;font-size: 1.5rem;">请选择评价表</div>
|
||||||
</template>
|
</template>
|
||||||
<KcKetangbiaoForm ref="registerForm" @ok="submitCallback" :formDisabled="disableSubmit" :formBpm="false"/>
|
<KcKetangbiaoForm ref="registerForm" @ok="submitCallback" :formDisabled="disableSubmit" :formBpm="false"/>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
|
|
|
@ -71,7 +71,7 @@ const route = useRoute();
|
||||||
function view(record){
|
function view(record){
|
||||||
console.log(route.query);
|
console.log(route.query);
|
||||||
|
|
||||||
let params = { pageSize: -1, status: 0 }
|
let params = { pageSize: -1, status: 0, column: 'ordernum', order: 'asc' }
|
||||||
//回答记录
|
//回答记录
|
||||||
let queryData = defHttp.get({ url: Api.queryResData, params: { userid: record.userid, minkcid: record.ketangbiaoid, evaluationver: record.evaluationver} });
|
let queryData = defHttp.get({ url: Api.queryResData, params: { userid: record.userid, minkcid: record.ketangbiaoid, evaluationver: record.evaluationver} });
|
||||||
//题目
|
//题目
|
||||||
|
|
|
@ -5,18 +5,21 @@
|
||||||
<a-list-item>
|
<a-list-item>
|
||||||
<a-list-item-meta>
|
<a-list-item-meta>
|
||||||
<template #title>
|
<template #title>
|
||||||
<div class="wenZiJiaCu">
|
<div class="wenZiJiaCu fs1d1r">
|
||||||
听了 {{ item.kkdw }} {{item.skjs}} {{ item.kcmc }}
|
听了 {{ item.kkdw }} {{item.skjs}} 主讲的 《{{ item.kcmc }}》
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #description>
|
<template #description>
|
||||||
<!-- -{{ item }}- -->
|
<!-- -{{ item }}- -->
|
||||||
<span v-if="item.score" style="color: #337ab7;" @click="viewModal.view(item)">已评分:{{ item.score }}分</span>
|
<div class="wenZiJiaCu">
|
||||||
<span v-else style="color: #337ab7;" @click="tingKeZuJiAddModal.view(item)"><FormOutlined/>填写评价</span>
|
<span v-if="item.score" style="color: #337ab7;" @click="viewModal.view(item)">已评分:{{ item.score }}分</span>
|
||||||
|
<span v-else style="color: #337ab7;" @click="tingKeZuJiAddModal.view(item)"><FormOutlined/>填写评价</span>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #avatar>
|
<template #avatar>
|
||||||
<div class="wenZiJuZhong">
|
<div class="wenZiJuZhong">
|
||||||
<TeamOutlined/>
|
<!-- <TeamOutlined/> -->
|
||||||
|
<i class="fas fa-users" />
|
||||||
<div>{{ item.shijian }}</div>
|
<div>{{ item.shijian }}</div>
|
||||||
<div style="color: #1ab394;">{{ item.tkrq }}</div>
|
<div style="color: #1ab394;">{{ item.tkrq }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -83,5 +86,9 @@ defineExpose({
|
||||||
.wenZiJiaCu {
|
.wenZiJiaCu {
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
|
.fs1d1r {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
</style>
|
</style>
|
|
@ -96,7 +96,7 @@ import { getUserId } from '/@/views/site/utils';
|
||||||
|
|
||||||
enum Api {
|
enum Api {
|
||||||
queryById = '/ktgl/kcKetangbiao/queryById',
|
queryById = '/ktgl/kcKetangbiao/queryById',
|
||||||
que = '//qa/kcEvaluationque/list',
|
que = '/qa/kcEvaluationque/list',
|
||||||
ans = '/qa/kcEvaluationans/list',
|
ans = '/qa/kcEvaluationans/list',
|
||||||
save = '/qa/kcEvaluation/addQaAll',
|
save = '/qa/kcEvaluation/addQaAll',
|
||||||
}
|
}
|
||||||
|
@ -111,7 +111,7 @@ const { createMessage } = useMessage();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
console.log(route.query );
|
console.log(route.query );
|
||||||
let params = { pageSize: -1, status: 0 }
|
let params = { pageSize: -1, status: 0, column: 'ordernum', order: 'asc' }
|
||||||
let queryQue = defHttp.get({ url: Api.que, params: { ...params, evaluationver: route.query.type } });
|
let queryQue = defHttp.get({ url: Api.que, params: { ...params, evaluationver: route.query.type } });
|
||||||
let queryAns = defHttp.get({ url: Api.ans, params });
|
let queryAns = defHttp.get({ url: Api.ans, params });
|
||||||
|
|
||||||
|
|
|
@ -12,13 +12,20 @@
|
||||||
<a-col :xs="{ span: 12 }" :sm="{ span: 12 }" :lg="{ span: 12 }">
|
<a-col :xs="{ span: 12 }" :sm="{ span: 12 }" :lg="{ span: 12 }">
|
||||||
<div class="numberBlob">
|
<div class="numberBlob">
|
||||||
<div class="numSpan green">{{ tjData?.jinRiKeTang?.xkktnum }}</div>
|
<div class="numSpan green">{{ tjData?.jinRiKeTang?.xkktnum }}</div>
|
||||||
<div class="numberName"><FallOutlined class="green"/>已下课</div>
|
<div class="numberName">
|
||||||
|
<i class="fa fa-level-down green"></i>
|
||||||
|
<!-- <FallOutlined class="green"/> -->
|
||||||
|
已下课
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<a-divider class="divider"/>
|
<a-divider class="divider"/>
|
||||||
<div class="buttomDiv wenZiJiaCu">
|
<div class="buttomDiv wenZiJiaCu">
|
||||||
<FallOutlined class="green"/>
|
<!-- <FallOutlined class="green"/> -->
|
||||||
|
<span class="green">
|
||||||
|
↳
|
||||||
|
</span>
|
||||||
腾讯:{{ tjData?.jinRiKeTang?.txktnum }}
|
腾讯:{{ tjData?.jinRiKeTang?.txktnum }}
|
||||||
钉钉:{{ tjData?.jinRiKeTang?.ddktnum }}
|
钉钉:{{ tjData?.jinRiKeTang?.ddktnum }}
|
||||||
其他:{{ tjData?.jinRiKeTang?.qtktnum }}
|
其他:{{ tjData?.jinRiKeTang?.qtktnum }}
|
||||||
|
@ -30,7 +37,7 @@
|
||||||
<a-row class="" :gutter="gutter">
|
<a-row class="" :gutter="gutter">
|
||||||
<a-col :xs="{ span: 24 }" :sm="{ span: 24 }" :lg="{ span: 24 }">
|
<a-col :xs="{ span: 24 }" :sm="{ span: 24 }" :lg="{ span: 24 }">
|
||||||
<div class="numberBlob">
|
<div class="numberBlob">
|
||||||
<div class="numSpan orange">{{ tjData?.jinRiKeTang?.zzsknum }}</div>
|
<div class="numSpan orange fs3r">{{ tjData?.jinRiKeTang?.zzsknum }}</div>
|
||||||
<div class="numberName"> </div>
|
<div class="numberName"> </div>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
@ -51,13 +58,21 @@
|
||||||
<a-col :xs="{ span: 8 }" :sm="{ span: 8 }" :lg="{ span: 8 }">
|
<a-col :xs="{ span: 8 }" :sm="{ span: 8 }" :lg="{ span: 8 }">
|
||||||
<div class="numberBlob">
|
<div class="numberBlob">
|
||||||
<div class="numSpan blue">{{ tjData?.jinRiTingKe?.btkktnum }}</div>
|
<div class="numSpan blue">{{ tjData?.jinRiTingKe?.btkktnum }}</div>
|
||||||
<div class="numberName"><StockOutlined class="blue"/>听课课堂</div>
|
<div class="numberName">
|
||||||
|
<!-- <StockOutlined class="blue"/> -->
|
||||||
|
<i class="fa fa-bolt blue"></i>
|
||||||
|
听课课堂
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="{ span: 8 }" :sm="{ span: 8 }" :lg="{ span: 8 }">
|
<a-col :xs="{ span: 8 }" :sm="{ span: 8 }" :lg="{ span: 8 }">
|
||||||
<div class="numberBlob">
|
<div class="numberBlob">
|
||||||
<div class="numSpan orange">{{ tjData?.jinRiTingKe?.tkrcnum }}</div>
|
<div class="numSpan orange">{{ tjData?.jinRiTingKe?.tkrcnum }}</div>
|
||||||
<div class="numberName"><RiseOutlined class="orange"/>听课人次</div>
|
<div class="numberName">
|
||||||
|
<!-- <RiseOutlined class="orange"/> -->
|
||||||
|
<i class="fa fa-level-up orange"></i>
|
||||||
|
听课人次
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
@ -65,19 +80,28 @@
|
||||||
<div class="buttomDiv"></div>
|
<div class="buttomDiv"></div>
|
||||||
</a-card>
|
</a-card>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
<a-col :xs="{ span: 24 }" :sm="{ span: 9 }" :lg="{ span: 5 }">
|
||||||
<a-card class="cardDiv" title="今日听课">
|
<a-card class="cardDiv" title="今日听课">
|
||||||
|
<!-- -<i class="fa-sharp fa-solid fa-user"></i>- -->
|
||||||
<a-row class="" :gutter="gutter">
|
<a-row class="" :gutter="gutter">
|
||||||
<a-col :xs="{ span: 12 }" :sm="{ span: 12 }" :lg="{ span: 12 }">
|
<a-col :xs="{ span: 12 }" :sm="{ span: 12 }" :lg="{ span: 12 }">
|
||||||
<div class="numberBlob">
|
<div class="numberBlob">
|
||||||
<div class="numSpan blue">{{ tjData?.yiKaiKeTang?.num }}</div>
|
<div class="numSpan blue">{{ tjData?.yiKaiKeTang?.num }}</div>
|
||||||
<div class="numberName"><StockOutlined class="blue"/>课堂数</div>
|
<div class="numberName">
|
||||||
|
<!-- <StockOutlined class="blue"/> -->
|
||||||
|
<i class="fa fa-bolt blue"></i>
|
||||||
|
课堂数
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="{ span: 12 }" :sm="{ span: 12 }" :lg="{ span: 12 }">
|
<a-col :xs="{ span: 12 }" :sm="{ span: 12 }" :lg="{ span: 12 }">
|
||||||
<div class="numberBlob">
|
<div class="numberBlob">
|
||||||
<div class="numSpan orange">{{ tjData?.yiKaiKeTang?.zzsknum }}</div>
|
<div class="numSpan orange">{{ tjData?.yiKaiKeTang?.zzsknum }}</div>
|
||||||
<div class="numberName"><RiseOutlined class="orange"/>听课人次</div>
|
<div class="numberName">
|
||||||
|
<!-- <RiseOutlined class="orange"/> -->
|
||||||
|
<i class="fa fa-level-up orange"></i>
|
||||||
|
听课人次
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
@ -85,7 +109,7 @@
|
||||||
<div class="buttomDiv"></div>
|
<div class="buttomDiv"></div>
|
||||||
</a-card>
|
</a-card>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="{ span: 24 }" :sm="{ span: 2 }" :lg="{ span: 3 }">
|
<a-col :xs="{ span: 24 }" :sm="{ span: 1 }" :lg="{ span: 2 }">
|
||||||
<div style="margin: 0 auto;width: fit-content;font-size: 6rem;font-weight: 700;color: #cccccc8c;padding: 29px 0;">
|
<div style="margin: 0 auto;width: fit-content;font-size: 6rem;font-weight: 700;color: #cccccc8c;padding: 29px 0;">
|
||||||
<!-- <RouterLink class="plusButton" to="/dashboard/analysis"><PlusOutlined/></RouterLink> -->
|
<!-- <RouterLink class="plusButton" to="/dashboard/analysis"><PlusOutlined/></RouterLink> -->
|
||||||
<RouterLink class="plusButton" to="/dashboard/analysis">+</RouterLink>
|
<RouterLink class="plusButton" to="/dashboard/analysis">+</RouterLink>
|
||||||
|
@ -95,7 +119,7 @@
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, computed, onMounted } from 'vue';
|
import { ref, reactive, computed, onMounted } from 'vue';
|
||||||
import { PlusOutlined, FallOutlined, RiseOutlined, StockOutlined } from '@ant-design/icons-vue';
|
// import { PlusOutlined, FallOutlined, RiseOutlined, StockOutlined } from '@ant-design/icons-vue';
|
||||||
import { dateUtil, formatToDate } from '/@/utils/dateUtil';
|
import { dateUtil, formatToDate } from '/@/utils/dateUtil';
|
||||||
|
|
||||||
|
|
||||||
|
@ -146,6 +170,10 @@ onMounted(() => {
|
||||||
}
|
}
|
||||||
.numberName {
|
.numberName {
|
||||||
font-size: .5rem;
|
font-size: .5rem;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
.fs3r {
|
||||||
|
font-size: 3rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.green {
|
.green {
|
||||||
|
@ -158,8 +186,13 @@ onMounted(() => {
|
||||||
color: #1c84c6;
|
color: #1c84c6;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cardDiv :deep(.ant-divider-horizontal) {
|
.cardDiv {
|
||||||
margin: 12px 0;
|
:deep(.ant-divider-horizontal) {
|
||||||
|
margin: 12px 0;
|
||||||
|
}
|
||||||
|
:deep(.ant-card-head-title) {
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.maxRow :deep(.ant-card-body) {
|
.maxRow :deep(.ant-card-body) {
|
||||||
padding: 0 24px 24px;
|
padding: 0 24px 24px;
|
||||||
|
@ -169,9 +202,6 @@ onMounted(() => {
|
||||||
font-size: .4rem;
|
font-size: .4rem;
|
||||||
height: 1rem;
|
height: 1rem;
|
||||||
}
|
}
|
||||||
.wenZiJiaCu {
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
.plusButton{
|
.plusButton{
|
||||||
& :hover,& :active{
|
& :hover,& :active{
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="24">
|
<a-col :span="24">
|
||||||
<div style="margin-top:20px;">
|
<div style="margin-top:20px;">
|
||||||
<a-button type="primary" class="itemYyButton">评价</a-button>
|
<a-button type="primary" class="itemYyButton" @click="tingKeZuJiAddModal.view({ ketangbiaoid: item.id })">评价</a-button>
|
||||||
<a-button type="primary" class="itemBaoCuoButton" @click="funQxyy(item)">取消预约</a-button>
|
<a-button type="primary" class="itemBaoCuoButton" @click="funQxyy(item)">取消预约</a-button>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
@ -45,6 +45,7 @@
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
</a-card>
|
</a-card>
|
||||||
|
<addModalPage ref="tingKeZuJiAddModal"/>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, computed, onMounted } from 'vue';
|
import { ref, reactive, computed, onMounted } from 'vue';
|
||||||
|
@ -53,8 +54,9 @@ import { TeamOutlined } from '@ant-design/icons-vue';
|
||||||
import { getUserId } from '/@/views/site/utils/index';
|
import { getUserId } from '/@/views/site/utils/index';
|
||||||
import { downloadByUrl } from '/@/utils/file/download';
|
import { downloadByUrl } from '/@/utils/file/download';
|
||||||
import { useMessage } from '/@/hooks/web/useMessage';
|
import { useMessage } from '/@/hooks/web/useMessage';
|
||||||
|
|
||||||
import { defHttp } from '/@/utils/http/axios';
|
import { defHttp } from '/@/utils/http/axios';
|
||||||
|
import addModalPage from '/@/views/site/tingKeZuJi/components/addModal.vue';
|
||||||
|
|
||||||
const { createMessage } = useMessage();
|
const { createMessage } = useMessage();
|
||||||
enum Api {
|
enum Api {
|
||||||
list = '/kcYuyue/kcYuyue/findTingkeZuJiByPage',
|
list = '/kcYuyue/kcYuyue/findTingkeZuJiByPage',
|
||||||
|
@ -62,6 +64,8 @@ enum Api {
|
||||||
edit='/kcYuyue/kcYuyue/edit',
|
edit='/kcYuyue/kcYuyue/edit',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const tingKeZuJiAddModal = ref();
|
||||||
|
|
||||||
const emit = defineEmits(['ortherLoad']);
|
const emit = defineEmits(['ortherLoad']);
|
||||||
/**
|
/**
|
||||||
* 列表接口
|
* 列表接口
|
||||||
|
|
|
@ -17,20 +17,17 @@
|
||||||
<a-row style="margin-top:20px;">
|
<a-row style="margin-top:20px;">
|
||||||
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
||||||
<a-form-item label="" style="padding: 10px;">
|
<a-form-item label="" style="padding: 10px;">
|
||||||
<a-date-picker :showTime="false" valueFormat="YYYY-MM-DD" :placeholder="'请选择开始时间'" style="width:100%;"
|
<a-date-picker :showTime="false" valueFormat="YYYY-MM-DD" :placeholder="'请选择开始时间'" style="width:100%;" v-model:value="queryParam.startTime"></a-date-picker>
|
||||||
v-model:value="queryParam.startTime"></a-date-picker>
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
||||||
<a-form-item label="" style="padding: 10px;">
|
<a-form-item label="" style="padding: 10px;">
|
||||||
<a-date-picker :showTime="false" valueFormat="YYYY-MM-DD" :placeholder="'请选择结束时间'" style="width:100%;"
|
<a-date-picker :showTime="false" valueFormat="YYYY-MM-DD" :placeholder="'请选择结束时间'" style="width:100%;" v-model:value="queryParam.endTime"></a-date-picker>
|
||||||
v-model:value="queryParam.endTime"></a-date-picker>
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
||||||
<a-form-item label="" style="padding: 10px;">
|
<a-form-item label="" style="padding: 10px;">
|
||||||
<JDictSelectTag placeholder="请选择院系" v-model:value="queryParam.kkdw"
|
<JDictSelectTag placeholder="请选择院系" v-model:value="queryParam.kkdw" :dictCode="`tkrszdw_view,college,college`" />
|
||||||
:dictCode="`tkrszdw_view,college,college`" />
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
||||||
|
@ -83,7 +80,7 @@
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="24">
|
<a-col :span="24">
|
||||||
<div style="margin-top:20px;" v-if="item.isdeleted=='0'">
|
<div style="margin-top:20px;" v-if="item.isdeleted=='0'">
|
||||||
<a-button type="primary" class="itemYyButton">评价</a-button>
|
<a-button type="primary" class="itemYyButton" @click="tingKeZuJiAddModal.view({ ketangbiaoid: item.id })">评价</a-button>
|
||||||
<a-button type="primary" class="itemBaoCuoButton" @click="funQxyy(item)">取消预约</a-button>
|
<a-button type="primary" class="itemBaoCuoButton" @click="funQxyy(item)">取消预约</a-button>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top:20px;" v-if="item.isdeleted=='1'">
|
<div style="margin-top:20px;" v-if="item.isdeleted=='1'">
|
||||||
|
@ -103,7 +100,7 @@
|
||||||
<footerPage/>
|
<footerPage/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<addModalPage ref="tingKeZuJiAddModal"/>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref,onMounted,defineExpose } from 'vue';
|
import { ref,onMounted,defineExpose } from 'vue';
|
||||||
|
@ -115,8 +112,9 @@ import { dateFormat } from '/@/utils/common/compUtils';
|
||||||
import { getUserId } from '/@/views/site/utils/index';
|
import { getUserId } from '/@/views/site/utils/index';
|
||||||
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
|
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
|
||||||
import { getSysConfig } from '/@/views/site/utils/index';
|
import { getSysConfig } from '/@/views/site/utils/index';
|
||||||
|
|
||||||
import { useMessage } from '/@/hooks/web/useMessage';
|
import { useMessage } from '/@/hooks/web/useMessage';
|
||||||
|
import addModalPage from '/@/views/site/tingKeZuJi/components/addModal.vue';
|
||||||
|
|
||||||
const { createMessage } = useMessage();
|
const { createMessage } = useMessage();
|
||||||
const list = (queryParam) => defHttp.get({ url: Api.list, params:queryParam });
|
const list = (queryParam) => defHttp.get({ url: Api.list, params:queryParam });
|
||||||
|
|
||||||
|
@ -126,6 +124,8 @@ enum Api {
|
||||||
edit='/kcYuyue/kcYuyue/edit',
|
edit='/kcYuyue/kcYuyue/edit',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const tingKeZuJiAddModal = ref();
|
||||||
|
|
||||||
const queryParam = ref<any>({});
|
const queryParam = ref<any>({});
|
||||||
let listData = ref<any>([]);
|
let listData = ref<any>([]);
|
||||||
|
|
||||||
|
|