1***@qq.com
1***@qq.com
  • 发布:2022-04-28 16:59
  • 更新:2022-04-28 20:38
  • 阅读:1256

【报Bug】uni.setStorageSync小程序端无效

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.4.7

第三方开发者工具版本号: 1.05.2203070

基础库版本号: 2.17

项目创建方式: HBuilderX

示例代码:
<template> <div class="component-subject-score"> <div class="form"> <div class="form-item" > <div class="label flex-row-center">首选科目<span class="tips">(二选一)</span></div> <div class="check-box-group" > <div class="check-box" v-for="(item, index) in firstSubjectRequirement" key="index" @click="toggleRequirement(item.value, firstRequirement, 1)" class="{'active': inList(firstRequirement, item.value)}" >
{{item.name}}
</div>
</div>
</div>
<div class="form-item">
<div class="label flex-row-center">再选科目<span class="tips">(四选二)</span></div>
<div class="check-box-group">
<div class="check-box "
v-for="(item, index) in secondSubjectRequirement" key="index" @click="toggleRequirement(item.value, secondRequirement, 2)"

class="{'active': inList(secondRequirement, item.value)}"

{{item.name}}
</div>
</div>
</div>
<div class="btn-wrap" v-if="!firstRequirementLength">
<div class="btn " >确定</div>
</div>
<div class="btn-wrap" v-else>
<div class="btn blue" @click="submit">确定</div>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
subjectTypeList: {},
firstSubjectRequirement: [],
secondSubjectRequirement: [],
firstRequirement: [],
secondRequirement: [],
}
},
computed: {
firstRequirementLength() {
/ 是否选取完整 /
return this.firstRequirement.length && this.secondRequirement.length==2
}
},
onLoad() {
let temp = uni.getStorageSync('student-list') || '{}'
temp = JSON.parse(temp)
let first = new Array()
if(temp.firstSubject) {
first.push(temp.firstSubject)
}
this.firstRequirement = first
this.secondRequirement = temp.secondSubject || []
this.querySubjectType()
},
methods: {
toggleRequirement(val, list, max) {
let index = list.findIndex(item => item == val)
if (index != -1) {
list.splice(index,1)
return
}
if (list.length >= max) {
// this.secondRequirement = this.secondRequirement.slice(0,1)
list.pop()
}
list.push(val)
},
inList(list, val) {
let index = list.findIndex(item => item == val)
if (index != -1) {
return true
}
return false
},
async querySubjectType() {
const {
data,
code
} = await this.$api.request({
data: {
},
method: 'GET',
})
if (code == 200) {
this.subjectTypeList = data || {}
this.firstSubjectRequirement = this.subjectTypeList.firstSubjectRequirement || []
this.secondSubjectRequirement = this.subjectTypeList.secondSubjectRequirement || []
}

    },  
    submit() {  
        console.log('submit')  
        let temp = uni.getStorageSync('student-list') || '{}'  
        temp = JSON.parse(temp)  
        temp.firstSubject = this.firstRequirement[0]  
        temp.secondSubject = this.secondRequirement  
        // #ifdef  MP-WEIXIN  
            wx.setStorageSync('student-list',JSON.stringify(temp))  
        // #endif  
        // #ifndef  MP-WEIXIN  
            uni.setStorageSync('student-list',JSON.stringify(temp))  
        // #endif  
        // uni.navigateTo({  
        //  url:'./page'  
        // })  

// this.toPage(/pages/student/grade,1)
uni.navigateBack({
delta:1
})
}

}  

}
</script>
<style lang="scss" scoped>
.component-subject-score {
padding-bottom: 100rpx;
.txt-center {
text-align: center;
}
.form {
margin: 36rpx 24rpx;

    .form-item {  
        padding-bottom: 40rpx;  
        .label {  
            font-size: 32rpx;  
            font-weight: bold;  
            line-height: 44rpx;  
            color: #333333;  
            margin-bottom: 24rpx;  
            .tips {  
                font-size: 26rpx;  
                font-weight: bold;  
                line-height: 36rpx;  
                color: #FF6060;  
            }  
        }  
        .input {  
            padding: 20rpx;  
            border-radius: 10rpx;  
            background: #F6F7F9;  
            font-size: 28rpx;  
            line-height: 40rpx;  
            color: #333333;  

        }  
    }  
    .btn-wrap {  
        margin-top: 20rpx;  
        .btn {  
            margin: 0 auto 36rpx;  
            height: 92rpx;  
            background: rgba(153, 153, 153, 0.5);  
            border-radius: 20rpx;  
            font-size: 28rpx;  
            line-height: 92rpx;  
            color: #FFFFFF;  
            text-align: center;  
            &.blue {  
                background: rgba(53, 134, 255, 1);  
            }  
            &.orange {  
                background: rgba(254, 173, 51, 1);  
            }  
        }  
    }  
}  
.check-box-group {  
    display: flex;  
    flex-direction: row;  
    flex-wrap: wrap;  
    .check-box {  
        margin-right: 36rpx;  
        margin-bottom: 20rpx;  
        padding: 20rpx 32rpx;  
        background: #FFFFFF;  
        border-radius: 10rpx;  
        font-size: 28rpx;  
        line-height: 40rpx;  
        color: #333333;  
        &:last-child {  
            margin-left: 0rpx;  
        }  
        &.active {  
            color: rgba(255, 255, 255, 1);  
            background: rgba(53, 134, 255, 1);  
        }  
    }  
}  

}
</style>

<template>
<div class="page-grade">
<div class="tabBar">
<div class="item" v-for="(item, index) in tabList" :key="index"
@click="setTab(index)" :class="{'active': tabIndex==index}">
{{ item }}
</div>
</div>
<div class="tab-score" v-if="tabIndex==0">
<div class="score-tabBar">
<div class="item" v-for="(item, index) in scoreTabList" :key="index"
@click="scoreTabIndex=index,scoreForm.ifToChoose=index==0?false: true" :class="{'active': scoreTabIndex==index}">
{{ item }}
</div>
</div>
<div class="score-form" v-if="scoreTabIndex==0">
<div class="form-item one">
<div class="label">学期选择</div>
<div class="val select" @click="showTermPicker=true" v-if="terms.length">
{{ termSelected[0] || '暂无'}}
</div>
</div>
<div class="form-item one">
<div class="label">考试时间</div>
<div class="val select" @click="showTermPicker2=true">
{{ termSelected2[0] || '暂无'}}
</div>
</div>
<div class="form-item one">
<div class="label">考试类型</div>
<div class="val select" @click="showTermPicker3=true">
{{ termSelected3[0] || '暂无'}}
</div>
</div>
<div class="form-item one">
<div class="label">考试名称</div>
<div class="val">
<div class="input" v-if="scoreForm.examType=='其他'">
<input type="text" v-model="scoreForm.name" placeholder="请输入考试名称" />
</div>
<div class="disabled" v-else>{{ scoreForm.name || '暂无' }}</div>
</div>
</div>

            <div class="form-item" v-for="(i,idx) in scoreForm.scoreReqs" :key="idx">  
                <div class="label">{{ i.subject }}</div>  
                <div class="val">  
                    <div class="input">  
                        <input type="number" v-model="i.score" @blur="formatNumber(i)"/>  
                    </div>  
                </div>  
              <image class="add-icon" :src="'/static/pages/student/icon_add@2x.png' | serverImg" @click="toEdit(i.subject,idx)" alt=""></image>  
            </div>  
            <div class="form-btn" :class="{'active': isComplete}" @click="submit">确认</div>  
        </div>  
        <div class="score-form" v-if="scoreTabIndex==1">  
            <div class="form-item one">  
                <div class="label">学期选择</div>  
                <div class="val select" @click="showTermPicker=true"  v-if="terms.length">  
                    {{ termSelected[0] || '暂无'}}  
                </div>  
            </div>  
            <div class="form-item one">  
                <div class="label">科目选择</div>  
                <div class="val" @click="toEdit()">  
                    {{ subjectSelect || '暂无' }}  
                  <image class="more-icon" :src="'/static/pages/student/icon_more_def@2x.png' | serverImg" alt=""></image>  
                </div>  
            </div>  

            <div class="form-item one">  
                <div class="label">考试时间</div>  
                <div class="val select" @click="showTermPicker2=true">  
                    {{ termSelected2[0] || '暂无'}}  
                </div>  
            </div>  
            <div class="form-item one">  
                <div class="label">考试类型</div>  
                <div class="val select" @click="showTermPicker3=true">  
                    {{ termSelected3[0] || '暂无'}}  
                </div>  
            </div>  

            <div class="form-item one">  
                <div class="label">考试名称</div>  
                <div class="val">  
                    <div class="input" v-if="scoreForm.examType=='其他'">  
                        <input type="text" v-model="scoreForm.name" placeholder="请输入考试名称" />  
                    </div>  
                    <div class="disabled" v-else>{{ scoreForm.name || '暂无' }}</div>  
                </div>  
            </div>  

            <block v-for="(i,idx) in scoreForm.scoreReqs" :key="idx">  
                <div class="form-item" v-if="showSubject(i.subject)">  
                    <div class="label">{{ i.subject }}</div>  
                    <div class="val">  
                        <div class="input">  
                            <input type="number" v-model="i.score" @blur="formatNumber(i)"/>  
                        </div>  
                    </div>  
                  <image class="add-icon" :src="'/static/pages/student/icon_add@2x.png' | serverImg" @click="toEdit(i.subject)" alt=""></image>  
                </div>  
            </block>  

            <div class="form-btn" :class="{'active': isComplete}" @click="submit">确认</div>  
        </div>  
    </div>  
    <div class="tab-grade" v-if="tabIndex==1">  
        <div class="no-data" v-if="terms2.length<=1">  
            <div class="desc">  
              <image class="noData-bg" :src="'/static/pages/student/quesheng@2x.png' | serverImg" alt=""></image>  
                <div>暂无成绩数据</div>  
            </div>  
            <div class="btn" @click="tabIndex=0">前往填写</div>  
        </div>  
        <block v-else>  
            <div class="grade-result">  
                <div class="term-select">  
                    <div class="label">学期选择</div>  
                    <div class="select" @click="getTerm" v-if="terms.length">  
                        {{ termSelected4[0] || '暂无'}}  
                    </div>  
                </div>  
                <echarts class="term-echarts" :formData="echartsRecord" v-show="!showSelect"/>  
            </div>  
            <div class="grade-list">  
                <div class="item" v-for="(item, index) in subjectRecord" :key="index">  
                    <div class="header">  
                        <div class="title">  
                          <image class="log" :src="'/static/pages/student/icon_gaosan@2x.png' | serverImg" alt=""></image>  
                            <div>{{ item.name }}</div>  
                        </div>  
                        <div class="view" @click="toPage(`/pages/student/detail?id=${item.id}`)">  
                            <div>查看学科分析</div>  
                          <image class="more_icon" :src="'/static/pages/index/v3/icon_combo_def@2x.png' | serverImg" alt=""></image>  
                        </div>  
                    </div>  
                    <div class="cont">  
                        <div class="num">  
                            <div class="label">总分</div>  
                            <div>{{ item.totalScore }}</div>  
                        </div>  
                        <div class="row">  
                            <div class="cont-item" v-for="(i, idx) in item.scoreRsps" :key="idx">  
                                <div class="label">{{ `${i.subject}:` }}</div>  
                                <div>{{ i.score }}</div>  
                            </div>  
                        </div>  
                    </div>  
                </div>  
            </div>  
        </block>  
    </div>  
    <custom-picker :show.sync="showTermPicker" :selected.sync="termSelected" :cols="[terms]" label="name" val="name" @confirm="e=>getSelect(e,'grade')"></custom-picker>  
    <date-picker :show.sync="showTermPicker2" :selected.sync="termSelected2" label="name" val="name" @confirm="e=>getSelect(e,'examTime')"></date-picker>  
    <custom-picker :show.sync="showTermPicker3" :selected.sync="termSelected3" :cols="[examType]" label="name" val="name" @confirm="e=>getSelect(e,'examType')"></custom-picker>  
    <custom-picker :show.sync="showTermPicker4" :selected.sync="termSelected4" :cols="[terms2]" label="name" val="name" @confirm="querySubjectRecord"></custom-picker>  
    <!-- <TabBar current="student"></TabBar> -->  
</div>  

</template>
<script>
import CustomPicker from '@/components/common/CustomPicker.vue'
import DatePicker from '@/components/common/DatePicker.vue'
import echarts from '@/pages/student/echarts'
// import TabBar from '@/components/tabbar/TabBar'
export default {
components: {
CustomPicker,
DatePicker,
echarts,
// TabBar
},
data() {
return {
tabList: ['分数填写', '成绩数据'],
tabIndex: 0,
scoreTabList: ['未选科', '已选科'],
scoreTabIndex: 0,
scoreForm: {},
subjectSelect: '',
subjectDetails:[
{
name: '语文',
subject: ['现代文阅读','古代诗文阅读','语言文字运用','写作']
},
{
name: '数学',
subject: ['选择题','填空题','解答题']
},
{
name: '英语',
subject: ['听力','阅读','语言运用','写作']
},
{
name: '物理',
subject: ['单选题','多选题','非选择题']
},
{
name: '化学',
subject: ['选择题','非选择题']
},
{
name: '生物',
subject: ['选择题','非选择题']
},
{
name: '历史',
subject: ['选择题','非选择题']
},
{
name: '地理',
subject: ['选择题','非选择题']
},
{
name: '政治',
subject: ['选择题','非选择题']
}
],
subjectRecord: [],
/ 展示图表(最近五条) /
echartsRecord: [],
terms: [
{ name: '高一上半学期' },
{ name: '高一下半学期' },
{ name: '高二上半学期' },
{ name: '高二下半学期' },
{ name: '高三上半学期' },
{ name: '高三下半学期' }
],
examType: [
{ name: '期中考' },
{ name: '期末考' },
{ name: '月考' },
{ name: '模拟考' },
{ name: '高考' },
{ name: '其他' }
],
termSelected: [''],
termSelected2: [''],
termSelected3: [''],
termSelected4: [''],
terms2: [],
showTermPicker: false,
showTermPicker2: false,
showTermPicker3: false,
showTermPicker4: false,
showSelect: false,
userInfo: {}
}
},
computed: {
/ 是否信息完善 /
isComplete() {
let flag = false
let data = this.scoreForm
let arr = this.subjectSelect.split('/')
if(JSON.stringify(data)=='{}') {
return flag
}
if(this.scoreTabIndex==0) {
flag = data.scoreReqs.find(i=>!i.score)? true: false

            }  
            if(this.scoreTabIndex==1) {  
                data.scoreReqs.forEach(i=> {  
                    arr.forEach(ii=>{  
                        if(i.subject==ii || i.subject=='语文' || i.subject=='数学' || i.subject=='英语') {  
                            flag = !i.score? true:false  
                        }  
                    })  
                })  
            }  
            if(!data.grade || !data.name || !data.examTime || !this.termSelected2[0] ) {  
                flag = true  
            }  
            if((!data.firstSubject || !data.secondSubject.length) && this.scoreTabIndex==1) {  
                /* 科目选择 */  
                flag = true  
            }  
            return !flag  
        }  
    },  
    onLoad() {  
        this.reset(true)  
        this.getSemesterClassify()  
    },  
    onShow() {  
       this.initData()  
        if(uni.getStorageSync('subject-score')){  
            let i = uni.getStorageSync('subject-index')  
            this.scoreForm.scoreReqs[i].score = uni.getStorageSync('subject-score');  
            this.$forceUpdate()  
            uni.removeStorageSync('subject-score')  
            uni.removeStorageSync('subject-index')  
        }  
    },  
    methods: {  
        reset(isFirst=false, isSubmit=false) {  
            /* 默认当前时间 */  
            let curTime = []  
            let date = new Date()  
            let YY = date.getFullYear()  
            let MM = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1  
            curTime.push(YY,MM)  

            let temp = {  
                grade: '高一上半学期',  
                firstSubject: '',  
                secondSubject: [],  
                name: '',  
                ifToChoose: false,  
                scoreReqs: [  
                    { subject: '语文', score: '' },  
                    { subject: '数学', score: '' },  
                    { subject: '英语', score: '' },  
                    { subject: '物理', score: '' },  
                    { subject: '化学', score: '' },  
                    { subject: '生物', score: '' },  
                    { subject: '历史', score: '' },  
                    { subject: '地理', score: '' },  
                    { subject: '政治', score: '' },  
                ],  
                scoringDetailesReq: [],  
                examTime: curTime.join('-'),  
                examType: ''  
            }  
            /* 提交后 递增下一个学期 */  
            if(isSubmit) {  
                let index = this.terms.findIndex(i=>i.name==this.scoreForm.grade)  
                index +=1  
                if(this.terms.length-1<index || isFirst) {  
                    index = 0  
                }  
                let arr = new Array()  
                arr.push(this.terms[index].name)  
                this.termSelected = arr  
                temp.grade = this.terms[index].name  
            }  
            let arr2 = new Array()  
            arr2.push(temp.examTime)  
            this.termSelected2 = arr2  
            this.termSelected3 = ['']  

            this.subjectSelect = ''  
            this.scoreForm = Object.assign(temp, {})  
        },  
        setTab(index) {  
            // if(index==1 && !this.terms2.length) {  
            //     this.$api.msg('暂无成绩数据')  
            //     return  
            // }  
            if(index==1) {  
                /* 重置分数填写 */  
                this.reset()  
            }  
            this.tabIndex = index  
        },  
        initData() {  
            let arr = []  
            // #ifdef  MP-WEIXIN  
                let temp = wx.getStorageSync('student-list') || '{}';  
            // #endif  
            // #ifndef  MP-WEIXIN  
                let temp = uni.getStorageSync('student-list') || '{}';  
            // #endif  

            if(temp!='{}') {  
                temp = JSON.parse(temp)  
                this.scoreForm = temp  
            }else {  
                temp = this.scoreForm  
            }  
            if(!temp.scoringDetailesReq.length) {  
                let scoringDetailesReq = []  
                this.subjectDetails.forEach(i=>{  
                    let itemArr = []  
                    i.subject.forEach(ii=>{  
                        itemArr.push({  
                            title: ii,  
                            score: '',  
                            totalScore: '',  
                            rate: ''  
                        })  
                    })  
                    scoringDetailesReq.push({  
                        subject: i.name,  
                        scoreDetails: itemArr  
                    })  
                })  
                this.scoreForm.scoringDetailesReq = scoringDetailesReq  
            }  
            /* 选科 */  
            if(temp.firstSubject) {  
                let first = []  
                first.push(temp.firstSubject)  
                arr = [...first, ...temp.secondSubject]  
            }  
            this.termSelected[0] = temp.grade  
            this.termSelected2[0] = temp.examTime  
            this.subjectSelect = arr.join('/')  
            this.scoreForm.ifToChoose = this.scoreTabIndex==1? true:false  
            // #ifdef  MP-WEIXIN  
                 wx.removeStorageSync('student-list')  
            // #endif  
            // #ifndef  MP-WEIXIN  
                 uni.removeStorageSync('student-list')  
            // #endif  
            if(this.tabIndex == 1) {  
                /* 成绩数据 */  
                this.getSemesterClassify()  
            }  
        },  
        getTerm() {  
            if(!this.terms2.length) {  
                this.$api.msg('暂无学期选择')  
                return  
            }  
            this.showTermPicker4 = true  
        },  
        /* 学科 (已选科) */  
        showSubject(type) {  
            let flag = false  
            let arr = this.subjectSelect.split('/')  
            if(arr.length) {  
                arr.forEach(i=>{  
                    if(i==type || type=='语文' || type=='数学' || type=='英语') {  
                        flag = true  
                    }  
                })  
            }  
            return flag  
        },  
        /* 前往编辑页 */  
        toEdit(subject,idx) {  
            /* 科目选择 */  
            let url = `/pages/student/subject`  
            if(subject) {  
                /* 单科详情 */  
                url = `/pages/student/addSubject?subject=${subject}`  
            }  
            /* 保存信息 */  

            // #ifdef  MP-WEIXIN  
                 wx.setStorageSync('student-list', JSON.stringify(this.scoreForm))  
            // #endif  
            // #ifndef  MP-WEIXIN  
                 uni.setStorageSync('student-list', JSON.stringify(this.scoreForm))  
            // #endif  

            uni.setStorageSync('subject-index',idx)  
            this.toPage(url)  
        },  
        /* 学期分类 */  
        async getSemesterClassify(type) {  
          let {code, data} = await this.$api.request({  
            data: {},  
            method: 'GET',  
          })  
          if (code == 200) {  
              let arr = data || []  
              let newArr = [{ name: '全部' }]  
              /* 排序 */  
              this.terms.forEach(i=>{  
                arr.forEach(ii=> {  
                    if(i.name==ii) {  
                        newArr.push(i)  
                    }  
                })  
              })  
              this.terms2 = newArr  
              if(!newArr.length) {  
                  return  
              }  
              this.termSelected4[0] = type? type: newArr[0].name  
              if(arr.length) {  
                this.tabIndex = 1  
              }  
              this.querySubjectRecord(this.termSelected4)  
          }  
        },  
        /* 成绩记录 */  
        async querySubjectRecord(res) {  
            uni.showLoading()  
            let {code, data} = await this.$api.request({  
                data: {  
                    grade: res[0]!='全部'? res[0]:''  
                },  
                method: 'GET',  
            })  
            if (code == 200) {  
                this.subjectRecord = data || []  
                /* 图表 */  
                let arr = new Array()  
                data.forEach((i,idx)=>{  
                    if(idx<5) {  
                        arr.push(i)  
                    }  
                })  
                this.echartsRecord = arr.reverse()  
            }  
            setTimeout(_ => {  
                uni.hideLoading()  
            }, 200)  
        },  
        /* 提交 */  
        async submit() {  
            let form = this.scoreForm,  
                formBak = JSON.stringify(form)  
            if(!this.isComplete) {  
                this.$api.msg('请完善信息填写')  
                return  
            }  
            /* 考试时间默认一日(不显示,只传给后台) */  
            let date = form.examTime.split('-'),  
                MM = date[1]  
            if(date.length<3) {  
                date[1] = MM.length == 1? '0'+MM: MM  
                date.push('01')  
                form.examTime = date.join('-')  
            }  
            if(this.scoreTabIndex==1) {  
                let arr = []  
                let arr2 = []  
                form.scoreReqs.forEach((i, idx)=>{  
                    let flag = this.showSubject(i.subject)  
                    if(flag) {  
                        arr.push(i)  
                        arr2.push(form.scoringDetailesReq[idx])  
                    }  
                })  
                form.scoreReqs = arr  
                form.scoringDetailesReq = arr2  
            }  
            let {code, data} = await this.$api.request({  
                data: form,  
                method: 'POST',  
            })  
            if (code == 200) {  
                this.$api.msg('填写成功')  
                setTimeout(()=>{  
                    this.reset(false, true)  
                    this.getSemesterClassify(form.grade)  
                    // #ifdef  MP-WEIXIN  
                        wx.removeStorageSync('student-list')  
                    // #endif  
                    // #ifndef  MP-WEIXIN  
                        uni.removeStorageSync('student-list')  
                    // #endif  

                },1000)  
            } else {  
                this.scoreForm = JSON.parse(formBak)  
            }  
        },  
        /* 格式化分数输入框 */  
        formatNumber(item) {  
            let max = 100  
            let temp = item.score.split('.')  
            if(item.subject=='语文' || item.subject=='数学' ||item.subject=='英语') {  
                max = 150  
            }  
            if(item.score<1 || item.score==0 || item.score>max) {  
                this.$set(item, 'score', '')  
                this.$api.msg(`<${item.subject}>的在0-${max}分内`)  
            }  
            if(temp.length>1) {  
                /* 小数点 后续调整 */  
                /* input type="digit" */  
                // this.$set(item, 'score', Number(item.score).toFixed(1))  
                this.$set(item, 'score', Number(item.score).toFixed(0))  
            }  
        },  
        /* 下拉选择 */  
        getSelect(e,type) {  
            this.scoreForm[type]=e[0]  
            if(this.scoreForm.grade && this.scoreForm.examTime && this.scoreForm.examType) {  
                /* 考试名称 */  
                let time = this.scoreForm.examTime.split('-')  
                this.scoreForm.name = `${time[0]}年${time[1]}月${this.scoreForm.grade}${this.scoreForm.examType}`  
            }  
        }  
    },  
}  

</script>

<style lang="scss">
page { background: #FAFAFD;}
</style>
<style lang="scss" scoped>
.page-grade {
// position: fixed;
position: relative;
top: 0;
left: 0;
width: 100%;
// padding-bottom: 130rpx;
.tabBar {
display: flex;
justify-content: space-between;
padding: 28rpx 120rpx 24rpx;
background: #3586FF;
.item {
font-size: 32rpx;
font-weight: bold;
line-height: 44rpx;
color: #F9FAFB;
&.active {
position: relative;
&::after {
content: '';
position: absolute;
bottom: -10rpx;
left: 50%;
transform: translateX(-50%);
width: 56rpx;
height: 6rpx;
background: #FFFFFF;
border-radius: 20rpx;
}
}
}
}
.tab-score {
display: flex;
flex-direction: column;
justify-content: center;
margin: 30rpx 24rpx;
background: #FFFFFF;
.score-tabBar {
display: flex;
justify-content: space-between;
width: 422rpx;
box-sizing: border-box;
margin: 30rpx auto 48rpx;
padding: 10rpx;
background: #EAF3FF;
border-radius: 10rpx;
.item {
display: flex;
align-items: center;
justify-content: center;
width: 194rpx;
height: 70rpx;
border-radius: 10rpx;
font-size: 30rpx;
font-weight: bold;
line-height: 42rpx;
color: #3586FF;
&.active {
background: #3586FF;
color: #FFFFFF;
}
}
}
.score-form {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
padding: 0 30rpx;
.form-item {
display: flex;
align-items: center;
margin-bottom: 36rpx;
font-size: 28rpx;
line-height: 40rpx;
color: #333333;
.label { margin-right: 24rpx; }
.val {
display: flex;
align-items: center;
height: 76rpx;
width: 170rpx;
background: #F6F7F9;
border-radius: 10rpx;
padding-left: 24rpx;
padding-right: 52rpx;
box-sizing: border-box;
position: relative;
&::after {
content: '分';
position: absolute;
top: 50%;
right: 24rpx;
transform: translateY(-50%);
}
.input { width: 100%; }
.disabled { color: #9B9B9B; }
&.select {
position: relative;
&:after {
content: '';
margin-left: 12rpx;
border-top: 8rpx solid #666666;
border-left: 8rpx solid transparent;
border-right: 8rpx solid transparent;
border-bottom: 8rpx solid transparent;
position: absolute;
top: 50%;
right: 24rpx;
}
}

                }  
                &.one {  
                    .label { width: 112rpx; }  
                    .val {  
                        width: 506rpx;  
                        padding: 18rpx 30rpx;  
                        &::after { content: '';}  
                    }  
                }  
                .add-icon {  
                    width: 36rpx;  
                    height: 36rpx;  
                    margin-left: 10rpx;  
                }  
                .more-icon {  
                    width: 24rpx;  
                    height: 24rpx;  
                    position: absolute;  
                    top: 50%;  
                    right: 18rpx;  
                    transform: translateY(-50%);  
                }  
            }  
            .form-btn {  
                display: flex;  
                justify-content: center;  
                align-items: center;  
                width: 512rpx;  
                height: 80rpx;  
                background: #84B6FF;  
                border-radius: 44rpx;  
                font-size: 28rpx;  
                font-weight: bold;  
                line-height: 40rpx;  
                color: #FFFFFF;  
                margin: 28rpx auto 30rpx;  
                &.active { background: #3586FF; }  
            }  
        }  
    }  
    .tab-grade {  
        .no-data {  
            display: flex;  
            flex-direction: column;  
            align-items: center;  
            background: #FFFFFF;  
            padding: 114rpx 32rpx 0;  
            margin: 30rpx 24rpx;  
            height: 750rpx;  
            .desc {  
                display: flex;  
                flex-direction: column;  
                align-items: center;  
                font-size: 30rpx;  
                line-height: 42rpx;  
                color: #333333;  
                .noData-bg {  
                    width: 638rpx;  
                    height: 354rpx;  
                    margin-bottom: 6rpx;  
                }  
            }  
            .btn {  
                display: flex;  
                align-items: center;  
                justify-content: center;  
                width: 276rpx;  
                height: 80rpx;  
                border: 2rpx solid #3586FF;  
                border-radius: 44rpx;  
                font-size: 28rpx;  
                font-weight: bold;  
                line-height: 40rpx;  
                color: #3586FF;  
                margin-top: 82rpx;  
            }  
        }  
        .grade-result {  
            width: 100%;  
            height: 532rpx;  
            background: #FFFFFF;  
            margin: 30rpx 0;  
            .term-select {  
                display: flex;  
                align-items: center;  
                font-size: 28rpx;  
                line-height: 40rpx;  
                color: #333333;  
                padding: 30rpx 54rpx 60rpx;  
                .label { width: 116rpx; }  
                .select {  
                    position: relative;  
                    display: flex;  
                    align-items: center;  
                    width: 460rpx;  
                    background: #F6F7F9;  
                    border-radius: 10rpx;  
                    margin-left: 24rpx;  
                    padding: 18rpx 30rpx;  
                    &:after {  
                        content: '';  
                        margin-left: 12rpx;  
                        border-top: 8rpx solid #666666;  
                        border-left: 8rpx solid transparent;  
                        border-right: 8rpx solid transparent;  
                        border-bottom: 8rpx solid transparent;  
                        position: absolute;  
                        top: 50%;  
                        right: 24rpx;  
                    }  
                }  
            }  
        }  
        .grade-list {  
            padding: 0 24rpx;  
            .item {  
                background: #FFFFFF;  
                padding: 30rpx 24rpx;  
                margin-bottom: 30rpx;  
                .header {  
                    display: flex;  
                    justify-content: space-between;  
                    margin-bottom: 16rpx;  
                    .title {  
                        display: flex;  
                        align-items: center;  
                        font-size: 28rpx;  
                        line-height: 40rpx;  
                        color: #333333;  
                        .log {  
                            width: 36rpx;  
                            height: 40rpx;  
                            margin-right: 2rpx;  
                        }  
                    }  
                    .view {  
                        display: flex;  
                        align-items: center;  
                        font-size: 24rpx;  
                        line-height: 34rpx;  
                        color: #3586FF;  
                        .more_icon {  
                            width: 18rpx;  
                            height: 22rpx;  
                            margin-left: 4rpx;  
                        }  
                    }  
                }  
                .cont {  
                    display: flex;  
                    flex-wrap: wrap;  
                    width: 654rpx;  
                    height: 248rpx;  
                    padding: 24rpx 30rpx 6rpx;  
                    background: rgba(246, 247, 249, 0.5);  
                    border-radius: 10rpx;  
                    font-size: 26rpx;  
                    line-height: 36rpx;  
                    color: #666666;  
                    box-sizing: border-box;  
                    .num {  
                        display: flex;  
                        justify-content: center;  
                        width: 100%;  
                        font-weight: bold;  
                        margin-bottom: 24rpx;  
                        .label { margin-right: 16rpx; }  
                    }  
                    .row {  
                        display: flex;  
                        flex-wrap: wrap;  
                        justify-content: space-between;  
                        width: 100%;  
                        margin-bottom: 16rpx;  
                        .cont-item {  
                            display: flex;  
                            width: calc((100% - 60rpx)/3);  
                            .label { margin-right: 4rpx; }  
                        }  
                    }  
                }  
            }  
        }  
    }  
}  

</style>

操作步骤:

set数据后回返页面get读取

预期结果:

等到保存数据

实际结果:

无读取数据
暂时使用wx.set..解决

bug描述:

uni.setStorageSync小程序端使用uni.getStorageSync读取不到

2022-04-28 16:59 负责人:无 分享
已邀请:
DCloud_UNI_Anne

DCloud_UNI_Anne

请找出来具体原因后提供可复现bug的最小化demo(上传附件),让我们及时定位问题,及时修复。
【bug优先处理规则】https://ask.dcloud.net.cn/article/38139

该问题目前已经被锁定, 无法添加新回复