Commit baf0a283 authored by 黄奎's avatar 黄奎

页面修改

parent 9e2c5c3c
......@@ -282,7 +282,7 @@
</template>
<script>
import {getTimeDetail} from '../../api/classroom/index'
import {getVideoPlayAuth,getVideoPlayUrl} from '../../api/classroom/video'
// import {getVideoPlayAuth,getVideoPlayUrl} from '../../api/classroom/video'
import schedulVisit from './components/schedul-visit'
import schedulHead from './components/schedul-head'
......
<template>
<div class="classHourReward page-body">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-select @input="resetSearch" standout="bg-primary text-white" option-value="TId" option-label="TeacherName"
v-model="msg.TeacherId" :options="TeacherList" emit-value map-options label="带班老师" />
</div>
<div class="col-3 Sysuser_Date">
<q-field filled>
 <template v-slot:control>
<el-date-picker v-model="msg.Month" @change="resetSearch" type="month" clearable @clear="resetSearch">
</el-date-picker>       
</template>
</q-field>
</div>
</div>
</div>
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table"
separator="none" title="" :data="data" :columns="columns" row-key="name">
<template v-slot:top="props">
<div class="col-2 q-table__title">教师课时统计</div>
<q-space />
<q-btn color="accent" style="float:right;margin-right:0;" size="sm" class="q-mr-md" icon="add"
label="新增课时奖励" @click="drawer=true"></q-btn>
</template>
<template v-slot:body-cell-State="props">
<q-td :props="props">
<div class="state-item" v-if="props.row.State==1" style="background: rgba(255, 204, 0, 0.2);color: #EDBE00">
{{props.row.StateName}}
</div>
<div class="state-item" v-if="props.row.State==2" style="background: rgba(2, 196, 153, 0.2);color: #02C499">
{{props.row.StateName}}
</div>
<div class="state-item" v-if="props.row.State==3" style="background: rgba(247, 46, 82, 0.2);color: #F72E52">
{{props.row.StateName}}
</div>
<div class="state-item" v-if="props.row.State==4" style="background: rgba(41, 97, 254, 0.2);color: #2961FE">
{{props.row.StateName}}
</div>
</q-td>
</template>
<template v-slot:body-cell-TeacherList="props">
<q-td :props="props">
<span style="color: #3FC4FF;cursor: pointer"
v-if="props.row.TeacherList.length>0&&props.row.TeacherList[0].TeacherName">{{props.row.TeacherList[0].TeacherName}}{{props.row.TeacherList.length>1?('等'+props.row.TeacherList.length+'位老师'):''}}
<q-popup-proxy>
<q-banner>
<div class="price-popup">
<div class="row " v-for="(x,index2) in props.row.TeacherList" :key="index2"
style="width: 200px;justify-content: space-between;align-items: center;margin: 7px 0;cursor: pointer">
<div class="row" @click="goDetailed(props.row,x.TeacherId)">
<span style="color:#2D2D2D;">{{x.TeacherName}}</span>
</div>
<span style="color: #2860FB">{{x.Money.toFixed(2)}}</span>
</div>
</div>
</q-banner>
</q-popup-proxy>
</span>
</q-td>
</template>
<template v-slot:body-cell-Money="props">
<q-td :props="props">
<span style="color:var(--q-color-negative)">{{props.row.Money.toFixed(2)}}</span>
</q-td>
</template>
<template v-slot:body-cell-FrIdList="props">
<q-td :props="props">
<div class="row wrap" style="width: 100%;">
<div class="frIdlist row" v-for="(x,j) in props.row.FrIdList" :key="j" @click="goUrl('FinancialDocumentsDetail',x)">
<span style="font-size: 14px;color: #111111">{{x}}</span>
</div>
</div>
</q-td>
</template>
<template v-slot:body-cell-optioned="props">
<q-td :props="props">
<q-btn-dropdown flat size="xs" color="dark" label="更多" style="margin-left:10px;"
v-if="props.row.State==1 || ((props.row.State==1 || props.row.State==2) && props.row.FrIdList==0) || (props.row.State==2 && props.row.FrIdList==0 && props.row.Money>0) "
>
<q-list>
<q-item clickable v-close-popup v-if="props.row.State==1">
<q-item-section @click="gostudent(props.row,1)">
<q-item-label>确认</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup
v-if="(props.row.State==1 || props.row.State==2) && props.row.FrIdList==0">
<q-item-section @click="gostudent(props.row,2)">
<q-item-label>取消</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup v-if="props.row.State==2 && props.row.FrIdList==0 && props.row.Money>0">
<q-item-section @click="systemShan(props.row)">
<q-item-label>制单</q-item-label>
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
<q-btn flat size="xs" icon="iconfont icon-xiangqing-" style="font-weight:400;color: #3FC4FF" class="q-mr-xs"
label="明细" @click="goDetailed(props.row,'0')" />
</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" />
</template>
</q-table>
</div>
<!-- 一键制单-->
<q-dialog v-model="ISsystem" persistent>
<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">
<div class="col">
<q-radio v-model="FinanceMsg.IsPublic" val="0" label="私账" />
<q-radio v-model="FinanceMsg.IsPublic" val="1" label="公账" />
</div>
<div class="col" style="margin-top: 20px">
<q-select standout="bg-primary text-white" option-value="ID" option-label="Name"
v-model="FinanceMsg.CurrencyId" :options="coinGetList" emit-value map-options label="币种" />
</div>
</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="ISsystem=false,Resetsystem()" v-if="!Floading" />
<q-btn label="立即制单" color="accent" class="q-px-md" style="font-weight:400 !important" :loading="Floading"
@click="savesystem()" />
</q-card-actions>
</q-card>
</q-dialog>
<el-drawer title="" :visible.sync="drawer" :with-header="false" >
<div style="padding: 15px" class="class-popover">
<div style="font-size: 18px;font-weight: bold;color:#2D2D2D;font-family: 'perfectFont'">新增课时奖励</div>
<q-select class="col-12 q-pb-lg q-pr-lg" multiple clearable filled stack-label use-input use-chips
option-value="TId" option-label="TeacherName" v-model="tempManager" ref="ManagerId" :rules="[val => !!val || '请选择课时奖励']" :options="TeacherList"
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 class="col-12">
<div class="col-12 Sysuser_Date">
<q-field filled>
  <template v-slot:control>
<el-date-picker v-model="addMsg.Month"   type="month" style="border:none;" format='yyyy-MM'
:picker-options="pickerOptions"></el-date-picker>       
</template>
</q-field>
</div>
</div>
<div class="row col" style="margin-top: 30px">
<q-btn class="q-mr-md" size="sm" label="取消" @click="drawer=false" />
<q-btn color="accent" size="sm" class="q-mr-md" label="保存" @click="saveOrderInfo()" :loading="Dloading" />
</div>
</div>
<!-- TODO 没显示出来-->
<div class="dialog-out-close" @click="drawer=false"
style="height:40px !important;border-top-left-radius: 4px !important;border-bottom-left-radius: 4px !important;">
<q-icon name="iconfont icon-jujue1" size="26px" />
</div>
</el-drawer>
</div>
</template>
<script>
import {
getTeachingBonusPageList,
getBonusStateEnumList, //教师奖励状态 枚举
setTeachingBonusAdd, //新增课时奖励
setTeachingBonusState, //教师绩效 设置状态
setTeachingBonusFinance, //教师奖励 生成财务单据
} from '../../api/course/class'
import {
getTeacherDropDownList,
} from '../../api/school/index';
export default {
meta: {
title: "教师课时奖励"
},
name: "classHourReward",
data() {
return {
loading: false,
ISsystem: false,
Floading: false,
Dloading: false,
drawer: false,
data: [],
pageCount: 0,
msg: {
pageIndex: 1,
pageSize: 10,
rowsPerPage: 10,
Month: '',
TeacherId: 0,
State: 0,
},
//公告column
columns: [{
name: 'State',
label: '状态',
align: 'left'
},
{
name: 'Month',
field: 'Month',
label: '月份',
align: 'left',
},
{
name: 'TeacherList',
label: '关联老师',
align: 'left'
},
{
name: 'Money',
label: '发放总金额',
align: 'left'
},
{
name: 'UpdateTime',
label: '生成时间',
field: 'UpdateTime',
align: 'left'
},
{
name: 'FrIdList',
label: '财务单据',
align: 'left'
},
{
name: 'UpdateByName',
label: '操作人',
align: 'left',
field: 'UpdateByName'
}, {
name: 'optioned',
label: '操作',
field: 'DeptId'
}
],
TeacherList: [], //关联教师下拉数据
AllTeacherList: [], //保存值
StateList: [], //状态下拉
tempManager: [],
visible: false,
addMsg: { //新增课时奖励
Month: '',
TeacherIds: '',
},
coinGetList: [], //币种数组
FinanceMsg: { //生成财务单据的参数
BonusId: 0,
IsPublic: '0',
CurrencyId: '',
},
pickerOptions: {
disabledDate(time) {
let nowdate = new Date();
let upperMonth = nowdate.setMonth(nowdate.getMonth()-1)//小于本月
return time.getTime() > upperMonth;
},
},
}
},
created() {
this.getList();
this.GetTeacherList()
this.GetBonusStateList()
this.financeinfo_post_GetList()
let nowdate = new Date();
let upperMonth = new Date(nowdate.setMonth(nowdate.getMonth()-1))//小于本月
this.addMsg.Month = upperMonth.getFullYear()+'-'+(upperMonth.getMonth()+1)
},
methods: {
financeinfo_post_GetList() { // 获取币种
this.apipost('financeinfo_post_GetList', {
Name: '',
TCID: 0
}, res => {
if (res.data.resultCode == 1) {
this.coinGetList = res.data.data;
this.FinanceMsg.CurrencyId = this.coinGetList[0].ID
}
}, err => {})
},
resetSearch() {
this.msg.pageIndex = 1;
this.getList()
},
//翻页
changePage(val) {
this.msg.pageIndex = val;
this.getList()
},
getList() {
this.loading = true;
getTeachingBonusPageList(this.msg).then(res => {
this.loading = false
this.data = res.Data.PageData
this.pageCount = res.Data.PageCount;
}).catch(() => {
this.loading = false
})
},
//获取教师下拉
GetTeacherList() {
getTeacherDropDownList({}).then(res => {
if (res.Code == 1) {
this.TeacherList = res.Data;
this.TeacherList.unshift({
TId: 0,
TeacherName: "不限"
})
this.AllTeacherList = this.TeacherList
}
})
},
GetBonusStateList() {
getBonusStateEnumList({}).then(res => {
if (res.Code == 1) {
this.StateList = res.Data;
this.StateList.unshift({
Id: 0,
Name: "不限"
})
}
})
},
//筛选员工
filterFn(val, update) {
update(() => {
if (val === '') {
this.TeacherList = JSON.parse(JSON.stringify(this.AllTeacherList))
} else {
const needle = val.toLowerCase()
this.TeacherList = this.AllTeacherList.filter(v => v.TeacherName.toLowerCase().indexOf(needle) > -1)
}
})
},
saveOrderInfo() {
if (this.tempManager && this.tempManager.length > 0) {
let all = false
this.tempManager.forEach(x => {
if (x == 0) {
all = true
}
})
if (all == true) { //如果选了全部 就不所有老师带过去
let data = []
this.AllTeacherList.forEach(x => {
if (x.TId != 0) {
data.push(x.TId)
}
})
this.addMsg.TeacherIds = data.join(',')
} else {
this.addMsg.TeacherIds = this.tempManager.join(',')
}
} else {
this.$q.notify({
type: 'negative',
position: 'top',
timeout: 1500,
message: `请选择教师!`
})
return
}
if (this.addMsg.Month == '' || this.addMsg.Month == null) {
this.$q.notify({
type: 'negative',
position: 'top',
timeout: 1500,
message: `请选择月份`
})
return
}
let date = new Date(this.addMsg.Month)
this.addMsg.Month = date.getFullYear()+'-'+(date.getMonth()+1)
this.Dloading = true
setTeachingBonusAdd(this.addMsg).then(res => {
this.Dloading = false
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '保存成功!',
position: 'top'
})
this.resetSearch()
this.drawer = false
}
}).catch(err => {
this.Dloading = false
})
},
gostudent(item, type) { //确认
let that = this
let text = '';
if (type == 1) {
text = '确认奖励'
} else if (type == 2) {
text = '取消奖励'
}
this.$q.dialog({
title: '提示信息',
message: text,
cancel: true,
persistent: true,
html: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
setTeachingBonusState({
BonusId: item.Id,
Type: type
}).then(res => {
if (res.Code == 1) {
that.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '操作成功',
position: 'top'
})
that.getList()
}
})
}).onCancel(() => {
});
},
systemShan(item) { //一键制单
this.FinanceMsg.BonusId = item.Id
this.ISsystem = true;
},
Resetsystem() {
this.FinanceMsg = {
BonusId: 0,
IsPublic: '0',
CurrencyId: '',
}
},
savesystem() {
if (this.FinanceMsg.CurrencyId == '') {
this.$q.notify({
type: 'warning',
position: 'top',
timeout: 1500,
message: `请选择币种`
})
return
}
let that = this
that.Floading = true
setTeachingBonusFinance(this.FinanceMsg).then(res => {
if (res.Code == 1) {
that.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '制单成功',
position: 'top'
})
that.getList()
that.Resetsystem()
that.Floading = false
that.ISsystem = false;
that.$forceUpdate()
}
}).catch(() => {
this.Floading = false
})
},
goexport() { //导出
},
goDetailed(item, TeacherId) { //明细
var tempStr = '/course/rewardDetailed?Id=' + item.Id + '&TeacherId=' + TeacherId;
this.$router.push({
path: tempStr
});
},
goUrl(path, rowData, ) {
this.$router.push({
path: '/financial/financalDocument/' + path,
query: {
"id": rowData,
blank: 'y',
tab: '单据详情'
}
})
},
}
}
</script>
<style>
.classHourReward .Sysuser_Date .el-input--prefix .el-input__inner {
background-color: red;
border: 0;
}
.classHourReward .state-item {
padding: 2px 5px;
border-radius: 3px;
text-align: center;
font-size: 10px;
}
.classHourReward .frIdlist {
padding: 3px 10px;
border-radius: 3px;
background: #EEEEEF;
align-items: center;
justify-content: center;
margin-right: 5px;
margin-bottom: 5px;
cursor: pointer;
}
.class-popover .q-pr-lg {
padding-right: 0;
margin-top: 20px;
}
.classHourReward .el-date-editor.el-input {
width: 100%;
}
.classHourReward .el-date-editor.el-input input {
background-color: transparent !important;
}
.classHourReward .el-range-editor .el-range-input {
background: none;
}
.Sysuser_Date .el-input__inner {
background: transparent !important;
border: 0 !important;
}
.classHourReward .el-drawer.rtl{
overflow: inherit;
}
</style>
......@@ -613,6 +613,11 @@ const routes = [{
component: () =>
import("pages/sale/visitorRegistrat.vue")
},
{
path: "/course/teacherHours", //教学奖励 教师课时统计
component: () =>
import("pages/course/teacherHours.vue")
},
{
path: "/course/classHourReward", //教学奖励 课时奖励
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