Commit 99540928 authored by 赵茹林's avatar 赵茹林

回访信息 [更新] 去掉只读时不能添加回访信息的权限判断

回访信息 [修复] 班级成员界面点沟通情况时未传teacher id导致不能添加回访信息的问题
教师列表选择框 [更新] 接口条数限制改为500
parent 24b04b2a
......@@ -16,7 +16,7 @@
v-for="(data,index) in teacherList"
:key="index"
:label="data.name"
:value="data.id" >
:value="data.id">
</el-option>
</el-select>
</el-form-item>
......@@ -35,7 +35,7 @@
v-for="(data,index) in classSource"
:key="index"
:label="data.name"
:value="data.type" >
:value="data.type">
</el-option>
</el-select>
</el-form-item>
......@@ -62,66 +62,77 @@
</template>
<script>
import {getTeacherListApi,getClassDetailApi,editClassApi,addClassApi,getPeriodsApi,getGoodsListApi,getPeriodsTeacherApi,uploadFileApi,getSourceStudentApi} from "../../service/api";
import {GOODSTYPE,CLASSSOURCE} from '../../util/wordbook';
import {
getTeacherListApi,
getClassDetailApi,
editClassApi,
addClassApi,
getPeriodsApi,
getGoodsListApi,
getPeriodsTeacherApi,
uploadFileApi,
getSourceStudentApi
} from "../../service/api";
import {GOODSTYPE, CLASSSOURCE} from '../../util/wordbook';
export default {
props:[
props: [
'dialogObj'
],
data(){
data() {
// let classSource=[];
// for (let x in CLASSSOURCE ) {
// classSource.push({label:CLASSSOURCE[x],value:Number(x)})
// }
return{
imageList:[],
form:{
teacher_id:'',
max_join_num:'',
class_name:"",
source:"",
qr:""
return {
imageList: [],
form: {
teacher_id: '',
max_join_num: '',
class_name: "",
source: "",
qr: ""
},
type:0,
classSource:[],
teacherList:[],
type: 0,
classSource: [],
teacherList: [],
exitTeacherList: [],
goodsList: [],
periods: {},
uploadShow: true
}
},
methods:{
beforeAvatarUpload(){
methods: {
beforeAvatarUpload() {
this.uploadShow = false
},
handleRemove(){
handleRemove() {
this.uploadShow = true
},
handleAvatarSuccess(res) {
this.imageList = [{name:res.data.url,url:process.env.IMAGE_URL_HEAD + res.data.url}]
this.imageList = [{name: res.data.url, url: process.env.IMAGE_URL_HEAD + res.data.url}]
},
uploadFile(a) {
this.loading = true;
this.$store.dispatch('setProgress',{type:'new',id:a.file.uid});
this.$store.dispatch('setProgress', {type: 'new', id: a.file.uid});
this.fileUid = a.file.uid;
uploadFileApi({file:a.file,type:'all'}).then(res=>{
uploadFileApi({file: a.file, type: 'all'}).then(res => {
this.form.media_id = res.wechat_info ? res.wechat_info.media_id : '';
this.imageList = [{name:res.url,url:process.env.IMAGE_URL_HEAD + res.url}];
this.imageList = [{name: res.url, url: process.env.IMAGE_URL_HEAD + res.url}];
this.uploadShow = false;
this.loading = false;
this.$message({
type: 'success',
message: '上传成功!'
});
}).catch(()=>{
}).catch(() => {
this.loading = false;
})
},
findDifferentArray(array1, array2){
findDifferentArray(array1, array2) {
let newArray = [];
array1.forEach((val)=>{
let index = array2.findIndex((item)=>{
array1.forEach((val) => {
let index = array2.findIndex((item) => {
return item.teacher_id === val.id
})
if (index === -1) {
......@@ -130,33 +141,33 @@
})
return newArray
},
getTeacher(){
getTeacherListApi({limit:100,status:0}).then(res=>{
getTeacher() {
getTeacherListApi({limit: 500, status: 0}).then(res => {
this.teacherList = res.list
});
},
getTeacherByPeriods(){
getTeacherListApi({limit:100,status:0}).then(res=>{
getTeacherByPeriods() {
getTeacherListApi({limit: 500, status: 0}).then(res => {
this.teacherList = res.list
})
},
initPage(){
initPage() {
// 1为编辑
getSourceStudentApi().then(res=>{
getSourceStudentApi().then(res => {
this.classSource = res
})
this.periods = this.dialogObj.periods
switch (this.dialogObj.type) {
case 0:
if(!this.dialogObj.periodsId){
if (!this.dialogObj.periodsId) {
this.getPeriodList();
}
this.form = {
teacher_id:'',
max_join_num:'',
teacher_id: '',
max_join_num: '',
class_name: '',
source:'',
qr:""
source: '',
qr: ""
};
this.type = 0;
this.uploadShow = true
......@@ -164,16 +175,16 @@
break;
case 1:
this.type = 1;
getClassDetailApi(this.dialogObj.id).then(res=>{
getClassDetailApi(this.dialogObj.id).then(res => {
this.form = {
teacher_id: parseInt(res.teacher_id),
max_join_num:res.max_join_num,
class_name:res.class_name,
source:res.source,
max_join_num: res.max_join_num,
class_name: res.class_name,
source: res.source,
};
if(res.qr){
if (res.qr) {
this.form.qr = res.qr
this.imageList = [{name:res.qr,url:res.qr}];
this.imageList = [{name: res.qr, url: res.qr}];
}
this.form.media_id = res.media_id ? res.media_id : '';
this.uploadShow = !res.qr
......@@ -182,41 +193,43 @@
})
}
},
getPeriodList(){
getGoodsListApi().then(res=>{
res.list.forEach(i=>{
i.name = '[' + GOODSTYPE[i.goods_type] + ']' + '[' +i.current_price / 100 + '元]' + i.name
getPeriodList() {
getGoodsListApi().then(res => {
res.list.forEach(i => {
i.name = '[' + GOODSTYPE[i.goods_type] + ']' + '[' + i.current_price / 100 + '元]' + i.name
i.children = [];
});
this.goodsList = res.list;
if(!this.periods) {
getPeriodsApi({goods_id:this.goodsList[0].id}).then(res=>{
res.list.forEach(i=>{i.name = i.title});
if (!this.periods) {
getPeriodsApi({goods_id: this.goodsList[0].id}).then(res => {
res.list.forEach(i => {
i.name = i.title
});
this.goodsList[0].children = res.list;
this.periods = res.list[0]
})
}
});
},
onSave(){
if(this.imageList.length > 0){
onSave() {
if (this.imageList.length > 0) {
this.form.qr = this.imageList[0].url;
}
let json = {
max_join_num:String(this.form.max_join_num),
teacher_id:String(this.form.teacher_id),
source : this.form.source,
class_name:this.form.class_name,
media_id:this.form.media_id
max_join_num: String(this.form.max_join_num),
teacher_id: String(this.form.teacher_id),
source: this.form.source,
class_name: this.form.class_name,
media_id: this.form.media_id
};
if(this.form.qr){
if (this.form.qr) {
json.qr = this.form.qr
}
console.log(json)
switch (this.dialogObj.type) {
case 0:
let id = this.dialogObj.periodsId ? this.dialogObj.periodsId : this.periods.id;
addClassApi(id,json).then(res=>{
addClassApi(id, json).then(res => {
this.$message({
type: 'success',
message: '添加成功!'
......@@ -226,39 +239,47 @@
});
break;
case 1:
editClassApi(this.dialogObj.id,json).then(res=>{
editClassApi(this.dialogObj.id, json).then(res => {
this.$message({
type: 'success',
message: '修改成功!'
});
this.$emit("reflash",this.periods);
this.$emit("reflash", this.periods);
this.dialogObj.show = false;
})
}
},
handleItemChange(val){
getPeriodsApi({goods_id:val[0]}).then(res=>{
res.list.forEach(i=>{i.name = i.title});
this.goodsList.find(i=>{return i.id === val[0]}).children = res.list
handleItemChange(val) {
getPeriodsApi({goods_id: val[0]}).then(res => {
res.list.forEach(i => {
i.name = i.title
});
this.goodsList.find(i => {
return i.id === val[0]
}).children = res.list
})
},
changePeriods(data){
if(data.length>1){
let nowGoods = this.goodsList.find(i=>{return i.id === data[0]});
this.periods = nowGoods.children.find(i=>{return i.id === data[1]});
changePeriods(data) {
if (data.length > 1) {
let nowGoods = this.goodsList.find(i => {
return i.id === data[0]
});
this.periods = nowGoods.children.find(i => {
return i.id === data[1]
});
this.getTeacherByPeriods()
}
},
selectName(val,id){
let filterVal=val.filter(function(item,i){
selectName(val, id) {
let filterVal = val.filter(function (item, i) {
return item.id == id
});
this.form.class_name=filterVal[0].name+"一班";
this.form.class_name = filterVal[0].name + "一班";
}
},
watch:{
'dialogObj.show'(value){
if(value){
watch: {
'dialogObj.show'(value) {
if (value) {
this.initPage()
}
}
......@@ -267,12 +288,13 @@
</script>
<style scoped>
.qr-img {
.qr-img {
width: 148px !important;
border: none !important;
border-radius: 0 !important;
}
.disabled .el-upload--picture-card {
.disabled .el-upload--picture-card {
display: none !important;
}
</style>
......@@ -88,7 +88,9 @@
<el-table-column type="selection" width="40"></el-table-column>
<el-table-column width="120" label="沟通情况">
<template slot-scope="scope">
<teacher-desc :row="scope.row" :typeFlag="true" :descType="2" @onSuccess="searchList()"></teacher-desc>
<!--<teacher-desc :row="scope.row" :typeFlag="true" :descType="2" @onSuccess="searchList()"></teacher-desc>-->
<!---->
<teacher-desc :teacherId="userObj.teacherId" :row="scope.row" :typeFlag="true" :descType="2" @onSuccess="searchList()"></teacher-desc>
</template>
</el-table-column>
<el-table-column label="用户" className="f-c" min-width="180" sortable prop="user_id">
......
......@@ -154,7 +154,7 @@
</div>
</template>
<script>
import {
import {
getTeacherListApi,
getchannelTransListApi,
getPeriodsApi,
......@@ -163,16 +163,16 @@ import {
getPeriodsOtherListApi,
getConfigListApi,
getUpdateTimeApi
} from "../../service/api";
import page from "../framework/page";
import { GOODSTYPE, CLASSSOURCE } from "../../util/wordbook";
} from "../../service/api";
import page from "../framework/page";
import {GOODSTYPE, CLASSSOURCE} from "../../util/wordbook";
export default {
export default {
name: "channelTransList",
data() {
return {
updateTime: '',
typeList:[],
typeList: [],
width: 0,
nowPage: 1,
limit: 20,
......@@ -276,7 +276,7 @@ export default {
contentSpanArr: [],
searchFrom: {
payTime: [],
classTime:[],
classTime: [],
start_at: "",
end_at: "",
invite_type: "",
......@@ -289,14 +289,14 @@ export default {
},
propertyList: [],
watchList: [
{ id: 0, title: 5 },
{ id: 1, title: 6 },
{ id: 2, title: 10 },
{ id: 3, title: 20 }
{id: 0, title: 5},
{id: 1, title: 6},
{id: 2, title: 10},
{id: 3, title: 20}
]
};
},
components: { page },
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}`
......@@ -319,7 +319,7 @@ export default {
},
exportDataTable() {
let json = {};
if(this.searchFrom.sort_value){
if (this.searchFrom.sort_value) {
json.sort_value = this.searchFrom.sort_value;
json.sort_key = this.searchFrom.sort_key;
}
......@@ -364,7 +364,7 @@ export default {
// }
},
handleItemChange(val) {
getPeriodsApi({ goods_id: val[0], limit: 100 }).then(res => {
getPeriodsApi({goods_id: val[0], limit: 100}).then(res => {
res.list.forEach(i => {
i.name = i.title;
});
......@@ -416,12 +416,12 @@ export default {
getTeacherList() {
let json = {
page: 1,
limit: 200
limit: 500
};
getTeacherListApi(json).then(res => {
this.teacherList = res.list;
});
getConfigListApi({page:1, limit: 100,key:'code_rule_type'}).then(res=>{
getConfigListApi({page: 1, limit: 100, key: 'code_rule_type'}).then(res => {
this.typeList = res.list
})
},
......@@ -450,9 +450,9 @@ export default {
});
},
getPeriodsOtherList() {
let json = { limit: 1000,page:1,max_watch_num:20 };
let json = {limit: 1000, page: 1, max_watch_num: 20};
getPeriodsOtherListApi(json).then(res => {
res.list.forEach(val=>{
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;
......@@ -467,7 +467,7 @@ export default {
if (this.searchFrom.invite_type) {
json.invite_type = this.searchFrom.invite_type;
}
if(this.searchFrom.sort_value){
if (this.searchFrom.sort_value) {
json.sort_value = this.searchFrom.sort_value;
json.sort_key = this.searchFrom.sort_key;
}
......@@ -486,7 +486,7 @@ export default {
if (this.searchFrom.teacher_id) {
json.teacher_id = this.searchFrom.teacher_id;
}
if (this.searchFrom.payTime&&this.searchFrom.payTime.length > 0) {
if (this.searchFrom.payTime && this.searchFrom.payTime.length > 0) {
if (
this.searchFrom.payTime[0] &&
this.searchFrom.payTime[0].length > 0
......@@ -502,7 +502,7 @@ export default {
json.end_at = this.searchFrom.end_at;
}
}
if (this.searchFrom.classTime&&this.searchFrom.classTime.length > 0) {
if (this.searchFrom.classTime && this.searchFrom.classTime.length > 0) {
console.log(this.searchFrom.classTime)
if (
this.searchFrom.classTime[0] &&
......@@ -583,12 +583,12 @@ export default {
this.getPeriodsOtherList();
this.getUpdateTime();
}
};
};
</script>
<style lang="less" scope>
.channel-trans-list {
.channel-trans-list {
padding: 20px 0;
}
}
</style>
......@@ -145,11 +145,18 @@
</div>
</template>
<script>
import { getPeriodsConversionListApi, getGoodsListApi, getPeriodsOtherListApi, getTeacherListApi, getUpdateTimeApi } from "../../service/api";
import page from "../framework/page";
import { GOODSTYPE, CLASSSOURCE } from "../../util/wordbook";
import { tipArr3 } from "../../util/tipArr";
export default {
import {
getPeriodsConversionListApi,
getGoodsListApi,
getPeriodsOtherListApi,
getTeacherListApi,
getUpdateTimeApi
} from "../../service/api";
import page from "../framework/page";
import {GOODSTYPE, CLASSSOURCE} from "../../util/wordbook";
import {tipArr3} from "../../util/tipArr";
export default {
name: "periodsConversionList",
data() {
return {
......@@ -253,7 +260,7 @@ export default {
contentSpanArr: [],
searchFrom: {
payTime: [],
classTime:[],
classTime: [],
start_at: "",
end_at: "",
invite_type: "",
......@@ -266,14 +273,14 @@ export default {
},
propertyList: [],
watchList: [
{ id: 0, title: 5 },
{ id: 1, title: 6 },
{ id: 2, title: 10 },
{ id: 3, title: 20 }
{id: 0, title: 5},
{id: 1, title: 6},
{id: 2, title: 10},
{id: 3, title: 20}
]
};
},
components: { page },
components: {page},
methods: {
periodName(val) {
let str = '';
......@@ -296,7 +303,7 @@ export default {
}
return str
},
rendertip(h, { column }) {
rendertip(h, {column}) {
// console.log(h)
return h("span", [
h("span", column.label),
......@@ -318,11 +325,11 @@ export default {
)
]);
},
sortMethod(data){
sortMethod(data) {
this.searchFrom.sort_key = data.prop
if(data.order=='ascending'){
if (data.order == 'ascending') {
this.searchFrom.sort_value = 'asc'
}else{
} else {
this.searchFrom.sort_value = 'desc'
}
this.getChannelTransList()
......@@ -330,7 +337,7 @@ export default {
getTeacherList() {
let json = {
page: 1,
limit: 200
limit: 500
};
getTeacherListApi(json).then(res => {
this.teacherList = res.list;
......@@ -395,7 +402,7 @@ export default {
// }
},
handleItemChange(val) {
getPeriodsApi({ goods_id: val[0], limit: 100 }).then(res => {
getPeriodsApi({goods_id: val[0], limit: 100}).then(res => {
res.list.forEach(i => {
i.name = i.title;
});
......@@ -469,9 +476,9 @@ export default {
});
},
getPeriodsOtherList() {
let json = { limit: 1000,page:1,max_watch_num:20 };
let json = {limit: 1000, page: 1, max_watch_num: 20};
getPeriodsOtherListApi(json).then(res => {
res.list.forEach(val=>{
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;
......@@ -487,7 +494,7 @@ export default {
if (this.searchFrom.invite_type) {
json.invite_type = this.searchFrom.invite_type;
}
if(this.searchFrom.sort_value){
if (this.searchFrom.sort_value) {
json.sort_value = this.searchFrom.sort_value;
json.sort_key = this.searchFrom.sort_key;
}
......@@ -503,7 +510,7 @@ export default {
if (this.searchFrom.teacher_id) {
json.teacher_id = this.searchFrom.teacher_id;
}
if (this.searchFrom.payTime&&this.searchFrom.payTime.length > 0) {
if (this.searchFrom.payTime && this.searchFrom.payTime.length > 0) {
if (
this.searchFrom.payTime[0] &&
this.searchFrom.payTime[0].length > 0
......@@ -519,7 +526,7 @@ export default {
json.end_at = this.searchFrom.end_at;
}
}
if (this.searchFrom.classTime&&this.searchFrom.classTime.length > 0) {
if (this.searchFrom.classTime && this.searchFrom.classTime.length > 0) {
console.log(this.searchFrom.classTime)
if (
this.searchFrom.classTime[0] &&
......@@ -600,12 +607,12 @@ export default {
this.getTeacherList();
this.getUpdateTime()
}
};
};
</script>
<style lang="less" scope>
.channel-trans-list {
.channel-trans-list {
padding: 20px 0;
}
}
</style>
......@@ -96,7 +96,7 @@
:style="{width: width+'px'}"
fixed
>
<el-table-column prop="out_trade_no" label="订单号" ></el-table-column>
<el-table-column prop="out_trade_no" label="订单号"></el-table-column>
<el-table-column
label="购买人"
className="f-c"
......@@ -105,8 +105,8 @@
<img class="avatar" :src="scope.row.user_avatar"/> {{scope.row.user_nickname}}<br>(ID:{{scope.row.user_id}})<br>手机:{{scope.row.user_mobile}}
</template>
</el-table-column>
<el-table-column prop="goods_name" label="商品名称" ></el-table-column>
<el-table-column prop="periods_title" label="期数标题" ></el-table-column>
<el-table-column prop="goods_name" label="商品名称"></el-table-column>
<el-table-column prop="periods_title" label="期数标题"></el-table-column>
<el-table-column
prop="duration_over_at"
label="开课看课时间"
......@@ -151,10 +151,10 @@
<img class="avatar" :src="scope.row.class_invite_user_avatar"/> {{scope.row.class_invite_user_nickname}}<br>(ID:{{scope.row.class_invite_user_id}})<br>手机:{{scope.row.class_invite_user_mobile}}
</template>
</el-table-column>
<el-table-column prop="money" label="实付金额" ></el-table-column>
<el-table-column prop="pay_at" label="支付时间" ></el-table-column>
<el-table-column prop="in_class_at" label="进班时间" ></el-table-column>
<el-table-column prop="status" label="支付状态" >
<el-table-column prop="money" label="实付金额"></el-table-column>
<el-table-column prop="pay_at" label="支付时间"></el-table-column>
<el-table-column prop="in_class_at" label="进班时间"></el-table-column>
<el-table-column prop="status" label="支付状态">
<template slot-scope="scope">
{{scope.row.status|orderFilter}}
</template>
......@@ -170,11 +170,18 @@
</div>
</template>
<script>
import { getPeriodsConversionListApi, getSourceConversionListApi, getGoodsListApi, getPeriodsOtherListApi, getTeacherListApi } from "../../service/api";
import page from "../framework/page";
import { GOODSTYPE, CLASSSOURCE,ORDERSTATUS } from "../../util/wordbook";
import { tipArr3 } from "../../util/tipArr";
export default {
import {
getPeriodsConversionListApi,
getSourceConversionListApi,
getGoodsListApi,
getPeriodsOtherListApi,
getTeacherListApi
} from "../../service/api";
import page from "../framework/page";
import {GOODSTYPE, CLASSSOURCE, ORDERSTATUS} from "../../util/wordbook";
import {tipArr3} from "../../util/tipArr";
export default {
name: "periodsConversionList",
data() {
return {
......@@ -278,7 +285,7 @@ export default {
contentSpanArr: [],
searchFrom: {
payTime: [],
classTime:[],
classTime: [],
start_at: "",
end_at: "",
invite_type: "",
......@@ -290,16 +297,16 @@ export default {
periods_title: ""
},
watchList: [
{ id: 0, title: 5 },
{ id: 1, title: 6 },
{ id: 2, title: 10 },
{ id: 3, title: 20 }
{id: 0, title: 5},
{id: 1, title: 6},
{id: 2, title: 10},
{id: 3, title: 20}
],
goodList: []
};
},
filters:{
orderFilter(val){
filters: {
orderFilter(val) {
return ORDERSTATUS[val]
},
filterGoods(val) {
......@@ -317,7 +324,7 @@ export default {
);
}
},
components: { page },
components: {page},
methods: {
getGoodsOption() {
let json = {
......@@ -330,7 +337,7 @@ export default {
console.log(this.goodList, 176);
});
},
rendertip(h, { column }) {
rendertip(h, {column}) {
// console.log(h)
return h("span", [
h("span", column.label),
......@@ -352,11 +359,11 @@ export default {
)
]);
},
sortMethod(data){
sortMethod(data) {
this.searchFrom.sort_key = data.prop
if(data.order=='ascending'){
if (data.order == 'ascending') {
this.searchFrom.sort_value = 'asc'
}else{
} else {
this.searchFrom.sort_value = 'desc'
}
this.getChannelTransList()
......@@ -364,7 +371,7 @@ export default {
getTeacherList() {
let json = {
page: 1,
limit: 200
limit: 500
};
getTeacherListApi(json).then(res => {
this.teacherList = res.list;
......@@ -389,7 +396,7 @@ export default {
objectSpanMethod(data) {
},
handleItemChange(val) {
getPeriodsApi({ goods_id: val[0], limit: 100 }).then(res => {
getPeriodsApi({goods_id: val[0], limit: 100}).then(res => {
res.list.forEach(i => {
i.name = i.title;
});
......@@ -463,9 +470,9 @@ export default {
});
},
getPeriodsOtherList() {
let json = { limit: 1000,page:1,max_watch_num:20 };
let json = {limit: 1000, page: 1, max_watch_num: 20};
getPeriodsOtherListApi(json).then(res => {
res.list.forEach(val=>{
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;
......@@ -484,7 +491,7 @@ export default {
if (this.searchFrom.goods_id) {
json.goods_id = this.searchFrom.goods_id;
}
if(this.searchFrom.sort_value){
if (this.searchFrom.sort_value) {
json.sort_value = this.searchFrom.sort_value;
json.sort_key = this.searchFrom.sort_key;
}
......@@ -506,7 +513,7 @@ export default {
if (this.searchFrom.user_id) {
json.user_id = this.searchFrom.user_id;
}
if (this.searchFrom.payTime&&this.searchFrom.payTime.length > 0) {
if (this.searchFrom.payTime && this.searchFrom.payTime.length > 0) {
if (
this.searchFrom.payTime[0] &&
this.searchFrom.payTime[0].length > 0
......@@ -522,7 +529,7 @@ export default {
json.pay_over_at = this.searchFrom.end_at;
}
}
if (this.searchFrom.classTime&&this.searchFrom.classTime.length > 0) {
if (this.searchFrom.classTime && this.searchFrom.classTime.length > 0) {
console.log(this.searchFrom.classTime)
if (
this.searchFrom.classTime[0] &&
......@@ -596,12 +603,12 @@ export default {
this.getTeacherList()
this.getGoodsOption()
}
};
};
</script>
<style lang="less" scope>
.channel-trans-list {
.channel-trans-list {
padding: 20px 0;
}
}
</style>
......@@ -151,17 +151,18 @@
</div>
</template>
<script>
import {
import {
getTeacherPeriodsConversionListApi,
getGoodsListApi,
getPeriodsOtherListApi,
getTeacherListApi,
getUpdateTimeApi
} from "../../service/api";
import page from "../framework/page";
import { GOODSTYPE, CLASSSOURCE } from "../../util/wordbook";
import { tipArr3 } from "../../util/tipArr";
export default {
} from "../../service/api";
import page from "../framework/page";
import {GOODSTYPE, CLASSSOURCE} from "../../util/wordbook";
import {tipArr3} from "../../util/tipArr";
export default {
name: "teacherPeriodsConversionList",
data() {
return {
......@@ -268,7 +269,7 @@ export default {
spanArr: [],
contentSpanArr: [],
searchFrom: {
classTime:[],
classTime: [],
payTime: [],
start_at: "",
end_at: "",
......@@ -282,14 +283,14 @@ export default {
},
propertyList: [],
watchList: [
{ id: 0, title: 5 },
{ id: 1, title: 6 },
{ id: 2, title: 10 },
{ id: 3, title: 20 }
{id: 0, title: 5},
{id: 1, title: 6},
{id: 2, title: 10},
{id: 3, title: 20}
]
};
},
components: { page },
components: {page},
methods: {
periodName(val) {
let str = '';
......@@ -314,7 +315,7 @@ export default {
}
return str
},
rendertip(h, { column }) {
rendertip(h, {column}) {
// console.log(h)
return h("span", [
h("span", column.label),
......@@ -336,11 +337,11 @@ export default {
)
]);
},
sortMethod(data){
sortMethod(data) {
this.searchFrom.sort_key = data.prop
if(data.order=='ascending'){
if (data.order == 'ascending') {
this.searchFrom.sort_value = 'asc'
}else{
} else {
this.searchFrom.sort_value = 'desc'
}
this.getChannelTransList()
......@@ -348,7 +349,7 @@ export default {
getTeacherList() {
let json = {
page: 1,
limit: 200
limit: 500
};
getTeacherListApi(json).then(res => {
this.teacherList = res.list;
......@@ -413,7 +414,7 @@ export default {
// }
},
handleItemChange(val) {
getPeriodsApi({ goods_id: val[0], limit: 100 }).then(res => {
getPeriodsApi({goods_id: val[0], limit: 100}).then(res => {
res.list.forEach(i => {
i.name = i.title;
});
......@@ -487,9 +488,9 @@ export default {
});
},
getPeriodsOtherList() {
let json = { limit: 1000,page:1,max_watch_num:20 };
let json = {limit: 1000, page: 1, max_watch_num: 20};
getPeriodsOtherListApi(json).then(res => {
res.list.forEach(val=>{
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;
......@@ -504,7 +505,7 @@ export default {
if (this.searchFrom.invite_type) {
json.invite_type = this.searchFrom.invite_type;
}
if(this.searchFrom.sort_value){
if (this.searchFrom.sort_value) {
json.sort_value = this.searchFrom.sort_value;
json.sort_key = this.searchFrom.sort_key;
}
......@@ -520,7 +521,7 @@ export default {
if (this.searchFrom.teacher_id) {
json.teacher_id = this.searchFrom.teacher_id;
}
if (this.searchFrom.payTime&&this.searchFrom.payTime.length > 0) {
if (this.searchFrom.payTime && this.searchFrom.payTime.length > 0) {
if (
this.searchFrom.payTime[0] &&
this.searchFrom.payTime[0].length > 0
......@@ -536,7 +537,7 @@ export default {
json.end_at = this.searchFrom.end_at;
}
}
if (this.searchFrom.classTime&&this.searchFrom.classTime.length > 0) {
if (this.searchFrom.classTime && this.searchFrom.classTime.length > 0) {
console.log(this.searchFrom.classTime)
if (
this.searchFrom.classTime[0] &&
......@@ -616,12 +617,12 @@ export default {
this.getTeacherList();
this.getUpdateTime();
}
};
};
</script>
<style lang="less" scope>
.channel-trans-list {
.channel-trans-list {
padding: 20px 0;
}
}
</style>
......@@ -121,8 +121,8 @@
</el-table-column>
<el-table-column prop="nickname" label="领取人">
<template slot-scope="scope">
<div v-if='scope.row.user_id !== 0' >
<img class="avatar" :src="scope.row.avatar" />
<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'>
......@@ -193,64 +193,72 @@
<script>
import page from '../framework/page'
import CommonJs from '../../util/common';
import {getAdsInnerListApi,updateAdsInnerApi,updateAdsInnerPlApi,getTeacherListApi,getGoodsListApi,adsTeacherApi} from "../../service/api";
import {
getAdsInnerListApi,
updateAdsInnerApi,
updateAdsInnerPlApi,
getTeacherListApi,
getGoodsListApi,
adsTeacherApi
} from "../../service/api";
import {
GOODSTYPE,
externalLaunchStatusParams
} from "../../util/wordbook";
} from "../../util/wordbook";
export default {
name: "index",
components:{
components: {
page
},
data(){
data() {
return {
today:{
text:'今天',
onClick:(vm)=>{
vm.$emit('pick', [this.formatTime(new Date())+' 00:00:00',this.formatTime(new Date())+' 23:59:59'])
today: {
text: '今天',
onClick: (vm) => {
vm.$emit('pick', [this.formatTime(new Date()) + ' 00:00:00', this.formatTime(new Date()) + ' 23:59:59'])
}
},
yesterday:{
text:'昨天',
onClick:(vm)=>{
let preDate = this.formatTime(new Date(new Date().getTime() - 24*60*60*1000));
vm.$emit('pick', [preDate+' 00:00:00',preDate+' 23:59:59'])
yesterday: {
text: '昨天',
onClick: (vm) => {
let preDate = this.formatTime(new Date(new Date().getTime() - 24 * 60 * 60 * 1000));
vm.$emit('pick', [preDate + ' 00:00:00', preDate + ' 23:59:59'])
}
},
last30Day:{
text:'过去30天',
last30Day: {
text: '过去30天',
onClick:(vm)=>{
let preDate = this.formatTime(new Date(new Date().getTime() - 30*24*60*60*1000));
vm.$emit('pick', [preDate+' 00:00:00',this.formatTime(new Date())+' 23:59:59']);
onClick: (vm) => {
let preDate = this.formatTime(new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000));
vm.$emit('pick', [preDate + ' 00:00:00', this.formatTime(new Date()) + ' 23:59:59']);
}
},
last7Day:{
text:'过去7天',
onClick:(vm)=>{
let preDate = this.formatTime(new Date(new Date().getTime() - 7*24*60*60*1000));
vm.$emit('pick', [preDate+' 00:00:00',this.formatTime(new Date())+' 23:59:59']);
last7Day: {
text: '过去7天',
onClick: (vm) => {
let preDate = this.formatTime(new Date(new Date().getTime() - 7 * 24 * 60 * 60 * 1000));
vm.$emit('pick', [preDate + ' 00:00:00', this.formatTime(new Date()) + ' 23:59:59']);
}
},
teacherId:null,
secId:[],
total:0,
nowPage:1,
teacherId: null,
secId: [],
total: 0,
nowPage: 1,
limit: 10,
searchFrom: {
source:'',
course_type:'-1',
source: '',
course_type: '-1',
},
tableData:[],
tableData: [],
commentForm: {},
showCommentDialog: false,
teacherList:[],
teacherList: [],
goodList: [],
}
},
filters: {
filterStatus: function(value) {
filterStatus: function (value) {
let msg = "";
if (value === 0) {
msg = "未绑定";
......@@ -274,49 +282,49 @@
);
}
},
created(){
created() {
this.initPage()
this.getGoodsOption();
this.getTeacherList()
},
methods:{
externalLaunchStatus(row){
methods: {
externalLaunchStatus(row) {
return externalLaunchStatusParams[row.status]
},
formatTime(date){
formatTime(date) {
console.log(date)
let year = date.getFullYear();
let Month = date.getMonth()+1;
if(Month < 10){
let Month = date.getMonth() + 1;
if (Month < 10) {
Month = `0${Month}`
}
let Day = date.getDate();
if(Day<10)Day = `0${Day}`;
if (Day < 10) Day = `0${Day}`;
return `${year}-${Month}-${Day}`;
},
getGoodsOption() {
let json = {
page: 1,
limit: 100,
goods_type:'1,2'
goods_type: '1,2'
};
getGoodsListApi(json).then(res => {
this.goodList = res.list;
});
},
pullAll(){
if(this.secId.length < 1){
pullAll() {
if (this.secId.length < 1) {
this.$message('请选择订单');
return false;
}
if(!this.teacherId){
if (!this.teacherId) {
this.$message('请选择老师');
return false;
}
let json = {
order_ids:[]
order_ids: []
};
this.secId.forEach(i=>{
this.secId.forEach(i => {
json.order_ids.push(i)
});
this.$confirm(`是否确定将这${json.order_ids.length}笔订单分配给该老师?`, '提示', {
......@@ -324,7 +332,7 @@
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
adsTeacherApi(this.teacherId,{ids:json.order_ids.join(',')}).then(res=>{
adsTeacherApi(this.teacherId, {ids: json.order_ids.join(',')}).then(res => {
// this.secId = [];
this.$message({
message: '提交成功',
......@@ -338,20 +346,20 @@
getTeacherList() {
let json = {
page: 1,
limit: 200
limit: 500
};
getTeacherListApi(json).then(res => {
this.teacherList = res.list;
});
},
handleSelectionChange(val){
handleSelectionChange(val) {
this.secId = []
val.forEach(element => {
this.secId.push(element.id)
});
// console.log(this.secId)
},
initPage(){
initPage() {
let json = {
limit: this.limit,
page: this.nowPage
......@@ -393,90 +401,90 @@
if (this.searchFrom.goods_id) {
json.goods_id = this.searchFrom.goods_id;
}
if(this.searchFrom.time && this.searchFrom.time.length ==2 ){
if (this.searchFrom.time && this.searchFrom.time.length == 2) {
json.start_at = this.searchFrom.time[0];
json.end_at = this.searchFrom.time[1]
}
if(this.searchFrom.active_time && this.searchFrom.active_time.length ==2 ){
if (this.searchFrom.active_time && this.searchFrom.active_time.length == 2) {
json.active_start_at = this.searchFrom.active_time[0];
json.active_end_at =this.searchFrom.active_time[1]
json.active_end_at = this.searchFrom.active_time[1]
}
getAdsInnerListApi(json).then((res)=>{
getAdsInnerListApi(json).then((res) => {
this.tableData = res.list;
this.total = res.total
})
},
onPageChange(val){
onPageChange(val) {
this.nowPage = val
this.initPage()
},
onSizeChange(val){
onSizeChange(val) {
this.nowPage = 1
this.limit = val
this.initPage()
},
doExport(){
doExport() {
let query = `?type=export`;
if(this.searchFrom.source){
if (this.searchFrom.source) {
query = query + '&source=' + this.searchFrom.source
}
if(this.searchFrom.mobile){
if (this.searchFrom.mobile) {
query = query + '&mobile=' + this.searchFrom.mobile
}
if(this.searchFrom.status){
if (this.searchFrom.status) {
query = query + '&status=' + this.searchFrom.status
}
if(this.searchFrom.course_type !== '-1'){
if (this.searchFrom.course_type !== '-1') {
query = query + '&course_type=' + this.searchFrom.course_type
}
if(this.searchFrom.user_buy !== '-1'){
if (this.searchFrom.user_buy !== '-1') {
query = query + '&user_buy=' + this.searchFrom.user_buy
}
if(this.searchFrom.nickname){
if (this.searchFrom.nickname) {
query = query + '&nickname=' + this.searchFrom.nickname
}
if(this.searchFrom.user_id){
if (this.searchFrom.user_id) {
query = query + '&user_id=' + this.searchFrom.user_id
}
if(this.searchFrom.teacher_id){
if (this.searchFrom.teacher_id) {
query = query + '&teacher_id=' + this.searchFrom.teacher_id
}
if(this.searchFrom.goods_name){
if (this.searchFrom.goods_name) {
query = query + '&goods_name=' + this.searchFrom.goods_name
}
if(this.searchFrom.order_id){
if (this.searchFrom.order_id) {
query = query + '&order_id=' + this.searchFrom.order_id
}
if(this.searchFrom.goods_id){
if (this.searchFrom.goods_id) {
query = query + '&goods_id=' + this.searchFrom.goods_id
}
if(this.searchFrom.time && this.searchFrom.time.length ==2){
if (this.searchFrom.time && this.searchFrom.time.length == 2) {
query = query + '&start_at=' + this.searchFrom.time[0];
query = query + '&end_at=' + this.searchFrom.time[1]
}
if(this.searchFrom.active_time && this.searchFrom.active_time.length ==2){
if (this.searchFrom.active_time && this.searchFrom.active_time.length == 2) {
query = query + '&active_start_at=' + this.searchFrom.active_time[0];
query = query + '&active_end_at=' + this.searchFrom.active_time[1]
}
window.open(`/api/admin/ads/export/all${query}`)
},
saveComment(){
saveComment() {
// let id = this.commentForm.id;
let id
if(this.commentForm.id){
if (this.commentForm.id) {
id = this.commentForm.id
}else{
} else {
id = this.secId.join(',')
}
let desc = this.commentForm.desc ? this.commentForm.desc : '';
if(!desc) return;
if (!desc) return;
this.$confirm('确认编辑备注', '提示', {
confirmButtonText: '继续',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
updateAdsInnerPlApi({ids:id,desc:desc}).then(res=>{
updateAdsInnerPlApi({ids: id, desc: desc}).then(res => {
this.$message({
type: 'success',
message: '编辑备注成功'
......@@ -486,7 +494,7 @@
});
})
},
editNote(id, desc){
editNote(id, desc) {
this.showCommentDialog = true;
this.commentForm = {
id: id,
......@@ -494,13 +502,13 @@
};
},
editComment(id, desc) {
if(this.secId.length>0){
if (this.secId.length > 0) {
this.showCommentDialog = true;
// this.commentForm = {
// id: id,
// desc: desc
// };
}else{
} else {
this.$message({
type: 'warning',
message: '请选择'
......@@ -516,15 +524,17 @@
.index {
padding: 20px 0;
}
.sms {
padding: 20px 0;
}
.avatar {
}
.avatar {
width: 50px;
min-width: 50px;
margin-right: 10px;
height: 50px;
border-radius: 50%;
}
}
</style>
......@@ -72,6 +72,7 @@
&::-webkit-scrollbar {
background-color: #333333; /* or add it to the track */
&:hover {
&::-webkit-scrollbar-thumb {
background-color: #999;
......
......@@ -401,7 +401,7 @@
show: false,
nowPage: 1,
total: 0,
limit: 100,
limit: 500,
teacher_id: ''
},
teacherList: [],
......
......@@ -153,94 +153,101 @@
</template>
<script>
import {getGoodsListApi,setOrderApi,getPeriodsApi,getTeacherListApi,getUserListApi,getOrderTypeApi} from "../../service/api"
import {
getGoodsListApi,
setOrderApi,
getPeriodsApi,
getTeacherListApi,
getUserListApi,
getOrderTypeApi
} from "../../service/api"
import vueAddress from '../framework/address-picker/Address'
import AddressArray from '../framework/address-picker/addr'
import {ORDERSTATUS,BUYWay,GOODSTYPE} from "../../util/wordbook"
import {ORDERSTATUS, BUYWay, GOODSTYPE} from "../../util/wordbook"
import CommonJs from '../../util/common';
import page from '../framework/page'
export default {
name: "newdialogObj",
props:[
props: [
'newdialogObj'
],
data(){
return{
rules:{
data() {
return {
rules: {
periods_id: [
{ required: true, message: '请输入期数名称', trigger: 'change' }
{required: true, message: '请输入期数名称', trigger: 'change'}
],
goods_id: [
{ required: true, message: '请输入商品名称', trigger: 'change' }
{required: true, message: '请输入商品名称', trigger: 'change'}
],
money: [
{ required: true, message: '请输入金额', trigger: 'blur' }
{required: true, message: '请输入金额', trigger: 'blur'}
],
user_id: [
{ required: true, message: '请输入用户ID', trigger: 'blur' }
{required: true, message: '请输入用户ID', trigger: 'blur'}
],
pay_at: [
{ required: true, message: '请选择日期', trigger: 'change' }
{required: true, message: '请选择日期', trigger: 'change'}
],
order_type:[
{ required: true, message: '请选择支付类型', trigger: 'change' }
order_type: [
{required: true, message: '请选择支付类型', trigger: 'change'}
],
out_trade_no:[
{ required: true, message: '请填写订单号', trigger: 'change' }
out_trade_no: [
{required: true, message: '请填写订单号', trigger: 'change'}
],
},
nowPage: 1,
limit: 200,
total:0,
form:{
periods_id:"",
goods_id:"",
user_id:"",
money:"",
buy_type:"",
invite_id:"",
desc:"",
province_name:"",
city:"",
area:"",
city_name:"",
district_name:"",
district:"",
province:"",
address:"",
receive_mobile:"",
receive_name:"",
order_type:"",
pay_at:"",
total: 0,
form: {
periods_id: "",
goods_id: "",
user_id: "",
money: "",
buy_type: "",
invite_id: "",
desc: "",
province_name: "",
city: "",
area: "",
city_name: "",
district_name: "",
district: "",
province: "",
address: "",
receive_mobile: "",
receive_name: "",
order_type: "",
pay_at: "",
},
goodsList:[],
periodsList:[],
pickerOptions1:'',
buyWayOptioms:[],
goodsList: [],
periodsList: [],
pickerOptions1: '',
buyWayOptioms: [],
teacherList: [],
addShow:false,
searchFrom:{
},
addShow: false,
searchFrom: {},
userList: [],
multipleSelection: [],
}
},
components:{
components: {
vueAddress,
page,
},
filters:{
filterGoods(val){
return '[' + GOODSTYPE[val.goods_type] + ']' + '[' +val.current_price / 100 + '元]' + val.name
filters: {
filterGoods(val) {
return '[' + GOODSTYPE[val.goods_type] + ']' + '[' + val.current_price / 100 + '元]' + val.name
}
},
methods:{
onPageChange(val){
methods: {
onPageChange(val) {
this.nowPage = val
this.getUser()
},
onSizeChange(val){
onSizeChange(val) {
this.limit = val
this.nowPage = 1;
this.getUser()
......@@ -248,7 +255,7 @@ import {getGoodsListApi,setOrderApi,getPeriodsApi,getTeacherListApi,getUserListA
handleSelectionChange(val) {
this.multipleSelection = val;
},
getUser(){
getUser() {
let json = {
page: this.nowPage,
limit: 5
......@@ -262,55 +269,55 @@ import {getGoodsListApi,setOrderApi,getPeriodsApi,getTeacherListApi,getUserListA
if (this.searchFrom.mobile) {
json.mobile = this.searchFrom.mobile
}
getUserListApi(json).then(res=>{
getUserListApi(json).then(res => {
this.userList = res.list;
this.total = res.total;
})
},
saveAddOrder(data){
saveAddOrder(data) {
this.$refs['form'].validate((valid) => {
if (valid) {
let json={
periods_id:data.periods_id,
goods_id:data.goods_id,
user_id:data.user_id,
money:data.money,
province_name:data.province_name,
city_id:data.city,
city:data.city_name,
area:data.district_name,
area_id:data.district,
province_id:data.province,
address:data.address,
receive_mobile:data.receive_mobile,
receive_name:data.receive_name,
order_type:data.order_type,
let json = {
periods_id: data.periods_id,
goods_id: data.goods_id,
user_id: data.user_id,
money: data.money,
province_name: data.province_name,
city_id: data.city,
city: data.city_name,
area: data.district_name,
area_id: data.district,
province_id: data.province,
address: data.address,
receive_mobile: data.receive_mobile,
receive_name: data.receive_name,
order_type: data.order_type,
}
// 元转分
json.money=json.money;
if(data.pay_at){
json.pay_at = CommonJs.dateFmt( data.pay_at,"yyyy-MM-dd hh:mm:ss");
json.money = json.money;
if (data.pay_at) {
json.pay_at = CommonJs.dateFmt(data.pay_at, "yyyy-MM-dd hh:mm:ss");
}
if(this.form.invite_id){
if (this.form.invite_id) {
json.invite_id = this.form.invite_id
}
if(this.form.desc){
if (this.form.desc) {
json.desc = this.form.desc
}
if(this.form.out_trade_no){
if (this.form.out_trade_no) {
json.out_trade_no = this.form.out_trade_no
}
json.invite_type="TEACHER";
if(json.province_name && json.address && json.receive_mobile && json.receive_name){
setOrderApi(json).then(res=>{
this.newdialogObj.show=false
json.invite_type = "TEACHER";
if (json.province_name && json.address && json.receive_mobile && json.receive_name) {
setOrderApi(json).then(res => {
this.newdialogObj.show = false
this.$emit("reflash");
this.$message({
message: '添加成功',
type: 'success'
});
})
}else{
} else {
this.$message({
message: "缺少必填项",
type: "warning"
......@@ -322,8 +329,8 @@ import {getGoodsListApi,setOrderApi,getPeriodsApi,getTeacherListApi,getUserListA
}
});
},
handlerAddressChange(val){
if(!val.province || !val.city || !val.district){
handlerAddressChange(val) {
if (!val.province || !val.city || !val.district) {
return
}
console.log(val)
......@@ -346,34 +353,34 @@ import {getGoodsListApi,setOrderApi,getPeriodsApi,getTeacherListApi,getUserListA
this.form.district_name = districtObj.length > 0 ? districtObj[0].label : cityObj[0].children[0].label;
this.form.district = districtObj.length > 0 ? districtObj[0].value : cityObj[0].children[0].value;
},
getGoodsOption(){
getGoodsOption() {
let json = {
page: 1,
limit: 200,
course_type:0,
course_type: 0,
};
getGoodsListApi(json).then(res=>{
getGoodsListApi(json).then(res => {
this.goodsList = res.list;
})
},
onOptionChange(id){
this.form.periods_id="";
getPeriodsApi({goods_id:id}).then((res) => {
this.periodsList=res.list
onOptionChange(id) {
this.form.periods_id = "";
getPeriodsApi({goods_id: id}).then((res) => {
this.periodsList = res.list
})
},
getTeacherList(name){
getTeacherList(name) {
let json = {
limit: 100,
limit: 500,
page: 1
};
if(name) {
if (name) {
json.name = name
}
getTeacherListApi(json).then(res=>{
getTeacherListApi(json).then(res => {
this.teacherList = res.list
});
getOrderTypeApi().then(res =>{
getOrderTypeApi().then(res => {
this.buyWayOptioms = res
})
},
......@@ -384,31 +391,31 @@ import {getGoodsListApi,setOrderApi,getPeriodsApi,getTeacherListApi,getUserListA
this.getTeacherList();
}
},
onAddUser(){
onAddUser() {
this.addShow = true;
this.getUser();
},
onAdd(){
if(this.multipleSelection.length === 0) {
onAdd() {
if (this.multipleSelection.length === 0) {
this.$message({
type: 'error',
message: '请选择用户!'
});
return
} else if (this.multipleSelection.length !== 1){
} else if (this.multipleSelection.length !== 1) {
this.$message({
type: 'error',
message: '只能选择一个用户!'
});
return
}
this.form.user_id=this.multipleSelection[0].user_id;
this.form.user_id = this.multipleSelection[0].user_id;
this.addShow = false;
},
},
watch:{
'newdialogObj.show'(val){
if(val){
watch: {
'newdialogObj.show'(val) {
if (val) {
this.getGoodsOption();
this.getTeacherList();
// this.form={
......@@ -435,13 +442,13 @@ import {getGoodsListApi,setOrderApi,getPeriodsApi,getTeacherListApi,getUserListA
}
}
},
mounted(){
mounted() {
},
}
</script>
<style scoped lang="less">
.dialog-footer{
.dialog-footer {
display: block;
text-align: center;
}
......
......@@ -244,37 +244,37 @@
} from "../../util/wordbook";
import CommonJs from "../../util/common";
export default {
export default {
name: "index",
data() {
return {
nowPage: 1,
total: 0,
today:{
text:'今天',
onClick:()=>{
this.searchFrom.payTime = [this.formatTime(new Date())+' 00:00:00',this.formatTime(new Date())+' 23:59:59'];
today: {
text: '今天',
onClick: () => {
this.searchFrom.payTime = [this.formatTime(new Date()) + ' 00:00:00', this.formatTime(new Date()) + ' 23:59:59'];
}
},
yesterday:{
text:'昨天',
onClick:()=>{
let preDate = this.formatTime(new Date(new Date().getTime() - 24*60*60*1000));
this.searchFrom.payTime = [preDate+' 00:00:00',preDate+' 23:59:59'];
yesterday: {
text: '昨天',
onClick: () => {
let preDate = this.formatTime(new Date(new Date().getTime() - 24 * 60 * 60 * 1000));
this.searchFrom.payTime = [preDate + ' 00:00:00', preDate + ' 23:59:59'];
}
},
last30Day:{
text:'过去30天',
onClick:()=>{
let preDate = this.formatTime(new Date(new Date().getTime() - 30*24*60*60*1000));
this.searchFrom.payTime = [preDate+' 00:00:00',this.formatTime(new Date())+' 23:59:59'];
last30Day: {
text: '过去30天',
onClick: () => {
let preDate = this.formatTime(new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000));
this.searchFrom.payTime = [preDate + ' 00:00:00', this.formatTime(new Date()) + ' 23:59:59'];
}
},
last7Day:{
text:'过去7天',
onClick:()=>{
let preDate = this.formatTime(new Date(new Date().getTime() - 7*24*60*60*1000));
this.searchFrom.payTime = [preDate+' 00:00:00',this.formatTime(new Date())+' 23:59:59'];
last7Day: {
text: '过去7天',
onClick: () => {
let preDate = this.formatTime(new Date(new Date().getTime() - 7 * 24 * 60 * 60 * 1000));
this.searchFrom.payTime = [preDate + ' 00:00:00', this.formatTime(new Date()) + ' 23:59:59'];
}
},
sourceDialog: {
......@@ -292,7 +292,7 @@ export default {
limit: 10,
searchFrom: {
nickname: "",
wait_into_course:'',
wait_into_course: '',
user_id: "",
invite_type: "",
invite_id: "",
......@@ -302,7 +302,7 @@ export default {
out_trade_no: "",
payTime: [],
order_group_id: "",
is_captain:"",
is_captain: "",
},
tableData: [],
dialogObj: {
......@@ -323,18 +323,18 @@ export default {
buyTypeOption: BUYTYPEOPTION,
inviteSearchPlaceholder: "",
rules: {
value: [{ required: true, message: "请输入备注", trigger: "change" }]
value: [{required: true, message: "请输入备注", trigger: "change"}]
},
promoterDialog: {
show: false,
nowPage: 1,
total: 0,
limit: 100,
limit: 500,
teacher_id: ""
},
teacherList: [],
loading: false,
isLeaderOption:ISLEADEROPTION,
isLeaderOption: ISLEADEROPTION,
};
},
methods: {
......@@ -361,14 +361,14 @@ export default {
}
return str
},
formatTime(date){
formatTime(date) {
let year = date.getFullYear();
let Month = date.getMonth()+1;
if(Month < 10){
let Month = date.getMonth() + 1;
if (Month < 10) {
Month = `0${Month}`
}
let Day = date.getDate();
if(Day<10)Day = `0${Day}`;
if (Day < 10) Day = `0${Day}`;
return `${year}-${Month}-${Day}`;
},
showRef(data) {
......@@ -385,7 +385,7 @@ export default {
},
changeRow(data, b) {
if (b.indexOf(data) > -1) {
getRefundListApi({ out_trade_no: data.out_trade_no }).then(res => {
getRefundListApi({out_trade_no: data.out_trade_no}).then(res => {
data.refundList = res.list;
});
}
......@@ -436,14 +436,14 @@ export default {
json.wait_into_course = this.searchFrom.wait_into_course
}
json.course_type = 1; //日课
exportExcelApi("/api/admin/order/export", json,'日课订单列表');
exportExcelApi("/api/admin/order/export", json, '日课订单列表');
},
getGoodsOption() {
let json = {
page: 1,
limit: 100,
course_type:1,
status:"1,2"
course_type: 1,
status: "1,2"
};
getGoodsListApi(json).then(res => {
......
......@@ -42,7 +42,7 @@
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="带班老师" prop="teacherList" v-if = "!form.id">
<el-form-item label="带班老师" prop="teacherList" v-if="!form.id">
<el-select v-model="form.teacherList" placeholder="请选择" @change="onTeacher1Change" filterable multiple>
<el-option
v-for="item in teacher1Options"
......@@ -52,7 +52,7 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="观摩老师" prop="viewTeacher" v-if = "!form.id">
<el-form-item label="观摩老师" prop="viewTeacher" v-if="!form.id">
<el-select v-model="form.viewTeacher" placeholder="请选择" @change="onTeacher2Change" filterable>
<el-option
v-for="item in teacher2Options"
......@@ -62,7 +62,7 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="将带班老师加入观摩班" v-if = "!form.id" label-width="200">
<el-form-item label="将带班老师加入观摩班" v-if="!form.id" label-width="200">
<el-switch
v-model="form.is_add_teacher_to_class"
active-color="#13ce66"
......@@ -90,23 +90,31 @@
</template>
<script>
import {getGoodsListApi,getAddPeriodsApi,getTeacherListApi,getEditPeriodsApi,getLessonDetailApi,getPeriodsApi} from "../../service/api";
import {ISORNOT,GOODSTYPE,LESSONTYPE,GOODSSTATUS} from "../../util/wordbook";
import {
getGoodsListApi,
getAddPeriodsApi,
getTeacherListApi,
getEditPeriodsApi,
getLessonDetailApi,
getPeriodsApi
} from "../../service/api";
import {ISORNOT, GOODSTYPE, LESSONTYPE, GOODSSTATUS} from "../../util/wordbook";
import goodDialog from './dialog'
export default {
props:[
props: [
'dialogObj'
],
data(){
return{
data() {
return {
loading: false,
form: {
is_add_teacher_to_class: false,
teacherList:[],
viewTeacher:'',
rest_week_day:[],
title:"",
goods_id:"",
teacherList: [],
viewTeacher: '',
rest_week_day: [],
title: "",
goods_id: "",
},
show: false,
viewTeacher: '',
......@@ -150,71 +158,71 @@
teacher2Options: [],
goodList: [],
itemOptions: [],
rules:{
title:[
{ required: true, message: '请输入名称', trigger: 'change' }
rules: {
title: [
{required: true, message: '请输入名称', trigger: 'change'}
],
startNum:[
{ required: true, message: '请输入开始主题', trigger: 'change' }
startNum: [
{required: true, message: '请输入开始主题', trigger: 'change'}
],
start_at:[
{ required: true, message: '请选择开始上课时间', trigger: 'change' }
start_at: [
{required: true, message: '请选择开始上课时间', trigger: 'change'}
],
rest_week_day:[
{ required: true, message: '请选择周几不上课', trigger: 'change' }
rest_week_day: [
{required: true, message: '请选择周几不上课', trigger: 'change'}
],
teacher_ids:[
{ required: true, message: '请选择老师ID', trigger: 'change' }
teacher_ids: [
{required: true, message: '请选择老师ID', trigger: 'change'}
],
goods_id: [
{ required: true, message: '商品ID不能为空', trigger: 'change' }
{required: true, message: '商品ID不能为空', trigger: 'change'}
],
teacherList: [
{ required: true, message: '带班老师不能为空', trigger: 'change' }
{required: true, message: '带班老师不能为空', trigger: 'change'}
],
viewTeacher: [
{ required: true, message: '观摩老师不能为空', trigger: 'change' }
{required: true, message: '观摩老师不能为空', trigger: 'change'}
]
},
periodsList:[],
selectedGoods:[],
periodsList: [],
selectedGoods: [],
}
},
components:{
components: {
goodDialog
},
watch:{
'dialogObj.show'(val){
if(val){
watch: {
'dialogObj.show'(val) {
if (val) {
this.getTeachers();
this.getGoodsOption();
}
},
show(value){
this.$emit("changeShow",value);
show(value) {
this.$emit("changeShow", value);
}
},
filters: {
isOrNot(value){
isOrNot(value) {
return ISORNOT[value]
},
goodsType(value){
goodsType(value) {
return GOODSTYPE[value]
},
lessonType(value){
lessonType(value) {
return LESSONTYPE[value]
},
goodsStatus(value){
goodsStatus(value) {
return GOODSSTATUS[value]
},
filterGoods(val){
return '['+val.id+'][' + GOODSTYPE[val.goods_type] + ']' + '【' +val.current_price / 100 + '元】' + val.name
filterGoods(val) {
return '[' + val.id + '][' + GOODSTYPE[val.goods_type] + ']' + '【' + val.current_price / 100 + '元】' + val.name
}
},
methods:{
sub(){
methods: {
sub() {
this.$refs['form'].validate((valid) => {
if(valid){
if (valid) {
let _id = this.form.goods_id;
let json = {
title: this.form.title,
......@@ -224,7 +232,7 @@
}
json.is_add_teacher_to_class = this.form.is_add_teacher_to_class ? 1 : 0;
if (this.form.id) {
getEditPeriodsApi(this.form.id,json).then(res=>{
getEditPeriodsApi(this.form.id, json).then(res => {
this.$message({
type: 'success',
message: '编辑成功!'
......@@ -234,7 +242,7 @@
} else {
json.teacher_ids = this.form.teacherList.join(',');
json.view_teacher_id = parseInt(this.form.viewTeacher);
getAddPeriodsApi(_id,json).then(res=>{
getAddPeriodsApi(_id, json).then(res => {
this.$message({
type: 'success',
message: '添加成功!'
......@@ -242,26 +250,26 @@
this.$emit("reflash");
})
}
this.show=false;
this.show = false;
}
});
},
getTeachers(){
getTeachers() {
let json1 = {
page: 1,
limit: 100,
status:0
limit: 500,
status: 0
};
getTeacherListApi(json1).then((res)=>{
getTeacherListApi(json1).then((res) => {
this.teacherOptions = res.list;
this.teacher1Options = res.list;
this.teacher2Options = res.list;
})
},
findDifferentArray(array1, array2){
findDifferentArray(array1, array2) {
let newArray = []
array1.forEach((val)=>{
let index = array1.findIndex((item)=>{
array1.forEach((val) => {
let index = array1.findIndex((item) => {
return val.id == item
})
if (index === -1) {
......@@ -270,67 +278,73 @@
})
return newArray
},
onTeacher1Change(ids){
if(ids){
onTeacher1Change(ids) {
if (ids) {
this.teacher2Options = this.findDifferentArray(this.teacherOptions, ids)
} else {
this.teacher2Options = this.teacherOptions
}
},
onTeacher2Change(id){
if(id){
onTeacher2Change(id) {
if (id) {
this.teacher1Options = this.findDifferentArray(this.teacherOptions, [id])
} else {
this.teacher1Options = this.teacherOptions
}
},
onOptionChange(id){
let index = this.goodList.findIndex((val)=>{ return val.id === id});
if(index >-1){
onOptionChange(id) {
let index = this.goodList.findIndex((val) => {
return val.id === id
});
if (index > -1) {
this.getLessonDetail(this.goodList[index].course_id);
}
delete this.form.startNum
},
getLessonDetail(id){
getLessonDetailApi(id,{}).then((res) => {
getLessonDetail(id) {
getLessonDetailApi(id, {}).then((res) => {
this.itemOptions = res.detail[res.type]
})
},
getGoodsOption(){
getGoodsOption() {
let json = {
page: 1,
goods_type:'1,2',
goods_type: '1,2',
limit: 100,
};
getGoodsListApi(json).then(res=>{
getGoodsListApi(json).then(res => {
this.goodList = res.list;
if (this.dialogObj.form.id){
if (this.dialogObj.form.id) {
this.form = this.dialogObj.form;
} else {
this.form = {
rest_week_day:[],
rest_week_day: [],
is_add_teacher_to_class: false,
teacherList:[],
viewTeacher:'',
title:"",
goods_id:"",
teacherList: [],
viewTeacher: '',
title: "",
goods_id: "",
};
}
if(this.dialogObj.form.course_id){
if (this.dialogObj.form.course_id) {
this.getLessonDetail(this.dialogObj.form.course_id);
}
this.show = this.dialogObj.show
})
},
changePeriods(data){
if(data.length>1){
this.form.title=String(data[1]);
changePeriods(data) {
if (data.length > 1) {
this.form.title = String(data[1]);
}
},
handleItemChange(val){
getPeriodsApi({goods_id:val[0]}).then(res=>{
res.list.forEach(i=>{i.name = i.title});
this.periodsList.find(i=>{return i.id === val[0]}).children = res.list
handleItemChange(val) {
getPeriodsApi({goods_id: val[0]}).then(res => {
res.list.forEach(i => {
i.name = i.title
});
this.periodsList.find(i => {
return i.id === val[0]
}).children = res.list
})
},
},
......
......@@ -59,7 +59,8 @@
</el-card>
<!--添加回访信息-->
<el-card shadow="never" v-if="callbackObj.teacher_id && !$store.state.readonly" class="callback-item callback-input">
<!--<el-card shadow="never" v-if="callbackObj.teacher_id && !$store.state.readonly" class="callback-item callback-input">-->
<el-card shadow="never" v-if="callbackObj.teacher_id" class="callback-item callback-input">
<el-form size="small" inline>
<el-form-item required>
<el-select v-model="add.method" placeholder="回访方式" style="width: 140px;">
......@@ -186,7 +187,8 @@
props: {
callbackObj: { // user_id、teacher_id、timestamp
type: Object,
default: () => {}
default: () => {
}
},
hasUserInfo: { // 是否传过来用户信息,传来用户信息就不调接口请求用户新,否则请求(防止同时请求用户信息接口报错)
type: Boolean,
......@@ -482,6 +484,7 @@
<style lang="less">
.callback-container {
border: none;
.el-divider--horizontal {
margin: 20px 0;
}
......
......@@ -24,27 +24,28 @@
</template>
<script>
import {getTeacherListApi,addRelatedTeacherApi} from "../../service/api";
import {getTeacherListApi, addRelatedTeacherApi} from "../../service/api";
export default {
props:[
props: [
'dialogObj'
],
data(){
return{
form:{
data() {
return {
form: {
id: '',
teacher_id:'',
teacher_id: '',
},
teacherList:[],
teacherList: [],
}
},
methods:{
initPage(){
let json ={
page:1,
limit:200
methods: {
initPage() {
let json = {
page: 1,
limit: 500
}
getTeacherListApi(json).then(res=>{
getTeacherListApi(json).then(res => {
this.teacherList = res.list;
});
this.form = {
......@@ -52,7 +53,7 @@
teacher_id: this.dialogObj.teacher_id ? this.dialogObj.teacher_id : ''
};
},
onSave(){
onSave() {
let json = {
teacher_id: this.form.teacher_id ? this.form.teacher_id : 0
};
......@@ -66,9 +67,9 @@
})
}
},
watch:{
'dialogObj.show'(value){
if(value){
watch: {
'dialogObj.show'(value) {
if (value) {
this.initPage()
}
}
......
......@@ -25,27 +25,28 @@
</template>
<script>
import {getTeacherListApi,bindTeacherApi} from "../../service/api";
import {getTeacherListApi, bindTeacherApi} from "../../service/api";
export default {
props:[
props: [
'dialogObj'
],
data(){
return{
form:{
data() {
return {
form: {
id: '',
teacher_id:'',
teacher_id: '',
},
teacherList:[],
teacherList: [],
}
},
methods:{
initPage(){
let json ={
page:1,
limit:200
methods: {
initPage() {
let json = {
page: 1,
limit: 500
}
getTeacherListApi(json).then(res=>{
getTeacherListApi(json).then(res => {
this.teacherList = res.list;
});
this.form = {
......@@ -53,9 +54,9 @@
teacher_id: this.dialogObj.teacher_id ? this.dialogObj.teacher_id : ''
};
},
onSave(){
let teacher_id=this.form.teacher_id ? this.form.teacher_id : 0
bindTeacherApi(this.form.id,teacher_id).then(res => {
onSave() {
let teacher_id = this.form.teacher_id ? this.form.teacher_id : 0
bindTeacherApi(this.form.id, teacher_id).then(res => {
this.$message({
type: 'success',
message: '绑定成功!'
......@@ -64,8 +65,8 @@
})
}
},
watch:{
'dialogObj'(value){
watch: {
'dialogObj'(value) {
this.initPage()
}
}
......
......@@ -103,7 +103,7 @@
@change="getList">
</el-date-picker>
</el-form-item>
<el-form-item >
<el-form-item>
<el-button type="primary" @click="getList">搜索</el-button>
<el-button type="primary" plain @click="exportTable(list)" v-if="$store.state.export">导出</el-button>
<el-button type="primary" plain @click="importDialog=true" v-if="$store.state.import">导入</el-button>
......@@ -141,7 +141,7 @@
<el-table-column prop="nickname" label="购买人">
<template slot-scope="scope">
<div v-if='scope.row.user_id !== 0'>
<img class="avatar" :src="scope.row.avatar" />
<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>
......@@ -211,14 +211,14 @@
</template>
</el-table-column>
</el-table>
<page :nowPage="nowPage" :total="total" @pageChange="onPageChange" @sizeChange="onSizeChange" />
<page :nowPage="nowPage" :total="total" @pageChange="onPageChange" @sizeChange="onSizeChange"/>
<refund-dialog :dialogObj="refundDialogObj" @reflash="onAfterRefund" @changeShow="changeShow"></refund-dialog>
<refund-detail :dialogObj="refundDetail"/>
<el-dialog :title="classObj.title" :visible.sync="classObj.show" center width="800px">
<div style="margin:10px;color: #888888">
最新同步时间:{{last_pull_time}}
</div>
<el-table :data="classList" >
<el-table :data="classList">
<el-table-column prop="teacher_name" label="班级老师">
</el-table-column>
<el-table-column prop="num" label="预计入班人数">
......@@ -253,8 +253,8 @@
</el-dialog>
<el-dialog title="手动创建外部订单" :visible.sync="postOtherOrderDialog" center width="800px">
<el-form ref="searchFrom" size="small" :model="postOtherOrderData" label-width="125px">
<el-form-item label="订单ID" required="" style="width: 400px" >
<el-input v-model="postOtherOrderData.order_id" ></el-input>
<el-form-item label="订单ID" required="" style="width: 400px">
<el-input v-model="postOtherOrderData.order_id"></el-input>
</el-form-item>
<el-form-item label="商品名称" required="">
<el-select v-model="postOtherOrderData.goods_id" placeholder="请选择" filterable style="width: 150px" clearable>
......@@ -265,23 +265,23 @@
<!-- <el-form-item style="width: 400px" label="商品ID">
<el-input v-model="postOtherOrderData.goods_id" ></el-input>
</el-form-item> -->
<el-form-item label="收件人姓名" required="" label-width="125px" style="width: 400px" >
<el-input v-model="postOtherOrderData.receiver_name" ></el-input>
<el-form-item label="收件人姓名" required="" label-width="125px" style="width: 400px">
<el-input v-model="postOtherOrderData.receiver_name"></el-input>
</el-form-item>
<el-form-item label="收件人手机号" required="" label-width="125px" style="width: 400px" >
<el-input v-model="postOtherOrderData.receiver_mobile" ></el-input>
<el-form-item label="收件人手机号" required="" label-width="125px" style="width: 400px">
<el-input v-model="postOtherOrderData.receiver_mobile"></el-input>
</el-form-item>
<el-form-item label="省名称" required="" label-width="125px" style="width: 400px" >
<el-input v-model="postOtherOrderData.receiver_province" ></el-input>
<el-form-item label="省名称" required="" label-width="125px" style="width: 400px">
<el-input v-model="postOtherOrderData.receiver_province"></el-input>
</el-form-item>
<el-form-item label="市名称" required="" label-width="125px" style="width: 400px" >
<el-input v-model="postOtherOrderData.receiver_city" ></el-input>
<el-form-item label="市名称" required="" label-width="125px" style="width: 400px">
<el-input v-model="postOtherOrderData.receiver_city"></el-input>
</el-form-item>
<el-form-item label="区名称" required="" label-width="125px" style="width: 400px" >
<el-input v-model="postOtherOrderData.receiver_area" ></el-input>
<el-form-item label="区名称" required="" label-width="125px" style="width: 400px">
<el-input v-model="postOtherOrderData.receiver_area"></el-input>
</el-form-item>
<el-form-item label-width="125px" required="" style="width: 400px" left label="详细地址">
<el-input type="textarea" v-model="postOtherOrderData.receiver_address" ></el-input>
<el-input type="textarea" v-model="postOtherOrderData.receiver_address"></el-input>
</el-form-item>
<el-form-item label="活动方案" required="">
<el-select v-model="postOtherOrderData.class_source" placeholder="请选择" filterable>
......@@ -289,12 +289,12 @@
v-for="(data,index) in classSource"
:key="index"
:label="data.label"
:value="data.value" >
:value="data.value">
</el-option>
</el-select>
</el-form-item >
</el-form-item>
<el-form-item label-width="125px" required="" style="width: 400px" left label="备注">
<el-input type="textarea" v-model="postOtherOrderData.desc" ></el-input>
<el-input type="textarea" v-model="postOtherOrderData.desc"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
......@@ -304,23 +304,23 @@
</el-dialog>
<el-dialog title="编辑地址" :visible.sync="adressDialog" left width="500px">
<el-form ref="searchFrom" size="small" :model="adressData" label-width="125px">
<el-form-item label="用户姓名" style="width: 400px" >
<el-input v-model="adressData.receiver_name" ></el-input>
<el-form-item label="用户姓名" style="width: 400px">
<el-input v-model="adressData.receiver_name"></el-input>
</el-form-item>
<el-form-item label-width="125px" style="width: 400px" label="收货人手机号">
<el-input v-model="adressData.receiver_mobile" ></el-input>
<el-input v-model="adressData.receiver_mobile"></el-input>
</el-form-item>
<el-form-item label="收货人省" label-width="125px" style="width: 400px" >
<el-input v-model="adressData.receiver_province" ></el-input>
<el-form-item label="收货人省" label-width="125px" style="width: 400px">
<el-input v-model="adressData.receiver_province"></el-input>
</el-form-item>
<el-form-item label="收货人市" label-width="125px" style="width: 400px" >
<el-input v-model="adressData.receiver_city" ></el-input>
<el-form-item label="收货人市" label-width="125px" style="width: 400px">
<el-input v-model="adressData.receiver_city"></el-input>
</el-form-item>
<el-form-item label="收货人区" label-width="125px" style="width: 400px" >
<el-input v-model="adressData.receiver_area" ></el-input>
<el-form-item label="收货人区" label-width="125px" style="width: 400px">
<el-input v-model="adressData.receiver_area"></el-input>
</el-form-item>
<el-form-item label-width="125px" style="width: 400px" left label="收货人详细地址">
<el-input type="textarea" v-model="adressData.receiver_address" ></el-input>
<el-input type="textarea" v-model="adressData.receiver_address"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer" style="text-align:center;">
......@@ -332,13 +332,13 @@
</template>
<script>
import page from "../framework/page";
import md5 from 'js-md5';
import refundDialog from "../order/refundDialog";
import refundDetail from "../order/refundDetail";
import CommonJs from '../../util/common';
import Cookie from '../../util/cookie'
import {
import page from "../framework/page";
import md5 from 'js-md5';
import refundDialog from "../order/refundDialog";
import refundDetail from "../order/refundDetail";
import CommonJs from '../../util/common';
import Cookie from '../../util/cookie'
import {
getyunjiApi,
yunjiOrderTeacherApi,
getGoodsListApi,
......@@ -349,17 +349,18 @@ import {
postOtherOrderApi,
postClearOtherOrderApi,
getSourceStudentApi
} from "../../service/api";
import {
} from "../../service/api";
import {
ORDERSTATUS,
GOODSTYPE,
ORDERSTATUSOPTION,
USERSTATUS,
USERSTATUSFORMATER,
CLASSSOURCE
} from "../../util/wordbook";
let studentSource = {}
export default {
} from "../../util/wordbook";
let studentSource = {}
export default {
name: "smsRecord",
components: {
page,
......@@ -371,54 +372,54 @@ export default {
sing: "singsingenglish21000"
};
return {
importDialog:false,
importDialog: false,
activityPlan: [],
adressDialog:false,
postOtherOrderDialog:false,
postOtherOrderData:{},
classSource:[{
label:"系统订单随机",
value:2
adressDialog: false,
postOtherOrderDialog: false,
postOtherOrderData: {},
classSource: [{
label: "系统订单随机",
value: 2
},
{
label:"渠道1订单随机",
value:3
label: "渠道1订单随机",
value: 3
},
{
label:"渠道2订单随机",
value:4
label: "渠道2订单随机",
value: 4
}],
adressData:{},
USERSTATUS:USERSTATUS,
today:{
text:'今天',
onClick:(vm)=>{
vm.$emit('pick', [this.formatTime(new Date())+' 00:00:00',this.formatTime(new Date())+' 23:59:59'])
adressData: {},
USERSTATUS: USERSTATUS,
today: {
text: '今天',
onClick: (vm) => {
vm.$emit('pick', [this.formatTime(new Date()) + ' 00:00:00', this.formatTime(new Date()) + ' 23:59:59'])
}
},
yesterday:{
text:'昨天',
onClick:(vm)=>{
let preDate = this.formatTime(new Date(new Date().getTime() - 24*60*60*1000));
vm.$emit('pick', [preDate+' 00:00:00',preDate+' 23:59:59'])
yesterday: {
text: '昨天',
onClick: (vm) => {
let preDate = this.formatTime(new Date(new Date().getTime() - 24 * 60 * 60 * 1000));
vm.$emit('pick', [preDate + ' 00:00:00', preDate + ' 23:59:59'])
}
},
last30Day:{
text:'过去30天',
onClick:(vm)=>{
let preDate = this.formatTime(new Date(new Date().getTime() - 30*24*60*60*1000));
vm.$emit('pick', [preDate+' 00:00:00',this.formatTime(new Date())+' 23:59:59']);
last30Day: {
text: '过去30天',
onClick: (vm) => {
let preDate = this.formatTime(new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000));
vm.$emit('pick', [preDate + ' 00:00:00', this.formatTime(new Date()) + ' 23:59:59']);
}
},
last7Day:{
text:'过去7天',
onClick:(vm)=>{
let preDate = this.formatTime(new Date(new Date().getTime() - 7*24*60*60*1000));
vm.$emit('pick', [preDate+' 00:00:00',this.formatTime(new Date())+' 23:59:59']);
last7Day: {
text: '过去7天',
onClick: (vm) => {
let preDate = this.formatTime(new Date(new Date().getTime() - 7 * 24 * 60 * 60 * 1000));
vm.$emit('pick', [preDate + ' 00:00:00', this.formatTime(new Date()) + ' 23:59:59']);
}
},
uploadHeader:{token:Cookie.get('cc_token')},
param_token:CommonJs.md5Code(),
uploadHeader: {token: Cookie.get('cc_token')},
param_token: CommonJs.md5Code(),
nowPage: 1,
total: 0,
limit: 10,
......@@ -433,23 +434,23 @@ export default {
class_source: '',
goods_id: "",
mobile: "",
active_at:[],
invite_type:'',
active_at: [],
invite_type: '',
status: [1],
createTime:[],
course_type:'-1',
pullTime:[],
createTime: [],
course_type: '-1',
pullTime: [],
order_id: "",
teacher_id: "",
user_id:"",
nickname:"",
user_status:[],
sub_order_id:""
user_id: "",
nickname: "",
user_status: [],
sub_order_id: ""
},
refundDialogObj: {
show: false,
id: "",
order_type:' other',
order_type: ' other',
money: 0
},
orderStatusOption: ORDERSTATUSOPTION,
......@@ -460,21 +461,21 @@ export default {
show: false,
out_trade_no: ""
},
teacherId:null,
classObj:{
teacherId: null,
classObj: {
show: false,
title: "当前同步进度",
order_id: 0,
teacher_id: 0
},
multipleSelection:[],
classList:[],
last_pull_time:"无",
studentSource:{}
multipleSelection: [],
classList: [],
last_pull_time: "无",
studentSource: {}
};
},
filters: {
filterStatus: function(value) {
filterStatus: function (value) {
let msg = "";
if (value === 0) {
msg = "未绑定";
......@@ -500,7 +501,7 @@ export default {
val.name
);
},
classType(val){
classType(val) {
// return CLASSSOURCE[val]
return studentSource[val]
}
......@@ -509,11 +510,11 @@ export default {
this.getGoodsOption();
this.getTeacherList();
getSourceStudentApi().then(res=>{
getSourceStudentApi().then(res => {
this.activityPlan = res;
let obj = {}
res.forEach((item,index)=>{
obj[item.type]=item.name
res.forEach((item, index) => {
obj[item.type] = item.name
})
studentSource = obj
// console.log(obj)
......@@ -544,13 +545,13 @@ export default {
}
return str
},
initClearOtherOrder(id){
initClearOtherOrder(id) {
this.$confirm('确认清除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
postClearOtherOrderApi(id).then(res=>{
postClearOtherOrderApi(id).then(res => {
this.$message({
type: 'success',
message: '清除成功!'
......@@ -558,101 +559,101 @@ export default {
})
}).catch(() => {
this.$message({
type:'info',
type: 'info',
message: '已取消'
});
});
},
postOtherOrderFn(){
let json={}
if(this.postOtherOrderData.order_id){
postOtherOrderFn() {
let json = {}
if (this.postOtherOrderData.order_id) {
json.order_id = this.postOtherOrderData.order_id
}
if(this.postOtherOrderData.goods_id){
if (this.postOtherOrderData.goods_id) {
json.goods_id = this.postOtherOrderData.goods_id
}
if(this.postOtherOrderData.receiver_name){
if (this.postOtherOrderData.receiver_name) {
json.receiver_name = this.postOtherOrderData.receiver_name
}
if(this.postOtherOrderData.receiver_mobile){
if (this.postOtherOrderData.receiver_mobile) {
json.receiver_mobile = this.postOtherOrderData.receiver_mobile
}
if(this.postOtherOrderData.receiver_province){
if (this.postOtherOrderData.receiver_province) {
json.receiver_province = this.postOtherOrderData.receiver_province
}
if(this.postOtherOrderData.receiver_city){
if (this.postOtherOrderData.receiver_city) {
json.receiver_city = this.postOtherOrderData.receiver_city
}
if(this.postOtherOrderData.receiver_area){
if (this.postOtherOrderData.receiver_area) {
json.receiver_area = this.postOtherOrderData.receiver_area
}
if(this.postOtherOrderData.receiver_address){
if (this.postOtherOrderData.receiver_address) {
json.receiver_address = this.postOtherOrderData.receiver_address
}
if(this.postOtherOrderData.class_source){
if (this.postOtherOrderData.class_source) {
json.class_source = this.postOtherOrderData.class_source
}
if(this.postOtherOrderData.desc){
if (this.postOtherOrderData.desc) {
json.desc = this.postOtherOrderData.desc
}
console.log(this.postOtherOrderData)
postOtherOrderApi(json).then(res =>{
postOtherOrderApi(json).then(res => {
this.$message('发送成功');
this.postOtherOrderDialog = false
this.getList();
})
},
initOeder(){
initOeder() {
this.postOtherOrderDialog = true
this.postOtherOrderData = {
order_id:'',
goods_id:'',
receiver_name:"",
receiver_mobile:'',
receiver_province:'',
receiver_city:'',
receiver_area:'',
receiver_address:'',
class_source:'',
desc:''
}
},
editAdress(row){
order_id: '',
goods_id: '',
receiver_name: "",
receiver_mobile: '',
receiver_province: '',
receiver_city: '',
receiver_area: '',
receiver_address: '',
class_source: '',
desc: ''
}
},
editAdress(row) {
// editOrderAdressApi
this.adressDialog = true
this.adressData ={
receiver_name:row.receiver_name,
receiver_mobile:row.receiver_mobile,
receiver_province:row.receiver_province,
receiver_city:row.receiver_city,
receiver_area:row.receiver_area,
receiver_address:row.receiver_address,
id:row.id,
}
},
editAdressCf(){
editOrderAdressApi(this.adressData.id,this.adressData).then(res => {
this.adressData = {
receiver_name: row.receiver_name,
receiver_mobile: row.receiver_mobile,
receiver_province: row.receiver_province,
receiver_city: row.receiver_city,
receiver_area: row.receiver_area,
receiver_address: row.receiver_address,
id: row.id,
}
},
editAdressCf() {
editOrderAdressApi(this.adressData.id, this.adressData).then(res => {
this.getList();
this.$message('修改成功');
this.adressDialog = false;
});
},
userStatusFormatter(val){
return(USERSTATUSFORMATER[val.user_status])
userStatusFormatter(val) {
return (USERSTATUSFORMATER[val.user_status])
},
pullAll(){
if(this.multipleSelection.length < 1){
pullAll() {
if (this.multipleSelection.length < 1) {
this.$message('请选择订单');
return false;
}
if(!this.teacherId){
if (!this.teacherId) {
this.$message('请选择老师');
return false;
}
let json = {
order_ids:[]
order_ids: []
};
this.multipleSelection.forEach(i=>{
this.multipleSelection.forEach(i => {
json.order_ids.push(i.id)
});
this.$confirm(`是否确定将这${json.order_ids.length}笔订单分配给该老师?`, '提示', {
......@@ -660,7 +661,7 @@ export default {
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
yunjiOrderTeacherApi(this.teacherId,{order_ids:json.order_ids.join(',')}).then(res=>{
yunjiOrderTeacherApi(this.teacherId, {order_ids: json.order_ids.join(',')}).then(res => {
this.multipleSelection = [];
this.$message({
message: '提交成功',
......@@ -672,7 +673,7 @@ export default {
});
},
selectedFlag(row){
selectedFlag(row) {
return row.user_id === 0
},
handleSelectionChange(val) {
......@@ -695,34 +696,34 @@ export default {
this.refundDialogObj.show = true;
},
formatTime(date){
formatTime(date) {
let year = date.getFullYear();
let Month = date.getMonth()+1;
if(Month < 10){
let Month = date.getMonth() + 1;
if (Month < 10) {
Month = `0${Month}`
}
let Day = date.getDate();
if(Day<10)Day = `0${Day}`;
if (Day < 10) Day = `0${Day}`;
return `${year}-${Month}-${Day}`;
},
fileSuccess(res){
fileSuccess(res) {
console.log(res)
if(res.code==200){
if (res.code == 200) {
this.$message({
message: res.data,
type: 'success'
});
}else{
} else {
this.$message({
message: res.msg.replace(/\n/g,'</br>'),
type:'error',
duration:0,
showClose:true,
message: res.msg.replace(/\n/g, '</br>'),
type: 'error',
duration: 0,
showClose: true,
dangerouslyUseHTMLString: true
});
}
},
downLoad(){
downLoad() {
window.open('/static/外部订单模板.xlsx')
},
onPageChange(val) {
......@@ -732,7 +733,7 @@ export default {
getTeacherList() {
let json = {
page: 1,
limit: 200
limit: 500
};
getTeacherListApi(json).then(res => {
this.teacherList = res.list;
......@@ -787,11 +788,11 @@ export default {
if (this.searchFrom.invite_type) {
json.invite_type = this.searchFrom.invite_type;
}
if (this.searchFrom.createTime && this.searchFrom.createTime.length === 2){
if (this.searchFrom.createTime && this.searchFrom.createTime.length === 2) {
json.start_at = this.searchFrom.createTime[0];
json.end_at = this.searchFrom.createTime[1]
}
if (this.searchFrom.active_at&&this.searchFrom.active_at.length === 2){
if (this.searchFrom.active_at && this.searchFrom.active_at.length === 2) {
json.active_start_at = this.searchFrom.active_at[0];
json.active_end_at = this.searchFrom.active_at[1]
}
......@@ -820,13 +821,13 @@ export default {
cancelButtonText: "取消",
inputType: "textarea",
inputValue: desc || ""
}).then(({ value }) => {
}).then(({value}) => {
this.$confirm("确定保存?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
orderDescApi({ desc: value }, id).then(res => {
orderDescApi({desc: value}, id).then(res => {
this.$message({
type: "success",
message: "编辑备注成功"
......@@ -872,63 +873,73 @@ export default {
if (this.searchFrom.invite_type) {
json.invite_type = this.searchFrom.invite_type;
}
if (this.searchFrom.createTime && this.searchFrom.createTime.length === 2){
if (this.searchFrom.createTime && this.searchFrom.createTime.length === 2) {
json.start_at = this.searchFrom.createTime[0];
json.end_at = this.searchFrom.createTime[1]
}
if (this.searchFrom.active_at&&this.searchFrom.active_at.length === 2){
if (this.searchFrom.active_at && this.searchFrom.active_at.length === 2) {
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];
}
console.log(json)
exportExcelApi(`api/admin/yunji/order/export`, json,'外部订单列表');
exportExcelApi(`api/admin/yunji/order/export`, json, '外部订单列表');
}
},
classListOption() {
this.classObj.show=true;
getyunjiApi({ page: 1,limit: 200}).then(res => {
this.classList=res.teacher;
if(res.last_pull_time){
this.last_pull_time=res.last_pull_time;
this.classObj.show = true;
getyunjiApi({page: 1, limit: 200}).then(res => {
this.classList = res.teacher;
if (res.last_pull_time) {
this.last_pull_time = res.last_pull_time;
}
});
}
}
};
};
</script>
<style lang="less" scoped>
.sms {
.sms {
padding: 20px 0;
}
}
.el-table {
.el-table {
.el-button + .el-button {
margin-left: 0;
margin-top: 10px;
}
}
}
.avatar {
.avatar {
width: 50px;
min-width: 50px;
margin-right: 10px;
height: 50px;
border-radius: 50%;
}
.el-form-item__content{height:32px;}
.import{top: 20vh;}
.import .item{display:inline-block;margin-left: 110px}
}
.el-form-item__content {
height: 32px;
}
.import {
top: 20vh;
}
.import .item {
display: inline-block;
margin-left: 110px
}
</style>
<style>
.userInfo > div {
.userInfo > div {
display: flex;
flex-flow: row nowrap;
justify-content: flex-start;
align-items: center;
}
}
</style>
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