Commit 48896a1f authored by 黄奎's avatar 黄奎

页面修改

parent 36a7b8ca
...@@ -83,13 +83,13 @@ ...@@ -83,13 +83,13 @@
<div class="row wrap"> <div class="row wrap">
<div class="col-6"> <div class="col-6">
<q-input filled stack-label :disable="!isHaveCourseHoursEdit" <q-input filled stack-label :disable="!isHaveCourseHoursEdit"
@keyup.native="checkPrice(objOption, 'ClassHours')" reverse-fill-mask v-model="objOption.ClassHours" @keyup.native="checkPrice(objOption, 'ChineseHours')" reverse-fill-mask v-model="objOption.ChineseHours"
ref="ClassHours" class="col-6 q-pr-lg q-pb-lg" label="课时数量" :rules="[val => !!val || '请填写课时信息']" /> ref="ChineseHours" class="col-6 q-pr-lg q-pb-lg" label="中教课时" />
</div> </div>
<div class="col-6"> <div class="col-6">
<q-select filled stack-label @input="changeCourseSubject(objOption.CateId)" option-value="CateId" <q-input filled stack-label :disable="!isHaveCourseHoursEdit"
option-label="CateName" v-model="objOption.CateId" ref="CateId" :options="TreeCategoryList" label="所属系列" @keyup.native="checkPrice(objOption, 'ForeignHours')" reverse-fill-mask v-model="objOption.ForeignHours"
class="col-6 q-pr-lg q-pb-lg" emit-value map-options :rules="[val => !!val || '请选择课程所属系列']" /> ref="ForeignHours" class="col-6 q-pr-lg q-pb-lg" label="外教课时" />
</div> </div>
</div> </div>
<div class="row wrap"> <div class="row wrap">
...@@ -99,13 +99,18 @@ ...@@ -99,13 +99,18 @@
class="col-6 q-pr-lg q-pb-lg" emit-value map-options /> class="col-6 q-pr-lg q-pb-lg" emit-value map-options />
</div> </div>
<div class="col-6"> <div class="col-6">
<q-select filled stack-label option-value="Id" option-label="Name" v-model="objOption.CourseRate" <q-select filled stack-label @input="changeCourseSubject(objOption.CateId)" option-value="CateId"
ref="CourseRate" :options="courseLevelList" label="课程等级" class="col-6 q-pr-lg q-pb-lg" emit-value option-label="CateName" v-model="objOption.CateId" ref="CateId" :options="TreeCategoryList" label="所属系列"
map-options /> class="col-6 q-pr-lg q-pb-lg" emit-value map-options :rules="[val => !!val || '请选择课程所属系列']" />
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-6">
<q-select filled stack-label option-value="Id" option-label="Name" v-model="objOption.CourseRate"
ref="CourseRate" :options="courseLevelList" label="课程等级" class="col-6 q-pr-lg q-pb-lg" emit-value
map-options />
</div>
<q-field label="是否支持约课报名" stack-label filled class="col-6 q-pr-lg q-pb-lg"> <q-field label="是否支持约课报名" stack-label filled class="col-6 q-pr-lg q-pb-lg">
<template v-slot:control> <template v-slot:control>
<div class="row col-12"> <div class="row col-12">
...@@ -114,10 +119,20 @@ ...@@ -114,10 +119,20 @@
</div> </div>
</template> </template>
</q-field> </q-field>
<q-select filled stack-label option-value="Id" option-label="Name" v-model="objOption.CourseTimeId"
ref="CourseTime" :options="CourseTimeList" label="关联上课时段" class="col-6 q-pr-lg q-pb-lg" emit-value
map-options />
</div> </div>
<div class="row">
<div class="col-6">
<q-select filled stack-label option-value="Id" option-label="Name" v-model="objOption.CourseTimeId"
ref="CourseTime" :options="CourseTimeList" label="关联上课时段" class="col-6 q-pr-lg q-pb-lg" emit-value
map-options />
</div>
<div class="col-6">
<q-select filled stack-label option-value="Id" option-label="Name" v-model="objOption.OpenBankLevelList"
multiple use-chips ref="LevelData" :options="LevelData" label="课程关联题库" class="col-6 q-pr-lg q-pb-lg"
emit-value map-options />
</div>
</div>
<div class="row" v-if="objOption.IsScrollClass==1"> <div class="row" v-if="objOption.IsScrollClass==1">
<q-input filled stack-label v-model="objOption.ScrollMinNum" ref="ScrollMinNum" class="col-6 q-pr-lg q-pb-lg" <q-input filled stack-label v-model="objOption.ScrollMinNum" ref="ScrollMinNum" class="col-6 q-pr-lg q-pb-lg"
label="最小上课人数" :rules="[val => !!val || '请填写最小上课人数']" /> label="最小上课人数" :rules="[val => !!val || '请填写最小上课人数']" />
...@@ -125,10 +140,10 @@ ...@@ -125,10 +140,10 @@
label="最大上课人数" :rules="[val => !!val || '请填写最大上课人数']" /> label="最大上课人数" :rules="[val => !!val || '请填写最大上课人数']" />
</div> </div>
<div class="row"> <div class="row">
<q-input filled stack-label v-model="objOption.FreeCoffeeNum" ref="FreeCoffeeNum" class="col-6 q-pr-lg q-pb-lg" <q-input filled stack-label v-model="objOption.FreeCoffeeNum" ref="FreeCoffeeNum"
label="赠送咖啡杯数" :rules="[val => val >=0 || '请填写赠送咖啡杯数']" /> class="col-6 q-pr-lg q-pb-lg" label="赠送咖啡杯数" :rules="[val => val >=0 || '请填写赠送咖啡杯数']" />
<q-input filled stack-label v-model="objOption.AddHoursMoney" ref="AddHoursMoney" class="col-6 q-pr-lg q-pb-lg" <q-input filled stack-label v-model="objOption.AddHoursMoney" ref="AddHoursMoney"
label="课程增加课时费" :rules="[val => val >=0 || '请填写课程增加课时费']" /> class="col-6 q-pr-lg q-pb-lg" label="课程增加课时费" :rules="[val => val >=0 || '请填写课程增加课时费']" />
</div> </div>
<div class="row wrap"> <div class="row wrap">
<div class="col-6"> <div class="col-6">
...@@ -153,13 +168,7 @@ ...@@ -153,13 +168,7 @@
style="display:none" /> style="display:none" />
</div> </div>
</div> </div>
<div class="row wrap">
<div class="col-6">
<q-select filled stack-label option-value="Id" option-label="Name" v-model="objOption.OpenBankLevelList" multiple
use-chips ref="LevelData" :options="LevelData" label="课程关联题库" class="col-6 q-pr-lg q-pb-lg"
emit-value map-options />
</div>
</div>
<div class="row wrap"> <div class="row wrap">
<div class="col-12 q-pr-lg q-pb-lg"> <div class="col-12 q-pr-lg q-pb-lg">
<q-input v-model="objOption.ContractInfo" filled type="textarea" placeholder="合同补充协议" /> <q-input v-model="objOption.ContractInfo" filled type="textarea" placeholder="合同补充协议" />
...@@ -267,8 +276,10 @@ ...@@ -267,8 +276,10 @@
FreeCoffeeNum: 0, // 赠送咖啡 FreeCoffeeNum: 0, // 赠送咖啡
AddHoursMoney: 0, // 课程增加课时费 AddHoursMoney: 0, // 课程增加课时费
CourseTimeId: 0, // 关联上课时段 CourseTimeId: 0, // 关联上课时段
ContractInfo: "",//合同补充协议 ContractInfo: "", //合同补充协议
OpenBankLevelList: [] OpenBankLevelList: [], //开放题库
ChineseHours: "", //中教课时
ForeignHours: "", //外教课时
}, },
CourseTimeList: [], //上课时段列表 CourseTimeList: [], //上课时段列表
CourseEmphasis: [], //数据临时存放 CourseEmphasis: [], //数据临时存放
...@@ -288,7 +299,7 @@ ...@@ -288,7 +299,7 @@
courseLevelList: [], //课程等级列表 courseLevelList: [], //课程等级列表
courseSubjectList: [], //课程科目列表 courseSubjectList: [], //课程科目列表
keynoteList: [], //重点枚举列表 keynoteList: [], //重点枚举列表
LevelData:[] LevelData: []
}; };
}, },
created() { created() {
...@@ -327,9 +338,9 @@ ...@@ -327,9 +338,9 @@
}, },
methods: { methods: {
//获取关联考试等级 //获取关联考试等级
getLevel(){ getLevel() {
GetBankTypeList({}).then(res => { GetBankTypeList({}).then(res => {
if(res.Code==1){ if (res.Code == 1) {
this.LevelData = res.Data; this.LevelData = res.Data;
} }
}) })
...@@ -510,6 +521,8 @@ ...@@ -510,6 +521,8 @@
this.objOption.AddHoursMoney = res.Data.AddHoursMoney; this.objOption.AddHoursMoney = res.Data.AddHoursMoney;
this.objOption.CourseTimeId = res.Data.CourseTimeId; this.objOption.CourseTimeId = res.Data.CourseTimeId;
this.objOption.OpenBankLevelList = res.Data.OpenBankLevelList; this.objOption.OpenBankLevelList = res.Data.OpenBankLevelList;
this.objOption.ChineseHours = res.Data.ChineseHours;
this.objOption.ForeignHours = res.Data.ForeignHours;
this.CourseEmphasis = []; this.CourseEmphasis = [];
setTimeout(() => { setTimeout(() => {
//Todo 暂时不知道什么原因 偶尔会出现2个 所以加了一个延迟 //Todo 暂时不知道什么原因 偶尔会出现2个 所以加了一个延迟
...@@ -570,6 +583,8 @@ ...@@ -570,6 +583,8 @@
this.objOption.AddHoursMoney = 0; this.objOption.AddHoursMoney = 0;
this.objOption.CourseTimeId = 0; this.objOption.CourseTimeId = 0;
this.objOption.OpenBankLevelList = []; this.objOption.OpenBankLevelList = [];
this.objOption.ChineseHours = "";
this.objOption.ForeignHours = "";
} }
}, },
//关闭弹窗 //关闭弹窗
...@@ -580,13 +595,13 @@ ...@@ -580,13 +595,13 @@
//保存菜单 //保存菜单
saveCourse() { saveCourse() {
this.$refs.CourseName.validate(); this.$refs.CourseName.validate();
this.$refs.ClassHours.validate(); //this.$refs.ClassHours.validate();
this.$refs.CateId.validate(); this.$refs.CateId.validate();
this.$refs.FreeCoffeeNum.validate(); this.$refs.FreeCoffeeNum.validate();
this.$refs.AddHoursMoney.validate(); this.$refs.AddHoursMoney.validate();
//!this.$refs.ClassHours.hasError &&
if ( if (
!this.$refs.CourseName.hasError && !this.$refs.CourseName.hasError &&
!this.$refs.ClassHours.hasError &&
!this.$refs.CateId.hasError && !this.$refs.CateId.hasError &&
!this.$refs.FreeCoffeeNum.hasError && !this.$refs.FreeCoffeeNum.hasError &&
!this.$refs.AddHoursMoney.hasError !this.$refs.AddHoursMoney.hasError
......
...@@ -1640,7 +1640,6 @@ ...@@ -1640,7 +1640,6 @@
item.tab = tab; item.tab = tab;
this.myorderObjOption = item; this.myorderObjOption = item;
this.isShowmyorderForm = true; this.isShowmyorderForm = true;
console.log(this.myorderObjOption,'====')
}, },
//关闭订单详情 //关闭订单详情
closeMOSaveForm() { closeMOSaveForm() {
......
...@@ -3,109 +3,50 @@ ...@@ -3,109 +3,50 @@
<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 <q-input @input="resetSearch" clearable standout="bg-primary text-white" v-model="msg.CourseName" label="课程名称"
@input="resetSearch" @clear="resetSearch" maxlength="20" />
clearable
standout="bg-primary text-white"
v-model="msg.CourseName"
label="课程名称"
@clear="resetSearch"
maxlength="20"
/>
</div> </div>
<div class="col-3"> <div class="col-3">
<select-tree <select-tree :treeData="TreeCategoryList" :defaultArray="returnString" nodeKey="CateId" :multiple="true"
:treeData="TreeCategoryList" labelKey="CateName" childrenKey="ChildList" tipText="课程系列" @getChild="getChild"></select-tree>
:defaultArray="returnString"
nodeKey="CateId"
:multiple="true"
labelKey="CateName"
childrenKey="ChildList"
tipText="课程系列"
@getChild="getChild"
></select-tree>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select <q-select @input="resetSearch" standout="bg-primary text-white" v-model="msg.CourseSubject"
@input="resetSearch" :options="CourseSubjectList" option-label="SubjectName" option-value="Id" emit-value map-options
standout="bg-primary text-white" label="所属科目" clearable />
v-model="msg.CourseSubject"
:options="CourseSubjectList"
option-label="SubjectName"
option-value="Id"
emit-value
map-options
label="所属科目"
clearable
/>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select <q-select @input="resetSearch" standout="bg-primary text-white" v-model="msg.Status" :options="ShowOpts"
@input="resetSearch" emit-value map-options label="状态" />
standout="bg-primary text-white"
v-model="msg.Status"
:options="ShowOpts"
emit-value
map-options
label="状态"
/>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select <q-select @input="resetSearch" standout="bg-primary text-white" v-model="msg.Saleplat" :options="platOpts"
@input="resetSearch" option-label="Name" option-value="Id" emit-value map-options label="上架渠道" />
standout="bg-primary text-white"
v-model="msg.Saleplat"
:options="platOpts"
option-label="Name"
option-value="Id"
emit-value
map-options
label="上架渠道"
/>
</div> </div>
</div> </div>
</div> </div>
<div class="page-content"> <div class="page-content">
<q-table <q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat
:pagination="msg"
:loading="loading"
no-data-label="暂无相关数据"
flat
class="sticky-two-header-table sticky-tow-column-table sticky-right-column-table" class="sticky-two-header-table sticky-tow-column-table sticky-right-column-table"
style="height: calc(100vh - 250px) !important;" style="height: calc(100vh - 250px) !important;" separator="none" :data="data" :columns="columns" row-key="name">
separator="none" <template v-slot:top>
:data="data"
:columns="columns"
row-key="name"
>
<template v-slot:top="props">
<div class="col-2 q-table__title">课程信息</div> <div class="col-2 q-table__title">课程信息</div>
<q-space /> <q-space />
<div class="page-option"> <div class="page-option">
<q-btn <q-btn color="accent" size="sm" class="q-mr-md" icon="add" label="新增课程" @click="EditCourse(null, 1)" />
color="accent"
size="sm"
class="q-mr-md"
icon="add"
label="新增课程"
@click="EditCourse(null, 1)"
/>
</div> </div>
</template> </template>
<template v-slot:body-cell-CoverImg="props"> <template v-slot:body-cell-CoverImg="props">
<q-td :props="props"> <q-td :props="props">
<q-img <q-img :src="props.value" spinner-color="white" style="height: 54px; max-width: 100px"
:src="props.value" class="rounded-borders">
spinner-color="white"
style="height: 54px; max-width: 100px"
class="rounded-borders"
>
</q-img> </q-img>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-OpenBankLevelNameList="props"> <template v-slot:body-cell-OpenBankLevelNameList="props">
<q-td :props="props"> <q-td :props="props">
<span style="margin-right:10px;" v-for="x in props.row.OpenBankLevelNameList">{{x}}</span> <span style="margin-right:10px;" v-for="(x,xIndex) in props.row.OpenBankLevelNameList"
:key="xIndex">{{x}}</span>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-CourseIntro="props"> <template v-slot:body-cell-CourseIntro="props">
...@@ -113,7 +54,6 @@ ...@@ -113,7 +54,6 @@
<span v-html="props.value"></span> <span v-html="props.value"></span>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-B2CRatio="props"> <template v-slot:body-cell-B2CRatio="props">
<q-td :props="props"> <q-td :props="props">
<span>{{ props.row.B2CRatio }}%</span> <span>{{ props.row.B2CRatio }}%</span>
...@@ -126,88 +66,68 @@ ...@@ -126,88 +66,68 @@
</template> </template>
<template v-slot:body-cell-B2BRebateRatio="props"> <template v-slot:body-cell-B2BRebateRatio="props">
<q-td :props="props"> <q-td :props="props">
<span <span>{{ props.row.B2BRebateRatio
>{{ props.row.B2BRebateRatio }}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span>
}}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span
>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-B2BReNewRatio="props"> <template v-slot:body-cell-B2BReNewRatio="props">
<q-td :props="props"> <q-td :props="props">
<span <span>{{ props.row.B2BReNewRatio
>{{ props.row.B2BReNewRatio }}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span>
}}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span
>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-SchoolRebateRatio="props"> <template v-slot:body-cell-SchoolRebateRatio="props">
<q-td :props="props"> <q-td :props="props">
<span <span>{{ props.row.SchoolRebateRatio
>{{ props.row.SchoolRebateRatio }}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span>
}}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span
>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-SchoolReNewRatio="props"> <template v-slot:body-cell-SchoolReNewRatio="props">
<q-td :props="props"> <q-td :props="props">
<span <span>{{ props.row.SchoolReNewRatio
>{{ props.row.SchoolReNewRatio }}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span>
}}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span
>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-TransIntroductceRatio="props"> <template v-slot:body-cell-TransIntroductceRatio="props">
<q-td :props="props"> <q-td :props="props">
<span <span>{{ props.row.TransIntroductceRatio
>{{ props.row.TransIntroductceRatio }}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span>
}}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span
>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-TransIntroductceReNewRatio="props"> <template v-slot:body-cell-TransIntroductceReNewRatio="props">
<q-td :props="props"> <q-td :props="props">
<span <span>{{ props.row.TransIntroductceReNewRatio
>{{ props.row.TransIntroductceReNewRatio }}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span>
}}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span
>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-InnerRecommendRatio="props"> <template v-slot:body-cell-InnerRecommendRatio="props">
<q-td :props="props"> <q-td :props="props">
<span <span>{{ props.row.InnerRecommendRatio
>{{ props.row.InnerRecommendRatio }}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span>
}}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span
>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-InnerRecommendReNewRatio="props"> <template v-slot:body-cell-InnerRecommendReNewRatio="props">
<q-td :props="props"> <q-td :props="props">
<span <span>{{ props.row.InnerRecommendReNewRatio
>{{ props.row.InnerRecommendReNewRatio }}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span>
}}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span
>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-B2CRbRatio="props"> <template v-slot:body-cell-B2CRbRatio="props">
<q-td :props="props"> <q-td :props="props">
<span <span>{{ props.row.B2CRbRatio
>{{ props.row.B2CRbRatio }}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span>
}}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span
>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-B2CRNRatio="props"> <template v-slot:body-cell-B2CRNRatio="props">
<q-td :props="props"> <q-td :props="props">
<span <span>{{ props.row.B2CRNRatio
>{{ props.row.B2CRNRatio }}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span>
}}{{ props.row.CommissionReType == 1 ? "%" : "" }}</span
>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-PreferentialList="props"> <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,cIndex) in props.value" :key="cIndex">
<div class="border-bottom" v-if="x.PriceDiscountType == 1"> <div class="border-bottom" v-if="x.PriceDiscountType == 1">
{{ x.BuyNum }}{{ x.SendNum }} {{ x.BuyNum }}{{ x.SendNum }}
</div> </div>
...@@ -231,13 +151,9 @@ ...@@ -231,13 +151,9 @@
</template> </template>
<template v-slot:body-cell-PreferentialListSellCommission="props"> <template v-slot:body-cell-PreferentialListSellCommission="props">
<q-td :props="props" style="padding-right: 0px; padding-left: 0px"> <q-td :props="props" style="padding-right: 0px; padding-left: 0px">
<div v-for="x in props.value"> <div v-for="(x,dIndex) in props.value" :key="dIndex">
<div <div class="border-bottom" style="padding-left: 16px; padding-right: 16px"
class="border-bottom" :class="{ 'text-red': x.SaleCommissionType == 1 }" v-if="x.PriceDiscountType != 0">
style="padding-left: 16px; padding-right: 16px"
:class="{ 'text-red': x.SaleCommissionType == 1 }"
v-if="x.PriceDiscountType != 0"
>
{{ x.SaleCommissionType == 1 ? "¥" : "" {{ x.SaleCommissionType == 1 ? "¥" : ""
}}{{ x.SaleCommissionMoney }}{{ x.SaleCommissionMoney
}}{{ x.SaleCommissionType == 0 ? "%" : "" }} }}{{ x.SaleCommissionType == 0 ? "%" : "" }}
...@@ -253,13 +169,9 @@ ...@@ -253,13 +169,9 @@
</template> </template>
<template v-slot:body-cell-PreferentialListB2BCommission="props"> <template v-slot:body-cell-PreferentialListB2BCommission="props">
<q-td :props="props" style="padding-left: 0px"> <q-td :props="props" style="padding-left: 0px">
<div v-for="x in props.value"> <div v-for="(x,fIndex) in props.value" :key="fIndex">
<div <div class="border-bottom" style="padding-left: 16px" :class="{ 'text-red': x.B2BCommissionType == 1 }"
class="border-bottom" v-if="x.PriceDiscountType != 0">
style="padding-left: 16px"
:class="{ 'text-red': x.B2BCommissionType == 1 }"
v-if="x.PriceDiscountType != 0"
>
{{ x.B2BCommissionType == 1 ? "¥" : "" {{ x.B2BCommissionType == 1 ? "¥" : ""
}}{{ x.B2BCommissionMoney }}{{ x.B2BCommissionMoney
}}{{ x.B2BCommissionType == 0 ? "%" : "" }} }}{{ x.B2BCommissionType == 0 ? "%" : "" }}
...@@ -275,13 +187,9 @@ ...@@ -275,13 +187,9 @@
</template> </template>
<template v-slot:body-cell-EducationCommission="props"> <template v-slot:body-cell-EducationCommission="props">
<q-td :props="props" style="padding-left: 0px"> <q-td :props="props" style="padding-left: 0px">
<div v-for="x in props.value"> <div v-for="(x,gIndex) in props.value" :key="gIndex">
<div <div class="border-bottom" style="padding-left: 16px" :class="{ 'text-red': x.EduCommissionType == 1 }"
class="border-bottom" v-if="x.PriceDiscountType != 0">
style="padding-left: 16px"
:class="{ 'text-red': x.EduCommissionType == 1 }"
v-if="x.PriceDiscountType != 0"
>
{{ x.EduCommissionType == 1 ? "¥" : "" {{ x.EduCommissionType == 1 ? "¥" : ""
}}{{ x.EduCommissionMoney }}{{ x.EduCommissionMoney
}}{{ x.EduCommissionType == 0 ? "%" : "" }} }}{{ x.EduCommissionType == 0 ? "%" : "" }}
...@@ -297,19 +205,12 @@ ...@@ -297,19 +205,12 @@
</template> </template>
<template v-slot:body-cell-plat="props"> <template v-slot:body-cell-plat="props">
<q-td :props="props"> <q-td :props="props">
<q-badge <q-badge color="green" label="小程序" v-if="props.row.Saleplat.includes(4)" />
color="green"
label="小程序"
v-if="props.row.Saleplat.includes(4)"
/>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-Status="props"> <template v-slot:body-cell-Status="props">
<q-td :props="props"> <q-td :props="props">
<q-badge <q-badge :color="props.value == 1 ? 'negative' : 'primary'" :label="props.value == 0 ? '正常' : '删除'" />
:color="props.value == 1 ? 'negative' : 'primary'"
:label="props.value == 0 ? '正常' : '删除'"
/>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-IsScrollClass="props"> <template v-slot:body-cell-IsScrollClass="props">
...@@ -317,61 +218,31 @@ ...@@ -317,61 +218,31 @@
<span>{{ props.row.IsScrollClass == 0 ? "否" : "是" }}</span> <span>{{ props.row.IsScrollClass == 0 ? "否" : "是" }}</span>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-ClassHours="props">
<q-td :props="props">
<span>&nbsp;&nbsp;&nbsp;&nbsp;时:{{ props.row.ClassHours }}</span><br />
<span>中教课时:{{ props.row.ChineseHours }}</span><br />
<span>外教课时:{{ props.row.ForeignHours }}</span>
</q-td>
</template>
<template v-slot:bottom> <template v-slot:bottom>
<q-pagination <q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount"
class="full-width justify-end" :input="true" @input="changePage" />
v-model="msg.pageIndex"
color="primary"
:max="pageCount"
: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">
<q-btn <q-btn flat size="xs" icon="edit" color="accent" style="font-weight: 400" label="编辑"
flat @click="EditCourse(props.row, 1)" />
size="xs" <q-btn flat size="xs" icon="edit" color="accent" style="font-weight: 400" label="价格设置"
icon="edit" @click="EditCourse(props.row, 2)" v-if="isHavePriceAction" />
color="accent" <q-btn-dropdown flat size="xs" color="dark" label="更多" style="margin-left: 10px">
style="font-weight: 400"
label="编辑"
@click="EditCourse(props.row, 1)"
/>
<q-btn
flat
size="xs"
icon="edit"
color="accent"
style="font-weight: 400"
label="价格设置"
@click="EditCourse(props.row, 2)"
v-if="isHavePriceAction"
/>
<q-btn-dropdown
flat
size="xs"
color="dark"
label="更多"
style="margin-left: 10px"
>
<q-list> <q-list>
<q-item <q-item clickable v-close-popup @click="DeleteCourse(props.row, 1)" v-if="props.row.Status == 0">
clickable
v-close-popup
@click="DeleteCourse(props.row, 1)"
v-if="props.row.Status == 0"
>
<q-item-section> <q-item-section>
<q-item-label>删除</q-item-label> <q-item-label>删除</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item <q-item clickable v-close-popup @click="DeleteCourse(props.row, 0)" v-if="props.row.Status == 1">
clickable
v-close-popup
@click="DeleteCourse(props.row, 0)"
v-if="props.row.Status == 1"
>
<q-item-section> <q-item-section>
<q-item-label>恢复</q-item-label> <q-item-label>恢复</q-item-label>
</q-item-section> </q-item-section>
...@@ -381,20 +252,12 @@ ...@@ -381,20 +252,12 @@
<q-item-label>课程详情</q-item-label> <q-item-label>课程详情</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item <q-item clickable v-close-popup @click="goMyroster(props.row, 1)">
clickable
v-close-popup
@click="goMyroster(props.row, 1)"
>
<q-item-section> <q-item-section>
<q-item-label>学员名单</q-item-label> <q-item-label>学员名单</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item <q-item clickable v-close-popup @click="goMyroster(props.row, 2)">
clickable
v-close-popup
@click="goMyroster(props.row, 2)"
>
<q-item-section> <q-item-section>
<q-item-label>学员订单</q-item-label> <q-item-label>学员订单</q-item-label>
</q-item-section> </q-item-section>
...@@ -404,507 +267,501 @@ ...@@ -404,507 +267,501 @@
</q-td> </q-td>
</template> </template>
</q-table> </q-table>
<course-form <course-form v-if="isShowCourseForm" :save-obj="courseObjOption" @close="closeMenuSaveForm"
v-if="isShowCourseForm" @success="refreshPage">
:save-obj="courseObjOption"
@close="closeMenuSaveForm"
@success="refreshPage"
>
</course-form> </course-form>
<courseprice-form <courseprice-form v-if="isShowCoursePriceForm" :save-obj="courseObjOption" @close="closeMenuSaveForm"
v-if="isShowCoursePriceForm" @success="refreshPage">
:save-obj="courseObjOption"
@close="closeMenuSaveForm"
@success="refreshPage"
>
</courseprice-form> </courseprice-form>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { import {
queryCoursePage, queryCoursePage,
queryCourseCategoryTree, queryCourseCategoryTree,
deleteCourseInfo, deleteCourseInfo,
querySaleplatList, querySaleplatList,
getCourseSubject getCourseSubject
} from "../../api/course/index"; } from "../../api/course/index";
import courseForm from "../../components/course/course-form"; import courseForm from "../../components/course/course-form";
import coursepriceForm from "../../components/course/courseprice-form"; import coursepriceForm from "../../components/course/courseprice-form";
import selectTree from "../../components/common/select-tree"; import selectTree from "../../components/common/select-tree";
import { openURL } from "quasar"; import {
import { mapState } from "vuex"; openURL
export default { } from "quasar";
meta: { import {
title: "课程管理" mapState
}, } from "vuex";
components: { export default {
courseForm, meta: {
selectTree, title: "课程管理"
coursepriceForm },
}, components: {
data() { courseForm,
return { selectTree,
currentUrl: "", coursepriceForm
columns: [ },
{ data() {
name: "CoverImg", return {
label: "课程封面", currentUrl: "",
field: "CoverImg", columns: [{
align: "left" name: "CoverImg",
}, label: "课程封面",
{ field: "CoverImg",
name: "CourseName", align: "left"
required: true, },
label: "课程名称", {
align: "left", name: "CourseName",
field: row => row.CourseName required: true,
}, label: "课程名称",
{ align: "left",
name: "OpenBankLevelNameList", field: row => row.CourseName
label: "课程关联题库", },
field: "OpenBankLevelNameList", {
align: "left" name: "OpenBankLevelNameList",
}, label: "课程关联题库",
{ field: "OpenBankLevelNameList",
name: "CourseSubjectName", align: "left"
required: true, },
label: "所属科目", {
align: "left", name: "CourseSubjectName",
field: row => row.CourseSubjectName required: true,
}, label: "所属科目",
{ align: "left",
name: "CateName", field: row => row.CourseSubjectName
required: true, },
label: "系列", {
align: "left", name: "CateName",
field: row => row.CateName required: true,
}, label: "系列",
{ align: "left",
name: "GuestNum", field: row => row.CateName
label: "学员数量", },
align: "left", {
field: "GuestNum", name: "GuestNum",
sortable: true, label: "学员数量",
sort: (a, b, rowA, rowB) => parseInt(a, 10) - parseInt(b, 10) align: "left",
}, field: "GuestNum",
{ sortable: true,
name: "OrderNum", sort: (a, b, rowA, rowB) => parseInt(a, 10) - parseInt(b, 10)
label: "订单数量", },
align: "left", {
field: "OrderNum", name: "OrderNum",
sortable: true, label: "订单数量",
sort: (a, b, rowA, rowB) => parseInt(a, 10) - parseInt(b, 10) align: "left",
}, field: "OrderNum",
{ sortable: true,
name: "SellPrice", sort: (a, b, rowA, rowB) => parseInt(a, 10) - parseInt(b, 10)
required: true, },
label: "直客价", {
align: "left", name: "SellPrice",
field: row => row.SellPrice.toFixed(2) required: true,
}, label: "直客价",
{ align: "left",
name: "B2CRatio", field: row => row.SellPrice.toFixed(2)
required: true, },
label: "直客优惠比例", {
align: "left", name: "B2CRatio",
field: row => row.B2CRatio required: true,
}, label: "直客优惠比例",
{ align: "left",
name: "B2CReNewRatio", field: row => row.B2CRatio
required: true, },
label: "直客优惠续费比例", {
align: "left", name: "B2CReNewRatio",
field: row => row.B2CReNewRatio required: true,
}, label: "直客优惠续费比例",
{ align: "left",
name: "B2BRebateRatio", field: row => row.B2CReNewRatio
required: true, },
label: "一般同行返佣", {
align: "left", name: "B2BRebateRatio",
field: row => row.B2BRebateRatio required: true,
}, label: "一般同行返佣",
{ align: "left",
name: "B2BReNewRatio", field: row => row.B2BRebateRatio
required: true, },
label: "一般同行续费返佣", {
align: "left", name: "B2BReNewRatio",
field: row => row.B2BReNewRatio required: true,
}, label: "一般同行续费返佣",
{ align: "left",
name: "SchoolRebateRatio", field: row => row.B2BReNewRatio
required: true, },
label: "校园同行返佣", {
align: "left", name: "SchoolRebateRatio",
field: row => row.SchoolRebateRatio required: true,
}, label: "校园同行返佣",
{ align: "left",
name: "SchoolReNewRatio", field: row => row.SchoolRebateRatio
required: true, },
label: "校园同行续费返佣", {
align: "left", name: "SchoolReNewRatio",
field: row => row.SchoolReNewRatio required: true,
}, label: "校园同行续费返佣",
{ align: "left",
name: "TransIntroductceRatio", field: row => row.SchoolReNewRatio
required: true, },
label: "转介返佣", {
align: "left", name: "TransIntroductceRatio",
field: row => row.TransIntroductceRatio required: true,
}, label: "转介返佣",
{ align: "left",
name: "TransIntroductceReNewRatio", field: row => row.TransIntroductceRatio
required: true, },
label: "转介续费返佣", {
align: "left", name: "TransIntroductceReNewRatio",
field: row => row.TransIntroductceReNewRatio required: true,
}, label: "转介续费返佣",
{ align: "left",
name: "InnerRecommendRatio", field: row => row.TransIntroductceReNewRatio
required: true, },
label: "内推返佣", {
align: "left", name: "InnerRecommendRatio",
field: row => row.InnerRecommendRatio required: true,
}, label: "内推返佣",
{ align: "left",
name: "InnerRecommendReNewRatio", field: row => row.InnerRecommendRatio
required: true, },
label: "内推续费返佣", {
align: "left", name: "InnerRecommendReNewRatio",
field: row => row.InnerRecommendReNewRatio required: true,
}, label: "内推续费返佣",
{ align: "left",
name: "B2CRbRatio", field: row => row.InnerRecommendReNewRatio
required: true, },
label: "直客返佣", {
align: "left", name: "B2CRbRatio",
field: row => row.B2CRbRatio required: true,
}, label: "直客返佣",
{ align: "left",
name: "B2CRNRatio", field: row => row.B2CRbRatio
required: true, },
label: "直客续费返佣", {
align: "left", name: "B2CRNRatio",
field: row => row.B2CRNRatio required: true,
}, label: "直客续费返佣",
align: "left",
field: row => row.B2CRNRatio
},
// { // {
// name: "PreferentialList", // name: "PreferentialList",
// required: true, // required: true,
// label: "优惠政策", // label: "优惠政策",
// align: "left", // align: "left",
// field: (row) => row.PreferentialList, // field: (row) => row.PreferentialList,
// }, // },
// { // {
// name: "PreferentialListSellCommission", // name: "PreferentialListSellCommission",
// required: true, // required: true,
// label: "销售佣金", // label: "销售佣金",
// align: "left", // align: "left",
// field: (row) => row.PreferentialList, // field: (row) => row.PreferentialList,
// }, // },
// { // {
// name: "PreferentialListB2BCommission", // name: "PreferentialListB2BCommission",
// required: true, // required: true,
// label: "同行佣金", // label: "同行佣金",
// align: "left", // align: "left",
// field: (row) => row.PreferentialList, // field: (row) => row.PreferentialList,
// }, // },
// { // {
// name: "EducationCommission", // name: "EducationCommission",
// required: true, // required: true,
// label: "教育同行佣金", // label: "教育同行佣金",
// align: "left", // align: "left",
// field: (row) => row.PreferentialList, // field: (row) => row.PreferentialList,
// }, // },
{ {
name: "ClassHours", name: "ClassHours",
label: "课时长度", label: "课时长度",
field: "ClassHours", field: "ClassHours",
align: "left", align: "left",
format: (val, row) => `${val}课时`
}, },
{ {
name: "plat", name: "plat",
label: "上架渠道", label: "上架渠道",
field: "plat", field: "plat",
align: "left" align: "left"
}, },
{ {
name: "CreateByName", name: "CreateByName",
label: "创建人", label: "创建人",
field: "CreateByName", field: "CreateByName",
align: "left" align: "left"
}, },
{ {
name: "UpdateTimeStr", name: "UpdateTimeStr",
label: "更新时间", label: "更新时间",
field: "UpdateTimeStr", field: "UpdateTimeStr",
align: "left" align: "left"
}, },
{ {
name: "Status", name: "Status",
label: "状态", label: "状态",
align: "left", align: "left",
field: "Status" field: "Status"
}, },
{ {
name: "IsScrollClass", name: "IsScrollClass",
label: "是否开启滚动开班", label: "是否开启滚动开班",
align: "left", align: "left",
field: "IsScrollClass" field: "IsScrollClass"
}, },
{ {
name: "ScrollMinNum", name: "ScrollMinNum",
label: "最小上课人数", label: "最小上课人数",
align: "left", align: "left",
field: "ScrollMinNum" field: "ScrollMinNum"
}, },
{ {
name: "ScrollMaxNum", name: "ScrollMaxNum",
label: "最大上课人数", label: "最大上课人数",
align: "left", align: "left",
field: "ScrollMaxNum" field: "ScrollMaxNum"
}, },
{ {
name: "optioned", name: "optioned",
label: "操作", label: "操作",
field: "CourseId" field: "CourseId"
}
],
data: [],
loading: true,
ShowOpts: [
{
label: "全部",
value: "-1"
},
{
label: "正常",
value: "0"
},
{
label: "删除",
value: "1"
}
],
platOpts: [], //上架渠道
msg: {
pageIndex: 1,
pageSize: 12,
rowsPerPage: 12,
CourseName: "",
QCateIds: "",
IsQPrice: 1,
Status: "0",
Saleplat: 0,
CourseSubject: "" //所属科目
},
//课程分类树形列表
TreeCategoryList: [],
returnString: [], //默认值
pageCount: 0,
isShowCourseForm: false, //是否显示课程表单
isShowCoursePriceForm: false, //是否显示课程价格表单
courseObjOption: null, //课程对象
isShowPriceEditBtn: 1, //是否显示价格设置
CourseSubjectList: [] //科目列表
};
},
computed: mapState({
isHavePriceAction(state) {
if (
state.user.userInfo &&
state.user.userInfo.ActionMenuList &&
state.user.userInfo.ActionMenuList.length > 0
) {
let action = state.user.userInfo.ActionMenuList.find(x => {
if (x.FunctionCode == "Edit_CoursePrice") {
return x;
} }
}); ],
return action && action.FunctionCode; data: [],
} loading: true,
return false; ShowOpts: [{
} label: "全部",
}), value: "-1"
mounted() { },
if (this.$route.query && this.$route.query.Name) { {
//从订单完成统计跳转过来的带的参数 label: "正常",
this.msg.CourseName = decodeURI(this.$route.query.Name); value: "0"
} },
this.queryCourseSubject(); {
this.getSaleplat(); label: "删除",
this.getCategorytree(); value: "1"
this.currentUrl = this.$route.path; }
this.getcourselist(); ],
}, platOpts: [], //上架渠道
methods: { msg: {
queryCourseSubject() { pageIndex: 1,
getCourseSubject({}).then(res => { pageSize: 12,
if (res.Code == 1) { rowsPerPage: 12,
this.CourseSubjectList = res.Data; CourseName: "",
} QCateIds: "",
}); IsQPrice: 1,
}, Status: "0",
//删除课程 Saleplat: 0,
DeleteCourse(item, status) { CourseSubject: "" //所属科目
let delMsg = { },
CourseId: item.CourseId, //课程分类树形列表
Status: status TreeCategoryList: [],
returnString: [], //默认值
pageCount: 0,
isShowCourseForm: false, //是否显示课程表单
isShowCoursePriceForm: false, //是否显示课程价格表单
courseObjOption: null, //课程对象
isShowPriceEditBtn: 1, //是否显示价格设置
CourseSubjectList: [] //科目列表
}; };
var message = "是否要删除该课程?"; },
if (status == 0) { computed: mapState({
message = "是否要恢复该课程?"; isHavePriceAction(state) {
} if (
this.$q state.user.userInfo &&
.dialog({ state.user.userInfo.ActionMenuList &&
title: "提示信息", state.user.userInfo.ActionMenuList.length > 0
message: message, ) {
cancel: true, let action = state.user.userInfo.ActionMenuList.find(x => {
persistent: true, if (x.FunctionCode == "Edit_CoursePrice") {
ok: "确定", return x;
cancel: "取消"
})
.onOk(() => {
deleteCourseInfo(delMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: "iconfont icon-chenggong",
color: "accent",
timeout: 2000,
message: "删除成功!",
position: "top"
});
this.getcourselist();
} else {
this.$q.notify({
icon: "iconfont icon-chenggong",
color: "accent",
timeout: 2000,
message: res.Message,
position: "top"
});
} }
}); });
}) return action && action.FunctionCode;
.onCancel(() => {}); }
}, return false;
gotoSub(obj, routeStr) {
var tempStr = "/course/" + routeStr + "?CourseId=" + obj.CourseId;
this.$router.push({
path: tempStr
});
},
//分类改变
getChild(cateObj) {
var tempStr = "";
if (cateObj && cateObj != "") {
tempStr = cateObj;
}
this.msg.QCateIds = tempStr;
this.msg.pageIndex = 1;
this.getcourselist();
},
getCategorytree() {
this.TreeCategoryList = [];
var qMsg = {};
queryCourseCategoryTree(qMsg).then(res => {
this.TreeCategoryList = res.Data;
});
},
//重新查询
resetSearch() {
this.msg.pageIndex = 1;
this.getcourselist();
},
//翻页
changePage(val) {
this.msg.pageIndex = val;
this.getcourselist();
},
//获取菜单分页列表
getcourselist() {
this.loading = true;
queryCoursePage(this.msg)
.then(res => {
this.loading = false;
this.data = res.Data.PageData;
this.pageCount = res.Data.PageCount;
})
.catch(() => {
this.loading = false;
});
},
//刷新页面
refreshPage() {
this.isShowCourseForm = false;
this.isShowCoursePriceForm = false;
this.getcourselist();
},
//新增修改课程及价格
EditCourse(obj, type) {
if (obj) {
this.courseObjOption = obj;
} else {
this.courseObjOption = null;
} }
if (type == 1) { }),
this.isShowCourseForm = true; mounted() {
} else { if (this.$route.query && this.$route.query.Name) {
this.isShowCoursePriceForm = true; //从订单完成统计跳转过来的带的参数
this.msg.CourseName = decodeURI(this.$route.query.Name);
} }
this.queryCourseSubject();
this.getSaleplat();
this.getCategorytree();
this.currentUrl = this.$route.path;
this.getcourselist();
}, },
//关闭弹窗 methods: {
closeMenuSaveForm() { queryCourseSubject() {
this.isShowCourseForm = false; getCourseSubject({}).then(res => {
this.isShowCoursePriceForm = false; if (res.Code == 1) {
}, this.CourseSubjectList = res.Data;
//跳转至我的课程 }
goMycourse(obj) {
var tempStr =
window.location.origin +
"/#/course/courseinfo?CourseId=" +
obj.CourseId;
openURL(tempStr);
},
//获取销售端口列表
getSaleplat() {
querySaleplatList().then(res => {
this.platOpts = res.Data;
this.platOpts.unshift({
Name: "不限",
Id: 0
}); });
}); },
}, //删除课程
goMyroster(row, type) { DeleteCourse(item, status) {
//type 1 是学员名单 2 学员订单 let delMsg = {
if (type == 1) { CourseId: item.CourseId,
const obj = { Status: status
CourseId: row.CourseId,
CourseName: encodeURIComponent(row.CourseName),
source: 1
};
this.OpenNewUrl("/stuMan/stuList", obj);
} else if (type == 2) {
const obj = {
CourseId: row.CourseId,
CourseName: encodeURIComponent(row.CourseName),
source: 1
}; };
this.OpenNewUrl("/sale/orderStatistics", obj); var message = "是否要删除该课程?";
if (status == 0) {
message = "是否要恢复该课程?";
}
this.$q
.dialog({
title: "提示信息",
message: message,
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消"
})
.onOk(() => {
deleteCourseInfo(delMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: "iconfont icon-chenggong",
color: "accent",
timeout: 2000,
message: "删除成功!",
position: "top"
});
this.getcourselist();
} else {
this.$q.notify({
icon: "iconfont icon-chenggong",
color: "accent",
timeout: 2000,
message: res.Message,
position: "top"
});
}
});
})
.onCancel(() => {});
},
gotoSub(obj, routeStr) {
var tempStr = "/course/" + routeStr + "?CourseId=" + obj.CourseId;
this.$router.push({
path: tempStr
});
},
//分类改变
getChild(cateObj) {
var tempStr = "";
if (cateObj && cateObj != "") {
tempStr = cateObj;
}
this.msg.QCateIds = tempStr;
this.msg.pageIndex = 1;
this.getcourselist();
},
getCategorytree() {
this.TreeCategoryList = [];
var qMsg = {};
queryCourseCategoryTree(qMsg).then(res => {
this.TreeCategoryList = res.Data;
});
},
//重新查询
resetSearch() {
this.msg.pageIndex = 1;
this.getcourselist();
},
//翻页
changePage(val) {
this.msg.pageIndex = val;
this.getcourselist();
},
//获取菜单分页列表
getcourselist() {
this.loading = true;
queryCoursePage(this.msg)
.then(res => {
this.loading = false;
this.data = res.Data.PageData;
this.pageCount = res.Data.PageCount;
})
.catch(() => {
this.loading = false;
});
},
//刷新页面
refreshPage() {
this.isShowCourseForm = false;
this.isShowCoursePriceForm = false;
this.getcourselist();
},
//新增修改课程及价格
EditCourse(obj, type) {
if (obj) {
this.courseObjOption = obj;
} else {
this.courseObjOption = null;
}
if (type == 1) {
this.isShowCourseForm = true;
} else {
this.isShowCoursePriceForm = true;
}
},
//关闭弹窗
closeMenuSaveForm() {
this.isShowCourseForm = false;
this.isShowCoursePriceForm = false;
},
//跳转至我的课程
goMycourse(obj) {
var tempStr =
window.location.origin +
"/#/course/courseinfo?CourseId=" +
obj.CourseId;
openURL(tempStr);
},
//获取销售端口列表
getSaleplat() {
querySaleplatList().then(res => {
this.platOpts = res.Data;
this.platOpts.unshift({
Name: "不限",
Id: 0
});
});
},
goMyroster(row, type) {
//type 1 是学员名单 2 学员订单
if (type == 1) {
const obj = {
CourseId: row.CourseId,
CourseName: encodeURIComponent(row.CourseName),
source: 1
};
this.OpenNewUrl("/stuMan/stuList", obj);
} else if (type == 2) {
const obj = {
CourseId: row.CourseId,
CourseName: encodeURIComponent(row.CourseName),
source: 1
};
this.OpenNewUrl("/sale/orderStatistics", obj);
}
} }
} }
} };
};
</script> </script>
<style scoped> <style scoped>
.border-bottom { .border-bottom {
border-bottom: 1px dashed #eee; border-bottom: 1px dashed #eee;
padding-bottom: 5px; padding-bottom: 5px;
margin-bottom: 5px; margin-bottom: 5px;
} }
</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
...@@ -95,6 +95,13 @@ ...@@ -95,6 +95,13 @@
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-ClassHours="props">
<q-td :props="props">
<span>&nbsp;&nbsp;&nbsp;&nbsp;时:{{ props.row.ClassHours }}</span><br />
<span>中教课时:{{ props.row.ChineseHours }}</span><br />
<span>外教课时:{{ props.row.ForeignHours }}</span>
</q-td>
</template>
<template v-slot:body-cell-Status="props"> <template v-slot:body-cell-Status="props">
<q-td :props="props"> <q-td :props="props">
<q-badge :color="props.value == 1 ? 'negative' : 'primary'" :label="props.value == 0 ? '正常' : '删除'" /> <q-badge :color="props.value == 1 ? 'negative' : 'primary'" :label="props.value == 0 ? '正常' : '删除'" />
...@@ -170,7 +177,6 @@ ...@@ -170,7 +177,6 @@
label: "课时长度", label: "课时长度",
field: "ClassHours", field: "ClassHours",
align: "left", align: "left",
format: (val, row) => `${val}课时`
}, },
{ {
name: "UpdateTimeStr", name: "UpdateTimeStr",
......
...@@ -109,7 +109,6 @@ ...@@ -109,7 +109,6 @@
line-height: 25px; line-height: 25px;
background-color: #004d40; background-color: #004d40;
} }
</style> </style>
<template> <template>
<div class="page-body courseList"> <div class="page-body courseList">
...@@ -117,8 +116,8 @@ ...@@ -117,8 +116,8 @@
<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-select @input="resetSearch" standout="bg-primary text-white" v-model="msg.CourseSubject" <q-select @input="resetSearch" standout="bg-primary text-white" v-model="msg.CourseSubject"
:options="CourseSubjectList" option-label="SubjectName" option-value="Id" emit-value map-options label="所属科目" :options="CourseSubjectList" option-label="SubjectName" option-value="Id" emit-value map-options
clearable /> label="所属科目" clearable />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-input @input="resetSearch" clearable standout="bg-primary text-white" v-model="msg.CourseName" label="课程名称" <q-input @input="resetSearch" clearable standout="bg-primary text-white" v-model="msg.CourseName" label="课程名称"
...@@ -136,11 +135,6 @@ ...@@ -136,11 +135,6 @@
<!-- <q-btn color="accent" size="sm" class="q-mr-md" icon="add" label="创建报价单" @click="createQuotation" /> --> <!-- <q-btn color="accent" size="sm" class="q-mr-md" icon="add" label="创建报价单" @click="createQuotation" /> -->
</div> </div>
</template> </template>
<!-- <template v-slot:body-cell-OpenBankLevelNameList="props">
<q-td auto-width :props="props">
<span v-for="item in props.row.OpenBankLevelNameList">{{item}}</span>
</q-td>
</template> -->
<template v-slot:body="props"> <template v-slot:body="props">
<q-tr :props="props"> <q-tr :props="props">
<q-td auto-width> <q-td auto-width>
...@@ -154,7 +148,7 @@ ...@@ -154,7 +148,7 @@
</q-img> </q-img>
</q-td> </q-td>
<q-td v-else-if="col.name=='OpenBankLevelNameList'" :key="col.name"> <q-td v-else-if="col.name=='OpenBankLevelNameList'" :key="col.name">
<span style="margin-right:10px;" v-for="x in col.value">{{x}}</span> <span style="margin-right:10px;" v-for="(x,index) in col.value" :key="index">{{x}}</span>
</q-td> </q-td>
<q-td v-else-if="col.name == 'PreferentialList'" style="padding-right:0px" :key="col.name"> <q-td v-else-if="col.name == 'PreferentialList'" style="padding-right:0px" :key="col.name">
<div v-for="(x,index) in col.value" :key="index"> <div v-for="(x,index) in col.value" :key="index">
...@@ -193,7 +187,8 @@ ...@@ -193,7 +187,8 @@
<div class="remark-font">暂无优惠政策</div> <div class="remark-font">暂无优惠政策</div>
</div> </div>
</q-td> </q-td>
<q-td v-else-if="col.name == 'PreferentialListSellCommission'" style="padding-right:0px;padding-left:0px" :key="col.name"> <q-td v-else-if="col.name == 'PreferentialListSellCommission'" style="padding-right:0px;padding-left:0px"
:key="col.name">
<div v-for="(x,index) in col.value" :key="index"> <div v-for="(x,index) in col.value" :key="index">
<div class="border-bottom" style="padding-left: 16px;padding-right: 16px" <div class="border-bottom" style="padding-left: 16px;padding-right: 16px"
:class="{'text-red':x.SaleCommissionType==1}" v-if="x.PriceDiscountType!=0"> :class="{'text-red':x.SaleCommissionType==1}" v-if="x.PriceDiscountType!=0">
...@@ -211,7 +206,6 @@ ...@@ -211,7 +206,6 @@
<div class="border-bottom" style="padding-left: 16px" :class="{'text-red':x.B2BCommissionType==1}" <div class="border-bottom" style="padding-left: 16px" :class="{'text-red':x.B2BCommissionType==1}"
v-if="x.PriceDiscountType!=0"> v-if="x.PriceDiscountType!=0">
{{x.B2BCommissionType==1?'¥':''}}{{x.B2BCommissionMoney}}{{x.B2BCommissionType==0?'%':''}}</div> {{x.B2BCommissionType==1?'¥':''}}{{x.B2BCommissionMoney}}{{x.B2BCommissionType==0?'%':''}}</div>
<div v-if="x.PriceDiscountType == 0"> <div v-if="x.PriceDiscountType == 0">
<div class="remark-font">暂无佣金信息</div> <div class="remark-font">暂无佣金信息</div>
</div> </div>
...@@ -226,7 +220,7 @@ ...@@ -226,7 +220,7 @@
<q-td v-else-if="col.name == 'B2CReNewRatio' " style="padding-left:0px" :key="col.name"> <q-td v-else-if="col.name == 'B2CReNewRatio' " style="padding-left:0px" :key="col.name">
{{col.value}}% {{col.value}}%
</q-td> </q-td>
<q-td v-else-if="col.name == 'CommissionReType' " style="padding-left:0px" :key="col.name"> <q-td v-else-if="col.name == 'CommissionReType' " style="padding-left:0px" :key="col.name">
<span v-if="col.value==1">比例返佣</span> <span v-if="col.value==1">比例返佣</span>
<span v-if="col.value==2">固定金额</span> <span v-if="col.value==2">固定金额</span>
</q-td> </q-td>
...@@ -265,6 +259,12 @@ ...@@ -265,6 +259,12 @@
</q-chip> </q-chip>
</div> </div>
</q-td> </q-td>
<q-td v-else-if="col.name=='ClassHours'" :key="col.name">
<span>&nbsp;&nbsp;&nbsp;&nbsp;时:{{ props.row.ClassHours }}</span><br />
<span>中教课时:{{ props.row.ChineseHours }}</span><br />
<span>外教课时:{{ props.row.ForeignHours }}</span>
</q-td>
<q-td v-else-if="col.name=='CourseIntro'" :key="col.name"> <q-td v-else-if="col.name=='CourseIntro'" :key="col.name">
<q-btn flat color="primary" label="查看详情" @click="showContentDialog(col.value)" /> <q-btn flat color="primary" label="查看详情" @click="showContentDialog(col.value)" />
</q-td> </q-td>
...@@ -311,7 +311,9 @@ ...@@ -311,7 +311,9 @@
getCourseSubject getCourseSubject
} from "../../api/course/index"; } from "../../api/course/index";
import quotationForm from '../../components/sale/quotation-form' import quotationForm from '../../components/sale/quotation-form'
import { mapState } from "vuex"; import {
mapState
} from "vuex";
export default { export default {
meta: { meta: {
title: "课程报价表" title: "课程报价表"
...@@ -395,7 +397,7 @@ ...@@ -395,7 +397,7 @@
field: row => row.PreferentialList field: row => row.PreferentialList
}, },
// 12月15号新增参数 // 12月15号新增参数
{ {
name: "B2CRatio", name: "B2CRatio",
label: "直客优惠比例", label: "直客优惠比例",
align: "left", align: "left",
...@@ -413,7 +415,7 @@ ...@@ -413,7 +415,7 @@
align: "left", align: "left",
field: (row) => row.CommissionReType field: (row) => row.CommissionReType
}, },
{ {
name: "B2BRebateRatio", name: "B2BRebateRatio",
label: "一般同行返佣比例", label: "一般同行返佣比例",
...@@ -518,10 +520,10 @@ ...@@ -518,10 +520,10 @@
CourseSubjectList: [], //科目列表 CourseSubjectList: [], //科目列表
}; };
}, },
created(){ created() {
var localStorageData = window.localStorage["loginUserInfo"]; var localStorageData = window.localStorage["loginUserInfo"];
let ActionMenuList = JSON.parse(localStorageData).data.ActionMenuList; let ActionMenuList = JSON.parse(localStorageData).data.ActionMenuList;
var isShowPrice=false; var isShowPrice = false;
if (ActionMenuList && ActionMenuList.length > 0) { if (ActionMenuList && ActionMenuList.length > 0) {
ActionMenuList.forEach((x) => { ActionMenuList.forEach((x) => {
if (x.FunctionCode == "IsShow_CoursePrice") { if (x.FunctionCode == "IsShow_CoursePrice") {
...@@ -529,13 +531,19 @@ ...@@ -529,13 +531,19 @@
} }
}); });
} }
if(isShowPrice){ if (isShowPrice) {
this.visibleColumns = ['CourseFeature', 'CoverImg', 'CourseSubjectName', 'CourseName', 'OpenBankLevelNameList' , 'CateName', 'OriginalPrice', 'SellPrice', 'PreferentialListSellCommission', this.visibleColumns = ['CourseFeature', 'CoverImg', 'CourseSubjectName', 'CourseName', 'OpenBankLevelNameList',
'PreferentialListB2BCommission', 'B2CRatio', 'B2CReNewRatio' , 'CommissionReType' , 'B2BRebateRatio' , 'B2BReNewRatio' ,'SchoolRebateRatio', 'CateName', 'OriginalPrice', 'SellPrice', 'PreferentialListSellCommission',
'SchoolReNewRatio','TransIntroductceRatio','TransIntroductceReNewRatio','InnerRecommendRatio','InnerRecommendReNewRatio','B2CRbRatio', 'PreferentialListB2BCommission', 'B2CRatio', 'B2CReNewRatio', 'CommissionReType', 'B2BRebateRatio',
'B2CRNRatio','TeacherList','ClassHours','CourseIntro','UpdateTimeStr'] 'B2BReNewRatio', 'SchoolRebateRatio',
}else{ 'SchoolReNewRatio', 'TransIntroductceRatio', 'TransIntroductceReNewRatio', 'InnerRecommendRatio',
this.visibleColumns = ['CourseFeature', 'CoverImg', 'CourseSubjectName', 'CourseName', 'OpenBankLevelNameList', 'CateName','TeacherList','ClassHours','CourseIntro','UpdateTimeStr'] 'InnerRecommendReNewRatio', 'B2CRbRatio',
'B2CRNRatio', 'TeacherList', 'ClassHours', 'CourseIntro', 'UpdateTimeStr'
]
} else {
this.visibleColumns = ['CourseFeature', 'CoverImg', 'CourseSubjectName', 'CourseName', 'OpenBankLevelNameList',
'CateName', 'TeacherList', 'ClassHours', 'CourseIntro', 'UpdateTimeStr'
]
} }
}, },
mounted() { mounted() {
...@@ -590,7 +598,6 @@ ...@@ -590,7 +598,6 @@
} }
} }
}; };
</script> </script>
<style lang="sass"> <style lang="sass">
@import url('~assets/css/table.sass') @import url('~assets/css/table.sass')
......
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