Эх сурвалжийг харах

Signed-off-by: liuboyan <632697560@qq.com>
bug

liuboyan 4 жил өмнө
parent
commit
ef11c77627

+ 6 - 0
config/api.js

@@ -21,6 +21,12 @@ module.exports = {
 	submitClassForm: API_BASE + '/v2/sale/class/create',
 	//  获取班级详情
 	getClassDetail: API_BASE + '/v2/sale/class/getDetail',
+	//  获取教练近况
+	getClassDetailShowList: API_BASE + '/v2/sale/class/getClassDetailShowList',
+	//  教练近况发布
+	insertClassShow: API_BASE + '/v2/sale/class/insertClassShow',
+	//  教练近况删除
+	deleteClassShow: API_BASE + '/v2/sale/class/deleteClassShow',
 	//  获取学员详情
 	getStudentDetail: API_BASE + '/v2/sale/class/getStudentDetail',
 	//  提交历程表单

+ 97 - 5
pagesClass/classDetail.vue

@@ -4,7 +4,11 @@
 			<view slot="body">
 				<view class="class-info-text">
 					<u-icon name="clock"></u-icon>
-					{{classInfo.classStartDate}}&nbsp;&nbsp;{{classInfo.classStartHours}}&nbsp;&nbsp;{{classInfo.residue}}课时
+					{{classInfo.classStartDate}}&nbsp;{{classInfo.classStartHours}}&nbsp;~&nbsp;{{classInfo.classEndDate}}&nbsp;{{classInfo.classEndHours}}
+				</view>
+				<view class="class-info-text" v-for="(item, index) in classInfo.classExtrasList">
+					<u-icon name="calendar" style="visibility: hidden;"></u-icon>
+					<text>{{item.week}}&nbsp;{{item.startTime}}-{{item.endTime}}</text>
 				</view>
 				<view class="class-info-text">
 					<u-icon name="map"></u-icon>
@@ -23,11 +27,21 @@
 				</u-grid-item>
 			</u-grid>
 		</u-card>
-		<u-card title="班级近况" :show-foot="false" title-size="32" margin="0px" :head-style="cardStyle">
+		<u-card title="班级近况" :sub-title="imgEdit ? '完成' : '管理'" :sub-title-color="imgEdit ? '#19be6b' : '#909399'" :show-foot="false"
+		 title-size="32" margin="0px" :head-style="cardStyle" @sub-click="imgEdit = !imgEdit">
 			<view class="class-show-box" slot="body">
-				<view v-for="(item, index) in classInfo.showList" :key="index" class="class-show-card">
+				<view v-for="(item, index) in classShowList" :key="index" class="class-show-card">
 					<u-image :src="item.url" mode="aspectFill" height="30vw" border-radius="10px"></u-image>
 					<view class="class-show-name">{{item.name}}</view>
+					<u-icon name="close-circle-fill" color="#fa3534" size="48" v-if="imgEdit" class="delete-icon" @click="deleteClassShow(item)"></u-icon>
+				</view>
+				<view class="class-show-card" style="width: calc(100% - 16px)" v-if="imgEdit">
+					<u-upload :action="uploadUrl" :header="uploadHeader" :show-upload-list="false" :custom-btn="true" @on-success="uploadSuccess"
+					 @on-error="uploadError">
+						<view slot="addBtn" style="width: calc(100vw - 32px);text-align: center;">
+							<u-icon name="plus-circle-fill" size="100" :color="mainColor"></u-icon>
+						</view>
+					</u-upload>
 				</view>
 			</view>
 		</u-card>
@@ -53,16 +67,25 @@
 		},
 		data() {
 			return {
+				uploadUrl: API.uploadFile,
+				uploadHeader: {
+					Authorization: uni.getStorageSync('token')
+				},
 				classId: '',
 				classInfo: {
 					name: '',
 					classStartDate: '',
 					classStartHours: '',
+					classEndDate: '',
+					classEndHours: '',
 					residue: '',
 					address: '',
+					classExtrasList: [],
 					studentSignList: [],
 					showList: [],
 				},
+				classShowList: [],
+				imgEdit: false,
 				cardStyle: {
 					fontWeight: 'bold'
 				},
@@ -74,10 +97,12 @@
 		onLoad(options) {
 			this.classId = options.id
 			this.initialize()
+			this.getClassShow()
 		},
 		onReady() {},
 		onPullDownRefresh() {
 			this.initialize()
+			this.getClassShow()
 		},
 		methods: {
 			//  获取初始化数据
@@ -94,6 +119,68 @@
 					})
 				})
 			},
+			//  文件上传成功回调
+			getClassShow() {
+				NET.request(API.getClassDetailShowList, {
+					id: this.classId,
+					page: 0,
+					size: 1000
+				}, 'POST').then(res => {
+					this.classShowList = res.data.row
+					this.$refs.uTips.show({
+						title: '班级近况发布成功',
+						type: 'success',
+					})
+				}).catch(error => {
+					this.$refs.uTips.show({
+						title: error.message,
+						type: 'warning',
+					})
+				})
+			},
+			//  文件上传成功回调
+			uploadSuccess(res, index, lists, name) {
+				NET.request(API.insertClassShow, {
+					fileId: [res.data.id],
+					id: this.classId,
+				}, 'POST').then(res => {
+					this.getClassShow()
+					this.$refs.uTips.show({
+						title: '班级近况发布成功',
+						type: 'success',
+					})
+				}).catch(error => {
+					this.$refs.uTips.show({
+						title: error.message,
+						type: 'warning',
+					})
+				})
+				return true
+			},
+			//  文件上传失败回调
+			uploadError(res, index, lists, name) {
+				this.$refs.uTips.show({
+					title: error.message,
+					type: 'warning',
+				})
+			},
+			//  删除班级近况
+			deleteClassShow(site) {
+				NET.request(API.deleteClassShow, {
+					id: site.id,
+				}, 'POST').then(res => {
+					this.getClassShow()
+					this.$refs.uTips.show({
+						title: '删除成功',
+						type: 'success',
+					})
+				}).catch(error => {
+					this.$refs.uTips.show({
+						title: error.message,
+						type: 'warning',
+					})
+				})
+			},
 			//  跳转学生详情
 			goToStudentInfo(item) {
 				uni.navigateTo({
@@ -159,8 +246,6 @@
 		.class-student-box {
 			display: flex;
 			justify-content: space-around;
-
-
 		}
 
 		.class-show-box {
@@ -171,6 +256,7 @@
 				width: calc(50% - 16px);
 				margin: 0 8px 16px 8px;
 				float: left;
+				position: relative;
 
 				.class-show-name {
 					width: 100%;
@@ -179,6 +265,12 @@
 					font-size: 14px;
 					margin-top: 5px;
 				}
+
+				.delete-icon {
+					position: absolute;
+					right: -5px;
+					top: -5px;
+				}
 			}
 		}
 	}

+ 1 - 1
pagesClass/classList.vue

@@ -15,7 +15,7 @@
 						<view class="card-content" slot="body">
 							<view class="card-info-text">
 								<u-icon name="clock"></u-icon>
-								{{site.classStartDate}}&nbsp;&nbsp;{{site.classStartHours}}&nbsp;&nbsp;{{site.residue}}课时
+								{{site.classStartDate}}&nbsp;&nbsp;{{site.classStartHours}}
 							</view>
 							<view class="card-info-text">
 								<u-icon name="map"></u-icon>

+ 4 - 1
uview-ui/components/u-card/u-card.vue

@@ -41,7 +41,7 @@
 						{{ title }}
 					</text>
 				</view>
-				<view class="u-card__head--right u-line-1" v-if="subTitle">
+				<view class="u-card__head--right u-line-1" v-if="subTitle" @tap="subClick">
 					<text
 						class="u-card__head__title__text"
 						:style="{
@@ -238,6 +238,9 @@ export default {
 		headClick() {
 			this.$emit('head-click', this.index);
 		},
+		subClick() {
+			this.$emit('sub-click', this.index);
+		},
 		bodyClick() {
 			this.$emit('body-click', this.index);
 		},