@@ -122,12 +122,12 @@ const props = defineProps<{
122122 show: boolean
123123 mode: ' add' | ' update'
124124 link? : Link
125- categories: string [] // 新增 categories prop
125+ categories: string []
126126}>()
127127
128128const emit = defineEmits <{
129129 (e : ' update:show' , value : boolean ): void
130- (e : ' submit' , value : Link ): void
130+ (e : ' submit' , value : any ): void
131131}>()
132132
133133const query = ref (' ' )
@@ -141,6 +141,25 @@ const formData = ref({
141141 sortIndex: 0 ,
142142})
143143
144+ const oldUrl = ref <string | undefined >(' ' )
145+
146+ // 当 link 属性改变时更新表单数据
147+ watch (() => props .link , (newLink ) => {
148+ if (newLink ) {
149+ formData .value = { ... newLink }
150+ oldUrl .value = newLink .url
151+ } else {
152+ formData .value = {
153+ name: ' ' ,
154+ url: ' ' ,
155+ icon: ' ' ,
156+ category: ' ' ,
157+ sortIndex: 0 ,
158+ }
159+ oldUrl .value = ' '
160+ }
161+ }, { immediate: true })
162+
144163// 处理分类输入
145164const handleCategoryInput = (event : Event ) => {
146165 const value = (event .target as HTMLInputElement ).value
@@ -158,20 +177,6 @@ const filteredCategories = computed(() => {
158177 )
159178})
160179
161- // 当 link 属性改变时更新表单数据
162- watch (() => props .link , (newLink ) => {
163- if (newLink ) {
164- formData .value = { ... newLink }
165- } else {
166- formData .value = {
167- name: ' ' ,
168- url: ' ' ,
169- icon: ' ' ,
170- category: ' ' ,
171- sortIndex: 0 ,
172- }
173- }
174- }, { immediate: true })
175180
176181// 获取图标
177182const fetchIcon = async () => {
@@ -193,7 +198,11 @@ const fetchIcon = async () => {
193198
194199// 提交表单
195200const handleSubmit = () => {
196- emit (' submit' , { ... formData .value })
201+ if (props .mode === ' update' ) {
202+ emit (' submit' , { link: { ... formData .value }, oldUrl: oldUrl .value })
203+ } else {
204+ emit (' submit' , { link: { ... formData .value } })
205+ }
197206 emit (' update:show' , false )
198207}
199208 </script >
0 commit comments