Browse Source

add api

master
刘嘉炜 4 years ago
parent
commit
e270c89c4f
  1. 14
      src/js/api.js
  2. 36
      src/pages/approve/list/list.vue
  3. 16
      src/pages/course/class_list/class_list.vue
  4. 51
      src/pages/course/task/task.vue
  5. 105
      src/pages/course/task_publish/task_publish.vue

14
src/js/api.js

@ -1,5 +1,5 @@
export const ORIGIN = `https://test.ouxuanzhineng.cn`; // 测试
// export const ORIGIN = `http://kahing.local:9090`; // 本地测试
// export const ORIGIN = `https://test.ouxuanzhineng.cn`; // 测试
export const ORIGIN = `http://kahing.local:9090`; // 本地测试
// export const ORIGIN = `https://coach.ouxuanzhineng.cn`; // 正式
export const API = {
@ -10,7 +10,8 @@ export const API = {
saveFeedback: `${ORIGIN}/stadium/coach/saveFeedback`, // 小程序-保存教练反馈
coach_feedback: `${ORIGIN}/upload/file/coach_feedback`, // 上传文件
coach_feedback: `${ORIGIN}/upload/file/coach_feedback`, // 上传文件 - 教练反馈
task_publish: `${ORIGIN}/upload/file/task_publish`, // 上传文件 - 布置作业
}
@ -19,9 +20,14 @@ API['course'] = {
getClassList: `${ORIGIN}/stadium/coach/getClassList`, // 小程序-班级列表
getCourseStudentList: `${ORIGIN}/stadium/coach/getCourseStudentList`, // 小程序-学员列表
SaveStudentComment: `${ORIGIN}/stadium/coach/SaveStudentComment`, // 小程序-学员点评保存
courseList: `${ORIGIN}/stadium/coach/courseList`, // 小程序-课程列表
homeworkList: `${ORIGIN}/stadium/coach/homework/list`, // 小程序-作业列表
homeworkAdd: `${ORIGIN}/stadium/coach/homework/add`, // 小程序-布置作业
}
API['approve'] = {
getApproveList: `${ORIGIN}/stadium/coach/getApproveList`, // 小程序-课程列表
}
export default { ORIGIN, API };

36
src/pages/approve/list/list.vue

@ -38,14 +38,13 @@
<view class="c-content">
<view class="c-name">羽毛球课程(羽毛球课)</view>
<view class="c-times">
<view v-for="i in 10" :key="i">2020-08-22 10:30</view>
<view v-for="(e, i) in approveList" :key="i">2020-08-22 10:30</view>
</view>
</view>
<view class="c-status">
<view class="s-icon" v-if="false"></view>
<view class="s-icon" v-if="true"></view>
<view class="s-txt s-active" v-else>通过</view>
</view>
</view>
<view class="l-reason">
<view>原因:</view>
@ -74,19 +73,46 @@
</template>
<script>
import { API } from '../../../js/api';
import { servers } from '../../../js/server';
import util from '../../../utils/util';
import { mapState } from 'vuex';
export default {
computed: {
...mapState([ 'storeInfo' ]),
},
data(){
return {
tabIdx: 0
tabIdx: 0,
approveList: []
}
},
onLoad(options){
this.getApproveList();
},
methods: {
tabChange(i){
this.tabIdx = i;
},
toRecord(){
util.routeTo(`/pages/approve/record/record`,'nT');
util.routeTo(`/pages/approve/record/record`,'nT');
},
getApproveList(approve_type = 0){
let { storeInfo } = this;
servers.get({
url: API.approve.getApproveList,
data: {
approve_type,
stadium_id: storeInfo.id,
is_approve_record: 0
},
failMsg: '加载失败!'
})
.then(res=>{
let _list = res.list || [];
this.approveList = _list;
console.warn('approve list --->', res);
})
}
}
}

16
src/pages/course/class_list/class_list.vue

@ -20,7 +20,7 @@
<block v-if="e.class_status == 1 || true">
<view hover-class="hover-active">点名</view>
<view hover-class="hover-active" @click="toTask">作业</view>
<view hover-class="hover-active" @click="toTask(e)">作业</view>
</block>
</view>
@ -48,8 +48,14 @@ export default {
this.getClassList(_query.course_id)
},
methods: {
toTask(){
util.routeTo(`/pages/course/task/task`, 'nT');
toTask(e){
let { optionsQuery } = this;
let _query = {
...optionsQuery,
class_id: e.id,
class_name: e.class_name,
}
util.routeTo(`/pages/course/task/task?query=${util.jsonStr(_query)}`, 'nT');
},
toStudentLst(e){
let { optionsQuery } = this;
@ -63,11 +69,11 @@ export default {
getClassList( course_id ){
servers.get({
url: API.course.getClassList,
data: { course_id },
data: { course_id, type: 0 },
failMsg: '加载失败!'
})
.then(res=>{
let _list = res || [];
let _list = res.list || [];
this.classList = _list;
console.warn(res);
})

51
src/pages/course/task/task.vue

@ -1,16 +1,16 @@
<template>
<view class="course-task fixed-bot-padding">
<picker>
<view class="top-bar"><text>12</text></view>
<view class="top-bar"><text>{{optionsQuery.course_name || '-'}}</text></view>
</picker>
<view class="ct-list">
<view class="cl-item" v-for="i in 10" :key="i">
<view class="cl-item" v-for="(e, i) in taskList" :key="i">
<view class="ci-date">
<view>2020/09/08</view>
<view>完成情况:5/20</view>
<view>{{e.date || '-'}}</view>
<view>完成情况: {{e.complete_member || '0'}}/{{e.total_member || '0'}}</view>
</view>
<view class="ci-content">
<text>作业内容作业内容作业内容作业内容作业内容作业内容作业内容作业内容作业内容作业内容作业内容作业内容作业内容作业内容作业内容作</text>
<text>{{e.description || '-'}}</text>
</view>
<view class="cc-unfold">
<text>展开</text>
@ -25,15 +25,54 @@
</template>
<script>
import { API } from '../../../js/api';
import { servers } from '../../../js/server';
import util from '../../../utils/util'
export default {
data(){
return {
optionsQuery: {},
taskList: [],
}
},
methods: {
onLoad(options){
let _query = util.jsonPar(options.query);
this.optionsQuery = _query;
this.getHomeworkList({
})
},
toPublish(){
util.routeTo(`/pages/course/task_publish/task_publish`, 'nT');
let { optionsQuery } = this;
util.routeTo(`/pages/course/task_publish/task_publish?query=${util.jsonStr(optionsQuery)}`, 'nT');
},
toFinish(){
util.routeTo(`/pages/course/task_finish/task_finish`, 'nT');
},
getHomeworkList({
course_id= '',
user_id= '',
class_id= '',
page= '',
page_size= '',
}){
servers.get({
url: API.course.homeworkList,
data: {
course_id,
user_id,
class_id,
page,
page_size,
},
failMsg: '加载失败!'
}).then(res=>{
let _list = res.list || [];
this.taskList = _list;
console.warn('作业作业---->', res);
})
}
}
}

105
src/pages/course/task_publish/task_publish.vue

@ -3,33 +3,118 @@
<view class="p-section">
<view class="s-desc">
<view class="d-tit">作业描述</view>
<view class="d-frame"><textarea placeholder="请输入"></textarea></view>
<view class="d-frame"><textarea placeholder="请输入" v-model="info.desc"></textarea></view>
</view>
<view class="s-addr">
<view>视频链接</view>
<view><input value="12345" /></view>
<view><input v-model="info.videoSrc"/></view>
</view>
<view class="s-imgs">
<view class="i-tit"><text>上传照片</text>(最多上传6张只支持.jpgpng 格式</view>
<view class="i-list">
<view class="l-item" v-for="i in 5" :key="i">
<image class="i-close"></image>
<image class="i-img"></image>
<view class="l-item" v-for="(e, i) in info.imgArr" :key="i">
<image class="i-close" mode="aspectFit" src="/static/images/close_c00.png" @click="clearImage(i)"></image>
<image class="i-img" mode="aspectFit" :src="e" @click="previewImage(e)"></image>
</view>
<view class="l-item l-add">
<view class="l-item l-add" @click="imgSelect" v-if="info.imgArr.length<6">
<view class="a-icon"></view>
<view class="a-tip">上传照片</view>
</view>
</view>
</view>
</view>
<view class="fixed-bot-btn"><view hover-class="hover-active">保存</view></view>
<view class="fixed-bot-btn"><view hover-class="hover-active" @click="submitBtn">保存</view></view>
</view>
</template>
<script>
import { API } from '../../../js/api';
import { servers } from '../../../js/server';
import util from '../../../utils/util';
export default {
data(){
return {
info: {
desc: '',
videoSrc: '',
imgArr: []
}
}
},
onLoad(options){
let _query = util.jsonPar(options.query);
this.optionsQuery = _query;
},
methods: {
//
clearImage(index){
let _imgs = [...this.info.imgArr];
_imgs.splice(index,1);
this.info.imgArr = _imgs;
},
//
previewImage(src) {
uni.previewImage({
current: src,
urls: this.imageList
})
},
submitBtn: util.debounce(function(){
let { optionsQuery } = this;
let { desc, videoSrc, imgArr } = this.info;
console.warn(API.course.homeworkAdd)
servers.post({
url: API.course.homeworkAdd,
data: {
course_id: optionsQuery.course_id,
user_id: optionsQuery.user_id || '',
class_id: optionsQuery.class_id,
description: desc,
video_url: videoSrc,
images: imgArr,
},
failMsg: '操作失败!'
})
.then(res=>{
if(res.data.code == 0){
util.showNone(res.data.message || '操作成功!');
setTimeout(util.routeTo, 1200);
}else{
util.showNone(res.data.message || '操作失败!');
}
})
}, 300, 300),
//
imgSelect() {
uni.chooseImage({
count: 1,
sizeType: [ 'compressed ' ],
success: res => {
util.showLoad();
servers.uploadFile({
url: API.task_publish,
filePath: res.tempFilePaths[0],
})
.then(e=>{
util.hideLoad();
let _res = util.jsonPar(e.data);
if(_res.code == 0){
this.info.imgArr = [_res.data.url, ...this.info.imgArr];
this.$nextTick(_=>this.$forceUpdate());
}else{
console.error('上传图片失败--->',_res);
util.showNone(_res.message || '上传图片失败,请重试!')
}
})
.catch(err=>{
console.error('上传图片失败--->',err);
util.showNone('上传图片失败,稍后重试!')
})
},
})
},
}
}
</script>
@ -113,7 +198,6 @@ export default {
height: 200upx;
border-radius: 10upx;
overflow: hidden;
background-color: springgreen;
&:not(:nth-child(3n)){
margin-right: 44upx;
}
@ -124,12 +208,10 @@ export default {
z-index: 2;
width: 40upx;
height: 40upx;
background-color: skyblue;
}
.i-img{
width: 100%;
height: 100%;
background-color: yellowgreen;
}
}
.l-add{
@ -140,7 +222,6 @@ export default {
margin: 0 auto 30upx;
width: 60upx;
height: 60upx;
background-color: slateblue;
&::after,&::before{
content: '';
position: absolute;

Loading…
Cancel
Save