import dxui from '../../../../dxmodules/dxUi.js'
|
import viewUtils from "../../viewUtils.js"
|
import topView from "../../topView.js"
|
import configView from '../configView.js'
|
import i18n from "../../i18n.js"
|
import screen from '../../../screen.js'
|
import recordQueryDetailView from './recordQuery/recordQueryDetailView.js'
|
const recordQueryView = {}
|
recordQueryView.init = function () {
|
/**************************************************创建屏幕*****************************************************/
|
const screenMain = dxui.View.build('recordQueryView', dxui.Utils.LAYER.MAIN)
|
recordQueryView.screenMain = screenMain
|
screenMain.scroll(false)
|
screenMain.bgColor(0xffffff)
|
screenMain.on(dxui.Utils.ENUM.LV_EVENT_SCREEN_LOADED, () => {
|
topView.changeTheme(true)
|
refreshRecordList(recordQueryView.nowPage ? recordQueryView.nowPage : 0, 3)
|
})
|
|
const empty = dxui.Image.build(screenMain.id + 'empty', screenMain)
|
recordQueryView.empty = empty
|
empty.source(screen.resourcePath.imagePath + '/empty.png')
|
empty.align(dxui.Utils.ALIGN.CENTER, 0, 0)
|
empty.hide()
|
|
const titleBox = viewUtils.title(screenMain, configView.screenMain, 'recordQueryViewTitle', 'recordQueryView.title', () => { recordQueryView.nowPage = 0 })
|
titleBox.align(dxui.Utils.ALIGN.TOP_MID, 0, screen.screenSize.height * (50 / 1280))
|
|
const box = dxui.View.build(screenMain.id + 'box', screenMain)
|
viewUtils._clearStyle(box)
|
box.align(dxui.Utils.ALIGN.TOP_MID, 0, screen.screenSize.height * (150 / 1280))
|
box.setSize(screen.screenSize.width * (600 / 600), screen.screenSize.height * (800 / 1280))
|
box.bgOpa(0)
|
box.flexFlow(dxui.Utils.FLEX_FLOW.ROW_WRAP)
|
box.flexAlign(dxui.Utils.FLEX_ALIGN.CENTER, dxui.Utils.FLEX_ALIGN.START, dxui.Utils.FLEX_ALIGN.START)
|
box.obj.lvObjSetStylePadGap(screen.screenSize.width * (15 / 600), dxui.Utils.ENUM._LV_STYLE_STATE_CMP_SAME)
|
// box.hide()
|
|
|
recordQueryView.items = []
|
for (let i = 0; i < 3; i++) {
|
// 创建主容器,每个项目占更大空间
|
const item = dxui.View.build(box.id + 'item' + i, box)
|
viewUtils._clearStyle(item)
|
item.setSize(screen.screenSize.width * (560 / 600), screen.screenSize.height * (240 / 1280)) // 高度从120增加到240,正好是原来的2倍
|
item.bgColor(0xf5f5f5) // 灰色背景
|
item.radius(screen.screenSize.width * (8 / 600)) // 圆角
|
item.padAll(screen.screenSize.height * (15 / 1280)) // 内边距
|
|
// 创建内容容器
|
const content = dxui.View.build(item.id + 'content' + i, item)
|
viewUtils._clearStyle(content)
|
content.setSize(screen.screenSize.width * (530 / 600), screen.screenSize.height * (210 / 1280))
|
content.bgOpa(0)
|
content.align(dxui.Utils.ALIGN.TOP_LEFT, 0, 0)
|
|
// 姓名标签 - 更大字体
|
const name = dxui.Label.build(content.id + 'name' + i, content)
|
name.align(dxui.Utils.ALIGN.TOP_LEFT, 0, screen.screenSize.height * (5 / 1280))
|
name.textFont(viewUtils.font(28)) // 从22增加到28
|
name.textColor(0x333333)
|
|
// ID标签和值
|
const code = dxui.Label.build(content.id + 'code' + i, content)
|
code.setPos(0, screen.screenSize.height * (50 / 1280))
|
code.setSize(screen.screenSize.width * (120 / 600), screen.screenSize.height * (30 / 1280))
|
code.textFont(viewUtils.font(24)) // 从22增加到24
|
code.dataI18n = 'recordQueryView.code'
|
code.textColor(0x666666)
|
|
const codeValue = dxui.Label.build(content.id + 'codeValue' + i, content)
|
codeValue.setPos(screen.screenSize.width * (120 / 600), screen.screenSize.height * (50 / 1280))
|
codeValue.width(screen.screenSize.width * (280 / 600))
|
codeValue.longMode(dxui.Utils.LABEL_LONG_MODE.SCROLL_CIRCULAR)
|
codeValue.textFont(viewUtils.font(24)) // 从22增加到24
|
codeValue.textColor(0x333333)
|
|
// 时间标签和值
|
const time = dxui.Label.build(content.id + 'time' + i, content)
|
time.setPos(0, screen.screenSize.height * (90 / 1280))
|
time.setSize(screen.screenSize.width * (120 / 600), screen.screenSize.height * (30 / 1280))
|
time.textFont(viewUtils.font(24)) // 从22增加到24
|
time.dataI18n = 'recordQueryView.time'
|
time.textColor(0x666666)
|
|
const timeValue = dxui.Label.build(content.id + 'timeValue' + i, content)
|
timeValue.setPos(screen.screenSize.width * (120 / 600), screen.screenSize.height * (90 / 1280))
|
timeValue.setSize(screen.screenSize.width * (300 / 600), screen.screenSize.height * (30 / 1280))
|
timeValue.textFont(viewUtils.font(24)) // 从22增加到24
|
timeValue.textColor(0x333333)
|
|
// 结果标签和值
|
const result = dxui.Label.build(content.id + 'result' + i, content)
|
result.setPos(0, screen.screenSize.height * (130 / 1280))
|
result.setSize(screen.screenSize.width * (120 / 600), screen.screenSize.height * (30 / 1280))
|
result.textFont(viewUtils.font(24)) // 从22增加到24
|
result.dataI18n = 'recordQueryView.result'
|
result.textColor(0x666666)
|
|
const resultValue = dxui.Label.build(content.id + 'resultValue' + i, content)
|
resultValue.setPos(screen.screenSize.width * (120 / 600), screen.screenSize.height * (130 / 1280))
|
resultValue.setSize(screen.screenSize.width * (200 / 600), screen.screenSize.height * (30 / 1280))
|
resultValue.textFont(viewUtils.font(24)) // 从22增加到24
|
resultValue.textColor(0x333333)
|
|
// More按钮
|
const moreBtn = dxui.Button.build(content.id + 'btn' + i, content)
|
moreBtn.align(dxui.Utils.ALIGN.TOP_RIGHT, 0, screen.screenSize.height * (10 / 1280))
|
moreBtn.setSize(screen.screenSize.width * (100 / 600), screen.screenSize.height * (50 / 1280))
|
moreBtn.bgColor(0x007bff)
|
moreBtn.radius(screen.screenSize.width * (6 / 600))
|
const moreBtnLbl = dxui.Label.build(content.id + 'btnLbl' + i, moreBtn)
|
moreBtnLbl.textFont(viewUtils.font(22))
|
moreBtnLbl.text('详情')
|
moreBtnLbl.textColor(0xffffff)
|
|
moreBtn.on(dxui.Utils.EVENT.CLICK, () => {
|
recordQueryView.nowRecord = recordQueryView.recordData.data[i]
|
dxui.loadMain(recordQueryDetailView.screenMain)
|
})
|
|
recordQueryView.items.push({
|
item,
|
name,
|
id: codeValue,
|
idLbl: code,
|
timeStamp: timeValue,
|
timeLbl: time,
|
result: resultValue,
|
resultLbl: result
|
})
|
}
|
|
const pageNextBtn = dxui.Button.build(screenMain.id + 'pageNextBtn', screenMain)
|
recordQueryView.pageNextBtn = pageNextBtn
|
pageNextBtn.bgColor(0x000000)
|
pageNextBtn.setSize(screen.screenSize.width * (80 / 600), screen.screenSize.height * (80 / 1280)) // 进一步增加按钮尺寸
|
pageNextBtn.radius(screen.screenSize.width * (10 / 600)) // 增加圆角
|
const pageNextLbl = dxui.Label.build(screenMain.id + 'pageNextLbl', pageNextBtn)
|
pageNextLbl.text("→")
|
pageNextLbl.textFont(viewUtils.font(32)) // 进一步增大字体
|
pageNextLbl.textColor(0xffffff) // 白色文字
|
pageNextLbl.align(dxui.Utils.ALIGN.CENTER, 0, 0)
|
pageNextBtn.align(dxui.Utils.ALIGN.BOTTOM_RIGHT, -screen.screenSize.width * (20 / 600), -screen.screenSize.height * (30 / 1280)) // 往下移动20px
|
|
const pagePrevBtn = dxui.Button.build(screenMain.id + 'pagePrevBtn', screenMain)
|
recordQueryView.pagePrevBtn = pagePrevBtn
|
pagePrevBtn.bgColor(0x000000)
|
pagePrevBtn.setSize(screen.screenSize.width * (80 / 600), screen.screenSize.height * (80 / 1280)) // 进一步增加按钮尺寸
|
pagePrevBtn.radius(screen.screenSize.width * (10 / 600)) // 增加圆角
|
const pagePrevLbl = dxui.Label.build(screenMain.id + 'pagePrevLbl', pagePrevBtn)
|
pagePrevLbl.text("←")
|
pagePrevLbl.textFont(viewUtils.font(32)) // 进一步增大字体
|
pagePrevLbl.textColor(0xffffff) // 白色文字
|
pagePrevLbl.align(dxui.Utils.ALIGN.CENTER, 0, 0)
|
pagePrevBtn.align(dxui.Utils.ALIGN.BOTTOM_LEFT, screen.screenSize.width * (20 / 600), -screen.screenSize.height * (30 / 1280)) // 往下移动20px
|
|
const pageMidCont = dxui.View.build(screenMain.id + 'pageMidCont', screenMain)
|
const originalY = -screen.screenSize.height * (42 / 1280)
|
const keyboardUpY = -screen.screenSize.height * (320 / 1280) // Assumes keyboard height is around 400px
|
viewUtils._clearStyle(pageMidCont)
|
pageMidCont.align(dxui.Utils.ALIGN.BOTTOM_MID, 0, originalY)
|
pageMidCont.setSize(screen.screenSize.width * (300 / 600), screen.screenSize.height * (60 / 1280)) // Increase width and set a fixed height
|
pageMidCont.bgOpa(0)
|
pageMidCont.flexFlow(dxui.Utils.FLEX_FLOW.ROW)
|
pageMidCont.flexAlign(dxui.Utils.FLEX_ALIGN.CENTER, dxui.Utils.FLEX_ALIGN.CENTER, dxui.Utils.FLEX_ALIGN.CENTER)
|
|
const pageSelect = viewUtils.input(pageMidCont, screenMain.id + 'pageSelect', 2, () => {
|
let pageNum = Number(pageSelect.text())
|
const totalPage = recordQueryView.recordData.totalPage
|
|
// Auto-correct input value
|
if (pageNum < 1) {
|
pageNum = 1
|
}
|
if (pageNum > totalPage) {
|
pageNum = totalPage
|
}
|
|
const pageIndex = pageNum - 1
|
refreshRecordList(pageIndex, 3)
|
recordQueryView.nowPage = pageIndex
|
// Update input text with the corrected value
|
pageSelect.text(String(pageNum))
|
|
// After input is handled, move the container back to its original position
|
pageMidCont.align(dxui.Utils.ALIGN.BOTTOM_MID, 0, originalY)
|
})
|
recordQueryView.pageSelect = pageSelect
|
pageSelect.setSize(screen.screenSize.width * (150 / 600), screen.screenSize.height * (55 / 1280))
|
|
// Handle container movement when keyboard appears/disappears
|
pageSelect.on(dxui.Utils.EVENT.CLICK, () => {
|
pageMidCont.align(dxui.Utils.ALIGN.BOTTOM_MID, 0, keyboardUpY)
|
});
|
|
pageNextBtn.on(dxui.Utils.EVENT.CLICK, () => {
|
const nextPage = (recordQueryView.nowPage || 0) + 1
|
refreshRecordList(nextPage, 3)
|
recordQueryView.nowPage = nextPage
|
})
|
pagePrevBtn.on(dxui.Utils.EVENT.CLICK, () => {
|
const prevPage = (recordQueryView.nowPage || 0) - 1
|
refreshRecordList(prevPage, 3)
|
recordQueryView.nowPage = prevPage
|
})
|
const pageTotal = dxui.Label.build(screenMain.id + 'pageTotal', pageMidCont)
|
recordQueryView.pageTotal = pageTotal
|
pageTotal.text(" / 1")
|
pageTotal.textFont(viewUtils.font(22))
|
pageTotal.padLeft(screen.screenSize.width * (10 / 600))
|
}
|
|
// 刷新列表
|
function refreshRecordList(page, size) {
|
const recordData = screen.getPassRecord(page, size)
|
recordQueryView.recordData = recordData
|
|
const data = recordData.data
|
const totalPage = recordData.totalPage
|
const totalSize = recordData.totalSize
|
const currentPage = recordData.currentPage
|
|
|
if (currentPage == 1) {
|
recordQueryView.pagePrevBtn.disable(true)
|
recordQueryView.pagePrevBtn.hide()
|
} else {
|
recordQueryView.pagePrevBtn.disable(false)
|
recordQueryView.pagePrevBtn.show()
|
}
|
if (currentPage == totalPage || totalPage == 0) {
|
recordQueryView.pageNextBtn.disable(true)
|
recordQueryView.pageNextBtn.hide()
|
} else {
|
recordQueryView.pageNextBtn.disable(false)
|
recordQueryView.pageNextBtn.show()
|
}
|
if (totalPage == 0 || totalPage == 1) {
|
recordQueryView.pageSelect.hide()
|
recordQueryView.pageTotal.hide()
|
} else {
|
recordQueryView.pageSelect.show()
|
recordQueryView.pageTotal.show()
|
}
|
|
// Update the input field with the current page number
|
recordQueryView.pageSelect.text(String(currentPage))
|
recordQueryView.pageTotal.text("/ " + recordData.totalPage)
|
if (!data || data.length == 0) {
|
recordQueryView.items.forEach(item => {
|
item.item.hide()
|
})
|
recordQueryView.empty.show()
|
return
|
} else {
|
recordQueryView.empty.hide()
|
}
|
|
recordQueryView.items.forEach((item, index) => {
|
if (!data[index]) {
|
item.item.hide()
|
} else {
|
item.item.show()
|
let extra
|
let extra2
|
try {
|
extra = JSON.parse(data[index].extra)
|
if (data[index].extra2) {
|
extra2 = JSON.parse(data[index].extra2)
|
}
|
} catch (error) {
|
}
|
// 处理双人通行记录的姓名显示
|
if (extra && extra.name) {
|
if (extra2 && extra2.name) {
|
item.name.text(extra.name + " & " + extra2.name)
|
} else {
|
item.name.text(extra.name)
|
}
|
} else {
|
item.name.text(i18n.t('recordQueryView.stranger'))
|
}
|
// 处理双人通行记录的编号显示
|
if (data[index].userId2) {
|
item.id.text(" " + data[index].userId + " & " + data[index].userId2)
|
} else {
|
item.id.text(" " + data[index].userId)
|
}
|
|
const t = new Date(data[index].timeStamp * 1000)
|
|
|
// 补零函数
|
const pad = (n) => n < 10 ? `0${n}` : n;
|
|
item.timeStamp.text(" " + `${t.getFullYear()}-${pad(t.getMonth() + 1)}-${pad(t.getDate())} ${pad(t.getHours())}:${pad(t.getMinutes())}:${pad(t.getSeconds())}`)
|
|
let msg = ""
|
switch (data[index].type) {
|
case "200":
|
msg = i18n.t('recordQueryView.card')
|
break;
|
case "300":
|
msg = i18n.t('recordQueryView.face')
|
break;
|
case "400":
|
msg = i18n.t('recordQueryView.password')
|
break;
|
default:
|
break;
|
}
|
|
if (data[index].result == 0) {
|
msg += i18n.t('recordQueryView.success')
|
item.result.textColor(0x00ff00)
|
} else {
|
msg += i18n.t('recordQueryView.fail')
|
if (data[index].message) {
|
msg += " (" + data[index].message + ")"
|
}
|
item.result.textColor(0xff0000)
|
}
|
item.result.text(" " + msg)
|
}
|
})
|
}
|
export default recordQueryView
|