| | |
| | | "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" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | } |
| | | } |
| | | }, |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "@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": { |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | "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", |
| | |
| | | |
| | | // 验证码 /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) |
| | | }) |
| | | }) |
| | | } |
| | | |
| | |
| | | // data:Obj |
| | | }) |
| | | } |
| | | |
| | | // 医学人物知识库高级检索 |
| | | export const getAdvanceSearch = (Obj) => { |
| | | return req1({ |
| | |
| | | } |
| | | // 医学人物知识库 |
| | | |
| | | // 检索页 |
| | | // 基础、高级检索 ------------------------------ |
| | | 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 |
| | | |
| | | |
| | | |
| | |
| | | data:Obj |
| | | }) |
| | | } |
| | | |
| | | // ----------- |
| | | |
| | | // 中国医学人物知识库 |
| | | // 数据统计 |
| | | export const getPDataStatistics = () => { |
| | | return req1({ |
| | | url: '/person/dataStatistics', |
| | | method: 'post' |
| | | }) |
| | | } |
| | | // ---------------- |
| | |
| | | // console.log(val); |
| | | }, |
| | | onSubmit(val) { |
| | | console.log(val); |
| | | this.$emit('onSubmit', val) |
| | | // console.log(val); |
| | | }, |
| | | } |
| | | } |
| | |
| | | <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" |
| | |
| | | <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;"> |
| | |
| | | :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="" /> |
| | |
| | | }); |
| | | } else if (index === '1') { |
| | | uni.navigateTo({ |
| | | url: '/pages/repository/repository?id=' + 1 |
| | | url:'/pages/characterRelation/characterRelation?id=' + 1 |
| | | }); |
| | | } else if (index === '2') { |
| | | uni.navigateTo({ |
| | |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "", |
| | | "enablePullDownRefresh" : false |
| | | "enablePullDownRefresh" : false, |
| | | "navigationStyle": "custom" |
| | | } |
| | | } |
| | | ], |
| | |
| | | <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"> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import CryptoJS from 'crypto-js'; |
| | | import { |
| | | encryptAES,decryptAES |
| | | } from '@/utils/Crypto.js' |
| | | import { |
| | | nextTick |
| | | } from "vue"; |
| | |
| | | required: true, |
| | | message: '请输入登录账号', |
| | | trigger: 'blur' |
| | | }], |
| | | }, |
| | | |
| | | ], |
| | | pass: [{ |
| | | required: true, |
| | | message: '请输入密码', |
| | |
| | | // 登录用户账号 |
| | | loginData: { |
| | | // 账号 |
| | | loginID: 'bbb', |
| | | pass: 'acy2jnwt/loR44ytIPPZBg==' |
| | | loginID: '', |
| | | pass: '' |
| | | }, |
| | | // 书籍数据 |
| | | listData: [{ |
| | |
| | | }, |
| | | // 用户登录 |
| | | 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) { |
| | |
| | | await getUserInfo().then(res => { |
| | | console.log(res, 'rrrrrrrrrrsd'); |
| | | }) |
| | | // 将账号存入到vuex中 |
| | | this.$store.dispatch('setUserName',res.object.username) |
| | | |
| | | uni.redirectTo({ |
| | | url: '/pages/index/index' |
| | | }) |
| | |
| | | <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"; |
| | |
| | | required: true, |
| | | message: '请输入登录账号', |
| | | trigger: 'blur' |
| | | }], |
| | | }, |
| | | { |
| | | pattern: /^[a-zA-Z0-9]{3,15}$/, |
| | | message: '请输入3-15个字符的字母或数字', |
| | | trigger: 'blur' |
| | | } // 自定义校验规则,使用正则表达式 |
| | | ], |
| | | pass: [{ |
| | | required: true, |
| | | message: '请输入密码', |
| | |
| | | }, |
| | | { |
| | | min: 6, |
| | | max: 12, |
| | | max: 10, |
| | | message: '密码长度在 6 到 12 个字符', |
| | | trigger: 'blur' |
| | | }, |
| | |
| | | required: true, |
| | | message: '请输入验证码', |
| | | trigger: 'blur' |
| | | }, |
| | | { |
| | | validator: (rule, value, callback) => this.validateVerificationCode(rule, value, |
| | | callback), |
| | | trigger: 'blur' |
| | | } |
| | | ] |
| | | }] |
| | | }, |
| | | // 登录注册框 |
| | | loginTrue: true, |
| | |
| | | // 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('用户隐私保护和个人信息条款'); |
| | | } |
| | | }, |
| | |
| | | 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 { |
| | |
| | | }, |
| | | // 用户注册 |
| | | 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; |
| | | // } |
| | | // }); |
| | | |
| | | }, |
| | | } |
| | | } |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | @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> |
| | |
| | | </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> |
| | |
| | | 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 |
| | |
| | | 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, |
| | |
| | | }], |
| | | |
| | | // 热门搜索 |
| | | hot: [{ |
| | | id: 1, |
| | | name: '李时珍', |
| | | bgColor: false |
| | | }, { |
| | | id: 2, |
| | | name: '李时珍2', |
| | | bgColor: false |
| | | }, { |
| | | id: 3, |
| | | name: '李时珍3', |
| | | bgColor: false |
| | | }, ], |
| | | hot: [], |
| | | // 点击的搜索项 |
| | | HotBg: false, |
| | | // 排序下拉菜单 |
| | |
| | | }], |
| | | 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, |
| | | // 一页显示多少条数据 |
| | |
| | | // [{name:'sdf',number}] |
| | | console.log(res, '接口成功sdsdfsdsfs'); |
| | | }) |
| | | |
| | | }, |
| | | // 右侧的list数据 |
| | | async getMList(obj) { |
| | |
| | | // 左侧的机构统计等等按钮 |
| | | 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(); |
| | |
| | | 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) { |
| | |
| | | // 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,); |
| | | }, |
| | |
| | | } |
| | | } |
| | | |
| | | .a, |
| | | .b { |
| | | min-height: 3rem !important; |
| | | } |
| | | |
| | | .paixu { |
| | | /* margin-right: .3rem; |
| | |
| | | <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" |
| | |
| | | import { |
| | | getchangePassword |
| | | } from '@/api/index.js' |
| | | import { |
| | | encryptAES |
| | | } from '@/utils/Crypto.js' |
| | | import { |
| | | nextTick |
| | | } from "vue"; |
| | |
| | | trigger: 'blur' |
| | | }, |
| | | { |
| | | min: 6, |
| | | min: 5, |
| | | max: 12, |
| | | message: '密码长度在 6 到 12 个字符', |
| | | trigger: 'blur' |
| | |
| | | value: 'sdfdsf', |
| | | // 修改密码 |
| | | amendDataPass: { |
| | | loginID: '', |
| | | loginID: this.$store.state.username, |
| | | rawPass: "", |
| | | newPass: "", |
| | | checkPass: "" |
| | |
| | | // }) |
| | | 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; |
| | |
| | | }, |
| | | // 忘记密码 |
| | | 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 { |
| | |
| | | import 'echarts/extension/bmap/bmap'; |
| | | import { |
| | | loadBMap |
| | | } from "../../static/map.js" |
| | | } from "@/static/map.js" |
| | | |
| | | export default { |
| | | data() { |
| | |
| | | <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"> |
| | |
| | | </li> |
| | | </ul> |
| | | </view> |
| | | <view class="" style="margin-left: .2rem;">书中最常提到的100位人物</view> |
| | | <!-- 关系表地图 --> |
| | | <view id="relation" style="margin-top: .2rem; height: 70vh;width: 100%;"></view> |
| | | <!-- 朝代 --> |
| | |
| | | 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: '李时珍', |
| | |
| | | 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: '' |
| | | }, ] |
| | | }, |
| | |
| | | }, |
| | | |
| | | methods: { |
| | | |
| | | // 关系图谱 |
| | | relation() { |
| | | var chartDom = document.getElementById('relation'); |
| | |
| | | } |
| | | // 根据关系数据生成连接线 |
| | | 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, |
| | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | 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: { |
| | |
| | | } |
| | | }] |
| | | }; |
| | | |
| | | // 将生成的连接线添加到echarts图表的option中 |
| | | option.series[0].links = links; |
| | | |
| | | |
| | | // 设置点击事件监听 |
| | | myChart.on('click', (params) => { |
| | | // menuNav2 = !menuNav1 |
| | |
| | | }) |
| | | option && myChart.setOption(option); |
| | | }, |
| | | // 关系图 |
| | | // 关系图 点击里面的元素 |
| | | spaceTimeArr(Arr) { |
| | | // 关系图的数据 |
| | | console.log(Arr); |
| | | // uni.navigateTo({ |
| | | // url: '/pages/repository/repository' |
| | | // }) |
| | | uni.navigateTo({ |
| | | url: '/pages/repository/repository' |
| | | }) |
| | | }, |
| | | // 获取朝代echarts的数据 |
| | | async echartsArr() { |
| | |
| | | }) |
| | | 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> |
| | |
| | | 获取验证码</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" |
| | |
| | | |
| | | <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 |
| | |
| | | if (value === '') { |
| | | callback(new Error('请输入密码')); |
| | | } else { |
| | | if (this.registerData.checkPass !== '') { |
| | | if (this.resetDataPass.checkPass !== '') { |
| | | this.$nextTick(() => { |
| | | this.$refs.formLogin.validateField('checkPass'); |
| | | }); |
| | |
| | | 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(); |
| | |
| | | message: '请输入登录账号', |
| | | trigger: 'blur' |
| | | }], |
| | | pass: [{ |
| | | newPass: [{ |
| | | required: true, |
| | | message: '请输入密码', |
| | | trigger: 'blur' |
| | | }, |
| | | { |
| | | min: 6, |
| | | max: 12, |
| | | max: 10, |
| | | message: '密码长度在 6 到 12 个字符', |
| | | trigger: 'blur' |
| | | }, |
| | |
| | | }], |
| | | 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: { |
| | |
| | | newPass: "", |
| | | checkPass: "" |
| | | }, |
| | | // 修改密码 |
| | | amendDataPass: { |
| | | loginID: '', |
| | | originalPass: "", |
| | | newPass: "", |
| | | checkPass: "" |
| | | }, |
| | | // 书籍数据 |
| | | listData: [{ |
| | | name: '历代医家传记库', |
| | | id: 1, |
| | | }, { |
| | | name: '世医医家库', |
| | | id: 2, |
| | | }, { |
| | | name: '医学学术流派', |
| | | id: 3, |
| | | }, { |
| | | name: '中国地域医谱', |
| | | id: 4, |
| | | }, { |
| | | name: '中国医事制度', |
| | | id: 5, |
| | | }, |
| | | |
| | | ] |
| | | } |
| | | }, |
| | | onLoad() { |
| | |
| | | }) |
| | | }, |
| | | // 获取验证码 |
| | | verifyCodeClick() { |
| | | async verifyCodeClick() { |
| | | console.log('获取验证码'); |
| | | let Obj = { |
| | | communicateParam: this.resetDataPass.cellphoneORmailbox, |
| | | } |
| | | await getverifyCode(Obj).then(res => { |
| | | console.log(res, '验证码获取成功'); |
| | | }) |
| | | }, |
| | | // 列表项跳转 |
| | | listDataClick(item) { |
| | |
| | | }) |
| | | } |
| | | }, |
| | | // 验证码校验 |
| | | 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() { |
| | |
| | | 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; |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | @media screen and (min-width: 1920px) and (max-width:2560px){ |
| | | .LoginBg { |
| | | margin: 0 !important; |
| | |
| | | margin-bottom: .1rem !important; |
| | | } |
| | | } |
| | | |
| | | .LoginBg { |
| | | width: 1.2rem; |
| | | height: .37rem; |
| | |
| | | <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" |
| | |
| | | // 搜索 |
| | | onSearch(val) { |
| | | uni.navigateTo({ |
| | | url: '/pages/knowledgeBase/knowledgeBase?name=' + val |
| | | url: '/pages/knowledgeBase/knowledgeBase?name=' + val.text |
| | | }) |
| | | console.log('vv', val); |
| | | }, |
| | | // 搜索 |
| | | // 切换搜索框的展开和收起状态 |
| | |
| | | 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('不搜索'); |
| | | } |
| | |
| | | <template> |
| | | <view> |
| | | <!-- 顶部 --> |
| | | <headNav text="中国医学人物知识库"/> |
| | | <headNav idIndex="0" text="中国医学人物知识库" /> |
| | | <!-- 搜索 --> |
| | | <view class="flex flex-center Search"> |
| | | <!-- <luanqing-search class="search_bar" @onSearch="onSearch"></luanqing-search> --> |
| | |
| | | :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> |
| | |
| | | </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'}"> |
| | |
| | | <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> |
| | |
| | | <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 /> |
| | |
| | | <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, |
| | |
| | | type: 'select', |
| | | label: '职业', |
| | | value: '', |
| | | name: 'occupation', |
| | | name: 'tagId', |
| | | options: [{ |
| | | label: '医家', |
| | | value: '1' |
| | |
| | | { |
| | | 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: '' |
| | | }, |
| | | { |
| | |
| | | } |
| | | ] |
| | | }, |
| | | |
| | | // 热门搜索 |
| | | 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 |
| | |
| | | } |
| | | }) |
| | | }, |
| | | 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) { |
| | |
| | | |
| | | }, |
| | | // 展开收缩 |
| | | 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) { |
| | | |
| | | /* 搜索 */ |
| | |
| | | background-color: #C1D3EA !important; |
| | | color: #2C2C2C !important; |
| | | font-weight: 400; |
| | | |
| | | .cell{ |
| | | |
| | | height: .3rem !important; |
| | |
| | | .el-table__row { |
| | | height: .46rem !important; |
| | | line-height: .46rem !important; |
| | | |
| | | .cell{ |
| | | |
| | | height: .3rem !important; |
| | |
| | | margin: 0 .1rem; |
| | | } |
| | | } |
| | | |
| | | .advancedSeaTrue1{ |
| | | border: 1px solid #C1D3EA; |
| | | } |
| | | .advancedSeaTrue, |
| | | .zhushuju { |
| | | padding: 0 1.24rem !important; |
| | |
| | | /* -------------------- */ |
| | | /* 右侧 */ |
| | | .rightList { |
| | | width: 100%; |
| | | padding-left: .2rem !important; |
| | | |
| | | .light { |
| | |
| | | background-color: #C1D3EA !important; |
| | | color: #2C2C2C !important; |
| | | font-weight: 400; |
| | | |
| | | .cell{ |
| | | |
| | | height: .3rem !important; |
| | |
| | | .el-table__row { |
| | | height: .46rem !important; |
| | | line-height: .46rem !important; |
| | | |
| | | .cell{ |
| | | |
| | | height: .3rem !important; |
| | |
| | | } |
| | | } |
| | | |
| | | .a { |
| | | /* .a { |
| | | height: 2rem; |
| | | } |
| | | |
| | | .b { |
| | | height: 100px; |
| | | } |
| | | } */ |
| | | |
| | | .box { |
| | | transition: height 0.3s; |
| | |
| | | |
| | | } |
| | | |
| | | /* 左边的 */ |
| | | .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> |
| | |
| | | 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: { |
| | |
| | | <script> |
| | | import { |
| | | loadBMap |
| | | } from "../../static/map.js" |
| | | } from "@/static/map.js" |
| | | import * as echarts from 'echarts'; |
| | | import 'echarts/extension/bmap/bmap'; |
| | | export default { |
| | |
| | | |
| | | 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到本地存储 |
| | |
| | | }) |
| | | // 读取缓存中state |
| | | if(uni.getStorageSync('state')){ |
| | | console.log(state,'aaaaaaaaastatestatestate'); |
| | | // console.log(state,'aaaaaaaaastatestatestate'); |
| | | store.replaceState(Object.assign({},store.state,uni.getStorageSync('state'))) |
| | | } |
| | | }] |
| | |
| | | // token存储在cookie |
| | | token: '', |
| | | // 用户id |
| | | id: 11 |
| | | id: 11, |
| | | }, |
| | | mutations: { |
| | | set_token: (state, params) => (state.token = params), |
| | |
| | | <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> |
| | |
| | | <view class="content-box" :class="{ center: mode === 'center' }"> |
| | | <!-- <text class="icon icon-search"></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"></text> |
| | | </view> |
New file |
| | |
| | | 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; |
| | | } |
| | |
| | | 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 |