Commit 4b6bc265 authored by chenyishuai@singsingenglish.com's avatar chenyishuai@singsingenglish.com

812

parents bcf74f68 d0797f22
......@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta name="referrer" content="never">
<link rel="stylesheet" href="https:////at.alicdn.com/t/font_746649_x1rivf5f5.css">
<link rel="stylesheet" href="https://lib.baomitu.com/element-ui/2.7.2/theme-chalk/index.css">
<link rel="stylesheet" href="https://lib.baomitu.com/element-ui/2.11.1/theme-chalk/index.css">
<title>唱唱启蒙-后台</title>
</head>
<body>
......
......@@ -303,9 +303,9 @@
"dev": true
},
"async-validator": {
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.2.tgz",
"integrity": "sha1-t3WXIm6WJC+NUxwNRq4pX2JCK6Q=",
"version": "1.8.5",
"resolved": "https://registry.npm.taobao.org/async-validator/download/async-validator-1.8.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync-validator%2Fdownload%2Fasync-validator-1.8.5.tgz",
"integrity": "sha1-3D4I7B/Q3dtn5ghC8CwM0c7G1/A=",
"requires": {
"babel-runtime": "6.x"
}
......@@ -2574,8 +2574,8 @@
},
"deepmerge": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
"integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ=="
"resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz",
"integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M="
},
"define-properties": {
"version": "1.1.2",
......@@ -2878,9 +2878,9 @@
"dev": true
},
"element-ui": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.4.3.tgz",
"integrity": "sha512-fHcpUGbJsfP1mvfErdnn4A7MglNbfL4uiukGHRZaFy1K7HhVKEpLficNqUtaYS3SKjKnzpkSdZkrJJCR1aNICw==",
"version": "2.11.1",
"resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.11.1.tgz?cache=0&sync_timestamp=1564126738326&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felement-ui%2Fdownload%2Felement-ui-2.11.1.tgz",
"integrity": "sha1-K2f57uPtouaISHPBxYnL4w2anWA=",
"requires": {
"async-validator": "~1.8.1",
"babel-helper-vue-jsx-merge-props": "^2.0.0",
......@@ -6123,7 +6123,7 @@
},
"normalize-wheel": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
"resolved": "https://registry.npm.taobao.org/normalize-wheel/download/normalize-wheel-1.0.1.tgz",
"integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU="
},
"npm-run-path": {
......@@ -9249,9 +9249,9 @@
"dev": true
},
"resize-observer-polyfill": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz",
"integrity": "sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg=="
"version": "1.5.1",
"resolved": "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz",
"integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ="
},
"resolve": {
"version": "1.8.1",
......@@ -10049,8 +10049,8 @@
},
"throttle-debounce": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
"integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
"resolved": "http://registry.npm.taobao.org/throttle-debounce/download/throttle-debounce-1.1.0.tgz",
"integrity": "sha1-UYU9o3vmihVctugns1FKPEIuic0="
},
"through2": {
"version": "2.0.3",
......
......@@ -76,16 +76,17 @@ export default {
};
</script>
<style >
<style lang="less">
#app {
height: 100%;
}
html,
body {
html, body {
height: 100%;
margin: 0;
padding: 0;
}
.el-collapse-item__arrow {
margin-left: 0;
}
......
<template>
<el-dialog
:title="dialogObj.title"
:visible.sync="dialogObj.show"
>
<el-dialog :title="dialogObj.title" :visible.sync="dialogObj.show">
<el-form ref="form" :model="form" label-width="120px">
<el-form-item label="期数" v-if="!this.dialogObj.periodsId">
<el-cascader
class="refresh-cascader-multi width-480"
style="width: 480px"
:options="goodsList"
:props="{value:'id',label:'name'}"
@active-item-change="handleItemChange"
@change="changePeriods"
>
</el-cascader>
@change="changePeriods"></el-cascader>
</el-form-item>
<el-form-item label="老师">
<el-select v-model="form.teacher_id" placeholder="请选择" filterable @change="selectName(teacherList,form.teacher_id)">
......@@ -29,8 +26,11 @@
<el-form-item label="最大学员">
<el-input-number v-model="form.max_join_num"></el-input-number>
</el-form-item>
<el-form-item label="招生来源">
<el-select v-model="form.source" placeholder="请选择" filterable>
<el-form-item label="活动方案">
<el-select
v-model="form.source" placeholder="请选择" filterable
:popper-class="'refresh-select-multi width-480'"
style="width: 480px">
<el-option
v-for="(data,index) in classSource"
:key="index"
......@@ -38,9 +38,9 @@
:value="data.type" >
</el-option>
</el-select>
</el-form-item >
<el-form-item label="班级二维码">
<!--<el-input v-model="form.qr"></el-input>-->
</el-form-item>
<!--<el-form-item label="班级二维码">
&lt;!&ndash;<el-input v-model="form.qr"></el-input>&ndash;&gt;
<el-upload
action="/api/public/upload/zone"
:http-request="uploadFile"
......@@ -52,7 +52,7 @@
:on-remove="handleRemove">
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
</el-form-item>-->
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogObj.show = false">取 消</el-button>
......
<template>
<div class="class">
<div class="form-block">
<div class="class admin-refresh">
<div class="form-block section-search search-single">
<el-form label-width="90px" inline>
<el-form-item label="期数">
<el-form-item>
<el-cascader
:popper-class="'refresh-cascader-multi width-560'"
placeholder="请选择期数" style="width: 560px" filterable
:options="goodsList"
:props="{value:'id',label:'name'}"
@active-item-change="handleItemChange"
@change="changePeriods"
filterable
v-model="selectedGoods"
></el-cascader>
v-model="selectedGoods"></el-cascader>
</el-form-item>
<el-form-item label="老师">
<el-form-item>
<el-select
filterable
v-model="teacher_id"
placeholder="请选择"
@change="getClassList"
clearable
>
placeholder="请选择老师"
@change="getClassList" clearable>
<el-option
v-for="(data,index) in teacherList"
:key="index"
:label="data.teacher_name"
:value="data.teacher_id"
></el-option>
:value="data.teacher_id"></el-option>
</el-select>
</el-form-item>
<el-form-item label>
<el-button type="primary" @click="getClassList">搜索</el-button>
</el-form-item>
<el-form-item style="float: right">
<div class="search-btn-wrapper">
<el-button @click="onAdd" type="success" v-if="!$store.state.readonly">+添加班级</el-button>
<el-button type="success" @click="sendMsg">发送活动通知</el-button>
</div>
</el-form-item>
</el-form>
</div>
<div v-if="title && title.title " class="intro">
<el-table
border
size="mini"
style="display: block;margin: 20px auto;background: transparent"
:data="[title]"
>
<el-table-column label="期数名称" prop="title"></el-table-column>
<el-table border size="mini" :data="[title]"
style="display: block;margin: 10px auto;background: transparent">
<el-table-column label="期数名称" width="280px">
<template slot-scope="scope">
<span style="white-space: normal">{{periodName}}</span>
</template>
</el-table-column>
<el-table-column label="可看课包数" prop="watch_num"></el-table-column>
<el-table-column label="已看课包数" prop="has_watch_num"></el-table-column>
<el-table-column label="开始时间" prop="start_at"></el-table-column>
......@@ -60,7 +59,7 @@
</el-form>
</div>
<div>
<el-table @expand-change="changeRow" :data="classList" style="width: 100%">
<el-table @expand-change="changeRow" :data="classList">
<el-table-column type="expand">
<template slot-scope="scope">
<el-table :data="[scope.row]" style="width: 100%">
......@@ -98,44 +97,42 @@
</el-table>
</template>
</el-table-column>
<el-table-column label="班级名称">
<el-table-column label="班级名称" width="200px">
<template slot-scope="scope">{{scope.row.class_name}}</template>
</el-table-column>
<el-table-column prop="qr" label="班级二维码">
<!--<el-table-column prop="qr" label="班级二维码">
<template slot-scope="scope">
<a :href="scope.row.qr" v-if="scope.row.qr" target="_blank">
<img class="avatar" :src="scope.row.qr" alt="二维码" />
<img class="avatar" :src="scope.row.qr" alt="二维码"/>
</a>
<p v-if="!scope.row.qr">--</p>
<p v-if="!scope.row.qr">&#45;&#45;</p>
</template>
</el-table-column>
<el-table-column prop="teacher_name" label="班主任"></el-table-column>
<el-table-column label="老师状态">
</el-table-column>-->
<el-table-column prop="teacher_name" label="班主任" width="120px"></el-table-column>
<el-table-column label="老师状态" width="80px">
<template slot-scope="scope">{{scope.row.teacher_status === 0 ? '带班' : '不带班'}}</template>
</el-table-column>
<el-table-column label="班级类型">
<el-table-column label="班级类型" width="80px">
<template slot-scope="scope">{{scope.row.type | classTypeFilter}}</template>
</el-table-column>
<el-table-column prop="max_join_num" label="最大人数"></el-table-column>
<el-table-column prop="join_num" label="现有人数"></el-table-column>
<el-table-column prop="source" label="招生来源">
<el-table-column prop="max_join_num" label="最大人数" width="100px"></el-table-column>
<el-table-column prop="join_num" label="现有人数" width="100px"></el-table-column>
<el-table-column prop="source" label="活动方案">
<template slot-scope="scope">{{scope.row.source | classSourceFilter}}</template>
</el-table-column>
<el-table-column width="250" label="操作">
<el-table-column label="操作" width="246">
<template slot-scope="scope">
<el-button @click="showUser(scope.row)" size="mini" type="primary">班级成员</el-button>
<el-button
@click="editClass(scope.row)"
size="mini"
v-if="!$store.state.readonly"
type="warning"
>编辑</el-button>
type="warning">编辑</el-button>
<el-button
@click="delClass(scope.row)"
size="mini"
v-if="$store.state.deletePermission && !$store.state.readonly"
type="danger"
>删除</el-button>
type="danger">删除</el-button>
</template>
</el-table-column>
</el-table>
......@@ -224,8 +221,17 @@ export default {
},
percent(val) {
return (val * 100).toFixed(2) + "%";
},
},
computed: {
periodName: function () {
if (this.selectedGoods.length) {
return `【${this.selectedGoods[0]}${this.title.title}${this.title.watch_num}课时(${this.title.start_at.slice(5).replace('-', '')})-d${this.title.has_watch_num}`
} else {
return ''
}
},
},
mounted() {
this.initPage();
},
......@@ -364,6 +370,7 @@ export default {
getGoodsListApi(json).then(res => {
console.log(res);
res.list.forEach(i => {
//i.name = `【${i.id}】`
i.name =
"[" +
i.id +
......@@ -466,15 +473,9 @@ export default {
data.transform_rate = 0;
});
this.title = res.periods;
this.title.count_join_num = res.count.count_join_num
? res.count.count_join_num
: "暂无";
this.title.count_max_join_num = res.count.count_max_join_num
? res.count.count_max_join_num
: "暂无";
this.title.count_teacher_num = res.count.count_teacher_num
? res.count.count_teacher_num
: "暂无";
this.title.count_join_num = res.count.count_join_num ? res.count.count_join_num : "暂无";
this.title.count_max_join_num = res.count.count_max_join_num ? res.count.count_max_join_num : "暂无";
this.title.count_teacher_num = res.count.count_teacher_num ? res.count.count_teacher_num : "暂无";
this.countObj = res.count ? res.count : "";
this.classList = res.list;
this.total = res.total;
......@@ -536,7 +537,7 @@ export default {
<style scoped lang="less">
.class {
padding: 20px 0;
/*padding: 20px 0;*/
}
.intro .el-form-item {
margin-bottom: 0;
......
......@@ -193,35 +193,16 @@
</el-collapse-item>
<el-collapse-item title="全勤活动星星期数(赠绘本)" name="10">
<div>
<el-button @click="periodDialogFn(1)">
添加期数
</el-button>
<el-table
:data="starList"
style="width: 100%">
<el-table-column
prop="id"
label="id" width="100">
</el-table-column>
<el-table-column
prop="goods_name"
label="商品名称">
</el-table-column>
<el-table-column
prop="title"
label="标题">
</el-table-column>
<el-table-column
label="操作"
min-width="150"
v-if="!$store.state.readonly">
<el-button @click="periodDialogFn(1)">添加期数</el-button>
<el-table :data="starList">
<el-table-column prop="id" label="id" width="100"></el-table-column>
<el-table-column prop="goods_name" label="商品名称"></el-table-column>
<el-table-column prop="title" label="标题"></el-table-column>
<el-table-column label="操作" width="120px" v-if="!$store.state.readonly">
<template slot-scope="scope">
<el-button
@click="delStarListFn(scope.row)"
type="warning"
plain
size="mini">
删除
type="warning" plain size="mini">删除
</el-button>
</template>
</el-table-column>
......@@ -230,76 +211,34 @@
</el-collapse-item>
<el-collapse-item title="全勤活动星星期数(返奖学金)" name="11">
<div>
<el-button @click="periodDialogFn(2)">
添加期数
</el-button>
<el-table
:data="starV2List"
style="width: 100%">
<el-table-column
prop="id"
label="id" width="100">
</el-table-column>
<el-table-column
prop="goods_name"
label="商品名称">
</el-table-column>
<el-table-column
prop="title"
label="标题">
</el-table-column>
<el-table-column
label="操作"
min-width="150"
v-if="!$store.state.readonly">
<el-button @click="periodDialogFn(2)">添加期数</el-button>
<el-table :data="starV2List">
<el-table-column prop="id" label="id" width="100"></el-table-column>
<el-table-column prop="goods_name" label="商品名称"></el-table-column>
<el-table-column prop="title" label="标题"></el-table-column>
<el-table-column label="操作" width="120px" v-if="!$store.state.readonly">
<template slot-scope="scope">
<el-button
@click="delStarV2ListFn(scope.row)"
type="warning"
plain
size="mini">
删除
@click="delStarV2ListFn(scope.row)" type="warning"
plain size="mini">删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-collapse-item>
<el-collapse-item title="招生来源列表" name="12">
<el-collapse-item title="活动方案列表" name="12">
<div>
<el-button @click="addSource">
添加列表
</el-button>
<el-table
:data="sourceStudentList"
style="width: 100%">
<el-table-column
prop="name"
label="来源名称" >
</el-table-column>
<el-table-column
prop="type"
label="type" width='90'>
</el-table-column>
<el-table-column
label="操作"
min-width="150"
v-if="!$store.state.readonly">
<el-button @click="addSource">添加列表</el-button>
<el-table :data="sourceStudentList">
<el-table-column prop="name" label="来源名称"></el-table-column>
<el-table-column prop="type" label="type" width='80px'></el-table-column>
<el-table-column label="操作" width="160px" v-if="!$store.state.readonly">
<template slot-scope="scope">
<el-button
@click="delSourceStudent(scope.row)"
type="warning"
plain
size="mini">
删除
</el-button>
@click="delSourceStudent(scope.row)" type="warning" plain size="mini">删除</el-button>
<el-button
@click="initSource(scope.row)"
type=""
plain
size="mini">
编辑
</el-button>
@click="initSource(scope.row)" plain size="mini">编辑</el-button>
</template>
</el-table-column>
</el-table>
......@@ -360,41 +299,40 @@
:options="periodList"
:props="{value:'id',label:'name'}"
@active-item-change="handleItemChange"
v-model="secGoods"
>
v-model="secGoods">
</el-cascader>
<span slot="footer" class="dialog-footer">
<el-button @click="noticeDialog = false">取 消</el-button>
<el-button type="primary" @click="onSend">确 定</el-button>
</span>
</el-dialog>
<el-dialog
title="添加期数"
:visible.sync="periodDialog">
<el-dialog title="添加期数" :visible.sync="periodDialog">
<el-form>
<el-form-item label="选择期数">
<el-cascader
:popper-class="'refresh-cascader-multi width-480'"
style="width: 480px"
:options="periodList"
:props="{value:'id',label:'name'}"
@active-item-change="handleItemChange"
v-model="secGoods"
>
</el-cascader>
<span slot="footer" class="dialog-footer">
v-model="secGoods"></el-cascader>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="periodDialog = false">取 消</el-button>
<el-button type="primary" @click="addPeriod">确 定</el-button>
</span>
</div>
</el-dialog>
<el-dialog
:title="dialogTitle"
:visible.sync="sourceStudentDialog">
<el-form :model="formData" label-width="100px" inline>
<el-form-item label="来源名称" style="margin-left:10px;">
<el-input v-model="formData.name"></el-input>
<el-dialog :title="dialogTitle" :visible.sync="sourceStudentDialog">
<el-form :model="formData" label-width="80px">
<el-form-item label="来源名称">
<el-input type="textarea" :autosize="{ minRows: 2}" v-model="formData.name"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<div slot="footer" class="dialog-footer">
<el-button @click="sourceStudentDialog = false">取 消</el-button>
<el-button type="primary" @click="editSourceStudent">确 定</el-button>
</span>
</div>
</el-dialog>
<el-dialog
:title="dialogTitle"
......@@ -562,7 +500,7 @@ export default {
console.log(row)
this.formData = row
this.sourceStudentDialog = true
this.dialogTitle = '招生来源编辑'
this.dialogTitle = '活动方案编辑'
},
addSource(){
this.formData = {
......@@ -570,14 +508,14 @@ export default {
name:''
}
this.sourceStudentDialog = true
this.dialogTitle = '招生来源新增'
this.dialogTitle = '活动方案新增'
},
editSourceStudent(){
let json = {
type:this.formData.type,
source_name:this.formData.name,
}
if(this.dialogTitle=='招生来源编辑'){
if(this.dialogTitle=='活动方案编辑'){
putSourceStudentApi(this.formData.type,json).then(res =>{
this.$message({
type: "success",
......@@ -1123,12 +1061,28 @@ export default {
};
</script>
<style scoped lang="less">
.box{padding: 20px;background: white;text-indent: 10px;box-sizing: border-box;}
.el-form-item{display: inline-block;margin-right: 40px;}
.container{
.box {
padding: 20px;
background: white;
text-indent: 10px;
box-sizing: border-box;
}
.el-collapse .el-form-item {
display: inline-block;
margin-right: 40px;
}
.container {
display: flex;
.left{width: 60%;}
.el-collapse-item__arrow{margin-left: 0;}
}
.left {
width: 60%;
}
.el-collapse-item__arrow {
margin-left: 0;
}
}
</style>
......@@ -140,8 +140,7 @@ export default {
goods_id: null,
teacherList: [],
goodsList: [],
periodList: [],
total: 0,
//periodList: [],
today: {
text: "今天",
onClick: () => {
......@@ -343,12 +342,12 @@ export default {
this.limit = val;
this.getChannelTransList();
},
getPeriodsOtherList() {
/*getPeriodsOtherList() {
let json = { limit: 1000, page: 1,max_watch_num:20 };
getPeriodsOtherListApi(json).then(res => {
this.periodList = res.list;
});
},
},*/
getChannelTransList() {
let json = {
limit: this.limit,
......
......@@ -157,8 +157,7 @@ export default {
list: [],
goods_id: null,
teacherList: [],
periodList: [],
total: 0,
//periodList: [],
today: {
text: "今天",
onClick: () => {
......@@ -204,7 +203,6 @@ export default {
];
}
},
propertyList: [],
spanArr: [],
contentSpanArr: [],
searchFrom: {
......@@ -391,12 +389,12 @@ export default {
this.limit = val;
this.getChannelTransList();
},
getPeriodsOtherList() {
/*getPeriodsOtherList() {
let json = { limit: 1000,page:1,max_watch_num:20 };
getPeriodsOtherListApi(json).then(res => {
this.periodList = res.list;
});
},
},*/
getChannelTransList() {
let json = {
limit: this.limit,
......
......@@ -35,8 +35,7 @@
placeholder="请选择"
style="width: 150px"
clearable
@change="selectChange"
>
@change="selectChange">
<el-option
v-for="(data,index) in watchList"
:key="index"
......@@ -52,8 +51,7 @@
placeholder="请选择"
style="width: 150px"
@change="getChannelTransList"
clearable
>
clearable>
<el-option
v-for="(data,index) in typeList"
:key="index"
......@@ -67,13 +65,15 @@
</el-form-item>
<el-form-item label="期数名称" prop="periods_title">
<el-select
:popper-class="'refresh-select-multi width-480'"
style="width: 480px"
placeholder="请选择"
v-model="searchFrom.periods_id"
@change="onPeriodChange"
multiple
clearable
filterable>
<el-option v-for="item in periodList" :key="item.id" :label="item.title" :value="item.id"></el-option>
<el-option v-for="item in periodList" :key="item.id" :label="item.label" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="组ID">
......@@ -86,8 +86,7 @@
placeholder="请选择"
@change="changeTeacher"
clearable
style="width: 100px"
>
style="width: 100px">
<el-option label="暂不分配" value="0"></el-option>
<el-option
v-for="(data,index) in teacherList"
......@@ -104,14 +103,7 @@
</div>
</el-form-item>
</el-form>
<el-table
border
:span-method="objectSpanMethod"
:data="list"
:style="{width: width+'px'}"
fixed
>
<el-table border :span-method="objectSpanMethod" :data="list" :style="{width: width+'px'}" fixed>
<!-- <div
class="no-data"
v-if="list.length == 0"
......@@ -121,13 +113,14 @@
<el-table-column prop="invite_type" label="渠道类型"></el-table-column>
<!-- <el-table-column prop="watch_num" label="商品课时数"></el-table-column> -->
<el-table-column prop="goods_name" label="商品名称" width="180"></el-table-column>
<el-table-column prop="periods_title" label="期数名称"></el-table-column>
<el-table-column prop="periods_title" label="期数名称">
<!--<template slot-scope="scope">
{{periodName(scope.row)}}
</template>-->
</el-table-column>
<el-table-column
prop="duration_over_at"
label="开课看课时间"
style="font-size:12px;"
width="200"
>
prop="duration_over_at" label="开课看课时间"
style="font-size:12px;" width="200">
<template slot-scope="scope">
开课日期:{{scope.row.start_at}}
<br>
......@@ -175,7 +168,6 @@ export default {
typeList:[],
width: 0,
nowPage: 1,
total: 0,
limit: 20,
list: [],
goods_id: null,
......@@ -273,7 +265,6 @@ export default {
];
}
},
propertyList: [],
spanArr: [],
contentSpanArr: [],
searchFrom: {
......@@ -300,6 +291,10 @@ export default {
},
components: { page },
methods: {
periodName(row) {
//return `【${row.goods_id}】${row.periods_title}${row.watch_num}课时(${row.start_at.slice(5).replace('-', '')})-d${this.title.has_watch_num}`
//return `【${row.goods_id}】${row.periods_title}${row.watch_num}课时(${row.start_at.slice(5).replace('-', '')})`
},
seachData() {
this.total = 0;
this.nowPage = 1;
......@@ -450,6 +445,9 @@ export default {
getPeriodsOtherList() {
let json = { limit: 1000,page:1,max_watch_num:20 };
getPeriodsOtherListApi(json).then(res => {
res.list.forEach(val=>{
val.label = `【${val.goods_id}${val.title}${val.watch_num}课时(${val.start_at.slice(5).replace('-', '')})-d${val.has_watch_num}`
})
this.periodList = res.list;
});
},
......
<template>
<div>
<div style="padding-top: 20px;">
<el-form ref="searchFrom" class="searchFrom" :model="searchFrom" label-width="100px" inline>
<el-form-item label="进量日期">
<el-date-picker
......@@ -36,13 +36,15 @@
</el-form-item>
<el-form-item label="期数名称" prop="periods_title">
<el-select
:popper-class="'refresh-select-multi width-480'"
style="width: 480px"
placeholder="请选择"
v-model="searchFrom.periods_id"
@change="onPeriodChange"
multiple
clearable
filterable>
<el-option v-for="item in periodList" :key="item.id" :label="item.title" :value="item.id"></el-option>
<el-option v-for="item in periodList" :key="item.id" :label="item.label" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
......@@ -58,12 +60,10 @@
:header-cell-style="{background:'#5f5f5f',color:'#fff'}"
:data="list"
size="mini"
height="calc(100vh - 210px)"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethod"
>
<el-table-column prop="periods_title" align="center" min-width="80" fixed label="期数名称">
</el-table-column>
:span-method="arraySpanMethod">
<!--height="calc(100vh - 210px)"-->
<el-table-column prop="periods_title" align="center" min-width="80" fixed label="期数名称"></el-table-column>
<el-table-column prop="is_other" min-width="160" align="left" fixed label="渠道信息">
<template slot-scope="scope">
来源:{{scope.row.is_other==0?"内部":"外部"}}<br>
......@@ -109,7 +109,6 @@ export default {
"wait_join_num",
"other_wait_join_num"
],
periodList:[],
searchFrom: {
payTime: [],
start_at: "",
......@@ -196,6 +195,9 @@ export default {
getPeriodsOtherList() {
let json = { limit: 1000,page:1,max_watch_num:20 };
getPeriodsOtherListApi(json).then(res => {
res.list.forEach(val=>{
val.label = `【${val.goods_id}${val.title}${val.watch_num}课时(${val.start_at.slice(5).replace('-', '')})-d${val.has_watch_num}`
})
this.periodList = res.list;
});
},
......@@ -292,10 +294,12 @@ export default {
<style scoped lang="less">
.searchFrom{
position: absolute;
top: 20px;
/*position: absolute;
top: 20px;*/
}
.el-table{
/*margin-top: 130px;*/
}
.el-table{margin-top: 130px;}
/deep/.el-table--enable-row-hover .el-table__body tr:hover > td {
background-color: #fff;
}
......@@ -306,6 +310,6 @@ export default {
max-width: 100% !important;
}
.el-main .content .router-block .child-view {
height: 100vh;
/*height: 100vh;*/
}
</style>
......@@ -11,8 +11,7 @@
end-placeholder="结束日期"
:picker-options="{shortcuts:[today,yesterday,last7Day,last30Day]}"
:default-time="['00:00:00','23:59:59']"
@change="getChannelTransList"
></el-date-picker>
@change="getChannelTransList"></el-date-picker>
</el-form-item>
<el-form-item label="开结课日期">
<el-date-picker
......@@ -24,8 +23,7 @@
end-placeholder="结束日期"
:picker-options="{shortcuts:[classToday,classYesterday,classLast7Day,classLast30Day]}"
:default-time="['00:00:00','23:59:59']"
@change="getChannelTransList"
></el-date-picker>
@change="getChannelTransList"></el-date-picker>
</el-form-item>
<el-form-item label="渠道code">
<el-input v-model="searchFrom.invite_type" style="width: 110px"></el-input>
......@@ -38,25 +36,23 @@
clearable
placeholder="请选择"
style="width: 150px"
@change="selectChange"
>
@change="selectChange">
<el-option
v-for="(data,index) in watchList"
:key="index"
:label="data.title"
:value="data.id"
></el-option>
:value="data.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="期数名称" prop="periods_title">
<el-select
style="width: 480px"
placeholder="请选择"
v-model="searchFrom.periods_id"
@change="onPeriodChange"
multiple
filterable
>
<el-option v-for="item in periodList" :key="item.id" :label="item.title" :value="item.id"></el-option>
filterable>
<el-option v-for="item in periodList" :key="item.id" :label="item.label" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="组ID">
......@@ -69,15 +65,13 @@
placeholder="请选择"
@change="changeTeacher"
clearable
style="width: 100px"
>
style="width: 100px">
<el-option label="暂不分配" value="0"></el-option>
<el-option
v-for="(data,index) in teacherList"
:key="index"
:label="data.name"
:value="data.id"
></el-option>
:value="data.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
......@@ -92,15 +86,13 @@
:data="list"
@sort-change="sortMethod"
:style="{width: width+'px'}"
fixed
>
fixed>
<el-table-column prop="periods_title" label="期数名称" ></el-table-column>
<el-table-column
prop="duration_over_at"
label="开课看课时间"
style="font-size:12px;"
width="200"
>
width="200">
<template slot-scope="scope">
开课日期:{{scope.row.start_at}}
<br>
......@@ -164,7 +156,6 @@ export default {
teacherList: [],
goodsList: [],
periodList: [],
total: 0,
today: {
text: "今天",
onClick: () => {
......@@ -453,6 +444,9 @@ export default {
getPeriodsOtherList() {
let json = { limit: 1000,page:1,max_watch_num:20 };
getPeriodsOtherListApi(json).then(res => {
res.list.forEach(val=>{
val.label = `【${val.goods_id}${val.title}${val.watch_num}课时(${val.start_at.slice(5).replace('-', '')})-d${val.has_watch_num}`
})
this.periodList = res.list;
console.log(320)
});
......
......@@ -35,13 +35,13 @@
</el-form-item>
<el-form-item label="期数名称" prop="periods_title">
<el-select
style="width: 480px"
placeholder="请选择"
v-model="searchFrom.periods_id"
@change="onPeriodChange"
multiple
filterable
>
<el-option v-for="item in periodList" :key="item.id" :label="item.title" :value="item.id"></el-option>
filterable>
<el-option v-for="item in periodList" :key="item.id" :label="item.label" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="转化前商品">
......@@ -193,7 +193,6 @@ export default {
teacherList: [],
goodsList: [],
periodList: [],
total: 0,
today: {
text: "今天",
onClick: () => {
......@@ -473,6 +472,9 @@ export default {
getPeriodsOtherList() {
let json = { limit: 1000,page:1,max_watch_num:20 };
getPeriodsOtherListApi(json).then(res => {
res.list.forEach(val=>{
val.label = `【${val.goods_id}${val.title}${val.watch_num}课时(${val.start_at.slice(5).replace('-', '')})-d${val.has_watch_num}`
})
this.periodList = res.list;
console.log(320)
});
......
......@@ -37,13 +37,13 @@
</el-form-item>
<el-form-item label="期数名称" prop="periods_title">
<el-select
style="width: 480px"
placeholder="请选择"
v-model="searchFrom.periods_id"
@change="onPeriodChange"
multiple
filterable
>
<el-option v-for="item in periodList" :key="item.id" :label="item.title" :value="item.id"></el-option>
filterable>
<el-option v-for="item in periodList" :key="item.id" :label="item.label" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
......@@ -117,7 +117,6 @@ export default {
teacherList: [],
goodsList: [],
periodList: [],
total: 0,
today: {
text: "今天",
onClick: () => {
......@@ -355,6 +354,9 @@ export default {
getPeriodsOtherList() {
let json = { limit: 1000,page:1,max_watch_num:20 };
getPeriodsOtherListApi(json).then(res => {
res.list.forEach(val=>{
val.label = `【${val.goods_id}${val.title}${val.watch_num}课时(${val.start_at.slice(5).replace('-', '')})-d${val.has_watch_num}`
})
this.periodList = res.list;
});
},
......
......@@ -29,8 +29,7 @@
clearable
placeholder="请选择"
style="width: 150px"
@change="selectChange"
>
@change="selectChange">
<el-option
v-for="(data,index) in watchList"
:key="index"
......@@ -41,12 +40,13 @@
</el-form-item>
<el-form-item label="期数名称" prop="periods_title">
<el-select
style="width: 480px"
placeholder="请选择"
v-model="searchFrom.periods_id"
@change="onPeriodChange"
multiple
filterable>
<el-option v-for="item in periodList" :key="item.id" :label="item.title" :value="item.id"></el-option>
<el-option v-for="item in periodList" :key="item.id" :label="item.label" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
......@@ -121,7 +121,6 @@ export default {
teacherList: [],
goodsList: [],
periodList: [],
total: 0,
today: {
text: "今天",
onClick: () => {
......@@ -358,6 +357,9 @@ export default {
getPeriodsOtherList() {
let json = { limit: 1000,page:1,max_watch_num:20 };
getPeriodsOtherListApi(json).then(res => {
res.list.forEach(val=>{
val.label = `【${val.goods_id}${val.title}${val.watch_num}课时(${val.start_at.slice(5).replace('-', '')})-d${val.has_watch_num}`
})
this.periodList = res.list;
});
},
......
......@@ -35,12 +35,13 @@
</el-form-item>
<el-form-item label="期数名称" prop="periods_title">
<el-select
style="width: 480px"
placeholder="请选择"
v-model="searchFrom.periods_id"
@change="onPeriodChange"
multiple
filterable>
<el-option v-for="item in periodList" :key="item.id" :label="item.title" :value="item.id"></el-option>
<el-option v-for="item in periodList" :key="item.id" :label="item.label" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="老师">
......@@ -164,7 +165,6 @@ export default {
teacherList: [],
goodsList: [],
periodList: [],
total: 0,
today: {
text: "今天",
onClick: () => {
......@@ -456,6 +456,9 @@ export default {
getPeriodsOtherList() {
let json = { limit: 1000,page:1,max_watch_num:20 };
getPeriodsOtherListApi(json).then(res => {
res.list.forEach(val=>{
val.label = `【${val.goods_id}${val.title}${val.watch_num}课时(${val.start_at.slice(5).replace('-', '')})-d${val.has_watch_num}`
})
this.periodList = res.list;
});
},
......
<template>
<el-dialog :visible.sync="newIntegral.show" width="800px" center :title="newIntegral.id ? '修改兑换码' : '生成兑换码'">
<el-form label-width="150px" :model="newIntegral" ref="newIntegral">
<el-form-item label="名称"
prop="name"
<el-form-item label="名称" prop="name"
:rules="[{ required: true, message: '请输入名称', trigger: 'blur' }]">
<el-row :gutter="20">
<el-col :span="20">
<el-input v-model="newIntegral.name"/>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="商品"
prop="goods_id"
<el-form-item label="商品" prop="goods_id"
:rules="[{ required: true, message: '请选择商品', trigger: 'change' }]">
<el-row :gutter="20">
<el-col :span="20">
<el-select v-model="newIntegral.goods_id" filterable>
<el-option v-for="data in goodsList" :key="data.id" :label="`【${data.id}】${data.name}`" :value="data.id"/>
</el-select>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="招生来源">
<el-select v-model="newIntegral.source" placeholder="请选择" filterable>
<el-form-item label="活动方案">
<el-select
v-model="newIntegral.source"
:popper-class="'refresh-select-multi width-480'"
style="width: 480px" placeholder="请选择" filterable>
<el-option
v-for="(data,index) in classSource"
:key="index"
......@@ -31,20 +24,12 @@
</el-option>
</el-select>
</el-form-item >
<el-form-item label="数量"
prop="num"
<el-form-item label="数量" prop="num"
:rules="[{ required: true, message: '请输入数量', trigger: 'blur' }]">
<el-row :gutter="20">
<el-col :span="20">
<el-input-number v-model="newIntegral.num"/>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="失效时间"
prop="expire_at"
<el-form-item label="失效时间" prop="expire_at"
:rules="[{ required: true, message: '请选择失效时间', trigger: 'change' }]">
<el-row :gutter="20">
<el-col :span="20">
<el-date-picker
v-model="newIntegral.expire_at"
type="datetime"
......@@ -53,23 +38,16 @@
:picker-options="pickerOptions0"
placeholder="选择日期">
</el-date-picker>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="备注"
prop="desc"
<el-form-item label="备注" prop="desc"
:rules="[{ required: true, message: '请填写备注信息', trigger: 'blur' }]">
<el-row :gutter="20">
<el-col :span="20">
<el-input v-model="newIntegral.desc"/>
</el-col>
</el-row>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<div slot="footer" class="dialog-footer">
<el-button @click="newIntegral.show = false">取 消</el-button>
<el-button type="primary" @click="onAdd">确 定</el-button>
</span>
</div>
</el-dialog>
</template>
......
......@@ -14,42 +14,21 @@
<el-button type="success" plain @click="addIntegral" v-if="!$store.state.readonly">生成兑换码</el-button>
</el-form-item>
</el-form>
<el-table
:data="list"
size="small"
style="width: 100%">
<el-table-column
prop="name"
label="名称">
</el-table-column>
<el-table-column
prop="goods_name"
label="商品">
<el-table :data="list" size="small">
<el-table-column prop="name" label="名称"></el-table-column>
<el-table-column prop="goods_name" label="商品">
<template slot-scope="scope">
{{scope.row.goods_id}}{{scope.row.goods_name}}
</template>
</el-table-column>
<el-table-column
prop="num"
label="数量">
</el-table-column>
<el-table-column prop="source" label="招生来源">
<el-table-column prop="num" label="数量" width="80px"></el-table-column>
<el-table-column prop="source" label="活动方案">
<template slot-scope="scope">{{scope.row.source | classSourceFilter}}</template>
</el-table-column>
<el-table-column
prop="desc"
label="备注"
/>
<el-table-column
prop="expire_at"
label="失效时间"
/>
<el-table-column
prop="created_at"
label="创建时间"
/>
<el-table-column
label="操作" width="180">
<el-table-column prop="desc" label="备注"/>
<el-table-column prop="expire_at" label="失效时间" width="90px"/>
<el-table-column prop="created_at" label="创建时间" width="90px"/>
<el-table-column label="操作" width="180">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="onDetail(scope.row)">查看详情</el-button>
<el-button type="warning" size="mini" v-if="!$store.state.readonly" @click="onEdit(scope.row)">编辑</el-button>
......
......@@ -54,7 +54,14 @@
.menu-block{
float: left;
height: 100%;
overflow: auto;
background-color: #333333;
/*height: calc(100vh - 60px);*/
/*overflow: auto;
position: fixed;
left: 0;
top: 60px;
bottom: 0;
z-index: 10;*/
}
.content{
display: flex;
......@@ -64,9 +71,9 @@
height: 100%;
position: relative;
.child-view{
height: calc(100% - 40px);
/*height: calc(100% - 40px);
width: 100%;
overflow-y: auto;
overflow-y: auto;*/
}
}
}
......
......@@ -2,6 +2,7 @@
<el-menu
:default-active="$route.path"
:router="true"
:unique-opened="true"
text-color="#fff"
background-color="#333333"
active-text-color="#ffd04b"
......
......@@ -16,9 +16,7 @@
<el-tab-pane label="日课" name="1"></el-tab-pane>
<el-tab-pane label="月课" name="0"></el-tab-pane>
</el-tabs>
<el-table
:data="userList"
style="width: 100%">
<el-table :data="userList">
<el-table-column
prop="title"
label="课程名">
......@@ -181,8 +179,8 @@
margin: 0;
}
.user{
height: 100%;
overflow: auto;
/*height: 100%;*/
/*overflow: auto;*/
padding: 20px 0;
.btn-content{
text-align: center;
......
......@@ -10,7 +10,7 @@
<el-input type="password" v-model="login.password" placeholder="密码"></el-input>
</el-form-item>
<el-form-item>
<el-button class="btn" size="medium" type="primary" @click="submitForm"></el-button>
<el-button class="btn" size="medium" type="primary" @click="submitForm"></el-button>
<router-link class="fr" :to="{name:'register'}" >
班主任注册入口
</router-link>
......
......@@ -5,11 +5,9 @@
align="center"
:header-cell-style="{background:'#5f5f5f',color:'#fff'}"
:data="list"
height="calc(100vh - 60px)"
size="mini"
:row-class-name="tableRowClassName"
:span-method="arraySpanMethod"
>
:span-method="arraySpanMethod">
<el-table-column min-width="180" prop="wait_join_num" align="left" fixed="left" label="期数总状况">
<template slot-scope="scope">
期数名称:{{scope.row.title}}
......
<template>
<div>
<el-dialog
:title="dialogObj.title"
:visible.sync="dialogObj.show"
>
<el-dialog :title="dialogObj.title" :visible.sync="dialogObj.show">
<el-table
:data="goodList"
style="width: 100%"
row-key="id"
highlight-current-row
@current-change="handleCurrentChange">
<el-table-column
prop="id"
label="商品ID">
</el-table-column>
<el-table-column prop="id" label="商品ID"></el-table-column>
<el-table-column
prop="name"
label="名称">
......
......@@ -6,7 +6,9 @@
<el-input v-model="title" placeholder="请输入内容" style="width: 150px" clearable></el-input>
</el-form-item>
<el-form-item label="商品名称">
<el-select v-model="goodsId" filterable placeholder="请选择" style="width: 150px" @change="onSearch" clearable>
<el-select
:popper-class="'refresh-select-multi width-400'" style="width: 400px"
v-model="goodsId" filterable placeholder="请选择" @change="onSearch" clearable>
<el-option
v-for="(data,index) in goodList"
:key="index"
......
......@@ -2,16 +2,15 @@
<div>
<el-dialog
:title="dialogObj.title"
center
append-to-body
center append-to-body
:visible.sync="show"
width="800px">
<div v-loading="loading">
<el-form ref="form" :model="form" label-width="120px" :rules="rules">
<el-row>
<el-col :span="10">
<el-form-item label="商品名称" prop="goods_id">
<el-select v-model="form.goods_id" placeholder="请选择" @change="onOptionChange" :disabled="form.id ? true : false">
<el-select
:popper-class="'refresh-select-multi width-480'" style="width: 480px"
v-model="form.goods_id" placeholder="请选择" @change="onOptionChange" :disabled="form.id ? true : false">
<el-option
v-for="(data,index) in goodList"
:key="index"
......@@ -20,8 +19,6 @@
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="期数名称" prop="title">
<el-input v-model="form.title"></el-input>
</el-form-item>
......@@ -83,10 +80,10 @@
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="show = false">取 消</el-button>
<el-button type="primary" @click="sub">确 定</el-button>
</span>
</div>
</el-dialog>
</div>
......
......@@ -56,7 +56,7 @@
</el-table-column>
<el-table-column
prop="last_login_at"
label="最后登时间" sortable>
label="最后登时间" sortable>
</el-table-column>
<el-table-column
v-if="!$store.state.readonly"
......
......@@ -37,7 +37,7 @@
prop="user_role">
</el-table-column>
<el-table-column
label="登名"
label="登名"
prop="user_name">
</el-table-column>
<el-table-column
......
......@@ -97,7 +97,7 @@
limit: 10,
roleList:[],
exportMenuList:[
'2-3','5-10','5-2','5-1','5-3','5-8','5-9','3-1','7-9','6-3'
'2-3','5-10','5-2','5-1','5-3','5-8','5-9','3-1','7-9','6-3', '10-8'
],
dialog:{
title:'新增角色',
......
......@@ -43,7 +43,7 @@
<el-form-item>
<!--<div class="flexRow">-->
<el-button @click="onSearch" type="primary" plain>搜索</el-button>
<el-button @click="onAdd" type="success" plain>添加</el-button>
<el-button v-if="!$store.state.readonly" @click="onAdd" type="success" plain>添加</el-button>
<!--</div>-->
</el-form-item>
</el-form>
......@@ -74,14 +74,14 @@
{{scope.row.status == 0 ? '在职' : '离职'}}
</template>
</el-table-column>
<el-table-column label="操作">
<el-table-column label="操作" v-if="!$store.state.readonly" width="100">
<template slot-scope="scope">
<el-button size="mini" plain type="primary" @click="onEdit(scope.row)">编辑</el-button>
</template>
</el-table-column>
</el-table>
<page :total="total" :limit="limit" @pageChange="onPageChange" @sizeChange="onSizeChange"/>
<el-dialog :title="dialog.title" :visible.sync="dialog.show" width="500px">
<el-dialog :title="dialog.title" :visible.sync="dialog.show" width="800px">
<el-form ref="dialogForm" :rules="dialog.form.rules" :model="dialog.form" label-width="100px">
<el-form-item label="真实姓名:" prop="name">
......@@ -213,7 +213,6 @@
this.dialog.form.type = '';
this.dialog.form.in_at = '';*/
this.$nextTick(()=>{
console.log('tick')
this.$refs['dialogForm'].resetFields();
})
},
......@@ -335,7 +334,7 @@
}
.user {
height: 100%;
/*height: 100%;*/
overflow: auto;
padding: 20px 0;
......
......@@ -151,7 +151,7 @@
<style lang="less" scoped>
.user {
height: 100%;
/*height: 100%;*/
overflow: auto;
padding: 20px 0;
......
This diff is collapsed.
......@@ -139,43 +139,20 @@
</el-table>
</template>
</el-table-column>
<el-table-column
prop="periods_title"
label="期数名称">
</el-table-column>
<el-table-column
prop="class_name"
label="班级名称">
</el-table-column>
<el-table-column
prop="join_num"
label="已进班人数">
</el-table-column>
<el-table-column
prop="need_add_teacher_num"
label="需加好友数">
</el-table-column>
<el-table-column
prop="max_join_num"
label="最大班级人数">
</el-table-column>
<el-table-column
prop="start_at"
label="开课时间">
</el-table-column>
<el-table-column
prop="source"
label="招生来源">
<el-table-column prop="periods_title" label="期数名称"></el-table-column>
<el-table-column prop="class_name" label="班级名称"></el-table-column>
<el-table-column prop="join_num" label="已进班人数" width="90px"></el-table-column>
<el-table-column prop="need_add_teacher_num" label="需加好友数" width="90px"></el-table-column>
<el-table-column prop="max_join_num" label="最大班级人数" width="105px"></el-table-column>
<el-table-column prop="start_at" label="开课时间" width="110px"></el-table-column>
<el-table-column prop="source" label="活动方案">
<template slot-scope="scope">
{{scope.row.source | classSource}}
</template>
</el-table-column>
<el-table-column
label="操作" width="280">
<el-table-column label="操作" width="100">
<template slot-scope="scope">
<el-button @click="showUser(scope.row)" size="mini" plain type="primary">
班级成员
</el-button>
<el-button @click="showUser(scope.row)" size="mini" plain type="primary">班级成员</el-button>
</template>
</el-table-column>
</el-table>
......
......@@ -13,6 +13,11 @@
<el-form-item label="等级">
<el-input v-model="searchFrom.level"></el-input>
</el-form-item>
<!--<el-form-item label="标签">
<el-cascader
style="width: 320px" placeholder="选择标签" clearable @change="tagChange"
:options="options" :props="{ multiple: true, checkStrictly: true }"></el-cascader>
</el-form-item>-->
<el-form-item>
<div class="flexRow">
<el-button type="primary" plain @click="getUser">搜索</el-button>
......@@ -23,43 +28,21 @@
<el-table
:data="userList"
style="width: 100%">
<el-table-column
className="f-c"
label="用户">
<el-table-column className="f-c" label="用户">
<template slot-scope="scope">
<img class="avatar" :src="scope.row.avatar">{{scope.row.nickname}}(ID:{{scope.row.user_id}})
<img class="avatar" :src="scope.row.avatar">{{scope.row.nickname}}<br>(ID:{{scope.row.user_id}})
</template>
</el-table-column>
<el-table-column
prop="mobile"
label="手机号">
</el-table-column>
<el-table-column
prop="created_at"
label="注册时间" sortable>
</el-table-column>
<el-table-column
prop="last_login_at"
label="最后登录时间" sortable>
</el-table-column>
<el-table-column
prop="baby_name"
label="宝宝名称" >
</el-table-column>
<el-table-column
prop="birthday"
label="宝宝生日" >
</el-table-column>
<el-table-column
prop="sex"
label="宝宝性别" :formatter="sexFormatter" >
</el-table-column>
<el-table-column
label="操作">
<el-table-column prop="mobile" label="手机号"></el-table-column>
<el-table-column prop="created_at" label="注册时间" width="105px" sortable></el-table-column>
<el-table-column prop="last_login_at" label="最后登录" width="105px" sortable></el-table-column>
<!--<el-table-column prop="last_login_at" label="最后登录时间" width="120px" sortable></el-table-column>-->
<el-table-column prop="baby_name" label="宝宝名称"></el-table-column>
<el-table-column prop="birthday" label="宝宝生日" width="105px"></el-table-column>
<el-table-column prop="sex" label="宝宝性别" width="80px" :formatter="sexFormatter"></el-table-column>
<el-table-column label="操作" width="100px">
<template slot-scope="scope">
<el-button size="mini" plain type="primary" @click="goToDetail(scope.row.user_id)">
查看详情
</el-button>
<el-button size="mini" plain type="primary" @click="goToDetail(scope.row.user_id)">查看详情</el-button>
</template>
</el-table-column>
</el-table>
......@@ -123,6 +106,9 @@
this.getUser()
},
methods:{
tagChange() {
},
sexFormatter(item){
if(item.sex==0){
return '保密'
......@@ -204,16 +190,10 @@
}
</script>
<style scoped lang="less">
@import "../../util/public";
.avatar {
width: 50px;
margin-right: 5px;
border-radius: 50%;
height: 50px;
}
<style lang="less">
/*@import "../../util/public";*/
.user{
height: 100%;
/*height: 100%;*/
overflow: auto;
padding: 20px 0;
.btn-content{
......@@ -228,11 +208,3 @@
}
</style>
<style>
.f-c > div {
display: flex !important;
flex-flow: row;
justify-content: flex-start;
align-items: center;
}
</style>
......@@ -97,24 +97,19 @@
</el-table>
</template>
</el-table-column>
<el-table-column
prop="periods_title"
label="期数名称">
<el-table-column prop="periods_title" label="期数名称">
<template slot-scope="scope">
<router-link :to="{name:'class', query: { goods_id: scope.row.goods_id, periods_id: scope.row.periods_id}}" >
{{scope.row.periods_title}}
</router-link>
</template>
</el-table-column>
<el-table-column
label="看课权限">
<el-table-column label="看课权限">
<template slot-scope="scope">
{{scope.row.is_view_course === 1 ? '是' : '否'}}
</template>
</el-table-column>
<el-table-column
className="f-c"
label="老师">
<el-table-column className="f-c" label="老师">
<template slot-scope="scope">
<router-link :to="`/teacher/${scope.row.teacher_id}`" >
<div class="f-c">
......@@ -125,24 +120,11 @@
</router-link>
</template>
</el-table-column>
<el-table-column
prop="join_num"
label="加入人数">
</el-table-column>
<el-table-column
prop="max_join_num"
label="最大加入人数">
</el-table-column>
<el-table-column
prop="start_at"
label="开课时间">
</el-table-column>
<el-table-column
prop="created_at"
label="创建时间">
</el-table-column>
<el-table-column
label="操作" width="400px">
<el-table-column prop="join_num" label="加入人数"></el-table-column>
<el-table-column prop="max_join_num" label="最大加入人数"></el-table-column>
<el-table-column prop="start_at" label="开课时间"></el-table-column>
<el-table-column prop="created_at" label="创建时间"></el-table-column>
<el-table-column label="操作" width="340px">
<template slot-scope="scope">
<el-button @click="showUser(scope.row)" size="mini" type="primary"> 班级成员</el-button>
<el-button size="mini" type="warning" v-if="!$store.state.readonly" @click="editPrivilege(scope.row)" >编辑</el-button>
......
......@@ -12,8 +12,7 @@
</el-form-item>
<el-form-item label="商品名称">
<el-select v-model="searchFrom.goods_id" placeholder="请选择" filterable style="width: 150px" @change="getList" clearable>
<el-option v-for="(data,index) in goodList" :key="index" :label="data | filterGoods" :value="data.id">
</el-option>
<el-option v-for="(data,index) in goodList" :key="index" :label="data | filterGoods" :value="data.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="来源" class="test">
......@@ -23,8 +22,7 @@
</el-form-item>
<el-form-item label="订单状态">
<el-select multiple v-model="searchFrom.status" style="width: 230px" placeholder="请选择" @change="getList" clearable>
<el-option v-for="item in orderStatusOption" :key="item.id" :label="item.value" :value="item.id">
</el-option>
<el-option v-for="item in orderStatusOption" :key="item.id" :label="item.value" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="沟通情况">
......@@ -53,6 +51,19 @@
<el-form-item label="子订单号">
<el-input v-model="searchFrom.sub_order_id"></el-input>
</el-form-item>
<el-form-item label="活动方案">
<el-select
v-model="searchFrom.class_source" placeholder="请选择" filterable
@change="getList" style="width: 320px" clearable
:popper-class="'refresh-select-multi width-320'">
<el-option
v-for="(data,index) in activityPlan"
:key="index"
:label="data.name"
:value="data.type">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="下单时间">
<el-date-picker
v-model="searchFrom.createTime"
......@@ -110,22 +121,15 @@
<div style="position: absolute;top: 10px;right: 10px;font-size: 14px" v-if="$store.state.distribution">
老师:
<el-select size="small" v-model="teacherId" placeholder="请选择" clearable style="width: 150px" filterable>
<el-option label="暂不分配" value="0">
</el-option>
<el-option v-for="(data,index) in teacherList" :key="index" :label="data.name" :value="data.id">
</el-option>
<el-option label="暂不分配" value="0"></el-option>
<el-option v-for="(data,index) in teacherList" :key="index" :label="data.name" :value="data.id"></el-option>
</el-select>
<el-button size="small" type="success" @click="pullAll">批量分配</el-button>
<el-button size="small" type="primary" @click="initOeder">手动添加外部订单</el-button>
</div>
</div>
<el-table :data="list" size="mini" style="width: 100%"
@selection-change="handleSelectionChange">
<el-table-column
type="selection"
:selectable="selectedFlag"
width="55">
</el-table-column>
<el-table :data="list" size="mini" style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" :selectable="selectedFlag" width="40"></el-table-column>
<el-table-column prop="order_id" width="80" label="订单号">
<template slot-scope="scope">
<p>主订单号:{{scope.row.order_id}}</p>
......@@ -136,13 +140,11 @@
</el-table-column> -->
<el-table-column prop="nickname" label="购买人">
<template slot-scope="scope">
<div v-if='scope.row.user_id !== 0' >
<div v-if='scope.row.user_id !== 0'>
<img class="avatar" :src="scope.row.avatar" />
<div>{{scope.row.nickname}}<br>(ID:{{scope.row.user_id}})</div>
</div>
<div v-if='scope.row.user_id === 0'>
暂未绑定用户
</div>
<div v-if='scope.row.user_id === 0'>用户未绑定</div>
</template>
</el-table-column>
<el-table-column prop="periods_title" label="期数">
......@@ -156,7 +158,7 @@
</el-table-column>
<el-table-column prop="teacher_name" label="班级老师">
</el-table-column>
<el-table-column prop="class_source" width="80" label="招生来源">
<el-table-column prop="class_source" width="80" label="活动方案">
<template slot-scope="scope">
{{scope.row.class_source|classType}}
</template>
......@@ -176,12 +178,12 @@
<template slot-scope="scope">
姓名:{{scope.row.receiver_name}}
<br>
tel{{scope.row.receiver_phone}}
电话{{scope.row.receiver_phone}}
<br>
{{scope.row.receiver_province}} {{scope.row.receiver_city}} {{scope.row.receiver_area}} {{scope.row.receiver_address}}
</template>
</el-table-column>
<el-table-column prop="active_at" label="时间" width="190">
<el-table-column prop="active_at" label="时间" width="200">
<template slot-scope="scope">
<p>激活时间:{{scope.row.active_at === '0000-00-00 00:00:00'?'未激活':scope.row.active_at}}</p>
<p>下单时间:{{scope.row.create_time}}</p>
......@@ -195,12 +197,12 @@
</el-table-column>
<el-table-column class="editBox" label="操作" fixed="right" v-if="!$store.state.readonly" width="130">
<template slot-scope="scope">
<div class="cell-btn-vertical">
<el-button @click="initClearOtherOrder(scope.row.order_id)" size="mini" plain type="primary">清除激活信息</el-button>
<el-button @click="editNote(scope.row.id, scope.row.desc)" size="mini" plain type="primary">编辑备注</el-button>
<el-button @click="onRefund(scope.row.id, scope.row.money)" type="warning" plain size="mini" v-if="(scope.row.status === 1 || scope.row.status === 4|| scope.row.status === 5) && $store.state.orderRefund">
退款
</el-button>
<el-button @click="onRefund(scope.row.id, scope.row.money)" type="warning" plain size="mini" v-if="(scope.row.status === 1 || scope.row.status === 4|| scope.row.status === 5) && $store.state.orderRefund">退款</el-button>
<el-button @click="editAdress(scope.row)" v-if="!$store.state.readonly" size="mini" plain type="success">编辑地址</el-button>
</div>
</template>
</el-table-column>
</el-table>
......@@ -365,6 +367,7 @@ export default {
};
return {
importDialog:false,
activityPlan: [],
adressDialog:false,
postOtherOrderDialog:false,
postOtherOrderData:{},
......@@ -414,17 +417,15 @@ export default {
nowPage: 1,
total: 0,
limit: 10,
useTypeList: [
{
useTypeList: [{
user_buy: 0,
value: "未绑定"
},
{
}, {
user_buy: 1,
value: "已绑定"
}
],
}],
searchFrom: {
class_source: '',
goods_id: "",
mobile: "",
active_at:[],
......@@ -504,6 +505,7 @@ export default {
this.getGoodsOption();
this.getTeacherList();
getSourceStudentApi().then(res=>{
this.activityPlan = res;
let obj = {}
res.forEach((item,index)=>{
obj[item.type]=item.name
......@@ -765,10 +767,11 @@ export default {
json.active_start_at = this.searchFrom.active_at[0];
json.active_end_at = this.searchFrom.active_at[1]
}
if (this.searchFrom.pullTime&&this.searchFrom.pullTime.length === 2){
if (this.searchFrom.pullTime && this.searchFrom.pullTime.length === 2) {
json.pay_start_at = this.searchFrom.pullTime[0];
json.pay_end_at = this.searchFrom.pullTime[1];
}
this.searchFrom.class_source ? json.class_source = this.searchFrom.class_source : '';
getyunjiApi(json).then(res => {
this.total = res.total;
this.list = res.list ? res.list : [];
......@@ -870,7 +873,7 @@ export default {
};
</script>
<style scoped>
<style lang="less" scoped>
.sms {
padding: 20px 0;
}
......@@ -883,7 +886,6 @@ export default {
min-width: 50px;
margin-right: 10px;
height: 50px;
border-radius: 50%;
}
.el-form-item__content{height:32px;}
......
......@@ -2,6 +2,7 @@ import store from "@/store"
import Router from 'vue-router'
import Cookie from '../util/cookie'
const router =new Router({
scrollBehavior: () => ({y: 0}),
routes: [
{
path: '/',
......
......@@ -1266,6 +1266,26 @@ export const putSourceStudentApi = function (type,json) {
return Vue.prototype.$put(`${_baseUrl}api/admin/source/student/edit/${type}`,json)
};
// /api/admin/source/student/list
// 获取标签
export const getTagApi = function (json) {
return Vue.prototype.$fetch(`${_baseUrl}api/admin/category/list/3`, json)
};
// 新增标签
export const postTagApi = function (json) {
return Vue.prototype.$post(`${_baseUrl}api/admin/category/add/3`, json)
};
// 编辑标签
export const putTagApi = function (json) {
return Vue.prototype.$put(`${_baseUrl}api/admin/category/${json.category_id}`, json)
};
// 根据标签搜索用户
export const getTagUserApi = function (json) {
return Vue.prototype.$fetch(`${_baseUrl}api/admin/advanced/search`, json)
};
// 根据标签搜索用户
export const TagUserApi = function (json) {
return Vue.prototype.$fetch(`${_baseUrl}api/admin/advanced/search`, json)
};
// 获取员工列表
export const getStaffListApi = function (json) {
return Vue.prototype.$fetch(`${_baseUrl}api/admin/staff/list`, json)
......@@ -1286,13 +1306,13 @@ export const getStaffRecordApi = function (json) {
export const getTeacherTypeListApi = function (json) {
return Vue.prototype.$fetch(`${_baseUrl}api/admin/teacher/type/list`, json)
};
export const postTeacherTypeListApi = function (json) {
export const postTeacherTypeListApi = function (json) {
return Vue.prototype.$post(`${_baseUrl}api/admin/teacher/type/add`, json)
};
export const putTeacherTypeListApi = function (json) {
};
export const putTeacherTypeListApi = function (json) {
return Vue.prototype.$put(`${_baseUrl}api/admin/teacher/type/edit/${json.type}`, json)
};
export const postMediaConvertApi = function (json) {
};
export const postMediaConvertApi = function (json) {
return Vue.prototype.$post(`${_baseUrl}api/public/media/convert`, json)
};
///api/public/media/convert
\ No newline at end of file
};
///api/public/media/convert
......@@ -167,7 +167,7 @@ export default [{
{
name: '',
value: '用户管理',
icon: 'icon-laoshi',
icon: 'icon-yonghu',
list: [
{
value: '用户列表',
......@@ -630,6 +630,17 @@ export default [{
component: e => require(['@/components/system/staffRecord'], e),
}
},
{
value: '标签管理',
routerName: 'tag',
path: '/tag',
cover: '10-8',
router: {
path: '/tag',
name: 'tag',
component: e => require(['@/components/system/tag'], e),
}
},
{
value: '员工管理',
routerName: 'staff',
......
......@@ -19,40 +19,42 @@
padding: 10px;
margin: 10px 0;
}
.new-block{
margin: 10px;
text-align: right;
}
.fl-r{
float: right;
}
.text-c{
text-align: center;
}
.text-b{
font-weight: bold;
}
.color-b{
color: #6ba8e6;
}
.text-r{
text-align: right;
}
.main-block{
margin: 5px;
background: white;
padding: 5px;
}
html{
font-family: "Helvetica Neue",
Helvetica,
"PingFang SC",
"Hiragino Sans GB",
"Microsoft YaHei",
"微软雅黑",
Arial,
sans-serif;
font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
}
.clear-both{
&:after{
content: '';
......@@ -60,8 +62,9 @@ html{
clear: both;
}
}
//滚动条样式
::-webkit-scrollbar-track-piece { //滚动条凹槽的颜色,还可以设置边框属性
/*::-webkit-scrollbar-track-piece { //滚动条凹槽的颜色,还可以设置边框属性
border-radius: 10px;
}
::-webkit-scrollbar {//滚动条的宽度
......@@ -73,4 +76,4 @@ html{
border-radius: 10px;
height: 10px;
min-height:10px;
}
}*/
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