This commit is contained in:
@fawn-nine
2024-08-12 16:07:24 +08:00
parent 7c7c96f630
commit 28067d851d
13 changed files with 478 additions and 324 deletions

View File

@@ -7,110 +7,200 @@
<public-module></public-module>
<uni-forms :modelValue="form" :rules="rules" ref="form" v-if="roleCode.length > 0">
<view class="input_box " style="">
<uni-forms-item label="" name="monitor" label-width="0"
v-show="roleCode.includes('66')">
<uni-forms-item label="" name="monitor" label-width="0" v-show="roleCode.includes('66')">
<view class="">
<text class="input_tit"><i>*</i>班长</text>
</view>
</view>
<view class="addBtnBox">
<view class="item" v-if="memeberRefsh">
<view class="box" @click="showMemberAdd('monitor')">
<span v-show="!form.monitor"><uni-icons class="addIcon" color="#999" type="plusempty"
size="20"></uni-icons></span>
<text style="width: 100%; display: inline-block;"
v-if="form.monitor">
<!-- {{item && item.nickname != '' && item.nickname != null ? item.nickname : '匿名用户'}} -->
{{form.monitor.tel}}</text>
<text class="delBtn" v-if="form.monitor" @click.stop="delMemeber('monitor')">删除</text>
<text class="addText" v-else >添加人员</text>
<view class="box" @click="showMemberAdd('monitor')">
<view v-show="!form.monitor" class="haveNoPerson flex_box">
<uni-icons class="addIcon" color="#999" type="plusempty" size="20"></uni-icons>
<text class="addText">添加人员</text>
</view>
<view class="havePerson" v-if="form.monitor">
<view class="flex_box ">
<view class="classmateImg">
<image v-if="form.monitor.avatar != null && form.monitor.avatar != ''" :src="form.monitor.avatar"
mode="aspectFit"></image>
<image v-else src="/static/icon/morenAvavter.png" mode="aspectFit"></image>
</view>
<view class="textBox">
<view class="">
<text style="width: 100%; display: inline-block;">
{{form.monitor && form.monitor.nickname != '' && form.monitor.nickname != null ? form.monitor.nickname : '匿名用户'}}
</text>
<text style="width: 100%; display: inline-block;"> - {{form.monitor.tel}}</text>
</view>
</view>
</view>
<view class="" @click.stop="delMemeber('monitor')">
<text class="delBtn"
>删除</text>
</view>
</view>
</view>
</view>
</view>
</view>
</uni-forms-item>
<uni-forms-item label="" name="dmonitor" label-width="0" v-show="roleCode.includes('1') || roleCode.includes('66')">
<uni-forms-item label="" name="dmonitor" label-width="0"
v-show="roleCode.includes('1') || roleCode.includes('66')">
<view class="">
<text class="input_tit">
<!-- <i>*</i> -->
副班长</text>
</view>
</view>
<view class="addBtnBox">
<view class="item" v-if="memeberRefsh">
<view class="box" @click="showMemberAdd('dmonitor')">
<span v-show="!form.dmonitor"><uni-icons class="addIcon" color="#999" type="plusempty"
size="20"></uni-icons></span>
<text style="width: 100%; display: inline-block;"
v-if="form.dmonitor">
<!-- {{item && item.nickname != '' && item.nickname != null ? item.nickname : '匿名用户'}} -->
{{form.dmonitor.tel}}</text>
<text class="delBtn" v-if="form.dmonitor" @click.stop="delMemeber('dmonitor')">删除</text>
<text class="addText" v-else >添加人员</text>
<view class="box" @click="showMemberAdd('dmonitor')">
<view v-show="!form.dmonitor" class="haveNoPerson flex_box">
<uni-icons class="addIcon" color="#999" type="plusempty" size="20"></uni-icons>
<text class="addText">添加人员</text>
</view>
<view class="havePerson" v-if="form.dmonitor">
<view class="flex_box ">
<view class="classmateImg">
<image v-if="form.dmonitor.avatar != null && form.dmonitor.avatar != ''" :src="form.dmonitor.avatar"
mode="aspectFit"></image>
<image v-else src="/static/icon/morenAvavter.png" mode="aspectFit"></image>
</view>
<view class="textBox">
<view class="">
<text style="width: 100%; display: inline-block;">
{{form.dmonitor && form.dmonitor.nickname != '' && form.dmonitor.nickname != null ? form.dmonitor.nickname : '匿名用户'}}
</text>
<text style="width: 100%; display: inline-block;"> - {{form.dmonitor.tel}}</text>
</view>
</view>
</view>
<view class="" @click.stop="delMemeber('dmonitor')">
<text class="delBtn"
>删除</text>
</view>
</view>
</view>
</view>
</view>
</view>
</uni-forms-item>
<uni-forms-item label="" name="learner" label-width="0" >
<uni-forms-item label="" name="learner" label-width="0">
<view class="">
<text class="input_tit">
<!-- <i>*</i> -->
学习委员</text>
</view>
</view>
<view class="addBtnBox">
<view class="item" v-if="memeberRefsh">
<view class="box" @click="showMemberAdd('learner')">
<span v-show="!form.learner"><uni-icons class="addIcon" color="#999" type="plusempty"
size="20"></uni-icons></span>
<text style="width: 100%; display: inline-block;"
v-if="form.learner">
<!-- {{item && item.nickname != '' && item.nickname != null ? item.nickname : '匿名用户'}} -->
{{form.learner.tel}}</text>
<text class="delBtn" v-if="form.learner" @click.stop="delMemeber('learner')">删除</text>
<text class="addText" v-else >添加人员</text>
<view class="box" @click="showMemberAdd('learner')">
<view v-show="!form.learner" class="haveNoPerson flex_box">
<uni-icons class="addIcon" color="#999" type="plusempty" size="20"></uni-icons>
<text class="addText">添加人员</text>
</view>
<view class="havePerson" v-if="form.learner">
<view class="flex_box ">
<view class="classmateImg">
<image v-if="form.learner.avatar != null && form.learner.avatar != ''" :src="form.learner.avatar"
mode="aspectFit"></image>
<image v-else src="/static/icon/morenAvavter.png" mode="aspectFit"></image>
</view>
<view class="textBox">
<view class="">
<text style="width: 100%; display: inline-block;">
{{form.learner && form.learner.nickname != '' && form.learner.nickname != null ? form.learner.nickname : '匿名用户'}}
</text>
<text style="width: 100%; display: inline-block;"> - {{form.learner.tel}}</text>
</view>
</view>
</view>
<view class="" @click.stop="delMemeber('learner')">
<text class="delBtn"
>删除</text>
</view>
</view>
</view>
</view>
</view>
</view>
</uni-forms-item>
<uni-forms-item label="" name="scorer" label-width="0" >
<uni-forms-item label="" name="scorer" label-width="0">
<view class="">
<text class="input_tit">
<!-- <i>*</i> -->
评分员</text>
</view>
评分员</text>
</view>
<view class="addBtnBox">
<!-- {{setDefaultAddItem}} -->
<view class="item" v-if="memeberRefsh">
<view class="box" v-for="(item, index) in form.scorer" @click="showMemberAdd('scorer',index)">
<span v-show="!item || item == null || item == 'null'"><uni-icons class="addIcon" color="#999" type="plusempty"
size="20"></uni-icons></span>
<text style="width: 100%; display: inline-block;"
v-if="item">
<!-- {{item && item.nickname != '' && item.nickname != null ? item.nickname : '匿名用户'}} -->
{{item.tel}}</text>
<text class="delBtn" v-if="item" @click.stop="delMemeber('scorer',index)">删除</text>
<text class="addText" v-else >添加人员</text>
<view class="box" v-for="(item, index) in form.scorer"
@click="showMemberAdd('scorer',index)">
<view v-show="!item || item == null || item == 'null'" class="haveNoPerson flex_box">
<uni-icons class="addIcon" color="#999" type="plusempty" size="20"></uni-icons>
<text class="addText">添加人员</text>
</view>
<view class="havePerson" v-if="item">
<view class="flex_box ">
<view class="classmateImg">
<image v-if="item.avatar != null && item.avatar != ''" :src="item.avatar"
mode="aspectFit"></image>
<image v-else src="/static/icon/morenAvavter.png" mode="aspectFit"></image>
</view>
<view class="textBox">
<view class="">
<text style="width: 100%; display: inline-block;">
{{item && item.nickname != '' && item.nickname != null ? item.nickname : '匿名用户'}}
</text>
<text style="width: 100%; display: inline-block;"> - {{item.tel}}</text>
</view>
</view>
</view>
<view class="" @click.stop="delMemeber('scorer',index)">
<text class="delBtn"
>删除</text>
</view>
</view>
</view>
</view>
</view>
</view>
</uni-forms-item>
<uni-forms-item label="" name="counter" label-width="0" >
<uni-forms-item label="" name="counter" label-width="0">
<view class="">
<text class="input_tit">
<!-- <i>*</i> -->
记分员</text>
</view>
记分员</text>
</view>
<view class="addBtnBox">
<view class="item" v-if="memeberRefsh">
<view class="box" v-for="(item, index) in form.counter" @click="showMemberAdd('counter',index)">
<span v-show="!item"><uni-icons class="addIcon" color="#999" type="plusempty"
size="20"></uni-icons></span>
<text style="width: 100%; display: inline-block;"
v-if="item">
<!-- {{item && item.nickname != '' && item.nickname != null ? item.nickname : '匿名用户'}} -->
{{item.tel}}</text>
<text class="delBtn" v-if="item" @click.stop="delMemeber('counter',index)">删除</text>
<text class="addText" v-else >添加人员</text>
<view class="box" v-for="(item, index) in form.counter"
@click="showMemberAdd('counter',index)">
<view v-show="!item" class="haveNoPerson flex_box">
<uni-icons class="addIcon" color="#999" type="plusempty" size="20"></uni-icons>
<text class="addText">添加人员</text>
</view>
<view class="havePerson" v-if="item">
<view class="flex_box ">
<view class="classmateImg">
<image v-if="item.avatar != null && item.avatar != ''" :src="item.avatar"
mode="aspectFit"></image>
<image v-else src="/static/icon/morenAvavter.png" mode="aspectFit"></image>
</view>
<view class="textBox">
<view class="">
<text style="width: 100%; display: inline-block;">
{{item && item.nickname != '' && item.nickname != null ? item.nickname : '匿名用户'}}
</text>
<text style="width: 100%; display: inline-block;"> - {{item.tel}}</text>
</view>
</view>
</view>
<view class="" @click.stop="delMemeber('counter',index)">
<text class="delBtn"
>删除</text>
</view>
</view>
<!-- <text class="delBtn" v-if="item" @click.stop="delMemeber('counter',index)">删除</text>
<text class="addText" v-else>添加人员</text> -->
</view>
</view>
</view>
</view>
</uni-forms-item>
</view>
</uni-forms>
@@ -148,7 +238,7 @@
export default {
data() {
return {
memeberRefsh:true,
memeberRefsh: true,
fileList1: [],
searchValue: '',
searchList: [],
@@ -166,8 +256,8 @@
"monitor": undefined, //班长
"dmonitor": undefined, //2班长
"learner": undefined, //学习委员
"scorer": [undefined,undefined], //评分员
"counter": [undefined,undefined] //记分员
"scorer": [undefined, undefined], //评分员
"counter": [undefined, undefined] //记分员
},
telError: false,
// relationError: false,
@@ -180,8 +270,8 @@
}
]
}
// ,
}
// ,
// dmonitor: {
// rules: [{
// required: true,
@@ -195,7 +285,7 @@
modelLIst: [
// { value: 0, text: "请选择" },
],
roleCode:''
roleCode: ''
};
},
//第一次加载
@@ -205,7 +295,7 @@
this.roleCode = e.roleCode
if (e.id) {
this.form.classId = e.id
this.getClassInfo()
this.getClassInfo()
} else {
this.form.id = undefined
}
@@ -215,7 +305,7 @@
},
computed: {
...mapState(['userInfo'])
...mapState(['userInfo'])
},
//方法
methods: {
@@ -259,7 +349,7 @@
if (res.code == 0) {
if (res.result.admins.length > 0) {
var scorerIndex = 0
var counterIndex = 0
var counterIndex = 0
res.result.admins.forEach(item => {
if (item.role == '1') {
this.form.monitor = item.user
@@ -270,18 +360,18 @@
if (item.role == '3') {
this.form.learner = item.user
}
if (item.role == '4') {
if (item.role == '4') {
this.form.scorer[scorerIndex] = item.user
scorerIndex += 1
}
if (item.role == '5') {
if (item.role == '5') {
this.form.counter[counterIndex] = item.user
counterIndex += 1
}
})
}
console.log('this.form.scorer',this.form.scorer.length);
console.log('this.form.scorer', this.form.scorer.length);
}
console.log('this.form', this.form);
uni.hideLoading()
@@ -352,12 +442,12 @@
this.getSearch()
}
},
delMemeber(dataName,index){
console.log(dataName,index);
delMemeber(dataName, index) {
console.log(dataName, index);
this.memeberRefsh = false
switch (dataName) {
case 'counter':
this.form.counter[index] = undefined
this.form.counter[index] = undefined
break;
case 'scorer':
this.form.scorer[index] = undefined
@@ -373,7 +463,7 @@
break;
}
this.memeberRefsh = true
},
setMember(item) {
console.log('选中了值', item);
@@ -419,8 +509,8 @@
// icon: 'none'
// })
},
relationInput(e) {
// this.relationError = false
// this.relationErrorPattern = false
@@ -437,18 +527,18 @@
},
addPic(e) {
console.log("添加图片");
let that = this;
let that = this;
uni.uploadFile({
url: this.$baseUrl + "oss/fileoss",
filePath: e.file.url,
//files:e.file,
name: "file",
formData: {},
success: (res) => {
success: (res) => {
that.fileList1.push({
url: JSON.parse(res.data).url,
});
},
fail: (error) => {
console.log("上传失败", error);
@@ -460,8 +550,8 @@
this.fileList1.splice(event.index, 1)
},
onSubmit() {
console.log('form',this.form);
if(!this.form.monitor){
console.log('form', this.form);
if (!this.form.monitor) {
uni.showToast({
title: '请添加班长人选',
icon: 'none'
@@ -476,92 +566,94 @@
// return
// }
// this.$refs.form.validate().then(res => {
var newScorer = [...this.form.scorer]
var newCounter = [...this.form.counter]
if(!this.form.scorer[0] && !this.form.scorer[1]){
newScorer = [0,0]
}else{
console.log('newScorer',newScorer);
this.form.scorer.forEach((item, index) => {
console.log('item',item);
if(!item || item == null){
console.log('进来了');
newScorer[index] = {
id:0
}
var newScorer = [...this.form.scorer]
var newCounter = [...this.form.counter]
if (!this.form.scorer[0] && !this.form.scorer[1]) {
newScorer = [0, 0]
} else {
console.log('newScorer', newScorer);
this.form.scorer.forEach((item, index) => {
console.log('item', item);
if (!item || item == null) {
console.log('进来了');
newScorer[index] = {
id: 0
}
})
// console.log('删除后的newScorer',newScorer);
if(newScorer[0].id == newScorer[1].id){
uni.showToast({
title:'两名评分员不能是同一人',
icon:'none'
})
return
}
newScorer = newScorer.map(item => {
return item.id
})
// console.log('删除后的newScorer',newScorer);
}
if(!this.form.counter[0] && !this.form.counter[1]){
newCounter = [0,0]
}else{
this.form.counter.forEach((item, index) => {
if(!item || item == null){
newCounter[index] = {id:0}
// newCounter.splice(index, 1)
}
})
if(newCounter[0].id == newCounter[1].id){
uni.showToast({
title:'两名记分员不能是同一人',
icon:'none'
})
return
}
newCounter = newCounter.map(item => {
return item.id
})
// console.log('删除后的newScorer',newScorer);
if (newScorer[0].id == newScorer[1].id) {
uni.showToast({
title: '两名评分员不能是同一人',
icon: 'none'
})
// console.log('删除后的newCounter',newCounter);
return
}
var _url = 'common/class/setUserRole'
// this.form.classId ? _url = 'common/class/editClass' : _url = "common/class/addClass"
$http.request({
url: _url,
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
"classId": this.form.classId,
"monitor": this.form.monitor.id+'', //班长
"dmonitor": this.form.dmonitor ? this.form.dmonitor.id+'' : '0', //2班长
"learner": this.form.learner ? this.form.learner.id+'' : '0', //学习委员
"scorer": newScorer.join(','), //评分员
"counter": newCounter.join(',') //记分员
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
newScorer = newScorer.map(item => {
return item.id
})
// console.log('删除后的newScorer',newScorer);
}
if (!this.form.counter[0] && !this.form.counter[1]) {
newCounter = [0, 0]
} else {
this.form.counter.forEach((item, index) => {
if (!item || item == null) {
newCounter[index] = {
id: 0
}
// newCounter.splice(index, 1)
}
})
if (newCounter[0].id == newCounter[1].id) {
uni.showToast({
title: '两名记分员不能是同一人',
icon: 'none'
})
.then(res => {
uni.showToast({
title: "操作成功",
icon: 'success'
});
setTimeout(() => {
uni.navigateBack({
delta: 1
});
}, 1000)
}).catch(e => {
// console.log('表单错误信息:', err);
uni.showToast({
title: '操作失败',
icon: 'error'
})
return
}
newCounter = newCounter.map(item => {
return item.id
})
// console.log('删除后的newCounter',newCounter);
}
var _url = 'common/class/setUserRole'
// this.form.classId ? _url = 'common/class/editClass' : _url = "common/class/addClass"
$http.request({
url: _url,
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
"classId": this.form.classId,
"monitor": this.form.monitor.id + '', //班长
"dmonitor": this.form.dmonitor ? this.form.dmonitor.id + '' : '0', //2班长
"learner": this.form.learner ? this.form.learner.id + '' : '0', //学习委员
"scorer": newScorer.join(','), //评分员
"counter": newCounter.join(',') //记分员
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
.then(res => {
uni.showToast({
title: "操作成功",
icon: 'success'
});
setTimeout(() => {
uni.navigateBack({
delta: 1
});
}, 1000)
}).catch(e => {
// console.log('表单错误信息:', err);
uni.showToast({
title: '操作失败',
icon: 'error'
})
});
// }).catch(err => {
// console.log('表单错误信息:', err);
// uni.showToast({
@@ -648,26 +740,44 @@
margin-bottom: 20rpx;
}
}
.addBtnBox {
.item {
.box {
color: #999;
margin: 20rpx;
// margin: 20rpx;
align-items: center;
font-size: 28rpx;
background-color: #eee;
padding: 4rpx 8rpx;
border-radius: 6rpx;
justify-content: start;
width: 100%;
padding: 10rpx 8rpx;
.haveNoPerson {
height: 120rpx; border-radius: 10rpx; align-items: center; justify-content: center;
background-color: #eee;
}
.havePerson {
width: 100%;
padding: 20rpx;
border-radius: 10rpx;
border: 1px solid #eee;
}
.delBtn {
display: block; padding: 20rpx 0; box-sizing: border-box;
width: 100%; text-align: center; background-color: #f1f1f1;
color: #e60000 !important;
display: inline-block;
border-radius: 6rpx; margin-left: 20rpx;
font-size: 26rpx;
margin-top: 20rpx;
// display: inline-block;
border-radius: 6rpx;
}
text {
@@ -749,6 +859,17 @@
}
}
.classmateImg {
width: 60rpx !important;
height: 60rpx !important;
margin-right: 16rpx;
image {
width: 60rpx !important;
height: 60rpx;
}
}
.btn_box {
margin-top: 70rpx;
padding-bottom: 20rpx;