smartmeter-app/pages_teacher/teacher_teachers/teacher_writeadd.vue
2023-12-09 18:15:29 +08:00

1217 lines
29 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="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">
<u-search v-model="searchKeyword"
:show-action="false"
:animation="true"
bg-color="#fff"
placeholder="搜索相关内容..."
color="#3E97FF"
@input="searchs()"></u-search>
</view>
<!-- <view class="serchbox">
<view class="serchimg">
<image src="https://file.langsi.online/yasiimg/web/static/uVMACkynkipOxuTYDqm0">
</image>
</view>
<input type="text"
v-model="searchKeyword"
placeholder="搜索相关内容..."
class="input"
placeholder-style="color:#C7CDD3"
@input="search()">
</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">
<!-- 口语 -->
<swiper-item style="height: 300rpx;">
<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 slanderpart1" v-if="selectedOption=='Part1'"
:key="index">
<view class="view_inuygs">
<view class="header_part">
<view class="unite">{{ item.label }}</view>
</view>
<view class="bottom_one"
v-if="item.list.length <= 1"
v-for="(items, indexs) in item.list"
:key='indexs'>
<view :class="{ 'active': items.ischuanti === true }"
@click="updateSelectspeak(items, 'ischuanti', indexs)">串题</view>
<view :class="{ 'active': items.isgendu === true }"
@click="updateSelectspeak(items, 'isgendu', indexs)">跟读</view>
<view :class="{ 'active': items.ismk === true }"
@click="updateSelectspeak(items, 'ismk', indexs)">模考</view>
</view>
</view>
<!-- part1-->
<view class="slander_for"
v-if="item.list.length > 1">
<view class="slander_of"
v-for="(items, indexs) in item.list"
:key='indexs'>
<view class="textual" v-html="highlightSearch( items.topicEn)">
</view>
<view class="bottom_one">
<view :class="{ 'active': items.ischuanti === true }"
@click="updateSelectspeak(items, 'ischuanti', indexs)">串题</view>
<view :class="{ 'active': items.isgendu === true }"
@click="updateSelectspeak(items, 'isgendu', indexs)">跟读</view>
<view :class="{ 'active': items.ismk === true }"
@click="updateSelectspeak(items, 'ismk', indexs)">模考</view>
</view>
</view>
</view>
<!-- part2-->
<view class="slander_for"
v-if="item.list.length <= 1">
<view class="slander_of"
v-for="(items, indexs) in item.list"
:key='indexs'>
<view class="textual2" v-html="highlightSearch( items.topicEn)">
</view>
</view>
</view>
</view>
<!-- part2 -->
<view v-for="(item, index) in slanderpart2" v-if="selectedOption=='Part2'"
:key="index">
<view class="view_inuygs">
<view class="header_part">
<view class="unite">{{ item.label }}</view>
</view>
<view class="bottom_one"
v-if="item.list.length <= 1"
v-for="(items, indexs) in item.list"
:key='indexs'>
<view :class="{ 'active': items.ischuanti === true }"
@click="updateSelectspeak(items, 'ischuanti', indexs)">串题</view>
<view :class="{ 'active': items.isgendu === true }"
@click="updateSelectspeak(items, 'isgendu', indexs)">跟读</view>
<view :class="{ 'active': items.ismk === true }"
@click="updateSelectspeak(items, 'ismk', indexs)">模考</view>
</view>
</view>
<!-- part1-->
<view class="slander_for"
v-if="item.list.length > 1">
<view class="slander_of"
v-for="(items, indexs) in item.list"
:key='indexs'>
<view class="textual" v-html="highlightSearch( items.topicEn)">
</view>
<view class="bottom_one">
<view :class="{ 'active': items.ischuanti === true }"
@click="updateSelectspeak(items, 'ischuanti', indexs)">串题</view>
<view :class="{ 'active': items.isgendu === true }"
@click="updateSelectspeak(items, 'isgendu', indexs)">跟读</view>
<view :class="{ 'active': items.ismk === true }"
@click="updateSelectspeak(items, 'ismk', indexs)">模考</view>
</view>
</view>
</view>
<!-- part2-->
<view class="slander_for"
v-if="item.list.length <= 1">
<view class="slander_of"
v-for="(items, indexs) in item.list"
:key='indexs'>
<view class="textual2" v-html="highlightSearch( items.topicEn)">
</view>
</view>
</view>
</view>
<!-- part3 -->
<view v-for="(item, index) in slanderpart3" v-if="selectedOption=='Part3'"
:key="index">
<view class="view_inuygs">
<view class="header_part">
<view class="unite">{{ item.label }}</view>
</view>
<view class="bottom_one"
v-if="item.list.length <= 1"
v-for="(items, indexs) in item.list"
:key='indexs'>
<view :class="{ 'active': items.ischuanti === true }"
@click="updateSelectspeak(items, 'ischuanti', indexs)">串题</view>
<view :class="{ 'active': items.isgendu === true }"
@click="updateSelectspeak(items, 'isgendu', indexs)">跟读</view>
<view :class="{ 'active': items.ismk === true }"
@click="updateSelectspeak(items, 'ismk', indexs)">模考</view>
</view>
</view>
<!-- part1-->
<view class="slander_for"
v-if="item.list.length > 1">
<view class="slander_of"
v-for="(items, indexs) in item.list"
:key='indexs'>
<view class="textual" v-html="highlightSearch( items.topicEn)">
</view>
<view class="bottom_one">
<view :class="{ 'active': items.ischuanti === true }"
@click="updateSelectspeak(items, 'ischuanti', indexs)">串题</view>
<view :class="{ 'active': items.isgendu === true }"
@click="updateSelectspeak(items, 'isgendu', indexs)">跟读</view>
<view :class="{ 'active': items.ismk === true }"
@click="updateSelectspeak(items, 'ismk', indexs)">模考</view>
</view>
</view>
</view>
<!-- part2-->
<view class="slander_for"
v-if="item.list.length <= 1">
<view class="slander_of"
v-for="(items, indexs) in item.list"
:key='indexs'>
<view class="textual2" v-html="highlightSearch( items.topicEn)">
</view>
</view>
</view>
</view>
</view>
</swiper-item>
<!-- 写作 -->
<swiper-item>
<compose ref="compose"></compose>
</swiper-item>
<!--听力 -->
<swiper-item>
<audiology ref="audiology"></audiology>
</swiper-item>
<!-- 阅读 -->
<swiper-item>
<reading ref="reading"></reading>
</swiper-item>
</swiper>
</view>
<!-- 底部按钮 -->
<view :class="search == true ? 'footer2' : 'footer'"
v-if="totalLength != 0">
<view class="footer_button" @click="submessage()">
<view :class="search == true ? 'button_andadd' : 'button_show'">确定添加({{ totalLength }}</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'
import slander from './components/slander.vue'
import compose from './components/compose.vue'
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: [],
// 口语
postdata: {
"key": "",
"pageNum": 0,
"mode": "home",
"part": "part1",
"order": "0",
"type": "",
"isStudy": 0,
"isFavorite": 0,
"isEvlua": 0,
"isFun": 0,
"level": 0,
"isNew": 0
},
slanderpart1: [],
originslanderpart1: [],
slanderpart2: [],
originslanderpart2: [],
slanderpart3: [],
originslanderpart3: [],
part2: false,
grizzly: true,
categorize: '分类',
// 下拉框的v-if布尔值
selectedOption: 'Part1',
arrow: false,
arrowDown: false,
options: [{
id: 1,
name: 'Part1'
},
{
id: 2,
name: 'Part2'
},
{
id: 3,
name: 'Part3'
}
],
totalLength: 0,
searchKeyword: '',
userId: null,
selectspeak: [],
selectwrite: [],
selectlisten: [],
selectread: []
}
},
components: {
audiology,
reading,
compose
},
onShow() {
this.getList()
},
onLoad(option) {
const dataToSave =JSON.parse(decodeURIComponent(option.dataToSave))
this.selectspeak=dataToSave.selectspeak
this.selectwrite=dataToSave.selectwrite
this.selectlisten=dataToSave.selectlisten
this.selectread=dataToSave.selectread
this.$refs.compose.updatawrite(this.selectwrite)
this.$refs.audiology.updatawrite(this.selectlisten)
this.$refs.reading.updatawrite(this.selectread)
this.calculateTotalLength()
},
methods: {
updatawrite(data){
this.selectwrite=data
console.log(this.selectwrite, ' this.selectwrite this.selectwrite');
this.calculateTotalLength()
},
updataread(data){
this.selectread=data
console.log(this.selectread, ' this.selectwrite this.selectwrite');
this.calculateTotalLength()
},
updatalisten(data){
this.selectlisten=data
console.log(this.selectlisten, ' this.selectwrite this.selectwrite');
this.calculateTotalLength()
},
submessage(){
const dataToSave = {
selectspeak: this.selectspeak,
selectwrite: this.selectwrite,
selectlisten: this.selectlisten,
selectread: this.selectread
};
// 将数据保存在本地缓存中
uni.setStorageSync('selectforwork', dataToSave);
uni.navigateBack({
delta: 1, // Number of pages to go back
success(res) {
console.log(res);
},
fail(err) {
console.error(err);
}
});
},
fuwei() {
// this.slander = JSON.parse(JSON.stringify(this.originslanderpart1));
// this.selectedIds.forEach(selectedItem => {
// const index = this.stulist.findIndex(item => item.id === selectedItem.id);
// if (index !== -1) {
// this.$set(this.stulist, index, { ...this.stulist[index], isSelected: true });
// }
// });
},
searchs() {
if(this.selectedOption=='Part1'){
const filteredSlander = [];
// 将搜索关键字转换为小写,使搜索不区分大小写
const searchKeywordLowerCase = this.searchKeyword.toLowerCase();
// 遍历原始数据
for (const item of this.originslanderpart1) {
const filteredList = item.list.filter(subItem => {
// 将目标字符串转换为小写,使匹配不区分大小写
const introductionLowerCase = subItem.introduction.toLowerCase();
const topicEnLowerCase = subItem.topicEn.toLowerCase();
// 检查 introduction 或 topicEn 是否包含小写的 searchKeyword
return (
introductionLowerCase.includes(searchKeywordLowerCase) ||
topicEnLowerCase.includes(searchKeywordLowerCase)
);
});
// 如果有匹配项,添加到 filteredSlander 中
if (filteredList.length > 0) {
filteredSlander.push({
label: item.label,
list: filteredList
});
}
}
// 更新 this.slander
this.slanderpart1 = filteredSlander;
}else if(this.selectedOption=='Part2'){
const filteredSlander = [];
// 将搜索关键字转换为小写,使搜索不区分大小写
const searchKeywordLowerCase = this.searchKeyword.toLowerCase();
// 遍历原始数据
for (const item of this.originslanderpart2) {
const filteredList = item.list.filter(subItem => {
// 将目标字符串转换为小写,使匹配不区分大小写
const introductionLowerCase = subItem.introduction.toLowerCase();
const topicEnLowerCase = subItem.topicEn.toLowerCase();
// 检查 introduction 或 topicEn 是否包含小写的 searchKeyword
return (
introductionLowerCase.includes(searchKeywordLowerCase) ||
topicEnLowerCase.includes(searchKeywordLowerCase)
);
});
// 如果有匹配项,添加到 filteredSlander 中
if (filteredList.length > 0) {
filteredSlander.push({
label: item.label,
list: filteredList
});
}
}
// 更新 this.slander
this.slanderpart2 = filteredSlander;
}else if(this.selectedOption=='Part3'){
const filteredSlander = [];
// 将搜索关键字转换为小写,使搜索不区分大小写
const searchKeywordLowerCase = this.searchKeyword.toLowerCase();
// 遍历原始数据
for (const item of this.originslanderpart3) {
const filteredList = item.list.filter(subItem => {
// 将目标字符串转换为小写,使匹配不区分大小写
const introductionLowerCase = subItem.introduction.toLowerCase();
const topicEnLowerCase = subItem.topicEn.toLowerCase();
// 检查 introduction 或 topicEn 是否包含小写的 searchKeyword
return (
introductionLowerCase.includes(searchKeywordLowerCase) ||
topicEnLowerCase.includes(searchKeywordLowerCase)
);
});
// 如果有匹配项,添加到 filteredSlander 中
if (filteredList.length > 0) {
filteredSlander.push({
label: item.label,
list: filteredList
});
}
}
// 更新 this.slander
this.slanderpart3 = filteredSlander;
}
},
highlightSearch(name) {
// 使用正则表达式替换匹配到的 searchKeyword 为带有颜色的文字
if (this.searchKeyword) {
const regex = new RegExp(this.searchKeyword, 'gi');
return name.replace(regex, match => `<span style="color: #2D7CE6 ;">${match}</span>`);
}
return name;
},
calculateTotalLength() {
this.totalLength = this.selectspeak.length + this.selectwrite.length + this.selectlisten.length + this.selectread.length;
},
calculateTotal(array) {
return array.reduce((total, item) => {
// 假设每个元素都有一个名为value的属性
return total + (item.value || 0); // 如果value为undefined将其视为0
}, 0);
},
updateSelectspeak(items, type, indexs) {
// 切换slander数组中的值
items[type] = !items[type];
// 获取对应的speakingType值
const speakingTypeValue = this.getSpeakingTypeValue(type);
// 检查selectspeak数组中是否已存在对应的对象
const existingSelectspeak = this.selectspeak.find(select => select.id === items.id);
if (existingSelectspeak) {
// 如果已存在在speakingType中添加新的值或移除对应的值
if (items[type]) {
// 如果选中了该项请添加speakingType
if (!existingSelectspeak.speakingType.includes(speakingTypeValue)) {
existingSelectspeak.speakingType.push(speakingTypeValue);
}
} else {
// 如果取消选中该项请删除speakingType
existingSelectspeak.speakingType = existingSelectspeak.speakingType
.filter(value => value !== speakingTypeValue);
// 如果speakingType为空则清除selectspeak项
if (existingSelectspeak.speakingType.length === 0) {
const indexToRemove = this.selectspeak.indexOf(existingSelectspeak);
this.selectspeak.splice(indexToRemove, 1);
}
}
} else {
// 如果不存在创建新的对象并添加到selectspeak数组中
if (items[type]) {
this.selectspeak.push({
// part: indexs,
part: items.part,
topicEn: items.topicEn,
id: items.id,
introduction: items.introduction,
speakingType: [speakingTypeValue]
});
}
}
this.calculateTotalLength()
console.log(this.selectspeak, 'selectspeakselectspeak');
},
getSpeakingTypeValue(type) {
// 返回对应的数字值
switch (type) {
case 'ischuanti':
return '1';
case 'isgendu':
return '2';
case 'ismk':
return '3';
default:
return '';
}
},
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
}
},
getList() {
let postdata= {
"key": "",
"pageNum": 0,
"mode": "home",
"part": "part1",
"order": "0",
"type": "",
"isStudy": 0,
"isFavorite": 0,
"isEvlua": 0,
"isFun": 0,
"level": 0,
"isNew": 0
}
this.$u.post('https://api.admin-v2.langsi.online/admin-api/speaking/topic/home/list', postdata).then(res => {
if(res.code==0){
this.getpart2()
}
let keyArr = Object.keys(res.data)
let valueArr = Object.values(res.data)
this.slanderpart1 = keyArr.map((item, index) => {
return {
label: item,
list: valueArr[index]
}
})
this.originslanderpart1 = keyArr.map((item, index) => {
return {
label: item,
list: valueArr[index]
}
})
this.originslanderpart1part1 = JSON.parse(JSON.stringify(this.originslanderpart1part1));
let json = JSON.stringify(res.data)
// console.log(json);
})
},
getpart2(){
let postdata1= {
"key": "",
"pageNum": 0,
"mode": "home",
"part": "part2",
"order": "0",
"type": "",
"isStudy": 0,
"isFavorite": 0,
"isEvlua": 0,
"isFun": 0,
"level": 0,
"isNew": 0
}
this.$u.post('https://api.admin-v2.langsi.online/admin-api/speaking/topic/home/list', postdata1).then(res => {
if(res.code==0){
this.getpart3()
}
let keyArr = Object.keys(res.data)
let valueArr = Object.values(res.data)
this.slanderpart2 = keyArr.map((item, index) => {
return {
label: item,
list: valueArr[index]
}
})
this.originslanderpart2 = keyArr.map((item, index) => {
return {
label: item,
list: valueArr[index]
}
})
this.originslanderpart2 = JSON.parse(JSON.stringify(this.originslanderpart2));
// let json = JSON.stringify(res.data)
})
},
getpart3(){
let postdata2= {
"key": "",
"pageNum": 0,
"mode": "home",
"part": "part3",
"order": "0",
"type": "",
"isStudy": 0,
"isFavorite": 0,
"isEvlua": 0,
"isFun": 0,
"level": 0,
"isNew": 0
}
this.$u.post('https://api.admin-v2.langsi.online/admin-api/speaking/topic/home/list', postdata2).then(res => {
let keyArr = Object.keys(res.data)
let valueArr = Object.values(res.data)
this.slanderpart3 = keyArr.map((item, index) => {
return {
label: item,
list: valueArr[index]
}
})
this.originslanderpart3 = keyArr.map((item, index) => {
return {
label: item,
list: valueArr[index]
}
})
this.originslanderpart3 = JSON.parse(JSON.stringify(this.originslanderpart3));
let json = JSON.stringify(res.data)
// console.log(json);
})
},
//下拉显示下拉框
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
}
else if (id == 3) {
this.postdata.part = "part3"
this.part2 = true
this.grizzly = false
} else {
this.postdata.part = "part1"
this.part2 = false
this.grizzly = true
}
})
},
clicking(target, type) {
},
radioGroupChange() {
}
}
}
</script>
<style lang="scss" scoped>
.view_template {
width: 100%;
background: linear-gradient(183deg, #F0F6FF 0%, #FAFAFA 100%);
}
.serchbox {
padding: 0 32rpx;
display: flex;
flex-wrap: nowrap;
margin-top: 30rpx;
align-items: center;
width: 686rpx;
height: 88rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
.serchimg {
width: 30.51rpx;
height: 32rpx;
margin-right: 24rpx;
}
.input {
margin: 0 auto;
width: 568rpx;
height: 88rpx;
border-radius: 30rpx;
// background-color: #f5f8fc;
// display: flex;
// justify-content: center;
// align-items: center;
// text-align: center;
font-size: 28rpx;
font-family: Source Han Sans CN, Source Han Sans CN-Light;
font-weight: 300;
text-align: left;
color: #a7b9cd;
letter-spacing: 1.2rpx;
line-height: 36rpx;
// padding: 0 100rpx;
// padding-right: 135rpx;
box-sizing: border-box;
}
}
.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 {
width: 270rpx;
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;
}
.highlighted {
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 {
height: 80%;
}
swiper-item {
overflow: scroll;
}
.slander_left {
width: 328rpx;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden
}
.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 {
width: 290rpx;
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;
-webkit-line-clamp: 1;
font-size: 28rpx;
font-family: 'PingFang';
font-weight: 800;
color: #2E4975;
margin-right: 20rpx;
}
.pull_Down {
position: absolute;
bottom: -184rpx;
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;
}
.active {
background: rgba(45, 124, 230, 0.1);
color: #2D7CE6;
}
}
.pull_down {
display: flex;
justify-content: space-between;
width: 100rpx;
font-size: 24rpx;
}
}
.footer {
position: fixed;
bottom: 0;
width: 100%;
background: #FFFFFF;
box-shadow: 0rpx -6rpx 14rpx 0rpx rgba(177, 177, 177, 0.25);
padding: 30rpx 32rpx;
}
.footer2 {
position: fixed;
bottom: 0;
width: 100%;
background: #FFFFFF;
box-shadow: 0rpx -6rpx 14rpx 0rpx rgba(177, 177, 177, 0.25);
padding: 30rpx 32rpx;
margin-top: 25rpx;
}
.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>