├── .github
└── workflows
│ └── main.yml
├── .gitignore
├── .vscode
└── extensions.json
├── README.md
├── index.html
├── package.json
├── pnpm-lock.yaml
├── public
└── favicon.ico
├── src
├── App.vue
├── assets
│ └── logo.png
├── components
│ └── Birthday.vue
├── main.js
├── router
│ └── index.js
├── useVant.js
├── utils
│ ├── date-transform.js
│ └── index.js
└── views
│ ├── Home.vue
│ └── natal-chart
│ ├── CenterCell.vue
│ ├── PalaceCell.vue
│ ├── index.vue
│ └── utils
│ ├── Palace.js
│ ├── Person.js
│ ├── map.js
│ └── rules.js
└── vite.config.js
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | name: Build and Deploy
2 |
3 | on:
4 | push:
5 | branches: [ main ]
6 |
7 | jobs:
8 | build:
9 | runs-on: ubuntu-latest
10 |
11 | steps:
12 | - name: Checkout 🛎️
13 | uses: actions/checkout@v3
14 |
15 | - name: install node
16 | uses: actions/setup-node@v3
17 | with:
18 | node-version: '14'
19 |
20 | - name: use pnpm
21 | uses: pnpm/action-setup@v2.0.1
22 | with:
23 | version: 7
24 | run_install: false
25 |
26 | - name: Install and Build 🔧 # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
27 | run: |
28 | pnpm install
29 | npm run build
30 |
31 | - name: deploy 🚀
32 | uses: JamesIves/github-pages-deploy-action@v4.3.0
33 | with:
34 | token: ${{ secrets.ACCESS_TOKEN_OF_NATAL_CHART }}
35 | branch: gh-pages
36 | folder: dist
37 | clean: true
38 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["johnsoncodehk.volar"]
3 | }
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 紫薇斗数命盘生成
2 |
3 | 1. 建立表格
4 |
5 | 2. 子 -- 亥 (地支)
6 |
7 | 3. 根据阴历年份数字计算寅宫 -》① -》十天干排进 12 宫,放到地支前面
8 |
9 | 4. 根据寅宫确定命宫和身宫
10 | * 命宫:寅宫顺时针到生月,然后逆时针到生的时辰
11 | * 身宫:寅宫顺时针到生月,然后顺时针到生的时辰
12 |
13 | 5. 确定十二宫 -》 命宫顺时针依次:父母宫 -》福德-》田宅-》官禄 -》 朋友宫 -》 迁移 -》 疾厄 -》 财帛 -》 子女 -》 夫妻 -》兄弟
14 |
15 | 5. 计算哪个局:例如金四局,根据命宫的天干地支计算
16 | * 天干:五个
17 | * 地支:三个(从确定的天干开始接下来的三个开始循环)
18 |
19 | 6. 确定紫薇位置:日 / 几局 (整除) -> 从寅宫开始
20 | * 借偶数 -》 除出来的数 加上 借的数
21 | * 借奇数数 -》 除出来的数 减去 借的数
22 |
23 | 8. 排星 -》 确定紫薇 ,逆时针依次,天机 -》空格 -》太阳 -》武曲 -》天同 -》 空两格 -》 廉贞
24 |
25 | 9. 天府星 :紫薇斜对角(右上到左下)顺时针: 天府星 -》太阴 -》 贪狼 -》 巨门 -》天相 -》 天梁 -》 七杀 -》 空三格 -》 破军
26 |
27 | 10. 填次星
28 |
29 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite App
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "natal-chart",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "dev": "vite --host",
7 | "build": "vite build --base=/natal-chart/",
8 | "preview": "vite preview"
9 | },
10 | "dependencies": {
11 | "vant": "^3.4.8",
12 | "vue": "^3.2.25",
13 | "vue-router": "4"
14 | },
15 | "devDependencies": {
16 | "@vitejs/plugin-vue": "^2.3.1",
17 | "unplugin-vue-components": "^0.21.1",
18 | "vite": "^2.9.5",
19 | "vite-plugin-style-import": "1.4.1"
20 | }
21 | }
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.4
2 |
3 | specifiers:
4 | '@vitejs/plugin-vue': ^2.3.1
5 | unplugin-vue-components: ^0.21.1
6 | vant: ^3.4.8
7 | vite: ^2.9.5
8 | vite-plugin-style-import: 1.4.1
9 | vue: ^3.2.25
10 | vue-router: '4'
11 |
12 | dependencies:
13 | vant: registry.npmmirror.com/vant/3.4.8_vue@3.2.33
14 | vue: registry.npmmirror.com/vue/3.2.33
15 | vue-router: registry.npmmirror.com/vue-router/4.0.14_vue@3.2.33
16 |
17 | devDependencies:
18 | '@vitejs/plugin-vue': registry.npmmirror.com/@vitejs/plugin-vue/2.3.1_vite@2.9.6+vue@3.2.33
19 | unplugin-vue-components: registry.npmmirror.com/unplugin-vue-components/0.21.1_vite@2.9.6+vue@3.2.33
20 | vite: registry.npmmirror.com/vite/2.9.6
21 | vite-plugin-style-import: registry.npmmirror.com/vite-plugin-style-import/1.4.1_vite@2.9.6
22 |
23 | packages:
24 |
25 | registry.npmmirror.com/@antfu/utils/0.5.2:
26 | resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@antfu/utils/-/utils-0.5.2.tgz}
27 | name: '@antfu/utils'
28 | version: 0.5.2
29 | dev: true
30 |
31 | registry.npmmirror.com/@babel/parser/7.17.9:
32 | resolution: {integrity: sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/parser/-/parser-7.17.9.tgz}
33 | name: '@babel/parser'
34 | version: 7.17.9
35 | engines: {node: '>=6.0.0'}
36 | hasBin: true
37 | dev: false
38 |
39 | registry.npmmirror.com/@nodelib/fs.scandir/2.1.5:
40 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz}
41 | name: '@nodelib/fs.scandir'
42 | version: 2.1.5
43 | engines: {node: '>= 8'}
44 | dependencies:
45 | '@nodelib/fs.stat': registry.npmmirror.com/@nodelib/fs.stat/2.0.5
46 | run-parallel: registry.npmmirror.com/run-parallel/1.2.0
47 | dev: true
48 |
49 | registry.npmmirror.com/@nodelib/fs.stat/2.0.5:
50 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz}
51 | name: '@nodelib/fs.stat'
52 | version: 2.0.5
53 | engines: {node: '>= 8'}
54 | dev: true
55 |
56 | registry.npmmirror.com/@nodelib/fs.walk/1.2.8:
57 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz}
58 | name: '@nodelib/fs.walk'
59 | version: 1.2.8
60 | engines: {node: '>= 8'}
61 | dependencies:
62 | '@nodelib/fs.scandir': registry.npmmirror.com/@nodelib/fs.scandir/2.1.5
63 | fastq: registry.npmmirror.com/fastq/1.13.0
64 | dev: true
65 |
66 | registry.npmmirror.com/@popperjs/core/2.11.5:
67 | resolution: {integrity: sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@popperjs/core/-/core-2.11.5.tgz}
68 | name: '@popperjs/core'
69 | version: 2.11.5
70 | dev: false
71 |
72 | registry.npmmirror.com/@rollup/pluginutils/4.2.1:
73 | resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz}
74 | name: '@rollup/pluginutils'
75 | version: 4.2.1
76 | engines: {node: '>= 8.0.0'}
77 | dependencies:
78 | estree-walker: registry.npmmirror.com/estree-walker/2.0.2
79 | picomatch: registry.npmmirror.com/picomatch/2.3.1
80 | dev: true
81 |
82 | registry.npmmirror.com/@vant/icons/1.8.0:
83 | resolution: {integrity: sha512-sKfEUo2/CkQFuERxvkuF6mGQZDKu3IQdj5rV9Fm0weJXtchDSSQ+zt8qPCNUEhh9Y8shy5PzxbvAfOOkCwlCXg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vant/icons/-/icons-1.8.0.tgz}
84 | name: '@vant/icons'
85 | version: 1.8.0
86 | dev: false
87 |
88 | registry.npmmirror.com/@vant/popperjs/1.1.0:
89 | resolution: {integrity: sha512-8MD1gz146awV/uPxYjz4pet22f7a9YVKqk7T+gFkWFwT9mEcrIUEg/xPrdOnWKLP9puXyYtm7oVfSDSefZ/p/w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.1.0.tgz}
90 | name: '@vant/popperjs'
91 | version: 1.1.0
92 | dependencies:
93 | '@popperjs/core': registry.npmmirror.com/@popperjs/core/2.11.5
94 | dev: false
95 |
96 | registry.npmmirror.com/@vant/use/1.3.6:
97 | resolution: {integrity: sha512-3z+nywPaV2F5BdJO7RQxWlgfzJeEOmViD2yHMb7Tg+R4NR/7iQskqW8v2Cnv9FWSJgTOSHlcr7UzeLpiTAP4HA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vant/use/-/use-1.3.6.tgz}
98 | name: '@vant/use'
99 | version: 1.3.6
100 | dev: false
101 |
102 | registry.npmmirror.com/@vitejs/plugin-vue/2.3.1_vite@2.9.6+vue@3.2.33:
103 | resolution: {integrity: sha512-YNzBt8+jt6bSwpt7LP890U1UcTOIZZxfpE5WOJ638PNxSEKOqAi0+FSKS0nVeukfdZ0Ai/H7AFd6k3hayfGZqQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-2.3.1.tgz}
104 | id: registry.npmmirror.com/@vitejs/plugin-vue/2.3.1
105 | name: '@vitejs/plugin-vue'
106 | version: 2.3.1
107 | engines: {node: '>=12.0.0'}
108 | peerDependencies:
109 | vite: ^2.5.10
110 | vue: ^3.2.25
111 | dependencies:
112 | vite: registry.npmmirror.com/vite/2.9.6
113 | vue: registry.npmmirror.com/vue/3.2.33
114 | dev: true
115 |
116 | registry.npmmirror.com/@vue/compiler-core/3.2.33:
117 | resolution: {integrity: sha512-AAmr52ji3Zhk7IKIuigX2osWWsb2nQE5xsdFYjdnmtQ4gymmqXbjLvkSE174+fF3A3kstYrTgGkqgOEbsdLDpw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.33.tgz}
118 | name: '@vue/compiler-core'
119 | version: 3.2.33
120 | dependencies:
121 | '@babel/parser': registry.npmmirror.com/@babel/parser/7.17.9
122 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.33
123 | estree-walker: registry.npmmirror.com/estree-walker/2.0.2
124 | source-map: registry.npmmirror.com/source-map/0.6.1
125 | dev: false
126 |
127 | registry.npmmirror.com/@vue/compiler-dom/3.2.33:
128 | resolution: {integrity: sha512-GhiG1C8X98Xz9QUX/RlA6/kgPBWJkjq0Rq6//5XTAGSYrTMBgcLpP9+CnlUg1TFxnnCVughAG+KZl28XJqw8uQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.33.tgz}
129 | name: '@vue/compiler-dom'
130 | version: 3.2.33
131 | dependencies:
132 | '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core/3.2.33
133 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.33
134 | dev: false
135 |
136 | registry.npmmirror.com/@vue/compiler-sfc/3.2.33:
137 | resolution: {integrity: sha512-H8D0WqagCr295pQjUYyO8P3IejM3vEzeCO1apzByAEaAR/WimhMYczHfZVvlCE/9yBaEu/eu9RdiWr0kF8b71Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.33.tgz}
138 | name: '@vue/compiler-sfc'
139 | version: 3.2.33
140 | dependencies:
141 | '@babel/parser': registry.npmmirror.com/@babel/parser/7.17.9
142 | '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core/3.2.33
143 | '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom/3.2.33
144 | '@vue/compiler-ssr': registry.npmmirror.com/@vue/compiler-ssr/3.2.33
145 | '@vue/reactivity-transform': registry.npmmirror.com/@vue/reactivity-transform/3.2.33
146 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.33
147 | estree-walker: registry.npmmirror.com/estree-walker/2.0.2
148 | magic-string: registry.npmmirror.com/magic-string/0.25.9
149 | postcss: registry.npmmirror.com/postcss/8.4.12
150 | source-map: registry.npmmirror.com/source-map/0.6.1
151 | dev: false
152 |
153 | registry.npmmirror.com/@vue/compiler-ssr/3.2.33:
154 | resolution: {integrity: sha512-XQh1Xdk3VquDpXsnoCd7JnMoWec9CfAzQDQsaMcSU79OrrO2PNR0ErlIjm/mGq3GmBfkQjzZACV+7GhfRB8xMQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.33.tgz}
155 | name: '@vue/compiler-ssr'
156 | version: 3.2.33
157 | dependencies:
158 | '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom/3.2.33
159 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.33
160 | dev: false
161 |
162 | registry.npmmirror.com/@vue/devtools-api/6.1.4:
163 | resolution: {integrity: sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.1.4.tgz}
164 | name: '@vue/devtools-api'
165 | version: 6.1.4
166 | dev: false
167 |
168 | registry.npmmirror.com/@vue/reactivity-transform/3.2.33:
169 | resolution: {integrity: sha512-4UL5KOIvSQb254aqenW4q34qMXbfZcmEsV/yVidLUgvwYQQ/D21bGX3DlgPUGI3c4C+iOnNmDCkIxkILoX/Pyw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.33.tgz}
170 | name: '@vue/reactivity-transform'
171 | version: 3.2.33
172 | dependencies:
173 | '@babel/parser': registry.npmmirror.com/@babel/parser/7.17.9
174 | '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core/3.2.33
175 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.33
176 | estree-walker: registry.npmmirror.com/estree-walker/2.0.2
177 | magic-string: registry.npmmirror.com/magic-string/0.25.9
178 | dev: false
179 |
180 | registry.npmmirror.com/@vue/reactivity/3.2.33:
181 | resolution: {integrity: sha512-62Sq0mp9/0bLmDuxuLD5CIaMG2susFAGARLuZ/5jkU1FCf9EDbwUuF+BO8Ub3Rbodx0ziIecM/NsmyjardBxfQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.33.tgz}
182 | name: '@vue/reactivity'
183 | version: 3.2.33
184 | dependencies:
185 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.33
186 | dev: false
187 |
188 | registry.npmmirror.com/@vue/runtime-core/3.2.33:
189 | resolution: {integrity: sha512-N2D2vfaXsBPhzCV3JsXQa2NECjxP3eXgZlFqKh4tgakp3iX6LCGv76DLlc+IfFZq+TW10Y8QUfeihXOupJ1dGw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.33.tgz}
190 | name: '@vue/runtime-core'
191 | version: 3.2.33
192 | dependencies:
193 | '@vue/reactivity': registry.npmmirror.com/@vue/reactivity/3.2.33
194 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.33
195 | dev: false
196 |
197 | registry.npmmirror.com/@vue/runtime-dom/3.2.33:
198 | resolution: {integrity: sha512-LSrJ6W7CZTSUygX5s8aFkraDWlO6K4geOwA3quFF2O+hC3QuAMZt/0Xb7JKE3C4JD4pFwCSO7oCrZmZ0BIJUnw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.33.tgz}
199 | name: '@vue/runtime-dom'
200 | version: 3.2.33
201 | dependencies:
202 | '@vue/runtime-core': registry.npmmirror.com/@vue/runtime-core/3.2.33
203 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.33
204 | csstype: registry.npmmirror.com/csstype/2.6.20
205 | dev: false
206 |
207 | registry.npmmirror.com/@vue/server-renderer/3.2.33_vue@3.2.33:
208 | resolution: {integrity: sha512-4jpJHRD4ORv8PlbYi+/MfP8ec1okz6rybe36MdpkDrGIdEItHEUyaHSKvz+ptNEyQpALmmVfRteHkU9F8vxOew==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.33.tgz}
209 | id: registry.npmmirror.com/@vue/server-renderer/3.2.33
210 | name: '@vue/server-renderer'
211 | version: 3.2.33
212 | peerDependencies:
213 | vue: 3.2.33
214 | dependencies:
215 | '@vue/compiler-ssr': registry.npmmirror.com/@vue/compiler-ssr/3.2.33
216 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.33
217 | vue: registry.npmmirror.com/vue/3.2.33
218 | dev: false
219 |
220 | registry.npmmirror.com/@vue/shared/3.2.33:
221 | resolution: {integrity: sha512-UBc1Pg1T3yZ97vsA2ueER0F6GbJebLHYlEi4ou1H5YL4KWvMOOWwpYo9/QpWq93wxKG6Wo13IY74Hcn/f7c7Bg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/shared/-/shared-3.2.33.tgz}
222 | name: '@vue/shared'
223 | version: 3.2.33
224 | dev: false
225 |
226 | registry.npmmirror.com/acorn/8.7.1:
227 | resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/acorn/-/acorn-8.7.1.tgz}
228 | name: acorn
229 | version: 8.7.1
230 | engines: {node: '>=0.4.0'}
231 | hasBin: true
232 | dev: true
233 |
234 | registry.npmmirror.com/anymatch/3.1.2:
235 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz}
236 | name: anymatch
237 | version: 3.1.2
238 | engines: {node: '>= 8'}
239 | dependencies:
240 | normalize-path: registry.npmmirror.com/normalize-path/3.0.0
241 | picomatch: registry.npmmirror.com/picomatch/2.3.1
242 | dev: true
243 |
244 | registry.npmmirror.com/balanced-match/1.0.2:
245 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz}
246 | name: balanced-match
247 | version: 1.0.2
248 | dev: true
249 |
250 | registry.npmmirror.com/binary-extensions/2.2.0:
251 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz}
252 | name: binary-extensions
253 | version: 2.2.0
254 | engines: {node: '>=8'}
255 | dev: true
256 |
257 | registry.npmmirror.com/brace-expansion/2.0.1:
258 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz}
259 | name: brace-expansion
260 | version: 2.0.1
261 | dependencies:
262 | balanced-match: registry.npmmirror.com/balanced-match/1.0.2
263 | dev: true
264 |
265 | registry.npmmirror.com/braces/3.0.2:
266 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz}
267 | name: braces
268 | version: 3.0.2
269 | engines: {node: '>=8'}
270 | dependencies:
271 | fill-range: registry.npmmirror.com/fill-range/7.0.1
272 | dev: true
273 |
274 | registry.npmmirror.com/camel-case/4.1.2:
275 | resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz}
276 | name: camel-case
277 | version: 4.1.2
278 | dependencies:
279 | pascal-case: registry.npmmirror.com/pascal-case/3.1.2
280 | tslib: registry.npmmirror.com/tslib/2.4.0
281 | dev: true
282 |
283 | registry.npmmirror.com/capital-case/1.0.4:
284 | resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/capital-case/-/capital-case-1.0.4.tgz}
285 | name: capital-case
286 | version: 1.0.4
287 | dependencies:
288 | no-case: registry.npmmirror.com/no-case/3.0.4
289 | tslib: registry.npmmirror.com/tslib/2.4.0
290 | upper-case-first: registry.npmmirror.com/upper-case-first/2.0.2
291 | dev: true
292 |
293 | registry.npmmirror.com/change-case/4.1.2:
294 | resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/change-case/-/change-case-4.1.2.tgz}
295 | name: change-case
296 | version: 4.1.2
297 | dependencies:
298 | camel-case: registry.npmmirror.com/camel-case/4.1.2
299 | capital-case: registry.npmmirror.com/capital-case/1.0.4
300 | constant-case: registry.npmmirror.com/constant-case/3.0.4
301 | dot-case: registry.npmmirror.com/dot-case/3.0.4
302 | header-case: registry.npmmirror.com/header-case/2.0.4
303 | no-case: registry.npmmirror.com/no-case/3.0.4
304 | param-case: registry.npmmirror.com/param-case/3.0.4
305 | pascal-case: registry.npmmirror.com/pascal-case/3.1.2
306 | path-case: registry.npmmirror.com/path-case/3.0.4
307 | sentence-case: registry.npmmirror.com/sentence-case/3.0.4
308 | snake-case: registry.npmmirror.com/snake-case/3.0.4
309 | tslib: registry.npmmirror.com/tslib/2.4.0
310 | dev: true
311 |
312 | registry.npmmirror.com/chokidar/3.5.3:
313 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz}
314 | name: chokidar
315 | version: 3.5.3
316 | engines: {node: '>= 8.10.0'}
317 | dependencies:
318 | anymatch: registry.npmmirror.com/anymatch/3.1.2
319 | braces: registry.npmmirror.com/braces/3.0.2
320 | glob-parent: registry.npmmirror.com/glob-parent/5.1.2
321 | is-binary-path: registry.npmmirror.com/is-binary-path/2.1.0
322 | is-glob: registry.npmmirror.com/is-glob/4.0.3
323 | normalize-path: registry.npmmirror.com/normalize-path/3.0.0
324 | readdirp: registry.npmmirror.com/readdirp/3.6.0
325 | optionalDependencies:
326 | fsevents: registry.npmmirror.com/fsevents/2.3.2
327 | dev: true
328 |
329 | registry.npmmirror.com/constant-case/3.0.4:
330 | resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/constant-case/-/constant-case-3.0.4.tgz}
331 | name: constant-case
332 | version: 3.0.4
333 | dependencies:
334 | no-case: registry.npmmirror.com/no-case/3.0.4
335 | tslib: registry.npmmirror.com/tslib/2.4.0
336 | upper-case: registry.npmmirror.com/upper-case/2.0.2
337 | dev: true
338 |
339 | registry.npmmirror.com/csstype/2.6.20:
340 | resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz}
341 | name: csstype
342 | version: 2.6.20
343 | dev: false
344 |
345 | registry.npmmirror.com/debug/4.3.4:
346 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz}
347 | name: debug
348 | version: 4.3.4
349 | engines: {node: '>=6.0'}
350 | peerDependencies:
351 | supports-color: '*'
352 | peerDependenciesMeta:
353 | supports-color:
354 | optional: true
355 | dependencies:
356 | ms: registry.npmmirror.com/ms/2.1.2
357 | dev: true
358 |
359 | registry.npmmirror.com/dot-case/3.0.4:
360 | resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz}
361 | name: dot-case
362 | version: 3.0.4
363 | dependencies:
364 | no-case: registry.npmmirror.com/no-case/3.0.4
365 | tslib: registry.npmmirror.com/tslib/2.4.0
366 | dev: true
367 |
368 | registry.npmmirror.com/es-module-lexer/0.9.3:
369 | resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz}
370 | name: es-module-lexer
371 | version: 0.9.3
372 | dev: true
373 |
374 | registry.npmmirror.com/esbuild-android-64/0.14.38:
375 | resolution: {integrity: sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz}
376 | name: esbuild-android-64
377 | version: 0.14.38
378 | engines: {node: '>=12'}
379 | cpu: [x64]
380 | os: [android]
381 | requiresBuild: true
382 | dev: true
383 | optional: true
384 |
385 | registry.npmmirror.com/esbuild-android-arm64/0.14.38:
386 | resolution: {integrity: sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz}
387 | name: esbuild-android-arm64
388 | version: 0.14.38
389 | engines: {node: '>=12'}
390 | cpu: [arm64]
391 | os: [android]
392 | requiresBuild: true
393 | dev: true
394 | optional: true
395 |
396 | registry.npmmirror.com/esbuild-darwin-64/0.14.38:
397 | resolution: {integrity: sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz}
398 | name: esbuild-darwin-64
399 | version: 0.14.38
400 | engines: {node: '>=12'}
401 | cpu: [x64]
402 | os: [darwin]
403 | requiresBuild: true
404 | dev: true
405 | optional: true
406 |
407 | registry.npmmirror.com/esbuild-darwin-arm64/0.14.38:
408 | resolution: {integrity: sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz}
409 | name: esbuild-darwin-arm64
410 | version: 0.14.38
411 | engines: {node: '>=12'}
412 | cpu: [arm64]
413 | os: [darwin]
414 | requiresBuild: true
415 | dev: true
416 | optional: true
417 |
418 | registry.npmmirror.com/esbuild-freebsd-64/0.14.38:
419 | resolution: {integrity: sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz}
420 | name: esbuild-freebsd-64
421 | version: 0.14.38
422 | engines: {node: '>=12'}
423 | cpu: [x64]
424 | os: [freebsd]
425 | requiresBuild: true
426 | dev: true
427 | optional: true
428 |
429 | registry.npmmirror.com/esbuild-freebsd-arm64/0.14.38:
430 | resolution: {integrity: sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz}
431 | name: esbuild-freebsd-arm64
432 | version: 0.14.38
433 | engines: {node: '>=12'}
434 | cpu: [arm64]
435 | os: [freebsd]
436 | requiresBuild: true
437 | dev: true
438 | optional: true
439 |
440 | registry.npmmirror.com/esbuild-linux-32/0.14.38:
441 | resolution: {integrity: sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz}
442 | name: esbuild-linux-32
443 | version: 0.14.38
444 | engines: {node: '>=12'}
445 | cpu: [ia32]
446 | os: [linux]
447 | requiresBuild: true
448 | dev: true
449 | optional: true
450 |
451 | registry.npmmirror.com/esbuild-linux-64/0.14.38:
452 | resolution: {integrity: sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz}
453 | name: esbuild-linux-64
454 | version: 0.14.38
455 | engines: {node: '>=12'}
456 | cpu: [x64]
457 | os: [linux]
458 | requiresBuild: true
459 | dev: true
460 | optional: true
461 |
462 | registry.npmmirror.com/esbuild-linux-arm/0.14.38:
463 | resolution: {integrity: sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz}
464 | name: esbuild-linux-arm
465 | version: 0.14.38
466 | engines: {node: '>=12'}
467 | cpu: [arm]
468 | os: [linux]
469 | requiresBuild: true
470 | dev: true
471 | optional: true
472 |
473 | registry.npmmirror.com/esbuild-linux-arm64/0.14.38:
474 | resolution: {integrity: sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz}
475 | name: esbuild-linux-arm64
476 | version: 0.14.38
477 | engines: {node: '>=12'}
478 | cpu: [arm64]
479 | os: [linux]
480 | requiresBuild: true
481 | dev: true
482 | optional: true
483 |
484 | registry.npmmirror.com/esbuild-linux-mips64le/0.14.38:
485 | resolution: {integrity: sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz}
486 | name: esbuild-linux-mips64le
487 | version: 0.14.38
488 | engines: {node: '>=12'}
489 | cpu: [mips64el]
490 | os: [linux]
491 | requiresBuild: true
492 | dev: true
493 | optional: true
494 |
495 | registry.npmmirror.com/esbuild-linux-ppc64le/0.14.38:
496 | resolution: {integrity: sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz}
497 | name: esbuild-linux-ppc64le
498 | version: 0.14.38
499 | engines: {node: '>=12'}
500 | cpu: [ppc64]
501 | os: [linux]
502 | requiresBuild: true
503 | dev: true
504 | optional: true
505 |
506 | registry.npmmirror.com/esbuild-linux-riscv64/0.14.38:
507 | resolution: {integrity: sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz}
508 | name: esbuild-linux-riscv64
509 | version: 0.14.38
510 | engines: {node: '>=12'}
511 | cpu: [riscv64]
512 | os: [linux]
513 | requiresBuild: true
514 | dev: true
515 | optional: true
516 |
517 | registry.npmmirror.com/esbuild-linux-s390x/0.14.38:
518 | resolution: {integrity: sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz}
519 | name: esbuild-linux-s390x
520 | version: 0.14.38
521 | engines: {node: '>=12'}
522 | cpu: [s390x]
523 | os: [linux]
524 | requiresBuild: true
525 | dev: true
526 | optional: true
527 |
528 | registry.npmmirror.com/esbuild-netbsd-64/0.14.38:
529 | resolution: {integrity: sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz}
530 | name: esbuild-netbsd-64
531 | version: 0.14.38
532 | engines: {node: '>=12'}
533 | cpu: [x64]
534 | os: [netbsd]
535 | requiresBuild: true
536 | dev: true
537 | optional: true
538 |
539 | registry.npmmirror.com/esbuild-openbsd-64/0.14.38:
540 | resolution: {integrity: sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz}
541 | name: esbuild-openbsd-64
542 | version: 0.14.38
543 | engines: {node: '>=12'}
544 | cpu: [x64]
545 | os: [openbsd]
546 | requiresBuild: true
547 | dev: true
548 | optional: true
549 |
550 | registry.npmmirror.com/esbuild-sunos-64/0.14.38:
551 | resolution: {integrity: sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz}
552 | name: esbuild-sunos-64
553 | version: 0.14.38
554 | engines: {node: '>=12'}
555 | cpu: [x64]
556 | os: [sunos]
557 | requiresBuild: true
558 | dev: true
559 | optional: true
560 |
561 | registry.npmmirror.com/esbuild-windows-32/0.14.38:
562 | resolution: {integrity: sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz}
563 | name: esbuild-windows-32
564 | version: 0.14.38
565 | engines: {node: '>=12'}
566 | cpu: [ia32]
567 | os: [win32]
568 | requiresBuild: true
569 | dev: true
570 | optional: true
571 |
572 | registry.npmmirror.com/esbuild-windows-64/0.14.38:
573 | resolution: {integrity: sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz}
574 | name: esbuild-windows-64
575 | version: 0.14.38
576 | engines: {node: '>=12'}
577 | cpu: [x64]
578 | os: [win32]
579 | requiresBuild: true
580 | dev: true
581 | optional: true
582 |
583 | registry.npmmirror.com/esbuild-windows-arm64/0.14.38:
584 | resolution: {integrity: sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz}
585 | name: esbuild-windows-arm64
586 | version: 0.14.38
587 | engines: {node: '>=12'}
588 | cpu: [arm64]
589 | os: [win32]
590 | requiresBuild: true
591 | dev: true
592 | optional: true
593 |
594 | registry.npmmirror.com/esbuild/0.14.38:
595 | resolution: {integrity: sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild/-/esbuild-0.14.38.tgz}
596 | name: esbuild
597 | version: 0.14.38
598 | engines: {node: '>=12'}
599 | hasBin: true
600 | requiresBuild: true
601 | optionalDependencies:
602 | esbuild-android-64: registry.npmmirror.com/esbuild-android-64/0.14.38
603 | esbuild-android-arm64: registry.npmmirror.com/esbuild-android-arm64/0.14.38
604 | esbuild-darwin-64: registry.npmmirror.com/esbuild-darwin-64/0.14.38
605 | esbuild-darwin-arm64: registry.npmmirror.com/esbuild-darwin-arm64/0.14.38
606 | esbuild-freebsd-64: registry.npmmirror.com/esbuild-freebsd-64/0.14.38
607 | esbuild-freebsd-arm64: registry.npmmirror.com/esbuild-freebsd-arm64/0.14.38
608 | esbuild-linux-32: registry.npmmirror.com/esbuild-linux-32/0.14.38
609 | esbuild-linux-64: registry.npmmirror.com/esbuild-linux-64/0.14.38
610 | esbuild-linux-arm: registry.npmmirror.com/esbuild-linux-arm/0.14.38
611 | esbuild-linux-arm64: registry.npmmirror.com/esbuild-linux-arm64/0.14.38
612 | esbuild-linux-mips64le: registry.npmmirror.com/esbuild-linux-mips64le/0.14.38
613 | esbuild-linux-ppc64le: registry.npmmirror.com/esbuild-linux-ppc64le/0.14.38
614 | esbuild-linux-riscv64: registry.npmmirror.com/esbuild-linux-riscv64/0.14.38
615 | esbuild-linux-s390x: registry.npmmirror.com/esbuild-linux-s390x/0.14.38
616 | esbuild-netbsd-64: registry.npmmirror.com/esbuild-netbsd-64/0.14.38
617 | esbuild-openbsd-64: registry.npmmirror.com/esbuild-openbsd-64/0.14.38
618 | esbuild-sunos-64: registry.npmmirror.com/esbuild-sunos-64/0.14.38
619 | esbuild-windows-32: registry.npmmirror.com/esbuild-windows-32/0.14.38
620 | esbuild-windows-64: registry.npmmirror.com/esbuild-windows-64/0.14.38
621 | esbuild-windows-arm64: registry.npmmirror.com/esbuild-windows-arm64/0.14.38
622 | dev: true
623 |
624 | registry.npmmirror.com/estree-walker/2.0.2:
625 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz}
626 | name: estree-walker
627 | version: 2.0.2
628 |
629 | registry.npmmirror.com/fast-glob/3.2.11:
630 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz}
631 | name: fast-glob
632 | version: 3.2.11
633 | engines: {node: '>=8.6.0'}
634 | dependencies:
635 | '@nodelib/fs.stat': registry.npmmirror.com/@nodelib/fs.stat/2.0.5
636 | '@nodelib/fs.walk': registry.npmmirror.com/@nodelib/fs.walk/1.2.8
637 | glob-parent: registry.npmmirror.com/glob-parent/5.1.2
638 | merge2: registry.npmmirror.com/merge2/1.4.1
639 | micromatch: registry.npmmirror.com/micromatch/4.0.5
640 | dev: true
641 |
642 | registry.npmmirror.com/fastq/1.13.0:
643 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz}
644 | name: fastq
645 | version: 1.13.0
646 | dependencies:
647 | reusify: registry.npmmirror.com/reusify/1.0.4
648 | dev: true
649 |
650 | registry.npmmirror.com/fill-range/7.0.1:
651 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz}
652 | name: fill-range
653 | version: 7.0.1
654 | engines: {node: '>=8'}
655 | dependencies:
656 | to-regex-range: registry.npmmirror.com/to-regex-range/5.0.1
657 | dev: true
658 |
659 | registry.npmmirror.com/fs-extra/10.1.0:
660 | resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz}
661 | name: fs-extra
662 | version: 10.1.0
663 | engines: {node: '>=12'}
664 | dependencies:
665 | graceful-fs: registry.npmmirror.com/graceful-fs/4.2.10
666 | jsonfile: registry.npmmirror.com/jsonfile/6.1.0
667 | universalify: registry.npmmirror.com/universalify/2.0.0
668 | dev: true
669 |
670 | registry.npmmirror.com/fsevents/2.3.2:
671 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz}
672 | name: fsevents
673 | version: 2.3.2
674 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
675 | os: [darwin]
676 | requiresBuild: true
677 | dev: true
678 | optional: true
679 |
680 | registry.npmmirror.com/function-bind/1.1.1:
681 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz}
682 | name: function-bind
683 | version: 1.1.1
684 | dev: true
685 |
686 | registry.npmmirror.com/glob-parent/5.1.2:
687 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz}
688 | name: glob-parent
689 | version: 5.1.2
690 | engines: {node: '>= 6'}
691 | dependencies:
692 | is-glob: registry.npmmirror.com/is-glob/4.0.3
693 | dev: true
694 |
695 | registry.npmmirror.com/graceful-fs/4.2.10:
696 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz}
697 | name: graceful-fs
698 | version: 4.2.10
699 | dev: true
700 |
701 | registry.npmmirror.com/has/1.0.3:
702 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has/-/has-1.0.3.tgz}
703 | name: has
704 | version: 1.0.3
705 | engines: {node: '>= 0.4.0'}
706 | dependencies:
707 | function-bind: registry.npmmirror.com/function-bind/1.1.1
708 | dev: true
709 |
710 | registry.npmmirror.com/header-case/2.0.4:
711 | resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/header-case/-/header-case-2.0.4.tgz}
712 | name: header-case
713 | version: 2.0.4
714 | dependencies:
715 | capital-case: registry.npmmirror.com/capital-case/1.0.4
716 | tslib: registry.npmmirror.com/tslib/2.4.0
717 | dev: true
718 |
719 | registry.npmmirror.com/is-binary-path/2.1.0:
720 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz}
721 | name: is-binary-path
722 | version: 2.1.0
723 | engines: {node: '>=8'}
724 | dependencies:
725 | binary-extensions: registry.npmmirror.com/binary-extensions/2.2.0
726 | dev: true
727 |
728 | registry.npmmirror.com/is-core-module/2.9.0:
729 | resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-core-module/-/is-core-module-2.9.0.tgz}
730 | name: is-core-module
731 | version: 2.9.0
732 | dependencies:
733 | has: registry.npmmirror.com/has/1.0.3
734 | dev: true
735 |
736 | registry.npmmirror.com/is-extglob/2.1.1:
737 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz}
738 | name: is-extglob
739 | version: 2.1.1
740 | engines: {node: '>=0.10.0'}
741 | dev: true
742 |
743 | registry.npmmirror.com/is-glob/4.0.3:
744 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz}
745 | name: is-glob
746 | version: 4.0.3
747 | engines: {node: '>=0.10.0'}
748 | dependencies:
749 | is-extglob: registry.npmmirror.com/is-extglob/2.1.1
750 | dev: true
751 |
752 | registry.npmmirror.com/is-number/7.0.0:
753 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz}
754 | name: is-number
755 | version: 7.0.0
756 | engines: {node: '>=0.12.0'}
757 | dev: true
758 |
759 | registry.npmmirror.com/jsonfile/6.1.0:
760 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz}
761 | name: jsonfile
762 | version: 6.1.0
763 | dependencies:
764 | universalify: registry.npmmirror.com/universalify/2.0.0
765 | optionalDependencies:
766 | graceful-fs: registry.npmmirror.com/graceful-fs/4.2.10
767 | dev: true
768 |
769 | registry.npmmirror.com/local-pkg/0.4.2:
770 | resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.2.tgz}
771 | name: local-pkg
772 | version: 0.4.2
773 | engines: {node: '>=14'}
774 | dev: true
775 |
776 | registry.npmmirror.com/lower-case/2.0.2:
777 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz}
778 | name: lower-case
779 | version: 2.0.2
780 | dependencies:
781 | tslib: registry.npmmirror.com/tslib/2.4.0
782 | dev: true
783 |
784 | registry.npmmirror.com/magic-string/0.25.9:
785 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz}
786 | name: magic-string
787 | version: 0.25.9
788 | dependencies:
789 | sourcemap-codec: registry.npmmirror.com/sourcemap-codec/1.4.8
790 |
791 | registry.npmmirror.com/magic-string/0.26.2:
792 | resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/magic-string/-/magic-string-0.26.2.tgz}
793 | name: magic-string
794 | version: 0.26.2
795 | engines: {node: '>=12'}
796 | dependencies:
797 | sourcemap-codec: registry.npmmirror.com/sourcemap-codec/1.4.8
798 | dev: true
799 |
800 | registry.npmmirror.com/merge2/1.4.1:
801 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz}
802 | name: merge2
803 | version: 1.4.1
804 | engines: {node: '>= 8'}
805 | dev: true
806 |
807 | registry.npmmirror.com/micromatch/4.0.5:
808 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz}
809 | name: micromatch
810 | version: 4.0.5
811 | engines: {node: '>=8.6'}
812 | dependencies:
813 | braces: registry.npmmirror.com/braces/3.0.2
814 | picomatch: registry.npmmirror.com/picomatch/2.3.1
815 | dev: true
816 |
817 | registry.npmmirror.com/minimatch/5.1.0:
818 | resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/minimatch/-/minimatch-5.1.0.tgz}
819 | name: minimatch
820 | version: 5.1.0
821 | engines: {node: '>=10'}
822 | dependencies:
823 | brace-expansion: registry.npmmirror.com/brace-expansion/2.0.1
824 | dev: true
825 |
826 | registry.npmmirror.com/ms/2.1.2:
827 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz}
828 | name: ms
829 | version: 2.1.2
830 | dev: true
831 |
832 | registry.npmmirror.com/nanoid/3.3.3:
833 | resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nanoid/-/nanoid-3.3.3.tgz}
834 | name: nanoid
835 | version: 3.3.3
836 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
837 | hasBin: true
838 |
839 | registry.npmmirror.com/no-case/3.0.4:
840 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz}
841 | name: no-case
842 | version: 3.0.4
843 | dependencies:
844 | lower-case: registry.npmmirror.com/lower-case/2.0.2
845 | tslib: registry.npmmirror.com/tslib/2.4.0
846 | dev: true
847 |
848 | registry.npmmirror.com/normalize-path/3.0.0:
849 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz}
850 | name: normalize-path
851 | version: 3.0.0
852 | engines: {node: '>=0.10.0'}
853 | dev: true
854 |
855 | registry.npmmirror.com/param-case/3.0.4:
856 | resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz}
857 | name: param-case
858 | version: 3.0.4
859 | dependencies:
860 | dot-case: registry.npmmirror.com/dot-case/3.0.4
861 | tslib: registry.npmmirror.com/tslib/2.4.0
862 | dev: true
863 |
864 | registry.npmmirror.com/pascal-case/3.1.2:
865 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz}
866 | name: pascal-case
867 | version: 3.1.2
868 | dependencies:
869 | no-case: registry.npmmirror.com/no-case/3.0.4
870 | tslib: registry.npmmirror.com/tslib/2.4.0
871 | dev: true
872 |
873 | registry.npmmirror.com/path-case/3.0.4:
874 | resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/path-case/-/path-case-3.0.4.tgz}
875 | name: path-case
876 | version: 3.0.4
877 | dependencies:
878 | dot-case: registry.npmmirror.com/dot-case/3.0.4
879 | tslib: registry.npmmirror.com/tslib/2.4.0
880 | dev: true
881 |
882 | registry.npmmirror.com/path-parse/1.0.7:
883 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz}
884 | name: path-parse
885 | version: 1.0.7
886 | dev: true
887 |
888 | registry.npmmirror.com/picocolors/1.0.0:
889 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz}
890 | name: picocolors
891 | version: 1.0.0
892 |
893 | registry.npmmirror.com/picomatch/2.3.1:
894 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz}
895 | name: picomatch
896 | version: 2.3.1
897 | engines: {node: '>=8.6'}
898 | dev: true
899 |
900 | registry.npmmirror.com/postcss/8.4.12:
901 | resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss/-/postcss-8.4.12.tgz}
902 | name: postcss
903 | version: 8.4.12
904 | engines: {node: ^10 || ^12 || >=14}
905 | dependencies:
906 | nanoid: registry.npmmirror.com/nanoid/3.3.3
907 | picocolors: registry.npmmirror.com/picocolors/1.0.0
908 | source-map-js: registry.npmmirror.com/source-map-js/1.0.2
909 |
910 | registry.npmmirror.com/queue-microtask/1.2.3:
911 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz}
912 | name: queue-microtask
913 | version: 1.2.3
914 | dev: true
915 |
916 | registry.npmmirror.com/readdirp/3.6.0:
917 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz}
918 | name: readdirp
919 | version: 3.6.0
920 | engines: {node: '>=8.10.0'}
921 | dependencies:
922 | picomatch: registry.npmmirror.com/picomatch/2.3.1
923 | dev: true
924 |
925 | registry.npmmirror.com/resolve/1.22.0:
926 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/resolve/-/resolve-1.22.0.tgz}
927 | name: resolve
928 | version: 1.22.0
929 | hasBin: true
930 | dependencies:
931 | is-core-module: registry.npmmirror.com/is-core-module/2.9.0
932 | path-parse: registry.npmmirror.com/path-parse/1.0.7
933 | supports-preserve-symlinks-flag: registry.npmmirror.com/supports-preserve-symlinks-flag/1.0.0
934 | dev: true
935 |
936 | registry.npmmirror.com/resolve/1.22.1:
937 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz}
938 | name: resolve
939 | version: 1.22.1
940 | hasBin: true
941 | dependencies:
942 | is-core-module: registry.npmmirror.com/is-core-module/2.9.0
943 | path-parse: registry.npmmirror.com/path-parse/1.0.7
944 | supports-preserve-symlinks-flag: registry.npmmirror.com/supports-preserve-symlinks-flag/1.0.0
945 | dev: true
946 |
947 | registry.npmmirror.com/reusify/1.0.4:
948 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz}
949 | name: reusify
950 | version: 1.0.4
951 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
952 | dev: true
953 |
954 | registry.npmmirror.com/rollup/2.70.2:
955 | resolution: {integrity: sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rollup/-/rollup-2.70.2.tgz}
956 | name: rollup
957 | version: 2.70.2
958 | engines: {node: '>=10.0.0'}
959 | hasBin: true
960 | optionalDependencies:
961 | fsevents: registry.npmmirror.com/fsevents/2.3.2
962 | dev: true
963 |
964 | registry.npmmirror.com/run-parallel/1.2.0:
965 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz}
966 | name: run-parallel
967 | version: 1.2.0
968 | dependencies:
969 | queue-microtask: registry.npmmirror.com/queue-microtask/1.2.3
970 | dev: true
971 |
972 | registry.npmmirror.com/sentence-case/3.0.4:
973 | resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/sentence-case/-/sentence-case-3.0.4.tgz}
974 | name: sentence-case
975 | version: 3.0.4
976 | dependencies:
977 | no-case: registry.npmmirror.com/no-case/3.0.4
978 | tslib: registry.npmmirror.com/tslib/2.4.0
979 | upper-case-first: registry.npmmirror.com/upper-case-first/2.0.2
980 | dev: true
981 |
982 | registry.npmmirror.com/snake-case/3.0.4:
983 | resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/snake-case/-/snake-case-3.0.4.tgz}
984 | name: snake-case
985 | version: 3.0.4
986 | dependencies:
987 | dot-case: registry.npmmirror.com/dot-case/3.0.4
988 | tslib: registry.npmmirror.com/tslib/2.4.0
989 | dev: true
990 |
991 | registry.npmmirror.com/source-map-js/1.0.2:
992 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz}
993 | name: source-map-js
994 | version: 1.0.2
995 | engines: {node: '>=0.10.0'}
996 |
997 | registry.npmmirror.com/source-map/0.6.1:
998 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz}
999 | name: source-map
1000 | version: 0.6.1
1001 | engines: {node: '>=0.10.0'}
1002 | dev: false
1003 |
1004 | registry.npmmirror.com/sourcemap-codec/1.4.8:
1005 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz}
1006 | name: sourcemap-codec
1007 | version: 1.4.8
1008 |
1009 | registry.npmmirror.com/supports-preserve-symlinks-flag/1.0.0:
1010 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz}
1011 | name: supports-preserve-symlinks-flag
1012 | version: 1.0.0
1013 | engines: {node: '>= 0.4'}
1014 | dev: true
1015 |
1016 | registry.npmmirror.com/to-regex-range/5.0.1:
1017 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz}
1018 | name: to-regex-range
1019 | version: 5.0.1
1020 | engines: {node: '>=8.0'}
1021 | dependencies:
1022 | is-number: registry.npmmirror.com/is-number/7.0.0
1023 | dev: true
1024 |
1025 | registry.npmmirror.com/tslib/2.4.0:
1026 | resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz}
1027 | name: tslib
1028 | version: 2.4.0
1029 | dev: true
1030 |
1031 | registry.npmmirror.com/universalify/2.0.0:
1032 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz}
1033 | name: universalify
1034 | version: 2.0.0
1035 | engines: {node: '>= 10.0.0'}
1036 | dev: true
1037 |
1038 | registry.npmmirror.com/unplugin-vue-components/0.21.1_vite@2.9.6+vue@3.2.33:
1039 | resolution: {integrity: sha512-8MhIT323q1EUu7rz6NfQeiHqDrZKtygy6s9jzcQAuuZUM2T38SHlPT5YJjBOZmM0Bau6YuNTKfBBX4iHzeusaQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.21.1.tgz}
1040 | id: registry.npmmirror.com/unplugin-vue-components/0.21.1
1041 | name: unplugin-vue-components
1042 | version: 0.21.1
1043 | engines: {node: '>=14'}
1044 | peerDependencies:
1045 | '@babel/parser': ^7.15.8
1046 | vue: 2 || 3
1047 | peerDependenciesMeta:
1048 | '@babel/parser':
1049 | optional: true
1050 | dependencies:
1051 | '@antfu/utils': registry.npmmirror.com/@antfu/utils/0.5.2
1052 | '@rollup/pluginutils': registry.npmmirror.com/@rollup/pluginutils/4.2.1
1053 | chokidar: registry.npmmirror.com/chokidar/3.5.3
1054 | debug: registry.npmmirror.com/debug/4.3.4
1055 | fast-glob: registry.npmmirror.com/fast-glob/3.2.11
1056 | local-pkg: registry.npmmirror.com/local-pkg/0.4.2
1057 | magic-string: registry.npmmirror.com/magic-string/0.26.2
1058 | minimatch: registry.npmmirror.com/minimatch/5.1.0
1059 | resolve: registry.npmmirror.com/resolve/1.22.1
1060 | unplugin: registry.npmmirror.com/unplugin/0.7.2_vite@2.9.6
1061 | vue: registry.npmmirror.com/vue/3.2.33
1062 | transitivePeerDependencies:
1063 | - esbuild
1064 | - rollup
1065 | - supports-color
1066 | - vite
1067 | - webpack
1068 | dev: true
1069 |
1070 | registry.npmmirror.com/unplugin/0.7.2_vite@2.9.6:
1071 | resolution: {integrity: sha512-m7thX4jP8l5sETpLdUASoDOGOcHaOVtgNyrYlToyQUvILUtEzEnngRBrHnAX3IKqooJVmXpoa/CwQ/QqzvGaHQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/unplugin/-/unplugin-0.7.2.tgz}
1072 | id: registry.npmmirror.com/unplugin/0.7.2
1073 | name: unplugin
1074 | version: 0.7.2
1075 | peerDependencies:
1076 | esbuild: '>=0.13'
1077 | rollup: ^2.50.0
1078 | vite: ^2.3.0 || ^3.0.0-0
1079 | webpack: 4 || 5
1080 | peerDependenciesMeta:
1081 | esbuild:
1082 | optional: true
1083 | rollup:
1084 | optional: true
1085 | vite:
1086 | optional: true
1087 | webpack:
1088 | optional: true
1089 | dependencies:
1090 | acorn: registry.npmmirror.com/acorn/8.7.1
1091 | chokidar: registry.npmmirror.com/chokidar/3.5.3
1092 | vite: registry.npmmirror.com/vite/2.9.6
1093 | webpack-sources: registry.npmmirror.com/webpack-sources/3.2.3
1094 | webpack-virtual-modules: registry.npmmirror.com/webpack-virtual-modules/0.4.4
1095 | dev: true
1096 |
1097 | registry.npmmirror.com/upper-case-first/2.0.2:
1098 | resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/upper-case-first/-/upper-case-first-2.0.2.tgz}
1099 | name: upper-case-first
1100 | version: 2.0.2
1101 | dependencies:
1102 | tslib: registry.npmmirror.com/tslib/2.4.0
1103 | dev: true
1104 |
1105 | registry.npmmirror.com/upper-case/2.0.2:
1106 | resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/upper-case/-/upper-case-2.0.2.tgz}
1107 | name: upper-case
1108 | version: 2.0.2
1109 | dependencies:
1110 | tslib: registry.npmmirror.com/tslib/2.4.0
1111 | dev: true
1112 |
1113 | registry.npmmirror.com/vant/3.4.8_vue@3.2.33:
1114 | resolution: {integrity: sha512-xPAiPdCiaZbcdbVplVh4N2lmYzDAr2UdadkUHoa9uwfHS9/dab4f8TigfCFzlfAEk53U1J6w+6qZ+whtt4T3hw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vant/-/vant-3.4.8.tgz}
1115 | id: registry.npmmirror.com/vant/3.4.8
1116 | name: vant
1117 | version: 3.4.8
1118 | peerDependencies:
1119 | vue: ^3.0.0
1120 | dependencies:
1121 | '@vant/icons': registry.npmmirror.com/@vant/icons/1.8.0
1122 | '@vant/popperjs': registry.npmmirror.com/@vant/popperjs/1.1.0
1123 | '@vant/use': registry.npmmirror.com/@vant/use/1.3.6
1124 | vue: registry.npmmirror.com/vue/3.2.33
1125 | dev: false
1126 |
1127 | registry.npmmirror.com/vite-plugin-style-import/1.4.1_vite@2.9.6:
1128 | resolution: {integrity: sha512-lJCRvm7+So0hHdnSJiJPg9gD5mxtL6YY0jmhEph+k7ArpsyvqOh6han2kG5htbWWDZxHkUN9d1BuTFL//yCLLQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite-plugin-style-import/-/vite-plugin-style-import-1.4.1.tgz}
1129 | id: registry.npmmirror.com/vite-plugin-style-import/1.4.1
1130 | name: vite-plugin-style-import
1131 | version: 1.4.1
1132 | peerDependencies:
1133 | vite: '>=2.0.0'
1134 | dependencies:
1135 | '@rollup/pluginutils': registry.npmmirror.com/@rollup/pluginutils/4.2.1
1136 | change-case: registry.npmmirror.com/change-case/4.1.2
1137 | debug: registry.npmmirror.com/debug/4.3.4
1138 | es-module-lexer: registry.npmmirror.com/es-module-lexer/0.9.3
1139 | fs-extra: registry.npmmirror.com/fs-extra/10.1.0
1140 | magic-string: registry.npmmirror.com/magic-string/0.25.9
1141 | vite: registry.npmmirror.com/vite/2.9.6
1142 | transitivePeerDependencies:
1143 | - supports-color
1144 | dev: true
1145 |
1146 | registry.npmmirror.com/vite/2.9.6:
1147 | resolution: {integrity: sha512-3IffdrByHW95Yjv0a13TQOQfJs7L5dVlSPuTt432XLbRMriWbThqJN2k/IS6kXn5WY4xBLhK9XoaWay1B8VzUw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite/-/vite-2.9.6.tgz}
1148 | name: vite
1149 | version: 2.9.6
1150 | engines: {node: '>=12.2.0'}
1151 | hasBin: true
1152 | peerDependencies:
1153 | less: '*'
1154 | sass: '*'
1155 | stylus: '*'
1156 | peerDependenciesMeta:
1157 | less:
1158 | optional: true
1159 | sass:
1160 | optional: true
1161 | stylus:
1162 | optional: true
1163 | dependencies:
1164 | esbuild: registry.npmmirror.com/esbuild/0.14.38
1165 | postcss: registry.npmmirror.com/postcss/8.4.12
1166 | resolve: registry.npmmirror.com/resolve/1.22.0
1167 | rollup: registry.npmmirror.com/rollup/2.70.2
1168 | optionalDependencies:
1169 | fsevents: registry.npmmirror.com/fsevents/2.3.2
1170 | dev: true
1171 |
1172 | registry.npmmirror.com/vue-router/4.0.14_vue@3.2.33:
1173 | resolution: {integrity: sha512-wAO6zF9zxA3u+7AkMPqw9LjoUCjSxfFvINQj3E/DceTt6uEz1XZLraDhdg2EYmvVwTBSGlLYsUw8bDmx0754Mw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vue-router/-/vue-router-4.0.14.tgz}
1174 | id: registry.npmmirror.com/vue-router/4.0.14
1175 | name: vue-router
1176 | version: 4.0.14
1177 | peerDependencies:
1178 | vue: ^3.2.0
1179 | dependencies:
1180 | '@vue/devtools-api': registry.npmmirror.com/@vue/devtools-api/6.1.4
1181 | vue: registry.npmmirror.com/vue/3.2.33
1182 | dev: false
1183 |
1184 | registry.npmmirror.com/vue/3.2.33:
1185 | resolution: {integrity: sha512-si1ExAlDUrLSIg/V7D/GgA4twJwfsfgG+t9w10z38HhL/HA07132pUQ2KuwAo8qbCyMJ9e6OqrmWrOCr+jW7ZQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vue/-/vue-3.2.33.tgz}
1186 | name: vue
1187 | version: 3.2.33
1188 | dependencies:
1189 | '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom/3.2.33
1190 | '@vue/compiler-sfc': registry.npmmirror.com/@vue/compiler-sfc/3.2.33
1191 | '@vue/runtime-dom': registry.npmmirror.com/@vue/runtime-dom/3.2.33
1192 | '@vue/server-renderer': registry.npmmirror.com/@vue/server-renderer/3.2.33_vue@3.2.33
1193 | '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.33
1194 | dev: false
1195 |
1196 | registry.npmmirror.com/webpack-sources/3.2.3:
1197 | resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz}
1198 | name: webpack-sources
1199 | version: 3.2.3
1200 | engines: {node: '>=10.13.0'}
1201 | dev: true
1202 |
1203 | registry.npmmirror.com/webpack-virtual-modules/0.4.4:
1204 | resolution: {integrity: sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz}
1205 | name: webpack-virtual-modules
1206 | version: 0.4.4
1207 | dev: true
1208 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/haibolian/natal-chart/6a2c6babef7c72be3c41f3a8a37460a09d09bfe3/public/favicon.ico
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
11 |
12 |
13 |
22 |
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/haibolian/natal-chart/6a2c6babef7c72be3c41f3a8a37460a09d09bfe3/src/assets/logo.png
--------------------------------------------------------------------------------
/src/components/Birthday.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
11 |
12 |
13 |
14 | 阳历计算
15 | 农历计算
16 |
17 |
18 |
19 |
28 |
29 |
30 |
31 |
32 |
87 |
88 |
100 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './App.vue'
3 |
4 | import router from './router/index'
5 |
6 | import install from './useVant'
7 |
8 |
9 | const app = createApp(App)
10 |
11 | app.use(router)
12 |
13 | app.mount('#app')
14 |
15 | install.call(app)
16 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import { createRouter, createWebHashHistory } from 'vue-router'
2 |
3 | import Home from "@/views/Home.vue";
4 | import NatalChart from '@/views/natal-chart/index.vue';
5 |
6 | const routes = [
7 | {
8 | path: '/',
9 | component: Home
10 | },
11 | {
12 | path: '/home',
13 | component: Home
14 | },
15 | {
16 | path: '/natal-chart',
17 | component: NatalChart,
18 | }
19 | ]
20 |
21 | const router = createRouter({
22 | history: createWebHashHistory(),
23 | routes
24 | })
25 |
26 | export default router
--------------------------------------------------------------------------------
/src/useVant.js:
--------------------------------------------------------------------------------
1 | import {
2 | Button,
3 | Field,
4 | Cell,
5 | CellGroup,
6 | DatetimePicker,
7 | Popup,
8 | Dialog,
9 | Toast,
10 | Grid,
11 | GridItem,
12 | Row,
13 | Col
14 | } from "vant"
15 |
16 | function install(){
17 | this.use(Button)
18 | this.use(Field)
19 | this.use(CellGroup)
20 | this.use(DatetimePicker)
21 | this.use(Popup)
22 | this.use(Cell)
23 | this.use(Dialog)
24 | this.use(Toast)
25 | this.use(Grid)
26 | this.use(GridItem)
27 | this.use(Row)
28 | this.use(Col)
29 |
30 | }
31 |
32 | export default install
33 |
--------------------------------------------------------------------------------
/src/utils/date-transform.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @1900-2100区间内的公历、农历互转
3 | * @charset UTF-8
4 | * @Author jiangjiazhi
5 | * @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
6 | * @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
7 | */
8 |
9 |
10 |
11 | /**
12 | * 农历1900-2100的润大小信息表
13 | * @Array Of Property
14 | * @return Hex
15 | */
16 |
17 | var lunarInfo = [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909
18 |
19 | 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919
20 |
21 | 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929
22 |
23 | 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939
24 |
25 | 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949
26 |
27 | 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959
28 |
29 | 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969
30 |
31 | 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979
32 |
33 | 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989
34 |
35 | 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999
36 |
37 | 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009
38 |
39 | 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019
40 |
41 | 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029
42 |
43 | 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039
44 |
45 | 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049
46 |
47 | 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059
48 |
49 | 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069
50 |
51 | 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079
52 |
53 | 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089
54 |
55 | 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099
56 |
57 | 0x0d520] // 2100
58 |
59 |
60 |
61 | var solarMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
62 |
63 |
64 |
65 | /**
66 | * 天干地支之天干速查表
67 | * @Array Of Property trans['甲','乙','丙','丁','戊','己','庚','辛','壬','癸']
68 | * @return Cn string
69 | */
70 |
71 | var Gan = ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678']
72 |
73 |
74 |
75 | /**
76 | * 天干地支之地支速查表
77 | * @Array Of Property
78 | * @trans['子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥']
79 | * @return Cn string
80 | */
81 |
82 | var Zhi = ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5']
83 |
84 |
85 |
86 | /**
87 | * 天干地支之地支速查表<=>生肖
88 | * @Array Of Property
89 | * @trans['鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪']
90 | * @return Cn string
91 | */
92 |
93 | var Animals = ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a']
94 |
95 |
96 |
97 | /**
98 | * 24节气速查表
99 | * @Array Of Property
100 | * @trans['小寒','大寒','立春','雨水','惊蛰','春分','清明','谷雨','立夏','小满','芒种','夏至','小暑','大暑','立秋','处暑','白露','秋分','寒露','霜降','立冬','小雪','大雪','冬至']
101 | * @return Cn string
102 | */
103 |
104 | var solarTerm = ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3']
105 |
106 |
107 |
108 | /**
109 | * 1900-2100各年的24节气日期速查表
110 | * @Array Of Property
111 | * @return 0x string For splice
112 | */
113 |
114 | var sTermInfo = ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
115 |
116 | '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
117 |
118 | '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
119 |
120 | '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
121 |
122 | 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
123 |
124 | '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
125 |
126 | '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
127 |
128 | '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
129 |
130 | '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
131 |
132 | '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
133 |
134 | '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
135 |
136 | '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
137 |
138 | '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
139 |
140 | '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
141 |
142 | '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
143 |
144 | '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
145 |
146 | '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
147 |
148 | '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
149 |
150 | '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
151 |
152 | '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
153 |
154 | '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
155 |
156 | '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
157 |
158 | '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
159 |
160 | '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
161 |
162 | '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
163 |
164 | '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
165 |
166 | '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
167 |
168 | '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
169 |
170 | '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
171 |
172 | '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
173 |
174 | '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
175 |
176 | '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
177 |
178 | '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
179 |
180 | '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
181 |
182 | '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
183 |
184 | '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
185 |
186 | '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
187 |
188 | '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
189 |
190 | '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
191 |
192 | '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
193 |
194 | '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
195 |
196 | '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
197 |
198 | '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
199 |
200 | '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
201 |
202 | '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
203 |
204 | '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
205 |
206 | '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
207 |
208 | '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
209 |
210 | '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
211 |
212 | '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
213 |
214 | '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
215 |
216 | '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
217 |
218 | '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
219 |
220 | '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
221 |
222 | '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
223 |
224 | '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
225 |
226 | '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
227 |
228 | '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
229 |
230 | '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
231 |
232 | '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
233 |
234 | '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
235 |
236 | '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
237 |
238 | '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
239 |
240 | '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
241 |
242 | '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
243 |
244 | '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
245 |
246 | '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722']
247 |
248 |
249 |
250 | /**
251 | * 数字转中文速查表
252 | * @Array Of Property
253 | * @trans ['日','一','二','三','四','五','六','七','八','九','十']
254 | * @return Cn string
255 | */
256 |
257 | var nStr1 = ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341']
258 |
259 |
260 |
261 | /**
262 | * 日期转农历称呼速查表
263 | * @Array Of Property
264 | * @trans ['初','十','廿','卅']
265 | * @return Cn string
266 | */
267 |
268 | var nStr2 = ['\u521d', '\u5341', '\u5eff', '\u5345']
269 |
270 |
271 |
272 | /**
273 | * 月份转农历称呼速查表
274 | * @Array Of Property
275 | * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
276 | * @return Cn string
277 | */
278 |
279 | var nStr3 = ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a']
280 |
281 |
282 |
283 | /**
284 | * 返回农历y年一整年的总天数
285 | * @param lunar Year
286 | * @return Number
287 | * @eg:var count = calendar.lYearDays(1987) ;//count=387
288 | */
289 |
290 | function lYearDays (y) {
291 | var i
292 |
293 | var sum = 348
294 |
295 | for (i = 0x8000; i > 0x8; i >>= 1) { sum += (lunarInfo[y - 1900] & i) ? 1 : 0 }
296 |
297 | return (sum + leapDays(y))
298 |
299 | }
300 |
301 |
302 |
303 | /**
304 | * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
305 | * @param lunar Year
306 | * @return Number (0-12)
307 | * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
308 | */
309 |
310 | function leapMonth (y) { // 闰字编码 \u95f0
311 |
312 | return (lunarInfo[y - 1900] & 0xf)
313 |
314 | }
315 |
316 |
317 |
318 | /**
319 | * 返回农历y年闰月的天数 若该年没有闰月则返回0
320 | * @param lunar Year
321 | * @return Number (0、29、30)
322 | * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
323 | */
324 |
325 | function leapDays (y) {
326 | if (leapMonth(y)) {
327 | return ((lunarInfo[y - 1900] & 0x10000) ? 30 : 29)
328 |
329 | }
330 |
331 | return (0)
332 |
333 | }
334 |
335 |
336 |
337 | /**
338 | * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
339 | * @param lunar Year
340 | * @return Number (-1、29、30)
341 | * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
342 | */
343 |
344 | function monthDays (y, m) {
345 | if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1
346 |
347 | return ((lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29)
348 |
349 | }
350 |
351 |
352 |
353 | /**
354 | * 返回公历(!)y年m月的天数
355 | * @param solar Year
356 | * @return Number (-1、28、29、30、31)
357 | * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
358 | */
359 |
360 | function solarDays (y, m) {
361 | if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
362 |
363 | var ms = m - 1
364 |
365 | if (ms === 1) { // 2月份的闰平规律测算后确认返回28或29
366 |
367 | return (((y % 4 === 0) && (y % 100 !== 0) || (y % 400 === 0)) ? 29 : 28)
368 |
369 | } else {
370 | return (solarMonth[ms])
371 |
372 | }
373 |
374 | }
375 |
376 |
377 |
378 | /**
379 | * 农历年份转换为干支纪年
380 | * @param lYear 农历年的年份数
381 | * @return Cn string
382 | */
383 |
384 | function toGanZhiYear (lYear) {
385 | var ganKey = (lYear - 3) % 10
386 |
387 | var zhiKey = (lYear - 3) % 12
388 |
389 | if (ganKey === 0) ganKey = 10 // 如果余数为0则为最后一个天干
390 |
391 | if (zhiKey === 0) zhiKey = 12 // 如果余数为0则为最后一个地支
392 |
393 | return Gan[ganKey - 1] + Zhi[zhiKey - 1]
394 |
395 | }
396 |
397 |
398 |
399 | /**
400 | * 公历月、日判断所属星座
401 | * @param cMonth [description]
402 | * @param cDay [description]
403 | * @return Cn string
404 | */
405 |
406 | function toAstro (cMonth, cDay) {
407 | var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf'
408 |
409 | var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]
410 |
411 | return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7' // 座
412 |
413 | }
414 |
415 |
416 |
417 | /**
418 | * 传入offset偏移量返回干支
419 | * @param offset 相对甲子的偏移量
420 | * @return Cn string
421 | */
422 |
423 | function toGanZhi (offset) {
424 | return Gan[offset % 10] + Zhi[offset % 12]
425 |
426 | }
427 |
428 |
429 |
430 | /**
431 | * 传入公历(!)y年获得该年第n个节气的公历日期
432 | * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
433 | * @return day Number
434 | * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
435 | */
436 |
437 | function getTerm (y, n) {
438 | if (y < 1900 || y > 2100) { return -1 }
439 |
440 | if (n < 1 || n > 24) { return -1 }
441 |
442 | var _table = sTermInfo[y - 1900]
443 |
444 | var _info = [
445 |
446 | parseInt('0x' + _table.substr(0, 5)).toString(),
447 |
448 | parseInt('0x' + _table.substr(5, 5)).toString(),
449 |
450 | parseInt('0x' + _table.substr(10, 5)).toString(),
451 |
452 | parseInt('0x' + _table.substr(15, 5)).toString(),
453 |
454 | parseInt('0x' + _table.substr(20, 5)).toString(),
455 |
456 | parseInt('0x' + _table.substr(25, 5)).toString()
457 |
458 | ]
459 |
460 | var _calday = [
461 |
462 | _info[0].substr(0, 1),
463 |
464 | _info[0].substr(1, 2),
465 |
466 | _info[0].substr(3, 1),
467 |
468 | _info[0].substr(4, 2),
469 |
470 |
471 |
472 | _info[1].substr(0, 1),
473 |
474 | _info[1].substr(1, 2),
475 |
476 | _info[1].substr(3, 1),
477 |
478 | _info[1].substr(4, 2),
479 |
480 |
481 |
482 | _info[2].substr(0, 1),
483 |
484 | _info[2].substr(1, 2),
485 |
486 | _info[2].substr(3, 1),
487 |
488 | _info[2].substr(4, 2),
489 |
490 |
491 |
492 | _info[3].substr(0, 1),
493 |
494 | _info[3].substr(1, 2),
495 |
496 | _info[3].substr(3, 1),
497 |
498 | _info[3].substr(4, 2),
499 |
500 |
501 |
502 | _info[4].substr(0, 1),
503 |
504 | _info[4].substr(1, 2),
505 |
506 | _info[4].substr(3, 1),
507 |
508 | _info[4].substr(4, 2),
509 |
510 |
511 |
512 | _info[5].substr(0, 1),
513 |
514 | _info[5].substr(1, 2),
515 |
516 | _info[5].substr(3, 1),
517 |
518 | _info[5].substr(4, 2)
519 |
520 | ]
521 |
522 | return parseInt(_calday[n - 1])
523 |
524 | }
525 |
526 |
527 |
528 | /**
529 | * 传入农历数字月份返回汉语通俗表示法
530 | * @param lunar month
531 | * @return Cn string
532 | * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
533 | */
534 |
535 | function toChinaMonth (m) { // 月 => \u6708
536 |
537 | if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
538 |
539 | var s = nStr3[m - 1]
540 |
541 | s += '\u6708' // 加上月字
542 |
543 | return s
544 |
545 | }
546 |
547 |
548 |
549 | /**
550 | * 传入农历日期数字返回汉字表示法
551 | * @param lunar day
552 | * @return Cn string
553 | * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
554 | */
555 |
556 | function toChinaDay (d) { // 日 => \u65e5
557 |
558 | var s
559 |
560 | switch (d) {
561 | case 10:
562 |
563 | s = '\u521d\u5341'
564 |
565 | break
566 |
567 | case 20:
568 |
569 | s = '\u4e8c\u5341'
570 |
571 | break
572 |
573 | case 30:
574 |
575 | s = '\u4e09\u5341'
576 |
577 | break
578 |
579 | default :
580 |
581 | s = nStr2[Math.floor(d / 10)]
582 |
583 | s += nStr1[d % 10]
584 |
585 | }
586 |
587 | return (s)
588 |
589 | }
590 |
591 |
592 |
593 | /**
594 | * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
595 | * @param y year
596 | * @return Cn string
597 | * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
598 | */
599 |
600 | function getAnimal (y) {
601 | return Animals[(y - 4) % 12]
602 |
603 | }
604 |
605 |
606 |
607 | /**
608 | * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
609 | * @param y solar year
610 | * @param m solar month
611 | * @param d solar day
612 | * @return JSON object
613 | * @eg:console.log(calendar.solar2lunar(1987,11,01));
614 | */
615 |
616 | function solar2lunar (y, m, d) { // 参数区间1900.1.31~2100.12.31
617 |
618 | // 年份限定、上限
619 |
620 | if (y < 1900 || y > 2100) {
621 | return -1 // undefined转换为数字变为NaN
622 |
623 | }
624 |
625 | // 公历传参最下限
626 |
627 | if (y === 1900 && m === 1 && d < 31) {
628 | return -1
629 |
630 | }
631 |
632 | // 未传参 获得当天
633 |
634 | var objDate = null
635 |
636 | if (!y) {
637 | objDate = new Date()
638 |
639 | } else {
640 | objDate = new Date(y, parseInt(m) - 1, d)
641 |
642 | }
643 |
644 | var i
645 |
646 | var leap = 0
647 |
648 | var temp = 0
649 |
650 | // 修正ymd参数
651 |
652 | y = objDate.getFullYear()
653 |
654 | m = objDate.getMonth() + 1
655 |
656 | d = objDate.getDate()
657 |
658 | var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000
659 |
660 | for (i = 1900; i < 2101 && offset > 0; i++) {
661 | temp = lYearDays(i)
662 |
663 | offset -= temp
664 |
665 | }
666 |
667 | if (offset < 0) {
668 | offset += temp; i--
669 |
670 | }
671 |
672 |
673 |
674 | // 是否今天
675 |
676 | var isTodayObj = new Date()
677 |
678 | var isToday = false
679 |
680 | if (isTodayObj.getFullYear() === y && isTodayObj.getMonth() + 1 === m && isTodayObj.getDate() === d) {
681 | isToday = true
682 |
683 | }
684 |
685 | // 星期几
686 |
687 | var nWeek = objDate.getDay()
688 |
689 | var cWeek = nStr1[nWeek]
690 |
691 | // 数字表示周几顺应天朝周一开始的惯例
692 |
693 | if (nWeek === 0) {
694 | nWeek = 7
695 |
696 | }
697 |
698 | // 农历年
699 |
700 | var year = i
701 |
702 | leap = leapMonth(i) // 闰哪个月
703 |
704 | var isLeap = false
705 |
706 |
707 |
708 | // 效验闰月
709 |
710 | for (i = 1; i < 13 && offset > 0; i++) {
711 | // 闰月
712 |
713 | if (leap > 0 && i === (leap + 1) && isLeap === false) {
714 | --i
715 |
716 | isLeap = true; temp = leapDays(year) // 计算农历闰月天数
717 |
718 | } else {
719 | temp = monthDays(year, i)// 计算农历普通月天数
720 |
721 | }
722 |
723 | // 解除闰月
724 |
725 | if (isLeap === true && i === (leap + 1)) { isLeap = false }
726 |
727 | offset -= temp
728 |
729 | }
730 |
731 | // 闰月导致数组下标重叠取反
732 |
733 | if (offset === 0 && leap > 0 && i === leap + 1) {
734 | if (isLeap) {
735 | isLeap = false
736 |
737 | } else {
738 | isLeap = true; --i
739 |
740 | }
741 |
742 | }
743 |
744 | if (offset < 0) {
745 | offset += temp; --i
746 |
747 | }
748 |
749 | // 农历月
750 |
751 | var month = i
752 |
753 | // 农历日
754 |
755 | var day = offset + 1
756 |
757 | // 天干地支处理
758 |
759 | var sm = m - 1
760 |
761 | var gzY = toGanZhiYear(year)
762 |
763 |
764 |
765 | // 当月的两个节气
766 |
767 | // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
768 |
769 | var firstNode = getTerm(y, (m * 2 - 1)) // 返回当月「节」为几日开始
770 |
771 | var secondNode = getTerm(y, (m * 2)) // 返回当月「节」为几日开始
772 |
773 |
774 |
775 | // 依据12节气修正干支月
776 |
777 | var gzM = toGanZhi((y - 1900) * 12 + m + 11)
778 |
779 | if (d >= firstNode) {
780 | gzM = toGanZhi((y - 1900) * 12 + m + 12)
781 |
782 | }
783 |
784 | // 传入的日期的节气与否
785 |
786 | var isTerm = false
787 |
788 | var Term = null
789 |
790 | if (firstNode === d) {
791 | isTerm = true
792 |
793 | Term = solarTerm[m * 2 - 2]
794 |
795 | }
796 |
797 | if (secondNode === d) {
798 | isTerm = true
799 |
800 | Term = solarTerm[m * 2 - 1]
801 |
802 | }
803 |
804 | // 日柱 当月一日与 1900/1/1 相差天数
805 |
806 | var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10
807 |
808 | var gzD = toGanZhi(dayCyclical + d - 1)
809 |
810 | // 该日期所属的星座
811 |
812 | var astro = toAstro(m, d)
813 |
814 | return {'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + toChinaMonth(month), 'IDayCn': toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro}
815 |
816 | }
817 |
818 |
819 |
820 |
821 | var calendarFormatter = {
822 | // 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
823 |
824 | solar2lunar:function(y, m, d){ // 参数区间1900.1.31~2100.12.31
825 |
826 | return solar2lunar(y, m, d)
827 |
828 | },
829 |
830 | /**
831 | * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
832 | * @param y lunar year
833 | * @param m lunar month
834 | * @param d lunar day
835 | * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
836 | * @return JSON object
837 | * @eg:console.log(calendar.lunar2solar(1987,9,10));
838 | */
839 |
840 | lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1
841 | y = Number(y)
842 | m = Number(m)
843 | d = Number(d)
844 | isLeapMonth = !!isLeapMonth
845 |
846 | if (isLeapMonth && (leapMonth !== m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
847 |
848 | if (y === 2100 && m === 12 && d > 1 || y === 1900 && m === 1 && d < 31) { return -1 } // 超出了最大极限值
849 |
850 | var day = monthDays(y, m)
851 |
852 | var _day = day
853 |
854 | // bugFix 2016-9-25
855 |
856 | // if month is leap, _day use leapDays method
857 |
858 | if (isLeapMonth) {
859 | _day = leapDays(y, m)
860 |
861 | }
862 |
863 | if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验
864 |
865 |
866 |
867 | // 计算农历的时间差
868 |
869 | var offset = 0
870 |
871 | for (var i = 1900; i < y; i++) {
872 | offset += lYearDays(i)
873 |
874 | }
875 |
876 | var leap = 0
877 |
878 | var isAdd = false
879 |
880 | for (i = 1; i < m; i++) {
881 | leap = leapMonth(y)
882 |
883 | if (!isAdd) { // 处理闰月
884 |
885 | if (leap <= i && leap > 0) {
886 | offset += leapDays(y); isAdd = true
887 |
888 | }
889 |
890 | }
891 |
892 | offset += monthDays(y, i)
893 |
894 | }
895 |
896 | // 转换闰月农历 需补充该年闰月的前一个月的时差
897 |
898 | if (isLeapMonth) { offset += day }
899 |
900 | // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
901 |
902 | var stmap = Date.UTC(1900, 1, 30, 0, 0, 0)
903 |
904 | var calObj = new Date((offset + d - 31) * 86400000 + stmap)
905 |
906 | var cY = calObj.getUTCFullYear()
907 |
908 | var cM = calObj.getUTCMonth() + 1
909 |
910 | var cD = calObj.getUTCDate()
911 |
912 | return solar2lunar(cY, cM, cD)
913 |
914 | }
915 |
916 | }
917 |
918 | export default calendarFormatter
919 |
920 | const lunar2solar = calendarFormatter.lunar2solar
921 | export { lunar2solar, solar2lunar }
--------------------------------------------------------------------------------
/src/utils/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @formatDate
3 | */
4 | export function formatDate(date = new Date(), dateSeparator = '-', timeSeparator = ':'){
5 | const y = date.getFullYear()
6 | const m = date.getMonth() + 1
7 | const d = date.getDate()
8 |
9 | const h = date.getHours()
10 | const mn = date.getMinutes()
11 | const s = date.getSeconds()
12 |
13 | const _date = [y, m, d].join(dateSeparator)
14 | const _time = [h, mn, s].join(timeSeparator)
15 |
16 | return {
17 | allDate: `${_date} ${_time}`,
18 | date: _date,
19 | time: _time
20 | }
21 | }
22 |
23 | // export function
--------------------------------------------------------------------------------
/src/views/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
14 |
15 |
20 |
--------------------------------------------------------------------------------
/src/views/natal-chart/CenterCell.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 姓名:{{ name }}
6 |
7 |
8 | {{ wuxingGame.name }}
9 |
10 |
11 |
12 | 阳历:{{ solar }}
13 | {{ shichen + '时'}}
14 |
15 |
16 |
17 |
18 | 阴历:{{ lunar }}
19 | {{ shichen + '时'}}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
31 |
53 |
54 |
--------------------------------------------------------------------------------
/src/views/natal-chart/PalaceCell.vue:
--------------------------------------------------------------------------------
1 |
2 | onClick(e)"
7 | >
8 |
9 |
10 | {{ star.name }}
11 | {{ star.sihua }}
12 |
13 |
14 |
15 | {{ star.name }}
16 | {{ star.sihua }}
17 |
18 |
19 | {{ star.name }}
20 |
21 |
22 |
23 |
24 |
25 | {{ name }}
26 |
27 |
28 |
29 |
30 |
31 | {{ tiangan + dizhi }}
32 |
33 |
34 |
35 |
36 |
37 |
42 |
67 |
68 |
128 |
--------------------------------------------------------------------------------
/src/views/natal-chart/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | onClickPalaceCell(palace.index)"/>
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
140 |
141 |
169 |
170 |
--------------------------------------------------------------------------------
/src/views/natal-chart/utils/Palace.js:
--------------------------------------------------------------------------------
1 | class Palace {
2 | constructor(ops){
3 | this.code = undefined
4 | this.index = undefined
5 | this.dizhi = ops.dizhi
6 | this.dizhiCode = ops.code
7 | this.isFate = false
8 | this.isBody = false
9 | this.mainStars = []
10 | this.subStars = []
11 | this.smallStars = []
12 | }
13 | setTiangan({ name, code }){
14 | this.tiangan = name
15 | this.tianganCode = code
16 | }
17 | setFatePalace(index){
18 | this.isFate = true
19 | this.index = index
20 | this.name = '命宫'
21 | this.code = 'ming'
22 | }
23 | setBodyPalace(index){
24 | this.isBody = true
25 | this.index = index
26 | }
27 | setPalaceName({ name, code }, index){
28 | this.name = name
29 | this.code = code
30 | this.index = index
31 | }
32 | addMainStar(star){
33 | this.mainStars.unshift(star)
34 | }
35 | addSubStar(star){
36 | this.subStars.unshift(star)
37 | }
38 | addSmallStar(star){
39 | this.smallStars.unshift(star)
40 | }
41 | }
42 |
43 | export default Palace
--------------------------------------------------------------------------------
/src/views/natal-chart/utils/Person.js:
--------------------------------------------------------------------------------
1 | import { reactive } from 'vue';
2 | import { lunar2solar } from '@/utils/date-transform';
3 | import {
4 | tiangan,
5 | dizhi,
6 | dizhiChart,
7 | getShichen,
8 | palaceNames,
9 | wuxingGame,
10 | getMainStarsWithZiwei,
11 | getMainStarsWithTianfu,
12 | getTianganCode,
13 | getDizhiCode
14 | } from '../utils/map';
15 | import {
16 | getSmallStarsConfig
17 | } from './rules';
18 | import { getYingongStartTiangan } from '../utils/map';
19 | import Palace from './Palace';
20 | class Person {
21 | #fillOrder = ['yin', 'mao', 'chen', 'si', 'wu', 'wei', 'shen', 'you', 'xu', 'hai', 'zi', 'chou']
22 | constructor(ops){
23 | this.name = ops.name
24 | this.lunarDate = ops.d
25 | this.numTime = ops.t
26 | this.stars2Palace = {}
27 | this.palaces = {}
28 | this.init()
29 | }
30 | getPalace(index){
31 | if(index < 0) {
32 | return this.natalChart[index + 12]
33 | }else if(index < 12) {
34 | return this.natalChart[index]
35 | }else{
36 | return this.natalChart[index - 12]
37 | }
38 | }
39 | init(){
40 | this.generateLunarInfo()
41 | this.setShichen()
42 | this.initPalaces()
43 | this.fillTiangan()
44 | this.setFatePalace()
45 | this.setBodyPalace()
46 | this.setOtherPalace()
47 | this.setWuxingGame()
48 | const zIndex = this.setZiweiStars()
49 | this.setTianfuStars(zIndex)
50 | // 小星
51 | this.setOtherRegularSmallStars()
52 | }
53 | // 生成农历信息
54 | generateLunarInfo(){
55 | const date = this.lunarDate.split('-')?.map(n => Number(n))
56 | this.lunarInfo = lunar2solar(...date)
57 | this.lMonth = this.lunarInfo.lMonth
58 | this.lDay = this.lunarInfo.lDay
59 | const [t, d] = this.lunarInfo.gzYear.split('')
60 | this.tYear = getTianganCode(t)
61 | this.dYear = getDizhiCode(d)
62 | }
63 | // 设置时辰
64 | setShichen(){
65 | const { shichen, index } = getShichen(this.numTime)
66 | this.shichen = shichen
67 | this.shichenIndex = index
68 | }
69 | // 生成十二宫
70 | initPalaces(){
71 | this.natalChart = reactive([])
72 | dizhiChart.forEach(item => {
73 | this.natalChart.push( new Palace(item) )
74 | })
75 | this.natalChartMap = reactive({})
76 | this.natalChart.forEach( (item, index) => {
77 | this.natalChartMap[item.dizhiCode] = item
78 | item.next = this.natalChart[index + 1 > 11 ? 0 : index + 1]
79 | item.prev = this.natalChart[index - 1 < 0 ? 11 : index - 1]
80 | })
81 | }
82 | // 填充天干, next, prev
83 | fillTiangan(){
84 | const { name, index } = getYingongStartTiangan(this.lunarInfo.lYear)
85 | const orderedTiangan = [ ...tiangan.slice(index), ...tiangan.slice(0, index + 2)];
86 | this.#fillOrder.forEach((dizhi, idx) => {
87 | const palace = this.natalChartMap[dizhi]
88 | palace.setTiangan(orderedTiangan[idx])
89 | })
90 | }
91 | // 设置命宫
92 | setFatePalace() {
93 | // 寅开始,顺时针从 1 开始到生月,然后逆时针从 1 开始到时辰
94 | let index = this.lMonth - 1 - this.shichenIndex
95 | if(index < 0) index = index + 12
96 | const fate = this.#fillOrder[index]
97 | this.natalChartMap[fate].setFatePalace(index)
98 | this.palaces['ming'] = this.natalChartMap[fate]
99 | this.fatePalaceIndex = index
100 | }
101 | // 设置身宫
102 | setBodyPalace() {
103 | let index = this.lMonth - 1 + this.shichenIndex
104 | if(index > 12) index = index - 12
105 | const body = this.#fillOrder[index]
106 | this.natalChartMap[body].setBodyPalace(index)
107 | this.palaces['shen'] = this.natalChartMap[body]
108 | this.bodyPalaceIndex = index
109 | }
110 | // 设置其他宫位
111 | setOtherPalace() {
112 | const fatePalaceIndex = this.fatePalaceIndex
113 | const otherPalace = [...this.#fillOrder.slice(fatePalaceIndex + 1), ...this.#fillOrder.slice(0, fatePalaceIndex)]
114 | otherPalace.forEach((dizhi, index) => {
115 | const palace = palaceNames[index]
116 | const palaceIndex = fatePalaceIndex + index + 1
117 | this.natalChartMap[dizhi]?.setPalaceName(palace, palaceIndex > 11 ? palaceIndex - 12 : palaceIndex)
118 | this.palaces[palace.code] = this.natalChartMap[dizhi]
119 |
120 | })
121 | }
122 | // 设置五行局
123 | setWuxingGame() {
124 | const fatePalaceName = this.#fillOrder[this.fatePalaceIndex]
125 | const { tiangan: t, dizhi: d } = this.natalChartMap[fatePalaceName]
126 | const tIndex = tiangan.findIndex(tg => t === tg.name)
127 | const dIndex = dizhi.findIndex( dz => d === dz )
128 | // 根据天干计算到某一个五行局
129 | const t2Index = parseInt(tIndex / 2)
130 | // 找出地支所需的剩下的连续三个五行局
131 | let dCalcDep = wuxingGame.slice(t2Index, t2Index + 3)
132 | const dif = 3 - dCalcDep.length
133 | if(dif > 0) dCalcDep = dCalcDep.concat(wuxingGame.slice(0, dif))
134 | let d2Index = parseInt(dIndex / 2)
135 |
136 | this.wuxingGame = dCalcDep[d2Index > 2 ? d2Index - 3 : d2Index]
137 | }
138 |
139 | setStars2Palace(name, palace){
140 | this.stars2Palace[name] = palace
141 | }
142 |
143 | getZiweiIndex(){
144 | const { lDay, wuxingGame:{ num } } = this
145 | let jumpNum = lDay / num
146 | const isInt = num => Number.isInteger(num)
147 | const isEvenNum = num => num % 2 === 0
148 | if(!isInt(jumpNum)){
149 | let r = 1
150 | let s = jumpNum
151 | while (!isInt(s)) {
152 | r * num < lDay ? r++ : s = r * num
153 | }
154 | const lend = s - lDay
155 | jumpNum = isEvenNum(lend) ? r + lend : r - lend
156 | }
157 | const index = jumpNum - 1
158 | const dizhi = this.#fillOrder[index < 0 ? index + 12 : index]
159 | return { index, dizhi }
160 | }
161 |
162 | setZiweiStars(){
163 | const { index: zIndex } = this.getZiweiIndex()
164 | const stars = getMainStarsWithZiwei(this)
165 | // 逆着排
166 | stars?.forEach((star, index) => {
167 | if(!star) return
168 | const palace = this.getPalace( zIndex - index )
169 | palace.addMainStar(star)
170 | this.setStars2Palace(star.code, palace)
171 | })
172 | return zIndex
173 | }
174 |
175 | setTianfuStars(zIndex){
176 | const tIndex = 12 - zIndex
177 | const stars = getMainStarsWithTianfu(this)
178 | stars?.forEach((star, index) => {
179 | if(!star) return
180 | const palace = this.getPalace(tIndex + index)
181 | palace?.addMainStar(star)
182 | this.setStars2Palace(star.code, palace)
183 | })
184 | }
185 | /**
186 | *
187 | * @param { String } startPalaceCode 哪个地支开始 (汉字拼音)
188 | * @param { String } shichen 从什么开始 (汉字)
189 | * @param { Boolean } direction 顺 / 逆 时针。 true: 顺, false:逆
190 | * @param { String } targetShichen 到什么 (汉字)
191 | * @returns { Palace } 返回目标宫位
192 | * @example 亥起子时,逆时针到生时
193 | */
194 | getMovePalace(startPalaceCode, startDizhi, direction, endDizhi){
195 | // 获取起始宫
196 | const startPalace = this.natalChartMap[startPalaceCode]
197 | // 获取从那个地支开始的数组
198 | const shichenIndex = dizhi.findIndex(dz => dz === startDizhi)
199 | const newArr = [ ...dizhi.slice(shichenIndex), ...dizhi.slice(0, shichenIndex) ]
200 | // 到达目标地支的索引
201 | const scIndex = newArr.findIndex(dz => dz === endDizhi)
202 | // 根据起始宫的位置顺逆到达目标宫
203 | const endPalace = this.getPalace(direction ? startPalace.index + scIndex : startPalace.index - scIndex)
204 | return endPalace
205 | }
206 | setOtherRegularSmallStars(){
207 | const smallStarsConfig = getSmallStarsConfig(this)
208 | smallStarsConfig.forEach(config => {
209 | if(!config) return
210 | const palace =
211 | typeof config.rule === 'string'
212 | ? this.natalChartMap[config.rule]
213 | : this.getMovePalace(...config.rule);
214 |
215 | config.isSub
216 | ? palace.addSubStar(config.star)
217 | : palace.addSmallStar(config.star);
218 |
219 | config.cb && config.cb(palace)
220 | })
221 | }
222 | }
223 |
224 | export default Person
225 |
--------------------------------------------------------------------------------
/src/views/natal-chart/utils/map.js:
--------------------------------------------------------------------------------
1 | export const tiangan = [
2 | { name: '甲', code: 'jia' },
3 | { name: '乙', code: 'yi' },
4 | { name: '丙', code: 'bing' },
5 | { name: '丁', code: 'ding' },
6 | { name: '戊', code: 'wu' },
7 | { name: '己', code: 'ji' },
8 | { name: '庚', code: 'geng' },
9 | { name: '辛', code: 'xin' },
10 | { name: '壬', code: 'ren' },
11 | { name: '癸', code: 'gui' }
12 | ]
13 |
14 | export const getTianganCode = name => tiangan.find(tg => tg.name === name)?.code
15 |
16 | export const dizhi = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']
17 |
18 | export const dizhiChart = [
19 | { dizhi: '寅', code: 'yin' },
20 | { dizhi: '卯', code: 'mao' },
21 | { dizhi: '辰', code: 'chen' },
22 | { dizhi: '巳', code: 'si' },
23 | { dizhi: '午', code: 'wu' },
24 | { dizhi: '未', code: 'wei' },
25 | { dizhi: '申', code: 'shen' },
26 | { dizhi: '酉', code: 'you' },
27 | { dizhi: '戌', code: 'xu' },
28 | { dizhi: '亥', code: 'hai' },
29 | { dizhi: '子', code: 'zi' },
30 | { dizhi: '丑', code: 'chou' },
31 | ]
32 |
33 | export const getDizhiCode = name => dizhiChart.find(dz => dz.dizhi === name)?.code
34 |
35 |
36 |
37 | export const palaceNames = [
38 | { name: '父母', code: 'fumu' },
39 | { name: '福德', code: 'fude' },
40 | { name: '田宅', code: 'tianzhai' },
41 | { name: '官禄', code: 'guanlu' },
42 | { name: '朋友', code: 'pengyou' },
43 | { name: '迁移', code: 'qianyi' },
44 | { name: '疾厄', code: 'jie' },
45 | { name: '财帛', code: 'caibo' },
46 | { name: '子女', code: 'zinv' },
47 | { name: '夫妻', code: 'fuqi' },
48 | { name: '兄弟', code: 'xiongdi' }
49 | ]
50 |
51 | export const wuxingGame = [
52 | { name: '金四局', num: 4 },
53 | { name: '水二局', num: 2 },
54 | { name: '火六局', num: 6 },
55 | { name: '土五局', num: 5 },
56 | { name: '木三局', num: 3 }
57 | ]
58 |
59 |
60 | export const sihuaMap = {
61 | jia: {
62 | lianzhen: '禄',
63 | pojun: '权',
64 | wuqu: '科',
65 | taiyang: '忌'
66 | },
67 | yi: {
68 | tianji: '禄',
69 | tianliang: '权',
70 | ziwei: '科',
71 | taiyin: '忌'
72 | },
73 | bing: {
74 | tiantong: '禄',
75 | tianji: '权',
76 | wenchang: '科',
77 | lianzhen: '忌'
78 | },
79 | ding: {
80 | taiyin: '禄',
81 | tiantong: '权',
82 | tianji: '科',
83 | jumen: '忌'
84 | },
85 | wu: {
86 | tanlang: '禄',
87 | taiyin: '权',
88 | youbi: '科',
89 | tianji: '忌'
90 | },
91 | ji: {
92 | wuqu: '禄',
93 | tanlang: '权',
94 | tianliang: '科',
95 | wenqu: '忌',
96 | },
97 | geng: {
98 | taiyang: '禄',
99 | wuqu: '权',
100 | taiyin: '科',
101 | tiantong: '忌'
102 | },
103 | xin: {
104 | jumen: '禄',
105 | taiyang: '权',
106 | wenqu: '科',
107 | wenchang: '忌',
108 | },
109 | ren: {
110 | tianliang: '禄',
111 | ziwei: '权',
112 | zuofu: '科',
113 | wuqu: '忌'
114 | },
115 | gui: {
116 | pojun: '禄',
117 | jumen: '权',
118 | taiyin: '科',
119 | tanlang: '忌'
120 | }
121 |
122 |
123 | }
124 |
125 | export function getMainStarsWithZiwei(person){
126 | const t = person.tYear
127 | return [
128 | { name: '紫薇', code: 'ziwei', sihua: sihuaMap[t]['ziwei'] },
129 | { name: '天机', code: 'tianji', sihua: sihuaMap[t]['tianji'] },
130 | null,
131 | { name: '太阳', code: 'taiyang', sihua: sihuaMap[t]['taiyang'] },
132 | { name: '武曲', code: 'wuqu', sihua: sihuaMap[t]['wuqu'] },
133 | { name: '天同', code: 'tiantong', sihua: sihuaMap[t]['tiantong'] },
134 | null,
135 | null,
136 | { name: '廉贞', code: 'lianzhen', sihua: sihuaMap[t]['lianzhen'] }
137 | ]
138 | }
139 | export function getMainStarsWithTianfu(person){
140 | const t = person.tYear
141 | return [
142 | { name: '天府', code: 'tianfu', sihua: sihuaMap[t]['tianfu'] },
143 | { name: '太阴', code: 'taiyin', sihua: sihuaMap[t]['taiyin'] },
144 | { name: '贪狼', code: 'tanlang', sihua: sihuaMap[t]['tanlang'] },
145 | { name: '巨门', code: 'jumen', sihua: sihuaMap[t]['jumen'] },
146 | { name: '天相', code: 'tianxaing', sihua: sihuaMap[t]['tianxaing'] },
147 | { name: '天梁', code: 'tianliang', sihua: sihuaMap[t]['tianliang'] },
148 | { name: '七杀', code: 'qisha', sihua: sihuaMap[t]['qisha'] },
149 | null, null, null,
150 | { name: '破军', code: 'pojun', sihua: sihuaMap[t]['pojun'] },
151 | ]
152 | }
153 |
154 | export function getYingongStartTiangan(year) {
155 | const endNum = year.toString().charAt(3)
156 | let name = null
157 | let index = null
158 | if( endNum == '4' || endNum == '9' ) index = tiangan.findIndex(i => i.name === '丙')
159 | if( endNum == '0' || endNum == '5' ) index = tiangan.findIndex(i => i.name === '戊')
160 | if( endNum == '6' || endNum == '1' ) index = tiangan.findIndex(i => i.name === '庚')
161 | if( endNum == '7' || endNum == '2' ) index = tiangan.findIndex(i => i.name === '壬')
162 | if( endNum == '8' || endNum == '3' ) index = tiangan.findIndex(i => i.name === '甲')
163 | name = tiangan[index].name
164 | return {
165 | name,
166 | index
167 | }
168 | }
169 |
170 | export function getShichen(time) {
171 | const hour = Number(time.split(':')[0])
172 | let index = Math.round(hour / 2)
173 | if(index > 11) index = 0
174 |
175 | return {
176 | shichen: dizhi[index],
177 | index
178 | }
179 | }
180 |
181 |
182 |
183 |
--------------------------------------------------------------------------------
/src/views/natal-chart/utils/rules.js:
--------------------------------------------------------------------------------
1 | import { dizhi, sihuaMap } from './map';
2 |
3 | export const lucunRule = {
4 | jia: 'yin',
5 | yi: 'mao',
6 | bing: 'si',
7 | wu: 'si',
8 | ding: 'wu',
9 | ji: 'wu',
10 | geng: 'shen',
11 | xin: 'you',
12 | ren: 'hai',
13 | gui: 'zi'
14 | }
15 |
16 | export const tianma = {
17 | shen: 'yin',
18 | zi: 'yin',
19 | chen: 'yin',
20 | yin: 'shen',
21 | wu: 'shen',
22 | xu: 'shen',
23 | hai: 'si',
24 | mao: 'si',
25 | wei: 'si',
26 | si: 'hai',
27 | you: 'hai',
28 | chou: 'hai'
29 | }
30 |
31 | export const huoxing = {
32 | yin: 'chou',
33 | wu: 'chou',
34 | xu: 'chou',
35 | shen: 'yin',
36 | zi: 'yin',
37 | chen: 'yin',
38 | si: 'mao',
39 | you: 'mao',
40 | chou: 'mao',
41 | hai: 'you',
42 | mao: 'you',
43 | wei: 'you'
44 | }
45 |
46 | export const lingxing = {
47 | yin: 'mao',
48 | wu: 'mao',
49 | xu: 'mao',
50 | shen: 'xu',
51 | zi: 'xu',
52 | chen: 'xu',
53 | si: 'xu',
54 | you: 'xu',
55 | chou: 'xu',
56 | hai: 'xu',
57 | mao: 'xu',
58 | wei: 'xu'
59 | }
60 | export const xianchi = {
61 | yin: 'mao',
62 | wu: 'mao',
63 | xu: 'mao',
64 | shen: 'you',
65 | zi: 'you',
66 | chen: 'you',
67 | si: 'wu',
68 | you: 'wu',
69 | chou: 'wu',
70 | hai: 'zi',
71 | mao: 'zi',
72 | wei: 'zi'
73 | }
74 |
75 | // t == true ? 天魁 : 天钺
76 | export function getTiankuiTianyue(t) {
77 | const r1 = t ? 'chou' : 'wei'
78 | const r2 = t ? 'zi' : 'shen'
79 | const r3 = t ? 'hai' : 'you'
80 | const r4 = t ? 'yin' : 'wu'
81 | const r5 = t ? 'mao' : 'si'
82 | return {
83 | jia: r1, wu: r1, geng: r1,
84 | yi: r2, ji: r2,
85 | bing: r3, ding: r3,
86 | xin: r4,
87 | ren: r5, gui: r5
88 | }
89 | }
90 |
91 | export function getSmallStarsConfig(person){
92 | return [
93 | {
94 | isSub: 1,
95 | rule: lucunRule[person.tYear],
96 | star: { name: '禄存', code: 'lucun' },
97 | cb(palace){
98 | palace.next.addSmallStar({ name: '擎羊', code: 'qingyang' })
99 | palace.prev.addSmallStar({ name: '陀罗', code: 'tuoluo' })
100 | }
101 | },
102 | {
103 | rule: tianma[person.dYear],
104 | star: { name: '天马', code: 'tianma' },
105 | },
106 | {
107 | rule: [huoxing[person.dYear], '子', true, person.shichen],
108 | star: { name: '火星', code: 'huoxing' },
109 | },
110 | {
111 | rule: ['hai', '子', false, person.shichen],
112 | star: { name: '地空', code: 'dikong' }
113 | },
114 | {
115 | rule: ['hai', '子', true, person.shichen],
116 | star: { name: '地劫', code: 'dijie' }
117 | },
118 | {
119 | rule: [lingxing[person.dYear], '子', true, person.shichen],
120 | star: { name: '铃星', code: 'lingxing' }
121 | },
122 | {
123 | rule: ['mao', '子', false, person.dYear],
124 | star: { name: '红鸾', code: 'hongluan' }
125 | },
126 | {
127 | rule: ['you', '子', false, person.dYear],
128 | star: { name: '天喜', code: 'tianxi' }
129 | },
130 | {
131 | rule: ['chou', '子', true, dizhi[person.lMonth - 1]],
132 | star: { name: '天姚', code: 'tianyao' }
133 | },
134 | {
135 | rule: xianchi[person.dYear],
136 | star: { name: '咸池', code: 'xianchi' }
137 | },
138 | {
139 | rule: ['you', '子', true, dizhi[person.lMonth - 1]],
140 | star: { name: '天刑', code: 'tianxing' }
141 | },
142 | {
143 | isSub: 1,
144 | rule: ['chen', '子', true, dizhi[person.lMonth - 1]],
145 | star: { name: '左辅', code: 'zuofu', sihua: sihuaMap[person.tYear]['zuofu'] }
146 | },
147 | {
148 | isSub: 1,
149 | rule: ['xu', '子', false, dizhi[person.lMonth - 1]],
150 | star: { name: '右弼', code: 'youbi', sihua: sihuaMap[person.tYear]['youbi'] }
151 | },
152 | {
153 | isSub: 1,
154 | rule: ['chen', '子', true, person.shichen],
155 | star: { name: '文曲', code: 'wenqu', sihua: sihuaMap[person.tYear]['wenqu'] }
156 | },
157 | {
158 | isSub: 1,
159 | rule: ['xu', '子', false, person.shichen],
160 | star: { name: '文昌', code: 'wenchang', sihua: sihuaMap[person.tYear]['wenchang'] }
161 | },
162 | {
163 | isSub: 1,
164 | rule: getTiankuiTianyue(true)[person.tYear],
165 | star: { name: '天魁', code: 'tiankui' }
166 | },
167 | {
168 | isSub: 1,
169 | rule: getTiankuiTianyue()[person.tYear],
170 | star: { name: '天钺', code: 'tianyue' }
171 | }
172 | ]
173 | }
174 |
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import { resolve } from 'path'
3 | import vue from '@vitejs/plugin-vue'
4 | import Components from 'unplugin-vue-components/vite';
5 | import { VantResolver } from 'unplugin-vue-components/resolvers';
6 |
7 | export default defineConfig({
8 | resolve: {
9 | alias: {
10 | "@": resolve(__dirname, 'src')
11 | },
12 | },
13 | plugins: [
14 | vue(),
15 | Components({
16 | resolvers: [VantResolver()],
17 | }),
18 | ]
19 | })
20 |
--------------------------------------------------------------------------------