diff --git a/package-lock.json b/package-lock.json index 54ffdc1..4669a07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "@primeuix/themes": "^1.0.0", "chart.js": "3.3.2", + "chartjs-plugin-datalabels": "^2.0.0", "katex": "^0.16.27", "marked": "^17.0.1", "marked-katex-extension": "^5.1.6", @@ -1404,7 +1405,17 @@ "node_modules/chart.js": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.3.2.tgz", - "integrity": "sha512-H0hSO7xqTIrwxoACqnSoNromEMfXvfuVnrbuSt2TuXfBDDofbnto4zuZlRtRvC73/b37q3wGAWZyUU41QPvNbA==" + "integrity": "sha512-H0hSO7xqTIrwxoACqnSoNromEMfXvfuVnrbuSt2TuXfBDDofbnto4zuZlRtRvC73/b37q3wGAWZyUU41QPvNbA==", + "peer": true + }, + "node_modules/chartjs-plugin-datalabels": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chartjs-plugin-datalabels/-/chartjs-plugin-datalabels-2.0.0.tgz", + "integrity": "sha512-WBsWihphzM0Y8fmQVm89+iy99mmgejmj5/jcsYqwxSioLRL/zqJ4Scv/eXq5ZqvG3TpojlGzZLeaOaSvDm7fwA==", + "license": "MIT", + "peerDependencies": { + "chart.js": "^3.0.0" + } }, "node_modules/chokidar": { "version": "3.6.0", diff --git a/package.json b/package.json index 074987a..1b3af94 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "dependencies": { "@primeuix/themes": "^1.0.0", "chart.js": "3.3.2", + "chartjs-plugin-datalabels": "^2.0.0", "katex": "^0.16.27", "marked": "^17.0.1", "marked-katex-extension": "^5.1.6", diff --git a/src/components/marketing/MarketingBriefWizardV3.vue b/src/components/marketing/MarketingBriefWizardV3.vue index f1375df..bcde594 100644 --- a/src/components/marketing/MarketingBriefWizardV3.vue +++ b/src/components/marketing/MarketingBriefWizardV3.vue @@ -39,7 +39,7 @@ import { useRouter } from 'vue-router'; const router = useRouter(); const toast = useToast(); -const STEPS = ['Базовая информация', 'География и чек', 'Продукт и поведение', 'Текущая ситуация', 'Ссылки и настройки']; +const STEPS = ['Базовая информация', 'География и чек', 'Продукт и поведение', 'Текущая ситуация']; const currentStep = ref(0); const submitting = ref(false); @@ -72,7 +72,7 @@ const formData = ref({ userSocialLinks: [], knownCompetitorLinks: [], detailLevel: 'СТАНДАРТНО', - analysisType: [] + analysisType: ['РЫНОК', 'КОНКУРЕНТЫ', 'ЦА', 'КАНАЛЫ'] }); // Options для Radio Groups @@ -251,35 +251,19 @@ const validateStep = (stepIndex) => { if (!formData.value.customerBehaviors?.length) { errors.value.customerBehaviors = 'Выберите хотя бы один вариант'; isValid = false; - } else if (formData.value.customerBehaviors.length > 2) { - errors.value.customerBehaviors = 'Не более двух вариантов'; - isValid = false; } else delete errors.value.customerBehaviors; if (!formData.value.decisionPriorities?.length) { errors.value.decisionPriorities = 'Выберите хотя бы один приоритет'; isValid = false; - } else if (formData.value.decisionPriorities.length > 2) { - errors.value.decisionPriorities = 'Не более двух приоритетов'; - isValid = false; } else delete errors.value.decisionPriorities; if (!formData.value.discoveryMethods?.length) { errors.value.discoveryMethods = 'Выберите хотя бы один вариант'; isValid = false; - } else if (formData.value.discoveryMethods.length > 2) { - errors.value.discoveryMethods = 'Не более двух вариантов'; - isValid = false; } else delete errors.value.discoveryMethods; } - if (stepIndex === 4) { - if (!formData.value.analysisType?.length) { - errors.value.analysisType = 'Выберите хотя бы один тип анализа'; - isValid = false; - } else delete errors.value.analysisType; - } - return isValid; }; @@ -411,7 +395,10 @@ export default {
-

Бриф для маркетингового анализа v4.0

+
+

{{ STEPS[currentStep] }} · шаг {{ currentStep + 1 }} из {{ STEPS.length }}

- -
- - - - - - - - - {{ errors.analysisType }} - -
diff --git a/src/components/marketing/analysis/ExecCard.vue b/src/components/marketing/analysis/ExecCard.vue index c312a94..3353664 100644 --- a/src/components/marketing/analysis/ExecCard.vue +++ b/src/components/marketing/analysis/ExecCard.vue @@ -1,77 +1,81 @@