smartmeter-app/pages_teacher/teacher_teachers/teacher_writeadd.vue

663 lines
14 KiB
Vue
Raw Normal View History

2023-12-05 16:45:28 +08:00
<template>
<view class="view_template">
<view class="view_body">
<u-navbar :is-back="true" title='添加作业' title-color="#000" :border-bottom="false" :background="true" id="navbar">
</u-navbar>
<!-- 搜索 -->
<view class="view_search" v-if="search">
2023-12-05 21:18:18 +08:00
<u-search :show-action="false" :animation="true" bg-color="#fff" placeholder="搜索相关内容..." color="#3E97FF"></u-search>
2023-12-05 16:45:28 +08:00
</view>
<!--导航栏 -->
<view class="view_tabs">
<u-tabs :list="list" :is-scroll="false" :current="current" @change="change" active-color="#2D7CE6" bg-color="0"></u-tabs>
</view>
<!-- 轮播图 -->
<swiper :interval="5000" :duration="1000" is-scroll="true" :current="current" @change="updateCurrent" class="swiper">
<!-- 口语 -->
2023-12-05 21:18:18 +08:00
<swiper-item style="height: 300rpx;">
2023-12-08 15:26:16 +08:00
<view>
<view class="view_left">
<view class="view_left_pd" @click="arrow_xl">
<view class="pull_down">
<view>{{selectedOption}}</view>
<u-icon name="arrow-down" size="22"></u-icon>
</view>
<view class="pull_Down" v-if="arrow">
<view v-for="(item,index) in options" :key="index" @click="arrow_options(item.id)">{{item.name}}</view>
</view>
</view>
</view>
<!-- 口语主体 -->
<view v-for="(item,index) in slander" :key="index">
<view class="view_inuygs">
<view class="header_part">
<view class="unite">{{item.label}}</view>
</view>
<view class="bottom_one" v-if="part2">
2023-12-08 16:34:38 +08:00
<view :class="{'active': item.active === '串题'}" @click="clicking(item, '串题')">串题</view>
<view :class="{'active': item.active === '跟读'}" @click="clicking(item, '跟读')">跟读</view>
<view :class="{'active': item.active === '模考'}" @click="clicking(item, '模考')">模考</view>
2023-12-08 15:26:16 +08:00
</view>
</view>
<!-- part1-->
2023-12-08 16:34:38 +08:00
<view class="slander_for" v-if="grizzly">
2023-12-08 15:26:16 +08:00
<view class="slander_of" v-for="(items,indexs) in item.list" :key='indexs'>
<view class="textual">
{{items.topicEn}}
</view>
2023-12-08 16:34:38 +08:00
<view class="bottom_one">
<view :class="{'active': items.active === '串题'}" @click="clicking(items, '串题')">串题</view>
<view :class="{'active': items.active === '跟读'}" @click="clicking(items, '跟读')">跟读</view>
<view :class="{'active': items.active === '模考'}" @click="clicking(items, '模考')">模考</view>
2023-12-08 15:26:16 +08:00
</view>
</view>
</view>
<!-- part2-->
<view class="slander_for" v-if="part2">
<view class="slander_of" v-for="(items,indexs) in item.list" :key='indexs'>
<view class="textual2">
{{items.topicEn}}
</view>
</view>
</view>
</view>
</view>
2023-12-05 16:45:28 +08:00
</swiper-item>
<!-- 写作 -->
<swiper-item>
2023-12-07 23:10:26 +08:00
<compose></compose>
2023-12-05 16:45:28 +08:00
</swiper-item>
<!--听力 -->
<swiper-item>
<audiology></audiology>
</swiper-item>
<!-- 阅读 -->
<swiper-item>
<reading></reading>
</swiper-item>
</swiper>
</view>
<!-- 底部按钮 -->
2023-12-05 21:18:18 +08:00
<view :class="search== true ? 'footer2' : 'footer'">
2023-12-05 16:45:28 +08:00
<view class="footer_button">
<view :class="search==true ? 'button_andadd' :'button_show'">确定添加4</view>
<view class="footer_button_right" v-if="search">口语模考</view>
</view>
</view>
</view>
</view>
</template>
<script>
import audiology from './components/audiology.vue'
import reading from './components/reading.vue'
2023-12-05 18:17:41 +08:00
import slander from './components/slander.vue'
2023-12-07 23:10:26 +08:00
import compose from './components/compose.vue'
2023-12-05 16:45:28 +08:00
export default {
data() {
return {
// 导航栏
list: [{
name: '口语'
},
{
name: '写作'
},
{
name: '听力'
},
{
name: '阅读'
}
],
radio: [{
name: '1',
disabled: false
}],
// 写作
Compose: [],
num:0,
// 下拉框的v-if布尔值
radioValue: '',
part1: true,
current: 0,
search: true,
listType: [],
idList: [],
2023-12-08 15:26:16 +08:00
// 口语
postdata: {
"key": "",
"pageNum": 0,
"mode": "home",
"part": "part1",
"order": "0",
"type": "",
"isStudy": 0,
"isFavorite": 0,
"isEvlua": 0,
"isFun": 0,
"level": 0,
"isNew": 0
},
slander: [],
part2:false,
grizzly:true,
categorize: '分类',
// 下拉框的v-if布尔值
selectedOption: 'Part1',
arrow: false,
arrowDown: false,
options: [{
id: 1,
name: 'Part1'
},
{
id: 2,
name: 'Part2'
2023-12-08 16:34:38 +08:00
},
{
id: 3,
name: 'Part3'
2023-12-08 15:26:16 +08:00
}
],
2023-12-08 16:34:38 +08:00
userId:null
2023-12-05 16:45:28 +08:00
}
},
components:{
audiology,
2023-12-05 18:17:41 +08:00
reading,
2023-12-07 23:10:26 +08:00
compose
2023-12-05 16:45:28 +08:00
},
2023-12-08 15:26:16 +08:00
created() {
this.getList()
},
2023-12-05 16:45:28 +08:00
methods: {
upType(index, num) {
this.listType.splice(index, 1, num)
},
change(index) {
this.current = index;
},
// 选中某个单选框时由radio时触发
radioCheck(index) {
if (this.radioValue == this.list2[index].id) {
this.radioValue = null
} else {
this.radioValue = this.list2[index].id
}
},
//轮播图滑动和tabs保持一致
updateCurrent(current, source) {
this.current = current.detail.current
if (this.current == 0) {
this.search = true
} else {
this.search = false
}
},
2023-12-08 15:26:16 +08:00
getList() {
this.$u.post('https://api.admin-v2.langsi.online/admin-api/speaking/topic/home/list', this.postdata).then(res => {
let keyArr = Object.keys(res.data)
let valueArr = Object.values(res.data)
this.slander = keyArr.map((item, index) => {
return {
label: item,
list: valueArr[index]
}
})
})
},
//下拉显示下拉框
arrow_xl() {
this.arrow = !this.arrow
},
arrow_xl2() {
this.arrowDown = !this.arrowDown
},
arrow_options(id) {
this.options.forEach(item => {
if (item.id == id) {
this.selectedOption = item.name
} else if (id == 2) {
this.postdata.part = "part2"
this.part2=true
this.grizzly = false
this.getList()
2023-12-08 16:34:38 +08:00
}
else if (id == 3) {
this.postdata.part = "part3"
this.part2=true
this.grizzly = false
this.getList()
}else {
2023-12-08 15:26:16 +08:00
this.postdata.part = "part1"
this.part2= false
this.grizzly = true
this.getList()
}
})
},
2023-12-08 16:34:38 +08:00
clicking(target, type) {
if (target.active === type) {
this.$set(target, 'active', null);
} else {
this.$set(target, 'active', type);
}
},
2023-12-05 16:45:28 +08:00
radioGroupChange() {
}
}
}
</script>
<style lang="scss" scoped>
.view_template {
width: 100%;
background: linear-gradient(183deg, #F0F6FF 0%, #FAFAFA 100%);
}
.view_body {
height: 89vh;
width: 91.3%;
margin: 0 auto;
border-radius: 0rpx 0rpx 0rpx 0rpx;
// padding: 32rpx;
.view_search {
height: 88rpx;
margin: 0 auto;
line-height: 88rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
}
.view_button {
border-radius: 12rpx 12rpx 12rpx 12rpx;
padding: 12rpx 24rpx;
font-size: 20rpx;
font-weight: 500;
color: rgba(101, 116, 140, 0.8);
}
.view_buttons {
background: #2D7CE6;
border-radius: 12rpx 12rpx 12rpx 12rpx;
padding: 12rpx 24rpx;
font-size: 20rpx;
font-weight: 500;
color: #FFFFFF;
}
.view_fff {
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
}
.view_Do {
display: flex;
justify-content: space-between;
padding: 28rpx 0rpx;
margin: 0 28rpx;
border-bottom: 2rpx solid #F2F2F2;
}
.view_pushbutton {
display: flex;
}
.grizzly {
background: #E1EEFF;
border-radius: 8rpx 8rpx 8rpx 8rpx;
font-size: 20rpx;
font-weight: 500;
color: #2D7CE6;
padding: 6rpx 18rpx;
margin-left: 12rpx;
}
.yellow {
background: #FFEBD7;
border-radius: 8rpx 8rpx 8rpx 8rpx;
font-size: 20rpx;
font-weight: 500;
color: #FB9734;
padding: 6rpx 18rpx;
margin-left: 12rpx;
}
.view_English {
display: flex;
font-size: 24rpx;
font-weight: 500;
color: #2E4975;
}
.active {
z-index: 9;
background:#2D7CE6;
color: #fff;
}
.slander {
height: 352rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
}
.slander_behavior {
display: flex;
justify-content: space-between;
padding: 20rpx 0rpx;
border-bottom: 2rpx solid #F2F2F2;
}
.slander_for {
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
padding: 0 30rpx;
}
.unite {
2023-12-08 16:34:38 +08:00
width: 270rpx;
2023-12-05 16:45:28 +08:00
font-size: 28rpx;
font-family: 'PingFang';
font-weight: 800;
color: #2E4975;
margin: 26rpx 0rpx;
}
.slander_an {
background: #F4F4F4;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-size: 20rpx;
font-family: 'PingFang';
font-weight: 500;
color: rgba(101, 116, 140, 0.8);
padding: 10rpx;
margin-right: 15rpx;
}
.pd_icon {
margin-left: 8rpx;
}
2023-12-08 16:34:38 +08:00
.highlighted {
2023-12-05 16:45:28 +08:00
background: rgba(45, 124, 230, 0.1);
border-radius: 12rpx 12rpx 12rpx 12rpx;
color: #2D7CE6;
}
.part {
font-size: 28rpx;
font-family: 'PingFang';
font-weight: 500;
color: #2E4975;
}
.part2 {
font-size: 28rpx;
font-family: 'PingFang';
font-weight: 500;
color: #2E4975;
margin-left: 20rpx;
}
.swiper {
2023-12-05 21:18:18 +08:00
height: 80%;
2023-12-05 16:45:28 +08:00
}
swiper-item {
overflow: scroll;
}
.slander_left {
width: 328rpx;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden
}
2023-12-08 15:26:16 +08:00
.view_left {
display: flex;
justify-content: left;
margin-top: 20rpx;
}
.view_inuygs {
display: flex;
justify-content: space-between;
align-items: center;
}
.view_left_pd {
position: relative;
padding: 12rpx 32rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
margin-right: 15rpx;
font-size: 24rpx;
color: #072F5A;
}
.unite {
2023-12-08 16:34:38 +08:00
width: 290rpx;
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;
-webkit-line-clamp: 1;
2023-12-08 15:26:16 +08:00
font-size: 28rpx;
font-family: 'PingFang';
font-weight: 800;
color: #2E4975;
margin-right: 20rpx;
}
.pull_Down {
position: absolute;
2023-12-08 16:34:38 +08:00
bottom: -184rpx;
2023-12-08 15:26:16 +08:00
left: 50%;
margin-left: -79rpx;
box-shadow: 0rpx 4rpx 10rpx 0rpx rgba(0, 0, 0, 0.25);
border-radius: 20rpx 20rpx 20rpx 20rpx;
background: #FFFFFF;
border-bottom: 2rpx solid #F2F2F2;
view {
padding: 15rpx 50rpx;
border-bottom: 2rpx solid #F2F2F2;
}
}
.pull_Down view:last-child {
border: none;
}
.header_part {
display: flex;
align-items: center;
margin: 26rpx 0rpx;
}
.slander_an {
padding: 6rpx 18rpx;
background: #fff;
border-radius: 12rpx 12rpx 12rpx 12rpx;
margin-left: 12rpx;
color: #65748C;
}
.slander_for {
background-color: #fff;
border-radius: 20rpx 20rpx 20rpx 20rpx;
}
.slander_of {
display: flex;
align-items: center;
justify-content: space-between;
padding: 24rpx 0;
margin: 0 20rpx;
border-bottom: 2rpx solid #F2F2F2;
}
.textual {
width: 290rpx;
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;
-webkit-line-clamp: 2;
}
.bottom_one {
display: flex;
view {
padding: 6rpx 18rpx;
background: #F4F4F4;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-size: 20rpx;
font-weight: 500;
color: rgba(101,116,140,0.8);
margin-left: 15rpx;
}
2023-12-08 16:34:38 +08:00
.active {
background: rgba(45, 124, 230, 0.1);
color: #2D7CE6;
}
2023-12-08 15:26:16 +08:00
}
.pull_down{
display: flex;
justify-content: space-between;
width: 100rpx;
font-size: 24rpx;
}
2023-12-08 16:34:38 +08:00
2023-12-05 16:45:28 +08:00
}
.footer {
2023-12-08 15:26:16 +08:00
position: fixed;
bottom: 0;
2023-12-05 16:45:28 +08:00
width: 100%;
background: #FFFFFF;
box-shadow: 0rpx -6rpx 14rpx 0rpx rgba(177, 177, 177, 0.25);
padding: 30rpx 32rpx;
}
2023-12-05 21:18:18 +08:00
.footer2{
2023-12-08 15:26:16 +08:00
position: fixed;
bottom: 0;
2023-12-05 21:18:18 +08:00
width: 100%;
background: #FFFFFF;
box-shadow: 0rpx -6rpx 14rpx 0rpx rgba(177, 177, 177, 0.25);
padding: 30rpx 32rpx;
margin-top: 25rpx;
}
2023-12-05 16:45:28 +08:00
.footer_button {
display: flex;
justify-content: space-between;
}
.button_ky {
padding: 24rpx 52rpx;
border-radius: 104rpx 104rpx 104rpx 104rpx;
color: #2E4975;
background-color: #FAFAFA;
}
.button_andadd {
background: linear-gradient(180deg, #74AFFF 0%, #2D7CE6 100%);
border-radius: 104rpx 104rpx 104rpx 104rpx;
padding: 26rpx 125rpx;
color: #fff;
}
.button_show {
width: 100%;
background: linear-gradient(180deg, #74AFFF 0%, #2D7CE6 100%);
border-radius: 104rpx 104rpx 104rpx 104rpx;
padding: 26rpx 125rpx;
color: #fff;
text-align: center;
}
.view_fff_bottom {
margin-bottom: 54rpx;
}
.Task {
font-size: 24rpx;
font-weight: 500;
color: #2E4975;
}
.view_left {
display: flex;
justify-content: left;
margin-top: 20rpx;
}
.view_left_pd {
position: relative;
padding: 12rpx 32rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
margin-right: 15rpx;
font-size: 24rpx;
}
.pull_Down {
position: absolute;
bottom: -130rpx;
left: 50%;
margin-left: -79rpx;
box-shadow: 0rpx 4rpx 10rpx 0rpx rgba(0,0,0,0.25);
border-radius: 20rpx 20rpx 20rpx 20rpx;
background: #FFFFFF;
border-bottom: 2rpx solid #F2F2F2;
view {
padding: 15rpx 50rpx;
border-bottom: 2rpx solid #F2F2F2;
}
}
.pull_DownTow{
width: 150rpx;
position: absolute;
bottom: -133rpx;
left: 50%;
margin-left: -72rpx;
box-shadow: 0rpx 4rpx 10rpx 0rpx rgba(0,0,0,0.25);
border-radius: 20rpx 20rpx 20rpx 20rpx;
background: #FFFFFF;
border-bottom: 2rpx solid #F2F2F2;
text-align: center;
view {
padding: 15rpx 0rpx;
border-bottom: 2rpx solid #F2F2F2;
}
}
.pull_Down view:last-child {
border: none;
}
.sl_body {
background-color: #fff;
}
.footer_button_right {
padding: 24rpx 62rpx;
border: 1px solid #2D7CE6;
border-radius: 104rpx 104rpx 104rpx 104rpx;
color: #2D7CE6;
}
</style>