Commit 798a7380 authored by 罗超's avatar 罗超

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

# Conflicts:
#	src/router/routes.js
parents 9819dec8 3a7252b2
import request from '../../utils/request' import request from '../../utils/request'
/** /**
* 获取部门分页列表 * 获取学员出勤情况
*/ */
export function getDeptPage(data) { export function getStudentAttendanceDayStatistics(data) {
return request({ return request({
url: '/User/GetDeptPageList', url: '/stu/GetStudentAttendanceDayStatistics',
method: 'post', method: 'post',
data data
}); });
} }
//学管 获取访客列表
export function getVisitorAllPageList(data) {
return request({
url: '/DutyPlan/GetVisitorAllPageList',
method: 'post',
data
})
}
\ No newline at end of file
...@@ -305,8 +305,6 @@ ...@@ -305,8 +305,6 @@
</q-icon> </q-icon>
</template> </template>
</q-input> </q-input>
<!-- <q-input filled stack-label maxlength="20" v-model="sItem.StartTime" placeholder="08:30"
:dense="false" class="col-6 q-pr-lg" label="开始时间" /> -->
</td> </td>
<td> <td>
<q-input filled v-model="sItem.EndTime" class="col-6 q-pr-lg" placeholder="结束时间" mask="time"> <q-input filled v-model="sItem.EndTime" class="col-6 q-pr-lg" placeholder="结束时间" mask="time">
...@@ -322,8 +320,6 @@ ...@@ -322,8 +320,6 @@
</q-icon> </q-icon>
</template> </template>
</q-input> </q-input>
<!-- <q-input filled stack-label maxlength="20" v-model="sItem.EndTime" placeholder="09:30" :dense="false"
class="col-6 q-pr-lg" label="结束时间" /> -->
</td> </td>
<td> <td>
<q-input filled stack-label maxlength="20" v-model="sItem.TimeHour" <q-input filled stack-label maxlength="20" v-model="sItem.TimeHour"
...@@ -602,10 +598,8 @@ ...@@ -602,10 +598,8 @@
saveCourse() { saveCourse() {
this.$refs.ClassName.validate(); this.$refs.ClassName.validate();
this.$refs.ClassPersion.validate(); this.$refs.ClassPersion.validate();
this.$refs.OriginalPrice.validate();
this.$refs.SellPrice.validate(); if (!this.$refs.ClassName.hasError && !this.$refs.ClassPersion.hasError) {
if (!this.$refs.ClassName.hasError && !this.$refs.ClassPersion.hasError && !this.$refs.OriginalPrice.hasError &&
!this.$refs.SellPrice.hasError) {
if (this.objOption.IsOpenCommission == 1) { if (this.objOption.IsOpenCommission == 1) {
if (this.objOption.CommissionValue == '') { if (this.objOption.CommissionValue == '') {
this.$q.notify({ this.$q.notify({
......
...@@ -167,7 +167,7 @@ ...@@ -167,7 +167,7 @@
<div class="row backInfo_One"> <div class="row backInfo_One">
<div class="col-6"> <div class="col-6">
<span class="backInfo_Title">合同信息:</span> <span class="backInfo_Title">合同信息:</span>
<span class="backOtherInfo" style="cursor: pointer;text-decoration: underline;" @click="getlookContractNo(setingObj.DataObj.ContractNo)" v-if="setingObj.DataObj.ContractNo && setingObj.DataObj.ContractNo!=''"> <span class="backOtherInfo" style="cursor: pointer;text-decoration: underline;" @click="getlookContractNo(setingObj.DataObj.ContractId)" v-if="setingObj.DataObj.ContractNo && setingObj.DataObj.ContractNo!=''">
{{setingObj.DataObj.ContractNo}} {{setingObj.DataObj.ContractNo}}
</span> </span>
<span v-else></span> <span v-else></span>
...@@ -454,10 +454,15 @@ ...@@ -454,10 +454,15 @@
'OrderId': OrderId 'OrderId': OrderId
}) })
}, },
getlookContractNo(ContractNo){//跳转合同管理 getlookContractNo(ContractId){//跳转合同管理
this.OpenNewUrl('/sale/contractManage', {
'Name': ContractNo let routeUrl = this.$router.resolve({
}) path: "/contractView",
query: {
ContractId: ContractId
}
});
window.open(routeUrl.href, '_blank');
}, },
getlookFinishHours(){//跳转学员消耗课时明细 getlookFinishHours(){//跳转学员消耗课时明细
let StartMonth = '' let StartMonth = ''
......
...@@ -124,7 +124,9 @@ ...@@ -124,7 +124,9 @@
</div> </div>
<div class="row backInfo_One"> <div class="row backInfo_One">
<div class="col-6"> <div class="col-6">
<span class="backInfo_Title">调课编号:</span> <span class="backInfo_Title">
<span v-if="setingObj.ReceiptType==6">分拆</span>
<span v-if="setingObj.ReceiptType==5">转班</span>编号:</span>
<span class="backOtherInfo">{{setingObj.DataObj.Id}}</span> <span class="backOtherInfo">{{setingObj.DataObj.Id}}</span>
</div> </div>
<div class="col-6"> <div class="col-6">
......
...@@ -118,17 +118,17 @@ ...@@ -118,17 +118,17 @@
</div> </div>
</div> </div>
<div class="row" style="margin-top:20px;" v-if="deptObj.schoolType==1"> <div class="row" style="margin-top:20px;" v-if="deptObj.schoolType==1">
<div class="col-6"> <div class="col-12">
<q-select filled stack-label @input="getDepartList()" option-value="SId" option-label="SName" <q-select filled stack-label @input="getDepartList()" option-value="SId" option-label="SName"
class="col-6 q-pr-lg q-pb-lg" v-model="deptObj.School_Id" ref="School_Id" :options="schoolList" class="q-pb-lg" v-model="deptObj.School_Id" ref="School_Id" :options="schoolList"
label="所属校区" :dense="false" emit-value map-options /> label="所属校区" :dense="false" emit-value map-options />
</div> </div>
</div> </div>
<div class="row" style="margin-top:20px;"> <div class="row" style="margin-top:15px;">
<div class="col-6"> <div class="col-12">
<selectTree :treeData='DeptList' :defaultArray="returnString" nodeKey="DeptId" :multiple="false" <selectTree :treeData='DeptList' :defaultArray="returnString" nodeKey="DeptId" :multiple="false"
labelKey="DeptName" childrenKey="ChildList" tipText="选择部门" @getChild="getChild" labelKey="DeptName" childrenKey="ChildList" tipText="选择部门" @getChild="getChild"
classStr="col-6 q-pr-lg q-pb-lg"></selectTree> classStr="col-12 q-pb-lg"></selectTree>
</div> </div>
</div> </div>
</div> </div>
...@@ -139,9 +139,9 @@ ...@@ -139,9 +139,9 @@
<div>修改岗位</div> <div>修改岗位</div>
</div> </div>
<div class="row" style="margin-top:20px;"> <div class="row" style="margin-top:20px;">
<div class="col-6"> <div class="col-12">
<q-select filled stack-label option-value="PostId" option-label="PostName" v-model="Post_Id" ref="Post_Id" <q-select filled stack-label option-value="PostId" option-label="PostName" v-model="Post_Id" ref="Post_Id"
:options="PostList" label="岗位" :dense="false" class="col-6 q-pr-lg q-pb-lg" emit-value map-options /> :options="PostList" label="岗位" :dense="false" class="q-pb-lg" emit-value map-options />
</div> </div>
</div> </div>
</div> </div>
...@@ -167,20 +167,20 @@ ...@@ -167,20 +167,20 @@
</div> </div>
</div> </div>
<div class="row" style="margin-top:20px;"> <div class="row" style="margin-top:20px;">
<div class="col-6"> <div class="col-12">
<q-select filled stack-label option-value="Id" option-label="Name" v-model="changeTypeMsg.TargetAccountType" <q-select filled stack-label option-value="Id" option-label="Name" v-model="changeTypeMsg.TargetAccountType"
ref="AccountType" :options="accountTypeList" label="目标职能" :dense="false" class="col-6 q-pr-lg q-pb-lg" ref="AccountType" :options="accountTypeList" label="目标职能" :dense="false" class="col-6 q-pb-lg"
emit-value map-options /> emit-value map-options />
</div> </div>
</div> </div>
<div class="row" style="margin-top:20px;"> <div class="row">
<div class="col-6"> <div class="col-12">
<q-input v-model="changeTypeMsg.Remark" label="调整原因" filled type="textarea" class="col-6 q-pr-lg q-pb-lg" <q-input v-model="changeTypeMsg.Remark" label="调整原因" filled type="textarea" class="col-6 q-pb-lg"
maxlength="100" /> maxlength="100" />
</div> </div>
</div> </div>
</div> </div>
<div style="text-align:left;margin-left:20px;"> <div style="text-align:right;margin-right:20px;">
<q-btn color="primary" label="确定" @click="saveReuslt()" style="width:300px;" /> <q-btn color="primary" label="确定" @click="saveReuslt()" style="width:300px;" />
</div> </div>
</q-card> </q-card>
...@@ -294,11 +294,6 @@ ...@@ -294,11 +294,6 @@
getSchool() { getSchool() {
getSchoolDropdown({}).then(res => { getSchoolDropdown({}).then(res => {
this.schoolList = res.Data; this.schoolList = res.Data;
var obj = {
SName: '总部',
SId: 0
}
this.schoolList.unshift(obj);
}) })
}, },
closeShenheForm() { closeShenheForm() {
...@@ -369,7 +364,14 @@ ...@@ -369,7 +364,14 @@
UpdateEmployeeLeave(Msg).then(res => { UpdateEmployeeLeave(Msg).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.$emit('success'); this.$emit('success');
this.$emit('close') this.$emit('close');
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '保存成功!',
position: 'top'
})
} }
}) })
} }
...@@ -394,7 +396,14 @@ ...@@ -394,7 +396,14 @@
UpdateEmployeeDept(obj).then(res => { UpdateEmployeeDept(obj).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.$emit('success'); this.$emit('success');
this.$emit('close') this.$emit('close');
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '保存成功!',
position: 'top'
})
} }
}) })
} }
...@@ -417,7 +426,14 @@ ...@@ -417,7 +426,14 @@
UpdateEmployeePost(obj).then(res => { UpdateEmployeePost(obj).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.$emit('success'); this.$emit('success');
this.$emit('close') this.$emit('close');
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '保存成功!',
position: 'top'
})
} }
}) })
} }
...@@ -425,6 +441,13 @@ ...@@ -425,6 +441,13 @@
if (this.setingObj.type == 5) { if (this.setingObj.type == 5) {
UpdateEmployeeType(this.changeTypeMsg).then(res => { UpdateEmployeeType(this.changeTypeMsg).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '保存成功!',
position: 'top'
})
this.$emit('success'); this.$emit('success');
this.$emit('close') this.$emit('close')
} }
......
...@@ -9,16 +9,13 @@ ...@@ -9,16 +9,13 @@
.role-form .role_MenuList { .role-form .role_MenuList {
width: 100%; width: 100%;
height: 40px; height: auto;
border-radius: 3px; border-radius: 3px;
border: 1px solid #2961FE; border: 1px solid #2961FE;
color: #2961FE; color: #2961FE;
align-items: center; align-items: center;
font-size: 12px; font-size: 12px;
white-space: nowrap;
} }
.role-form .role_TreeList { .role-form .role_TreeList {
height: 250px; height: 250px;
overflow: auto; overflow: auto;
...@@ -52,8 +49,9 @@ ...@@ -52,8 +49,9 @@
} }
.role-form .role_MenuList span { .role-form .role_MenuList>span {
width: 80px; width: auto;
padding:0 14px;
display: inline-block; display: inline-block;
text-align: center; text-align: center;
height: 100%; height: 100%;
...@@ -71,7 +69,7 @@ ...@@ -71,7 +69,7 @@
} }
.role-form .role_ItemList { .role-form .role_ItemList {
width: 200px; min-width: 200px;
height: 300px; height: 300px;
background-color: #F1F1F1; background-color: #F1F1F1;
margin-right: 10px; margin-right: 10px;
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select @input="refreshPage" standout="bg-primary text-white" v-model="msg.MakeUpStatus" clearable <q-select @input="refreshPage" standout="bg-primary text-white" v-model="msg.MakeUpStatus" clearable
option-value="Id" option-label="Name" :options="statusList" emit-value map-options label="状态" /> option-value="Id" option-label="Name" :options="statusList" emit-value map-options label="处理结果" />
</div> </div>
<div class="col-3"> <div class="col-3">
<div class="col-3 Sysuser_Date"> <div class="col-3 Sysuser_Date">
...@@ -77,14 +77,14 @@ ...@@ -77,14 +77,14 @@
</template> </template>
<template v-slot:body-cell-optioned="props"> <template v-slot:body-cell-optioned="props">
<q-td :props="props"> <q-td :props="props">
<q-btn v-if="props.row.MakeUpStatus==3" flat size="xs" icon="edit" color="accent" style="font-weight:400" <q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400"
label="处理" @click="isShowEdit=true,getClickItem(props.row)"> :label="props.row.MakeUpStatus == 1?'处理':'修改'" @click="isShowEdit=true,getClickItem(props.row)">
<q-popup-proxy> <q-popup-proxy >
<q-banner v-if="isShowEdit"> <q-banner v-if="isShowEdit">
<div class="calenderDialog"> <div class="calenderDialog">
<div style="margin:10px 0 15px 0;">设置处理状态</div> <div style="margin:10px 0 15px 0;">设置处理状态</div>
<q-select standout="bg-primary text-white" option-value="Id" option-label="Name" <q-select standout="bg-primary text-white" option-value="Id" option-label="Name"
v-model="statusMsg.MakeUpStatus" :options="statusList" emit-value map-options label="班级状态" /> v-model="statusMsg.MakeUpStatus" :options="statusList2" emit-value map-options label="是否可补课" />
<q-card-actions align="right" class="bg-white" style="margin-top:20px;"> <q-card-actions align="right" class="bg-white" style="margin-top:20px;">
<q-btn label="取消" flat color="grey-10" size="sm" @click="isShowEdit=false" <q-btn label="取消" flat color="grey-10" size="sm" @click="isShowEdit=false"
style="font-weight:400 !important" /> style="font-weight:400 !important" />
...@@ -160,10 +160,16 @@ ...@@ -160,10 +160,16 @@
}, },
{ {
name: 'MakeUpStatusStr', name: 'MakeUpStatusStr',
label: '状态', label: '处理结果',
align: 'left', align: 'left',
field: 'MakeUpStatusStr' field: 'MakeUpStatusStr'
}, },
{
name: 'TimeHour',
label: '课时长度',
align: 'left',
field: 'TimeHour'
},
{ {
name: 'optioned', name: 'optioned',
label: '操作', label: '操作',
...@@ -176,7 +182,7 @@ ...@@ -176,7 +182,7 @@
pageIndex: 1, pageIndex: 1,
pageSize: 12, pageSize: 12,
rowsPerPage: 12, rowsPerPage: 12,
MakeUpStatus: 3, //(2-已处理,3-未处理) MakeUpStatus: 1, //(2-已处理,3-未处理)
GuestName: "", //学员名称 GuestName: "", //学员名称
ClassName: "", //班级名称 ClassName: "", //班级名称
CourseName: "", //课程名称 CourseName: "", //课程名称
...@@ -187,18 +193,8 @@ ...@@ -187,18 +193,8 @@
}, },
pageCount: 0, pageCount: 0,
isShowEdit: false, //是否显示修改 isShowEdit: false, //是否显示修改
statusList: [{ statusList: [{Id: 1,Name: '未处理'}, { Id: 2,Name: '可补课'},{Id: 3,Name: "不可补课"}],
Id: -1, statusList2: [ { Id: 2,Name: '可补课'},{Id: 3,Name: "不可补课"}],
Name: '全部'
}, {
Id: 2,
Name: '已处理'
},
{
Id: 3,
Name: "未处理"
}
],
statusMsg: { statusMsg: {
Id: 0, Id: 0,
MakeUpStatus: 2, MakeUpStatus: 2,
...@@ -246,6 +242,7 @@ ...@@ -246,6 +242,7 @@
this.statusMsg.ClassCheckId = item.ClassCheckId; this.statusMsg.ClassCheckId = item.ClassCheckId;
this.statusMsg.GuestId = item.OrderGuestId; this.statusMsg.GuestId = item.OrderGuestId;
this.statusMsg.Id = item.Id; this.statusMsg.Id = item.Id;
this.statusMsg.MakeUpStatus = item.MakeUpStatus
}, },
clearMsg() { clearMsg() {
this.statusMsg.Id = 0; this.statusMsg.Id = 0;
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
option-label="CourseName" v-model="msg.CouseId" :options="CourseList" emit-value map-options label="学习课程" /> option-label="CourseName" v-model="msg.CouseId" :options="CourseList" emit-value map-options label="学习课程" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" standout="bg-primary text-white" option-value="Id" option-label="Name" <q-select @input="msg.OrderState==0?(msg.Q_OrderState = 1):msg.Q_OrderState=0,resetSearch()" standout="bg-primary text-white" option-value="Id" option-label="Name"
v-model="msg.OrderState" :options="OrderStateList" emit-value map-options label="订单状态" /> v-model="msg.OrderState" :options="OrderStateList" emit-value map-options label="订单状态" />
</div> </div>
<div class="col-3"> <div class="col-3">
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
@clear="resetSearch" maxlength="20" /> @clear="resetSearch" maxlength="20" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" standout="bg-primary text-white" option-value="Id" option-label="Name" <q-select @input="msg.OrderState==0?(msg.Q_OrderState = 1):msg.Q_OrderState=0,resetSearch()" standout="bg-primary text-white" option-value="Id" option-label="Name"
v-model="msg.OrderState" :options="OrderStateList" emit-value map-options label="订单状态" /> v-model="msg.OrderState" :options="OrderStateList" emit-value map-options label="订单状态" />
</div> </div>
<div class="col-3"> <div class="col-3">
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
@clear="resetSearch" maxlength="20" /> @clear="resetSearch" maxlength="20" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" standout="bg-primary text-white" option-value="Id" option-label="Name" <q-select @input="msg.OrderState==0?(msg.Q_OrderState = 1):msg.Q_OrderState=0,resetSearch()" standout="bg-primary text-white" option-value="Id" option-label="Name"
v-model="msg.OrderState" :options="OrderStateList" emit-value map-options label="订单状态" /> v-model="msg.OrderState" :options="OrderStateList" emit-value map-options label="订单状态" />
</div> </div>
<div class="col-3"> <div class="col-3">
......
<style>
.studentManage .el-input {
width: 100%;
border: none;
background-color: transparent;
}
.studentManage .el-input__inner {
width: 100%;
border: none;
background-color: transparent;
}
</style>
<template> <template>
<div class="page-body"> <div class="page-body studentManage">
<div class="page-search row items-center"> <div class="page-search row items-center " >
<div class="col row wrap q-mr-lg q-col-gutter-md"> <div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3"> <div class="col-3">
<q-input @input="resetSearch" clearable standout="bg-primary text-white" v-model="msg.CourseName" label="课程名称" <q-select @input="getClass" standout="bg-primary text-white" option-value="SId" option-label="SName"
@clear="resetSearch" maxlength="20" /> v-model="msg.School_Id" :options="schoolList" emit-value map-options label="关联校区" />
</div> </div>
<div class="col-3"> <div class="col-3">
<select-tree :treeData="TreeCategoryList" :defaultArray="returnString" nodeKey="CateId" :multiple="true" <q-select @input="getClass" standout="bg-primary text-white" option-value="CourseId"
labelKey="CateName" childrenKey="ChildList" tipText="课程系列" @getChild="getChild"></select-tree> option-label="CourseName" v-model="msg.CouseId" :options="CourseList" emit-value map-options label="课程" @change=""
use-input @filter="filterCourse">
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
未找到相关数据
</q-item-section>
</q-item>
</template>
</q-select>
</div>
<div class="col-3">
<q-select @input="refreshPage" standout="bg-primary text-white" option-value="ClassId"
option-label="ClassName" v-model="msg.ClassId" :options="ClassList" emit-value map-options label="班级"
use-input @filter="filterClass" />
</div>
<div class="col-3 Sysuser_Date">
<q-field filled>
 <template v-slot:control>
<el-date-picker v-model="msg.StartDate" type="date" placeholder="开始日期" value-format="yyyy-MM-dd" :picker-options="option" :clearable ='false'
@change="resetSearch">
</el-date-picker>    
</template>
</q-field>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-input @input="resetSearch" clearable standout="bg-primary text-white" v-model="msg.GuestName" label="学生名称" <q-input @input="resetSearch" clearable standout="bg-primary text-white" v-model="msg.GuestName" label="学生名称"
@clear="resetSearch" maxlength="20" /> @clear="resetSearch" maxlength="20" />
</div> </div>
<div class="col-3">
<q-select @input="resetSearch" standout="bg-primary text-white" option-value="Id" option-label="Name"
v-model="msg.CheckStatus" :options="AttendanceList2" emit-value map-options label="出勤状态" />
</div>
</div> </div>
</div> </div>
<div class="page-content"> <div class="page-content">
...@@ -25,144 +66,101 @@ ...@@ -25,144 +66,101 @@
<q-space /> <q-space />
</template> </template>
<template v-slot:body-cell-CoverImg="props"> <template v-slot:body-cell-GuestName="props">
<q-td :props="props">
<q-img :src="props.value" spinner-color="white" style="height: 54px; max-width: 100px"
class="rounded-borders">
</q-img>
</q-td>
</template>
<template v-slot:body-cell-CourseIntro="props">
<q-td :props="props">
<span v-html="props.value"></span>
</q-td>
</template>
<template v-slot:body-cell-PreferentialList="props">
<q-td :props="props" style="padding-right:0px"> <q-td :props="props" style="padding-right:0px">
<div v-for="x in props.value"> <div v-for="x in props.row.GuestList">
<div class="border-bottom" v-if="x.PriceDiscountType == 1"> <div class="border-bottom" >
{{ x.BuyNum }}{{ x.SendNum }} {{ x.GuestName }}
</div>
<div class="border-bottom" v-if="x.PriceDiscountType == 2">
单人报名享优惠{{x.PriceMoney }}%
</div> </div>
<div class="border-bottom" v-if="x.PriceDiscountType == 3">
双人报名优惠{{x.PriceMoney }}%
</div> </div>
<div class="border-bottom" v-if="x.PriceDiscountType == 4"> <div v-if="!props.row.GuestList || props.row.GuestList.length == 0">
续费享优惠{{x.PriceMoney }}% <div class="remark-font">暂无</div>
</div>
<div class="remark-font" v-if="x.PriceDiscountType == 0">
暂无优惠政策
</div>
</div>
<div v-if="!props.value || props.value.length == 0">
<div class="remark-font">暂无优惠政策</div>
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-PreferentialListSellCommission="props"> <template v-slot:body-cell-CurrentDeductionHours="props">
<q-td :props="props" style="padding-right:0px;padding-left:0px"> <q-td :props="props" >
<div v-for="x in props.value"> <div v-for="x in props.row.GuestList">
<div class="border-bottom" style="padding-left: 16px;padding-right: 16px" <div class="border-bottom" >
:class="{ 'text-red': x.SaleCommissionType == 1 }" v-if="x.PriceDiscountType != 0"> {{ x.CurrentDeductionHours }}
{{ x.SaleCommissionType == 1 ? "¥" : ""
}}{{ x.SaleCommissionMoney
}}{{ x.SaleCommissionType == 0 ? "%" : "" }}
</div>
<div v-if="x.PriceDiscountType == 0">
<div class="remark-font">暂无佣金信息</div>
</div> </div>
</div> </div>
<div v-if="!props.value || props.value.length == 0"> <div v-if="!props.row.GuestList || props.row.GuestList.length == 0">
<div class="remark-font">暂无佣金信息</div> <div class="remark-font">暂无</div>
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-PreferentialListB2BCommission="props"> <template v-slot:body-cell-CheckStatus="props">
<q-td :props="props" style="padding-left:0px"> <q-td :props="props" >
<div v-for="x in props.value"> <div v-for="x in props.row.GuestList">
<div class="border-bottom" style="padding-left: 16px" :class="{ 'text-red': x.B2BCommissionType == 1 }" <div class="border-bottom" >
v-if="x.PriceDiscountType != 0"> <span v-if="x.CheckStatus == 0">正常</span>
{{ x.B2BCommissionType == 1 ? "¥" : "" <span v-if="x.CheckStatus == 1">缺席</span>
}}{{ x.B2BCommissionMoney <span v-if="x.CheckStatus == 2">请假</span>
}}{{ x.B2BCommissionType == 0 ? "%" : "" }}
</div>
<div v-if="x.PriceDiscountType == 0">
<div class="remark-font">暂无佣金信息</div>
</div>
</div>
<div v-if="!props.value || props.value.length == 0">
<div class="remark-font">暂无佣金信息</div>
</div>
</q-td>
</template>
<template v-slot:body-cell-EducationCommission="props">
<q-td :props="props" style="padding-left:0px">
<div v-for="x in props.value">
<div class="border-bottom" style="padding-left: 16px" :class="{ 'text-red': x.EduCommissionType == 1 }"
v-if="x.PriceDiscountType != 0">
{{ x.EduCommissionType == 1 ? "¥" : ""
}}{{ x.EduCommissionMoney
}}{{ x.EduCommissionType == 0 ? "%" : "" }}
</div>
<div v-if="x.PriceDiscountType == 0">
<div class="remark-font">暂无佣金信息</div>
</div> </div>
</div> </div>
<div v-if="!props.value || props.value.length == 0"> <div v-if="!props.row.GuestList || props.row.GuestList.length == 0">
<div class="remark-font">暂无佣金信息</div> <div class="remark-font">暂无</div>
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-Status="props">
<q-td :props="props">
<q-badge :color="props.value == 1 ? 'negative' : 'primary'" :label="props.value == 0 ? '正常' : '删除'" />
</q-td>
</template>
<template v-slot:bottom> <template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount" <!-- <q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount"
:input="true" @input="changePage" /> :input="true" @input="changePage" /> -->
</template> </template>
<template v-slot:body-cell-optioned="props"> <template v-slot:body-cell-optioned="props">
<q-td :props="props"> <q-td :props="props" >
<div v-for="x in props.row.GuestList">
<div class="border-bottom" >
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="编辑" <q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="编辑"
@click="EditCourse(props.row, 1)" /> @click="EditCourse(x,props.row)" />
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="价格设置" </div>
@click="EditCourse(props.row, 2)" v-if="isHavePriceAction" /> </div>
<q-btn-dropdown flat size="xs" color="dark" label="更多" style="margin-left:10px;">
<q-list>
<q-item clickable v-close-popup @click="DeleteCourse(props.row,1)" v-if="props.row.Status==0">
<q-item-section>
<q-item-label>删除</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="DeleteCourse(props.row,0)" v-if="props.row.Status==1">
<q-item-section>
<q-item-label>恢复</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="goMycourse(props.row)">
<q-item-section>
<q-item-label>课程详情</q-item-label>
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
</q-td> </q-td>
</template> </template>
</q-table> </q-table>
</div> </div>
<!-- 修改状态 -->
<q-dialog v-model="IsShowDialog" persistent transition-show="scale"
transition-hide="scale">
<q-card style="width: 400px;max-width:500px;">
<q-card-section>
<div class="text-h6">修改出勤状态</div>
</q-card-section>
<q-card-section class="q-pt-none scroll" style="max-height: 70vh">
<q-select standout="bg-primary text-white" option-value="Id" option-label="Name"
v-model="editMsg.CheckStatus" :options="AttendanceList" emit-value map-options label="出勤状态" />
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="IsShowDialog=false" />
<q-btn label="立即提交" color="accent" class="q-px-md" style="font-weight:400 !important"
@click="saveAttendance" />
</q-card-actions>
</q-card>
</q-dialog>
</div> </div>
</template> </template>
<script> <script>
import { import {
queryCoursePage,
queryCourseCategoryTree,
deleteCourseInfo
} from "../../api/course/index";
addClassCheck
} from '../../api/course/class';
import {
queryCourseDropdownList,
} from '../../api/course/index' //课程下拉
//获取校区列表
import {
getSchoolDropdown,
deleteClass,
getClassDropDownList
} from '../../api/school/index';
import{
getStudentAttendanceDayStatistics
} from "../../api/stuMan/index"
import selectTree from "../../components/common/select-tree"; import selectTree from "../../components/common/select-tree";
import { openURL } from "quasar"; import { openURL } from "quasar";
...@@ -175,99 +173,70 @@ ...@@ -175,99 +173,70 @@
}, },
data() { data() {
return { return {
currentUrl: "", columns: [
columns: [{
name: "CoverImg",
label: "课程封面",
field: "CoverImg",
align: "left"
},
{ {
name: "CourseName", name: "ClassName",
required: true, required: true,
label: "课程名称", label: "班级",
align: "left", align: "left",
field: row => row.CourseName field: row => row.ClassName
}, },
{ {
name: "CateName", name: "CourseName",
required: true, required: true,
label: "系列", label: "课程",
align: "left", align: "left",
field: row => row.CateName field: row => row.CourseName
}, },
{ {
name: "OriginalPrice", name: "TeacherName",
required: true, required: true,
label: "原价", label: "老师",
align: "left", align: "left",
field: row => row.OriginalPrice.toFixed(2) field: row => row.TeacherName
}, },
{ {
name: "SellPrice", name: "ClassDate",
required: true, required: true,
label: "售价", label: "上课日期",
align: "left", align: "left",
field: row => row.SellPrice.toFixed(2) field: row => row.ClassDate
}, },
{ {
name: "PreferentialList", name: "TimeBucket",
required: true, required: true,
label: "优惠政策", label: "上课时间段",
align: "left", align: "left",
field: row => row.PreferentialList field: row => row.TimeBucket
}, },
{ {
name: "PreferentialListSellCommission", name: "GuestName",
required: true, required: true,
label: "销售佣金", label: "学生",
align: "left", align: "left",
field: row => row.PreferentialList field: row => row.GuestName
}, },
{ {
name: "PreferentialListB2BCommission", name: "CurrentDeductionHours",
required: true, required: true,
label: "同行佣金", label: "课时",
align: "left", align: "left",
field: row => row.PreferentialList field: row => row.CurrentDeductionHours
}, },
{ {
name: "EducationCommission", name: "CheckStatus",
required: true, required: true,
label: "教育同行佣金",
align: "left",
field: row => row.PreferentialList
},
{
name: "ClassHours",
label: "课时长度",
field: "ClassHours",
align: "left",
format: (val, row) => `${val}课时`
},
{
name: "CreateByName",
label: "创建人",
field: "CreateByName",
align: "left"
},
{
name: "UpdateTimeStr",
label: "更新时间",
field: "UpdateTimeStr",
align: "left"
},
{
name: "Status",
label: "状态", label: "状态",
align: "left", align: "left",
field: "Status" field: row => row.CheckStatus
}, },
{ {
name: "optioned", name: "optioned",
label: "操作", label: "操作",
field: "CourseId" align: "left",
field: row => row.optioned
} }
], ],
data: [], data: [],
...@@ -286,115 +255,150 @@ ...@@ -286,115 +255,150 @@
} }
], ],
msg: { msg: {
StartDate:'', StartDate:'2021-07-20',
School_Id:-1, School_Id:-1,
CouseId:'', CouseId:0,
ClassId:'', ClassId:0,
OrderGuestId:'', OrderGuestId:'',
GuestName:'', GuestName:'',
CheckStatus:-1,
}, },
IsShowDialog:false,
//课程分类树形列表 //课程分类树形列表
TreeCategoryList: [], TreeCategoryList: [],
returnString: [], //默认值 returnString: [], //默认值
pageCount: 0, CourseList: [], //关联课程下拉数据
isShowCourseForm: false, //是否显示课程表单 AllCourseList: [],
isShowCoursePriceForm: false, //是否显示课程价格表单 ClassList: [], //班级下拉
courseObjOption: null, //课程对象 allClassList: [],
isShowPriceEditBtn: 1 //是否显示价格设置 AttendanceList2:[{Name:'全部',Id:-1},{Name:'缺席',Id:1},{Name:'请假',Id:2},],
AttendanceList:[{Name:'正常',Id:0},{Name:'缺席',Id:1},{Name:'请假',Id:2},],
option:{
disabledDate:(time)=> {
return time.getTime() > Date.now()
}
},
schoolList: [],
editMsg:{//修改的对象
CheckStatus:0,
StudyNum:0,
},
iseditjurisdiction:false,
}; };
}, },
mounted() { mounted() {
if(this.$route.query && this.$route.query.Name){//从订单完成统计跳转过来的带的参数 let userinfo = this.getLocalStorage();
this.msg.CourseName = decodeURI(this.$route.query.Name) userinfo.ActionMenuList.map(x=>{//判断权限
if(x.FunctionCode == "Student_Attendance"){//判断是否有修改状态的权限
this.iseditjurisdiction = true;
} }
this.getCategorytree();
this.currentUrl = this.$route.path; })
this.getcourselist(); let d = new Date();
let year = d.getFullYear();
let month = d.getMonth() + 1;
month = month < 10 ? '0' + month : month;
let day = d.getDate();
day = day < 10 ? '0' + day : day;
let today = year + '-' + month + '-' + day;
this.msg.StartDate = today;
this.getlist();
this.getSchool()
this.getClass()
this.getCourseList()
}, },
methods: { methods: {
//删除课程 //获取校区列表
DeleteCourse(item, status) { getSchool() {
let delMsg = { getSchoolDropdown({}).then(res => {
CourseId: item.CourseId, if (res.Code == 1) {
Status: status var tempArray = res.Data;
}; if (!tempArray) {
var message = "是否要删除该课程?"; tempArray = [];
if (status == 0) { }
message = "是否要恢复该课程?"; tempArray.unshift({
SId: -1,
SName: "不限"
})
this.schoolList = tempArray;
} }
this.$q.dialog({ })
title: '提示信息', },
message: message, //获取课程
cancel: true, getCourseList() {
persistent: true, queryCourseDropdownList({
ok: "确定", IsQPrice: 1
cancel: "取消", }).then(res => {
}).onOk(() => {
deleteCourseInfo(delMsg).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.$q.notify({ this.CourseList = res.Data;
icon: 'iconfont icon-chenggong', var obj = {
color: 'accent', CourseName: '不限',
timeout: 2000, CourseId: 0
message: '删除成功!', }
position: 'top' this.CourseList.unshift(obj);
this.AllCourseList = JSON.parse(JSON.stringify(this.CourseList));
}
}) })
this.getcourselist(); },
//筛选课程
filterCourse(val, update) {
update(() => {
if (val === '') {
this.CourseList = JSON.parse(JSON.stringify(this.AllCourseList))
} else { } else {
this.$q.notify({ const needle = val.toLowerCase();
icon: 'iconfont icon-chenggong', this.CourseList = this.AllCourseList.filter(v => v.CourseName.toLowerCase().indexOf(needle) > -1);
color: 'accent',
timeout: 2000,
message: res.Message,
position: 'top'
})
} }
}) })
}).onCancel(() => {
});
}, },
gotoSub(obj, routeStr) { //获取班级下拉
var tempStr = "/course/" + routeStr + "?CourseId=" + obj.CourseId; getClass() {
this.$router.push({
path: tempStr getClassDropDownList({
CourseId: this.msg.CouseId,
SchoolId:this.msg.School_Id,
IsAddDefault: 0, //添加默认选项
}).then(res => {
if (res.Code == 1) {
var jsonData = res.Data;
jsonData.unshift({
ClassId: 0,
ClassName: "不限"
})
if (jsonData && jsonData.length > 0) {
this.ClassList = JSON.parse(JSON.stringify(jsonData));
this.allClassList = JSON.parse(JSON.stringify(jsonData));;
}
this.msg.ClassId = 0
this.refreshPage()
}
}); });
}, },
//分类改变 //筛选班级
getChild(cateObj) { filterClass(val, update) {
var tempStr = ""; update(() => {
if (cateObj && cateObj != "") { if (val === '') {
tempStr = cateObj; this.ClassList = JSON.parse(JSON.stringify(this.allClassList))
} else {
const needle = val.toLowerCase()
this.ClassList = this.allClassList.filter(v => v.ClassName.toLowerCase().indexOf(needle) > -1)
} }
this.msg.QCateIds = tempStr; })
this.msg.pageIndex = 1;
this.getcourselist();
},
getCategorytree() {
this.TreeCategoryList = [];
var qMsg = {};
queryCourseCategoryTree(qMsg).then(res => {
this.TreeCategoryList = res.Data;
});
}, },
//重新查询 //重新查询
resetSearch() { resetSearch() {
this.getcourselist(); this.getlist();
},
//翻页
changePage(val) {
this.msg.pageIndex = val;
this.getcourselist();
}, },
//获取菜单分页列表 //获取菜单分页列表
getcourselist() { getlist() {
this.loading = true; this.loading = true;
queryCoursePage(this.msg) getStudentAttendanceDayStatistics(this.msg)
.then(res => { .then(res => {
this.loading = false; this.loading = false;
this.data = res.Data.PageData; this.data = res.Data;
this.pageCount = res.Data.PageCount;
}) })
.catch(() => { .catch(() => {
this.loading = false; this.loading = false;
...@@ -402,36 +406,45 @@ ...@@ -402,36 +406,45 @@
}, },
//刷新页面 //刷新页面
refreshPage() { refreshPage() {
this.isShowCourseForm = false; this.getlist();
this.isShowCoursePriceForm = false;
this.getcourselist();
}, },
//新增修改课程及价格 EditCourse(x,row){
EditCourse(obj, type) { console.log(row)
if (obj) { this.editMsg.CheckStatus = x.CheckStatus;
this.courseObjOption = obj; this.editMsg.StudyNum = x.StudyNum;
} else { this.editMsg.ClassDate = row.ClassDate ;
this.courseObjOption = null; this.editMsg.ClassRoomId = row.ClassRoomId ;
} this.editMsg.ClassTimeId = x.ClassTimeId ;
if (type == 1) { this.editMsg.OrderGuestId = x.OrderGuestId ;
this.isShowCourseForm = true; this.editMsg.School_Id = row.School_Id ;
} else { this.editMsg.TeacherId = row.TeacherId ;
this.isShowCoursePriceForm = true; this.editMsg.classId = row.ClassId ;
}
}, this.IsShowDialog = true
//关闭弹窗
closeMenuSaveForm() {
this.isShowCourseForm = false;
this.isShowCoursePriceForm = false;
}, },
//跳转至我的课程 //跳转至我的课程
goMycourse(obj) { goMycourse(obj) {
var tempStr = window.location.origin +"/#/course/courseinfo?CourseId=" + obj.CourseId; var tempStr = window.location.origin +"/#/course/courseinfo?CourseId=" + obj.CourseId;
// this.$router.push({
// path: tempStr
// });
openURL(tempStr) openURL(tempStr)
},
saveAttendance(){//修改出勤状态
let signMsg = []
signMsg.push(this.editMsg)
addClassCheck(signMsg).then(res => {
if (res.Code == 1) {
this.getlist();
this.IsShowDialog = false
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '操作成功',
position: 'top'
})
} }
})
},
} }
}; };
...@@ -446,6 +459,5 @@ ...@@ -446,6 +459,5 @@
</style> </style>
<style lang="sass"> <style lang="sass">
@import url('~assets/css/table.sass') @import url('~assets/css/table.sass')
</style> </style>
\ No newline at end of file
...@@ -75,10 +75,10 @@ ...@@ -75,10 +75,10 @@
name: "5", name: "5",
label: "临时上课邀请流程" label: "临时上课邀请流程"
}, },
{ // {
name: "6", // name: "6",
label: "分拆" // label: "分拆"
} // }
], ],
tabCheck: '1', tabCheck: '1',
} }
......
...@@ -144,7 +144,7 @@ ...@@ -144,7 +144,7 @@
import temporaryClassForm from '../../components/sale/temporaryClassbill-form'; import temporaryClassForm from '../../components/sale/temporaryClassbill-form';
export default { export default {
meta: { meta: {
title: "退课单据" title: "业务单据"
}, },
components: { components: {
backbillForm, backbillForm,
......
...@@ -1051,7 +1051,12 @@ const routes = [{ ...@@ -1051,7 +1051,12 @@ const routes = [{
path: "/stuMan/stuList",//学管 学员名单 path: "/stuMan/stuList",//学管 学员名单
component: () => component: () =>
import("pages/stuMan/stuList") import("pages/stuMan/stuList")
}, {
path: "/stuMan/visitorRecord",//学管 访问管理
component: () =>
import("pages/stuMan/visitorRecord")
}, },
], ],
}, },
......
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