Files
medicine_app/pages/miniClass/addClass.vue
@fawn-nine fe2ab47b63 暂存
2024-07-30 16:25:09 +08:00

411 lines
11 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="page">
<z-nav-bar :title="getPageTitle"></z-nav-bar>
<!-- 公共组件-每个页面必须引入 -->
<public-module></public-module>
<uni-forms :modelValue="form" :rules="rules" ref="form">
<view class="input_box " style="">
<uni-forms-item label="" name="modelId" label-width="0">
<view class="">
<text class="input_tit"><i>*</i>班级模型</text>
</view>
<view class="in" style="flex: 1; border: none;">
<!-- {{modelLIst}} -->
<uni-data-select style="width: 100%;" v-model="form.modelId" placeholder="请选择班级的模型"
:localdata="modelLIst"></uni-data-select>
</view>
</uni-forms-item>
</view>
<view class="input_box">
<uni-forms-item label="" name="title" label-width="0">
<text class="input_tit"><i>*</i>班级名称:</text>
<view class="in">
<input placeholder-style="font-size:26rpx" type="text" v-model="form.title"
placeholder="请输入班级名称" />
</view>
</uni-forms-item>
</view>
<view class="input_box">
<text class="input_tit">班级封面:</text>
<view class="in" style="border: none;" @click="checkPermision">
<u-upload :fileList="fileList1" @afterRead="addPic" @delete="deletePic" :maxCount="1" width="100"
height="100" :previewFullImage="true">
</u-upload>
<!-- <text style="font-size: 24rpx; color: #999;">可上传4张问题截图</text> -->
</view>
<!-- <input type="password" maxlength="8" v-model="confirmPassword" placeholder="请确认密码" /> -->
</view>
<view class="input_box">
<uni-forms-item label="" name="number" label-width="0">
<text class="input_tit"><i>*</i>目标人数:</text>
<view class="in">
<input type="number" @input="relationInput" placeholder-style="font-size:26rpx"
v-model="form.number" placeholder="请输入学员目标人数" />
</view>
<!-- <text v-show="relationError" style="font-size: 24rpx; color: red; margin-top: 10rpx;">请填写订单编号</text> -->
<!-- <text v-show="relationErrorPattern"
style="font-size: 24rpx; color: red; margin-top: 10rpx;">订单编号格式错误</text> -->
</uni-forms-item>
</view>
<view class="input_box">
<uni-forms-item label="" name="content" label-width="0">
<text class="input_tit">
<!-- <i>*</i> -->
班级简介:</text>
<view class="in">
<view class="uni-textarea">
<textarea placeholder-style="font-size:26rpx" v-model="form.content" maxlength="600"
placeholder="请输入您的班级简介600字以内" />
</view>
</view>
</uni-forms-item>
</view>
<!-- <view class="input_box">
<uni-forms-item label="" name="contactInformation" label-width="0">
<text class="input_tit"><i>*</i>联系电话:</text>
<view class="in">
<input type="number" placeholder-style="font-size:26rpx" @input="telInput"
v-model="form.contactInformation" placeholder="请输入与您联系的手机号" />
</view>
<text v-show="telError" style="font-size: 24rpx; color: red; margin-top: 10rpx;">手机号格式错误</text>
</uni-forms-item>
</view> -->
</uni-forms>
<view class="btn_box"><button @click="onSubmit"> </button></view>
<z-navigation></z-navigation>
</view>
</template>
<script>
import $http from '@/config/requestConfig.js';
import permission from "@/js_sdk/wa-permission/permission.js"
import {
mapState,
mapMutations
} from 'vuex';
export default {
data() {
return {
fileList1: [],
playData: {},
//手机号账号
form: {
id:undefined, // 班级id
modelId:undefined,
title: '', // 账号
content: '', // 描述
icon: '', //封面
number: '', // 联系电话
},
telError: false,
// relationError: false,
// relationErrorPattern: false,
rules: {
title: {
rules: [{
required: true,
errorMessage: '请输入班级名称',
}
]
},
number: {
rules: [{
required: true,
errorMessage: '请输入学员目标人数',
}
]
},
},
pageType: '',
modelLIst: [
// { value: 0, text: "请选择" },
],
};
},
//第一次加载
onLoad(e) {
console.log('收到的值', e);
this.pageType = e.type
// this.form.type = e.type
this.getUserModel()
if(e.classId && e.name == 'edit'){
this.form.id = e.classId
this.getClassInfo()
}else{
this.form.id = undefined
}
},
//页面显示
onShow() {
},
computed: {
...mapState(['userInfo']),
getPageTitle(){
if(this.form.id){
return "修改班级"
}else{
return "添加班级"
}
}
},
//方法
methods: {
// 获取班级详情
getClassInfo(){
console.log('获取课程详情');
},
getUserModel() {
console.log('获取用户的可添加模型列表');
$http.request({
url: "common/class/getClassModelByUserid",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
"userId": this.userInfo.id,
'type': this.pageType
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
.then(res => {
if(res && res.code == 0){
res.classModelList.forEach(item => {
item.value = item.id
item.text = item.title
})
console.log('处理后的', res.classModelList);
this.modelLIst = res.classModelList
}
}).catch(e => {
// console.log('表单错误信息:', err);
uni.showToast({
title: '数据获取失败',
icon: 'error'
})
})
},
relationInput(e) {
// this.relationError = false
// this.relationErrorPattern = false
},
telInput(e) {
// console.log('键盘输入',e);
this.telError = false
},
async checkPermision() {
var result = await permission.premissionCheck("CAMERA_EXTERNAL_STORAGE")
if (result != 1) {
return false
}
},
addPic(e) {
console.log("添加图片");
let that = this;
// for (var i = 0; i < e.file.length; i++) {
// console.log(i,e.file[i].url)
// uni.uploadFile({
// url: this.$baseUrl + "oss/fileoss", //仅为示例,非真实的接口地址
// filePath: tempFilePaths[0],
// name: 'file',
// formData: {
// 'user': 'test'
// },
// success: (uploadFileRes) => {
// console.log(uploadFileRes.data);
// }
// });
// return
uni.uploadFile({
url: this.$baseUrl + "oss/fileoss",
filePath: e.file.url,
//files:e.file,
name: "file",
formData: {},
success: (res) => {
// console.log("that.uploadPicLIst", res);
that.fileList1.push({
url: JSON.parse(res.data).url,
});
// console.log(that.fileList1, "that.uploadPicLIst");
},
fail: (error) => {
console.log("上传失败", error);
},
});
// }
},
deletePic(event) {
this.fileList1.splice(event.index, 1)
},
onSubmit() {
this.$refs.form.validate().then(res => {
if (this.fileList1.length > 0) {
let _list = this.fileList1
_list = _list.map(item => item.url)
// console.log('this.fileList1',_list);
this.form.icon = _list.join(',')
}
$http.request({
url: "common/class/addClass",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
// ...this.form
'id':this.form.id,
"modelId": this.form.modelId,
"title": this.form.title,
"icon": this.form.icon,
"content": this.form.content,
"number": Number(this.form.number)
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
// this.$http.post("common/class/addClass",{
// ...this.form
// })
.then(res => {
uni.showModal({
title: "提示",
content: "创建成功!",
showCancel: false,
success: (res) => {
this.fileList1 = []
// this.$nextTick(() => {
uni.navigateBack({
delta: 1
});
// })
}
});
}).catch(e => {
// console.log('表单错误信息:', err);
uni.showToast({
title: '创建失败',
icon: 'error'
})
});
}).catch(err => {
console.log('表单错误信息:', err);
uni.showToast({
title: '页面有未填写的内容哦',
icon: 'none'
})
})
}
},
//页面隐藏
onHide() {},
//页面卸载
onUnload() {},
//页面下来刷新
onPullDownRefresh() {},
//页面上拉触底
onReachBottom() {},
//用户点击分享
onShareAppMessage(e) {
return this.wxShare();
}
};
</script>
<style lang="scss" scoped>
@import '@/style/mixin.scss';
::v-deep .uni-forms-item {
margin-bottom: 26rpx !important;
}
.input_tit {
font-weight: bold;
}
.page {
background-color: #ffffff;
padding: 0 65rpx;
min-height: 100vh;
.title {
padding: 30rpx 0 40rpx 0;
font-size: 40rpx;
color: #333333;
}
.input_box {
display: block;
// justify-content: space-between;
// overflow: hidden;
// height: 100rpx;
padding-top: 10rpx;
// border-bottom: 1rpx solid #eeeeee;
align-items: center;
i {
font-size: 24rpx;
color: red;
padding-right: 10rpx;
}
.in {
border: 1rpx solid #eeeeee;
border-radius: 8rpx;
padding: 8rpx;
margin-top: 10rpx;
}
text {
font-size: 30rpx;
width: 180rpx;
}
input {
flex: 1;
height: 50rpx;
// line-height: 70rpx;
font-size: 30rpx;
}
button {
height: 78rpx;
line-height: 78rpx;
font-size: 30rpx;
color: $themeColor;
&:active {
background-color: transparent;
}
}
}
.btn_box {
margin-top: 70rpx;
padding-bottom: 20rpx;
button {
font-size: 32rpx;
@include theme('btn_bg') color: #fff;
height: 80rpx;
line-height: 80rpx;
border-radius: 50rpx;
}
}
.protocol {
font-size: 24rpx;
color: #999999;
text-align: center;
margin-top: 20rpx;
text {
color: $themeColor;
}
}
}
</style>