Commit 40add874 authored by 黄奎's avatar 黄奎
parents b89414d0 6cebe811
import request from '../../utils/request'
/**
* 获取当日排课计划
* @param {JSON参数} data
*/
export function getUseClassRoomList(data) {
return request({
url: '/ClassRoom/GetUseClassRoomList',
method: 'post',
data
})
}
/**
* 获取学校以及教室导航
* @param {JSON参数} data
*/
export function getSchoolAndRoomNav(data) {
return request({
url: '/ClassRoom/GetSchoolAndRoomList',
method: 'post',
data
})
}
......@@ -204,7 +204,7 @@
<script>
import {
import {
getSchoolDropdown,//获取班级下拉列表
getClassPage_ck
} from '../../api/school/index';//获取校区列表
......
......@@ -15,6 +15,44 @@
<q-input filled stack-label maxlength="20" :dense="false" v-model="objOption.RoomName" ref="RoomName"
class="col-12" label="教室名称" :rules="[val => !!val || '请填写教室名称']" />
</div>
<div class="row wrap">
<q-input filled stack-label :min="0" type="number" :dense="false" v-model.number="objOption.SeatNum" ref="SeatNum"
class="col-12" label="座位数" :rules="[val => !!val||val>=0 || '请填写座位数']" />
</div>
<div class="row wrap">
<el-time-select
class="q-mr-lg"
v-model="objOption.StartTime"
:picker-options="{
start: '00:00',
step: '00:05',
end: '23:55',
maxTime:objOption.EndTime
}"
placeholder="排班开始时间">
</el-time-select>
<el-time-select
v-model="objOption.EndTime"
:picker-options="{
start: '06:00',
step: '00:05',
end: '23:55',
minTime:objOption.StartTime
}"
placeholder="排班结束时间">
</el-time-select>
</div>
<div class="row wrap" style="padding-top:20px">
<q-uploader style="display: inline-block;height:320px; max-width: 100%;background-repeat:no-repeat"
:style="{'background-image':'url(' + objOption.RoomPicList + ')'}" max-files="1" hide-upload-btn
label="教室封面" :max-file-size="5*1024*1024" accept=".jpg, image/*" auto-upload
:factory="uploadFile" >
</q-uploader>
</div>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white">
......@@ -32,7 +70,9 @@
quertClassRoomInfo,
saveClassRoom
} from '../../../api/school/index'
import {
UploadSelfFile,
} from '../../../api/common/common'
export default {
props: {
saveObj: {
......@@ -48,6 +88,10 @@
RoomName: "", //教室名称
School_Id: 0, //校区编号
Status: -1, //状态
StartTime:"06:00",//排班开始时间
EndTime:"",//排班结束时间
SeatNum:0,//座位数
RoomPicList:[],//教室图片
},
optionTitle: "",
schoolList: [],
......@@ -71,13 +115,23 @@
this.objOption.RoomId = res.Data.RoomId;
this.objOption.RoomName = res.Data.RoomName;
this.objOption.School_Id = res.Data.School_Id;
this.objOption.StartTime=res.Data.StartTime||"06:00";//排班开始时间
this.objOption.EndTime=res.Data.EndTime||"";//排班结束时间
this.objOption.SeatNum=res.Data.SeatNum;//座位数
this.objOption.RoomPicList=res.Data.RoomPic;//教室图片
}
console.log(this.objOption)
});
} else {
this.optionTitle = "新增教室";
this.objOption.RoomId = 0;
this.objOption.RoomName = "";
this.objOption.School_Id = 0;
this.objOption.StartTime="06:00";//排班开始时间
this.objOption.EndTime="";//排班结束时间
this.objOption.SeatNum=0;//座位数
this.objOption.RoomPicList=[];//教室图片
console.log(2,this.objOption)
}
},
//获取校区列表
......@@ -100,6 +154,22 @@
this.persistent = false
},
saveClassRoom() {
if(!this.objOption.StartTime){
this.$q.notify({
type: 'negative',
position: "top",
message: `请选择排班开始时间`
})
return
}
if(!this.objOption.EndTime){
this.$q.notify({
type: 'negative',
position: "top",
message: `请选择排班结束时间`
})
return
}
this.saveLoading = true
this.$refs.School_Id.validate()
this.$refs.RoomName.validate()
......@@ -107,6 +177,9 @@
!this.$refs.School_Id.hasError &&
!this.$refs.RoomName.hasError
) {
if (!Array.isArray(this.objOption.RoomPicList)) {
this.objOption.RoomPicList=[this.objOption.RoomPicList]
}
saveClassRoom(this.objOption).then(res => {
this.saveLoading = false
this.$q.notify({
......@@ -125,10 +198,46 @@
this.saveLoading = false
}
},
onRejected(rejectedEntries) {
this.$q.notify({
type: 'negative',
position: "top",
message: `文件验证失败,请重新上传`
})
},
uploadFile(files) {
UploadSelfFile('studentIcon', files[0], res => {
if (res.Code == 1) {
this.objOption.RoomPicList = res.FileUrl;
}
})
},
}
}
</script>
<style>
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 143px;
height: 82px;
line-height: 82px;
text-align: center;
}
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
._delete_img{position: absolute;top: 0px;height:82px;width:143px;line-height: 34px;text-align: center;background-color: rgba(2, 2, 2, 0.6);display: inherit;opacity: 0;transition: all linear .5s}
._delete_img i.iconfont{display: inline-block;width: 32px;height: 32px;border-radius: 50%;color: #E95252 !important;background-color:rgba(251, 251, 251, 0.9); margin-top: 26px;}
._upload_box ul li{float: left;height:82px;width:143px;padding:0px 20px 20px 0;text-align: center;position: relative;cursor: pointer;margin-right: 10px;}
._upload_box ul li img{height:82px;width:143px;}
._upload_box ul li:hover ._delete_img{opacity: 1;}
._upload_tips{font-size: 12px;position: absolute;top: 71%;width: 100%;left: 0;text-align: center;color: #949494;}
</style>
<template>
<div class="page-body" v-loading="loading">
<div v-for="item in classdata" :key="item.Key" class="school-item">
<div class="school-name">{{item.SchoolName}}</div>
<div class="classroom-box">
<div v-for="(_item,_index) in item.RoomList" :key="item.RoomId" >
<div class="classroom-item q-mr-lg q-mb-lg" :class="{'classroom-item-noUse':_item.UserRate===1}">
<el-image class="classroom-img" :src="_item.RoomPicList[0]" fit="contain">
<div slot="error" class="image-slot">
<i class="el-icon-picture-outline"></i>
</div>
</el-image>
<div class="classroom-name">{{_item.RoomName}}
<!-- <img src="../../assets/images/classroom/warning.png" class="q-ml-sm" v-if="_item.warn">
<img src="../../assets/images/classroom/normal.png" class="q-ml-sm" v-if="!_item.warn"> -->
</div>
<q-knob
show-value
font-size="0.1rem"
v-model="_item.user"
size="50px"
:thickness="0.1"
color="primary"
track-color="grey-3"
class="q-ma-md classroom-user"
readonly
style="text-align: center"
>
{{ _item.UserRate}}%
<br/>
使用率
</q-knob>
<div class="classroom-info">
<q-carousel
v-model="_item.slide"
animated
:navigation="false"
height="75px"
class=" text-white shadow-1 rounded-borders"
arrows
control-color="grey-4"
control-text-color="primary"
control-type="regular"
>
<q-carousel-slide v-for="(slide,slideIndex) in _item.TimeList" :key="slideIndex" :name="slideIndex">
<div class="info-box" @click="goUrl">
<div class="time">{{ slide.StartTime }}</div>
<div class="info">{{slide.ClassName}}</div>
</div>
</q-carousel-slide>
</q-carousel>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import {
getUseClassRoomList
} from '../../api/classroom/index';
export default {
meta: {
title: "教室状态"
},
data() {
return {
classdata:[
{
SchoolName:"锦江校区一",
list:[
{
slide:0,
img:"",
classroom:'樱花教室',
user:80,
warn:0,
course:[{time:'09:30',info:"打开门面,把电视打开,打扫前台和每处卫生。"},{time:'09:30',info:"打开门面,把电视打开,打扫前台和每处卫生。"},{time:'12:30',info:"打开门面,把电视打开,打扫前台和每处卫生。"}]
},
]
}
],
loading: true,
};
},
mounted(){
this.getList();
},
methods:{
goUrl(){
this.$router.push({
path:"/classroom/useRecord",
query:{
}
})
},
getList() {
getUseClassRoomList({}).then(res => {
this.loading = false
if(res.Code===1){
res.Data.forEach(e => {
e.RoomList.forEach(_e=>{
_e.slide=0
})
});
this.classdata=res.Data
}
}).catch(() => {
this.loading = false;
})
},
}
};
</script>
<style lang="scss" scoped>
.school-item{
margin-bottom: 10px;
.school-name{
font-size: 16px;
font-family: Microsoft YaHei;
font-weight: bold;
color: #000000;
margin-bottom: 30px;
}
.classroom-box{
display: flex;
flex-wrap: wrap;
.classroom-item-noUse{
opacity:0.5;
}
.classroom-item{
width: 390px;
height: 235px;
background: #FFFFFF;
border: 1px solid #EBEBEB;
box-shadow: 0px 1px 1px 0px #E4E7FB;
border-radius: 16px;
position: relative;
overflow: hidden;
.classroom-img{
display: block;
width: 390px;
height: 160px;
border-radius: 16px;
background-color: #333;
overflow: hidden;
}
.classroom-name{
position: absolute;
top: 20px;
left: 20px;
z-index: 5999;
font-size: 20px;
font-family: PingFang SC;
font-weight: 800;
color: #FFFFFF;
display: flex;
align-items: center;
}
.classroom-user{
position: absolute;
top: 10px;
right: 10px;
z-index: 5999;
color: #FFFFFF;
}
.classroom-info{
width: 390px;
height: 75px;
// background-color: tomato;
.info-box{
height: 43px;
display: flex;
align-items: center;
justify-content: flex-start;
box-sizing: border-box;
padding: 0 40px;
.time{
font-size: 14px;
font-family: PingFang SC;
font-weight: bold;
color: #6D97FF;
margin-right: 10px;
}
.info{
// width: 225px;
height: 100%;
font-size: 14px;
font-family: PingFang SC;
display: flex;
align-items: center;
color: #000000;
}
}
}
}
}
}
</style>
<template>
<div class="">
<q-list style="width:180px;overflow:hidden;background-color: rgb(245, 246, 247);">
<template v-for="(x,i) in secondNavs">
<q-item :to="x.MenuUrl" clickable v-ripple :active="currentPath==x.MenuUrl" v-if="x.SubList.length==0"
:key="i">
<q-item-section avatar style="min-width:30px;">
<q-icon :name="x.MenuIcon" size="20px" />
</q-item-section>
<q-item-section>{{x.MenuName}}</q-item-section>
</q-item>
<q-expansion-item v-else :label="x.MenuName">
<q-item :to="y.MenuUrl" clickable v-ripple :active="currentPath==y.MenuUrl"
v-for="(y, yi) in x.SubList" :key="yi">
<q-item-section avatar style="padding-right:0;min-width:30px;">
<q-icon :name="y.MenuIcon" size="20px" />
</q-item-section>
<q-item-section>{{y.MenuName}}</q-item-section>
</q-item>
</q-expansion-item>
</template>
</q-list>
</div>
</template>
<script>
export default {
meta: {
title: "使用记录"
},
props:{
NavData:{
type:Array,
default:()=>{
[
{
MenuName:"总部",
MenuIcon:"",
MenuUrl:"",
SubList:[
{MenuName:"樱花教室",MenuUrl:"/",MenuIcon:""},
{MenuName:"菊花教室",MenuUrl:"/",MenuIcon:""}
]
}
]
}
}
},
watch: {
$route: {
handler: function (route) {
this.currentPath = route.path
},
immediate: true
},
},
data() {
return {
currentPath: "",
secondNavs:[
{
MenuName:"总部",
MenuIcon:"",
SubList:[
{MenuName:"樱花教室",MenuUrl:"",MenuIcon:""},
{MenuName:"菊花教室",MenuUrl:"",MenuIcon:""}
]
}
]
};
},
mounted(){
},
methods:{
}
};
</script>
<style lang="scss" scoped>
</style>
.comSummary .mainSummary {
width: 100%;
margin-top: 10px;
}
.comSummary .comSummary .query-box {
border: none;
}
.comSummary .summaryDate {
width: 100%;
height: 120px;
background-color: #f2f2f2;
border: 1px solid #e6e6e6;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
min-width: 1400px;
}
.comSummary .leftDay {
width: 60px;
height: 70px;
text-align: center;
border-radius: 4px;
overflow: hidden;
background-color: #fff;
margin: 10px 10px 10px 30px;
line-height: 38px;
color: #e95252;
border: 3px solid #4B4E4D;
}
.comSummary .leftDayTop {
width: 54px;
height: 27px;
background-color: #D56964;
color: #ffc6c6;
font-size: 12px;
position: relative;
text-align: center;
line-height: 30px;
border-bottom: 3px solid #4B4E4D;
}
.comSummary .rili {
position: absolute;
width: 6px;
height: 16px;
background-color: #fff;
border-radius: 20px;
border-top: 2px solid #666666;
border-bottom: 2px solid #666666;
}
.comSummary .LI1 {
left: 20px;
top: 18px;
}
.comSummary .LI2 {
left: 75px;
top: 18px;
}
.comSummary .yearCircle {
display: inline-block;
width: 5px;
height: 5px;
border-radius: 50%;
background-color: #ffc6c6;
margin: 0 5px 2px;
}
.comSummary .monthNum {
font-size: 20px;
}
.comSummary .monthLis {
font-size: 20px;
}
.comSummary .Arrow {
width: 24px;
height: 24px;
background-color: #cccccc;
color: #999999;
border-radius: 50%;
text-align: center;
line-height: 24px;
margin: auto;
}
.comSummary .Arrow:hover {
background-color: #999999;
color: #333;
cursor: pointer;
}
.comSummary .Daycontent {
width: 1400px;
height: 100%;
float: left;
}
.comSummary .teamList {
width: 100%;
height: 80px;
background: #fff;
padding: 10px;
}
.comSummary .teamList:nth-of-type(odd) {
background-color: #f2f2f2;
}
.comSummary .teamLeftInfo {
float: left;
width: 200px;
height: 100%;
}
.comSummary .tType {
width: 24px;
height: 24px;
color: #fff;
background-color: #e95252;
display: inline-block;
font-size: 14px;
border-radius: 8px;
text-align: center;
line-height: 24px;
margin-left: 10px;
}
.comSummary .TeamNum {
font-size: 14px;
color: #333333;
margin-left: 10px;
}
.comSummary .teamChild {
font-size: 12px;
margin: 5px 0 0 35px;
color: #666;
}
.comSummary .teamChild i {
color: #d9d9d9;
margin:0 10px 0 10px;
}
.comSummary .AddressIn {
width:50px;
color: #808080;
text-align:left;
margin:auto;
height:16px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
padding:0 3px;
margin-bottom:5px;
}
.comSummary .listInfo {
width: 50px;
text-align: left;
}
.comSummary .circleDiv {
height: 5px;
position: relative;
}
.comSummary .listName {
width: 50px;
overflow: hidden;
margin:auto;
text-overflow: ellipsis;
white-space: nowrap;
height: 20px;
padding:0 3px;
}
.comSummary .cir {
width: 12px;
height: 12px;
background-color: #47bf8c;
border-radius: 50%;
margin: auto;
cursor: pointer;
}
.comSummary .lineright {
position: absolute;
width: 38%;
height: 1px;
/* display: none; */
background-color: #d9d9d9;
top: -6px;
right: 0;
}
.comSummary .lineleft {
position: absolute;
width: 38%;
/* display: none; */
height: 1px;
background-color: #d9d9d9;
top: -6px;
left: 0;
}
.lineLeftList{
position: absolute;
width: 50%;
height: 1px;
background-color: #d9d9d9;
top: -18px;
left: 0;
}
.lineRightList{
position: absolute;
width: 50%;
height: 1px;
background-color: #d9d9d9;
top: -18px;
right: 0;
}
.comSummary .disNone{
display:none!important;
}
.comSummary .calendarList {
float: left;
width: 45px;
height: 100%;
text-align: center;
line-height: 38px;
}
.comSummary ._week {
font-size: 14px;
}
.comSummary ._day {
font-size: 24px;
}
.comSummary ._longli {
font-size: 12px;
color:#999999;
}
.comSummary .redType {
color: #e95252;
}
.comSummary .mainSummary {
width: 100%;
/* min-height: 500px; */
margin-top:30px;
overflow: auto;
}
.comSummary .summaryTable {
width:100%;
min-width: 1400px;
border-radius:4px;
background-color:#E6E6E6;
/* table-layout:fixed;word-break:break-all; */
}
.comSummary .summaryTable tr:nth-child(2n + 1) {
background-color: #fff;
}
.comSummary .summaryTable th {
width: 210px;
position:relative;
}
.comSummary .summaryTable th:first-child{
border-top-left-radius: 10px;
}
.comSummary .summaryTable th:last-child{
border-top-right-radius: 10px;
}
.comSummary .summaryTable td {
font-size: 12px;
overflow: hidden;
line-height: 16px;
position:relative;
vertical-align: top;
padding:10px 0 5px 0;
/* border-left:1px solid #fff;
border-right:1px solid #fff; */
}
.comdayListDiv{
height: 150px;overflow:auto;
}
.comdayListDiv::-webkit-scrollbar {
width: 4px;
height: 8px;
}
.comdayListDiv::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2);
border-radius: 4px;
background: #ededed;
}
.comdayListDiv::-webkit-scrollbar-thumb {
border-radius: 4px;
-webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2);
background: #c9c9c9;
}
.comSummary .mainSummary::-webkit-scrollbar {
width: 4px;
height: 8px;
}
.comSummary .mainSummary::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2);
border-radius: 4px;
background: #ededed;
}
.comSummary .mainSummary::-webkit-scrollbar-thumb {
border-radius: 4px;
-webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2);
background: #c9c9c9;
}
.comSummary .stateOne {
background-color: #409EFF;
}
.comSummary .stateTwo {
background-color: #47bf8c;
}
.comSummary .stateFour {
background-color: #cccccc;
}
._leTitle {
float: left;
font-size: 14px;
color: #333333;
margin:10px 0;
font-weight: bold;
}
._orderId {
float: right;
color: #069eda;
font-size: 14px;
margin-top:10px;
}
._biao {
float: left;
}
._biaoRight {
float: right;
width: 60px;
text-align: left;
}
._hotelName {
font-size: 12px;
color: #666666;
margin-top: 5px;
}
._hotelName i {
color: #d9d9d9;
font-size: 14px;
}
.comSummary .icon-yiqueren {
color: #32cc8a !important;
}
.comSummary .toQueren {
color: #ef5e5e !important;
}
.comSummary .icon-quxiao {
color: #cccccc !important;
}
._topInfo {
margin-bottom:10px;
}
._leftTy {
display: inline-block;
width: 3px;
height: 12px;
background-color: #e95252;
margin-right: 10px;
}
.TJtitle {
margin-left: 10px;
}
.dayListTable {
text-align: center;
font-size: 12px;
}
.summaryTable th {
cursor: pointer;
}
.summaryTable th:first-child{
/* width:180px; */
cursor: default;
}
.dayListTable td {
/* vertical-align: top; */
text-align: left;
}
.dayListTable i {
color: #d9d9d9;
margin-right: 3px;
font-size: 12px;
-webkit-transform: scale(0.9);
}
.dayListTable tr {
height: 25px;
line-height: 25px;
}
.dayListTable th {
background-color: #f2f2f2;
color: #333333;
height: 25px;
line-height: 25px;
}
._cityName{width:100px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
.htName{width:130px;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}
._monthDay span{display:inline-block;padding:2px 10px;line-height: 1;background:#e95252;color:#fff;border-radius:10px;}
.disNoneCir{display: none;}
.ckedTd{border-left:1px solid #E95252;border-right:1px solid #E95252;background-color:#fff;margin:0 1px 0 1px;}
.leftLine{position: absolute;left:0;top:0;width:1px; height:100%;background-color: #E95252;}
.rightLine{position: absolute;right:0;top:0;width:1px; height:100%;background-color: #E95252;}
\ No newline at end of file
This diff is collapsed.
<style>
@import "./css/comSummary.css";
</style>
<template>
<div class="flexOne comSummary">
<div class="mainSummary">
<table class="summaryTable" cellspacing="0">
<thead>
<th>
<div class="leftDay">
<div class="leftDayTop">
<!-- <span class="yearCircle"></span> -->
{{nowYear}}
<!-- <span class="yearCircle"></span> -->
<!-- <div class="rili LI1"></div>
<div class="rili LI2"></div> -->
</div>
<span class="monthNum">{{nowMonth}}</span>
<!-- <span class="monthLis">{{$t('pub.month')}}</span> -->
</div>
</th>
<th>
<div class="Arrow" @click="leftClick()">
<i class="iconfont icon-previewleft"></i>
</div>
</th>
<th v-for="(k,index) in Calendar" :key="k.subCode" :class="{'redType':k.Week=='日'||k.Week=='六','ckedTd':index==columnLine&&dataList!=''}" @click="getDayInfo(k.CurrentYear,k.CurrentMonth,k.CurrentDay)" @mouseover="columnsMouseOver(index)">
<div slot="reference">
<div class="_week">{{k.Week}}</div>
<div class="_monthDay" v-if="k.CurrentDay==1">
<span>{{k.CurrentMonthCn}}<br/>{{$t('pub.month')}}</span>
</div>
<div class="_day" v-else>{{k.CurrentDay}}</div>
<!-- <div class="_longli">{{k.LunarDayCn}}</div> -->
</div>
<div class="_lineSummary" v-if="index==columnLine&&dataList!=''"></div>
</th>
<th>
<div class="Arrow" @click="rightClick()">
<i class="iconfont icon-arrow-right"></i>
</div>
</th>
</thead>
</table>
</div>
</div>
</template>
<script>
import lunarCalendar from "./js/lunarCalendar"
export default {
data() {
return {
msg: {
StartDate: new Date().Format("yyyy-MM-dd"),
EndDate: ""
},
loading: true,
dataList: "",
tempDataList: [],
Calendar: "", //绑定数据的日历
CalendarDataArray: [], //存放数据的日历
infoList: "",
dayList: "",
nowYear: "",
nowMonth: "",
QStartDate: "",
QEndDate: "",
dayNum: 25, //默认加载天数
columnLine: -1
};
},
methods: {
//初始化日历数据
initData() {
let startYear = this.msg.StartDate.split("-")[0];
let startMonth = this.msg.StartDate.split("-")[1];
var data = lunarCalendar.initLunar(
startYear,
startMonth,
this.dayNum
);
this.CalendarDataArray = data;
this.QStartDate = data[0].CurrentDate;
this.QEndDate = data[data.length - 1].CurrentDate;
this.Calendar = this.CalendarDataArray;
},
// getList() {
// this.apipost(
// "ticketcoupons_get_GetTicketCouponsSummary",
// this.msg,
// res => {
// if (res.data.resultCode == 1) {
// this.dataList = res.data.data;
// this.tempDataList = res.data.data;
// }
// },
// null
// );
// },
//左侧点击
leftClick() {
var tempStartDate = lunarCalendar.changeLunar(this.QStartDate, -1);
this.CalendarDataArray.unshift(tempStartDate);
this.nowYear = tempStartDate.CurrentYear;
this.nowMonth = tempStartDate.CurrentMonth;
this.CalendarDataArray.pop(); //删除最后一个元素
this.Calendar = this.CalendarDataArray;
this.QStartDate = tempStartDate.CurrentDate;
this.QEndDate = this.CalendarDataArray[
this.CalendarDataArray.length - 1
].CurrentDate;
this.msg.StartDate = tempStartDate.CurrentDate;
this.msg.EndDate = this.CalendarDataArray[
this.CalendarDataArray.length - 1
].CurrentDate;
// this.getList();
},
//右侧点击事件
rightClick() {
var tempEndDate = lunarCalendar.changeLunar(this.QEndDate, 1);
this.CalendarDataArray.push(tempEndDate);
this.nowYear = tempEndDate.CurrentYear;
this.nowMonth = tempEndDate.CurrentMonth;
this.CalendarDataArray.shift(); //删除第一个元素
this.Calendar = this.CalendarDataArray;
this.QStartDate = this.CalendarDataArray[0].CurrentDate;
this.QEndDate = tempEndDate.CurrentDate;
this.msg.StartDate = this.CalendarDataArray[0].CurrentDate;
this.msg.EndDate = tempEndDate.CurrentDate;
// this.getList();
},
columnsMouseOver(obj) {
this.columnLine = obj;
},
getEndDay() {
var date1 = this.msg.StartDate;
var date2 = new Date(date1);
var c = date2.getDate();
var d = new Date(date2.setDate(c + 24));
this.msg.EndDate = d.Format("yyyy-MM-dd");
},
getDayInfo(Y, M, D) {
// let StartDate = Y + "-" + M + "-" + D;
// let msg = {
// StartDate: StartDate
// };
// this.apipost(
// "ticketcoupons_get_GetTicketCouponsSummaryDay",
// msg,
// res => {
// if (res.data.resultCode == 1) {
// this.dayList = res.data.data;
// }
// },
// null
// );
}
},
mounted() {
this.initData();
this.getEndDay();
// this.getList();
let nowDate = new Date().Format("yyyy-MM-dd");
this.nowYear = nowDate.split("-")[0];
this.nowMonth = parseInt(nowDate.split("-")[1]);
}
};
</script>
\ No newline at end of file
<template>
<div class="page-body con">
<div class="left">
<ClassroomNav/>
</div>
<div class="right">
<!-- <el-timeline :reverse="reverse">
<el-timeline-item
v-for="(activity, index) in activities"
:key="index"
:timestamp="activity.timestamp">
</el-timeline-item>
</el-timeline> -->
<Calendar></Calendar>
</div>
</div>
</template>
<script>
import ClassroomNav from "./components/classroomNav";
import Calendar from './components/scenicSummary.vue'
import {
getSchoolAndRoomNav
} from '../../api/classroom/index';
export default {
meta: {
title: "使用记录"
},
components:{
ClassroomNav,
Calendar,
},
data() {
return {
loading: true,
msg: {
pageIndex: 1,
pageSize: 12,
},
navData:[],
reverse: true,
activities: [{
timestamp: '09:30'
}, {
timestamp: '09:45'
}, {
timestamp: '10:00'
}]
};
},
mounted(){
this.getNavList();
},
methods:{
// goUrl(){
// this.$router.push({
// path:"/classroom/useRecord",
// query:{
// }
// })
// },
getNavList() {
getSchoolAndRoomNav({}).then(res => {
this.loading = false
if(res.Code===1){
this.navData=res.Data
}
}).catch(() => {
this.loading = false;
})
},
}
};
</script>
<style lang="scss" scoped>
.con{
padding: 5px !important;
display: flex;
.left{
background-color: rgb(245, 246, 247);
}
}
</style>
......@@ -10,10 +10,10 @@
<q-select @input="resetSearch" standout="bg-primary text-white" option-value="SId" option-label="SName"
v-model="msg.School_Id" :options="schoolList" emit-value map-options label="关联校区" />
</div>
<div class="col-3">
<!-- <div class="col-3">
<q-select @input="resetSearch" standout="bg-primary text-white" v-model="msg.Status" :options="StatusOpts"
option-value="value" option-label="label" label="状态" emit-value map-options />
</div>
</div> -->
</div>
</div>
<div class="page-content">
......@@ -40,6 +40,11 @@
<q-td :props="props">
<div class="text-blue cursor-pointer">{{props.value}}</div>
</q-td>
</template>
<template v-slot:body-cell-time="props">
<q-td :props="props">
<div class="text-blue cursor-pointer">{{props.StartTime}}/{{props.EndTime}}</div>
</q-td>
</template>
<template v-slot:body-cell-AssistIcon="props">
<q-td auto-width :props="props">
......@@ -112,10 +117,16 @@
align: 'left'
},
{
name: 'StatusStr',
label: '状态',
name: 'time',
label: '排班开始/结束时间',
align: 'left',
field: 'time'
},
{
name: 'SeatNum',
label: '座位',
align: 'left',
field: 'StatusStr'
field: 'SeatNum'
},
{
name: 'UpdateByName',
......
This diff is collapsed.
......@@ -11,12 +11,12 @@ export default {
Vue.prototype.MsgBus = MsgBus;
//消息成功提示
Vue.prototype.Success = function (msg) {
this.$message({
message: msg,
duration: 2000,
type: "success"
});
},
this.$message({
message: msg,
duration: 2000,
type: "success"
});
},
//错误提示
Vue.prototype.Error = function (msg) {
this.$message({
......@@ -45,10 +45,10 @@ export default {
//Confirm
Vue.prototype.Confirm = function (msg, callback) {
this.$confirm(msg, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
if (typeof callback === 'function') {
callback();
......@@ -71,13 +71,13 @@ export default {
Vue.prototype.md5 = md5;
//ERP本地缓存
Vue.prototype.getLocalStorage = function () {
var localStorageData = window.localStorage["loginUserInfo"];
if (localStorageData !== undefined && localStorageData != 'undefined') {
return JSON.parse(localStorageData).data;
} else {
return null;
}
},
var localStorageData = window.localStorage["loginUserInfo"];
if (localStorageData !== undefined && localStorageData != 'undefined') {
return JSON.parse(localStorageData).data;
} else {
return null;
}
},
//域名管理对象
Vue.prototype.domainManager = function () {
let domainUrl = 'http://192.168.20.24';
......@@ -85,10 +85,10 @@ export default {
let locationName = window.location.hostname;
if (locationName.indexOf('testerp.oytour') !== -1) {
domainUrl = "http://testapi.oytour.com";
viewFileUrl="http://upload.oytour.com";
viewFileUrl = "http://upload.oytour.com";
} else if (locationName.indexOf('oytour') !== -1) {
domainUrl = "http://reborn.oytour.com";
viewFileUrl="http://upload.oytour.com";
viewFileUrl = "http://upload.oytour.com";
}
var obj = {
//主地址
......@@ -102,7 +102,7 @@ export default {
//本站文件流下载地址
LocalFileStreamDownLoadUrl: domainUrl + "/api/file/GetFileFromWebApi",
//文件预览地址
ViewFileUrl:viewFileUrl
ViewFileUrl: viewFileUrl
};
return obj;
},
......@@ -143,7 +143,7 @@ export default {
document.body.appendChild(link);
link.click();
successCall(res);
}).catch(function (res) {});
}).catch(function (res) { });
},
//HTTP提交数据
......@@ -184,11 +184,11 @@ export default {
"uName": uName //用户名称
}
this.$http.post(apiurl, postData, {
headers: {
'Content-Type': 'application/json',
'Referer-Viitto': this.$route.path
}
})
headers: {
'Content-Type': 'application/json',
'Referer-Viitto': this.$route.path
}
})
.then(res => {
if (res.data.resultCode == 10000 || res.data.resultCode == 10001) {
this.$router.push({
......
export let url_jump_zc="http://zcedu.oytour.com/"
export let url_jump_zc = "http://zcedu.oytour.com/"
// export let UploadUrl="http://192.168.20.214:8120"//上传文件到本地服务器
export let UploadUrl="http://uploadfile.oytour.com"
// export let UploadUrl = "http://192.168.20.214:8120"//上传文件到本地服务器
export let UploadUrl = "http://uploadfile.oytour.com"
// export let ViittoFileUrl="http://192.168.20.214:8120"//文件站点
export let ViittoFileUrl="http://staticfile.oytour.com"
export let ViittoFileUrl = "http://staticfile.oytour.com"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment