From daec42ee7d18646bba1c6192e5ad68306e3c82ee Mon Sep 17 00:00:00 2001 From: wangzhongjie Date: Wed, 12 Feb 2025 11:47:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E4=BA=86=E9=83=A8?= =?UTF-8?q?=E5=88=86=E6=96=87=E4=BB=B6=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../compontents/judge/DeductionPopup.ets | 288 +++++++++++------- 1 file changed, 176 insertions(+), 112 deletions(-) diff --git a/entry/src/main/ets/pages/compontents/judge/DeductionPopup.ets b/entry/src/main/ets/pages/compontents/judge/DeductionPopup.ets index 972746ea..7c69ec9d 100644 --- a/entry/src/main/ets/pages/compontents/judge/DeductionPopup.ets +++ b/entry/src/main/ets/pages/compontents/judge/DeductionPopup.ets @@ -1,175 +1,232 @@ -import {MarkRule} from '../../judgeSDK/api/judgeSDK' +import { MarkRule } from '../../judgeSDK/api/judgeSDK'; import EndPoPup from './EndPopup'; -interface SEL{ - fontColor:string - bgColor:string +interface SEL { + fontColor: string + bgColor: string } @Component -export default struct DeductedPopup { +export default struct DeductedPopup { + @State fontSize: number = 30 + @State unselected: SEL = { fontColor: '#000000', bgColor: '#CCC4B8' } + @State selected: SEL = { fontColor: '#FFAD33', bgColor: '#26231E' } + @State currentIndex: number = 0 + @State currentPageIndex: number = 0 + //通用评判扣分 + @State currentUniversalPageIndex: number = 0; + @State universalMarkRules: MarkRule[] = [] + @State manualMarkRules: MarkRule[] = [] + @State lineBg: Array = ['#4D4136', '#26231E'] + @State selectedLine: number = undefined + @State endPopupVisible: boolean = false + @State selectedLineStyle: SEL = { + fontColor: '#FFF', + bgColor: '#B36E00' + } + @Prop defaultTabIndex: number = 0 + @Prop @Watch('changeCurrentItems') currentItems: string[] = []; + @State preCurrentItemsLength: number = 0 + private markRules: MarkRule[] = [] + constructor() { super() } - @State fontSize:number = 30 - @State unselected:SEL = {fontColor:'#000000', bgColor:'#CCC4B8'} - @State selected:SEL = {fontColor:'#FFAD33', bgColor:'#26231E'} - - @State currentIndex:number = 0 - @State currentPageIndex:number = 0 - //通用评判扣分 - @State currentUniversalPageIndex:number = 0; - private markRules:MarkRule[] = [] - @State universalMarkRules:MarkRule[] = [] - @State manualMarkRules:MarkRule[] = [] - @State lineBg:Array = ['#4D4136','#26231E'] - @State selectedLine:number = undefined - @State endPopupVisible:boolean = false - private closePopup:Function = ()=> {} - private confirmMark:Function = (itemno:number,serial:string) => {} - @State selectedLineStyle:SEL = { - fontColor:'#FFF', - bgColor:'#B36E00' - } - - @Prop defaultTabIndex:number = 0 - @Prop @Watch('changeCurrentItems') currentItems:string[] = []; - @State preCurrentItemsLength:number = 0 - - aboutToAppear(){ - //@ts-ignore - this.universalMarkRules = this.markRules.filter(item => (this.currentItems.includes(item.itemno) || this.currentItems.includes(item.itemno + ''))); + aboutToAppear() { + this.universalMarkRules = this.markRules.filter(item => (this.currentItems.includes(item.itemno.toString()) || + this.currentItems.includes(item.itemno + ''))); this.currentIndex = this.defaultTabIndex - if(this.currentIndex == 1){ - this.universalMarkRules = this.markRules.filter(item => item.itemno == 20 ) + if (this.currentIndex == 1) { + this.universalMarkRules = this.markRules.filter(item => item.itemno == 20) } this.preCurrentItemsLength = this.currentItems.length } - changeCurrentItems(){ - if(this.currentItems?.length && (this.currentItems?.length >= this.preCurrentItemsLength)){ - //@ts-ignore - this.universalMarkRules = this.markRules.filter(item => (this.currentItems.includes(item.itemno) || this.currentItems.includes(item.itemno + ''))); + changeCurrentItems() { + if (this.currentItems?.length && (this.currentItems?.length >= this.preCurrentItemsLength)) { + this.universalMarkRules = this.markRules.filter(item => (this.currentItems.includes(item.itemno.toString()) || + this.currentItems.includes(item.itemno + ''))); this.currentIndex = this.defaultTabIndex - if(this.currentIndex == 1){ - this.universalMarkRules = this.markRules.filter(item => item.itemno == 20 ) + if (this.currentIndex == 1) { + this.universalMarkRules = this.markRules.filter(item => item.itemno == 20) } this.preCurrentItemsLength = this.currentItems.length - }else{ + } else { this.preCurrentItemsLength = 0 } } //上一页 下一页 - goPage(typeIndex){ + goPage(typeIndex: number) { const currentIndex = this.currentIndex - if(currentIndex){ + if (currentIndex) { //通用评判 typeIndex ? (this.currentUniversalPageIndex += 1) : (this.currentUniversalPageIndex -= 1) - }else{ + } else { typeIndex ? (this.currentPageIndex += 1) : (this.currentPageIndex -= 1) } this.selectedLine = -1 } //选中扣分项 - getSelectedLine(index){ - const {selectedLine,selectedLineStyle,lineBg} = this; - if(selectedLine === index){ - return selectedLineStyle.bgColor + getSelectedLine(index: number) { + // const { selectedLine, selectedLineStyle, lineBg } = this; + if (this.selectedLine === index) { + return this.selectedLineStyle.bgColor } - if(index % 2 === 0){ - return lineBg[0] - }else{ - return lineBg[1] + if (index % 2 === 0) { + return this.lineBg[0] + } else { + return this.lineBg[1] } } //获取当前页的数据 - getCurrentMarkRuleList(){ - const {currentIndex,currentUniversalPageIndex,currentPageIndex,markRules,universalMarkRules} = this; - if(currentIndex){ + getCurrentMarkRuleList() { + // const { currentIndex, currentUniversalPageIndex, currentPageIndex, markRules, universalMarkRules } = this; + if (this.currentIndex) { //通用评判 - return universalMarkRules.slice(currentUniversalPageIndex*7,(currentUniversalPageIndex + 1)*7) - }else{ - return universalMarkRules.slice(currentPageIndex*7,(currentPageIndex + 1)*7) + return this.universalMarkRules.slice(this.currentUniversalPageIndex * 7, (this.currentUniversalPageIndex + 1) * 7) + } else { + return this.universalMarkRules.slice(this.currentPageIndex * 7, (this.currentPageIndex + 1) * 7) } } - build(){ - Column(){ - Column(){ - Column(){ - Row(){ - Row(){ - ForEach(['人工评判','通用评判'],(text,index)=>{ - Row(){ - Text(text).fontColor(index === this.currentIndex ? this.selected.fontColor : this.unselected.fontColor).fontSize(this.fontSize).fontWeight(500) + build() { + Column() { + Column() { + Column() { + Row() { + Row() { + ForEach(['人工评判', '通用评判'], (text: string, index) => { + Row() { + Text(text) + .fontColor(index === this.currentIndex ? this.selected.fontColor : this.unselected.fontColor) + .fontSize(this.fontSize) + .fontWeight(500) } - .width(140).height(60) - .backgroundColor(index === this.currentIndex ? this.selected.bgColor: this.unselected.bgColor ).justifyContent(FlexAlign.Center).justifyContent(FlexAlign.Center) - .borderRadius({topLeft:20,topRight:20}).margin({right:10}) - .onClick(()=>{ + .width(140) + .height(60) + .backgroundColor(index === this.currentIndex ? this.selected.bgColor : this.unselected.bgColor) + .justifyContent(FlexAlign.Center) + .justifyContent(FlexAlign.Center) + .borderRadius({ topLeft: 20, topRight: 20 }) + .margin({ right: 10 }) + .onClick(() => { this.currentIndex = index; this.selectedLine = -1; - if(index === 1) { - this.universalMarkRules = this.markRules.filter(item => item.itemno == 20 ) - }else{ - //@ts-ignore - this.universalMarkRules = this.markRules.filter(item => (this.currentItems.includes(item.itemno) || this.currentItems.includes(item.itemno+''))) + if (index === 1) { + this.universalMarkRules = this.markRules.filter(item => item.itemno == 20) + } else { + this.universalMarkRules = + this.markRules.filter(item => (this.currentItems.includes(item.itemno.toString()) || + this.currentItems.includes(item.itemno + ''))) } }) }) } - Row(){ - if( - (Math.ceil(this.universalMarkRules.length / 7 - 1)) >= (this.currentIndex ? this.currentUniversalPageIndex: this.currentPageIndex) && - (this.currentIndex ? this.currentUniversalPageIndex: this.currentPageIndex) > 0 - ){ - Row(){ - Image($rawfile(`judge/km3/zuo_nor.png`)).height(15).margin({left:20,top:0}) - Text('上一页'){}.fontColor('#FFF').fontSize(this.fontSize) - }.width(150).height(60).justifyContent(FlexAlign.Start).alignItems(VerticalAlign.Center).backgroundImage($rawfile(`judge/km3/button_nor.png`)).backgroundImageSize({width:'100%',height:'100%'}).margin({right:30}) - .onClick(()=>{this.goPage(0)}) + + Row() { + if ( + (Math.ceil(this.universalMarkRules.length / 7 - 1)) >= + (this.currentIndex ? this.currentUniversalPageIndex : this.currentPageIndex) && + (this.currentIndex ? this.currentUniversalPageIndex : this.currentPageIndex) > 0 + ) { + Row() { + Image($rawfile(`judge/km3/zuo_nor.png`)).height(15).margin({ left: 20, top: 0 }) + Text('上一页') { + }.fontColor('#FFF').fontSize(this.fontSize) + } + .width(150) + .height(60) + .justifyContent(FlexAlign.Start) + .alignItems(VerticalAlign.Center) + .backgroundImage($rawfile(`judge/km3/button_nor.png`)) + .backgroundImageSize({ width: '100%', height: '100%' }) + .margin({ right: 30 }) + .onClick(() => { + this.goPage(0) + }) } - if( - (Math.ceil(this.universalMarkRules.length / 7 - 1)) > (this.currentIndex ? this.currentUniversalPageIndex: this.currentPageIndex) - ){ - Row(){ - Text('下一页'){}.fontColor('#FFF').fontSize(this.fontSize).padding({left:30}) - Image($rawfile(`judge/km3/you_nor.png`)).height(15).margin({right:6,top:0}) - }.width(150).height(60).justifyContent(FlexAlign.Start).alignItems(VerticalAlign.Center).backgroundImage($rawfile(`judge/km3/button_nor.png`)).backgroundImageSize({width:'100%',height:'100%'}).margin({right:30}) - .onClick(()=>{this.goPage(1)}) + if ( + (Math.ceil(this.universalMarkRules.length / 7 - 1)) > + (this.currentIndex ? this.currentUniversalPageIndex : this.currentPageIndex) + ) { + Row() { + Text('下一页') { + }.fontColor('#FFF').fontSize(this.fontSize).padding({ left: 30 }) + + Image($rawfile(`judge/km3/you_nor.png`)).height(15).margin({ right: 6, top: 0 }) + } + .width(150) + .height(60) + .justifyContent(FlexAlign.Start) + .alignItems(VerticalAlign.Center) + .backgroundImage($rawfile(`judge/km3/button_nor.png`)) + .backgroundImageSize({ width: '100%', height: '100%' }) + .margin({ right: 30 }) + .onClick(() => { + this.goPage(1) + }) } - Row(){ - Text('扣 分'){}.fontColor('#FFF').fontSize(this.fontSize).padding({left:35}) - }.width(140).height(60).justifyContent(FlexAlign.Start).alignItems(VerticalAlign.Center).backgroundImage($rawfile(`judge/km3/button_nor.png`)).backgroundImageSize({width:'100%',height:'100%'}) - .onClick(()=>{ + Row() { + Text('扣 分') { + }.fontColor('#FFF').fontSize(this.fontSize).padding({ left: 35 }) + } + .width(140) + .height(60) + .justifyContent(FlexAlign.Start) + .alignItems(VerticalAlign.Center) + .backgroundImage($rawfile(`judge/km3/button_nor.png`)) + .backgroundImageSize({ width: '100%', height: '100%' }) + .onClick(() => { this.endPopupVisible = true }) } }.width('100%').justifyContent(FlexAlign.SpaceBetween) - Column(){ - ForEach(this.getCurrentMarkRuleList(),(item,index) => { - Row(){ - Row(){ - Text(`${item.markshow} (${item.markcatalog})`).fontColor('#FFF').fontSize(this.fontSize).fontWeight(600) + + Column() { + ForEach(this.getCurrentMarkRuleList(), (item: ESObject, index) => { + Row() { + Row() { + Text(`${item.markshow} (${item.markcatalog})`) + .fontColor('#FFF') + .fontSize(this.fontSize) + .fontWeight(600) }.width(1000) - Row(){ + + Row() { Text(item.markreal + '').fontColor('#FFF').fontSize(this.fontSize).fontWeight(600) } } - .width('100%').justifyContent(FlexAlign.SpaceBetween).alignItems(VerticalAlign.Center).constraintSize({minHeight:70}) - .padding({left:20,right:20}) + .width('100%') + .justifyContent(FlexAlign.SpaceBetween) + .alignItems(VerticalAlign.Center) + .constraintSize({ minHeight: 70 }) + .padding({ left: 20, right: 20 }) .backgroundColor(this.getSelectedLine(index)) - .onClick(()=>{this.selectedLine = index}) + .onClick(() => { + this.selectedLine = index + }) }) } } - }.width(1200).height(620).position({x:30,y:315}).backgroundColor('#E6E3DF').padding({top:15,bottom:15,left:25,right:25}).borderRadius(20) + } + .width(1200) + .height(620) + .position({ x: 30, y: 315 }) + .backgroundColor('#E6E3DF') + .padding({ + top: 15, + bottom: 15, + left: 25, + right: 25 + }) + .borderRadius(20) + // Row(){}.width(100).height(100).position({y:'85%',x:'50%'}).backgroundImage($rawfile('judge/km3/close_nor.png')).backgroundImageSize({width:'100%',height:'100%'}) //结束考试弹窗 if (this.endPopupVisible) { @@ -179,12 +236,19 @@ export default struct DeductedPopup { this.endPopupVisible = false; }, confirmFn: async () => { - const index = this.currentIndex ? this.currentUniversalPageIndex: this.currentPageIndex; + const index = this.currentIndex ? this.currentUniversalPageIndex : this.currentPageIndex; const mark = this.universalMarkRules[index * 7 + this.selectedLine] - mark && this.confirmMark(mark.itemno,mark.markserial) + mark && this.confirmMark(mark.itemno, mark.markserial) } }) } - }.width('100%').height('100%').position({y:0}).onClick(()=>{this.closePopup()}) + }.width('100%').height('100%').position({ y: 0 }).onClick(() => { + this.closePopup() + }) + } + + private closePopup: Function = () => { + } + private confirmMark: Function = (itemno: number, serial: string) => { } } \ No newline at end of file