mh-two-thousand-and-two
2024-04-16 d4211fd96865e58217d63efaf4d8f6609fb24ae6
更新数据
23个文件已修改
1个文件已添加
1936 ■■■■■ 已修改文件
package-lock.json 299 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/index.js 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/advancedSearch/advancedSearch.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/form/form.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/headNav/headNav.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/Login/Login.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/Register/Register.vue 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/TcmSystem/TcmSystem.vue 196 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/changePassword/changePassword.vue 104 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/characterMap/characterMap.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/characterRelation/characterRelation.vue 250 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/forgetPass/forgetPass.vue 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/index/index.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/knowledgeBase/knowledgeBase.vue 631 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/repository/repository.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/territory/territory.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/index.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/module/user.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/uni_modules/luanqing-search/components/luanqing-search/luanqing-search.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/uni_modules/next-search-more/components/next-search-more/next-search-more.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/Crypto.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request/req1.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json
@@ -3793,11 +3793,90 @@
          "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
          "dev": true
        },
        "ansi-styles": {
          "version": "4.3.0",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/ansi-styles/-/ansi-styles-4.3.0.tgz",
          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
          "dev": true,
          "optional": true,
          "requires": {
            "color-convert": "^2.0.1"
          }
        },
        "chalk": {
          "version": "4.1.2",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/chalk/-/chalk-4.1.2.tgz",
          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
          "dev": true,
          "optional": true,
          "requires": {
            "ansi-styles": "^4.1.0",
            "supports-color": "^7.1.0"
          }
        },
        "color-convert": {
          "version": "2.0.1",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/color-convert/-/color-convert-2.0.1.tgz",
          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
          "dev": true,
          "optional": true,
          "requires": {
            "color-name": "~1.1.4"
          }
        },
        "color-name": {
          "version": "1.1.4",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/color-name/-/color-name-1.1.4.tgz",
          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
          "dev": true,
          "optional": true
        },
        "has-flag": {
          "version": "4.0.0",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/has-flag/-/has-flag-4.0.0.tgz",
          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
          "dev": true,
          "optional": true
        },
        "hash-sum": {
          "version": "2.0.0",
          "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz",
          "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
          "dev": true
        },
        "loader-utils": {
          "version": "2.0.4",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/loader-utils/-/loader-utils-2.0.4.tgz",
          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
          "dev": true,
          "optional": true,
          "requires": {
            "big.js": "^5.2.2",
            "emojis-list": "^3.0.0",
            "json5": "^2.1.2"
          }
        },
        "supports-color": {
          "version": "7.2.0",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/supports-color/-/supports-color-7.2.0.tgz",
          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
          "dev": true,
          "optional": true,
          "requires": {
            "has-flag": "^4.0.0"
          }
        },
        "vue-loader-v16": {
          "version": "npm:vue-loader@16.8.3",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/vue-loader/-/vue-loader-16.8.3.tgz",
          "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
          "dev": true,
          "optional": true,
          "requires": {
            "chalk": "^4.1.0",
            "hash-sum": "^2.0.0",
            "loader-utils": "^2.0.0"
          }
        }
      }
    },
@@ -4200,6 +4279,15 @@
      "resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz",
      "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
      "dev": true
    },
    "adler-32": {
      "version": "1.2.0",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/adler-32/-/adler-32-1.2.0.tgz",
      "integrity": "sha512-/vUqU/UY4MVeFsg+SsK6c+/05RZXIHZMGJA+PX5JyWI0ZRcBpupnRuPLU/NXXoFwMYCPCoxIfElM2eS+DUXCqQ==",
      "requires": {
        "exit-on-epipe": "~1.0.1",
        "printj": "~1.1.0"
      }
    },
    "after": {
      "version": "0.8.2",
@@ -4924,6 +5012,11 @@
      "resolved": "https://registry.npmmirror.com/blob/-/blob-0.0.5.tgz",
      "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig=="
    },
    "blob.js": {
      "version": "1.0.1",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/blob.js/-/blob.js-1.0.1.tgz",
      "integrity": "sha512-TkPuWPeCHBbN+LWFg7BlXdSh6stRxwmAbuirKfiiHTMmo/uQfKFQMx2jrxVUkueKRiG+Tc7Os1Zn618Yc0MZpg=="
    },
    "bluebird": {
      "version": "3.7.2",
      "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz",
@@ -5405,6 +5498,22 @@
      "resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz",
      "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
    },
    "cfb": {
      "version": "1.2.2",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/cfb/-/cfb-1.2.2.tgz",
      "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
      "requires": {
        "adler-32": "~1.3.0",
        "crc-32": "~1.2.0"
      },
      "dependencies": {
        "adler-32": {
          "version": "1.3.1",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/adler-32/-/adler-32-1.3.1.tgz",
          "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A=="
        }
      }
    },
    "chalk": {
      "version": "2.4.2",
      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
@@ -5694,6 +5803,22 @@
        "q": "^1.1.2"
      }
    },
    "codepage": {
      "version": "1.14.0",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/codepage/-/codepage-1.14.0.tgz",
      "integrity": "sha512-iz3zJLhlrg37/gYRWgEPkaFTtzmnEv1h+r7NgZum2lFElYQPi0/5bnmuDfODHxfp0INEfnRqyfyeIJDbb7ahRw==",
      "requires": {
        "commander": "~2.14.1",
        "exit-on-epipe": "~1.0.1"
      },
      "dependencies": {
        "commander": {
          "version": "2.14.1",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/commander/-/commander-2.14.1.tgz",
          "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw=="
        }
      }
    },
    "collect-v8-coverage": {
      "version": "1.0.2",
      "resolved": "https://registry.npmmirror.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
@@ -5753,8 +5878,7 @@
    "commander": {
      "version": "2.17.1",
      "resolved": "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz",
      "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
      "dev": true
      "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
    },
    "commondir": {
      "version": "1.0.1",
@@ -6098,6 +6222,11 @@
        "js-yaml": "^3.13.1",
        "parse-json": "^4.0.0"
      }
    },
    "crc-32": {
      "version": "1.2.2",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/crc-32/-/crc-32-1.2.2.tgz",
      "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="
    },
    "create-ecdh": {
      "version": "4.0.4",
@@ -7488,6 +7617,11 @@
      "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
      "dev": true
    },
    "exit-on-epipe": {
      "version": "1.0.1",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
      "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw=="
    },
    "expand-brackets": {
      "version": "2.1.4",
      "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz",
@@ -7786,6 +7920,11 @@
        "schema-utils": "^2.5.0"
      }
    },
    "file-saver": {
      "version": "1.3.8",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/file-saver/-/file-saver-1.3.8.tgz",
      "integrity": "sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg=="
    },
    "file-type": {
      "version": "9.0.0",
      "resolved": "https://registry.npmmirror.com/file-type/-/file-type-9.0.0.tgz",
@@ -7942,6 +8081,11 @@
      "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
      "dev": true
    },
    "frac": {
      "version": "1.1.2",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/frac/-/frac-1.1.2.tgz",
      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
    },
    "fragment-cache": {
      "version": "0.2.1",
@@ -11010,6 +11154,17 @@
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/js-cookie/-/js-cookie-3.0.5.tgz",
      "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw=="
    },
    "js-export-excel": {
      "version": "1.1.4",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/js-export-excel/-/js-export-excel-1.1.4.tgz",
      "integrity": "sha512-19m7e3Gnn4CRfHXoFrLYj4fFfJ/KpvI7HRRn25p4GXYD+AlTV+1oU24NH6S904Ksi44tSx7futxhouOPAQ22oQ==",
      "requires": {
        "blob.js": "^1.0.1",
        "file-saver": "^1.3.3",
        "script-loader": "0.7.2",
        "xlsx": "0.16.3"
      }
    },
    "js-message": {
      "version": "1.0.7",
      "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz",
@@ -13489,6 +13644,11 @@
        }
      }
    },
    "printj": {
      "version": "1.1.2",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/printj/-/printj-1.1.2.tgz",
      "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ=="
    },
    "process": {
      "version": "0.11.10",
      "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz",
@@ -13691,6 +13851,11 @@
        "iconv-lite": "0.4.24",
        "unpipe": "1.0.0"
      }
    },
    "raw-loader": {
      "version": "0.5.1",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/raw-loader/-/raw-loader-0.5.1.tgz",
      "integrity": "sha512-sf7oGoLuaYAScB4VGr0tzetsYlS8EJH6qnTCfQ/WVEa89hALQ4RQfCKt5xCyPQKPDUbVUAIP1QsxAwfAjlDp7Q=="
    },
    "rc": {
      "version": "1.2.8",
@@ -14312,6 +14477,14 @@
        "@types/json-schema": "^7.0.5",
        "ajv": "^6.12.4",
        "ajv-keywords": "^3.5.2"
      }
    },
    "script-loader": {
      "version": "0.7.2",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/script-loader/-/script-loader-0.7.2.tgz",
      "integrity": "sha512-UMNLEvgOAQuzK8ji8qIscM3GIrRCWN6MmMXGD4SD5l6cSycgGsCo0tX5xRnfQcoghqct0tjHjcykgI1PyBE2aA==",
      "requires": {
        "raw-loader": "~0.5.1"
      }
    },
    "select-hose": {
@@ -15043,6 +15216,14 @@
      "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
      "dev": true
    },
    "ssf": {
      "version": "0.11.2",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/ssf/-/ssf-0.11.2.tgz",
      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
      "requires": {
        "frac": "~1.1.2"
      }
    },
    "sshpk": {
      "version": "1.18.0",
@@ -16394,94 +16575,6 @@
        "vue-style-loader": "^4.1.0"
      }
    },
    "vue-loader-v16": {
      "version": "npm:vue-loader@16.8.3",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/vue-loader/-/vue-loader-16.8.3.tgz",
      "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
      "dev": true,
      "optional": true,
      "requires": {
        "chalk": "^4.1.0",
        "hash-sum": "^2.0.0",
        "loader-utils": "^2.0.0"
      },
      "dependencies": {
        "ansi-styles": {
          "version": "4.3.0",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/ansi-styles/-/ansi-styles-4.3.0.tgz",
          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
          "dev": true,
          "optional": true,
          "requires": {
            "color-convert": "^2.0.1"
          }
        },
        "chalk": {
          "version": "4.1.2",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/chalk/-/chalk-4.1.2.tgz",
          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
          "dev": true,
          "optional": true,
          "requires": {
            "ansi-styles": "^4.1.0",
            "supports-color": "^7.1.0"
          }
        },
        "color-convert": {
          "version": "2.0.1",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/color-convert/-/color-convert-2.0.1.tgz",
          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
          "dev": true,
          "optional": true,
          "requires": {
            "color-name": "~1.1.4"
          }
        },
        "color-name": {
          "version": "1.1.4",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/color-name/-/color-name-1.1.4.tgz",
          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
          "dev": true,
          "optional": true
        },
        "has-flag": {
          "version": "4.0.0",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/has-flag/-/has-flag-4.0.0.tgz",
          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
          "dev": true,
          "optional": true
        },
        "hash-sum": {
          "version": "2.0.0",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/hash-sum/-/hash-sum-2.0.0.tgz",
          "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
          "dev": true,
          "optional": true
        },
        "loader-utils": {
          "version": "2.0.4",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/loader-utils/-/loader-utils-2.0.4.tgz",
          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
          "dev": true,
          "optional": true,
          "requires": {
            "big.js": "^5.2.2",
            "emojis-list": "^3.0.0",
            "json5": "^2.1.2"
          }
        },
        "supports-color": {
          "version": "7.2.0",
          "resolved": "https://mirrors.huaweicloud.com/repository/npm/supports-color/-/supports-color-7.2.0.tgz",
          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
          "dev": true,
          "optional": true,
          "requires": {
            "has-flag": "^4.0.0"
          }
        }
      }
    },
    "vue-style-loader": {
      "version": "4.1.3",
      "resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz",
@@ -17216,6 +17309,16 @@
        "has-tostringtag": "^1.0.2"
      }
    },
    "wmf": {
      "version": "1.0.2",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/wmf/-/wmf-1.0.2.tgz",
      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
    },
    "word": {
      "version": "0.3.0",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/word/-/word-0.3.0.tgz",
      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
    },
    "word-wrap": {
      "version": "1.2.5",
      "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz",
@@ -17330,6 +17433,22 @@
        "xtend": "^4.0.0"
      }
    },
    "xlsx": {
      "version": "0.16.3",
      "resolved": "https://mirrors.huaweicloud.com/repository/npm/xlsx/-/xlsx-0.16.3.tgz",
      "integrity": "sha512-LInZ1OK6vpe+Em8XDZ5gDH3WixARwxI7UWc+3chLeafI6gUwECEgL43k4Tjbs1uRfkxpM7wQFy5DLE0hFBRqRw==",
      "requires": {
        "adler-32": "~1.2.0",
        "cfb": "^1.1.4",
        "codepage": "~1.14.0",
        "commander": "~2.17.1",
        "crc-32": "~1.2.0",
        "exit-on-epipe": "~1.0.1",
        "ssf": "~0.11.2",
        "wmf": "~1.0.1",
        "word": "~0.3.0"
      }
    },
    "xml-name-validator": {
      "version": "3.0.0",
      "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
package.json
@@ -75,6 +75,7 @@
    "element-ui": "^2.15.14",
    "flyio": "^0.6.2",
    "js-cookie": "^3.0.5",
    "js-export-excel": "^1.1.4",
    "querystring": "^0.2.1",
    "sass": "^1.74.1",
    "uview-ui": "^2.0.37",
src/api/index.js
@@ -12,17 +12,14 @@
// 验证码   /account/verifyCode
export const getverifyCode = (req) => {
    return new Promise((resolve, reject) => {
        return req1.post('/account/verifyCode', {
            data: qs.encode(req),
    console.log(req, qs.encode(req), 'rrr');
    return req1({
        url: "/account/verifyCode",
        method: "post",
        data: req,
            headers: {
                "Content-Type": "application/x-www-form-urlencoded",
            'Content-Type': 'multipart/form-data'
            }
        }).then((res) => {
            resolve(res)
        }).catch((err) => {
            reject(err)
        })
    })
}
@@ -135,6 +132,7 @@
        // data:Obj
    })
}
// 医学人物知识库高级检索  
export const getAdvanceSearch = (Obj) => {
    return req1({
@@ -157,14 +155,23 @@
}
// 医学人物知识库
// 检索页
// 基础、高级检索 ------------------------------
export const getList = (person) => {
export const getPList = (person) => {
    return req1({
        url: '/person/list',
        method: 'post',
        data: person
    })
}
// 检索数据到出
export const getPDownload = () => {
    return req1({
        url: '/person/download',
        method: 'post'
    })
}
// -------------------------P
@@ -201,4 +208,15 @@
        data:Obj
    })
}
// -----------
// 中国医学人物知识库
// 数据统计
export const getPDataStatistics = () => {
    return req1({
        url: '/person/dataStatistics',
        method: 'post'
    })
}
// ----------------
src/components/advancedSearch/advancedSearch.vue
@@ -134,7 +134,8 @@
                // console.log(val);
            },
            onSubmit(val) {
                console.log(val);
                this.$emit('onSubmit', val)
                // console.log(val);
            },
        }
    }
src/components/form/form.vue
@@ -5,7 +5,7 @@
            <el-row :gutter="10">
                <el-form-item style="width: 30%;" v-for="(item, i) in from.from" :key="i" :label="item.label">
                    <el-input v-if="item.type === 'input'" v-model="item.value" :placeholder="item.label"></el-input>
                    <el-input v-if="item.type === 'number'" type="number" v-model.number="item.value"
                    <el-input v-if="item.type === 'number'" min="1"  type="number" v-model.number="item.value"
                        :placeholder="item.label"></el-input>
                    <el-select v-else-if="item.type === 'select'" v-model="item.value" :placeholder="item.label">
                        <el-option v-for="(option, optionIndex) in item.options" :key="optionIndex"
src/components/headNav/headNav.vue
@@ -3,7 +3,7 @@
        <view class="NavTop flex" :style="{backgroundImage: 'url('+ bg + ')'}">
            <view class="santiaogang" style="width: .34rem;height: .34rem;margin-right: 3rem;"
                @click="menuNav = !menuNav"><img style="width: 100%;height: 100%;"
                    src="../../static/中医人物知识库0201/三条杠.png" alt="" /></view>
                    src="@/static/中医人物知识库0201/三条杠.png" alt="" /></view>
            <view class="flex" style="letter-spacing: 5rpx;">
                <view class="logo"></view>
                <view class="" style="margin-left: .19rem;font-size: .24rem;font-family: cursive;font-weight: 900;">
@@ -21,8 +21,6 @@
                        :style="{'backgroundColor':searchBg==true?'#244A7B':'#DA7A2B'}"
                        style="background-color: #000;border-radius: 50%;margin-top: -4rpx;"></view>
                </view>
                <!-- <img style="border-radius: 50%;display: inline-block;" src="../../static/image/search.png" alt="" /> -->
                <!-- <img class="cursor" @click="changePassword(1)" src="@/static/image/profile.svg" alt="" /> -->
                <el-dropdown trigger="click" @command="handleCommand">
                    <!-- <view @click="iconClick(2)" class="s2 ss1 "></view> -->
                    <img class="cursor" @click="changePassword(1)" src="@/static/image/profile.svg" alt="" />
@@ -223,7 +221,7 @@
                    });
                } else if (index === '1') {
                    uni.navigateTo({
                        url: '/pages/repository/repository?id=' + 1
                        url:'/pages/characterRelation/characterRelation?id=' + 1
                    });
                } else if (index === '2') {
                    uni.navigateTo({
src/pages.json
@@ -141,7 +141,8 @@
            "style" : 
            {
                "navigationBarTitleText" : "",
                "enablePullDownRefresh" : false
                "enablePullDownRefresh" : false,
                "navigationStyle": "custom"
            }
        }
    ],
src/pages/Login/Login.vue
@@ -18,6 +18,7 @@
                    <view class="LoginBg"></view>
                    <view class=""> </view>
                </view>
                <el-form :hide-required-asterisk="true" ref="formLogin1" label-position="top" :rules="rules1"
                    :model="loginData">
                    <el-form-item label="登录账号" prop="loginID">
@@ -52,7 +53,9 @@
</template>
<script>
    import CryptoJS from 'crypto-js';
    import {
        encryptAES,decryptAES
    } from '@/utils/Crypto.js'
    import {
        nextTick
    } from "vue";
@@ -104,7 +107,9 @@
                        required: true,
                        message: '请输入登录账号',
                        trigger: 'blur'
                    }],
                    },
                    ],
                    pass: [{
                            required: true,
                            message: '请输入密码',
@@ -174,8 +179,8 @@
                // 登录用户账号
                loginData: {
                    // 账号
                    loginID: 'bbb',
                    pass: 'acy2jnwt/loR44ytIPPZBg=='
                    loginID: '',
                    pass: ''
                },
                // 书籍数据
                listData: [{
@@ -269,19 +274,14 @@
            },
            // 用户登录
            async Login(formName) {
                // let Obj = {
                //     username: this.loginData.loginID,
                //     password: this.loginData.pass,
                // }
                // AES 加密
                console.log(this.loginData.pass);
                const encrypted = CryptoJS.AES.encrypt(this.loginData.pass, 'secret passphrase');
                console.log(decryptAES(this.loginData.pass),'this.loginData.pass');
                let Obj = {
                    username: this.loginData.loginID,
                    // encryptAES(this.loginData.pass) | this.loginData.pass
                    password: encryptAES(this.loginData.pass),
                }
                console.log(Obj, 'Obj');
                // 将加密结果转换为 Base64
                const base64Result = encrypted.toString(CryptoJS.enc.Base64);
                // 输出加密后并转换为 Base64 的结果
                console.log('Encrypted and Base64 encoded password:', base64Result);
                let res = await getLogin(Obj)
                console.log(res, 'sfdsf');
                if (res.success) {
@@ -293,6 +293,9 @@
                    await getUserInfo().then(res => {
                        console.log(res, 'rrrrrrrrrrsd');
                    })
                    // 将账号存入到vuex中
                    this.$store.dispatch('setUserName',res.object.username)
                    uni.redirectTo({
                        url: '/pages/index/index'
                    })
src/pages/Register/Register.vue
@@ -62,15 +62,18 @@
        <view class="fff"></view>
        <!-- 底部花的背景图右侧 -->
        <view class="rrr"></view>
        <Footer1 />
    </view>
</template>
<script>
    import {
        getaddLogin,getverifyCode
        getaddLogin,
        getverifyCode
    } from '@/api/index.js'
    import {
        encryptAES
    } from '@/utils/Crypto.js'
    import {
        nextTick
    } from "vue";
@@ -118,7 +121,13 @@
                        required: true,
                        message: '请输入登录账号',
                        trigger: 'blur'
                    }],
                        },
                        {
                            pattern: /^[a-zA-Z0-9]{3,15}$/,
                            message: '请输入3-15个字符的字母或数字',
                            trigger: 'blur'
                        } // 自定义校验规则,使用正则表达式
                    ],
                    pass: [{
                            required: true,
                            message: '请输入密码',
@@ -126,7 +135,7 @@
                        },
                        {
                            min: 6,
                            max: 12,
                            max: 10,
                            message: '密码长度在 6 到 12 个字符',
                            trigger: 'blur'
                        },
@@ -153,13 +162,7 @@
                            required: true,
                            message: '请输入验证码',
                            trigger: 'blur'
                        },
                        {
                            validator: (rule, value, callback) => this.validateVerificationCode(rule, value,
                                callback),
                            trigger: 'blur'
                        }
                    ]
                    }]
                },
                // 登录注册框
                loginTrue: true,
@@ -231,13 +234,12 @@
                // console.log(number);
                if (number == 1) {
                    console.log('服务条款');
                    uni.navigateTo({
                        url:'/pages/userAgreement/userAgreement'
                    })
                    window.open(`#/pages/userAgreement/userAgreement`)
                    // uni.navigateTo({
                    //     url: '/pages/userAgreement/userAgreement'
                    // })
                } else if (number == 2) {
                    uni.navigateTo({
                        url:'/pages/userAgreement/userAgreement'
                    })
                    window.open(`#/pages/userAgreement/userAgreement`)
                    console.log('用户隐私保护和个人信息条款');
                }
            },
@@ -252,50 +254,25 @@
                let Obj = {
                    communicateParam: this.registerData.cellphoneORmailbox,
                }
                console.log(Obj);
                let code = await getverifyCode(Obj)
                console.log(code);
                console.log('获取验证码');
            },
            // 列表项跳转
            listDataClick(item) {
                console.log(item);
                // 在当前页面设置全局变量
                // uni.setStorageSync('globalData', { id: 123, name: 'example' });
                if (item.id == 1) {
                    uni.navigateTo({
                        url: '/pages/repository/repository?id=' + item.id
                    })
                } else if (item.id == 2) {
                    console.log(item.name);
                    // uni.navigateTo({
                    //     url:'/pages/repository/repository?id='+item.id
                    // })
                } else if (item.id == 3) {
                    uni.navigateTo({
                        url: '/pages/dataDisplay/dataDisplay?id=' + item.id
                    })
                } else if (item.id == 4) {
                    uni.navigateTo({
                        url: '/pages/territory/territory?id=' + item.id
                    })
                } else if (item.id == 5) {
                    uni.navigateTo({
                        url: '/pages/TcmSystem/TcmSystem?id=' + item.id
                    })
                }
                console.log(code, '获取验证码');
                // console.log('获取验证码');
            },
            // 验证码校验
            validateVerificationCode(rule, value, callback) {
                if (value !== '123456') {
                    callback(new Error('验证码错误'));
                    // callback(new Error('验证码错误'));
                    callback()
                } else {
                    callback();
                }
            },
            // 手机号/或者邮箱
            validateContact(rule, value, callback) {
                const regPhone = /^1[3456789]\d{9}$/;
                const regEmail = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
                const regPhone = /^1[0-9]{10}$/;
                const regEmail = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
                console.log(value, regPhone.test(value), regEmail.test(value));
                if (regPhone.test(value) || regEmail.test(value)) {
                    callback(); // 校验通过
                } else {
@@ -311,41 +288,49 @@
            },
            // 用户注册
            async Login(formName) {
                console.log(formName);
                let Obj = {
                    // username: this.registerData.loginID,
                    // password: this.registerData.pass,
                    username: this.registerData.loginID,
                    password: encryptAES(this.registerData.pass),
                    communicateParam: this.registerData.cellphoneORmailbox,
                    // verifyCode: this.registerData.verifyCode,
                    // "username": "bbbcccccc",
                    // "password": "EmgTXx6Iz/QrbL5nrP0h2g==",
                    // "communicateParam": "eacpjls@foxmails.com",
                    // "verifyCode": "LE5GVP"
                    verifyCode: this.registerData.verifyCode,
                }
                // uni.request({
                //     url: 'http://icmm.test.xyinde.com/api/account/register',
                //     method: 'POST',
                //     data: Obj,
                //     success: (res) => {
                //         console.log(res.data);
                //         // this.text = 'request success';
                //     }
                this.$refs[formName].validate(async (valid) => {
                    if (valid) {
                        // alert('submit!');
                        console.log('sdfds');
                        await getaddLogin(Obj).then(res => {
                            console.log(res, '注册成功');
                            if(res.success==true){
                                uni.showToast({
                                    title: res.errorText,
                                    icon: 'success'
                                });
                                uni.navigateTo({
                                    url: '/pages/Login/Login'
                                })
                            }else{
                                uni.showToast({
                                    title: res.errorText,
                                    icon: 'error'
                                });
                            }
                        })
                        // encryptAES
                        // uni.navigateTo({
                        //     url: '/pages/Login/Login'
                // })
                    } else {
                        console.log('error submit!!');
                        return false;
                    }
                });
                // console.log(Obj, '用户登录的登录按钮');
                
                // let res = await getaddLogin(Obj)
                // console.log('sdfdsfs', res);
                // this.$refs[formName].validate((valid) => {
                //     if (valid) {
                //         alert('submit!成功');
                //         uni.navigateTo({
                //             url: '/pages/Login/Login'
                //         })
                //     } else {
                //         console.log('error submit!!失败');
                //         return false;
                //     }
                // });
            },
        }
    }
src/pages/TcmSystem/TcmSystem.vue
@@ -26,15 +26,15 @@
                    <ul style="margin-top: 10rpx;">
                        <!-- background-color: #d6e3f4;border-radius: 60rpx; -->
                        <li class="flex"
                            :style="{'background':institution.index === item.dynastyId ?  '#DDE8F6' :'','borderRadius': institution.index === item.dynastyId ?  '60rpx' :''}"
                            :style="{'background':institution.index === item.dynastyId ?  '#DDE8F6' :'','borderRadius': institution.index === item.dynastyId ?  '60rpx' :'',display:index+1>institutionIndex?'none':'flex'}"
                            v-for="(item,index) in institution.list" :key="index"
                            style="padding:0 20rpx;color: #2C2C2C;" @click="handInstitCLick(item,'a')">
                            <view class="">{{item.dynastyName}}</view>
                            <view class="">{{item.count}}</view>
                        </li>
                    </ul>
                    <view class="flex flex-center toggleButton1">
                        <view class="toggleButton" style="color: #244A7B;" @click="shrinkClick('a')">
                    <view v-if="institution.list.length-1 >3" class="flex flex-center ">
                        <view class="toggleButton" style="color: #244A7B;" @click="shrinkClick('a','机构')">
                            {{ activeBox !== 'a' ? '更多  ﹀' : '收起  ︿' }}
                        </view>
                    </view>
@@ -46,15 +46,15 @@
                    <ul style="margin-top: 10rpx;">
                        <!-- background-color: #d6e3f4;border-radius: 60rpx; -->
                        <li class="flex"
                            :style="{'background':officials.index === item.dynastyId ?  '#DDE8F6' :'','borderRadius': officials.index == item.dynastyId ?  '10rem' :''}"
                            :style="{'background':officials.index === item.dynastyId ?  '#DDE8F6' :'','borderRadius': officials.index == item.dynastyId ?  '10rem' :'',display:index+1>officialsIndex?'none':'flex'}"
                            v-for="(item,index) in officials.list" :key="index" style="padding:0 20rpx;"
                            @click="handInstitCLick(item,'b')">
                            <view class="">{{item.dynastyName}}</view>
                            <view class="">{{item.count}}</view>
                        </li>
                    </ul>
                    <view class="flex flex-center toggleButton1">
                        <view class="toggleButton" style="color: #244A7B;" @click="shrinkClick('b')">
                    <view v-if="officials.list.length-1 >3" class="flex flex-center ">
                        <view class="toggleButton" style="color: #244A7B;" @click="shrinkClick('b','职官')">
                            {{ activeBox !== 'b' ? '更多  ﹀' : '收起  ︿' }}
                        </view>
                    </view>
@@ -132,7 +132,6 @@
                        @current-change="CurrentChange" @prev-click="PrevClick" @next-click="NextClick" prev-text="上一页"
                        next-text="下一页" background layout="prev, pager, next">
                    </el-pagination>
                    </el-pagination>
                </el-row>
            </view>
        </view>
@@ -155,9 +154,9 @@
                        </view>
                        <ul class="flex creatureXinxi3">
                            <li @click="PDFClick(ListDetails,1)">RDF</li>
                            <li @click="PDFClick(2)">NT</li>
                            <li @click="PDFClick(3)">XML</li>
                            <li @click="PDFClick(4)">JSON</li>
                            <li @click="PDFClick(ListDetails,2)">NT</li>
                            <li @click="PDFClick(ListDetails,3)">XML</li>
                            <li @click="PDFClick(ListDetails,4)">JSON</li>
                        </ul>
                    </view>
                </view>
@@ -230,26 +229,10 @@
                institution: {
                    title: '机构统计',
                    index: 0,
                    list: [{
                            dynastyName: '全部',
                            id: 1,
                            count: 829
                    list: [ ]
                        },
                        {
                            dynastyName: '医家',
                            id: 2,
                            count: 90
                        }, {
                            dynastyName: '世医',
                            id: 3,
                            count: 81
                        }, {
                            dynastyName: '宫廷医',
                            id: 4,
                            count: 83
                        },
                    ]
                },
                // 显示多少条职官数据
                institutionIndex:4,
                // 机构和职官的类型 取值:OFFICIAL->职官 INSTITUTION->机构 ALL->职官、机构
                classifyType: 'ALL',
                // 机构和职官的id
@@ -258,42 +241,15 @@
                officials: {
                    title: '职官统计',
                    index: 0,
                    list: [{
                            dynastyName: '全部',
                            id: 1,
                            count: 829
                    list: [ ]
                        },
                        {
                            dynastyName: '医家',
                            id: 2,
                            count: 90
                        }, {
                            dynastyName: '世医',
                            id: 3,
                            count: 81
                        }, {
                            dynastyName: '宫廷医',
                            id: 4,
                            count: 83
                        },
                    ]
                },
                // 显示多少条职官数据
                officialsIndex:4,
                // 来源
                source: {
                    title: '来源',
                    index: 0,
                    list: [{
                            source: '中国医事制度辞典',
                            id: 1,
                        },
                        {
                            source: '中医医事大全',
                            id: 2,
                        }, {
                            source: '中国医事制度研究',
                            id: 3,
                        }
                    ]
                    list: [ ]
                },
                // 展开和收缩的按钮需要
                activeBox: null,
@@ -314,19 +270,7 @@
                }],
                // 热门搜索  
                hot: [{
                    id: 1,
                    name: '李时珍',
                    bgColor: false
                }, {
                    id: 2,
                    name: '李时珍2',
                    bgColor: false
                }, {
                    id: 3,
                    name: '李时珍3',
                    bgColor: false
                }, ],
                hot: [],
                // 点击的搜索项
                HotBg: false,
                // 排序下拉菜单
@@ -339,65 +283,11 @@
                }],
                rankVal: 'NAME',
                // 列表项  
                CommodityList: [{
                        id: 1,
                        post: '机构',
                        name: '太医院',
                        color: '#597AA5',
                        dynasty: '唐朝',
                        anotherNamer: '别称----------',
                        content: '古代医疗机构名称,太医院名称始于金代,承袭于唐宋的太医署、太医局,以后历代均立有太医院机构历代均立有太医院机构'
                    },
                    {
                        id: 2,
                        post: '职官',
                        name: '太医院',
                        dynasty: '唐朝',
                        color: '#DA7A2B',
                        anotherNamer: '别称----------',
                        content: '古代医疗机构名称,太医院名称始于金代,古代医疗机构名称,太医院名称始于金代,古代医疗机构名称,太医院名称始于金代,古代医疗机构名称,太医院名称始于金代,古代医疗机构名称,太医院名称始于金代,'
                    },
                    {
                        id: 3,
                        post: '机构',
                        name: '太医院',
                        color: '#597AA5',
                        dynasty: '唐朝',
                        anotherNamer: '别称----------',
                        content: '内容++++++++++++++++++++++++++++++'
                    },
                    {
                        id: 3,
                        post: '机构',
                        name: '太医院',
                        color: '#597AA5',
                        dynasty: '唐朝',
                        anotherNamer: '别称----------',
                        content: '内容++++++++++++++++++++++++++++++'
                    },
                    {
                        id: 3,
                        post: '机构',
                        name: '太医院',
                        color: '#597AA5',
                        dynasty: '唐朝',
                        anotherNamer: '别称----------',
                        content: '内容++++++++++++++++++++++++++++++'
                    },
                    {
                        id: 3,
                        post: '机构',
                        name: '太医院',
                        color: '#597AA5',
                        dynasty: '唐朝',
                        anotherNamer: '别称----------',
                        content: '内容++++++++++++++++++++++++++++++'
                    }
                ],
                CommodityList: [ ],
                // 列表的详情数据
                ListDetails: {},
                // 分页的总数
                total: 100,
                total: 0,
                // 当前页
                CurrentPage: 1,
                // 一页显示多少条数据
@@ -462,6 +352,7 @@
                    //  [{name:'sdf',number}]
                    console.log(res, '接口成功sdsdfsdsfs');
                })
            },
            // 右侧的list数据 
            async getMList(obj) {
@@ -512,16 +403,19 @@
            // 左侧的机构统计等等按钮
            handInstitCLick(item, name) {
                if (name == 'a') {
                    this.CurrentPage = 1
                    this.institution.index = item.dynastyId
                    this.classifyId = item.dynastyId
                    this.classifyType = 'INSTITUTION'
                    this.getMList()
                } else if (name == 'b') {
                    this.CurrentPage = 1
                    this.officials.index = item.dynastyId
                    this.classifyId = item.dynastyId
                    this.classifyType = 'OFFICIAL'
                    this.getMList()
                } else if (name == 'c') {
                    this.CurrentPage = 1
                    this.source.index = item.bookId
                    this.getMList()
                    console.log();
@@ -529,14 +423,23 @@
                console.log(item, name);
            },
            // 展开收缩
            shrinkClick(box) {
            shrinkClick(box,name) {
                console.log(box);
                if (this.activeBox === box) {
                    console.log('sdfs');
                    this.activeBox = null;
                } else {
                    this.activeBox = box;
                if(name=='机构'){
                    this.institutionIndex = this.institutionIndex < this.institution.list.length ? this.institution.list.length : 4;
                    this.officialsIndex=4
                    this.activeBox = this.activeBox === 'a' ? null : 'a';
                }else if(name=='职官'){
                    this.officialsIndex = this.officialsIndex < this.officials.list.length ? this.officials.list.length : 4;
                    this.institutionIndex=4
                    this.activeBox = this.activeBox === 'b' ? null : 'b';
                }
                // if (this.activeBox === box) {
                //     console.log('sdfs');
                //     this.activeBox = null;
                // } else {
                //     this.activeBox = box;
                // }
            },
            //取值:RDF、NT、XML、JSON
            async PDFClick(item,index) {
@@ -553,9 +456,22 @@
                    //     url:`/pages/RDF/RDF?${queryString}` 
                    // })
                    window.open(`#/pages/RDF/RDF?${queryString}`)
                    // await getMedicalDataOutput(Obj).then(res=>{
                    //     console.log(res,'ressres');
                    // })
                }else if(index ==2){
                    Obj.outputType='NT'
                    let queryString = Object.keys(Obj).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(Obj[key])}`).join('&');
                    window.open(`#/pages/NT/NT?${queryString}`)
                }else if(index==3){
                    Obj.outputType='XML'
                    console.log('XML');
                    await getMedicalDataOutput(Obj).then(res=>{
                        console.log(res,'接口XML');
                    })
                }else if(index ==4){
                    Obj.outputType='JSON'
                    console.log('JSON');
                    await getMedicalDataOutput(Obj).then(res=>{
                        console.log(res,'接口JSON');
                    })
                }
                // console.log(Obj.id,);
            },
@@ -1039,10 +955,6 @@
        }
    }
    .a,
    .b {
        min-height: 3rem !important;
    }
    .paixu {
        /*     margin-right: .3rem;
src/pages/changePassword/changePassword.vue
@@ -27,13 +27,13 @@
                        <el-input v-model="amendDataPass.loginID"></el-input>
                    </el-form-item>
                    <el-form-item label="原密码" prop="rawPass">
                        <el-input v-model="amendDataPass.rawPass"></el-input>
                        <el-input type="password" v-model="amendDataPass.rawPass"></el-input>
                    </el-form-item>
                    <el-form-item label="新密码" prop="newPass">
                        <el-input v-model="amendDataPass.newPass"></el-input>
                        <el-input type="password" v-model="amendDataPass.newPass"></el-input>
                    </el-form-item>
                    <el-form-item label="确认新密码" prop="checkPass">
                        <el-input v-model="amendDataPass.checkPass"></el-input>
                        <el-input type="password" v-model="amendDataPass.checkPass"></el-input>
                    </el-form-item>
                    <el-form-item class="btn">
                        <el-button class="font-family"
@@ -58,6 +58,9 @@
    import {
        getchangePassword
    } from '@/api/index.js'
    import {
        encryptAES
    } from '@/utils/Crypto.js'
    import {
        nextTick
    } from "vue";
@@ -110,7 +113,7 @@
                            trigger: 'blur'
                        },
                        {
                            min: 6,
                            min: 5,
                            max: 12,
                            message: '密码长度在 6 到 12 个字符',
                            trigger: 'blur'
@@ -164,7 +167,7 @@
                value: 'sdfdsf',
                // 修改密码
                amendDataPass: {
                    loginID: '',
                    loginID: this.$store.state.username,
                    rawPass: "",
                    newPass: "",
                    checkPass: ""
@@ -209,47 +212,6 @@
                // })
                uni.navigateBack();
            },
            // 获取验证码
            verifyCodeClick() {
                console.log('获取验证码');
            },
            // 列表项跳转
            listDataClick(item) {
                console.log(item);
                // 在当前页面设置全局变量
                // uni.setStorageSync('globalData', { id: 123, name: 'example' });
                if (item.id == 1) {
                    uni.navigateTo({
                        url: '/pages/repository/repository?id=' + item.id
                    })
                } else if (item.id == 2) {
                    console.log(item.name);
                    // uni.navigateTo({
                    //     url:'/pages/repository/repository?id='+item.id
                    // })
                } else if (item.id == 3) {
                    uni.navigateTo({
                        url: '/pages/dataDisplay/dataDisplay?id=' + item.id
                    })
                } else if (item.id == 4) {
                    uni.navigateTo({
                        url: '/pages/territory/territory?id=' + item.id
                    })
                } else if (item.id == 5) {
                    uni.navigateTo({
                        url: '/pages/TcmSystem/TcmSystem?id=' + item.id
                    })
                }
            },
            // 验证码校验
            validateVerificationCode(rule, value, callback) {
                console.log(value)
                if (value !== '123456') {
                    callback(new Error('验证码错误'));
                } else {
                    callback();
                }
            },
            getElementWidth() {
                this.$nextTick(() => {
                    var width = this.$refs.Rtop.$el.clientWidth;
@@ -259,40 +221,32 @@
            },
            // 忘记密码
            async Login2(formName) {
                console.log('忘记密码的登录按钮');
                let Obj = {
                    username: this.amendDataPass.loginID,
                    password: this.amendDataPass.rawPass,
                    newPassword:this.amendDataPass.newPass,
                    password: encryptAES(this.amendDataPass.rawPass) ,
                    newPassword:encryptAES(this.amendDataPass.newPass),
                }
                console.log(Obj);
                let res = await getchangePassword(Obj)
                console.log(res, 'sfdsf');
                // if (res.success) {
                //     uni.showToast({
                //         title: '登录成功',
                //     })
                //     // 将token存储再本地中
                //     window.localStorage.setItem("access_token", res.results.token)
                //     await getUserInfo().then(res => {
                //         console.log(res, 'rrrrrrrrrrsd');
                //     })
                //     uni.redirectTo({
                //         url: '/pages/index/index'
                //     })
                // } else {
                //     console.log('sdfdsfsdf');
                //     uni.showToast({
                //         title: res.errorText,
                //         icon: 'error'
                //     })
                //     // alert("sdfdsf")
                //     this.loginData.pass = ''
                // }
                this.$refs[formName].validate((valid) => {
                this.$refs[formName].validate(async (valid) => {
                    if (valid) {
                        alert('submit!成功');
                        // uni.redirectTo({
                        // alert('submit!成功');
                        await getchangePassword(Obj).then(res=>{
                            // console.log(res,'修改密码成功');
                            if(res.success==true){
                                uni.showToast({
                                    title: res.object,
                                    icon: 'none'
                                });
                                uni.navigateBack();
                                console.log('修改成功',res);
                            }else{
                                uni.showToast({
                                    title: res.errorText,
                                    icon: 'none'
                                });
                            }
                        })
                        // uni.redirectTo({ encryptAES
                        //     url: '/pages/Login/Login'
                        // })
                    } else {
src/pages/characterMap/characterMap.vue
@@ -43,7 +43,7 @@
    import 'echarts/extension/bmap/bmap';
    import {
        loadBMap
    } from "../../static/map.js"
    } from "@/static/map.js"
    export default {
        data() {
src/pages/characterRelation/characterRelation.vue
@@ -3,7 +3,7 @@
        <headNav idIndex="1" text="中医人物数据库" />
        <!-- 高级搜索 -->
        <view style="margin: .35rem 0 .16rem 0; ">
            <advancedSearch @onSearch="onSearch" :from="From" placehold="输入姓名/别名/朝代/传主职业搜索" />
            <advancedSearch @onSearch="onSearch" @onSubmit="onSubmit" :from="From" placehold="输入姓名/别名/朝代/传主职业搜索" />
        </view>
        <!-- 热门搜索 -->
        <view class="flex flex-center hotSearch">
@@ -14,6 +14,7 @@
                </li>
            </ul>
        </view>
        <view class="" style="margin-left: .2rem;">书中最常提到的100位人物</view>
        <!-- 关系表地图 -->
        <view id="relation" style="margin-top: .2rem; height: 70vh;width: 100%;"></view>
        <!-- 朝代 -->
@@ -38,14 +39,19 @@
    import {
        getDataStatistics,
        getHotSearch,
        getFuzzySearch
        getFuzzySearch,
        getAdvanceSearch,
        getPDataStatistics
    } from '@/api/index.js'
    import * as echarts from 'echarts';
    export default {
        data() {
            return {
                // echarts数据
                nodes: ['李时珍'],
                nodes: [{
                    name: '李时珍',
                    id: 23
                }],
                // echarts两者的关系
                relationships: [{
                        source: '李时珍',
@@ -82,39 +88,60 @@
                        name: 'alias',
                        value: ''
                    }, {
                        type: 'number',
                        label: 'inst',
                        name: 'inst',
                        value: ''
                    }, {
                        type: 'input',
                        label: 'location',
                        label: '籍贯',
                        name: 'location',
                        value: ''
                    }, {
                        type: 'select',
                        label: '职业',
                        name: 'sdId',
                        value: '',
                        options: [{
                            label: '未指明',
                            value: 'UNKNOWN'
                        }, ]
                    }, {
                        type: 'input',
                        label: 'office',
                        label: '官职',
                        name: 'office',
                        value: ''
                    }, {
                        type: 'number',
                        label: 'page',
                        name: 'page',
                        value: ''
                        type: 'select',
                        label: '性别',
                        value: '',
                        name: 'genderTypeEO',
                        options: [{
                                label: '未指明',
                                value: 'UNKNOWN'
                    }, {
                        type: 'number',
                        label: 'pageSize',
                        name: 'pageSize',
                        value: ''
                                label: '男',
                                value: 'MALE'
                            },
                            {
                                label: '女',
                                value: 'WOMAN'
                            }
                        ]
                    }, {
                        type: 'input',
                        label: 'period',
                        label: '时间',
                        name: 'period',
                        value: ''
                    }, {
                        type: 'input',
                        label: 'sdId',
                        name: 'sdId',
                        label: '机构',
                        name: 'inst',
                        value: ''
                    }, {
                        type: 'number',
                        label: '页码',
                        name: 'page',
                        value: ''
                    }, {
                        type: 'number',
                        label: '页大小',
                        name: 'pageSize',
                        value: ''
                    }, ]
                },
@@ -219,7 +246,6 @@
        },
        methods: {
            // 关系图谱
            relation() {
                var chartDom = document.getElementById('relation');
@@ -251,20 +277,24 @@
                }
                // 根据关系数据生成连接线
                var links = [];
                relationships.forEach(function(relationship) {
                    var sourceIndex = nodes.indexOf(relationship.source);
                    var targetIndex = nodes.indexOf(relationship.target);
                    // console.log(sourceIndex, targetIndex);
                relationships.forEach((relationship, i) => {
                    // 靳
                    var sourceIndex = nodes.findIndex((node) => node.name === relationship.source);
                    var targetIndex = nodes.findIndex((node) => node.name === relationship.target);
                    if (relationship.relation) {
                    if (sourceIndex !== -1 && targetIndex !== -1) {
                            console.log(relationship.source, relationship.target);
                        links.push({
                            source: sourceIndex,
                            target: targetIndex,
                            label: {
                                show: true,
                                formatter: function(params) { // 使用函数动态生成标签内容
                                    return relationships.find(rel => rel.source === nodes[params.data
                                            .source] && rel.target === nodes[params.data.target])
                                        .relation;
                                        // console.log(params, 'paramsparamsparamsparamsparams');
                                        // return relationships.find(rel => rel.source === nodes[params.data
                                        //         .source] && rel.target === nodes[params.data.target])
                                        //     .relation;
                                        return relationship.relation;
                                }, // 设置关系标签内容为"Child-Parent"
                                color: '#2C2C2C',
                                fontSize: FontSize - 2,
@@ -279,32 +309,41 @@
                            }
                        });
                    }
                    }
                });
                console.log(links);
                // 根据nodes动态生成节点数据
                var nodeData = nodes.map(function(node, index) {
                    return {
                        name: node,
                        name: node.name,
                        id: node.id,
                        x: Math.random() * 2000, // 设置随机x坐标位置
                        y: Math.random() * 600, // 设置随机y坐标位置
                        itemStyle: {
                            color: getColorByIndex(index), // 可以根据索引设置不同的颜色
                            color: getColorByIndex(), // 可以根据索引设置不同的颜色
                            borderWidth: BorderWidth,
                            borderColor: getColorByIndex(index + 1)
                            borderColor: getColorByIndex()
                        }
                    };
                });
                // 设置颜色
                function getColorByIndex(index) {
                    var colors = ['#ecf4ff', '#dd9795', '#f1edbe', '#ecf4ff', '#c5dbd8']; // 可以根据实际情况设置颜色数组
                    return colors[index % colors.length];
                function getColorByIndex() {
                         // 生成随机的 R、G、B 分量值,限制在更高的范围内
                            var r = Math.floor(Math.random() * 106) + 150; // 150 到 255 之间的随机数
                            var g = Math.floor(Math.random() * 106) + 150; // 150 到 255 之间的随机数
                            var b = Math.floor(Math.random() * 106) + 150; // 150 到 255 之间的随机数
                            // 将 R、G、B 分量值转换为十六进制,并确保每个分量值都是两位数
                            var hexR = r.toString(16).padStart(2, '0'); // 使用 padStart 方法确保生成的十六进制数为两位
                            var hexG = g.toString(16).padStart(2, '0');
                            var hexB = b.toString(16).padStart(2, '0');
                            // 拼接十六进制颜色值
                            var color = '#' + hexR + hexG + hexB;
                            return color;
                }
                var option;
                option = {
                    title: {
                        // text: '书中最常提到的100位人物',
                        subtext: '书中最常提到的100位人物',
                        // subtext: '',
                        left: 'center',
                        top: FontSize + 10,
                        // textStyle: {
@@ -345,11 +384,8 @@
                        }
                    }]
                };
                // 将生成的连接线添加到echarts图表的option中
                option.series[0].links = links;
                // 设置点击事件监听
                myChart.on('click', (params) => {
                    // menuNav2 = !menuNav1
@@ -365,13 +401,13 @@
                })
                option && myChart.setOption(option);
            },
            // 关系图
            // 关系图 点击里面的元素
            spaceTimeArr(Arr) {
                // 关系图的数据
                console.log(Arr);
                // uni.navigateTo({
                //     url: '/pages/repository/repository'
                // })
                uni.navigateTo({
                    url: '/pages/repository/repository'
                })
            },
            // 获取朝代echarts的数据
            async echartsArr() {
@@ -387,59 +423,141 @@
                    })
                    console.log(this.dynasty, 'sdfsfd');
                })
            },
            // 热门搜索
            async hotSearch() {
                await getHotSearch().then(res => {
                    console.log(res, 'saaadfds');
                    this.hot= Object.keys(res.object).map(key => {
                      return { id: parseInt(key), name: res.object[key] };
                        return {
                            id: parseInt(key),
                            name: res.object[key]
                        };
                    })
                    // this.hot = res.list
                })
            },
            // 基础搜索
            async onSearch(val) {
                console.log(val);
                await getFuzzySearch(val.text).then(res => {
                    console.log(res, 'jieko');
                    if (res.list) {
                        this.nodes = []
                        this.nodes[0] = res.list[0].name1
                        this.nodes[1] = res.list[0].name2
                        for (let i = 1; i < res.list.length; i++) {
                            this.nodes.push(res.list[i].name2);
                        }
                        this.nodes = [...new Set(this.nodes)]
                        this.relationships = this.nodes.slice(1).map(item => {
                            return {
                                source: this.nodes[0],
                                target: item,
                                relation: ''
                            };
                        });
                    } else {
                        alert('没有搜索到数据')
                    }
                    console.log(res);
                        this.relationships = []
                        res.list.forEach((item, index) => {
                            let exists1 = this.nodes.some(node => (node.id === item.identifier1 && node
                                .name === item.name1));
                            let exists2 = this.nodes.some(node => (node.id === item.identifier2 && node
                                .name === item.name2));
                            // 证明不存在
                            if (exists1 !== true) {
                                this.nodes.push({
                                    name: item.name1,
                                    id: item.identifier1
                })
                this.relation()
                            }
                            if (exists2 !== true) {
                                this.nodes.push({
                                    name: item.name2,
                                    id: item.identifier2
                                })
                            }
                            let obj = {
                                source: item.name1,
                                target: item.name2,
                                relation: item.relationName ||
                                    '' // 如果存在 relationName 字段则使用,否则为空字符串
                            }
                            // 只有当 item.relationName 存在时,才向 obj 对象中添加 relation 字段
                            if (item.relationName) {
                                obj.relation = item.relationName;
                            }
                            this.relationships.push(obj)
                        });
                        // this.nodes = []
                        // this.nodes[0] = {
                        //     name: res.list[0].name1,
                        //     id: res.list[0].identifier1
                        // }
                        // this.nodes[1] = {
                        //     name: res.list[1].name1,
                        //     id: res.list[1].identifier1
                        // }
                        // for (let i = 1; i < res.list.length; i++) {
                        //     let node1 = {
                        //         name: res.list[i].name1,
                        //         id: res.list[i].identifier1
                        //     }
                        //     this.nodes.push(node1);
                        //     // console.log(i);
                        // }
                        // this.nodes = [...new Set(this.nodes.map(node => JSON.stringify(node)))].map(node =>
                        //     JSON.parse(node));
                        //     console.log(this.nodes,'nodesnodesnodesnodes');
                        // this.relationships = this.nodes.slice(1).map((item, index) => {
                        //     console.log(item,res.list[index].relationName, 'iiiiiiiiiiiiisdfdsf');
                        //     return {
                        //         source: this.nodes[0].name,
                        //         target: item.name,
                        //         relation: res.list[index].relationName
                        //     };
                        // });
                    } else {
                        // alert('没有搜索到数据')
                    }
                    this.relation()
                    console.log(res);
                })
            },
            // 高级搜索
            async onSubmit(val) {
                console.log(val);
                await getAdvanceSearch(val).then(res => {
                    console.log(res, '接口调用成功');
                })
            },
            // 点击下面的朝代按钮
            dynastyBottomClick(item) {
                this.dynastyColor = item.id
                this.onSearch({
                    text: item.name
                })
            },
            // 高级搜索里面职业的下拉菜单
            async innt() {
                await getPDataStatistics().then(res => {
                    const professionIndex = this.From.from.findIndex(field => field.label === '职业');
                    // 如果找到了职业字段
                    if (professionIndex !== -1) {
                        // 将 profession.list 转换为 options 格式
                        const options = res.object.occupationStatistic.details.map(item => ({
                            label: item.tagName,
                            value: item.tagId.toString() // 将 id 转换为字符串,确保与 value 类型一致
                        }));
                        // 更新职业字段的 options 属性
                        this.$set(this.From.from[professionIndex], 'options', options);
                    }
                })
            }
        },
        mounted() {
            // 关系图谱
            this.relation()
            this.echartsArr()
            this.hotSearch()
            this.onSearch({
                text: ''
            })
            // 监听窗口大小变化
            window.addEventListener('resize', this.relation);
            this.innt()
        }
    }
</script>
src/pages/forgetPass/forgetPass.vue
@@ -34,11 +34,11 @@
                                获取验证码</view>
                        </view>
                    </el-form-item>
                    <el-form-item label="新密码" prop="pass">
                        <el-input v-model="resetDataPass.newPass"></el-input>
                    <el-form-item label="新密码" prop="newPass">
                        <el-input type="password" v-model="resetDataPass.newPass"></el-input>
                    </el-form-item>
                    <el-form-item label="确认新密码" prop="checkPass">
                        <el-input v-model="resetDataPass.checkPass"></el-input>
                        <el-input type="password" v-model="resetDataPass.checkPass"></el-input>
                    </el-form-item>
                    <el-form-item class="btn">
                        <el-button class="font-family"
@@ -61,9 +61,19 @@
<script>
    import {
        getRestPassword,
        getverifyCode
    } from '@/api/index.js'
    import {
        encryptAES
    } from '@/utils/Crypto.js'
    import {
        nextTick
    } from "vue";
    import Footer1 from '@/components/footer/footer.vue'
    import {
        Message
    } from 'element-ui'
    export default {
        components: {
            Footer1
@@ -74,7 +84,7 @@
                if (value === '') {
                    callback(new Error('请输入密码'));
                } else {
                    if (this.registerData.checkPass !== '') {
                    if (this.resetDataPass.checkPass !== '') {
                        this.$nextTick(() => {
                            this.$refs.formLogin.validateField('checkPass');
                        });
@@ -86,7 +96,7 @@
            var validatePass2 = (rule, value, callback) => {
                if (value === '') {
                    callback(new Error('请再次输入密码'));
                } else if (value !== this.registerData.pass) {
                } else if (value !== this.resetDataPass.newPass) {
                    callback(new Error('两次输入密码不一致!'));
                } else {
                    callback();
@@ -108,14 +118,14 @@
                        message: '请输入登录账号',
                        trigger: 'blur'
                    }],
                    pass: [{
                    newPass: [{
                            required: true,
                            message: '请输入密码',
                            trigger: 'blur'
                        },
                        {
                            min: 6,
                            max: 12,
                            max: 10,
                            message: '密码长度在 6 到 12 个字符',
                            trigger: 'blur'
                        },
@@ -130,43 +140,19 @@
                    }],
                    cellphoneORmailbox: [{
                            required: true,
                            message: '请输入邮箱地址',
                            message: '请输入手机号或邮箱',
                            trigger: 'blur'
                        },
                        {
                            type: 'email',
                            message: '请输入正确的邮箱地址',
                            trigger: ['blur', 'change']
                            validator: this.validateContact,
                            trigger: 'blur'
                        }
                    ],
                    verifyCode: [{
                            required: true,
                            message: '请输入验证码',
                            trigger: 'blur'
                        },
                        {
                            validator: (rule, value, callback) => this.validateVerificationCode(rule, value, callback),
                            trigger: 'blur'
                        }
                    ]
                },
                // 登录注册框
                loginTrue: true,
                Rtop1: 0,
                value: 'sdfdsf',
                // 注册用户对应的数据
                registerData: {
                    loginID: '',
                    pass: '',
                    checkPass: '',
                    cellphoneORmailbox: '',
                    verifyCode: ''
                },
                // 登录用户账号
                loginData: {
                    // 账号
                    loginID: '',
                    pass: ''
                    }]
                },
                // 重置密码
                resetDataPass: {
@@ -175,32 +161,6 @@
                    newPass: "",
                    checkPass: ""
                },
                // 修改密码
                amendDataPass: {
                    loginID: '',
                    originalPass: "",
                    newPass: "",
                    checkPass: ""
                },
                // 书籍数据
                listData: [{
                        name: '历代医家传记库',
                        id: 1,
                    }, {
                        name: '世医医家库',
                        id: 2,
                    }, {
                        name: '医学学术流派',
                        id: 3,
                    }, {
                        name: '中国地域医谱',
                        id: 4,
                    }, {
                        name: '中国医事制度',
                        id: 5,
                    },
                ]
            }
        },
        onLoad() {
@@ -222,8 +182,14 @@
                })
            },
            // 获取验证码
            verifyCodeClick() {
            async verifyCodeClick() {
                console.log('获取验证码');
                let Obj = {
                    communicateParam: this.resetDataPass.cellphoneORmailbox,
                }
                await getverifyCode(Obj).then(res => {
                    console.log(res, '验证码获取成功');
                })
            },
            // 列表项跳转
            listDataClick(item) {
@@ -253,13 +219,16 @@
                    })
                }
            },
            // 验证码校验
            validateVerificationCode(rule, value, callback) {
                console.log(value)
                if (value !== '123456') {
                    callback(new Error('验证码错误'));
            // 手机号/或者邮箱
            validateContact(rule, value, callback) {
                const regPhone = /^1[0-9]{10}$/;
                const regEmail = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
                console.log(value, regPhone.test(value), regEmail.test(value));
                if (regPhone.test(value) || regEmail.test(value)) {
                    callback(); // 校验通过
                } else {
                    callback();
                    callback(new Error('请输入正确的手机号或邮箱')); // 校验失败
                }
            },
            getElementWidth() {
@@ -269,30 +238,31 @@
                    console.log('Element width:', width);
                })
            },
            // 用户登录
            Login(formName) {
                console.log('用户登录的登录按钮');
                this.$refs[formName].validate((valid) => {
            // 忘记密码
            Login2(formName) {
                let Obj = {
                    "communicateParam": this.resetDataPass.cellphoneORmailbox, //手机或邮箱
                    "verifyCode": this.resetDataPass.verifyCode, //验证码
                    "newPassword": encryptAES(this.resetDataPass.newPass) //新密码
                }
                console.log(Obj);
                this.$refs[formName].validate(async (valid) => {
                    if (valid) {
                        alert('submit!成功');
                        await getRestPassword(Obj).then(res => {
                            console.log(res, '接口');
                            if (res.success) {
                                console.log('忘记密码的接口拿到数据了');
                        uni.navigateTo({
                            url: '/pages/Login/Login'
                        })
                    } else {
                        console.log('error submit!!失败');
                        return false;
                                Message.error(res.errorText || '')
                    }
                });
            },
            // 忘记密码
            Login2(formName) {
                console.log('忘记密码的登录按钮');
                this.$refs[formName].validate((valid) => {
                    if (valid) {
                        alert('submit!成功');
                        uni.redirectTo({
                            url: '/pages/Login/Login'
                        })
                        // alert('submit!成功');
                        // uni.redirectTo({
                        //     url: '/pages/Login/Login'
                        // })
                    } else {
                        console.log('error submit!!失败');
                        return false;
@@ -469,6 +439,7 @@
        }
    }
    @media screen and (min-width: 1920px) and (max-width:2560px){
        .LoginBg {
            margin: 0 !important;
@@ -529,6 +500,7 @@
            margin-bottom: .1rem !important;
        }
    }
    .LoginBg {
        width: 1.2rem;
        height: .37rem;
src/pages/index/index.vue
@@ -16,7 +16,7 @@
                        <view class="flex searchCss" :style="{'backgroundColor': isExpanded==true?'#fff':''}"
                            style="border-radius: .5rem; height: 75%; width: 2.33rem;margin-right: .30rem;justify-content: flex-end;">
                            <!-- overflow: hidden;  -->
                            <input :style="{'display': isExpanded == true ? 'block' : 'none'}" type="text"
                            <input :style="{'display': isExpanded == true ? 'block' : 'none'}" @confirm="toggleSearch" type="text"
                                style="margin-left: .05rem;color: #2C2C2C; flex: 1; background-color: #fff; font-size: .13rem;"
                                class="search-input" v-model="searchInput" placeholder="请输入搜索内容" />
                            <view class="search-logo" @click="toggleSearch"
@@ -152,9 +152,8 @@
            // 搜索
            onSearch(val) {
                uni.navigateTo({
                    url: '/pages/knowledgeBase/knowledgeBase?name=' + val
                    url: '/pages/knowledgeBase/knowledgeBase?name=' + val.text
                })
                console.log('vv', val);
            },
            // 搜索
            // 切换搜索框的展开和收起状态
@@ -164,7 +163,10 @@
                this.isExpanded = !this.isExpanded;
                this.$nextTick(() => {
                    if (this.searchInput.trim() !== '') {
                        console.log('搜索', this.searchInput);
                        uni.navigateTo({
                            url: '/pages/knowledgeBase/knowledgeBase?name=' + this.searchInput
                        })
                        // console.log('搜索', this.searchInput);
                    } else {
                        console.log('不搜索');
                    }
src/pages/knowledgeBase/knowledgeBase.vue
@@ -1,7 +1,7 @@
<template>
    <view>
        <!-- 顶部 -->
        <headNav text="中国医学人物知识库"/>
        <headNav idIndex="0" text="中国医学人物知识库" />
        <!-- 搜索 -->
        <view class="flex  flex-center Search">
            <!-- <luanqing-search class="search_bar" @onSearch="onSearch"></luanqing-search> -->
@@ -17,7 +17,8 @@
                     :style="{color:item.bgColor==true?'#5879a4':'#000'}">
                     {{item.name}}
                 </li>-->
                <li v-for="item in hot" @click="hotSearchClick(item)" :key="item.id" class="cursor" style="color: #5879a4;">
                <li v-for="item in hot" @click="hotSearchClick(item)" :key="item.id" class="cursor"
                    style="color: #5879a4;">
                    {{item.name}}
                </li>
            </ul>
@@ -30,27 +31,30 @@
            </view>
        </view>
        <uni-row class="demo-uni-row zhushuju flex flex-items-start" style="padding: 0 230rpx; ">
            <uni-col :span="5" class="fbox">
            <!-- 左侧 -->
            <view class="fbox2" style="width: 2.6rem;">
                <!-- 职业 -->
                <view class="demo-uni-col zhiye dark box boox" 
                    style="margin-bottom: 40rpx;background-color: #fff; border: 2rpx solid #e0e0e0;">
                    style="width: 2.6rem; margin-bottom: 40rpx;background-color: #fff; border: 2rpx solid #e0e0e0;min-height: 2rem;">
                    <h3>{{profession.title}}</h3>
                    <ul style="margin-top: 10rpx;"  :class="{ 'a': activeBox === 'a'?'a':'' }">
                        <!-- background-color: #d6e3f4;border-radius: 60rpx; -->
                        <li class="flex"
                            :style="{'background':profession.index === index ?  '#d6e3f4' :'','borderRadius': profession.index === index ?  '60rpx' :''}"
                            v-for="(item,index) in profession.list" :key="index" style="padding:0 20rpx;" @click="handInstitCLick(index,'a')">
                            <view class="">{{item.name}}</view>
                            <view class="">{{item.number}}</view>
                            :style="{'background':profession.index === item.tagId ?  '#d6e3f4' :'','borderRadius': profession.index === item.tagId ?  '60rpx' :'',display:index+1>professionIndex?'none':'flex'}"
                            v-for="(item,index) in profession.list" :key="index"
                            style="padding:0 20rpx;line-height: .3rem;height: .3rem;"
                            @click="handInstitCLick(item,'a')">
                            <view class="">{{item.tagName}}</view>
                            <view class="">{{item.count}}</view>
                        </li>
                    </ul>
                    <view v-if="profession.list.length-1 >3" class="flex flex-center toggleButton1">
                        <view class="toggleButton" style="color: #C1D3EA;" @click="shrinkClick('a')">
                    <view v-if="profession.list.length-1 >3" class="flex flex-center ">
                        <view class="toggleButton" style="color: #C1D3EA;" @click="shrinkClick('a','职业')">
                            {{ activeBox !== 'a' ? '更多  ﹀' : '收起  ︿' }}
                        </view>
                    </view>
                </view>
                <!-- 世代 -->
                <!-- 时期 -->
                <view class="demo-uni-col dark box boox zhongjianleft"
                    style="background-color: #fff;border: 2rpx solid #e0e0e0;"
                    :style="{'marginBottom': isAdvancedSearch ===true ? '0': '40rpx'}">
@@ -58,14 +62,15 @@
                    <ul style="margin-top: 10rpx;" :class="{ 'b': activeBox === 'b'?'b':'' }">
                        <!-- background-color: #d6e3f4;border-radius: 60rpx; -->
                        <li class="flex"
                            :style="{'background':dynasty.index === index ?  '#d6e3f4' :'','borderRadius': dynasty.index === index ?  '60rpx' :''}"
                            v-for="(item,index) in dynasty.list" :key="index" style="padding:0 20rpx;" @click="handInstitCLick(index,'b')">
                            <view class="">{{item.name}}</view>
                            <view class="">{{item.number}}</view>
                            :style="{'background':dynasty.index === item.dynastyId ?  '#d6e3f4' :'','borderRadius': dynasty.index === item.dynastyId ?  '60rpx' :'',display:index+1>dynastyIndex?'none':'flex'}"
                            v-for="(item,index) in dynasty.list" :key="index" style="padding:0 20rpx;"
                            @click="handInstitCLick(item,'b')">
                            <view class="">{{item.dynastyName}}</view>
                            <view class="">{{item.count}}</view>
                        </li>
                    </ul>
                    <view v-if="dynasty.list.length-1 >3" class="flex flex-center toggleButton1">
                        <view class="toggleButton" style="color: #C1D3EA;" @click="shrinkClick('b')">
                    <view v-if="dynasty.list.length-1 >3" class="flex flex-center ">
                        <view class="toggleButton" style="color: #C1D3EA;" @click="shrinkClick('b','时期')">
                            {{ activeBox !== 'b' ? '更多  ﹀' : '收起  ︿' }}
                        </view>
                    </view>
@@ -77,38 +82,45 @@
                    <ul class="laiyuan" style="margin-top: 10rpx;" :class="{ 'b': activeBox === 'b'?'b':'' }">
                        <!-- background-color: #d6e3f4;border-radius: 60rpx; -->
                        <li class="flex liClick" v-for="(item,index) in source.list" :key="index"
                            style="padding:0 20rpx;color: #244A7B;">
                            <view class="">{{ index+1 + '. '  +item.name}}</view>
                            <view class="">{{item.number}}</view>
                            style="padding:0 20rpx;color: #244A7B;" @click="handInstitCLick(item,'c')">
                            <view class="">{{ index+1 + '. '  +item.source}}</view>
                        </li>
                    </ul>
                    <!--     <view class="flex flex-center">
                        <view class="toggleButton" style="font-size: 25rpx;color: #C1D3EA;" @click="shrinkClick('b')">
                            {{ activeBox !== 'b' ? '更多  ﹀' : '收起  ︿' }}</view>
                                {{ activeBox !== 'b' ? '更多  ﹀' : '收起  ︿' }}
                            </view>
                    </view> -->
                </view>
            </uni-col>
            <uni-col :span="19" class="rightList">
                <view class="demo-uni-col light fbox1"
                    style=" background-color: #fff;border: 1px solid   #e0e0e0;padding: 10rpx 20rpx;">
                    <view class="flex lightTop" style="margin:10rpx 0">
            </view>
            <!-- 右侧 -->
            <view class="rightList demo-uni-col light fbox3 relative flex flex-column flex-grow: 1;"
                style="width: 100%; margin-left: .2rem; background-color: #fff;border: 1px solid   #C1D3EA;padding: 10rpx 20rpx;">
                <view class="flex lightTop" style="width: 100%; margin:.1rem 0">
                        <view class="" style="color: #2C2C2C;">共1374条</view>
                        <el-button>下载</el-button>
                    <el-button size="small" @click="exportClick">下载</el-button>
                    </view>
                    <el-table :data="tableData" class="lightBo" style="width: 100%">
                        <el-table-column prop="serialNumber" label="序号" width="110"></el-table-column>
                        <el-table-column prop="name" label="姓名"></el-table-column>
                        <el-table-column prop="another" label="别名"></el-table-column>
                    <el-table-column prop="id" label="序号" width="110"></el-table-column>
                    <el-table-column prop="personName" label="姓名"></el-table-column>
                    <el-table-column prop="personAlias" label="别名"></el-table-column>
                        <el-table-column prop="gender" label="性别" width="70"></el-table-column>
                        <el-table-column prop="epoch" label="时期"></el-table-column>
                        <el-table-column prop="year" label="生年" width="130"></el-table-column>
                        <el-table-column prop="death" label="卒年" width="130"></el-table-column>
                    <el-table-column prop="period" label="时期"></el-table-column>
                    <el-table-column prop="birthYear" label="生年" width="130"></el-table-column>
                    <el-table-column prop="deathYear" label="卒年" width="130"></el-table-column>
                        <el-table-column prop="nativePlace" label="籍贯"></el-table-column>
                        <el-table-column prop="socialIdentity" label="社会身份"></el-table-column>
                        <el-table-column prop="officialPosition" label="官职"></el-table-column>
                    <el-table-column prop="socialDistinction" label="社会身份"></el-table-column>
                    <el-table-column prop="official" label="官职"></el-table-column>
                    </el-table>
                <!-- 分页 -->
                <el-row class="fenye" style="position: absolute;bottom: .1rem;">
                    <el-pagination class="paging flex" :current-page="CurrentPage" :total="total" :page-size="pageSize"
                        @current-change="CurrentChange" @prev-click="PrevClick" @next-click="NextClick" prev-text="上一页"
                        next-text="下一页" background layout="prev, pager, next">
                    </el-pagination>
                </el-row>
                </view>
            </uni-col>
        </uni-row>
        <div class="abox"></div>
        <Footer1 />
@@ -118,6 +130,14 @@
<script>
    import Footer1 from '@/components/footer/footer'
    import MyForm from '@/components/form/form.vue'
    // 下载需要导入的依赖
    import ExportJsonExcel from "js-export-excel";
    import {
        getPDataStatistics,
        getPDownload,
        getPList,
        getHotSearch
    } from '@/api/index.js'
    export default {
        components: {
            Footer1,
@@ -151,7 +171,7 @@
                            type: 'select',
                            label: '职业',
                            value: '',
                            name: 'occupation',
                            name: 'tagId',
                            options: [{
                                    label: '医家',
                                    value: '1'
@@ -165,28 +185,31 @@
                        {
                            type: 'input',
                            label: '职官',
                            name: 'officials',
                            name: 'official',
                            value: ''
                        },
                        {
                            type: 'select',
                            label: '性别',
                            value: '',
                            name: 'sex',
                            name: 'genderType',
                            options: [{
                                    label: '未指明',
                                    value: 'UNKNOWN'
                                }, {
                                    label: '男',
                                    value: '男'
                                    value: 'MALE'
                                },
                                {
                                    label: '女',
                                    value: '女'
                                    value: 'WOMAN'
                                }
                            ]
                        },
                        {
                            type: 'input',
                            label: '时期',
                            name: 'time',
                            name: 'dynasty',
                            value: ''
                        },
                        {
@@ -197,147 +220,190 @@
                        }
                    ]
                },
                // 热门搜索
                hot: [{
                    id: 1,
                    name: '李时珍',
                    bgColor: false
                }, {
                    id: 2,
                    name: '李时珍2',
                    bgColor: false
                }, {
                    id: 3,
                    name: '李时珍3',
                    bgColor: false
                }, ],
                hot: [],
                // 职业
                profession: {
                    title: '职业',
                    index: 0,
                    list: [{
                            name: '全部',
                            id: 1,
                            number: 829
                    id: 0,
                    list: []
                        },
                        {
                            name: '医家',
                            id: 2,
                            number: 90
                        }, {
                            name: '世医',
                            id: 3,
                            number: 81
                        }, {
                            name: '宫廷医',
                            id: 4,
                            number: 83
                        },{
                            name: '宫廷医1',
                            id: 5,
                            number: 83
                        },
                    ]
                },
                // 现在多少条职业数据
                professionIndex: 4,
                // 展开和收缩的按钮需要
                activeBox: null,
                // 世代
                // 时期
                dynasty: {
                    title: '时期',
                    id: 0,
                    index: 0,
                    list: [{
                            name: '全部',
                            id: 1,
                            number: 829
                    list: []
                        },
                        {
                            name: '唐',
                            id: 2,
                            number: 90
                        }, {
                            name: '宋',
                            id: 3,
                            number: 81
                        }, {
                            name: '元',
                            id: 4,
                            number: 83
                        },
                    ]
                },
                // 现在多少条时期数据
                dynastyIndex: 4,
                // 来源
                source: {
                    title: '来源',
                    list: [{
                        name: '中国K小制应薛典',
                        id: 1
                    }, {
                        name: '中医医事大会',
                        id: 2
                    }, {
                        name: '中国医中制度研究',
                        id: 3
                    }, ]
                    index: 0,
                    id: 0,
                    list: []
                },
                tableData: [{
                    serialNumber: 1,
                    name: '王小虎',
                    another: '小虎',
                    gender: '男',
                    epoch: '唐代',
                    year: 1234,
                    death: 1332,
                    nativePlace: '河北',
                    socialIdentity: '世医',
                    officialPosition: '院判'
                }, {
                    serialNumber: 2,
                    name: '王w小虎',
                    another: 'w小虎',
                    gender: 'w男',
                    epoch: '唐w代',
                    year: 1234,
                    death: 1332,
                    nativePlace: '河北',
                    socialIdentity: '世医',
                    officialPosition: '院判'
                }, {
                    serialNumber: 1,
                    name: '王小虎',
                    another: '小虎',
                    gender: '男',
                    epoch: '唐代',
                    year: 1234,
                    death: 1332,
                    nativePlace: '河北',
                    socialIdentity: '世医',
                    officialPosition: '院判'
                }]
                // 表格的数组
                tableData: [],
                // 分页的总数
                total: 100,
                // 当前页
                CurrentPage: 1,
                // 一页显示多少条数据
                pageSize: 6,
                dataTable: [],
                option: {}
            }
        },
        onLoad(options) {
            this.onSearch({text:options.name})
        },
        mounted() {
            // 修改两次的高度保持一致
            var box1Height = document.querySelector('.fbox').offsetHeight;
            document.querySelector('.fbox1').style.height = box1Height + 'px';
            var box1Height = document.querySelector('.fbox2').offsetHeight;
            document.querySelector('.fbox3').style.height = box1Height + (box1Height / 18) + 'px';
            console.log(box1Height, 'box1Height');
            this.getStatistics()
            // 默认先调用搜索一次
            this.onSearch('')
        },
        methods: {
            // ExportJsonExcel实例
            Ture() {
                //   创建ExportJsonExcel实例对象
                let toExcel = new ExportJsonExcel(this.option);
                //   调用保存方法
                toExcel.saveExcel();
            },
            // 下载按钮
            exportClick() {
                const dataList = this.tableData;
                let dataTable = []; //   dataTable代表excel文件中的数据内容
                if (dataList) {
                    for (let i in dataList) {
                        let obj = {
                            序号: dataList[i].id,
                            姓名: dataList[i].personName,
                            别名: dataList[i].personAlias,
                            性别: dataList[i].gender,
                            时期: dataList[i].period,
                            生年: dataList[i].birthYear,
                            卒年: dataList[i].deathYear,
                            籍贯: dataList[i].nativePlace,
                            社会身份: dataList[i].socialDistinction,
                            官职: dataList[i].official,
                        };
                        dataTable.push(obj); //   设置excel每列获取的数据源
                    }
                }
                this.option.fileName = "中医医学人物知识库"; //excel文件名
                //excel文件数据
                this.option.datas = [{
                    //   excel文件的数据源
                    sheetData: dataTable,
                    //   excel文件sheet的表名
                    sheetName: "sheet",
                    //   excel文件表头名
                    sheetHeader: ["序号", "姓名", "别名", "性别", "别名", "时期", "生年", "卒年", "籍贯", "社会身份", "官职"],
                    //   excel文件列名
                    sheetFilter: ["序号", "姓名", "别名", "性别", "别名", "时期", "生年", "卒年", "籍贯", "社会身份", "官职"],
                    // columnWidths: ['10', '10', '20'] //excel列宽度设置
                }, ];
                this.Ture();
            },
            // 接口
            async getStatistics() {
                // 热门搜索
                await getHotSearch().then(res => {
                    console.log(res, '热门搜索');
                    this.hot = Object.keys(res.object).map(key => {
                        return {
                            id: parseInt(key),
                            name: res.object[key]
                        };
                    })
                })
                // 右侧职业、时期、来源的数据
                await getPDataStatistics().then(res => {
                    console.log(res, '接口成功sdsdfsdsfs');
                    let totalCount1 = res.object.occupationStatistic.details.reduce((total, item) => total +
                        item.count, 0);
                    let totalCount2 = res.object.dynastyStatistic.details.reduce((total, item) => total + item
                        .count, 0);
                    // 职业
                    this.profession.list = [
                        ...res.object.occupationStatistic.details,
                    ]
                    // 高级搜索里面的职业--------------------------------------------------
                    // 找到职业字段在 from 对象中的索引
                    const professionIndex = this.from.from.findIndex(field => field.label === '职业');
                    // 如果找到了职业字段
                    if (professionIndex !== -1) {
                        // 将 profession.list 转换为 options 格式
                        const options = this.profession.list.map(item => ({
                            label: item.tagName,
                            value: item.tagId.toString() // 将 id 转换为字符串,确保与 value 类型一致
                        }));
                        // 更新职业字段的 options 属性
                        this.$set(this.from.from[professionIndex], 'options', options);
                    }
                    // --------------------------------------------------
                    this.profession.index = this.profession.list[0].tagId
                    // 时期
                    this.dynasty.list = [
                        ...res.object.dynastyStatistic.details
                    ]
                    // 来源
                    this.source.list = res.object.sourceStatistic.details
                    this.source.index = this.source.list[0].bookId
                })
            },
            // 热门搜索
            hotSearchClick(item){
                console.log(item);
                this.onSearch({text:item.name})
                console.log(item, '热门搜索');
            },
            // 左侧的机构统计等等按钮
            handInstitCLick(index, name) {
            handInstitCLick(item, name) {
                this.dynasty.id = 0
                this.source.id = 0
                this.profession.id = 0
                this.CurrentPage = 1
                if (name == 'a') {
                    this.profession.index = index
                    this.profession.index = item.tagId
                    this.profession.id = item.tagId
                    this.CurrentPage = 1
                }else if(name == 'b'){
                        this.dynasty.index = index
                    this.dynasty.index = item.dynastyId
                    this.dynasty.id = item.dynastyId
                    this.CurrentPage = 1
                    console.log(item);
                } else if (name == 'c') {
                    this.source.index = item.bookId
                    this.source.id = item.bookId
                    this.CurrentPage = 1
                    console.log('来源');
                }
                console.log(index, name);
                this.onSearch('')
                console.log(item, name);
            },
            isAvancedClick() {
                this.isAdvancedSearch = !this.isAdvancedSearch
                this.$nextTick(() => {
                    var box1Height = document.querySelector('.fbox').offsetHeight;
                    // let box2Height= document.querySelector('.fbox1').style.height = box1Height + 'px';
                    let box2Height = document.querySelector('.fbox1').offsetHeight
@@ -347,12 +413,64 @@
                    }
                })
            },
            onSubmit(val) {
            // 高级搜索
            async onSubmit(val) {
                console.log(val);
                this.CurrentPage = 1
                let Obj = {
                    "keywords": '', //搜索框检索
                    "name": val.name, //姓名
                    "alias": val.alias, //别名
                    "nativePlace": val.nativePlace, //机关
                    "tagId": val.tagId !== '' ? val.tagId : null, //职业id
                    "official": val.official, //职官
                    "genderType": val.genderType !== '' ? val.genderType : null, //性别
                    "dynasty": val.dynasty, //朝代id
                    "dynastyId": null, //朝代id
                    "institution": val.institution, //机构
                    "bookId": null, //来源id
                    "page": this.CurrentPage,
                    "pageSize": this.pageSize
                }
                // // 搜索
                await getPList(Obj).then(res => {
                    console.log(res);
                    if (res.success) {
                        console.log(res, '搜索接口');
                        this.tableData = res.list
                        // 总数量
                        this.total = res.npage.totalCount
                    }
                })
                console.log(val);
            },
            onSearch(val) {
                console.log(val);
            // 基础搜索
            async onSearch(val) {
                let Obj = {
                    "keywords": val.text, //搜索框检索
                    "name": "", //姓名
                    "alias": "", //别名
                    "nativePlace": "", //机关
                    "tagId": this.profession.id, //职业id
                    "official": "", //职官
                    "genderType": null, //性别
                    "dynasty": null, //朝代id
                    "dynastyId": this.dynasty.id, //朝代id
                    "institution": "", //机构
                    "bookId": this.source.id, //来源id
                    "page": this.CurrentPage,
                    "pageSize": this.pageSize
                }
                // // 搜索
                await getPList(Obj).then(res => {
                    if (res.success) {
                        console.log(res, '搜索接口');
                        this.tableData = res.list
                        // 总数量
                        this.total = res.npage.totalCount
                    }
                })
                // console.log(val, '士大夫但是');
            },
            // 热门搜索
            HotClick(id) {
@@ -368,22 +486,171 @@
            },
            // 展开收缩
            shrinkClick(box) {
            shrinkClick(box, name) {
                console.log(box);
                if (this.activeBox === box) {
                    this.activeBox = null;
                console.log(this.dynasty.list);
                // this.activeBox = this.activeBox === 'a' ? null : 'a';
                if (name == '职业') {
                    console.log('职业');
                    this.professionIndex = this.professionIndex < this.profession.list.length ? this.profession.list
                        .length : 4;
                    this.dynastyIndex = 4
                    this.activeBox = this.activeBox === 'a' ? null : 'a';
                } else {
                    this.activeBox = box;
                    console.log('时期');
                    this.dynastyIndex = this.dynastyIndex < this.dynasty.list.length ? this.dynasty.list.length : 4;
                    this.professionIndex = 4
                    this.activeBox = this.activeBox === 'b' ? null : 'b';
                }
            },
            // 分页当前页触发事件
            CurrentChange(val) {
                if (this.CurrentPage != val) {
                    this.CurrentPage = val
                    console.log('当前页', val);
                    this.onSearch('')
                }
            },
            // 上一页
            PrevClick(val) {
                if (this.CurrentPage != val) {
                    this.CurrentPage = val
                    // console.log('上一页', val);
                    // console.log(this.CurrentPage);
                    this.onSearch('')
                }
            },
            // 下一页
            NextClick(val) {
                if (this.CurrentPage != val) {
                    // console.log('下一页',val);
                    this.CurrentPage = val
                    // console.log(this.CurrentPage);
                    this.onSearch('')
                }
            }
        }
    }
</script>
<style>
<style scoped>
    /* 表头 */
    ::v-deep .el-table__header {
        margin-bottom: .02rem;
    }
    ::v-deep .has-gutter tr>th {
        background-color: #DDE8F6 !important;
        font-weight: normal;
    }
    ::v-deep .el-table__header th {
        height: .3rem;
        line-height: .3rem;
        font-size: .14rem;
        color: #2C2C2C;
        /* 表头文字颜色为白色,增加对比度 */
        margin-bottom: .02rem !important;
    }
    ::v-deep .el-table::before {
        border: 0;
        background-color: #fff;
    }
    /* 表格 */
    ::v-deep .el-table__body td {
        height: .3rem;
        line-height: .3rem;
        font-size: .14rem;
        color: #2C2C2C !important;
        font-weight: normal;
    }
    .abox{
        height: 1rem;
    }
    /* 分页 */
    .paging ::v-deep .btn-prev,
    .paging ::v-deep .btn-next {
        border: 0;
    }
    .paging ::v-deep .btn-prev span,
    .paging ::v-deep .btn-next span {
        font-size: .12rem;
        height: .3rem;
        line-height: .3rem;
        background-color: #fff;
        color: #9E9E9E;
        text-align: center;
        border: 1px solid #9E9E9E;
        padding: 0 .1rem;
    }
    .paging ::v-deep .el-pager li {
        font-size: .1rem;
        width: .28rem;
        height: .3rem;
        line-height: .3rem;
        background-color: #fff;
        color: #9E9E9E;
        text-align: center;
        border: 1px solid #9E9E9E;
    }
    /* -------------- */
    /* 右侧 */
    .rightList {
        padding-left: .2rem !important;
        .light {
            padding: .1rem .2rem !important;
        }
        .lightTop {
            font-size: .14rem !important;
        }
        .el-button {
            font-size: .12rem !important;
            padding: .05rem .18rem !important;
        }
        .lightBo {
            font-size: .14rem !important;
            .is-leaf {
                background-color: #C1D3EA !important;
                color: #2C2C2C !important;
                font-weight: 400;
                .cell {
                    height: .3rem !important;
                    line-height: .3rem !important;
                }
            }
        }
        .el-table__body-wrapper {
            .el-table__row {
                height: .46rem !important;
                line-height: .46rem !important;
                .cell {
                    height: .3rem !important;
                    line-height: .3rem !important;
                }
            }
        }
    }
    @media screen and (min-width:2560px)and (max-width:3840px) {
        /* 搜索 */
@@ -550,6 +817,7 @@
                    background-color: #C1D3EA !important;
                    color: #2C2C2C !important;
                    font-weight: 400;
                    .cell{
                        
                    height: .3rem !important;
@@ -562,6 +830,7 @@
                .el-table__row {
                    height: .46rem !important;
                    line-height: .46rem !important;
                    .cell{
                        
                    height: .3rem !important;
@@ -599,7 +868,9 @@
                margin: 0 .1rem;
            }
        }
        .advancedSeaTrue1{
            border: 1px solid #C1D3EA;
        }
        .advancedSeaTrue,
        .zhushuju {
            padding: 0 1.24rem !important;
@@ -717,6 +988,7 @@
        /* -------------------- */
/* 右侧 */
        .rightList {
            width: 100%;
            padding-left: .2rem !important;
            .light {
@@ -739,6 +1011,7 @@
                    background-color: #C1D3EA !important;
                    color: #2C2C2C !important;
                    font-weight: 400;
                    .cell{
                        
                    height: .3rem !important;
@@ -751,6 +1024,7 @@
                .el-table__row {
                    height: .46rem !important;
                    line-height: .46rem !important;
                    .cell{
                        
                    height: .3rem !important;
@@ -776,13 +1050,13 @@
        }
    }
    .a {
    /*     .a {
        height: 2rem;
    }
    .b {
        height: 100px;
    }
    } */
    .box {
        transition: height 0.3s;
@@ -792,20 +1066,45 @@
    }
    /* 左边的 */
    .boox {
        width: 100%;
        padding: .1rem .09rem;
        min-height: 2rem !important;
        position: relative;
        border: 1px solid #c1d3ea !important;
        ul {
            margin-top: .16rem !important;
        }
        h3 {
            font-size: .14rem;
            margin-left: .1rem;
        }
        li {
            height: .3rem;
            line-height: .3rem;
            padding: 0 .2rem !important;
            margin: .05rem 0 !important;
            border-radius: .3rem !important;
            font-size: .14rem;
        }
        .toggleButton1 {
            position: absolute;
            bottom: .1rem !important;
            left: 40% !important;
        }
        .toggleButton {
            font-size: .14rem !important;
        }
    }
    ::v-deep .el-table th,
    ::v-deep .el-table td {
        text-align: center;
    }
    ::v-deep .has-gutter tr>th {
        background-color: #DDE8F6 !important;
    }
</style>
src/pages/repository/repository.vue
@@ -152,7 +152,7 @@
    import 'echarts/extension/bmap/bmap';
    import {
        loadBMap
    } from "../../static/map.js"
    } from "@/static/map.js"
    import Table1 from '@/components/table1/table1.vue'
    export default {
        components: {
src/pages/territory/territory.vue
@@ -76,7 +76,7 @@
<script>
    import {
        loadBMap
    } from "../../static/map.js"
    } from "@/static/map.js"
    import * as echarts from 'echarts';
    import 'echarts/extension/bmap/bmap';
    export default {
src/store/index.js
@@ -6,7 +6,24 @@
const store = new Vuex.Store({
    strict: true,
    state:{
        // 用户账号
        username:'sdf',
        // 中国人物数据库中的id
    },
    getters,
    mutations:{
        Set_UserName(state,username){
            console.log(username,'uuu');
            state.username=username
        }
    },
    actions:{
        setUserName({commit},user){
            commit('Set_UserName',user)
        }
    },
    modules: { user },
    plugins:[function(store){
        // 监听mutaions 记录state到本地存储
@@ -16,7 +33,7 @@
        })
        // 读取缓存中state
        if(uni.getStorageSync('state')){
            console.log(state,'aaaaaaaaastatestatestate');
            // console.log(state,'aaaaaaaaastatestatestate');
            store.replaceState(Object.assign({},store.state,uni.getStorageSync('state')))
        }
    }]
src/store/module/user.js
@@ -9,7 +9,7 @@
        // token存储在cookie
        token: '',
        // 用户id
        id: 11
        id: 11,
    },
    mutations: {
        set_token: (state, params) => (state.token = params),
src/uni_modules/luanqing-search/components/luanqing-search/luanqing-search.vue
@@ -1,7 +1,7 @@
<template>
    <view class="widget_style" >
        <view class="ffff" style="display: flex;height: 100%;">
            <input placeholder-class="widget_input_placehold" v-model="content" class="widget_input" :style="style1" :placeholder="placehold" />
            <input placeholder-class="widget_input_placehold" @confirm="onClickSearch" v-model="content" class="widget_input" :style="style1" :placeholder="placehold" />
            <view class="widget_button" v-if="isSearchTrue"  @click="onClickSearch">{{buttonText}}</view>
            <view class="widget_button searchBg" v-else  @click="onClickSearch"></view>
        </view>
src/uni_modules/next-search-more/components/next-search-more/next-search-more.vue
@@ -15,7 +15,7 @@
                <view class="content-box" :class="{ center: mode === 'center' }">
                    <!-- <text class="icon icon-search">&#xe66f;</text> -->
                    <text style="display: inline-block;padding-left: 20rpx;"></text>
                    <input class="input" :class="{ center: !active && mode === 'center' }" :focus="isFocus"
                    <input class="input" @confirm="search" :class="{ center: !active && mode === 'center' }" :focus="isFocus"
                        :placeholder="' '+placeholder" v-model="inputVal"  id="sdf" @input="input" @focus="focus" @blur="blur" />
                    <text v-if="isDelShow" class="icon icon-del" @click="clear">&#xe61c;</text>
                </view>
src/utils/Crypto.js
New file
@@ -0,0 +1,44 @@
import CryptoJS from 'crypto-js';
// 加密
// export const encryptAES = (data, key) => {
//     // AES 加密
//     let encrypted = CryptoJS.AES.encrypt(data, '8m5Jzz1r9waf4CMd').toString();
//     // 将加密结果转换为 Base64
//     let base64Result = btoa(encrypted)
//     return base64Result
// }
// 解密
// export const decryptAES = (encryptedData, key) => {
//     let str = atob(encryptedData)
//     let bytes = CryptoJS.AES.decrypt(str, '8m5Jzz1r9waf4CMd');
//     let decrypted = bytes.toString(CryptoJS.enc.Utf8);
//     return decrypted
// }
//秘钥
const CRYPTOJSKEY = "8m5Jzz1r9waf4CMd";
// 加密
export const encryptAES=(plaintText) =>{
    var plaintText = plaintText;
    var options = {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    };
    var key = CryptoJS.enc.Utf8.parse(CRYPTOJSKEY);
    var encryptedData = CryptoJS.AES.encrypt(plaintText, key, options);
    var encryptedBase64Str = encryptedData.toString().replace(/\//g, "_");
    encryptedBase64Str = encryptedBase64Str.replace(/\+/g, "-");
    return encryptedBase64Str;
}
//解密
export const decryptAES =(encryptedBase64Str)=> {
    var vals = encryptedBase64Str.replace(/\-/g, '+').replace(/_/g, '/');
    var options = {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    };
    var key = CryptoJS.enc.Utf8.parse(CRYPTOJSKEY);
    var decryptedData = CryptoJS.AES.decrypt(vals, key, options);
    var decryptedStr = CryptoJS.enc.Utf8.stringify(decryptedData);
    return decryptedStr;
}
src/utils/request/req1.js
@@ -22,7 +22,7 @@
req.interceptors.response.use(
    (res) => {
        // 判断token过期时的一些处理
        if (res.data.success ==false||res.data.errorCode == '11') {
        if (res.data.success== false&& res.data.errorText=='需要验证身份'&&res.data.errorCode == '11') {
            console.log('token过期了');
             Message.error(res.data.errorText || '')
            // 清楚token