diff --git a/src/i18n/quick-issue/quick-issue-en.ts b/src/i18n/quick-issue/quick-issue-en.ts index 5dcfb75adf2068d536e2efcedb89799786501bb1..1d27836737d12d25afba3ea72eefe65928490e51 100644 --- a/src/i18n/quick-issue/quick-issue-en.ts +++ b/src/i18n/quick-issue/quick-issue-en.ts @@ -18,6 +18,10 @@ export default { TITLE: 'Title', DESCRIPTIVE: 'Description', TYPE: 'Type', + IS_GITEE_USER: 'Create Issue as Gitee User', + SCENARIO: 'Scenario', + YES: 'Yes', + NO: 'No', PRIORITY: 'Priority', SUBMITTER: 'Creator', MILESTONE: 'Milestone', diff --git a/src/i18n/quick-issue/quick-issue-zh.ts b/src/i18n/quick-issue/quick-issue-zh.ts index 06dbf68bf45737be5462f79cceb8ff59cd8ea363..64f3e2e0651f9fd2e8fe4a9eb292a9ca0e0ff106 100644 --- a/src/i18n/quick-issue/quick-issue-zh.ts +++ b/src/i18n/quick-issue/quick-issue-zh.ts @@ -18,6 +18,10 @@ export default { TITLE: '标题', DESCRIPTIVE: '描述', TYPE: '类型', + IS_GITEE_USER: '是否为Gitee用户', + SCENARIO: '场景', + YES: '是', + NO: '否', PRIORITY: '优先级', SUBMITTER: '提交人', ASSIGNER: '指派给', diff --git a/src/shared/@types/type-quick-issue.ts b/src/shared/@types/type-quick-issue.ts index 04e9eb370b47341dee66dd3ff8686636ba588929..11e5038f62ed7c88dfc0169230add27c0c4fd5df 100644 --- a/src/shared/@types/type-quick-issue.ts +++ b/src/shared/@types/type-quick-issue.ts @@ -31,4 +31,5 @@ export interface IssueData { code: string; description: string; privacy: Array | boolean; + isGiteeUser: boolean; } diff --git a/src/views/submit-issue/SubmitIssue.vue b/src/views/submit-issue/SubmitIssue.vue index 5bd71b533635c669e0fd81ea2f8a0d1357167313..ce0dd63ba758eb3e8aaee0d3269980d4e6f22762 100644 --- a/src/views/submit-issue/SubmitIssue.vue +++ b/src/views/submit-issue/SubmitIssue.vue @@ -36,7 +36,6 @@ import { ElMessage } from 'element-plus'; import type { FormInstance, TabsPaneContext } from 'element-plus'; import IconGitee from '~icons/app/icon-gitee.svg'; -import IconDown from '~icons/app/icon-pulldown.svg'; import IconSearch from '~icons/app/icon-search.svg'; import { oaReport } from '@/shared/analytics'; @@ -44,6 +43,7 @@ interface TypesList { id: number; name: string; template: string; + desc?: string; } const formRef = ref(); const { t } = useI18n(); @@ -78,7 +78,6 @@ const content = ref(t('quickIssue.SEND_CODE')); const totalTime = ref(60); const tabType = ref(titleList.value[0].key); -const isGiteeUser = ref(false); const clock = ref(); const challenge = ref(''); const isVerifyShown = ref(false); @@ -126,6 +125,7 @@ const issueData: IssueData = reactive({ code: '', description: '', privacy: [], + isGiteeUser: true, }); function getSigValue(val: string) { @@ -166,9 +166,6 @@ function queryGetReq() { }); } -function changeStash() { - isGiteeUser.value = !isGiteeUser.value; -} function changeEmail() { if (totalTime.value !== 60) { window.clearInterval(clock.value); @@ -183,6 +180,7 @@ async function getCodeByEmail(verify: FormInstance | undefined) { rules.code = []; rules.privacy = privacyRules; rules.email = emailRules; + verify.clearValidate('code'); verify.validate(async (res: boolean) => { if (totalTime.value === 60 && res) { isVerifyShown.value = true; @@ -207,6 +205,11 @@ function sendVerifyEmail() { type: 'success', }); } + +const issueTypeId = computed(() => + Number(issueData.issue_type_id?.toString().split('__').at(-1)) +); + async function goGitee(verify: FormInstance | undefined) { if (!verify) { return; @@ -216,7 +219,7 @@ async function goGitee(verify: FormInstance | undefined) { rules.privacy = []; verify.validate(async (res: boolean) => { if (res) { - const url = `${giteeUrl}/${issueData.repo}/issues/new?title=${issueData.title}&issue%5Bissue_type_id%5D=${issueData.issue_type_id}`; + const url = `${giteeUrl}/${issueData.repo}/issues/new?title=${issueData.title}&issue%5Bissue_type_id%5D=${issueTypeId.value}`; oaReport('toGiteeCreateIssue', { $utm_source: 'quick_issue', jump_url: url, @@ -240,7 +243,7 @@ async function submitForm( if (res) { const parmes = { title: issueData.title, - issue_type_id: issueData.issue_type_id, + issue_type_id: issueTypeId.value, email: issueData.email, code: issueData.code, repo: issueData.repo, @@ -361,8 +364,22 @@ onMounted(async () => { repoParams.sig = issueData.sig; } await getIssueSelectOption('types', null).then((res) => { - typesList.value = res.data; + // 手动筛选,只留两个场景 【开发|使用openEuler】 + const sceneDescMap = { + '开发openEuler': '如构建场景/测试场景/发布场景/分析场景/问题反馈场景/其他场景', + '使用openEuler': '如下载场景/使用文档场景/安装及迁移场景/其他场景', + }; + typesList.value = res.data + .filter((v: TypesList) => !!sceneDescMap[v.name]) + .map((v: TypesList) => { + return { + ...v, + id: `${v.name}__${v.id}`, + desc: sceneDescMap[v.name] || '', + }; + }); }); + // 根据url中的type获取对应的模板 if (getUrlParam('type')) { const targetType = typesList.value?.find((item) => { return item.name === decodeURI(getUrlParam('type')); @@ -392,25 +409,37 @@ watch( :model="issueData" :rules="rules" label-position="left" - hide-required-asterisk class="issue-form" :class="lang === 'en' ? 'en-form' : ''" > +
+ + + {{ t('quickIssue.YES') }} + {{ t('quickIssue.NO') }} + + +
- + + > +
+ {{ item.name }} + ({{ item.desc }}) +
+
- + - +
-
-
+ +