Commit dc0b601c authored by 罗超's avatar 罗超

Merge branch 'master' of http://gitlab.oytour.com/luochao/confucius into master

parents bda252c2 e10f598a
......@@ -46,4 +46,13 @@ export function queryMyDutyPlanPage(data) {
method: 'post',
data
})
}
//获取我的值班看板
export function OnDuty(data) {
return request({
url: '/DutyPlan/OnDuty',
method: 'post',
data
})
}
\ No newline at end of file
......@@ -333,7 +333,7 @@
Teacher_Id: 0, //讲师Id
Assist_Id: 0, //助教Id
Group_Id: 0, //集团编号
School_Id: 0, //学校编号
School_Id: -1, //学校编号
CreateBy: 0, //创建人
CreateTime: '', //创建时间
UpdateBy: '', //修改人
......@@ -594,7 +594,7 @@
this.SchoolList = res.Data;
var obj = {
SName: '请选择',
SId: 0
SId: -1
}
this.SchoolList.unshift(obj);
}
......
......@@ -33,8 +33,19 @@
<div style="margin:10px 0 15px 0;">邀请新学员</div>
</div>
<div class="drop_NameDown">
<q-select standout="bg-primary text-white" v-model="checkedStudent" :options="InvitationList"
option-value="StuId" option-label="StuName" label="选择学员" />
<!-- <q-select dense standout="bg-primary text-white" v-model="checkedStudent" :options="InvitationList"
@filter="filterCourseFn" use-input option-value="StuId" option-label="StuName" label="选择学员" /> -->
<q-select filled stack-label use-input input-debounce="0"
option-value="StuId" option-label="StuName" v-model="checkedStudent"
:options="InvitationList" label="选择学员" :dense="false" emit-value map-options @filter="filterFn">
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
未找到相关数据
</q-item-section>
</q-item>
</template>
</q-select>
</div>
<q-card-actions align="right" class="bg-white" style="margin-top:20px;">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="ishowInvit=false" />
......@@ -44,7 +55,7 @@
</q-popup-proxy>
</q-btn>
</div>
<q-table :loading="loading" no-data-label="暂无相关数据" flat selection="multiple" :selected.sync="selectedStudent"
<q-table :loading="loading" no-data-label="暂无相关数据" style="margin-bottom:80px;" flat selection="multiple" :selected.sync="selectedStudent"
class="sticky-column-table" separator="none" title="学员信息" :data="studentList" :pagination="initialPagination" :columns="columns"
row-key="Id" hide-bottom>
<template v-slot:body-cell-IsRenew="props">
......@@ -147,6 +158,7 @@
StudentId: 0
},
InvitationList: [], //学员下拉数据
AllInvitationList: [],
checkedStudent: '', //选择学员
}
},
......@@ -158,6 +170,19 @@
this.getStudentList();
},
methods: {
//筛选员工
filterFn(val, update) {
update(() => {
if (val === '') {
this.InvitationList = JSON.parse(JSON.stringify(this.AllInvitationList))
} else {
const needle = val.toLowerCase()
this.InvitationList = this.AllInvitationList.filter(v => v.StuName.toLowerCase().indexOf(needle) > -1)
}
})
},
//获取学员信息
getStudentData() {
this.studentList = [];
......@@ -214,11 +239,17 @@
},
//获取学员下拉信息
getStudentList() {
GetStudentList({
var qMsg={
SchoolId: this.setingObj.School_Id
}).then(res => {
};
GetStudentList({}).then(res => {
if (res.Code == 1) {
this.InvitationList = res.Data;
var jsonData = res.Data;
if (jsonData && jsonData.length > 0) {
this.AllInvitationList = JSON.parse(JSON.stringify(jsonData));
this.InvitationList = JSON.parse(JSON.stringify(jsonData));
}
console.log("this.InvitationList",this.InvitationList);
}
})
},
......@@ -232,12 +263,18 @@
})
return;
} else {
let checkedStuObj = {};
this.InvitationList.forEach(x=>{
if(x.StuId==this.checkedStudent){
checkedStuObj=x;
}
})
this.invitationMsg.ClassId = this.setingObj.ClassId;
this.invitationMsg.GuestName = this.checkedStudent.StuName;
this.invitationMsg.Sex = this.checkedStudent.StuSex;
this.invitationMsg.Mobile = this.checkedStudent.StuTel;
this.invitationMsg.BirthDay = this.checkedStudent.StuBirthStr;
this.invitationMsg.StudentId = this.checkedStudent.StuId;
this.invitationMsg.GuestName = checkedStuObj.StuName;
this.invitationMsg.Sex = checkedStuObj.StuSex;
this.invitationMsg.Mobile = checkedStuObj.StuTel;
this.invitationMsg.BirthDay = checkedStuObj.StuBirthStr;
this.invitationMsg.StudentId = checkedStuObj.StuId;
this.invitationMsg.School_Id = this.setingObj.School_Id;
AddClassStudent(this.invitationMsg).then(res => {
if (res.Code == 1) {
......
......@@ -91,9 +91,8 @@
methods: {
//获取数据
getList() {
getDutyFrequencyList({}).then(res => {
getDutyFrequencyList({}).then(res => {
if (res.Code == 1) {
console.log(res)
this.dataList = res.Data;
}
})
......
......@@ -48,7 +48,7 @@
<q-item-label class="text-weight-bold">{{x.Title}}</q-item-label>
<q-item-label caption lines="3" class="remark-font">{{x.Content}}</q-item-label>
</q-item-section>
<q-item-section side class="remark-font">{{x.SendTime}}</q-item-section>
<q-item-section side class="remark-font">{{x.SendTime.replace('T',' ')}}</q-item-section>
</q-item>
</q-list>
<none-data v-else></none-data>
......@@ -272,7 +272,6 @@
this.init();
this.getNotify();
this.socektArr = this.socektObj;
this.goMsgDetail('/course/prepareclassDetails?ClassId=5&ClassPlanId=2898');
},
methods: {
init() {
......@@ -301,11 +300,6 @@
compType: "shenpi"
}
})
// this.$q.dialog({
// title: '功能提示',
// message: '灰度测试功能,即将在下版本中开启'
// }).onOk(() => {
// });
},
//请求公告数据
getNotify() {
......@@ -335,19 +329,23 @@
//跳转链接 新页面打开
goMsgDetail(url) {
let locationName = window.location.hostname;
var host = window.location.host;
var hostName = window.location.hostname;
var port = window.location.port;
var newurl = ""
if (url != null && url.length > 0) {
if (url.indexOf('http://') == -1 || url.indexOf('https://') == -1) {
newurl = "http://" + locationName + (host != 80 ? ":" + host : "") + "/#" + url;
if (url.indexOf("www") == -1) {
newurl = "http://" + hostName + (port != 80 ? ":" + port : "") + "/#" + url;
} else {
newurl = "http://" + url;
}
} else {
newurl = url
}
}
console.log("newurl", newurl);
//window.open(url, "_blank");
if (newurl) {
window.open(newurl, "_blank");
}
},
//看过后删除
readMsgLog(Id, index) {
......
......@@ -32,7 +32,15 @@
</div>
<div class="row wrap">
<q-input clearable filled class="col-6 q-pr-lg q-pb-lg" v-model="objOption.StudentName" label="学生姓名" />
<q-input clearable filled class="col-6 q-pb-lg" v-model="objOption.StuBirth" label="学生生日" />
<q-input filled v-model="objOption.StuBirth" class="col-6 q-pb-lg" mask="date" label="学生生日">
<template v-slot:append>
<q-icon name="event" class="cursor-pointer">
<q-popup-proxy ref="qDateProxy1" transition-show="scale" transition-hide="scale">
<q-date v-model="objOption.StuBirth" @input="() => $refs.qDateProxy1.hide()" />
</q-popup-proxy>
</q-icon>
</template>
</q-input>
<q-input clearable filled class="col-6 q-pr-lg q-pb-lg" v-model="objOption.StuEmail" label="学生邮箱" />
<q-input clearable filled class="col-6 q-pb-lg" v-model="objOption.StuAddress" label="学生地址" />
<q-input clearable filled class="col-6 q-pr-lg q-pb-lg" v-model="objOption.StuTel" label="学生电话" />
......@@ -391,7 +399,7 @@
ThirdMoney: '', //第三期-费用总计
ThirdPayDate: '', //第三期-支付日期
Exam: '', //乙方当前选择考试
IsSupplement: 1, // 0无 1 有 是否有补充协议
IsSupplement: 0, // 0无 1 有 是否有补充协议
},
totalHours: 0, //培训课时数总计
totalCourseFee: 0, //培训课程费总计
......
......@@ -149,23 +149,29 @@
<span @click="isShowPop=true">查看合同</span>
<q-popup-proxy v-if="isShowPop">
<q-banner>
<div style="width: 450px;max-height:220px;overflow:auto;">
<div style="width: 520px;max-height:220px;overflow:auto;">
<table class="Contract_Table">
<tr>
<th>姓名</th>
<th style="width:180px;">合同编号</th>
<th>状态</th>
<th width="110px;" v-if="isEdit">操作</th>
<th width="170px;" v-if="isEdit">操作</th>
</tr>
<tr v-for="subItem in item.GuestList">
<td>{{subItem.GuestName}}</td>
<td>{{subItem.ContractNo}}</td>
<td>{{subItem.ContractStatusStr}}</td>
<td v-if="isEdit">
<q-btn color="accent" v-if="subItem.ContractId==0" size="sm" class="q-mr-md"
@click="takeContractTwo(item,subItem)" label="领取合同" />
<q-btn color="accent" v-else size="sm" class="q-mr-md"
@click="takeContractTwo(item,subItem)" label="修改" />
<template v-if="subItem.ContractId==0">
<q-btn color="accent" size="sm"
@click="takeContractTwo(item,subItem)" label="领取合同" />
</template>
<template v-else>
<!-- <q-btn color="accent" size="sm" style="margin-right:5px;"
@click="takeContractTwo(item,subItem)" label="修改" /> -->
<q-btn color="secondary" size="sm"
@click="goContractMannage()" label="查看合同" />
</template>
</td>
</tr>
</table>
......@@ -1097,6 +1103,13 @@
this.isShowPop=false;
this.isShowEduForm=true;
},
//跳转至合同管理
goContractMannage(){
this.$router.push({
path: '/sale/contractManage',
query: {}
});
}
}
}
......
......@@ -180,7 +180,6 @@
if (res.Code == 1) {
this.batchList = res.Data;
}
console.log("batchList", this.batchList);
})
},
//获取员工列表
......
......@@ -15,7 +15,7 @@
<div class="row wrap">
<div class="col-6">
<q-select filled stack-label option-value="SId" option-label="SName" v-model="objOption.School_Id"
ref="School_Id" :options="SchoolList" label="所属校区" :rules="[val => !!val || '请选择所属校区']" :dense="false" class="col-6 q-pr-lg q-pb-lg" emit-value
ref="School_Id" :options="SchoolList" label="所属校区" :dense="false" class="col-6 q-pr-lg q-pb-lg" emit-value
map-options />
<div class="col-6">
<a v-if="objOption.SupplierContract&&isHaveViewContractAction"
......@@ -83,7 +83,7 @@
SupplierId: 0, //供应商编号
SupplierContract: '', //供应商合同
Remark: '', //备注
School_Id: 0, //所属校区
School_Id: -1, //所属校区
ImgCover:'', //封面图
},
optionTitle: "",
......@@ -134,7 +134,7 @@
this.SchoolList = res.Data;
var obj = {
SName: '请选择',
SId: 0
SId: -1
}
this.SchoolList.unshift(obj);
}
......@@ -167,7 +167,7 @@
this.objOption.SupplierId = 0;
this.objOption.SupplierContract = '';
this.objOption.Remark = '';
this.objOption.School_Id = 0;
this.objOption.School_Id = -1;
}
},
//关闭弹窗
......@@ -187,8 +187,7 @@
// }
this.$refs.Name.validate();
this.$refs.SupplierId.validate();
this.$refs.School_Id.validate();
if (!this.$refs.Name.hasError&&!this.$refs.SupplierId.hasError&&!this.$refs.School_Id.hasError) {
if (!this.$refs.Name.hasError&&!this.$refs.SupplierId.hasError) {
this.saveLoading = true;
saveStudyAbroad(this.objOption).then(res => {
this.saveLoading = false
......
......@@ -213,12 +213,10 @@
getLogList(){
GetMsgLogList().then(res => {
if (res.Code == 1) {
console.log(res,'mainLayout日志数据');
this.socektArr = res.Data;
}
})
},
getMsg() {
let userinfo = this.getLocalStorage();
var SendData = {
......@@ -231,10 +229,7 @@
console.log("socketData",e);
if (e.data) {
var newData = JSON.parse(e.data)
console.log(newData,'newData');
this.socektArr = this.socektArr.concat(newData)
console.log(this.socektArr,'this.socektArr');
this.showNotification(newData[0].Title, newData[0].Content, newData.CoverImg)
}
},
......@@ -272,7 +267,7 @@
};
// 定义通知错误事件
notify.onerror = function () {
// console.log("");
};
// 定义通知显示事件 可以设置多少秒之后关闭 也可以不设置关闭
notify.onshow = function () {
......
......@@ -34,7 +34,7 @@
</q-btn>
<q-btn @click="changeMenu(2)" v-if="AccountType==2 || ispower==true" flat :color="chosenMenu==2?'primary':'blue-grey-14'" :class="[chosenMenu==2?'text-weight-bold':'']" label="备课管理">
</q-btn>
<q-btn flat @click="changeMenu(3)" :color="chosenMenu==3?'primary':'blue-grey-14'" :class="[chosenMenu==3?'text-weight-bold':'']" label="我的排班计划"></q-btn>
<q-btn style="display:none;" flat @click="changeMenu(3)" :color="chosenMenu==3?'primary':'blue-grey-14'" :class="[chosenMenu==3?'text-weight-bold':'']" label="我的排班计划"></q-btn>
</div>
<div v-if="chosenMenu==1" class="flex col" style="flex: 1">
......@@ -194,8 +194,8 @@
.homebx {
margin: 0;
}
::-webkit-scrollbar {
display: none; /* Chrome Safari */
.myscroll::-webkit-scrollbar {
display: none;
}
.box .el-tabs__header{
......
......@@ -197,7 +197,6 @@ export default {
this.OperationLoad = false;
if (res.data.resultCode === 1) {
this.datainfo = res.data.data;
console.log(this.datainfo)
} else {
this.Error(res.data.message);
}
......
......@@ -642,9 +642,9 @@
<div class="contractContent">8.2 出国留学的情况(需开具境外大学录取通知书及出行机票);</div>
<div class="contractContent">8.3 不在本地学习的情况(需开具相关证明);</div>
<div class="contractContent">8.4 长期外地工作实习的情况(需开具工作证明)。</div>
<div class="contractContent">9、达到正常退费要求者,退费金额核算如下:</div>
<div class="contractContent">9.1
未参加抽奖等优惠活动者:应退学费=乙方已缴总学费-已上课程学费-(乙方已缴总学费-已上课程学费)×10%。其中“(乙方已缴总学费-已上课程学费)×10%”为违约金;课程中附赠的口语课程、考前冲刺课程、真题讲解等课程不纳入退费课时,乙方无权针对该课程申请退费;班级课时剩余计算方法按照班级学费平均到每小时计算。
<div class="contractContent">9、退费金额核算如下:</div>
<div class="contractContent">
9.1 未参加抽奖等额外减免活动者:应退学费=实收学费-已上课时费-违约金(其中,已上课时费=原价学费÷总课时×已上课时;违约金=(实收学费-已上课时费)×10%。);课程中附赠的口语课程、考前冲刺课程、真题讲解等课程不纳入退费课时,乙方无权针对该课程申请退费;班级课时剩余计算方法按照班级学费平均到每课时(45分钟)计算。
</div>
<div class="contractContent">9.2 参加各项抽奖等优惠活动者,一律不予退费。</div>
<div class="contractContent">9.3 因乙方自身原因(如未达到留学或旅游所对应的语言水平,且非上述七.8条不可抗力因素)不能参加境外留学、游学或旅游项目的,不予退还境外服务费。</div>
......@@ -695,7 +695,7 @@
<template v-if="dataList.IsSupplement==1">
<div class="comTitle" style="margin-top:40px;">
<div class="comTiInner">
<div class="comTLeft">甲鹤日语课程协议</div>
<div class="comTLeft">甲鹤日语课程补充协议</div>
<div class="comTRight"></div>
</div>
</div>
......
......@@ -98,8 +98,8 @@
font-size: 12px;
color: #2961FE;
}
::-webkit-scrollbar {
display: none; /* Chrome Safari */
.comment::-webkit-scrollbar {
display: none;
}
.prepareclassDetails .width70{
width: 70px;
......
......@@ -963,7 +963,6 @@
this.saveMsg.splice(i, 1);
},
uploadFileBtn(file) { //上传
console.log(file)
if (file.file.size > 1024 * 1024 * 10) {
this.$message.warning(this.$t('tips.wjdxbncgsz'))
return
......
......@@ -776,16 +776,13 @@
},
bodyCellSpan({ row, column, rowIndex }) {
if (rowIndex === 1) {
// console.log(column)
if (column.field === "date") {
return {
rowspan: 1,
colspan: 2,
};
}
// does not need to be rendered
else if (column.field === "hobby") {
return {
rowspan: 0,
......
......@@ -80,7 +80,7 @@
style="font-weight:400" @click="EditContract(props.row)" label="编辑" />
<el-tooltip content="复制链接发送给客人签字" placement="top" effect="light">
<q-btn flat size="xs" v-if="props.row.Status==2&&(props.row.Sign==''||props.row.Sign==null)" icon="iconfont icon-qianming" color="accent"
style="font-weight:400" @click="CopyUrl(props.row)" label="客人签字" />
style="font-weight:400" @click="CopyUrl(props.row)" label="获取合同链接" />
</el-tooltip>
<q-btn flat size="xs" icon="iconfont icon-View" color="accent" @click="goContract(props.row)"
style="font-weight:400" label="查看" />
......
......@@ -6,7 +6,13 @@
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table"
separator="none" title="我的排班计划" :data="dataList" :columns="columns" row-key="name">
<template v-slot:body-cell-PlanList="props">
<q-td>
<div v-for="(item,index) in props.row.PlanList">
{{index+1}}{{item.ItemName}}
</div>
</q-td>
</template>
<template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount"
:input="true" @input="changePage" />
......@@ -108,7 +114,6 @@
this.pageCount = res.Data.Count;
}
this.loading = false;
console.log("res", res);
})
},
//分页改变
......@@ -116,8 +121,14 @@
this.msg.pageIndex = val;
},
//开始值班
StartSchedule() {
StartSchedule(obj) {
this.$router.push({
path: "/scheduling/scheduleBoard",
query: {
Id:obj.Id,
Shift:obj.Shift
}
});
}
},
}
......
<style>
.scheduMain {
height: 100%;
width: 100%;
padding: 15px;
background-color: #f2f4f7;
overflow: hidden;
}
.scheduMain .schedu_left {
width: 248px;
flex: 0 0 auto;
position: relative;
background-image: url(../../assets/images/sched_bg.png);
background-repeat: no-repeat;
background-size: 100% auto;
height: 100%;
}
.scheduMain .okr-menu-active {
color: var(--q-color-primary);
font-weight: bold;
background: #ecf1ff;
}
.mySched {
border-radius: 8px;
overflow: hidden;
height: 100%;
background-color: #fff;
}
.schedu_ImgDiv {
width: 68px;
height: 68px;
border-radius: 20px;
overflow: hidden;
margin: 75px auto 0;
}
.schedu_ImgDiv img {
width: 100%;
height: 100%;
}
.schedu_Name {
color: #fff;
font-size: 16px;
margin-top: 26px;
text-align: center;
}
.schedu_Status {
font-size: 12px;
color: #fff;
text-align: center;
margin-top: 15px;
}
.schedu_st {
display: inline-block;
width: 10px;
height: 10px;
border-radius: 50%;
margin-right: 5px;
position: relative;
top: 1px;
}
.zbz {
background-color: #00DB4E;
}
.xxz {
background-color: #DBDBDB;
}
.wdk {
background-color: #FE4475;
}
.clockon_Duty {
width: 120px;
height: 34px;
background: linear-gradient(90deg, #00BDD3, #00D761);
border-radius: 10px;
margin: 100px auto 24px;
text-align: center;
line-height: 31px;
color: #fff;
font-size: 14px;
cursor: pointer;
}
.sche_daka {
font-size: 18px;
position: relative;
left: 5px;
top: 2px;
}
.schedu_jiaojie {
width: 120px;
height: 34px;
line-height: 34px;
text-align: center;
border-radius: 10px;
border: 1px solid #91AEFF;
color: #C4D4FF;
font-size: 14px;
margin: auto;
cursor: pointer;
}
.sche_rightTop {
width: 100%;
height: 80px;
background-color: #fff;
}
.myscroll {
background-color: #F6F8FA;
}
.sche_Topflex {
display: flex;
width: 80%;
height: 80px;
justify-content: space-between;
align-items: center;
}
.Sctop_Color {
font-size: 18px;
color: #000000;
width: 246px;
text-align: center;
}
.Scotop_little {
color: #AAAAAA;
font-size: 14px;
margin-right: 15px;
}
.Scdu_benci::after {
content: "";
position: absolute;
height: 29px;
width: 2px;
background: #EBEBEB;
right: 0;
}
.sche_mid {
display: flex;
width: 100%;
justify-content: space-between;
}
.sche_midList {
width: 32%;
height: 300px;
background: #fff;
border-radius: 16px;
overflow: hidden;
}
.Sche_Bottom{
margin:26px 0 0 40px;
}
.scheList_TOP{
width:100%;
height:107px;
border-radius: 16px;
overflow: hidden;
}
</style>
<template>
<div class="scheduMain">
<div class="flex row mySched">
<div class="schedu_left">
<div class="schedu_ImgDiv">
<img :src="dataList.DutyManIcon" alt="" />
</div>
<div class="schedu_Name">
{{dataList.DutyManName}}
</div>
<div class="schedu_Status">
<span class="schedu_st zbz"></span>值班中
<!-- <span class="schedu_st xxz"></span>休息中
<span class="schedu_st wdk"></span>未打卡 -->
</div>
<div class="clockon_Duty">
值班打卡<i class="iconfont icon-jiejue1 sche_daka"></i>
</div>
<div class="schedu_jiaojie">值班交接</div>
</div>
<div class="col scroll myscroll">
<div class="sche_rightTop">
<div class="sche_Topflex">
<div class="Sctop_Color Scdu_benci" style="position:relative;">本次值班信息</div>
<div class="Sctop_Color">
<span class="Scotop_little">校区</span>城中一校区
</div>
<div class="Sctop_Color" style="width:300px;">
<span class="Scotop_little">时间</span>2021.04.27 周二 9:30
</div>
<div class="Sctop_Color">
<span class="Scotop_little">班次</span>早班
</div>
</div>
</div>
<div class="Sche_Bottom">
<div class="sche_mid">
<div class="sche_midList">
<div class="scheList_TOP">
<img src="../../assets/images/work_list.png" />
</div>
</div>
<div class="sche_midList">
</div>
<div class="sche_midList">
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import {
OnDuty
} from '../../api/scheduling/schedu'
export default {
props: {},
components: {},
data() {
return {
msg: {
Id: 0,
Shfit: 0
},
dataList: {}
}
},
created() {
console.log(this.$route.query.Shift);
if (this.$route.query.Shift && this.$route.query.Id) {
this.msg.Id = this.$route.query.Id
this.msg.Shfit = this.$route.query.Shift
this.getList();
}
},
methods: {
//请求数据
getList() {
OnDuty(this.msg).then(res => {
if (res.Code == 1) {
console.log(res, '数据来也');
this.dataList = res.Data;
}
})
},
},
}
</script>
......@@ -677,6 +677,11 @@ const routes = [{
component: () =>
import("pages/scheduling/schedulDetail.vue")
},
{
path: "/scheduling/scheduleBoard", //值班看板
component: () =>
import("pages/scheduling/scheduleBoard.vue")
},
{
path: "/test", //API测试
component: () =>
......
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