| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -10,7 +10,7 @@ import { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  websiteDnsRecordssAtom, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  websiteDnsRecordsSearchAtom, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} from '@/store/websites/record' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { useEffect, useMemo, useState } from 'react' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { useEffect, useMemo, useRef, useState } from 'react' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import Action from '@/components/action/Action.tsx' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  BetaSchemaForm, | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -19,7 +19,7 @@ import { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} from '@ant-design/pro-components' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import ListPageLayout from '@/layout/ListPageLayout.tsx' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { useStyle } from './style' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { FilterOutlined, QuestionCircleOutlined } from '@ant-design/icons' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { FilterOutlined, MinusCircleOutlined, PlusOutlined, QuestionCircleOutlined } from '@ant-design/icons' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { getValueCount, unSetColumnRules } from '@/utils' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { Table as ProTable } from '@/components/table' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import Popconfirm from '@/components/popconfirm' | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -48,6 +48,7 @@ const WebsiteDnsRecords = () => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  const [ searchKey, setSearchKey ] = useState(search?.title) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  const currentDomain = domainList?.rows?.find?.(item => item.id === id) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  const isBatch = useRef(false) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  useEffect(() => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if (id) { | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -57,6 +58,27 @@ const WebsiteDnsRecords = () => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  const columns = useMemo(() => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const batchDomain = { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      title: '域名', | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      dataIndex: 'domains', | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      hideInSearch: true, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      hideInTable: true, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      hideInSetting: true, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      formItemProps:{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        rules: [ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          { required: true,} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      renderFormItem: (_schema, config) => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return <div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <Input.TextArea | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  {...config} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  rows={5} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  placeholder={t(`${i18nPrefix}.columns.domains`, '一行一个域名,最多支持10000个;\n支持复制黏贴到输入框,但请核对数据是否正确。')}/> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return [ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        title: 'ID', | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -73,7 +95,6 @@ const WebsiteDnsRecords = () => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        hideInTable: true, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        hideInSetting: true, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        title: t(`${i18nPrefix}.columns.domain_id`, 'domain_id'), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        dataIndex: 'domain_id', | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -82,6 +103,7 @@ const WebsiteDnsRecords = () => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        hideInTable: true, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        hideInSetting: true, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      isBatch.current ? batchDomain : null, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        title: t(`${i18nPrefix}.columns.type`, '记录类型'), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        tooltip: '指解析记录的用途,例如:网站、邮箱', | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -104,7 +126,7 @@ const WebsiteDnsRecords = () => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          return record.type | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      !isBatch.current ? { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        title: t(`${i18nPrefix}.columns.name`, '主机记录'), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        dataIndex: 'name', | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        tooltip: '指域名前缀,例如:www', | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -139,6 +161,61 @@ const WebsiteDnsRecords = () => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                   }/> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          </div> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      } : { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        title: t(`${i18nPrefix}.columns.names`, '主机记录'), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        dataIndex: 'names', | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        tooltip: '指域名前缀,例如:www', | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        formItemProps: { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          rules: [ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            { required: true, } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        renderFormItem: (_schema, config) => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          return <Form.List name="names" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            {..._schema.formItemProps} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            {...config} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              (fields, { add, remove }) => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                return <> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  {fields.map((field) => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    return ( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            <> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                              <Form.Item> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                <Form.Item | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                        {...field} key={field.key} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                        validateTrigger={[ 'onChange', 'onBlur' ]} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                        noStyle | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                  <Input style={{ width: '90%' }} placeholder={'指域名前缀,例如:www'}/> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                </Form.Item> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                {fields.length > 1 ? ( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                        <MinusCircleOutlined | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                                className="dynamic-delete-button" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                                onClick={() => remove(field.name)} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                        /> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                ) : null} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                              </Form.Item> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            </> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  })} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  <Form.Item noStyle={true}> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    <Button | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            type="dashed" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            onClick={() => add()} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            style={{ width: '90%' }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            icon={<PlusOutlined/>} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    > | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                      添加记录 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    </Button> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  </Form.Item> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                </> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          </Form.List> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        title: t(`${i18nPrefix}.columns.content`, '记录值'), | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -228,8 +305,8 @@ const WebsiteDnsRecords = () => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          </Popconfirm> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    ] as ProColumns[] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  }, [ isDeleting, currentWebsiteDnsRecords, search, currentDomain ]) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    ].filter(Boolean) as ProColumns[] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  }, [ isDeleting, currentWebsiteDnsRecords, search, currentDomain, isBatch.current ]) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  useEffect(() => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -252,6 +329,7 @@ const WebsiteDnsRecords = () => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                      <Space> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        <Button key={'add'} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                onClick={() => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                  isBatch.current = false | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                  form.resetFields() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                  form.setFieldsValue({ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                    id: 0, | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -260,6 +338,17 @@ const WebsiteDnsRecords = () => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                  setOpen(true) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                type={'primary'}>{t(`${i18nPrefix}.add`, '添加记录')}</Button> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        <Button key={'add'} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                onClick={() => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                  isBatch.current = true | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                  form.resetFields() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                  form.setFieldsValue({ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                    id: 0, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                    ttl: 1, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                  }) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                  setOpen(true) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                type={'primary'}>{t(`${i18nPrefix}.batchAdd`, '批量添加记录')}</Button> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                      </Space> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    toolbar={{ | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -356,7 +445,10 @@ const WebsiteDnsRecords = () => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    loading={isSubmitting} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    onFinish={async (values) => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                      saveOrUpdate(values) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                      saveOrUpdate({ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        ...values, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        domain_id: id, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                      }) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    }} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    columns={columns as ProFormColumnsType[]}/> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <BetaSchemaForm | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |