diff --git a/package.json b/package.json index ae41214..e8db2f1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "azon-seeker", "displayName": "Azon Seeker", - "version": "0.2.0", + "version": "0.3.0", "private": true, "description": "Starter modify by honestfox101", "scripts": { diff --git a/src/components/DetailDescription.vue b/src/components/DetailDescription.vue index 420c567..b8a5df6 100644 --- a/src/components/DetailDescription.vue +++ b/src/components/DetailDescription.vue @@ -1,26 +1,7 @@ diff --git a/src/components/AsinsInput.vue b/src/components/IdsInput.vue similarity index 77% rename from src/components/AsinsInput.vue rename to src/components/IdsInput.vue index 919b6a4..2e08afc 100644 --- a/src/components/AsinsInput.vue +++ b/src/components/IdsInput.vue @@ -2,12 +2,18 @@ import { useFileDialog } from '@vueuse/core'; import type { FormItemRule } from 'naive-ui'; -withDefaults( +const props = withDefaults( defineProps<{ disabled?: boolean; + matchPattern?: RegExp; + placeholder?: string; + validateMessage?: string; }>(), { disabled: false, + matchPattern: () => /^[A-Z0-9]{10}((\n|\s|,|;)[A-Z0-9]{10})*\n?$/g, + placeholder: '输入ASINs', + validateMessage: '请输入格式正确的ASIN', }, ); @@ -19,20 +25,20 @@ const formItemRef = useTemplateRef('detail-form-item'); const formItemRule: FormItemRule = { required: true, trigger: ['submit', 'blur'], - message: '请输入格式正确的ASIN', + message: props.validateMessage, validator: () => { - return modelValue.value.match(/^[A-Z0-9]{10}((\n|\s|,|;)[A-Z0-9]{10})*\n?$/g) !== null; + return props.matchPattern.exec(modelValue.value) !== null; }, }; const fileDialog = useFileDialog({ accept: '.txt', multiple: false }); fileDialog.onChange((fileList) => { const file = fileList?.item(0); - file && handleImportAsin(file); + file && handleImportIds(file); fileDialog.reset(); }); -const handleImportAsin = (file: File) => { +const handleImportIds = (file: File) => { const reader = new FileReader(); reader.onload = (e) => { const content = e.target?.result; @@ -43,10 +49,10 @@ const handleImportAsin = (file: File) => { reader.readAsText(file, 'utf-8'); }; -const handleExportAsin = () => { +const handleExportIds = () => { const blob = new Blob([modelValue.value], { type: 'text/plain' }); const url = URL.createObjectURL(blob); - const filename = `asin-${new Date().toISOString()}.txt`; + const filename = `${new Date().toISOString()}.txt`; const link = document.createElement('a'); link.href = url; link.download = filename; @@ -75,7 +81,7 @@ defineExpose({