Преглед на файлове

添加菜单管理e2e测试

xyh преди 2 години
родител
ревизия
0e26363773

+ 10 - 6
cypress/e2e/department.cy.ts

@@ -41,12 +41,16 @@ describe('部门管理', function() {
     successIntercept('/department/delDepartment');
   });
 
+  const TABLE_NAME = 'department_table',
+        MODAL_NAME = 'department_modal',
+        LABEL = '部门';
+
   it('部门列表', function() {
-    validateTableList('department_table');
+    validateTableList(TABLE_NAME);
   });
 
   it('搜索', function() {
-    const validate = validateTableSearch('department_table');
+    const validate = validateTableSearch(TABLE_NAME);
 
     cy.get('#filter_departmentCode').type('TLD0004');
     cy.get('#filter_departmentName').clear();
@@ -58,8 +62,8 @@ describe('部门管理', function() {
   });
 
   const {validateAdd, validateEdit} = validatePut(
-    'department_modal',
-    '部门',
+    MODAL_NAME,
+    LABEL,
   );
 
   it('新增部门', function() {
@@ -75,10 +79,10 @@ describe('部门管理', function() {
       cy.getTestId('field_departmentName').should('have.value', '包装部门');
     }
 
-    validateEdit('department_table', validateField);
+    validateEdit(TABLE_NAME, validateField);
   });
 
   it('删除部门', function() {
-    validateDelete('department_table');
+    validateDelete(TABLE_NAME, LABEL);
   });
 });

+ 10 - 6
cypress/e2e/goods.cy.ts

@@ -39,20 +39,24 @@ describe('货品管理', function() {
     successIntercept('/goods/updateGoods');
   });
 
+  const TABLE_NAME = 'goods_table',
+        MODAL_NAME = 'goods_modal',
+        LABEL = '货品';
+
   it('表格', function() {
-    validateTableList('goods_table');
+    validateTableList(TABLE_NAME);
   });
 
   it('搜索', function() {
-    const validate = validateTableSearch('goods_table', 'searchCode');
+    const validate = validateTableSearch(TABLE_NAME, 'searchCode');
 
     cy.get('#filter_goodsCode').type('P00012');
     validate();
   });
 
   const {validateAdd, validateEdit} = validatePut(
-    'goods_modal',
-    '货品',
+    MODAL_NAME,
+    LABEL,
   );
 
   it('新增', function() {
@@ -96,10 +100,10 @@ describe('货品管理', function() {
       validateSelect('select_goodsUserDepartment', '物流部门');
     }
 
-    validateEdit('goods_table', validateField);
+    validateEdit(TABLE_NAME, validateField);
   });
 
   it('删除', function() {
-    validateDelete('goods_table');
+    validateDelete(TABLE_NAME, LABEL);
   });
 });

+ 154 - 0
cypress/e2e/menu.cy.ts

@@ -0,0 +1,154 @@
+import {
+  intercept,
+  loginIntercept,
+  loginSetup,
+  menuIntercept,
+  menuTrigger,
+  successIntercept,
+  tableBtnClick,
+  validateDelete,
+  validatePut,
+  validateTableList,
+  validateTableSearch,
+} from './utils';
+
+describe('菜单管理', function() {
+  beforeEach(function() {
+    loginIntercept();
+    menuIntercept();
+    loginSetup();
+    menuTrigger(3, 0);
+  });
+
+  beforeEach(function() {
+    intercept('/menu/getPage', function({reply, url: reqUrl}) {
+      const url = new URL(reqUrl);
+      const search = new URLSearchParams(url.search);
+
+      if (search.get('pId') !== '0') {
+        if (search.has('name') && search.get('name').length)
+          return reply({fixture: 'menu/childSearchList'});
+
+        const page = search.get('page');
+        return reply({fixture: `menu/childList${page}`});
+      }
+
+      if (search.has('name') && search.get('name').length)
+        return reply({fixture: 'menu/searchList'});
+
+      const page = search.get('page');
+      return reply({fixture: `menu/list${page}`});
+    });
+
+    successIntercept('/menu/addMenu');
+    successIntercept('/menu/updateMenu');
+    successIntercept('/menu/delMenu');
+  });
+
+  const TABLE_NAME = 'menu_table',
+        MODAL_NAME = 'menu_modal',
+        LABEL = '菜单';
+
+  it('表格', function() {
+    validateTableList(TABLE_NAME);
+  });
+
+  it('搜索', function() {
+    const validate = validateTableSearch(TABLE_NAME, '菜单搜索');
+
+    cy.get('#filter_menuName').type('name');
+
+    validate();
+  });
+
+  it('删除', function() {
+    validateDelete(TABLE_NAME, LABEL);
+  });
+
+  const {validateAdd, validateEdit} = validatePut(MODAL_NAME, LABEL);
+
+  it('新增', function() {
+    validateAdd(function() {
+      cy.getTestId('field_menuName').type('菜单名称');
+      cy.getTestId('field_menuUrl').type('/test');
+      cy.getTestId('field_menuOrderBy').clear().type('8');
+    });
+  });
+
+  it('修改', function() {
+    validateEdit(TABLE_NAME, function() {
+      cy.getTestId('field_menuName').should('have.value', '用户设置');
+      cy.getTestId('field_menuUrl').should('have.value', '.');
+      cy.getTestId('field_menuOrderBy').should('have.value', '1');
+    });
+  });
+
+  const CHILD_TALBE_NAME = 'child_menu_table',
+        CHILD_MODAL_NAME = 'child_menu_modal',
+        CHILD_LABEL = '菜单';
+
+  it('子菜单展示', function() {
+    tableBtnClick(TABLE_NAME, 2);
+
+    cy.getTestId('child_menu').should('exist').and('be.visible');
+
+    validateTableList(CHILD_TALBE_NAME);
+  });
+
+  it('子菜单关闭', function() {
+    tableBtnClick(TABLE_NAME, 2);
+
+    cy.getTestId('child_menu').should('exist').and('be.visible');
+
+    cy.getTestId('child_menu_back').click();
+    cy.getTestId('child_menu').should('not.exist');
+  });
+
+  it('子菜单查询', function() {
+    tableBtnClick(TABLE_NAME, 2);
+
+    const validate = validateTableSearch(
+      CHILD_TALBE_NAME,
+      'childMenuSearch',
+      {btnTestId: 'child_menu_search_btn'},
+    );
+    cy.get('#filter_childMenuName').type('子菜单名称');
+
+    validate();
+  });
+
+  it('子菜单删除', function() {
+    tableBtnClick(TABLE_NAME, 2);
+
+    validateDelete(CHILD_TALBE_NAME, CHILD_LABEL);
+  });
+
+  const {
+    validateAdd: childValidateAdd,
+    validateEdit: childValidateEdit,
+  } = validatePut(
+    CHILD_MODAL_NAME,
+    CHILD_LABEL,
+    {addBtnTestId: 'child_menu_add_btn'},
+  );
+
+  it('子菜单新增', function() {
+    tableBtnClick(TABLE_NAME, 2);
+
+    childValidateAdd(function() {
+      cy.getTestId('field_menuName').type('菜单名称');
+      cy.getTestId('field_menuUrl').type('/test');
+      cy.getTestId('field_menuOrderBy').clear().type('8');
+    });
+  });
+
+  it('子菜单修改', function() {
+    tableBtnClick(TABLE_NAME, 2);
+
+    childValidateEdit(CHILD_TALBE_NAME, function() {
+      cy.getTestId('field_menuName').should('have.value', '用户管理');
+      cy.getTestId('field_menuUrl').should('have.value', '/user');
+      cy.getTestId('field_menuOrderBy').should('have.value', '0');
+    });
+  });
+});

+ 12 - 9
cypress/e2e/role.cy.ts

@@ -10,6 +10,7 @@ import {
   successIntercept,
   normalIntercept,
   intercept,
+  tableBtnClick,
 } from './utils';
 
 describe('角色管理', function() {
@@ -38,20 +39,24 @@ describe('角色管理', function() {
     normalIntercept('/menu/getMenu', 'menu/all');
   });
 
+  const TABLE_NAME = 'role_table',
+        MODAL_NAME = 'role_modal',
+        LABEL = '角色';
+
   it('角色列表', function() {
-    validateTableList('role_table');
+    validateTableList(TABLE_NAME);
   });
 
   it('搜索', function() {
-    const validate = validateTableSearch('role_table', 'roleSearch');
+    const validate = validateTableSearch(TABLE_NAME, 'roleSearch');
 
     cy.get('#filter_roleName').type('roleName');
     validate();
   });
 
   const {validateAdd, validateEdit} = validatePut(
-    'role_modal',
-    '角色',
+    MODAL_NAME,
+    LABEL,
   );
 
   it('新增操作', function() {
@@ -62,20 +67,18 @@ describe('角色管理', function() {
   });
 
   it('修改操作', function() {
-    validateEdit('role_table', function() {
+    validateEdit(TABLE_NAME, function() {
       cy.get('#operation_roleName').should('have.value', '仓库管理员');
       cy.get('#operation_roleRemarks').should('have.value', 'cangk');
     });
   });
 
   it('删除操作', function() {
-    validateDelete('role_table');
+    validateDelete(TABLE_NAME, LABEL);
   });
 
   it('设置菜单权限', function() {
-    cy.getTestId('role_table').find('table').find('.ant-table-tbody')
-      .children('.ant-table-row').first().find('td').last().children().last()
-      .trigger('click');
+    tableBtnClick(TABLE_NAME, 2);
 
     cy.getTestId('role_tree_modal').find('h3')
       .should('include.html', '菜单权限');

+ 12 - 8
cypress/e2e/storage.cy.ts

@@ -50,12 +50,16 @@ describe('库位管理', function() {
     successIntercept('/storage/delStorage');
   });
 
+  const TABLE_NAME = 'storage_table',
+        MODAL_NAME = 'storage_modal',
+        LABEL = '库位';
+
   it('表格', function() {
-    validateTableList('storage_table');
+    validateTableList(TABLE_NAME);
   });
 
   it('搜索', function() {
-    const validate = validateTableSearch('storage_table');
+    const validate = validateTableSearch(TABLE_NAME);
 
     cy.get('#filter_storageName').type('库位');
     validate('searchName');
@@ -74,12 +78,12 @@ describe('库位管理', function() {
   });
 
   it('删除', function() {
-    validateDelete('storage_table');
+    validateDelete(TABLE_NAME, LABEL);
   });
 
   const {validateAdd, validateEdit} = validatePut(
-    'storage_modal',
-    '库位',
+    MODAL_NAME,
+    LABEL,
   );
 
   it('新增', function() {
@@ -93,9 +97,9 @@ describe('库位管理', function() {
   });
 
   it('修改', function() {
-    validateEdit('storage_table', function() {
-      cy.getTestId('storage_modal').should('exist').and('be.visible');
-      cy.getTestId('storage_modal').find('h3').should('include.text', '修改库位');
+    validateEdit(TABLE_NAME, function() {
+      cy.getTestId(MODAL_NAME).should('exist').and('be.visible');
+      cy.getTestId(MODAL_NAME).find('h3').should('include.text', '修改库位');
 
       cy.getTestId('field_storageLocationCode').should('have.value', '0001');
       cy.getTestId('field_storageLocationName').should('have.value', '1号库位');

+ 10 - 6
cypress/e2e/user.cy.ts

@@ -47,12 +47,16 @@ describe('用户管理', function() {
     successIntercept('/user/updateUser');
   });
 
+  const TABLE_NAME = 'user_table',
+        MODAL_NAME = 'user_add_modal',
+        LABEL = '用户';
+
   it('用户列表', function() {
-    validateTableList('user_table');
+    validateTableList(TABLE_NAME);
   });
 
   it('搜索', function() {
-    const validate = validateTableSearch('user_table');
+    const validate = validateTableSearch(TABLE_NAME);
     cy.get('.ant-pagination').find('li[title="2"]').click();
 
     cy.get('input[name="useName"]').type('admin');
@@ -65,12 +69,12 @@ describe('用户管理', function() {
   });
 
   it('删除操作', function() {
-    validateDelete('user_table');
+    validateDelete(TABLE_NAME, LABEL);
   });
 
   const {validateAdd, validateEdit} = validatePut(
-    'user_add_modal',
-    '用户',
+    MODAL_NAME,
+    LABEL,
   );
 
   it('新增操作', function() {
@@ -87,7 +91,7 @@ describe('用户管理', function() {
   });
 
   it('修改操作', function() {
-    validateEdit('user_table', function() {
+    validateEdit(TABLE_NAME, function() {
       cy.get('input[name="userName"]').should('have.value', '123412');
       cy.get('input[name="userPassword"]').should(
         'have.value',

+ 37 - 14
cypress/e2e/utils/utils.ts

@@ -22,28 +22,45 @@ export function validateTableList(tableName: string, firstPageNumber = 3, second
   cy.getTestId(tableName).find('table').find('.ant-table-tbody')
     .children('.ant-table-row').should('have.length', firstPageNumber);
 
-  cy.get('.ant-pagination').find('li[title="2"]').click();
+  cy.getTestId(tableName).siblings('.ant-pagination').find('li[title="2"]').click();
 
   cy.getTestId(tableName).find('table').find('.ant-table-tbody')
     .children('.ant-table-row').should('have.length', secondPageNumber);
 }
 
-export function validateTableSearch(tableName: string, value?: string) {
-  cy.get('.ant-pagination').find('li[title="2"]').click();
+export function validateTableSearch(
+  tableName: string,
+  value?: string,
+  options?: {btnTestId?: string},
+) {
+  cy.getTestId(tableName).siblings('.ant-pagination').find('li[title="2"]').click();
+  const {btnTestId} = options ?? {};
 
   return function(text?: string) {
-    cy.getTestId('search_btn').click();
+    cy.getTestId(btnTestId ?? 'search_btn').click();
 
     cy.getTestId(tableName).find('table').find('.ant-table-tbody')
       .children('.ant-table-row').first().find('td').first()
       .should('include.text', text ?? value);
 
-    cy.get('.ant-pagination').find('li[title="1"]')
+    cy.getTestId(tableName).siblings('.ant-pagination').find('li[title="1"]')
       .should('have.class', 'ant-pagination-item-active');
   };
 }
 
-export function validatePut(modalName: string, label: string) {
+export function tableBtnClick(tableName: string, index: number) {
+  cy.getTestId(tableName).find('table').find('.ant-table-tbody')
+    .children('.ant-table-row').first().find('td').last().children().eq(index)
+    .click();
+}
+
+export function validatePut(
+  modalName: string,
+  label: string,
+  options?: {addBtnTestId?: string},
+) {
+  const {addBtnTestId} = options ?? {};
+
   function validateBtnGroup() {
     cy.getTestId('modal_btn_group').find('.ant-btn').first()
       .should('have.class', 'ant-btn-loading');
@@ -52,7 +69,7 @@ export function validatePut(modalName: string, label: string) {
   }
 
   function validateAdd(fn: () => void) {
-    cy.getTestId('add_btn').click();
+    cy.getTestId(addBtnTestId ?? 'add_btn').click();
 
     cy.getTestId(modalName).should('exist').and('be.visible');
     cy.getTestId(modalName).find('h3')
@@ -69,9 +86,7 @@ export function validatePut(modalName: string, label: string) {
   }
 
   function validateEdit(tableName: string, validateFn: () => void) {
-    cy.getTestId(tableName).find('table').find('.ant-table-tbody')
-      .children('.ant-table-row').first().find('td').last().find('.ant-btn')
-      .first().click();
+    tableBtnClick(tableName, 0);
 
     cy.getTestId(modalName).should('exist').and('be.visible');
     cy.getTestId(modalName).find('h3').should('include.text', `修改${label}`);
@@ -89,12 +104,20 @@ export function validatePut(modalName: string, label: string) {
   return {validateAdd, validateEdit};
 }
 
-export function validateDelete(tableName: string) {
-  cy.getTestId(tableName).find('table').find('.ant-table-tbody')
-    .children('.ant-table-row').first().find('td').last().children().eq(1)
-    .click();
+export function validateDelete(
+  tableName: string,
+  label: string,
+) {
+  tableBtnClick(tableName, 1);
 
   cy.get('.ant-modal-content').should('be.visible');
+
+  cy.get('.ant-modal-confirm-title').should('include.text', `删除${label}`);
+  cy.get('.ant-modal-confirm-content').should(
+    'include.text',
+    `你确定要删除当前${label}吗?`,
+  );
+
   cy.get('.ant-modal-confirm-btns').children().last().trigger('click');
 
   cy.getTestId(tableName).find('table').find('.ant-table-tbody')

+ 62 - 0
cypress/fixtures/menu/childList1.json

@@ -0,0 +1,62 @@
+{
+  "msg": "200",
+  "data": {
+    "total": 13,
+    "list": [
+      {
+        "id": "23",
+        "name": "用户管理",
+        "url": "/user",
+        "pId": "15",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "0",
+        "menu": null,
+        "pid": "15"
+      },
+      {
+        "id": "16",
+        "name": "角色管理",
+        "url": "/role",
+        "pId": "15",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "1",
+        "menu": null,
+        "pid": "15"
+      },
+      {
+        "id": "24",
+        "name": "部门管理",
+        "url": "/department",
+        "pId": "15",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "2",
+        "menu": null,
+        "pid": "15"
+      }
+    ],
+    "pageNum": 1,
+    "pageSize": 10,
+    "size": 3,
+    "startRow": 1,
+    "endRow": 3,
+    "pages": 1,
+    "prePage": 0,
+    "nextPage": 0,
+    "isFirstPage": true,
+    "isLastPage": true,
+    "hasPreviousPage": false,
+    "hasNextPage": false,
+    "navigatePages": 8,
+    "navigatepageNums": [
+      1
+    ],
+    "navigateFirstPage": 1,
+    "navigateLastPage": 1
+  }
+}

+ 50 - 0
cypress/fixtures/menu/childList2.json

@@ -0,0 +1,50 @@
+{
+  "msg": "200",
+  "data": {
+    "total": 13,
+    "list": [
+      {
+        "id": "23",
+        "name": "用户管理",
+        "url": "/user",
+        "pId": "15",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "0",
+        "menu": null,
+        "pid": "15"
+      },
+      {
+        "id": "16",
+        "name": "角色管理",
+        "url": "/role",
+        "pId": "15",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "1",
+        "menu": null,
+        "pid": "15"
+      }
+    ],
+    "pageNum": 1,
+    "pageSize": 10,
+    "size": 3,
+    "startRow": 1,
+    "endRow": 3,
+    "pages": 1,
+    "prePage": 0,
+    "nextPage": 0,
+    "isFirstPage": true,
+    "isLastPage": true,
+    "hasPreviousPage": false,
+    "hasNextPage": false,
+    "navigatePages": 8,
+    "navigatepageNums": [
+      1
+    ],
+    "navigateFirstPage": 1,
+    "navigateLastPage": 1
+  }
+}

+ 62 - 0
cypress/fixtures/menu/childSearchList.json

@@ -0,0 +1,62 @@
+{
+  "msg": "200",
+  "data": {
+    "total": 3,
+    "list": [
+      {
+        "id": "23",
+        "name": "childMenuSearch",
+        "url": "/user",
+        "pId": "15",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "0",
+        "menu": null,
+        "pid": "15"
+      },
+      {
+        "id": "16",
+        "name": "角色管理",
+        "url": "/role",
+        "pId": "15",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "1",
+        "menu": null,
+        "pid": "15"
+      },
+      {
+        "id": "24",
+        "name": "部门管理",
+        "url": "/department",
+        "pId": "15",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "2",
+        "menu": null,
+        "pid": "15"
+      }
+    ],
+    "pageNum": 1,
+    "pageSize": 10,
+    "size": 3,
+    "startRow": 1,
+    "endRow": 3,
+    "pages": 1,
+    "prePage": 0,
+    "nextPage": 0,
+    "isFirstPage": true,
+    "isLastPage": true,
+    "hasPreviousPage": false,
+    "hasNextPage": false,
+    "navigatePages": 8,
+    "navigatepageNums": [
+      1
+    ],
+    "navigateFirstPage": 1,
+    "navigateLastPage": 1
+  }
+}

+ 62 - 0
cypress/fixtures/menu/list1.json

@@ -0,0 +1,62 @@
+{
+  "msg": "200",
+  "data": {
+    "total": 13,
+    "list": [
+      {
+        "id": "15",
+        "name": "用户设置",
+        "url": ".",
+        "pId": "0",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "1",
+        "menu": null,
+        "pid": "0"
+      },
+      {
+        "id": "25",
+        "name": "仓库管理",
+        "url": ".",
+        "pId": "0",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "2",
+        "menu": null,
+        "pid": "0"
+      },
+      {
+        "id": "13",
+        "name": "系统设置",
+        "url": ".",
+        "pId": "0",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "999",
+        "menu": null,
+        "pid": "0"
+      }
+    ],
+    "pageNum": 1,
+    "pageSize": 10,
+    "size": 3,
+    "startRow": 1,
+    "endRow": 3,
+    "pages": 1,
+    "prePage": 0,
+    "nextPage": 0,
+    "isFirstPage": true,
+    "isLastPage": true,
+    "hasPreviousPage": false,
+    "hasNextPage": false,
+    "navigatePages": 8,
+    "navigatepageNums": [
+      1
+    ],
+    "navigateFirstPage": 1,
+    "navigateLastPage": 1
+  }
+}

+ 50 - 0
cypress/fixtures/menu/list2.json

@@ -0,0 +1,50 @@
+{
+  "msg": "200",
+  "data": {
+    "total": 13,
+    "list": [
+      {
+        "id": "15",
+        "name": "用户设置",
+        "url": ".",
+        "pId": "0",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "1",
+        "menu": null,
+        "pid": "0"
+      },
+      {
+        "id": "25",
+        "name": "仓库管理",
+        "url": ".",
+        "pId": "0",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "2",
+        "menu": null,
+        "pid": "0"
+      }
+    ],
+    "pageNum": 1,
+    "pageSize": 10,
+    "size": 3,
+    "startRow": 1,
+    "endRow": 3,
+    "pages": 1,
+    "prePage": 0,
+    "nextPage": 0,
+    "isFirstPage": true,
+    "isLastPage": true,
+    "hasPreviousPage": false,
+    "hasNextPage": false,
+    "navigatePages": 8,
+    "navigatepageNums": [
+      1
+    ],
+    "navigateFirstPage": 1,
+    "navigateLastPage": 1
+  }
+}

+ 62 - 0
cypress/fixtures/menu/searchList.json

@@ -0,0 +1,62 @@
+{
+  "msg": "200",
+  "data": {
+    "total": 3,
+    "list": [
+      {
+        "id": "15",
+        "name": "菜单搜索",
+        "url": ".",
+        "pId": "0",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "1",
+        "menu": null,
+        "pid": "0"
+      },
+      {
+        "id": "25",
+        "name": "仓库管理",
+        "url": ".",
+        "pId": "0",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "2",
+        "menu": null,
+        "pid": "0"
+      },
+      {
+        "id": "13",
+        "name": "系统设置",
+        "url": ".",
+        "pId": "0",
+        "idCode": null,
+        "page": 0,
+        "limit": 0,
+        "orderBy": "999",
+        "menu": null,
+        "pid": "0"
+      }
+    ],
+    "pageNum": 1,
+    "pageSize": 10,
+    "size": 3,
+    "startRow": 1,
+    "endRow": 3,
+    "pages": 1,
+    "prePage": 0,
+    "nextPage": 0,
+    "isFirstPage": true,
+    "isLastPage": true,
+    "hasPreviousPage": false,
+    "hasNextPage": false,
+    "navigatePages": 8,
+    "navigatepageNums": [
+      1
+    ],
+    "navigateFirstPage": 1,
+    "navigateLastPage": 1
+  }
+}