Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
T
text2video-frontend
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
周成波
text2video-frontend
Commits
cbe91c43
Commit
cbe91c43
authored
Sep 13, 2024
by
Administrator
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加退休日期计算
parent
91fec522
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
363 additions
and
71 deletions
+363
-71
components.d.ts
components.d.ts
+1
-0
package-lock.json
package-lock.json
+50
-68
index.ts
src/router/index.ts
+16
-3
utils.ts
src/utils/utils.ts
+8
-0
calc_retire.vue
src/views/home/calc_retire.vue
+149
-0
record_steps.vue
src/views/home/record_steps.vue
+139
-0
No files found.
components.d.ts
View file @
cbe91c43
...
@@ -9,6 +9,7 @@ declare module 'vue' {
...
@@ -9,6 +9,7 @@ declare module 'vue' {
export
interface
GlobalComponents
{
export
interface
GlobalComponents
{
ElButton
:
typeof
import
(
'element-plus/es'
)[
'ElButton'
]
ElButton
:
typeof
import
(
'element-plus/es'
)[
'ElButton'
]
ElColorPicker
:
typeof
import
(
'element-plus/es'
)[
'ElColorPicker'
]
ElColorPicker
:
typeof
import
(
'element-plus/es'
)[
'ElColorPicker'
]
ElDatePicker
:
typeof
import
(
'element-plus/es'
)[
'ElDatePicker'
]
ElDialog
:
typeof
import
(
'element-plus/es'
)[
'ElDialog'
]
ElDialog
:
typeof
import
(
'element-plus/es'
)[
'ElDialog'
]
ElDivider
:
typeof
import
(
'element-plus/es'
)[
'ElDivider'
]
ElDivider
:
typeof
import
(
'element-plus/es'
)[
'ElDivider'
]
ElForm
:
typeof
import
(
'element-plus/es'
)[
'ElForm'
]
ElForm
:
typeof
import
(
'element-plus/es'
)[
'ElForm'
]
...
...
package-lock.json
View file @
cbe91c43
...
@@ -667,33 +667,30 @@
...
@@ -667,33 +667,30 @@
}
}
},
},
"node_modules/@volar/language-core"
:
{
"node_modules/@volar/language-core"
:
{
"version"
:
"1.1
0.10
"
,
"version"
:
"1.1
1.1
"
,
"resolved"
:
"https://registry.npmjs.org/@volar/language-core/-/language-core-1.1
0.10
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@volar/language-core/-/language-core-1.1
1.1
.tgz"
,
"integrity"
:
"sha512-
nsV1o3AZ5n5jaEAObrS3MWLBWaGwUj/vAsc15FVNIv+DbpizQRISg9wzygsHBr56ELRH8r4K75vkYNMtsSNNW
w=="
,
"integrity"
:
"sha512-
dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElC
w=="
,
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"@volar/source-map"
:
"1.1
0.10
"
"@volar/source-map"
:
"1.1
1.1
"
}
}
},
},
"node_modules/@volar/source-map"
:
{
"node_modules/@volar/source-map"
:
{
"version"
:
"1.1
0.10
"
,
"version"
:
"1.1
1.1
"
,
"resolved"
:
"https://registry.npmjs.org/@volar/source-map/-/source-map-1.1
0.10
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@volar/source-map/-/source-map-1.1
1.1
.tgz"
,
"integrity"
:
"sha512-
GVKjLnifV4voJ9F0vhP56p4+F3WGf+gXlRtjFZsv6v3WxBTWU3ZVeaRaEHJmWrcv5LXmoYYpk/SC25BKemPRk
g=="
,
"integrity"
:
"sha512-
hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZ
g=="
,
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"muggle-string"
:
"^0.3.1"
"muggle-string"
:
"^0.3.1"
}
}
},
},
"node_modules/@volar/typescript"
:
{
"node_modules/@volar/typescript"
:
{
"version"
:
"1.1
0.10
"
,
"version"
:
"1.1
1.1
"
,
"resolved"
:
"https://registry.npmjs.org/@volar/typescript/-/typescript-1.1
0.10
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@volar/typescript/-/typescript-1.1
1.1
.tgz"
,
"integrity"
:
"sha512-
4a2r5bdUub2m+mYVnLu2wt59fuoYWe7nf0uXtGHU8QQ5LDNfzAR0wK7NgDiQ9rcl2WT3fxT2AA9AylAwFtj50A
=="
,
"integrity"
:
"sha512-
iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ
=="
,
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"@volar/language-core"
:
"1.1
0.10
"
,
"@volar/language-core"
:
"1.1
1.1
"
,
"path-browserify"
:
"^1.0.1"
"path-browserify"
:
"^1.0.1"
}
}
},
},
...
@@ -806,19 +803,19 @@
...
@@ -806,19 +803,19 @@
}
}
},
},
"node_modules/@vue/language-core"
:
{
"node_modules/@vue/language-core"
:
{
"version"
:
"1.8.2
2
"
,
"version"
:
"1.8.2
7
"
,
"resolved"
:
"https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.2
2
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.2
7
.tgz"
,
"integrity"
:
"sha512-
bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw
=="
,
"integrity"
:
"sha512-
L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA
=="
,
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"@volar/language-core"
:
"~1.1
0.5
"
,
"@volar/language-core"
:
"~1.1
1.1
"
,
"@volar/source-map"
:
"~1.1
0.5
"
,
"@volar/source-map"
:
"~1.1
1.1
"
,
"@vue/compiler-dom"
:
"^3.3.0"
,
"@vue/compiler-dom"
:
"^3.3.0"
,
"@vue/shared"
:
"^3.3.0"
,
"@vue/shared"
:
"^3.3.0"
,
"computeds"
:
"^0.0.1"
,
"computeds"
:
"^0.0.1"
,
"minimatch"
:
"^9.0.3"
,
"minimatch"
:
"^9.0.3"
,
"muggle-string"
:
"^0.3.1"
,
"muggle-string"
:
"^0.3.1"
,
"path-browserify"
:
"^1.0.1"
,
"vue-template-compiler"
:
"^2.7.14"
"vue-template-compiler"
:
"^2.7.14"
},
},
"peerDependencies"
:
{
"peerDependencies"
:
{
...
@@ -835,17 +832,15 @@
...
@@ -835,17 +832,15 @@
"resolved"
:
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
,
"integrity"
:
"sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="
,
"integrity"
:
"sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="
,
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"balanced-match"
:
"^1.0.0"
"balanced-match"
:
"^1.0.0"
}
}
},
},
"node_modules/@vue/language-core/node_modules/minimatch"
:
{
"node_modules/@vue/language-core/node_modules/minimatch"
:
{
"version"
:
"9.0.
3
"
,
"version"
:
"9.0.
5
"
,
"resolved"
:
"https://registry.npmjs.org/minimatch/-/minimatch-9.0.
3
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/minimatch/-/minimatch-9.0.
5
.tgz"
,
"integrity"
:
"sha512-
RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg
=="
,
"integrity"
:
"sha512-
G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow
=="
,
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"ISC"
,
"dependencies"
:
{
"dependencies"
:
{
"brace-expansion"
:
"^2.0.1"
"brace-expansion"
:
"^2.0.1"
},
},
...
@@ -1067,12 +1062,11 @@
...
@@ -1067,12 +1062,11 @@
"license"
:
"MIT"
"license"
:
"MIT"
},
},
"node_modules/axios"
:
{
"node_modules/axios"
:
{
"version"
:
"1.6.1"
,
"version"
:
"1.7.7"
,
"resolved"
:
"https://registry.npmjs.org/axios/-/axios-1.6.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/axios/-/axios-1.7.7.tgz"
,
"integrity"
:
"sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g=="
,
"integrity"
:
"sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"follow-redirects"
:
"^1.15.
0
"
,
"follow-redirects"
:
"^1.15.
6
"
,
"form-data"
:
"^4.0.0"
,
"form-data"
:
"^4.0.0"
,
"proxy-from-env"
:
"^1.1.0"
"proxy-from-env"
:
"^1.1.0"
}
}
...
@@ -1153,12 +1147,11 @@
...
@@ -1153,12 +1147,11 @@
}
}
},
},
"node_modules/braces"
:
{
"node_modules/braces"
:
{
"version"
:
"3.0.2"
,
"version"
:
"3.0.3"
,
"resolved"
:
"https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
,
"resolved"
:
"https://registry.npmjs.org/braces/-/braces-3.0.3.tgz"
,
"integrity"
:
"sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A=="
,
"integrity"
:
"sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"fill-range"
:
"^7.
0
.1"
"fill-range"
:
"^7.
1
.1"
},
},
"engines"
:
{
"engines"
:
{
"node"
:
">=8"
"node"
:
">=8"
...
@@ -1265,8 +1258,7 @@
...
@@ -1265,8 +1258,7 @@
"version"
:
"0.0.1"
,
"version"
:
"0.0.1"
,
"resolved"
:
"https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz"
,
"integrity"
:
"sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q=="
,
"integrity"
:
"sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q=="
,
"dev"
:
true
,
"dev"
:
true
"license"
:
"MIT"
},
},
"node_modules/concat-map"
:
{
"node_modules/concat-map"
:
{
"version"
:
"0.0.1"
,
"version"
:
"0.0.1"
,
...
@@ -1324,8 +1316,7 @@
...
@@ -1324,8 +1316,7 @@
"version"
:
"1.0.2"
,
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz"
,
"resolved"
:
"https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz"
,
"integrity"
:
"sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg=="
,
"integrity"
:
"sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg=="
,
"dev"
:
true
,
"dev"
:
true
"license"
:
"MIT"
},
},
"node_modules/debug"
:
{
"node_modules/debug"
:
{
"version"
:
"4.3.4"
,
"version"
:
"4.3.4"
,
...
@@ -1934,10 +1925,9 @@
...
@@ -1934,10 +1925,9 @@
"integrity"
:
"sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
"integrity"
:
"sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
},
},
"node_modules/fill-range"
:
{
"node_modules/fill-range"
:
{
"version"
:
"7.0.1"
,
"version"
:
"7.1.1"
,
"resolved"
:
"https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz"
,
"integrity"
:
"sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ=="
,
"integrity"
:
"sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"to-regex-range"
:
"^5.0.1"
"to-regex-range"
:
"^5.0.1"
},
},
...
@@ -2165,7 +2155,6 @@
...
@@ -2165,7 +2155,6 @@
"resolved"
:
"https://registry.npmjs.org/he/-/he-1.2.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/he/-/he-1.2.0.tgz"
,
"integrity"
:
"sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
,
"integrity"
:
"sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
,
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
,
"bin"
:
{
"bin"
:
{
"he"
:
"bin/he"
"he"
:
"bin/he"
}
}
...
@@ -2372,7 +2361,6 @@
...
@@ -2372,7 +2361,6 @@
"version"
:
"7.0.0"
,
"version"
:
"7.0.0"
,
"resolved"
:
"https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
,
"integrity"
:
"sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
,
"integrity"
:
"sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
,
"license"
:
"MIT"
,
"engines"
:
{
"engines"
:
{
"node"
:
">=0.12.0"
"node"
:
">=0.12.0"
}
}
...
@@ -2629,13 +2617,12 @@
...
@@ -2629,13 +2617,12 @@
}
}
},
},
"node_modules/micromatch"
:
{
"node_modules/micromatch"
:
{
"version"
:
"4.0.
5
"
,
"version"
:
"4.0.
8
"
,
"resolved"
:
"https://registry.npmjs.org/micromatch/-/micromatch-4.0.
5
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/micromatch/-/micromatch-4.0.
8
.tgz"
,
"integrity"
:
"sha512-
DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNd
A=="
,
"integrity"
:
"sha512-
PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2B
A=="
,
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"braces"
:
"^3.0.
2
"
,
"braces"
:
"^3.0.
3
"
,
"picomatch"
:
"^2.3.1"
"picomatch"
:
"^2.3.1"
},
},
"engines"
:
{
"engines"
:
{
...
@@ -2713,8 +2700,7 @@
...
@@ -2713,8 +2700,7 @@
"version"
:
"0.3.1"
,
"version"
:
"0.3.1"
,
"resolved"
:
"https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz"
,
"integrity"
:
"sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg=="
,
"integrity"
:
"sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg=="
,
"dev"
:
true
,
"dev"
:
true
"license"
:
"MIT"
},
},
"node_modules/nanoid"
:
{
"node_modules/nanoid"
:
{
"version"
:
"3.3.7"
,
"version"
:
"3.3.7"
,
...
@@ -3024,8 +3010,7 @@
...
@@ -3024,8 +3010,7 @@
"version"
:
"1.0.1"
,
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz"
,
"integrity"
:
"sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
,
"integrity"
:
"sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
,
"dev"
:
true
,
"dev"
:
true
"license"
:
"MIT"
},
},
"node_modules/path-exists"
:
{
"node_modules/path-exists"
:
{
"version"
:
"4.0.0"
,
"version"
:
"4.0.0"
,
...
@@ -3774,7 +3759,6 @@
...
@@ -3774,7 +3759,6 @@
"version"
:
"5.0.1"
,
"version"
:
"5.0.1"
,
"resolved"
:
"https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
,
"integrity"
:
"sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="
,
"integrity"
:
"sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"is-number"
:
"^7.0.0"
"is-number"
:
"^7.0.0"
},
},
...
@@ -4083,9 +4067,9 @@
...
@@ -4083,9 +4067,9 @@
}
}
},
},
"node_modules/vite"
:
{
"node_modules/vite"
:
{
"version"
:
"4.5.
2
"
,
"version"
:
"4.5.
3
"
,
"resolved"
:
"https://registry.npmjs.org/vite/-/vite-4.5.
2
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/vite/-/vite-4.5.
3
.tgz"
,
"integrity"
:
"sha512-
tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w
=="
,
"integrity"
:
"sha512-
kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg
=="
,
"dev"
:
true
,
"dev"
:
true
,
"dependencies"
:
{
"dependencies"
:
{
"esbuild"
:
"^0.18.10"
,
"esbuild"
:
"^0.18.10"
,
...
@@ -4225,25 +4209,23 @@
...
@@ -4225,25 +4209,23 @@
}
}
},
},
"node_modules/vue-template-compiler"
:
{
"node_modules/vue-template-compiler"
:
{
"version"
:
"2.7.1
5
"
,
"version"
:
"2.7.1
6
"
,
"resolved"
:
"https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.1
5
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.1
6
.tgz"
,
"integrity"
:
"sha512-
yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og
=="
,
"integrity"
:
"sha512-
AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ
=="
,
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"de-indent"
:
"^1.0.2"
,
"de-indent"
:
"^1.0.2"
,
"he"
:
"^1.2.0"
"he"
:
"^1.2.0"
}
}
},
},
"node_modules/vue-tsc"
:
{
"node_modules/vue-tsc"
:
{
"version"
:
"1.8.2
2
"
,
"version"
:
"1.8.2
7
"
,
"resolved"
:
"https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.2
2
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.2
7
.tgz"
,
"integrity"
:
"sha512-
j9P4kHtW6eEE08aS5McFZE/ivmipXy0JzrnTgbomfABMaVKx37kNBw//irL3+LlE3kOo63XpnRigyPC3w7+z+A
=="
,
"integrity"
:
"sha512-
WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg
=="
,
"dev"
:
true
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"@volar/typescript"
:
"~1.1
0.5
"
,
"@volar/typescript"
:
"~1.1
1.1
"
,
"@vue/language-core"
:
"1.8.2
2
"
,
"@vue/language-core"
:
"1.8.2
7
"
,
"semver"
:
"^7.5.4"
"semver"
:
"^7.5.4"
},
},
"bin"
:
{
"bin"
:
{
...
...
src/router/index.ts
View file @
cbe91c43
import
{
createRouter
,
createWebHashHistory
}
from
'vue-router'
import
{
createRouter
,
createWebHashHistory
}
from
'vue-router'
import
HomeView
from
'../views/home/index.vue'
import
HomeView
from
'../views/home/index.vue'
import
HomeViewEn
from
'../views/home/index_en.vue'
import
HomeViewEn
from
'../views/home/index_en.vue'
import
RecordSteps
from
'../views/home/record_steps.vue'
import
CalcRetire
from
'../views/home/calc_retire.vue'
const
router
=
createRouter
({
const
router
=
createRouter
({
history
:
createWebHashHistory
(
import
.
meta
.
env
.
BASE_URL
),
history
:
createWebHashHistory
(
import
.
meta
.
env
.
BASE_URL
),
routes
:
[
routes
:
[
{
{
path
:
'/'
,
path
:
'/'
,
name
:
'home'
,
name
:
'CalcRetire'
,
component
:
CalcRetire
},
{
path
:
'/recordsteps'
,
name
:
'recordsteps'
,
component
:
RecordSteps
},
{
path
:
'/text2video'
,
name
:
'text2video'
,
component
:
HomeView
component
:
HomeView
},
},
{
{
path
:
'/en'
,
path
:
'/
text2video_
en'
,
name
:
'
home
_en'
,
name
:
'
text2video
_en'
,
component
:
HomeViewEn
component
:
HomeViewEn
}
}
]
]
...
...
src/utils/utils.ts
View file @
cbe91c43
...
@@ -19,6 +19,14 @@ export default class utils {
...
@@ -19,6 +19,14 @@ export default class utils {
}
}
}
}
// 从文本中提取 JSON
static
extractJSON
(
text
:
string
)
{
// 正则表达式匹配 JSON 格式的字符串
const
jsonRegex
=
/
\[\s
*
\{\s
*"序号"
\s
*:
\s
*
\d
+.*
?\}\s
*
\]
/
s
;
const
matches
=
text
.
match
(
jsonRegex
);
return
matches
?
matches
[
0
]
:
null
;
}
// 生成年月日时分秒毫秒字符串
// 生成年月日时分秒毫秒字符串
static
genDateTimeStr
()
{
static
genDateTimeStr
()
{
const
now
=
new
Date
();
const
now
=
new
Date
();
...
...
src/views/home/calc_retire.vue
0 → 100644
View file @
cbe91c43
<
script
setup
lang=
"ts"
>
import
text2videoService
from
"@/api/service/text2videoService"
;
import
utils
from
"@/utils/utils"
;
import
{
ElMessage
,
genFileId
,
type
UploadInstance
,
type
UploadProps
,
type
UploadRawFile
}
from
"element-plus"
;
import
{
nextTick
,
onMounted
,
reactive
,
ref
}
from
"vue"
;
const
debug
=
ref
(
import
.
meta
.
env
.
MODE
===
'production'
?
false
:
true
);
// const debug = ref(false);
const
loading
=
ref
(
false
);
const
form
=
reactive
({
task_id
:
""
,
birth
:
"1982-04"
,
sex_value
:
"男"
,
sex_option
:
[
{
value
:
'男'
,
label
:
'男'
,
},
{
value
:
'女50岁退休'
,
label
:
'女(普通)50岁退'
,
},
{
value
:
'女55岁退休'
,
label
:
'女(管理、灵活就业)55岁退'
,
},
],
retire_age
:
""
,
retire_date
:
""
,
how_long_to_retire
:
""
,
});
onMounted
(()
=>
{
// 初始化task_id
form
.
task_id
=
utils
.
genDateTimeStr
();
console
.
log
(
'页面加载,task_id='
,
form
.
task_id
)
});
const
calculateRetirement
=
(
birthStr
,
gender
)
=>
{
let
parts
=
birthStr
.
split
(
'-'
);
// 使用'-'作为分隔符来拆分字符串
let
birthYear
=
parseInt
(
parts
[
0
],
10
);
// 年份
let
birthMonth
=
parseInt
(
parts
[
1
],
10
);
// 月份
const
currentYear
=
new
Date
().
getFullYear
();
const
birthDate
=
new
Date
(
`
${
birthYear
}
-
${
birthMonth
<
10
?
'0'
+
birthMonth
:
birthMonth
}
-01`
);
let
retirementAge
,
delayMonths
,
retirementYear
,
retirementMonth
;
if
(
gender
===
'男'
)
{
retirementAge
=
60
;
delayMonths
=
Math
.
floor
((
currentYear
-
birthYear
)
/
4
)
*
4
;
}
else
if
(
gender
===
'女50岁退休'
)
{
retirementAge
=
50
;
delayMonths
=
Math
.
floor
((
currentYear
-
birthYear
)
/
2
)
*
2
;
}
else
if
(
gender
===
'女55岁退休'
)
{
retirementAge
=
55
;
delayMonths
=
Math
.
floor
((
currentYear
-
birthYear
)
/
4
)
*
4
;
}
else
{
console
.
log
(
"Invalid gender input. Please choose '男', '女50岁退休', or '女55岁退休'."
);
return
;
}
retirementAge
+=
Math
.
floor
(
delayMonths
/
12
);
console
.
log
(
retirementAge
,
delayMonths
)
let
retirementDate
=
new
Date
(
birthDate
);
console
.
log
(
retirementDate
)
retirementDate
.
setFullYear
(
retirementDate
.
getFullYear
()
+
retirementAge
);
retirementDate
.
setMonth
(
retirementDate
.
getMonth
()
+
delayMonths
%
12
);
console
.
log
(
retirementDate
)
retirementYear
=
retirementDate
.
getFullYear
();
retirementMonth
=
retirementDate
.
getMonth
()
+
1
;
// getMonth() returns 0-11
console
.
log
(
retirementYear
,
retirementMonth
)
let
yearsUntilRetirement
=
retirementDate
.
getFullYear
()
-
currentYear
-
1
;
let
monthsUntilRetirement
=
(
retirementDate
.
getMonth
()
-
new
Date
().
getMonth
()
+
12
)
%
12
-
1
;
if
(
monthsUntilRetirement
<
0
)
{
yearsUntilRetirement
--
;
monthsUntilRetirement
+=
12
;
}
form
.
retire_age
=
`
${
retirementAge
}
岁+
${
delayMonths
%
12
}
个月`
,
form
.
retire_date
=
`
${
retirementYear
}
-
${
retirementMonth
<
10
?
'0'
+
retirementMonth
:
retirementMonth
}
-01`
,
form
.
how_long_to_retire
=
`
${
yearsUntilRetirement
}
年
${
monthsUntilRetirement
}
个月`
};
</
script
>
<!-- ============================================================================================================ -->
<!-- ============================================================================================================ -->
<!-- ============================================================================================================ -->
<
template
>
<main
class=
"home-container"
>
<!-- 标题 -->
<el-divider
content-position=
"left"
>
延迟退休年龄计算器
</el-divider>
<el-form
:model=
"form"
label-width=
"114px"
v-loading=
"loading"
>
<!-- 输入出生年月 -->
<el-form-item
label=
"出生年月"
>
<el-date-picker
v-model=
"form.birth"
type=
"month"
placeholder=
"Pick a month"
/>
</el-form-item>
<!-- 性别 -->
<el-form-item
label=
"性别"
>
<el-select
v-model=
"form.sex_value"
placeholder=
"Select"
size=
"large"
style=
"width: 240px"
>
<el-option
v-for=
"item in form.sex_option"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
<!-- 计算 -->
<el-form-item>
<el-button
type=
"primary"
@
click=
"calculateRetirement(form.birth, form.sex_value)"
>
开始计算
</el-button
>
</el-form-item>
<!-- 结果 -->
<el-form-item
label=
"您的退休年龄"
>
<el-text
class=
"mx-1"
>
{{
form
.
retire_age
}}
</el-text>
</el-form-item>
<el-form-item
label=
"您的退休日期"
>
<el-text
class=
"mx-1"
>
{{
form
.
retire_date
}}
</el-text>
</el-form-item>
<el-form-item
label=
"距离退休还有"
>
<el-text
class=
"mx-1"
>
{{
form
.
how_long_to_retire
}}
</el-text>
</el-form-item>
</el-form>
</main>
</
template
>
<
style
lang=
"scss"
scoped
>
.home-container
{
width
:
100%
;
}
</
style
>
src/views/home/record_steps.vue
0 → 100644
View file @
cbe91c43
<
script
setup
lang=
"ts"
>
import
text2videoService
from
"@/api/service/text2videoService"
;
import
utils
from
"@/utils/utils"
;
import
{
ElMessage
,
genFileId
,
type
UploadInstance
,
type
UploadProps
,
type
UploadRawFile
}
from
"element-plus"
;
import
{
nextTick
,
onMounted
,
reactive
,
ref
}
from
"vue"
;
const
debug
=
ref
(
import
.
meta
.
env
.
MODE
===
'production'
?
false
:
true
);
// const debug = ref(false);
const
loading
=
ref
(
false
);
const
form
=
reactive
({
task_id
:
""
,
task_content
:
"开发一款坦克大战的小游戏"
,
prompt
:
`你是一名高级的程序员。现在需要根据产品需求,设计一份完整的程序编写的思路,比如第一步写什么模块,第二步写什么模块,整个思路应逻辑清晰、流畅。以json格式输出:\n[{"序号": 序号, "描述": 描述, "详细说明": 详细说明}, ...]\n`
,
answer
:
""
,
answer_json
:
[],
});
const
llms
=
{
tyqw_online
:
{
'api'
:
'tyqw'
,
'name'
:
'线上通义千问'
},
baichuan
:
{
'api'
:
'langchain'
,
'name'
:
'本地baichuan2-7b'
},
qwen_local
:
{
'api'
:
'langchain'
,
'name'
:
'本地Qwen-7B-Chat'
},
chatgpt
:
{
'api'
:
'gpt'
,
'name'
:
'chatgpt'
},
kimi
:
{
'api'
:
'kimi'
,
'name'
:
'kimi'
},
};
onMounted
(()
=>
{
// 初始化task_id
form
.
task_id
=
utils
.
genDateTimeStr
();
console
.
log
(
'页面加载,task_id='
,
form
.
task_id
)
});
const
onSubmitGpt
=
()
=>
{
const
my_prompt
=
ref
(
`
${
form
.
prompt
}
。产品需求如下:
${
form
.
task_content
}
`
);
text2videoService
.
submitLLM
(
utils
.
aesEncrypt
(
my_prompt
.
value
),
utils
.
aesEncrypt
(
llms
.
tyqw_online
.
api
),
[],
form
.
task_id
,
"true"
)
.
then
((
result
:
string
)
=>
{
console
.
log
(
result
);
form
.
answer
=
result
;
const
jsonText
=
utils
.
extractJSON
(
result
);
console
.
log
(
jsonText
);
form
.
answer_json
=
utils
.
formatJsonObj
(
jsonText
);
})
.
catch
((
error
:
any
)
=>
{
console
.
error
(
error
);
ElMessage
({
message
:
error
,
type
:
"error"
,
});
});
};
</
script
>
<!-- ============================================================================================================ -->
<!-- ============================================================================================================ -->
<!-- ============================================================================================================ -->
<
template
>
<main
class=
"home-container"
>
<!-- 标题 -->
<el-divider
content-position=
"left"
>
将产品需求拆解为开发步骤
</el-divider>
<el-form
:model=
"form"
label-width=
"114px"
v-loading=
"loading"
>
<!-- 产品需求 -->
<el-form-item
label=
"产品需求"
>
<el-input
v-model=
"form.task_content"
:autosize=
"true"
type=
"textarea"
/>
</el-form-item>
<!-- Prompt -->
<el-form-item
label=
"Prompt"
>
<el-text
class=
"mx-1"
type=
"danger"
>
{{
form
.
prompt
}}
</el-text>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"onSubmitGpt"
>
生成步骤(
{{
llms
.
tyqw_online
.
name
}}
)
</el-button
>
</el-form-item>
<!-- 结果 -->
<el-form-item
label=
"步骤"
>
<!--
<el-text
class=
"mx-1"
>
{{
form
.
answer
}}
</el-text>
-->
<el-table
:data=
"form.answer_json"
border
style=
"width: 100%; z-index: calc(var(--el-table-index) -1)"
>
<el-table-column
prop=
"序号"
label=
"序号"
width=
"55"
/>
<el-table-column
prop=
"描述"
label=
"描述"
width=
"300"
>
<template
v-slot=
"scope"
>
<el-text
class=
"mx-1"
>
{{
scope
.
row
.
描述
}}
</el-text>
</
template
>
</el-table-column>
<el-table-column
prop=
"详细说明"
label=
"详细说明"
>
<
template
v-slot=
"scope"
>
<el-text
class=
"mx-1"
>
{{
scope
.
row
.
详细说明
}}
</el-text>
</
template
>
</el-table-column>
<el-table-column
width=
"200"
label=
"操作"
align=
"center"
>
<
template
v-slot=
"scope"
>
<div
style=
"margin: 5px 0"
>
<el-button
type=
"primary"
size=
"small"
@
click=
""
>
与大模型继续沟通
</el-button
>
</div>
<!--
<div
style=
"margin: 10px 0"
>
<el-button
type=
"danger"
size=
"small"
@
click=
""
>
删除本步骤
</el-button>
</div>
-->
</
template
>
</el-table-column>
</el-table>
</el-form-item>
<!-- <el-form-item>
<el-button type="primary" @click="">保存所有记录</el-button>
</el-form-item> -->
</el-form>
</main>
</template>
<
style
lang=
"scss"
scoped
>
.home-container
{
width
:
100%
;
}
</
style
>
<
style
lang=
"scss"
>
.home-container
{
.el-table
.el-table__cell
{
z-index
:
calc
(
var
(
--
el-table-index
)
-1
);
}
}
.dashed-div
{
border
:
1px
dashed
#999
;
margin
:
5px
0
;
padding
:
2px
;
}
</
style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment