洋浦学校八大中心 教学管理前端

init
gongdi 3 years ago
parent 1bcd17b23c
commit 4c55f2376c

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 998 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1665388139411" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2593" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 938.666667c235.637333 0 426.666667-191.029333 426.666667-426.666667S747.637333 85.333333 512 85.333333 85.333333 276.362667 85.333333 512s191.029333 426.666667 426.666667 426.666667zM329.376 649.376L480 498.741333V320a32 32 0 0 1 64 0v192a32 32 0 0 1-9.376 22.624l-160 160a32 32 0 1 1-45.248-45.248z" p-id="2594" fill="#58a8d1"></path></svg>

After

Width:  |  Height:  |  Size: 679 B

@ -1,72 +0,0 @@
<template>
<div class="summary-record-large-div">
<TabComp :tabArr="tabArr" :showType="2" showName="title" @tabChange="tabChange" cbName="type"/>
<div class="content-div">
<div class="summary-page-div">
<my-summary v-if="pageType === 1"></my-summary>
<org-dept-summary :pageType="pageType"></org-dept-summary>
</div>
</div>
</div>
</template>
<script>
import TabComp from '../common/tabComp.vue';
import OfficeMenuConfig from '../../../../../../../../src/utils/officeMenuConfig';
import MySummary from './mySummary.vue';
import OrgDeptSummary from './orgDeptSummary.vue';
export default{
data(){
return {
depAdmin:false,//
orgAdmin:false,//
tabArr: [
{title: "我的总结",type:1}
],
tabIndex: 0,
pageType:1,
}
},
created(){
//
this.depAdmin = OfficeMenuConfig.menuIsExist(["daliyOffice","newPlanConclusion","plan_summary_statistics", "dept"]);
if(this.depAdmin){
this.tabArr.push({title: "部门总结",type:2})
}
//
this.orgAdmin = OfficeMenuConfig.menuIsExist(["daliyOffice","newPlanConclusion","plan_summary_statistics", "org"]);
if(this.depAdmin){
this.tabArr.push({title: "机构总结",type:3})
}
},
methods:{
tabChange:function (param) {
if (this.tabIndex != param.index) {
this.tabIndex = param.index;
this.pageType = param.cbName;
}
}
},
components:{
TabComp,
MySummary,
OrgDeptSummary
}
}
</script>
<style scoped lang="scss">
.summary-record-large-div{
width: 100%;
min-height: 20rem;
padding: 0.5rem;
display: flex;
justify-content: space-between;
.content-div {
width: calc(100% - 4rem);
.summary-page-div{
width: 100%;
padding: 0.5rem;
min-height: 20rem;
}
}
}
</style>

@ -474,6 +474,44 @@ const InterfaceConfig = {
isTestLogin: true,
},
/*
* 根据学段年级获取课程计划信息列表-分页 (新版)
"bureau_id":"必填 int 机构id"
"stage_id":"必填 int 学段id"
"create_year":"必填 int 入学年份(年级)"
* */
"getCourseArrangementList":{
url: 'intellioa/center/courseArrangement/list',
method: 'get',
isTestLogin: true,
},
/*
* 根据ID获取课程安排信息 (新版)
"id"
* */
"getCourseArrangementInfo":{
url: 'intellioa/center/courseArrangement/get',
method: 'get',
isTestLogin: true,
},
/*
* 删除课程安排 (新版)
"id"
* */
"deleteCourseArrangement":{
url: 'intellioa/center/courseArrangement/delete',
method: 'post',
isTestLogin: true,
},
/*
* 新增编辑课程 新版
* */
"saveCourseArrangement":{
url: 'intellioa/center/courseArrangement/save',
method: 'post',
isTestLogin: true,
},
/*
* 新增修改保存课程计划信息单条
* "plan_id""非必填number课程计划id填写即修改"
@ -1513,5 +1551,44 @@ const InterfaceConfig = {
method: 'post',
isTestLogin: true,
},
/*
* 校本课程列表-支持分页
* */
"getSchoolCourseList":{
url: 'intellioa/center/schoolCourse/list',
method: 'get',
isTestLogin: true,
},
/*
* 删除校本课程 (新版)
"id"
* */
"deleteSchoolCourse":{
url: 'intellioa/center/schoolCourse/delete',
method: 'post',
isTestLogin: true,
},
/*
* 根据ID获取校本课程信息
"id"
* */
"getSchoolCourseInfo":{
url: 'intellioa/center/schoolCourse/get',
method: 'get',
isTestLogin: true,
},
/*
* 保存校本课程新增/修改
* */
"saveSchoolCourse":{
url: 'intellioa/center/schoolCourse/save',
method: 'post',
isTestLogin: true,
},
};
export default InterfaceConfig;

@ -2,13 +2,23 @@
<div class="course-info-content-style">
<a-spin :spinning="pageLoading">
<div class="add-record-row-style">
<div class="li-box li-left"><span class="must-option-style">*</span>学段学年</div>
<div class="li-box li-left"><span class="must-option-style">*</span>学段</div>
<div class="li-box li-right">
<a-cascader
:field-names="{label:'createYearName',value:'createYear',children:'create_year_list'}"
:allowClear="false"
:options="stageList" @change="stageChange" placeholder="选择学段学年">
</a-cascader>
<a-select :value="stageId" @change="stageChange">
<a-select-option v-for="item in stageParam" :key="'stage_'+item.stage_id" :value="item.stage_id">
{{ item.stage_name }}
</a-select-option>
</a-select>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left"><span class="must-option-style">*</span>入学年份</div>
<div class="li-box li-right">
<a-select :value="yearId" @change="yearChange">
<a-select-option v-for="item in yearList" :key="'year_'+item.createYear" :value="item.createYear">
{{ item.createYearName }}
</a-select-option>
</a-select>
</div>
</div>
<div class="add-record-row-style">
@ -39,80 +49,104 @@
</div>
</template>
<script>
import {Spin, Button, Cascader, Input, InputNumber, Modal} from 'ant-design-vue';
import {Spin, Button, Cascader, Input, InputNumber, Modal,Select} from 'ant-design-vue';
import InterConfig from '../interConfig';
export default {
props: {
// defaultValue: {
// type: Array,
// default: []
// },
planInfo: {
type: Object,
default: {}
},
stageList:{
type:Array,
default:[{stage_id: "", stage_name: "全部"}],
}
},
data() {
return {
selectedValue:[],
pageLoading: false,
planId: "",
stageId: "",
stageParam: [],
yearId: "",
stageList: [],
yearList:[{createYear: "", createYearName: "全部"}],//
courseName: "",//
planNumber: "",//
realNumber: "",//
}
},
created() {
this.getStageList();
//this.getStageList();
if(this.$props.planInfo && this.$props.planInfo.id){
this.getCourseArrangementInfo();
}
},
mounted() {
if (this.planInfo && this.planInfo.plan_id !== "") {
this.planId = this.planInfo.plan_id;
this.courseName = this.planInfo.course_name;
this.planNumber = this.planInfo.plan_number;
this.realNumber = this.planInfo.real_number;
}
// this.stageId = this.defaultValue[0];
// this.yearId = this.defaultValue[1];
this.stageParam = this.$props.stageList;
},
methods: {
getStageList: function () {
getCourseArrangementInfo:function () {
let param = {
bureau_id: this.BaseConfig.person_info_my.bureau_id,
id: this.planInfo.id,
}
this.InterfaceConfig.callInterface([{
url: InterConfig.getSchoolStageList.url,
url: InterConfig.getCourseArrangementInfo.url,
params: param,
method: InterConfig.getSchoolStageList.method,
isTestLogin: InterConfig.getSchoolStageList.isTestLogin,
method: InterConfig.getCourseArrangementInfo.method,
isTestLogin: InterConfig.getCourseArrangementInfo.isTestLogin,
}], (result) => {
let resData = result[0].data;
if (resData.code === 2000) {
let stageList = resData.data;
if (stageList && stageList.length > 0) {
for (let i = 0, len = stageList.length; i < len; i++) {
stageList[i].createYear = stageList[i].stage_id;
stageList[i].createYearName = stageList[i].stage_name;
}
let objData = resData.data;
//
this.stageId = objData.stage_id;
let stageObj = this.stageParam.filter((item) => {
return item.stage_id === this.stageId;
})
if (stageObj && stageObj.length > 0) {
this.yearList.push(...stageObj[0].create_year_list);
}
this.stageList = stageList;
this.yearId = objData.create_year;
this.courseName = objData.course_name;
this.planNumber = objData.province_plan;
this.realNumber = objData.school_execute;
}
})
},
stageChange: function (value) {
if (value.length > 0) {
this.stageId = value[0];
this.yearId = value[1];
if (this.stageId !== value) {
this.stageId = value;
//
this.yearId = "";
this.yearList = [{createYear: "", createYearName: "全部"}];//
if (this.stageId !== "") {
let stageObj = this.stageList.filter((item) => {
return item.stage_id === this.stageId;
})
if (stageObj && stageObj.length > 0) {
this.yearList.push(...stageObj[0].create_year_list);
}
}
}
},
yearChange: function (value) {
if (this.yearId !== value) {
this.yearId = value;
}
},
submit: function () {
if (this.stageId === "" || this.yearId === "") {
if (this.stageId === "") {
Modal.warning({
title: "请选择学段或者学年",
title: "请选择学段",
content: "",
centered: true
})
return;
}
if (this.yearId === "") {
Modal.warning({
title: "请选择入学年份",
content: "",
centered: true
})
@ -143,23 +177,22 @@
return;
}
let param = {
plan_id: this.planId,
stage_id: this.stageId,
create_year: this.yearId,
course_name: this.courseName,
plan_number: this.planNumber,
real_number: this.realNumber,
person_id: this.BaseConfig.userInfo.person_id,
identity_id: this.BaseConfig.userInfo.identity_id,
bureau_id: this.BaseConfig.person_info_my.bureau_id,
province_plan: this.planNumber,
school_execute: this.realNumber,
create_person_id: this.BaseConfig.userInfo.person_id,
org_id: this.BaseConfig.person_info_my.bureau_id,
}
if(this.$props.planInfo && this.$props.planInfo.id){
param.id = this.$props.planInfo.id;
}
this.selectedValue.push(this.stageId,this.yearId)
this.InterfaceConfig.callInterface([{
url: InterConfig.saveSingle.url,
url: InterConfig.saveCourseArrangement.url,
params: param,
method: InterConfig.saveSingle.method,
isTestLogin: InterConfig.saveSingle.isTestLogin,
method: InterConfig.saveCourseArrangement.method,
isTestLogin: InterConfig.saveCourseArrangement.isTestLogin,
}], (result) => {
let resData = result[0].data;
if (resData.code === 2000) {
@ -168,7 +201,7 @@
content: "",
centered: true
});
this.$emit('getSelectValue', this.selectedValue)
this.$emit("toListPage")
}
})
},
@ -182,7 +215,9 @@
ACascader: Cascader,
AInput: Input,
AInputNumber: InputNumber,
AModal: Modal
AModal: Modal,
ASelect: Select,
ASelectOption: Select.Option,
}
}
</script>

@ -2,22 +2,32 @@
<div class="course-plan-list-content-style">
<template v-if="pageType === 0">
<div class="search-and-add-style">
<a-cascader
:field-names="{label:'createYearName',value:'createYear',children:'create_year_list'}"
:allowClear="false"
v-model:value="defaultValue"
:options="stageList" @change="stageChange" placeholder="选择学段学年">
</a-cascader>
<span style="margin-right: 0.5rem">学段</span>
<a-select :value="stageId" @change="stageChange">
<a-select-option v-for="item in stageList" :key="'stage_'+item.stage_id" :value="item.stage_id">
{{ item.stage_name }}
</a-select-option>
</a-select>
<span style="margin-right: 0.5rem">入学年份</span>
<a-select :value="yearId" @change="yearChange">
<a-select-option v-for="item in yearList" :key="'year_'+item.createYear" :value="item.createYear">
{{ item.createYearName }}
</a-select-option>
</a-select>
<span style="margin:0 0.5rem">课程名称</span>
<a-input v-model="courseName "/>
<a-icon type="search" :style="{fontSize: '16px', color: '#31a8fa',marginLeft:'0.5rem'}"
@click="search"/>
<a-button type="primary" @click="toAdd" class="add-button-style">新增</a-button>
</div>
<a-table :columns="tableColumn" :data-source="dataList" :loading="loading" :pagination="false"
:scroll="{ y: 500 }" :locale="locale">
<span slot="realPlanMatchingDegree" slot-scope="text, record">
<span slot="matchDegree" slot-scope="text, record">
<a-icon type="arrow-up" :style="{fontSize: '16px', color: 'green'}"
v-if="record.real_plan_matching_degree > 0"/>
<span v-if="record.real_plan_matching_degree === 0">~</span>
v-if="record.match_degree > 0"/>
<span v-if="record.match_degree === 0">~</span>
<a-icon type="arrow-down" :style="{fontSize: '16px', color: 'red'}"
v-if="record.real_plan_matching_degree < 0"/>
v-if="record.match_degree < 0"/>
</span>
<span slot="action" slot-scope="text, record">
<a @click="toEdit(record)"></a>
@ -25,6 +35,7 @@
<a @click="toDelete(record)"></a>
</span>
</a-table>
<a-pagination v-if="totalPage > 1" v-model:current="pageNumber" :pageSize="pageSize" :total="totolNum" show-less-items @change="pageChange"></a-pagination>
</template>
<a-modal title="提示"
:visible="visible"
@ -37,13 +48,13 @@
</a-modal>
<template v-if="pageType === 1">
<!-- <course-info :defaultValue="defaultValue" @cancel="cancel" @submit="submit" :planInfo="planInfo"/>-->
<course-info @cancel="cancel" @submit="submit" @getSelectValue="getSelectValue" :planInfo="planInfo"/>
<course-info @cancel="cancel" @submit="submit" @toListPage="toListPage" :planInfo="planInfo" :stageList="stageList"/>
</template>
</div>
</template>
<script>
import InterConfig from '../interConfig';
import {Table, Button, Select, Modal, Divider, Cascader, Icon} from 'ant-design-vue';
import {Table, Button, Select, Modal, Divider, Cascader, Icon, Input,Pagination} from 'ant-design-vue';
import _ from 'lodash';
import Upload from '../../../../../../components/common/uploader/Upload.vue';
import CourseInfo from './courseInfo.vue';
@ -63,23 +74,23 @@
align: "center"
},
{
dataIndex: 'plan_number',
key: 'planNumber',
dataIndex: 'province_plan',
key: 'provincePlan',
title: '省计划',
align: "center"
},
{
dataIndex: 'real_number',
key: 'realNumber',
dataIndex: 'school_execute',
key: 'schoolExecute',
title: '校执行',
align: "center"
},
{
dataIndex: 'real_plan_matching_degree',
key: 'realPlanMatchingDegree',
dataIndex: 'match_degree',
key: 'matchDegree',
title: '匹配度',
align: "center",
scopedSlots: {customRender: 'realPlanMatchingDegree'},
scopedSlots: {customRender: 'matchDegree'},
},
{
dataIndex: 'create_time',
@ -101,33 +112,41 @@
locale: {emptyText: '暂无相关数据'},
pageType: 0,//0 1
stageId: "",
stageList: [],
stageList: [{stage_id: "", stage_name: "全部"}],
yearId: "",
defaultValue: [],//
yearList: [{createYear: "", createYearName: "全部"}],//
courseName: "",//
tableColumn: tableColumn,
dataList: [],
loading: false,
planInfo: {},
visible: false,
pageNumber: 1,
pageSize: 8,
totalPage: 0,
totolNum: 0,
}
},
created() {
this.getStageList();
//this.getSelectValue()
},
mounted() {
this.getListPlanByStageYear();
},
methods: {
getSelectValue(val) {
if (this.defaultValue.length != 0) {
this.defaultValue = val
this.stageId = this.defaultValue[0]
this.yearId = this.defaultValue[1]
this.pageType = 0;
this.getStageList();
}
search: function () {
this.getListPlanByStageYear();
},
//
pageChange:function (page, pageSize) {
this.pageNumber = page;
this.getListPlanByStageYear();
},
toListPage:function () {
this.pageType = 0;
this.getStageList();
this.getListPlanByStageYear();
},
getStageList: function () {
this.stageList = [{stage_id: "", stage_name: "全部"}];
let param = {
bureau_id: this.BaseConfig.person_info_my.bureau_id,
}
@ -141,70 +160,61 @@
if (resData.code === 2000) {
let stageList = resData.data;
if (stageList && stageList.length > 0) {
for (let i = 0, len = stageList.length; i < len; i++) {
stageList[i].createYear = stageList[i].stage_id;
stageList[i].createYearName = stageList[i].stage_name;
}
}
this.stageList = stageList;
console.log('this.defaultValue:',this.defaultValue)
if (this.defaultValue.length == 0) {
this.defaultValue.push(this.stageList[0].stage_id, this.stageList[0].create_year_list[0].createYear)
this.buildDefaultValue();
}else {
this.getListPlanByStageYear();
this.stageList.push(...stageList);
}
}
})
},
buildDefaultValue: function () {
for (let i = 0, len = this.stageList.length; i < len; i++) {
let yearList = this.stageList[i].create_year_list;
if (yearList && yearList.length > 0) {
this.stageId = this.stageList[i].stage_id;
this.yearId = yearList[0].createYear;
this.defaultValue.push(...[this.stageId, this.yearId]);
break;
}
}
this.getListPlanByStageYear();
},
getListPlanByStageYear: function () {
if (this.stageId !== "" && this.yearId !== "") {
let param = {
bureau_id: this.BaseConfig.person_info_my.bureau_id,
stage_id: this.stageId,
create_year: this.yearId,
}
this.InterfaceConfig.callInterface([{
url: InterConfig.listPlanByStageYear.url,
params: param,
method: InterConfig.listPlanByStageYear.method,
isTestLogin: InterConfig.listPlanByStageYear.isTestLogin,
}], (result) => {
let resData = result[0].data;
if (resData.code === 2000) {
let dataList = resData.data;
if (dataList && dataList.length > 0) {
for (let i = 0, len = dataList.length; i < len; i++) {
dataList[i]['index'] = i + 1;
}
let param = {
org_id: this.BaseConfig.person_info_my.bureau_id,
stage_id: this.stageId,
create_year: this.yearId,
course_name:this.courseName,
page_number:this.pageNumber,
page_size:this.pageSize
}
this.InterfaceConfig.callInterface([{
url: InterConfig.getCourseArrangementList.url,
params: param,
method: InterConfig.getCourseArrangementList.method,
isTestLogin: InterConfig.getCourseArrangementList.isTestLogin,
}], (result) => {
let resData = result[0].data;
if (resData.code === 2000) {
let obj = resData.data;
let dataList = obj.list;
if (dataList && dataList.length > 0) {
for (let i = 0, len = dataList.length; i < len; i++) {
dataList[i]['index'] = i + 1;
}
this.dataList = dataList;
console.log('list',this.dataList)
}
})
}
this.totalPage = obj.total_page;
this.totolNum = obj.total_row;
this.dataList = dataList;
}
})
},
stageChange: function (value) {
if (value.length > 0) {
this.stageId = value[0];
this.yearId = value[1];
} else {
this.stageId = "";
if (this.stageId !== value) {
this.stageId = value;
//
this.yearId = "";
this.yearList = [{createYear: "", createYearName: "全部"}];//
if (this.stageId !== "") {
let stageObj = this.stageList.filter((item) => {
return item.stage_id === this.stageId;
})
if (stageObj && stageObj.length > 0) {
this.yearList.push(...stageObj[0].create_year_list);
}
}
}
},
yearChange: function (value) {
if (this.yearId !== value) {
this.yearId = value;
}
this.getListPlanByStageYear();
},
toAdd: function () {
this.planInfo = {};
@ -215,7 +225,7 @@
this.planInfo = record;
},
toDelete: function (record) {
this.planId = record.plan_id;
this.planId = record.id;
this.visible = true;
},
cancel: function () {
@ -250,14 +260,13 @@
//
handleOk: function () {
let param = {
plan_ids: this.planId,
bureau_id: this.BaseConfig.person_info_my.bureau_id,
id: this.planId,
}
this.InterfaceConfig.callInterface([{
url: InterConfig.deleteCourse.url,
url: InterConfig.deleteCourseArrangement.url,
params: param,
method: InterConfig.deleteCourse.method,
isTestLogin: InterConfig.deleteCourse.isTestLogin,
method: InterConfig.deleteCourseArrangement.method,
isTestLogin: InterConfig.deleteCourseArrangement.isTestLogin,
}], (result) => {
let resData = result[0].data;
if (resData.code === 2000) {
@ -287,7 +296,9 @@
Upload,
ACascader: Cascader,
CourseInfo,
AIcon: Icon
AIcon: Icon,
AInput: Input,
APagination:Pagination
}
}
</script>
@ -297,38 +308,40 @@
height: auto;
padding: 0.5rem;
.search-and-add-style {
width: 100%;
height: 3.5rem;
background-color: white;
margin-bottom: 0.5rem;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 0.5rem;
.ant-select {
width: 100px;
}
.add-button-style {
float: right;
}
}
.ant-table-wrapper {
.search-and-add-style {
width: 100%;
height: 3.5rem;
background-color: white;
margin-bottom: 0.5rem;
display: flex;
align-items: center;
padding: 0 0.5rem;
position: relative;
.ant-select {
width: 100px;
margin-right: 0.5rem;
}
.ant-input {
width: 150px;
}
.add-button-style {
position: absolute;
right: 0.5rem;
}
}
.ant-table-wrapper {
/deep/ .upload-container-style {
display: flex;
justify-content: center;
align-items: center;
}
/deep/ .upload-container-style {
display: flex;
justify-content: center;
align-items: center;
}
}
.ant-pagination {
margin-top: 0.5rem;
text-align: right;
}
}
.ant-pagination {
margin-top: 0.5rem;
text-align: right;
}
}
</style>

@ -0,0 +1,263 @@
<template>
<div class="school-base-list-content-style">
<template v-if="pageType === 0">
<div class="search-and-add-style">
<span style="margin-right: 0.5rem">课程类型</span>
<a-select :value="typeId" @change="typeChange">
<a-select-option v-for="item in typeList" :key="'type_'+item.type_id" :value="item.type_id">
{{ item.type_name }}
</a-select-option>
</a-select>
<span style="margin-right: 0.5rem">课程分类</span>
<a-select :value="courseId" @change="courseChange">
<a-select-option v-for="item in courseList" :key="'course_'+item.course_id" :value="item.course_id">
{{ item.course_name }}
</a-select-option>
</a-select>
<span style="margin:0 0.5rem">课程名称</span>
<a-input v-model="courseName "/>
<a-icon type="search" :style="{fontSize: '16px', color: '#31a8fa',marginLeft:'0.5rem'}"
@click="search"/>
<a-button type="primary" @click="toAdd" class="add-button-style">新增</a-button>
</div>
<a-table :columns="tableColumn" :data-source="dataList" :loading="loading" :pagination="false"
:scroll="{ y: 500 }" :locale="locale">
<span slot="action" slot-scope="text, record">
<a @click="toEdit(record)"></a>
<a-divider type="vertical"/>
<a @click="toDelete(record)"></a>
</span>
</a-table>
<a-pagination v-if="totalPage > 1" v-model:current="pageNumber" :pageSize="pageSize" :total="totolNum" show-less-items @change="pageChange"></a-pagination>
</template>
<a-modal title="提示"
:visible="visible"
centered
cancelText="取消"
okText="确定"
@ok="handleOk"
@cancel="handleCancel">
是否确定删除此条信息
</a-modal>
<template v-if="pageType === 1">
<shool-base-course-info @cancel="cancel" @toListPage="toListPage" :planId="planId"/>
</template>
</div>
</template>
<script>
import InterConfig from '../interConfig';
import {Select, Input, Icon, Button, Table, Divider,Modal,Pagination} from 'ant-design-vue';
import ShoolBaseCourseInfo from './shoolBaseCourseInfo.vue';
const tableColumn = [
{
dataIndex: 'index',
key: 'index',
title: '序号',
width: "80px",
align: "center"
},
{
dataIndex: 'course_name',
key: 'courseName',
title: '课程名称',
align: "center"
},
{
dataIndex: 'create_time',
key: 'createTime',
title: '创建时间',
align: "center"
},
{
title: '操作',
key: 'action',
align: "center",
scopedSlots: {customRender: 'action'},
}
]
export default {
data() {
return {
locale: {emptyText: '暂无相关数据'},
pageType: 0,//0 1 ,
typeId: 1,//
typeList: [{type_id: 1, type_name: "特色课程"}, {
type_id: 2,
type_name: "劳动课程"
}, {type_id: 3, type_name: "思政课程"}],
courseId: 11,//
courseList: [{course_id: 11, course_name: "科技社团"}, {course_id: 12, course_name: "艺术社团"}, {
course_id: 13,
course_name: "体育社团"
}, {course_id: 21, course_name: "体会劳动光荣"}, {course_id: 22, course_name: "提高劳动能力"}, {
course_id: 23,
course_name: "启蒙劳动意识"
}, {course_id: 24, course_name: "养成劳动习惯"}, {course_id: 31, course_name: "思政课程"}],
courseName: "",
visible: false,
pageNumber: 1,
pageSize: 8,
totalPage: 0,
totolNum: 0,
tableColumn: tableColumn,
dataList: [],
loading: false,
planId:""
}
},
created() {
this.getSchoolCourseList();
},
methods: {
//
pageChange:function (page, pageSize) {
this.pageNumber = page;
this.getSchoolCourseList();
},
getSchoolCourseList: function () {
let param = {
org_id: this.BaseConfig.person_info_my.bureau_id,
type_id: this.typeId,
course_type: this.courseId,
course_name: this.courseName,
page_number: this.pageNumber,
page_size: this.pageSize
}
this.InterfaceConfig.callInterface([{
url: InterConfig.getSchoolCourseList.url,
params: param,
method: InterConfig.getSchoolCourseList.method,
isTestLogin: InterConfig.getSchoolCourseList.isTestLogin,
}], (result) => {
let resData = result[0].data;
if (resData.code === 2000) {
let obj = resData.data;
let dataList = obj.list;
if (dataList && dataList.length > 0) {
for (let i = 0, len = dataList.length; i < len; i++) {
dataList[i]['index'] = i + 1;
}
}
this.totalPage = obj.total_page;
this.totolNum = obj.total_row;
this.dataList = dataList;
}
})
},
typeChange: function (value) {
if (this.typeId !== value) {
this.typeId = value;
}
},
courseChange: function (value) {
if (this.courseId !== value) {
this.courseId = value;
}
},
search: function () {
this.getSchoolCourseList();
},
toAdd: function () {
this.planId = "";
this.pageType = 1;
},
toEdit: function (record) {
this.pageType = 1;
this.planId = record.id + "";
},
toDelete: function (record) {
this.planId = record.id;
this.visible = true;
},
//
handleOk: function () {
let param = {
id: this.planId,
}
this.InterfaceConfig.callInterface([{
url: InterConfig.deleteSchoolCourse.url,
params: param,
method: InterConfig.deleteSchoolCourse.method,
isTestLogin: InterConfig.deleteSchoolCourse.isTestLogin,
}], (result) => {
let resData = result[0].data;
if (resData.code === 2000) {
Modal.success({
title: "操作成功",
content: "",
centered: true
});
this.handleCancel();
this.getSchoolCourseList();
}
})
},
//
handleCancel: function () {
this.planId = "";
this.visible = false;
},
cancel: function () {
this.pageType = 0;
this.getSchoolCourseList();
},
toListPage:function () {
this.pageType = 0;
this.getSchoolCourseList();
},
},
components: {
ASelect: Select,
ASelectOption: Select.Option,
AInput: Input,
AIcon: Icon,
AButton: Button,
ATable: Table,
ADivider: Divider,
AModal:Modal,
ShoolBaseCourseInfo,
APagination:Pagination
}
}
</script>
<style scoped lang="scss">
.school-base-list-content-style {
width: 100%;
height: auto;
padding: 0.5rem;
.search-and-add-style {
width: 100%;
height: 3.5rem;
background-color: white;
margin-bottom: 0.5rem;
display: flex;
align-items: center;
padding: 0 0.5rem;
position: relative;
.ant-select {
width: 100px;
margin-right: 0.5rem;
}
.ant-input {
width: 150px;
}
.add-button-style {
position: absolute;
right: 0.5rem;
}
}
.ant-table-wrapper {
/deep/ .upload-container-style {
display: flex;
justify-content: center;
align-items: center;
}
}
.ant-pagination {
margin-top: 0.5rem;
text-align: right;
}
}
</style>

@ -0,0 +1,380 @@
<template>
<div class="course-info-content-style">
<a-spin :spinning="pageLoading">
<div class="add-record-row-style">
<div class="li-box li-left"><span class="must-option-style">*</span>课程名称</div>
<div class="li-box li-right">
<a-input v-model="courseName" placeholder="请输入课程名称" maxlength="100"/>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left">课程简介</div>
<div class="li-box li-right">
<a-textarea v-model="courseSynopsis" placeholder="请输入课程简介"/>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left"><span class="must-option-style">*</span>课程类型</div>
<div class="li-box li-right">
<a-select :value="typeId" @change="typeChange">
<a-select-option v-for="item in typeList" :key="'type_'+item.type_id" :value="item.type_id">
{{ item.type_name }}
</a-select-option>
</a-select>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left"><span class="must-option-style">*</span>课程分类</div>
<div class="li-box li-right">
<a-select :value="courseId" @change="courseChange">
<a-select-option v-for="item in courseList" :key="'course_'+item.course_id" :value="item.course_id">
{{ item.course_name }}
</a-select-option>
</a-select>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left">课程封面</div>
<div class="li-box li-right">
<Upload :type="2" :multiple="false" title="点击上传" :option="{}" :canDownload="false"
:fileData="attachmentJson"
ref="fileUploadAttachment"
@uploadComplete="attachmentFile"
/>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left">主讲教师</div>
<div class="li-box li-right">
<a-input v-model="courseTeacher" placeholder="请输入主讲教师" maxlength="100"/>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left">授课时间</div>
<div class="li-box li-right">
<a-date-picker :locale="locale"
:showTime="true"
placeholder="请选择日期"
v-model="courseTeachingTime"
:format="dateFormat"
@change="onChange"/>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left">授课地点</div>
<div class="li-box li-right">
<a-input v-model="courseTeachingPlace" placeholder="请输入授课地点" maxlength="100"/>
</div>
</div>
<div class="add-record-row-style">
<div class="li-box li-left">授课对象</div>
<div class="li-box li-right">
<a-input v-model="courseTeachingObject" placeholder="请输入授课对象" maxlength="100"/>
</div>
</div>
<div class="add-record-row-style button-row-style">
<a-button type="primary" class="button-style" @click="submit">
提交
</a-button>
<a-button class="button-style" @click="cancel"></a-button>
</div>
</a-spin>
</div>
</template>
<script>
import {Spin, Button, Cascader, Input, InputNumber, Modal,Select,DatePicker,TimePicker} from 'ant-design-vue';
import InterConfig from '../interConfig';
import ATextarea from "ant-design-vue/es/input/TextArea";
import Upload from '../../../../../../components/common/uploader/Upload.vue';
import moment from 'moment';
import 'moment/locale/zh-cn';
moment.locale('zh-cn')
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN';
export default {
props: {
planId: {
type: String,
default: ""
},
},
data() {
return {
locale: zhCN,
dateFormat: "YYYY-MM-DD HH:mm",
pageLoading: false,
courseName: "",//
courseSynopsis:"",//
planNumber: "",//
realNumber: "",//
typeId: 1,//
typeList: [{type_id: 1, type_name: "特色课程"}, {
type_id: 2,
type_name: "劳动课程"
}, {type_id: 3, type_name: "思政课程"}],
courseId: 11,//
courseList: [{course_id: 11, course_name: "科技社团"}, {course_id: 12, course_name: "艺术社团"}, {
course_id: 13,
course_name: "体育社团"
}, {course_id: 21, course_name: "体会劳动光荣"}, {course_id: 22, course_name: "提高劳动能力"}, {
course_id: 23,
course_name: "启蒙劳动意识"
}, {course_id: 24, course_name: "养成劳动习惯"}, {course_id: 31, course_name: "思政课程"}],
attachmentJson: [],//
courseTeacher:"",//
courseTeachingTime:"",//
courseTeachingPlace:"",//
courseTeachingObject :"",//
}
},
created() {
//this.getStageList();
if(this.$props.planId && this.$props.planId !== ""){
//
this.getSchoolCourseInfo();
}
},
mounted() {
},
methods: {
getSchoolCourseInfo:function () {
let param = {
id: this.$props.planId,
}
this.InterfaceConfig.callInterface([{
url: InterConfig.getSchoolCourseInfo.url,
params: param,
method: InterConfig.getSchoolCourseInfo.method,
isTestLogin: InterConfig.getSchoolCourseInfo.isTestLogin,
}], (result) => {
let resData = result[0].data;
if (resData.code === 2000) {
let objData = resData.data;
this.courseName = objData.course_name;
this.courseSynopsis = objData.course_synopsis;
this.typeId = objData.type_id;
this.courseId = objData.course_type;
this.attachmentJson = JSON.parse(objData.course_cover);
this.courseTeacher = objData.course_teacher;
this.courseTeachingTime = moment(objData.course_teaching_time).format("YYYY-MM-DD HH:mm");
this.courseTeachingPlace = objData.course_teaching_place;
this.courseTeachingObject = objData.course_teaching_object;
}
})
},
typeChange: function (value) {
if (this.typeId !== value) {
this.typeId = value;
}
},
courseChange: function (value) {
if (this.courseId !== value) {
this.courseId = value;
}
},
attachmentFile: function (file) {
this.attachmentJson = file;
},
onChange(value, dateString) {
if (dateString === "") {
this.courseTeachingTime = null;
} else {
this.courseTeachingTime = moment(dateString).format("YYYY-MM-DD HH:mm");
}
},
submit: function () {
if (this.courseName.trim() === "") {
Modal.warning({
title: "请输入课程名称",
content: "",
centered: true
})
return;
}
let param = {
course_name: this.courseName ,
course_synopsis: this.courseSynopsis,
type_id: this.typeId,
course_type:this.courseId,
course_cover:JSON.stringify(this.attachmentJson),
course_teacher:this.courseTeacher,
course_teaching_time:this.courseTeachingTime,
course_teaching_place:this.courseTeachingPlace,
course_teaching_object:this.courseTeachingObject,
create_person_id: this.BaseConfig.userInfo.person_id,
org_id: this.BaseConfig.person_info_my.bureau_id,
}
if(this.$props.planId && this.$props.planId !== ""){
param.id = this.$props.planId;
}
this.InterfaceConfig.callInterface([{
url: InterConfig.saveSchoolCourse.url,
params: param,
method: InterConfig.saveSchoolCourse.method,
isTestLogin: InterConfig.saveSchoolCourse.isTestLogin,
}], (result) => {
let resData = result[0].data;
if (resData.code === 2000) {
Modal.success({
title: "操作成功",
content: "",
centered: true
});
this.$emit("toListPage")
}
})
},
cancel: function () {
this.$emit("cancel");
}
},
components: {
ASpin: Spin,
AButton: Button,
ACascader: Cascader,
AInput: Input,
AInputNumber: InputNumber,
AModal: Modal,
ASelect: Select,
ASelectOption: Select.Option,
ATextarea,
Upload,
ATimePicker: TimePicker,
ADatePicker: DatePicker
}
}
</script>
<style scoped lang="scss">
.course-info-content-style {
width: 100%;
height: auto;
font-size: 1rem;
color: black;
.add-record-row-style {
width: 50%;
min-height: 3rem;
margin: 0.5rem auto;
display: flex;
.li-box {
min-height: 3rem;
line-height: 3rem;
.must-option-style {
color: red;
margin-right: 0.2rem;
}
}
.li-left {
width: 20%;
text-align: right;
}
.li-right {
width: 80%;
.person-list-content-style {
width: 700px;
height: 500px;
background-color: #ebebeb;
.list-content-style {
width: 100%;
height: 100%;
display: flex;
flex-wrap: wrap;
.honor-person-info {
width: auto;
height: 180px;
border: 1px solid #31a8fa;
margin: 0.5rem 0 0 0.5rem;
display: flex;
flex-direction: column;
justify-content: center;
.person-name {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-align: center;
}
/deep/ .img-style {
margin-right: 0 !important;
}
}
}
}
.ant-select {
width: 100px;
}
.no-border-input-style {
border-top: 0 !important;
border-left: 0 !important;
border-right: 0 !important;
}
.photo-container-style {
display: flex;
align-items: center;
align-content: center;
justify-content: center;
justify-items: center;
width: 120px !important;
border: 1px solid #e5e5e5;
height: 160px;
background-color: white;
position: relative;
.operate-class {
position: absolute;
bottom: 0.1rem;
color: #31a8fa;
font-size: 1rem;
cursor: pointer;
display: none;
}
.photo-size-style {
display: flex;
align-items: center;
align-content: center;
justify-items: center;
justify-content: center;
}
}
.edit-style {
&
:hover {
.operate-class {
display: inline-block;
}
}
}
}
}
.button-row-style {
width: 50%;
margin: auto;
display: flex;
justify-content: center;
align-items: center;
.button-style {
margin-left: 0.5rem;
}
}
}
</style>

@ -265,6 +265,14 @@ export const systemCenterConfig = [
},
{
id: "teaching-2",
title: "校本课程",
path: '/workBench/servicePlatform/schoolBaseCourse/:id/:name/:menuId',
name: 'schoolBaseCourse',
component: () => import("./servicePlatform/teachingAdmin/schoolBaseCourse.vue"),
props: true,
},
{
id: "teaching-3",
title: "科研活动",
path: '/workBench/servicePlatform/scienceActivity/:id/:name/:menuId',
name: 'scienceActivity',
@ -272,7 +280,7 @@ export const systemCenterConfig = [
props: true,
},
{
id: "teaching-3",
id: "teaching-4",
title: "活动分类",
path: '/workBench/servicePlatform/activityCategory/:id/:name/:menuId',
name: 'activityCategory',

@ -15,7 +15,8 @@
<div class="special-content-style">
<div class="top-style">
<div class="box-style">
<img src="../../assets/images/teachingCenter/communityActivities.svg" style="width: 20px;height: 20px"/>
<img src="../../assets/images/teachingCenter/communityActivities.svg"
style="width: 20px;height: 20px"/>
<span>社团风采</span>
</div>
<div class="box-right-style"></div>
@ -23,10 +24,12 @@
<div class="content-style">
<div class="item-content-style">
<div class="item-row-style item-title-style">
<img src="../../assets/images/teachingCenter/special.svg" style="width: 16px;height: 16px"/>科技社团
<img src="../../assets/images/teachingCenter/special.svg"
style="width: 16px;height: 16px"/>科技社团
</div>
<div class="item-scroll-content-style">
<vue-scroll key="special_scroll" class="table-boday-style" :ops="listScroll" style="height: 100%">
<vue-scroll key="special_scroll" class="table-boday-style" :ops="listScroll"
style="height: 100%">
<div class="item-row-style" v-for="item in specialList">
{{item.title}}
</div>
@ -35,10 +38,12 @@
</div>
<div class="item-content-style">
<div class="item-row-style item-title-style">
<img src="../../assets/images/teachingCenter/art.svg" style="width: 16px;height: 16px"/>艺术社团
<img src="../../assets/images/teachingCenter/art.svg"
style="width: 16px;height: 16px"/>艺术社团
</div>
<div class="item-scroll-content-style">
<vue-scroll key="art_scroll" class="table-boday-style" :ops="listScroll" style="height: 100%">
<vue-scroll key="art_scroll" class="table-boday-style" :ops="listScroll"
style="height: 100%">
<div class="item-row-style" v-for="item in artList">
{{item.title}}
</div>
@ -47,10 +52,12 @@
</div>
<div class="item-content-style">
<div class="item-row-style item-title-style">
<img src="../../assets/images/teachingCenter/sports.svg" style="width: 16px;height: 16px"/>体育社团
<img src="../../assets/images/teachingCenter/sports.svg"
style="width: 16px;height: 16px"/>体育社团
</div>
<div class="item-scroll-content-style">
<vue-scroll key="sports_scroll" class="table-boday-style" :ops="listScroll" style="height: 100%">
<vue-scroll key="sports_scroll" class="table-boday-style" :ops="listScroll"
style="height: 100%">
<div class="item-row-style" v-for="item in sportsList">
{{item.title}}
</div>
@ -73,12 +80,77 @@
</a-tab-pane>
<a-tab-pane :key="2" tab="Tab 2">
<div class="labour-content-style">
<div class="labour-col-box-style col-01-style">
<vue-scroll key="labour01_scroll" class="table-boday-style" :ops="listScroll"
style="height: 100%">
<div class="item-row-style" v-for="item in labourList1">
{{item.title}}
</div>
</vue-scroll>
</div>
<div class="labour-col-box-style col-02-style">
<vue-scroll key="labour02_scroll" class="table-boday-style" :ops="listScroll"
style="height: 100%">
<div class="item-row-style" v-for="item in labourList2">
{{item.title}}
</div>
</vue-scroll>
</div>
<div class="labour-col-box-style col-03-style">
<vue-scroll key="labour03_scroll" class="table-boday-style" :ops="listScroll"
style="height: 100%">
<div class="item-row-style" v-for="item in labourList3">
{{item.title}}
</div>
</vue-scroll>
</div>
<div class="labour-col-box-style col-04-style">
<vue-scroll key="labour04_scroll" class="table-boday-style" :ops="listScroll"
style="height: 100%">
<div class="item-row-style" v-for="item in labourList4">
{{item.title}}
</div>
</vue-scroll>
</div>
</div>
</a-tab-pane>
<a-tab-pane :key="3" tab="Tab 3">
<div class="politics-content-style">
<div class="left-content-style">
<vue-scroll key="labour04_scroll" class="table-boday-style" :ops="listScroll"
style="height: 100%">
<div class="item-row-style" v-for="item in schoolBaseList" @click="changePolitics(item)">
{{'《' + item.title + '》'}}
</div>
</vue-scroll>
</div>
<div class="center-content-style">
<div class="title-style">
<span>{{'《' + currentBaseData.title + '》'}}</span>
</div>
<!--<img-preview :imgObj="imgList[0]"/>-->
<div class="img-box-style">
<img src="../../assets/images/teachingCenter/curriculum.png" style="width: 100%;height: 100%"/>
</div>
</div>
<div class="right-content-style">
<a-row class="item-row-style">
<a-col class="item-col-style" :span="12">主讲教师</a-col>
<a-col class="item-col-style" :span="12">{{currentBaseData.teacherName}}</a-col>
</a-row>
<a-row class="item-row-style" style="margin-top: 5px">
<a-col class="item-col-style" :span="12">授课时间</a-col>
<a-col class="item-col-style" :span="12">{{currentBaseData.teachingTime}}</a-col>
</a-row>
<a-row class="item-row-style" style="margin-top: 5px">
<a-col class="item-col-style" :span="12">授课地点</a-col>
<a-col class="item-col-style" :span="12">{{currentBaseData.teachingPlace}}</a-col>
</a-row>
<a-row class="item-row-style" style="margin-top: 5px">
<a-col class="item-col-style" :span="12">授课对象</a-col>
<a-col class="item-col-style" :span="12">{{currentBaseData.teachingObject}}</a-col>
</a-row>
</div>
</div>
</a-tab-pane>
</a-tabs>
@ -88,10 +160,11 @@
</template>
<script>
/*
* 校本课程
* */
* 校本课程
* */
import CommonBox from '../secondPages/commonBox.vue';
import {Icon, Spin, List, Empty, Tabs} from 'ant-design-vue';
import {Icon, Spin, List, Empty, Tabs,Row,Col} from 'ant-design-vue';
import ImgPreview from '../../common/imgPreview.vue';
export default{
data(){
return {
@ -99,11 +172,29 @@
listScroll: this.StaticParams.scrollOption,
selectType: 1,//1 2
paneKey: 1,
specialList:[{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"}],
artList:[{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"}],
sportsList:[{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"},{title:"机器人社团"}]
specialList: [{title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}],
artList: [{title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}],
sportsList: [{title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}, {title: "机器人社团"}],
labourList1: [{title: "体会劳动光荣"}, {title: "体会劳动光荣"}, {title: "体会劳动光荣"}, {title: "体会劳动光荣"}, {title: "体会劳动光荣"}],
labourList2: [{title: "体会劳动光荣"}, {title: "体会劳动光荣"}, {title: "体会劳动光荣"}, {title: "体会劳动光荣"}, {title: "体会劳动光荣"}],
labourList3: [{title: "体会劳动光荣"}, {title: "体会劳动光荣"}, {title: "体会劳动光荣"}, {title: "体会劳动光荣"}, {title: "体会劳动光荣"}],
labourList4: [{title: "体会劳动光荣"}, {title: "体会劳动光荣"}, {title: "体会劳动光荣"}, {title: "体会劳动光荣"}, {title: "体会劳动光荣"}],
schoolBaseList: [
{id:1,title:"心灵感悟1",teacherName:"刘老师",teachingTime:"2022年5月5日第八节",teachingPlace:"初中部XX楼一楼大讲堂",teachingObject:"初一年级全体学生"},
{id:2,title:"心灵感悟2",teacherName:"刘老师",teachingTime:"2022年5月5日第八节",teachingPlace:"初中部XX楼一楼大讲堂",teachingObject:"初一年级全体学生"},
{id:3,title:"心灵感悟3",teacherName:"刘老师",teachingTime:"2022年5月5日第八节",teachingPlace:"初中部XX楼一楼大讲堂",teachingObject:"初一年级全体学生"},
{id:4,title:"心灵感悟4",teacherName:"刘老师",teachingTime:"2022年5月5日第八节",teachingPlace:"初中部XX楼一楼大讲堂",teachingObject:"初一年级全体学生"},
{id:5,title:"心灵感悟5",teacherName:"刘老师",teachingTime:"2022年5月5日第八节",teachingPlace:"初中部XX楼一楼大讲堂",teachingObject:"初一年级全体学生"},
{id:6,title:"心灵感悟6",teacherName:"刘老师",teachingTime:"2022年5月5日第八节",teachingPlace:"初中部XX楼一楼大讲堂",teachingObject:"初一年级全体学生"},
{id:7,title:"心灵感悟7",teacherName:"刘老师",teachingTime:"2022年5月5日第八节",teachingPlace:"初中部XX楼一楼大讲堂",teachingObject:"初一年级全体学生"},
{id:8,title:"心灵感悟8",teacherName:"刘老师",teachingTime:"2022年5月5日第八节",teachingPlace:"初中部XX楼一楼大讲堂",teachingObject:"初一年级全体学生"},
],
currentBaseData:{}
}
},
mounted(){
this.currentBaseData = this.schoolBaseList[0];
},
methods: {
typeChange: function (type) {
if (this.selectType !== type) {
@ -111,17 +202,24 @@
this.paneKey = type;
}
},
changePolitics:function (item) {
this.currentBaseData = item;
}
},
components:{
components: {
CommonBox,
ASpin: Spin,
ATabs: Tabs,
ATabPane: Tabs.TabPane,
ImgPreview,
ARow:Row,
ACol:Col
}
}
</script>
<style scoped lang="scss">
@import "../../assets/scss/style";
.teaching-center-school-base-course-style {
width: 100%;
height: 320px !important;
@ -169,49 +267,50 @@
.ant-tabs-tabpane {
width: 100%;
height: 100%;
.special-content-style{
.special-content-style {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.top-style{
.top-style {
width: 100%;
height: 30px;
display: flex;
align-items: center;
.box-style{
.box-style {
width: 120px;
height: 25px;
background: -webkit-linear-gradient(to right,#1459c1, #031b5c); /* Safari 5.1 - 6.0 */
background: -o-linear-gradient(to right,#1459c1, #031b5c); /* Opera 11.1 - 12.0 */
background: -moz-linear-gradient(to right,#1459c1, #031b5c); /* Firefox 3.6 - 15 */
background: linear-gradient(to right,#1459c1, #031b5c); /* 标准的语法(必须放在最后) */
background: -webkit-linear-gradient(to right, #1459c1, #031b5c); /* Safari 5.1 - 6.0 */
background: -o-linear-gradient(to right, #1459c1, #031b5c); /* Opera 11.1 - 12.0 */
background: -moz-linear-gradient(to right, #1459c1, #031b5c); /* Firefox 3.6 - 15 */
background: linear-gradient(to right, #1459c1, #031b5c); /* 标准的语法(必须放在最后) */
display: flex;
align-items: center;
span{
span {
color: $color-default-bright;
}
}
.box-right-style{
width: 0; height: 0;
.box-right-style {
width: 0;
height: 0;
border-color: transparent #031b5c; /*上下颜色 左右颜色*/
border-width: 0 0 25px 25px;
border-style: solid;
}
}
.content-style{
.content-style {
width: 100%;
height: calc(100% - 30px);
display: flex;
justify-content: space-between;
.item-content-style{
.item-content-style {
width: 100px;
height: 100%;
border: 1px dashed $color-default-bright;
border-radius: 5px;
display: flex;
flex-direction: column;
.item-row-style{
.item-row-style {
width: 100%;
height: 30px;
border-bottom: 1px dashed white;
@ -220,29 +319,29 @@
align-items: center;
color: white;
}
.item-title-style{
.item-title-style {
color: #F59A23;
}
.item-scroll-content-style{
.item-scroll-content-style {
width: 100%;
height: calc(100% - 30px);
}
}
.item-tips-style{
.item-tips-style {
width: 200px;
height: 100%;
/* border: 1px dashed $color-default-bright;*/
/* border: 1px dashed $color-default-bright;*/
border-radius: 5px;
display: flex;
justify-content: center;
position: relative;
.point-style{
.point-style {
width: 10px;
height: 10px;
border-radius: 10px;
background-color: $color-default-bright;
}
.left-line-style{
.left-line-style {
width: 50px;
height: 2px;
background-color: $color-default-bright;
@ -251,7 +350,7 @@
top: 25px;
left: 55px;
}
.right-line-style{
.right-line-style {
width: 50px;
height: 2px;
background-color: $color-default-bright;
@ -260,7 +359,7 @@
top: 25px;
left: 92px;
}
.text-box-style{
.text-box-style {
width: 100%;
height: 190px;
border: 1px dashed $color-default-bright;
@ -270,12 +369,12 @@
display: flex;
flex-direction: column;
padding: 5px;
.text-title-style{
.text-title-style {
width: 100%;
height: 20px;
color: #F59A23;
}
.text-content-style{
.text-content-style {
width: 100%;
height: calc(100% - 20px);
color: $color-default-bright;
@ -287,15 +386,133 @@
}
}
}
.labour-content-style{
.labour-content-style {
width: 100%;
height: 100%;
display: flex;
justify-content: space-between;
.labour-col-box-style {
width: 20%;
height: 100%;
.item-row-style {
width: 100%;
height: 40px;
border: 1px dashed #facd91;
border-radius: 5px;
margin-bottom: 10px;
display: flex;
justify-content: center;
align-items: center;
color: white;
&:hover {
background-color: #facd91;
color: black;
}
}
}
.col-01-style {
border-top: 1px dashed #bfbf00;
border-left: 1px dashed #bfbf00;
.item-row-style {
border: 1px dashed #facd91;
color: white;
&:hover {
background-color: #facd91;
color: black;
}
}
}
.col-02-style {
border-top: 1px dashed #ec808d;
border-left: 1px dashed #ec808d;
.item-row-style {
border: 1px dashed #ec808d;
color: white;
&:hover {
background-color: #ec808d;
color: black;
}
}
}
.col-03-style {
border-top: 1px dashed #f59a23;
border-left: 1px dashed #f59a23;
.item-row-style {
border: 1px dashed #facd91;
color: white;
&:hover {
background-color: #facd91;
color: black;
}
}
}
.col-04-style {
border-top: 1px dashed #70b603;
border-left: 1px dashed #70b603;
.item-row-style {
border: 1px dashed #caf982;
color: white;
&:hover {
background-color: #caf982;
color: black;
}
}
}
}
.politics-content-style{
.politics-content-style {
width: 100%;
height: 100%;
display: flex;
.left-content-style {
width: 30%;
height: 100%;
display: flex;
flex-direction: column;
.item-row-style{
width: 80%;
height: 40px;
border: 1px solid $color-default-bright;
border-radius: 5px;
display: flex;
justify-content: center;
align-items: center;
color: white;
margin-bottom: 10px;
cursor: pointer;
}
}
.center-content-style {
width: 40%;
height: 100%;
display: flex;
flex-direction: column;
padding: 10px 0;
.title-style{
width: 100%;
height: 40px;
color: white;
}
.img-box-style{
width: 100%;
height: calc(100% - 40px);
}
}
.right-content-style {
width: 30%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 50px 5px 0 5px;
.item-row-style{
width: 100%;
height: 40px;
.item-col-style{
color: white;
}
}
}
}
}
}

@ -1,35 +1,192 @@
<template>
<CommonBox title="科研活动" class="teaching-center-science-activities-style">
<a-spin class="science-activities-box-style" :spinning="spinning">
<div class="tab-change-style">
<div :class="'item-box-style ' + (selectType === 1?'select-item-style':'')" @click="changeItem(1)">
<div class="img-box-style">
<img src="../../assets/images/teachingCenter/img01.png" style="width: 30px;height: 30px"/>
</div>
<div class="title-style">教学大赛</div>
</div>
<div :class="'item-box-style ' + (selectType === 2?'select-item-style':'')" @click="changeItem(2)">
<div class="img-box-style">
<img src="../../assets/images/teachingCenter/img02.png" style="width: 30px;height: 30px"/>
</div>
<div class="title-style">论文</div>
</div>
<div :class="'item-box-style ' + (selectType === 3?'select-item-style':'')" @click="changeItem(3)">
<div class="img-box-style">
<img src="../../assets/images/teachingCenter/img03.png" style="width: 30px;height: 30px"/>
</div>
<div class="title-style">课题</div>
</div>
<div :class="'item-box-style ' + (selectType === 4?'select-item-style':'')" @click="changeItem(4)">
<div class="img-box-style">
<img src="../../assets/images/teachingCenter/img04.png" style="width: 30px;height: 30px"/>
</div>
<div class="title-style">著作</div>
</div>
</div>
<div class="time-search-style">
<date-choose/>
</div>
<div class="data-list-content-style">
<a-row class="item-row-style header-row-style">
<a-col :span="10" class="item-col-style center-col">名称</a-col>
<a-col :span="4" class="item-col-style center-col">人员</a-col>
<a-col :span="6" class="item-col-style center-col">类别</a-col>
<a-col :span="4" class="item-col-style">等级</a-col>
</a-row>
<vue-scroll key="science_scroll" class="table-boday-style" :ops="listScroll"
style="height: calc(100% - 40px)">
<a-row v-for="item,index in dataList" :key="'science_' + index" class="item-row-style">
<a-col :span="10" class="item-col-style center-col first-col">{{item.title}}</a-col>
<a-col :span="4" class="item-col-style center-col">{{item.personName}}</a-col>
<a-col :span="6" class="item-col-style center-col">{{item.type}}</a-col>
<a-col :span="4" class="item-col-style last-col">{{item.level}}</a-col>
</a-row>
</vue-scroll>
</div>
</a-spin>
</CommonBox>
</template>
<script>
/*
* 科研活动
* */
* 科研活动
* */
import CommonBox from '../secondPages/commonBox.vue';
import {Icon, Spin, List, Empty} from 'ant-design-vue';
import {Icon, Spin, List, Empty, Row, Col} from 'ant-design-vue';
import DateChoose from '../adminCenter/moduleCom/oa/common/dateChoose.vue';
export default{
data(){
return {
spinning: false,
listScroll: this.StaticParams.scrollOption,
selectType: 1,//1 2 3 4
paneKey: 1,
dataList:[
{title:"2021年小学一年级教学大赛",personName:"张丽敏",type:"教学大赛",level:"市级"},
{title:"2021年小学一年级教学大赛",personName:"张丽敏",type:"教学大赛",level:"市级"},
{title:"2021年小学一年级教学大赛",personName:"张丽敏",type:"教学大赛",level:"市级"},
{title:"2021年小学一年级教学大赛",personName:"张丽敏",type:"教学大赛",level:"市级"},
{title:"2021年小学一年级教学大赛",personName:"张丽敏",type:"教学大赛",level:"市级"},
{title:"2021年小学一年级教学大赛",personName:"张丽敏",type:"教学大赛",level:"市级"},
{title:"2021年小学一年级教学大赛",personName:"张丽敏",type:"教学大赛",level:"市级"},
{title:"2021年小学一年级教学大赛",personName:"张丽敏",type:"教学大赛",level:"市级"},
{title:"2021年小学一年级教学大赛",personName:"张丽敏",type:"教学大赛",level:"市级"},
{title:"2021年小学一年级教学大赛",personName:"张丽敏",type:"教学大赛",level:"市级"},
{title:"2021年小学一年级教学大赛",personName:"张丽敏",type:"教学大赛",level:"市级"},
{title:"2021年小学一年级教学大赛",personName:"张丽敏",type:"教学大赛",level:"市级"},
]
}
},
methods: {
changeItem: function (type) {
this.selectType = type;
}
},
components:{
components: {
CommonBox,
ASpin: Spin,
DateChoose,
ARow: Row,
ACol: Col
}
}
</script>
<style scoped lang="scss">
@import "../../assets/scss/style";
.teaching-center-science-activities-style {
width: 100%;
height: 420px !important;
position: relative;
margin-top: 50px;
.science-activities-box-style {
width: 100%;
height: 100%;
/deep/ .ant-spin-container {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.tab-change-style {
width: 100%;
height: 80px;
display: flex;
justify-content: space-between;
.item-box-style {
width: 20%;
height: 80px;
background-color: #414d7f;
border-radius: 5px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
cursor: pointer;
.img-box-style {
width: 50px;
height: 50px;
border-radius: 50px;
background-color: #2c4876;
display: flex;
justify-content: center;
align-items: center;
}
.title-style {
color: white;
margin-top: 5px;
}
}
.select-item-style {
background-color: #183b6d;
}
}
.time-search-style {
width: 100%;
height: 30px;
display: flex;
justify-content: center;
align-items: center;
.date-choose-div {
width: 100%;
display: flex;
justify-content: center;
align-items: center;
}
}
.data-list-content-style {
width: 100%;
height: calc(100% - 110px);
display: flex;
flex-direction: column;
.item-row-style{
width: 100%;
height: 30px;
border: 1px solid $color-default-bright;
display: flex;
align-items: center;
.item-col-style{
text-align: center;
color: white;
}
.center-col{
border-right: 1px solid $color-default-bright;
}
.first-col{
color: $color-default-bright;
}
.last-col{
color: #e57f30;
}
}
.header-row-style{
height: 40px;
background-color: #18356a;
}
}
}
}
}
</style>

@ -1,14 +1,26 @@
<template>
<CommonBox title="教研活动" class="teaching-center-teaching-activities-style">
<a-spin class="teaching-activities-box-style" :spinning="spinning">
<div class="data-content-style">
<div class="item-style" v-for="item,index in dataList" :key="'activities_'+index">
<div class="left-style">
<div class="title-style">{{'《' + item.title + '》'}}</div>
<div class="time-style">
<img src="../../assets/images/teachingCenter/time.svg" style="width: 20px;height: 20px"/>
{{item.time}}</div>
</div>
<div class="right-style">
<img src="../../assets/images/teachingCenter/book.svg" style="width: 100%;height: 100%"/>
</div>
</div>
</div>
</a-spin>
</CommonBox>
</template>
<script>
/*
* 教研活动
* */
* 教研活动
* */
import CommonBox from '../secondPages/commonBox.vue';
import {Icon, Spin, List, Empty} from 'ant-design-vue';
export default{
@ -16,9 +28,19 @@
return {
spinning: false,
listScroll: this.StaticParams.scrollOption,
dataList: [
{title: "月亮的味道", time: "2021-11-24"},
{title: "月亮的味道", time: "2021-11-24"},
{title: "月亮的味道", time: "2021-11-24"},
{title: "月亮的味道", time: "2021-11-24"},
{title: "月亮的味道", time: "2021-11-24"},
{title: "月亮的味道", time: "2021-11-24"},
{title: "月亮的味道", time: "2021-11-24"},
{title: "月亮的味道", time: "2021-11-24"},
]
}
},
components:{
components: {
CommonBox,
ASpin: Spin,
}
@ -26,9 +48,57 @@
</script>
<style scoped lang="scss">
@import "../../assets/scss/style";
.teaching-center-teaching-activities-style {
width: 100%;
height: 420px !important;
position: relative;
.teaching-activities-box-style {
width: 100%;
height: 100%;
/deep/ .ant-spin-container {
width: 100%;
height: 100%;
.data-content-style {
width: 100%;
height: 100%;
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: space-between;
.item-style {
width: calc(50% - 10px);
height: 70px;
border: 1px solid $color-default-bright;
border-radius: 5px;
display: flex;
.left-style {
width: calc(100% - 70px);
height: 100%;
display: flex;
flex-direction: column;
.title-style{
width: 100%;
height: 50%;
color: $color-default-bright;
display: flex;
align-items: center;
}
.time-style{
width: 100%;
height: 50%;
color: #58a8d1;
display: flex;
align-items: center;
}
}
.right-style {
width: 70px;
height: 100%;
}
}
}
}
}
}
</style>

@ -1,35 +1,143 @@
<template>
<CommonBox title="考试安排" class="teaching-center-test-arrangement-style">
<a-spin class="test-arrangement-box-style" :spinning="spinning">
<div class="query-center-style">
<a-select style="width:150px;margin-left: 10px" :value="gradeId" @change="gradeChange">
<a-select-option v-for="item in gradeList" :key="item.id" :value="item.id">
{{ item.value }}
</a-select-option>
</a-select>
</div>
<div class="data-content-style">
<a-row class="row-style header-row">
<a-col :span="4" class="col-style header-col">年级</a-col>
<a-col :span="10" class="col-style header-col">考试名称</a-col>
<a-col :span="10" class="col-style header-col">考试时间</a-col>
</a-row>
<vue-scroll class="table-boday-style" :ops="listScroll"
style="height:calc(100% - 40px)">
<a-row class="row-style body-row" v-for="item,index in dataList" :key="'data_'+index">
<a-col :span="4" class="col-style left-col">{{item.gradeName}}</a-col>
<a-col :span="10" class="col-style left-col">{{item.testTitle}}</a-col>
<a-col :span="10" class="col-style">{{item.testTime}}</a-col>
</a-row>
</vue-scroll>
</div>
</a-spin>
</CommonBox>
</template>
<script>
/*
* 考试安排
* */
* 考试安排
* */
import CommonBox from '../secondPages/commonBox.vue';
import {Icon, Spin, List, Empty} from 'ant-design-vue';
import {Icon, Spin, List, Empty, Select,Row,Col} from 'ant-design-vue';
export default{
data(){
return {
spinning: false,
listScroll: this.StaticParams.scrollOption,
gradeList: [{id: 1, value: '一年级'}, {id: 2, value: '二年级'}, {id: 3, value: '三年级'}, {
id: 4,
value: '四年级'
}, {id: 5, value: '五年级'}, {id: 6, value: '六年级'}],
gradeId: 1,
dataList:[
{gradeName:"一年级",testTitle:"2021年上学期第一次月考",testTime:"2021/10/15~2021/10/16"},
{gradeName:"一年级",testTitle:"2021年上学期第一次月考",testTime:"2021/10/15~2021/10/16"},
{gradeName:"一年级",testTitle:"2021年上学期第一次月考",testTime:"2021/10/15~2021/10/16"},
{gradeName:"一年级",testTitle:"2021年上学期第一次月考",testTime:"2021/10/15~2021/10/16"},
{gradeName:"一年级",testTitle:"2021年上学期第一次月考",testTime:"2021/10/15~2021/10/16"},
{gradeName:"一年级",testTitle:"2021年上学期第一次月考",testTime:"2021/10/15~2021/10/16"},
{gradeName:"一年级",testTitle:"2021年上学期第一次月考",testTime:"2021/10/15~2021/10/16"},
{gradeName:"一年级",testTitle:"2021年上学期第一次月考",testTime:"2021/10/15~2021/10/16"},
{gradeName:"一年级",testTitle:"2021年上学期第一次月考",testTime:"2021/10/15~2021/10/16"},
{gradeName:"一年级",testTitle:"2021年上学期第一次月考",testTime:"2021/10/15~2021/10/16"},
{gradeName:"一年级",testTitle:"2021年上学期第一次月考",testTime:"2021/10/15~2021/10/16"},
{gradeName:"一年级",testTitle:"2021年上学期第一次月考",testTime:"2021/10/15~2021/10/16"}
]
}
},
components:{
methods:{
gradeChange: function (gradeId) {
if (this.gradeId !== gradeId) {
this.gradeId = gradeId;
}
},
},
components: {
CommonBox,
ASpin: Spin,
ASelect: Select,
ASelectOption: Select.Option,
ARow:Row,
ACol:Col
}
}
</script>
<style scoped lang="scss">
@import "../../assets/scss/style";
.teaching-center-test-arrangement-style {
width: 100%;
height: 520px !important;
position: relative;
margin-top: 50px;
.test-arrangement-box-style{
width: 100%;
height: 100%;
/deep/ .ant-spin-container{
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.query-center-style{
width: 100%;
height: 32px;
display: flex;
align-items: center;
.ant-select {
.ant-select-selection {
background-color: transparent;
color: white;
border: 1px solid #1379c8;
.ant-select-arrow {
color: white;
}
}
}
}
.data-content-style{
width: 100%;
height: calc(100% - 32px);
display: flex;
flex-direction: column;
.row-style{
width: 100%;
height: 40px;
display: flex;
align-items: center;
.col-style{
display: flex;
justify-content: center;
align-items: center;
}
.left-col{
border-right: 1px dashed white;
}
.header-col{
color: $color-default-bright;
font-size: 18px;
}
}
.header-row{
border-bottom: 2px solid $color-default-bright;
}
.body-row{
border-bottom: 1px dashed white;
}
}
}
}
}
</style>
Loading…
Cancel
Save