refactor: rename the theme brand and every identifier from AKSRT to Jio

Full-project rename. `git grep -i aksrt` is now empty apart from the
DBMigrator 3.3.0 changelog note that documents the rename itself.

Code identifiers
- PHP namespace AKSRT\ -> Jio\ (composer PSR-4 + 378 declarations)
- global constants AKSRT_* -> JIO_* (VERSION/DIR/URI, PAY_TYPE_*, CAPTCHA_*)
- procedural functions, hooks, options, meta keys, table names,
  cookies, query vars, ajax actions and nonces: aksrt_ -> jio_
- text domain aksrt -> jio; Theme Name -> Jio
- JS globals: aksrtData/aksrtAdminData/... -> jioData/jioAdminData/...,
  window.AKSRTCaptcha & friends -> window.JioCaptcha, Aksrt* -> Jio*
- Vue components Aks*.vue -> Jio*.vue (15 files renamed + imports)
- CSS classes/data-attrs/custom properties: aksrt- -> jio-
- REST namespace aksrt/v1 -> jio/v1 (incl. payment gateway callbacks)

Storage layer
- DB tables {prefix}aksrt_* -> {prefix}jio_*; SCHEMA_VERSION 3.2.0 -> 3.3.0
  so dbDelta creates the new names on install
- widget id_base aksrt_widget_* -> jio_widget_*
- uninstall.php drop list rebuilt from the actual migrator tables
  (dropped 3 stale entries, added the 17 missing ones)

Removed
- hardcoded https://api.aksrt.com/version.json default update endpoint;
  get_endpoint() now reads the 「更新端点」 setting and do_check() no-ops
  when it is empty

Files renamed: inc/helpers/aksrt-*.php -> jio-*.php (54),
assets/admin/src/components/form/Aks*.vue -> Jio*.vue (15).
Build artifacts regenerated: assets/css/build, assets/js/runtime,
assets/admin/build.

Verified: audit-psr4-paths errors=0, audit-admin-contracts errors=0
(warnings=56, unchanged baseline), 813/813 widget-system tests,
44/44 phpunit, php -l clean across all PHP.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Opus 5 committed 2026-11-01 20:05:04 +08:00
1 parent 5b16bc6e15
commit 35bb96e82f
997 files changed
+28216 -28188

No files matched your search

@@ -288,27 +288,27 @@ function addTemplate(rootElement, document, id, child) {
}
function makeCloseButton(document) {
return makeElement(document, 'button', { type: 'button', 'data-aksrt-dialog-close': '' }, '关闭');
return makeElement(document, 'button', { type: 'button', 'data-jio-dialog-close': '' }, '关闭');
}
function makeDetailFrame(document, text = '<img src=x onerror=alert(1)>') {
const form = makeElement(document, 'form', { method: 'post', class: 'aksrt-verify-dialog__frame', 'data-aksrt-verify-review': '' });
const head = makeElement(document, 'header', { class: 'aksrt-verify-dialog__head' });
head.appendChild(makeElement(document, 'h2', { id: 'aksrt-verify-dialog-title' }, '认证资料审核'));
head.appendChild(makeElement(document, 'p', { id: 'aksrt-verify-dialog-description' }, '核对申请人与所提交的材料。'));
const form = makeElement(document, 'form', { method: 'post', class: 'jio-verify-dialog__frame', 'data-jio-verify-review': '' });
const head = makeElement(document, 'header', { class: 'jio-verify-dialog__head' });
head.appendChild(makeElement(document, 'h2', { id: 'jio-verify-dialog-title' }, '认证资料审核'));
head.appendChild(makeElement(document, 'p', { id: 'jio-verify-dialog-description' }, '核对申请人与所提交的材料。'));
head.appendChild(makeCloseButton(document));
form.appendChild(head);
const body = makeElement(document, 'div', { class: 'aksrt-verify-dialog__body' });
body.appendChild(makeElement(document, 'div', { class: 'aksrt-verify-applicant' }, '申请人 17'));
const meta = makeElement(document, 'dl', { class: 'aksrt-verify-meta' });
const body = makeElement(document, 'div', { class: 'jio-verify-dialog__body' });
body.appendChild(makeElement(document, 'div', { class: 'jio-verify-applicant' }, '申请人 17'));
const meta = makeElement(document, 'dl', { class: 'jio-verify-meta' });
meta.appendChild(makeElement(document, 'div', {}, '用户资料'));
body.appendChild(meta);
const section = makeElement(document, 'section', { class: 'aksrt-verify-section' });
const section = makeElement(document, 'section', { class: 'jio-verify-section' });
section.appendChild(makeElement(document, 'h3', {}, '申请说明'));
section.appendChild(makeElement(document, 'div', { class: 'aksrt-verify-copy' }, text));
section.appendChild(makeElement(document, 'div', { class: 'jio-verify-copy' }, text));
body.appendChild(section);
const evidence = makeElement(document, 'ul', { class: 'aksrt-verify-evidence' });
const evidence = makeElement(document, 'ul', { class: 'jio-verify-evidence' });
const evidenceItem = makeElement(document, 'li');
const evidenceLink = makeElement(document, 'a', { href: 'https://example.test/evidence.jpg' });
evidenceLink.appendChild(makeElement(document, 'img', { src: 'https://example.test/thumb.jpg', alt: '证件材料' }));
@@ -317,8 +317,8 @@ function makeDetailFrame(document, text = '<img src=x onerror=alert(1)>') {
evidence.appendChild(evidenceItem);
body.appendChild(evidence);
const review = makeElement(document, 'section', { class: 'aksrt-verify-review' });
const decisions = makeElement(document, 'fieldset', { class: 'aksrt-verify-decisions' });
const review = makeElement(document, 'section', { class: 'jio-verify-review' });
const decisions = makeElement(document, 'fieldset', { class: 'jio-verify-decisions' });
decisions.appendChild(makeElement(document, 'legend', {}, '审核结果'));
for (const [value, label] of [['verified', '通过'], ['rejected', '拒绝']]) {
const choice = makeElement(document, 'label');
@@ -329,12 +329,12 @@ function makeDetailFrame(document, text = '<img src=x onerror=alert(1)>') {
}
review.appendChild(decisions);
const profile = makeElement(document, 'fieldset', { class: 'aksrt-verify-profile', 'data-aksrt-verify-profile': '', hidden: '', disabled: '' });
const nameField = makeElement(document, 'label', { class: 'aksrt-native-field' });
const profile = makeElement(document, 'fieldset', { class: 'jio-verify-profile', 'data-jio-verify-profile': '', hidden: '', disabled: '' });
const nameField = makeElement(document, 'label', { class: 'jio-native-field' });
nameField.appendChild(makeElement(document, 'span', {}, '认证名称'));
nameField.appendChild(makeElement(document, 'input', { type: 'text', name: 'name', maxlength: '64', required: '', value: 'Existing profile name', 'data-required-error': '请填写认证名称' }));
profile.appendChild(nameField);
const descriptionField = makeElement(document, 'label', { class: 'aksrt-native-field' });
const descriptionField = makeElement(document, 'label', { class: 'jio-native-field' });
descriptionField.appendChild(makeElement(document, 'span', {}, '认证说明'));
const description = makeElement(document, 'textarea', { name: 'description' });
description.value = 'Existing profile description';
@@ -342,15 +342,15 @@ function makeDetailFrame(document, text = '<img src=x onerror=alert(1)>') {
profile.appendChild(descriptionField);
review.appendChild(profile);
const noteLabel = makeElement(document, 'label', { class: 'aksrt-native-field' });
noteLabel.appendChild(makeElement(document, 'span', { 'data-aksrt-verify-note-label': '', 'data-optional': '处理留言(选填)', 'data-required': '拒绝原因(必填)' }, '处理留言(选填)'));
const noteLabel = makeElement(document, 'label', { class: 'jio-native-field' });
noteLabel.appendChild(makeElement(document, 'span', { 'data-jio-verify-note-label': '', 'data-optional': '处理留言(选填)', 'data-required': '拒绝原因(必填)' }, '处理留言(选填)'));
noteLabel.appendChild(makeElement(document, 'textarea', { name: 'note', 'data-required-error': '请填写拒绝原因' }));
review.appendChild(noteLabel);
body.appendChild(review);
form.appendChild(body);
const foot = makeElement(document, 'footer', { class: 'aksrt-verify-dialog__foot' });
foot.appendChild(makeElement(document, 'button', { type: 'submit', class: 'button button-primary', 'data-aksrt-verify-submit': '', 'data-idle-label': '请选择审核结果', 'data-approve-label': '确认通过', 'data-reject-label': '确认拒绝', 'data-busy-label': '正在提交…', disabled: '' }, '请选择审核结果'));
const foot = makeElement(document, 'footer', { class: 'jio-verify-dialog__foot' });
foot.appendChild(makeElement(document, 'button', { type: 'submit', class: 'button button-primary', 'data-jio-verify-submit': '', 'data-idle-label': '请选择审核结果', 'data-approve-label': '确认通过', 'data-reject-label': '确认拒绝', 'data-busy-label': '正在提交…', disabled: '' }, '请选择审核结果'));
form.appendChild(foot);
form.appendChild(makeElement(document, 'input', { type: 'hidden', name: '_wpnonce', value: 'nonce-17' }));
@@ -360,17 +360,17 @@ function makeDetailFrame(document, text = '<img src=x onerror=alert(1)>') {
}
function makeDeleteFrame(document) {
const form = makeElement(document, 'form', { method: 'post', class: 'aksrt-verify-dialog__frame', 'data-aksrt-verify-delete-form': '' });
const head = makeElement(document, 'header', { class: 'aksrt-verify-dialog__head' });
head.appendChild(makeElement(document, 'h2', { id: 'aksrt-verify-dialog-title' }, '删除认证记录'));
head.appendChild(makeElement(document, 'p', { id: 'aksrt-verify-dialog-description' }, '请确认后再继续。'));
const form = makeElement(document, 'form', { method: 'post', class: 'jio-verify-dialog__frame', 'data-jio-verify-delete-form': '' });
const head = makeElement(document, 'header', { class: 'jio-verify-dialog__head' });
head.appendChild(makeElement(document, 'h2', { id: 'jio-verify-dialog-title' }, '删除认证记录'));
head.appendChild(makeElement(document, 'p', { id: 'jio-verify-dialog-description' }, '请确认后再继续。'));
head.appendChild(makeCloseButton(document));
form.appendChild(head);
const body = makeElement(document, 'div', { class: 'aksrt-verify-dialog__body' });
body.appendChild(makeElement(document, 'div', { class: 'aksrt-native-callout is-danger' }, '删除不可撤销,只删除记录、材料与事件,不撤销已完成的认证。'));
const body = makeElement(document, 'div', { class: 'jio-verify-dialog__body' });
body.appendChild(makeElement(document, 'div', { class: 'jio-native-callout is-danger' }, '删除不可撤销,只删除记录、材料与事件,不撤销已完成的认证。'));
form.appendChild(body);
const foot = makeElement(document, 'footer', { class: 'aksrt-verify-dialog__foot' });
foot.appendChild(makeElement(document, 'button', { type: 'submit', 'data-aksrt-verify-submit': '', 'data-idle-label': '确认删除', 'data-busy-label': '正在提交…' }, '确认删除'));
const foot = makeElement(document, 'footer', { class: 'jio-verify-dialog__foot' });
foot.appendChild(makeElement(document, 'button', { type: 'submit', 'data-jio-verify-submit': '', 'data-idle-label': '确认删除', 'data-busy-label': '正在提交…' }, '确认删除'));
form.appendChild(foot);
form.appendChild(makeElement(document, 'input', { type: 'hidden', name: '_wpnonce', value: 'delete-nonce-17' }));
form.appendChild(makeElement(document, 'input', { type: 'hidden', name: 'application_uuid', value: 'delete-uuid-17' }));
@@ -378,34 +378,34 @@ function makeDeleteFrame(document) {
}
function makeReadonlyFrame(document) {
const frame = makeElement(document, 'div', { class: 'aksrt-verify-dialog__frame' });
const head = makeElement(document, 'header', { class: 'aksrt-verify-dialog__head' });
head.appendChild(makeElement(document, 'h2', { id: 'aksrt-verify-dialog-title' }, '认证记录详情'));
head.appendChild(makeElement(document, 'p', { id: 'aksrt-verify-dialog-description' }, '此记录仅供查看。'));
const frame = makeElement(document, 'div', { class: 'jio-verify-dialog__frame' });
const head = makeElement(document, 'header', { class: 'jio-verify-dialog__head' });
head.appendChild(makeElement(document, 'h2', { id: 'jio-verify-dialog-title' }, '认证记录详情'));
head.appendChild(makeElement(document, 'p', { id: 'jio-verify-dialog-description' }, '此记录仅供查看。'));
head.appendChild(makeCloseButton(document));
frame.appendChild(head);
frame.appendChild(makeElement(document, 'div', { class: 'aksrt-verify-dialog__body' }, '只读内容'));
frame.appendChild(makeElement(document, 'footer', { class: 'aksrt-verify-dialog__foot' }));
frame.appendChild(makeElement(document, 'div', { class: 'jio-verify-dialog__body' }, '只读内容'));
frame.appendChild(makeElement(document, 'footer', { class: 'jio-verify-dialog__foot' }));
return frame;
}
function setup() {
const document = new FakeDocument();
const rootElement = makeElement(document, 'main', { class: 'aksrt-verify-page' });
const view17 = makeElement(document, 'button', { type: 'button', 'data-aksrt-verify-view': '17', 'aria-controls': 'aksrt-verify-dialog' }, '查看审核');
const view18 = makeElement(document, 'button', { type: 'button', 'data-aksrt-verify-view': '18', 'aria-controls': 'aksrt-verify-dialog' }, '查看只读记录');
const delete17 = makeElement(document, 'button', { type: 'button', 'data-aksrt-verify-delete': '17', 'aria-controls': 'aksrt-verify-dialog' }, '删除');
const rootElement = makeElement(document, 'main', { class: 'jio-verify-page' });
const view17 = makeElement(document, 'button', { type: 'button', 'data-jio-verify-view': '17', 'aria-controls': 'jio-verify-dialog' }, '查看审核');
const view18 = makeElement(document, 'button', { type: 'button', 'data-jio-verify-view': '18', 'aria-controls': 'jio-verify-dialog' }, '查看只读记录');
const delete17 = makeElement(document, 'button', { type: 'button', 'data-jio-verify-delete': '17', 'aria-controls': 'jio-verify-dialog' }, '删除');
rootElement.appendChild(view17);
rootElement.appendChild(view18);
rootElement.appendChild(delete17);
const detailTemplate = addTemplate(rootElement, document, 'aksrt-verify-detail-17', makeDetailFrame(document));
const readonlyTemplate = addTemplate(rootElement, document, 'aksrt-verify-detail-18', makeReadonlyFrame(document));
const deleteTemplate = addTemplate(rootElement, document, 'aksrt-verify-delete-17', makeDeleteFrame(document));
const detailTemplate = addTemplate(rootElement, document, 'jio-verify-detail-17', makeDetailFrame(document));
const readonlyTemplate = addTemplate(rootElement, document, 'jio-verify-detail-18', makeReadonlyFrame(document));
const deleteTemplate = addTemplate(rootElement, document, 'jio-verify-delete-17', makeDeleteFrame(document));
const dialog = makeElement(document, 'dialog', {
id: 'aksrt-verify-dialog',
class: 'aksrt-verify-dialog',
'aria-labelledby': 'aksrt-verify-dialog-title',
'aria-describedby': 'aksrt-verify-dialog-description',
id: 'jio-verify-dialog',
class: 'jio-verify-dialog',
'aria-labelledby': 'jio-verify-dialog-title',
'aria-describedby': 'jio-verify-dialog-description',
});
document.body.appendChild(rootElement);
document.body.appendChild(dialog);
@@ -434,12 +434,12 @@ function fire(element, type, options = {}) { return element.dispatchEvent(new Fa
function reviewParts(form) {
return {
radios: form.querySelectorAll('input[name="status"]'),
profile: form.querySelector('[data-aksrt-verify-profile]'),
profile: form.querySelector('[data-jio-verify-profile]'),
name: form.querySelector('input[name="name"]'),
description: form.querySelector('textarea[name="description"]'),
note: form.querySelector('textarea[name="note"]'),
noteLabel: form.querySelector('[data-aksrt-verify-note-label]'),
submit: form.querySelector('[data-aksrt-verify-submit]'),
noteLabel: form.querySelector('[data-jio-verify-note-label]'),
submit: form.querySelector('[data-jio-verify-submit]'),
};
}
@@ -447,14 +447,14 @@ test('details and deletion clone only their own inert templates; no markup parsi
const app = setup();
assert.equal(app.dialog.children.length, 0, 'the shared dialog starts empty');
const sourceForm = app.detailTemplate.content.querySelector('form[data-aksrt-verify-review]');
const sourceForm = app.detailTemplate.content.querySelector('form[data-jio-verify-review]');
open(app.view17);
const firstForm = app.dialog.querySelector('form[data-aksrt-verify-review]');
const firstForm = app.dialog.querySelector('form[data-jio-verify-review]');
assert.ok(firstForm);
assert.notEqual(firstForm, sourceForm, 'dialog content is a deep clone, not the inert template node');
assert.equal(app.dialog.querySelectorAll('script').length, 0);
assert.match(app.dialog.querySelector('.aksrt-verify-copy').textContent, /<img src=x onerror=alert\(1\)>/);
assert.equal(app.dialog.querySelector('.aksrt-verify-copy').querySelector('img'), null, 'untrusted copy stays text');
assert.match(app.dialog.querySelector('.jio-verify-copy').textContent, /<img src=x onerror=alert\(1\)>/);
assert.equal(app.dialog.querySelector('.jio-verify-copy').querySelector('img'), null, 'untrusted copy stays text');
const parts = reviewParts(firstForm);
assert.equal(parts.name.value, 'Existing profile name', 'the clone keeps server-prefilled profile data');
@@ -465,25 +465,25 @@ test('details and deletion clone only their own inert templates; no markup parsi
assert.equal(parts.submit.textContent, '确认拒绝');
assert.equal(sourceForm.querySelector('textarea[name="note"]').value, '', 'editing the clone does not mutate the template');
app.dialog.querySelector('[data-aksrt-dialog-close]').click();
app.dialog.querySelector('[data-jio-dialog-close]').click();
assert.equal(app.dialog.children.length, 0, 'closing removes every cloned node');
assert.equal(app.document.activeElement, app.view17, 'close restores focus to the opener');
open(app.view17);
const secondForm = app.dialog.querySelector('form[data-aksrt-verify-review]');
const secondForm = app.dialog.querySelector('form[data-jio-verify-review]');
assert.notEqual(secondForm, firstForm, 'each open builds a fresh clone');
assert.equal(reviewParts(secondForm).radios.some((radio) => radio.checked), false);
assert.equal(reviewParts(secondForm).note.value, '', 'the previous note is not retained');
assert.equal(reviewParts(secondForm).name.value, 'Existing profile name', 'fresh clones preserve server-provided profile defaults');
app.dialog.querySelector('[data-aksrt-dialog-close]').click();
app.dialog.querySelector('[data-jio-dialog-close]').click();
open(app.delete17);
const deleteForm = app.dialog.querySelector('form[data-aksrt-verify-delete-form]');
const sourceDeleteForm = app.deleteTemplate.content.querySelector('form[data-aksrt-verify-delete-form]');
const deleteForm = app.dialog.querySelector('form[data-jio-verify-delete-form]');
const sourceDeleteForm = app.deleteTemplate.content.querySelector('form[data-jio-verify-delete-form]');
assert.ok(deleteForm);
assert.notEqual(deleteForm, sourceDeleteForm, 'deletion actions also clone their own inert template');
assert.equal(app.dialog.querySelector('form[data-aksrt-verify-review]'), null);
assert.equal(app.dialog.querySelector('.aksrt-native-callout.is-danger').textContent.includes('不撤销已完成的认证'), true);
assert.equal(app.dialog.querySelector('[data-aksrt-verify-submit]').textContent, '确认删除');
assert.equal(app.dialog.querySelector('form[data-jio-verify-review]'), null);
assert.equal(app.dialog.querySelector('.jio-native-callout.is-danger').textContent.includes('不撤销已完成的认证'), true);
assert.equal(app.dialog.querySelector('[data-jio-verify-submit]').textContent, '确认删除');
assert.equal(app.dialog.querySelectorAll('input[name="status"]').length, 0);
});
@@ -515,7 +515,7 @@ test('cancel, Escape, and backdrop close the dialog; backdrop must begin and end
test('review starts unselected and cannot submit before a decision', () => {
const app = setup();
open(app.view17);
const form = app.dialog.querySelector('form[data-aksrt-verify-review]');
const form = app.dialog.querySelector('form[data-jio-verify-review]');
const parts = reviewParts(form);
assert.equal(parts.radios.some((radio) => radio.checked), false);
assert.equal(parts.submit.disabled, true);
@@ -533,7 +533,7 @@ test('review starts unselected and cannot submit before a decision', () => {
test('approve reveals and enables profile fields; trimmed name validation and successful hidden fields are preserved', () => {
const app = setup();
open(app.view17);
const form = app.dialog.querySelector('form[data-aksrt-verify-review]');
const form = app.dialog.querySelector('form[data-jio-verify-review]');
const parts = reviewParts(form);
parts.radios[0].checked = true;
fire(parts.radios[0], 'change');
@@ -587,7 +587,7 @@ test('approve reveals and enables profile fields; trimmed name validation and su
test('reject hides profile fields, requires a trimmed reason, and applies danger action state', () => {
const app = setup();
open(app.view17);
const form = app.dialog.querySelector('form[data-aksrt-verify-review]');
const form = app.dialog.querySelector('form[data-jio-verify-review]');
const parts = reviewParts(form);
parts.radios[1].checked = true;
fire(parts.radios[1], 'change');
@@ -618,9 +618,9 @@ test('reject hides profile fields, requires a trimmed reason, and applies danger
test('delete submits without confirm, blocks repeat/close while busy, and pageshow restores actions and scroll lock', () => {
const app = setup();
open(app.delete17);
const form = app.dialog.querySelector('form[data-aksrt-verify-delete-form]');
const submitButton = form.querySelector('[data-aksrt-verify-submit]');
const closeButton = form.querySelector('[data-aksrt-dialog-close]');
const form = app.dialog.querySelector('form[data-jio-verify-delete-form]');
const submitButton = form.querySelector('[data-jio-verify-submit]');
const closeButton = form.querySelector('[data-jio-dialog-close]');
const first = submit(form);
assert.equal(first.defaultPrevented, false);
assert.equal(form.dataset.submitting, '1');
@@ -631,7 +631,7 @@ test('delete submits without confirm, blocks repeat/close while busy, and pagesh
assert.equal(form.querySelector('[name="application_uuid"]').value, 'delete-uuid-17');
assert.equal(form.querySelector('[name="_wpnonce"]').disabled, false);
assert.equal(form.querySelector('[name="application_uuid"]').disabled, false);
assert.equal(app.document.documentElement.classList.contains('aksrt-verify-modal-open'), true);
assert.equal(app.document.documentElement.classList.contains('jio-verify-modal-open'), true);
assert.equal(submit(form).defaultPrevented, true, 'duplicate delete submission is blocked');
const escape = new FakeEvent('keydown', { key: 'Escape', bubbles: false });
@@ -654,21 +654,21 @@ test('delete submits without confirm, blocks repeat/close while busy, and pagesh
assert.equal(closeButton.disabled, false);
assert.equal(submitButton.textContent, '确认删除');
assert.equal(app.dialog.open, true);
assert.equal(app.document.documentElement.classList.contains('aksrt-verify-modal-open'), true, 'an open dialog retains the scroll lock');
assert.equal(app.document.documentElement.classList.contains('jio-verify-modal-open'), true, 'an open dialog retains the scroll lock');
app.dialog.querySelector('[data-aksrt-dialog-close]').click();
assert.equal(app.document.documentElement.classList.contains('aksrt-verify-modal-open'), false);
app.dialog.querySelector('[data-jio-dialog-close]').click();
assert.equal(app.document.documentElement.classList.contains('jio-verify-modal-open'), false);
app.window.dispatchEvent(new FakeEvent('pageshow'));
assert.equal(app.document.documentElement.classList.contains('aksrt-verify-modal-open'), false, 'closed pageshow state is unlocked');
assert.equal(app.document.documentElement.classList.contains('jio-verify-modal-open'), false, 'closed pageshow state is unlocked');
});
test('read-only detail has no review submit behavior', () => {
const app = setup();
open(app.view18);
assert.ok(app.dialog.querySelector('.aksrt-verify-dialog__frame'));
assert.ok(app.dialog.querySelector('.jio-verify-dialog__frame'));
assert.equal(app.dialog.querySelector('form'), null);
assert.equal(app.dialog.querySelector('[data-aksrt-verify-submit]'), null);
assert.equal(app.dialog.querySelector('[data-jio-verify-submit]'), null);
assert.match(app.dialog.textContent, /此记录仅供查看/);
app.dialog.querySelector('[data-aksrt-dialog-close]').click();
app.dialog.querySelector('[data-jio-dialog-close]').click();
assert.equal(app.dialog.children.length, 0);
});