Skip to content

Commit 1232073

Browse files
Merge pull request #107 from kniglt12/main
feat :sms
2 parents 8fd0131 + bc63a05 commit 1232073

7 files changed

Lines changed: 54 additions & 26 deletions

File tree

src/api/sms/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ import { SmsRequest, SmsResponse } from '@/constants/httpMsg/sms/sendSmsMsg';
22
import request from '../_request';
33

44
export default async function sendSms(data: SmsRequest): Promise<SmsResponse> {
5+
const url = 'aids' in data ? '/sms/' : '/sms/raw';
56
const res: SmsResponse = await request({
6-
url: '/sms/raw',
7+
url,
78
method: 'POST',
89
data,
910
});
Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
1+
import { Step } from '@/constants/team';
12
import { HttpRes } from '../_httpResTemplate';
23

3-
export interface SmsRequest {
4-
aid: string;
5-
content: string;
6-
}
4+
export type SmsRequest =
5+
| {
6+
type?: 'Accept' | 'Reject';
7+
current?: Step;
8+
next?: Step;
9+
time?: string;
10+
place?: string;
11+
meeting_id?: string;
12+
rest?: string;
13+
aids: string[];
14+
}
15+
| {
16+
aid: string;
17+
content: string;
18+
};
719

820
export type SmsResponse = HttpRes<object>;

src/constants/team.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,16 @@ export const SMSTemplate: {
142142
},
143143
{
144144
i18nKey: 'sms.base',
145-
match: [Step.WrittenTest, Step.StressTest],
145+
match: [Step.StressTest],
146146
restI18nKey: 'sms.rest.test',
147147
required: ['time', 'place', 'next'],
148148
},
149+
{
150+
i18nKey: 'sms.base',
151+
match: [Step.WrittenTest],
152+
restI18nKey: 'sms.rest.writtenTest',
153+
required: ['time', 'next'],
154+
},
149155
{
150156
i18nKey: 'sms.base',
151157
match: [Step.GroupTimeSelection, Step.TeamTimeSelection],

src/locale/zh-CN/sms.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ export default {
22
'sms.interview':
33
'{name}你好,请于{example_time}在启明学院亮胜楼{place}参加{next},请准时到场。',
44
'sms.onlineInterview':
5-
'{name}你好,欢迎参加{recruitment_name} {group}组{online_interview_type},面试将于{example_time}进行,请在PC端点击腾讯会议参加面试,会议号{meeting_id},并提前调试好摄像头和麦克风,祝你面试顺利.',
5+
'{name}你好,欢迎参加{recruitment_name} {group}组{online_interview_type},面试将于{example_time}进行,请在PC端点击腾讯会议参加面试,会议号{meeting_id},并提前调试好摄像头和麦克风,祝你面试顺利',
66
'sms.base':
77
'{name}你好,你通过了{recruitment_name} {group}组{current}审核,{rest}',
88
'sms.rest.test': '请于{time}在{place}参加{next},请务必准时到场',
9-
'sms.rest.timeSelection': '请进入选手dashboard系统选择面试时间',
10-
'sms.rest.pass': '你已成功加入{group}组',
9+
'sms.rest.writtenTest':
10+
'请进入报名系统获取笔试题,并及时完成笔试。笔试的截止时间是{time},请务必及时将答案发送至招新平台,超时视为弃权,若有特殊情况导致无法准时完成笔试题或者放弃作答请及时联系招新群{group}组管理员。',
11+
'sms.rest.timeSelection': '请进入报名系统选择面试时间。',
12+
'sms.rest.pass': '你已成功加入{group}组。',
1113
'sms.reject':
1214
'{name}你好,你没有通过{recruitment_name} {group}组{current}审核,请你{rest}不要灰心,继续学习。期待与更强大的你的相遇!',
1315
};

src/views/components/notification-modal.vue

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@
154154
import { ref, PropType, watch, computed } from 'vue';
155155
import { Group, recruitSteps, Step, SMSTemplate } from '@/constants/team';
156156
import { sendSms } from '@/api';
157+
import { groupBy } from 'lodash';
157158
import { Message } from '@arco-design/web-vue';
158159
import { useI18n } from 'vue-i18n';
159160
import dayjs from 'dayjs';
@@ -334,20 +335,30 @@ const handleNotify = async () => {
334335
Message.error(t('candidate.requireAllocateTime'));
335336
return false;
336337
}
337-
}
338338
339-
const reqs = props.candidates.map((candidate) => {
340-
const content = isCustom.value
341-
? customContents.value[candidate.aid]
342-
: generateSMSContent(candidate);
343-
return sendSms({
344-
aid: candidate.aid,
345-
content,
339+
const res = groupBy(props.candidates, ({ step }) => step);
340+
const reqs = Object.entries(res).map(([current, arr]) => {
341+
const aids = arr.map(({ aid }) => aid);
342+
return sendSms({
343+
type: props.type,
344+
current: current as Step,
345+
...formData.value,
346+
aids,
347+
});
346348
});
347-
});
349+
const resp = await Promise.all(reqs);
350+
if (!resp.every((x) => x)) return false;
351+
} else {
352+
const reqs = props.candidates.map((candidate) => {
353+
return sendSms({
354+
aid: candidate.aid,
355+
content: customContents.value[candidate.aid],
356+
});
357+
});
358+
const resp = await Promise.all(reqs);
359+
if (!resp.every((x) => x)) return false;
360+
}
348361
349-
const resp = await Promise.all(reqs);
350-
if (!resp.every((x) => x)) return false;
351362
Message.success(t('common.result.sendSuccess'));
352363
notifyFormRef.value?.resetFields();
353364
[formData.value.next] = nextValidSteps.value;

src/views/overview/candidate/components/candidate-info.vue

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -392,10 +392,6 @@ const handleSetStressTime = async (): Promise<boolean> => {
392392
Message.success(t('common.result.setStressTestTimeSuccess'));
393393
return true;
394394
};
395-
396-
// 预览链接
397-
// const preUrl =
398-
// 'blob:http://localhost:5111/33cb0d31-e85c-4d11-90df-70328f58f268';
399395
</script>
400396

401397
<style scoped lang="less">

src/views/overview/detail/profile.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
}}</span>
2424
</div>
2525
<div class="sm:hidden flex items-center">
26-
<icon-qq />
26+
<icon-qq class="arco-icon" />
2727
<span class="ml-2.5 w-52 overflow-x-auto">{{
2828
user?.qq_account ?? ''
2929
}}</span>
@@ -68,7 +68,7 @@
6868
<div
6969
class="w-9 h-9 rounded-full flex justify-center items-center bg-[rgb(var(--gray-2))] shrink-0"
7070
>
71-
<icon-qq :size="20" width="20" height="20" />
71+
<icon-qq class="arco-icon" size="20" />
7272
</div>
7373
<div>
7474
<div class="text-[--color-text-3]">

0 commit comments

Comments
 (0)