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, 6) }) const empty = dxui.Image.build(screenMain.id + 'empty', screenMain) recordQueryView.empty = empty empty.source('/app/code/resource/image/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, 70) const box = dxui.View.build(screenMain.id + 'box', screenMain) viewUtils._clearStyle(box) box.align(dxui.Utils.ALIGN.TOP_MID, 0, 150) box.setSize(screen.screenSize.width, 1000) 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(5, dxui.Utils.ENUM._LV_STYLE_STATE_CMP_SAME) recordQueryView.items = [] for (let i = 0; i < 6; i++) { const item = dxui.View.build(box.id + 'item' + i, box) viewUtils._clearStyle(item) item.setSize(760, 160) item.bgOpa(0) item.borderWidth(1) item.obj.setStyleBorderSide(dxui.Utils.ENUM.LV_BORDER_SIDE_BOTTOM, 0) item.setBorderColor(0x767676) const name = dxui.Label.build(item.id + 'name' + i, item) name.align(dxui.Utils.ALIGN.TOP_LEFT, 0, 5) name.textFont(viewUtils.font(24)) const code = dxui.Label.build(item.id + 'code' + i, item) code.align(dxui.Utils.ALIGN.TOP_LEFT, 0, 40) code.textFont(viewUtils.font(24)) code.dataI18n = 'recordQueryView.code' const codeValue = dxui.Label.build(item.id + 'codeValue' + i, item) codeValue.align(dxui.Utils.ALIGN.TOP_LEFT, 0, 40) codeValue.textFont(viewUtils.font(24)) codeValue.dataI18n = 'recordQueryView.codeValue' const time = dxui.Label.build(item.id + 'time' + i, item) time.align(dxui.Utils.ALIGN.TOP_LEFT, 0, 75) time.textFont(viewUtils.font(24)) time.dataI18n = 'recordQueryView.time' const timeValue = dxui.Label.build(item.id + 'timeValue' + i, item) timeValue.align(dxui.Utils.ALIGN.TOP_LEFT, 0, 75) timeValue.textFont(viewUtils.font(24)) timeValue.dataI18n = 'recordQueryView.timeValue' const result = dxui.Label.build(item.id + 'result' + i, item) result.align(dxui.Utils.ALIGN.TOP_LEFT, 0, 110) result.textFont(viewUtils.font(24)) result.dataI18n = 'recordQueryView.result' const resultValue = dxui.Label.build(item.id + 'resultValue' + i, item) resultValue.align(dxui.Utils.ALIGN.TOP_LEFT, 0, 110) resultValue.textFont(viewUtils.font(24)) resultValue.dataI18n = 'recordQueryView.resultValue' const moreBtn = dxui.Button.build(item.id + 'btn' + i, item) moreBtn.align(dxui.Utils.ALIGN.TOP_RIGHT, 0, 10) const moreBtnLbl = dxui.Label.build(item.id + 'btnLbl' + i, moreBtn) moreBtnLbl.textFont(viewUtils.font(24)) moreBtnLbl.text('详情') 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, time: timeValue, timeLbl: time, result: resultValue, resultLbl: result }) } const pageNextBtn = dxui.Button.build(screenMain.id + 'pageNextBtn', screenMain) recordQueryView.pageNextBtn = pageNextBtn pageNextBtn.bgColor(0x000000) const pageNextLbl = dxui.Label.build(screenMain.id + 'pageNextLbl', pageNextBtn) pageNextLbl.text("→") pageNextBtn.align(dxui.Utils.ALIGN.BOTTOM_RIGHT, -20, -52) pageNextBtn.textFont(viewUtils.font(20)) const pagePrevBtn = dxui.Button.build(screenMain.id + 'pagePrevBtn', screenMain) recordQueryView.pagePrevBtn = pagePrevBtn pagePrevBtn.bgColor(0x000000) const pagePrevLbl = dxui.Label.build(screenMain.id + 'pagePrevLbl', pagePrevBtn) pagePrevLbl.text("←") pagePrevBtn.align(dxui.Utils.ALIGN.BOTTOM_LEFT, 20, -52) pagePrevBtn.textFont(viewUtils.font(20)) const pageSelect = dxui.Dropdown.build(screenMain.id + 'pageSelect', screenMain) recordQueryView.pageSelect = pageSelect pageSelect.textFont(viewUtils.font(22)) pageSelect.getList().textFont(viewUtils.font(22)) pageSelect.setSize(150, 55) pageSelect.setSymbol('/app/code/resource/image/down.png') pageSelect.align(dxui.Utils.ALIGN.BOTTOM_MID, 0, -50) pageSelect.setOptions([]) pageSelect.on(dxui.Utils.EVENT.VALUE_CHANGED, () => { refreshRecordList(pageSelect.getSelected(), 6) recordQueryView.nowPage = pageSelect.getSelected() }) pageNextBtn.on(dxui.Utils.EVENT.CLICK, () => { refreshRecordList(pageSelect.getSelected() + 1, 6) if (!recordQueryView.nowPage) { recordQueryView.nowPage = 0 } recordQueryView.nowPage += 1 }) pagePrevBtn.on(dxui.Utils.EVENT.CLICK, () => { refreshRecordList(pageSelect.getSelected() - 1, 6) if (!recordQueryView.nowPage) { recordQueryView.nowPage = 0 } recordQueryView.nowPage -= 1 }) } // 刷新列表 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 const language = screen.getConfig()['base.language'] 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() } else { recordQueryView.pageSelect.show() } recordQueryView.pageSelect.setOptions(Array.from({ length: totalPage }, (_, index) => String(index + 1))) recordQueryView.pageSelect.setSelected(currentPage - 1) 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 try { extra = JSON.parse(data[index].extra) } catch (error) { } let extra2 try { extra2 = JSON.parse(data[index].extra2) } catch (error) { } // 显示姓名 let nameText = "" if (extra && extra.name) { nameText = extra.name } else { nameText = i18n.t('recordQueryView.stranger') } if (data[index].userId2 && extra2 && extra2.name) { nameText += " / " + extra2.name } item.name.text(nameText) // 显示人员编号 let idText = ":" + data[index].userId if (data[index].userId2) { idText += " / " + data[index].userId2 } item.id.text(idText) item.id.alignTo(item.idLbl, dxui.Utils.ALIGN.OUT_RIGHT_MID, 0, 0) const t = new Date(data[index].time * 1000) // 补零函数 const pad = (n) => n < 10 ? `0${n}` : n; item.time.text(":" + `${t.getFullYear()}-${pad(t.getMonth() + 1)}-${pad(t.getDate())} ${pad(t.getHours())}:${pad(t.getMinutes())}:${pad(t.getSeconds())}`) // item.time.text(":" + data[index].time) item.time.alignTo(item.timeLbl, dxui.Utils.ALIGN.OUT_RIGHT_MID, 0, 0) let msg = "" // 检查是否是特殊消息导致的失败 if (data[index].message === "气体浓度不合格") { msg = "气体浓度不合格" } else if (data[index].message === "双人认证超时") { msg = "双人认证超时" } else { 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; case "100": msg = i18n.t('recordQueryView.qrcode') break; case "101": msg = i18n.t('recordQueryView.qrcode') break; case "103": msg = i18n.t('recordQueryView.qrcode') break; default: break; } msg += language === 'CN' ? "" : " " if (data[index].result == 0) { msg += i18n.t('recordQueryView.success') } else { msg += i18n.t('recordQueryView.fail') } } item.result.text(":" + msg) item.result.alignTo(item.resultLbl, dxui.Utils.ALIGN.OUT_RIGHT_MID, 0, 0) } }) } export default recordQueryView