eli-video-interview 1.2.34 → 1.2.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -110,6 +110,7 @@ return (
110
110
  | desc | 题目描述 | string |
111
111
  | prepareTime | 准备时长 | number |
112
112
  | duration | 回答时长 | number |
113
+ | minResponseDuration | 最少回答时长 | number |
113
114
  | category | 标签信息 | string[] |
114
115
  | [broadcastType](#题目播报类型) | 题目播报类型 | number |
115
116
  | [aiSwitch](#题目是否开启ai分析) | 题目是否开启AI分析 | number |
@@ -10,22 +10,22 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
- import { useEffect, useState } from 'react';
14
- import { Box, Typography } from 'fbm-ui';
13
+ import Form from '../QuestionUpdate/Form';
14
+ import { PreviewRoot } from './styled';
15
15
  import { QUESTION_TYPE_MAPPING_LABEL } from "../../../../constants/ai-question";
16
16
  import { ADD_QUESTION_TYPE } from "../../../../enum/ai-question";
17
17
  import { useQuestionPreviewStore } from "../../../../store/ai-question/question-preview-store";
18
- import Form from '../QuestionUpdate/Form';
19
- import { PreviewRoot } from './styled';
18
+ import { Box, Typography } from 'fbm-ui';
19
+ import { useEffect, useState } from 'react';
20
20
  var QuestionPreview = function () {
21
21
  var _a = useQuestionPreviewStore(), visible = _a.visible, previewItem = _a.previewItem;
22
- var _b = previewItem || {}, _c = _b.name, name = _c === void 0 ? '' : _c, _d = _b.type, type = _d === void 0 ? 1 : _d, _e = _b.broadcastType, broadcastType = _e === void 0 ? 1 : _e, _f = _b.desc, desc = _f === void 0 ? '' : _f, _g = _b.prepareTime, prepareTime = _g === void 0 ? 3 : _g, _h = _b.duration, duration = _h === void 0 ? 30 : _h, extra = _b.extra;
23
- var _j = useState(), values = _j[0], setValues = _j[1];
24
- var _k = useState('none'), display = _k[0], setDisplay = _k[1];
22
+ var _b = previewItem || {}, _c = _b.name, name = _c === void 0 ? '' : _c, _d = _b.type, type = _d === void 0 ? 1 : _d, _e = _b.broadcastType, broadcastType = _e === void 0 ? 1 : _e, _f = _b.desc, desc = _f === void 0 ? '' : _f, _g = _b.prepareTime, prepareTime = _g === void 0 ? 3 : _g, _h = _b.minResponseDuration, minResponseDuration = _h === void 0 ? 3 : _h, _j = _b.duration, duration = _j === void 0 ? 30 : _j, extra = _b.extra;
23
+ var _k = useState(), values = _k[0], setValues = _k[1];
24
+ var _l = useState('none'), display = _l[0], setDisplay = _l[1];
25
25
  useEffect(function () {
26
- setValues({ name: name, broadcastType: broadcastType, desc: desc, prepareTime: prepareTime, duration: duration });
26
+ setValues({ name: name, broadcastType: broadcastType, desc: desc, prepareTime: prepareTime, duration: duration, minResponseDuration: minResponseDuration });
27
27
  setDisplay(visible ? 'block' : 'none');
28
- }, [name, broadcastType, desc, prepareTime, duration, visible]);
28
+ }, [name, broadcastType, desc, prepareTime, duration, visible, minResponseDuration]);
29
29
  return (_jsx(PreviewRoot, __assign({ style: { display: display } }, { children: (extra === null || extra === void 0 ? void 0 : extra.icon) ? (_jsx("img", { src: extra === null || extra === void 0 ? void 0 : extra.icon, alt: "", style: { width: 250 } })) : (_jsxs(Box, __assign({ width: 500 }, { children: [_jsxs(Typography, __assign({ variant: "h5", textAlign: "center", mb: 3 }, { children: [QUESTION_TYPE_MAPPING_LABEL[type], "\uFF08\u9884\u89C8\uFF09"] })), values && _jsx(Form, { preview: true, aiShowType: ADD_QUESTION_TYPE.FREE, initialValues: values, values: values })] }))) })));
30
30
  };
31
31
  export default QuestionPreview;
@@ -19,6 +19,7 @@ export interface AiEvaluationList {
19
19
  isDefault: boolean;
20
20
  duration: number;
21
21
  prepareTime: number;
22
+ minResponseDuration: number;
22
23
  extra: AiEvaluationListExtra;
23
24
  broadcastType: number;
24
25
  aiSwitch: number;
@@ -76,6 +76,22 @@ var QuestionForm = forwardRef(function (props, ref) {
76
76
  var handleCategoryChange = function (e, value) {
77
77
  onCategoryChange === null || onCategoryChange === void 0 ? void 0 : onCategoryChange(value);
78
78
  };
79
+ var handleMinResponseDurationChange = function (e) {
80
+ var minResponseDurationValue = e.target.value;
81
+ if (minResponseDurationValue && minResponseDurationValue.indexOf('-') > -1) {
82
+ minResponseDurationValue = minResponseDurationValue.replaceAll('-', '');
83
+ }
84
+ if (minResponseDurationValue && minResponseDurationValue.indexOf('.') > -1) {
85
+ minResponseDurationValue = minResponseDurationValue.split('.')[0];
86
+ }
87
+ if (/^[1-9]\d*$/.test(minResponseDurationValue)) {
88
+ minResponseDurationValue = Number(minResponseDurationValue);
89
+ }
90
+ else {
91
+ minResponseDurationValue = '';
92
+ }
93
+ form.setValues(__assign(__assign({}, form.values), { minResponseDuration: minResponseDurationValue }));
94
+ };
79
95
  useImperativeHandle(ref, function () { return ({
80
96
  handleValues: function () { return form.values; },
81
97
  handleSubmit: function () { return form.handleSubmit(); },
@@ -107,7 +123,19 @@ var QuestionForm = forwardRef(function (props, ref) {
107
123
  multiline: true,
108
124
  placeholder: '朗读内容(候选人将根据此内容进行朗读)',
109
125
  sx: { padding: 0 },
110
- } })), _jsxs(Box, __assign({ display: "flex" }, { children: [_jsx(FormItem, __assign({ sx: { height: 64, flex: '1 0', mr: 1 }, required: true, disabled: preview, name: "prepareTime", label: "\u51C6\u5907\u65F6\u957F" }, { children: _jsx(Select, { options: prepareTimeOptions }) })), _jsx(FormItem, __assign({ sx: { height: 64, flex: '1 0' }, required: true, disabled: preview, name: "duration", label: "\u56DE\u7B54\u65F6\u957F" }, { children: _jsx(Select, { options: durationOptions }) }))] }))] })), !preview && _jsx(AiAnalysis, {})] }));
126
+ } })), _jsxs(Box, __assign({ display: "flex" }, { children: [_jsx(FormItem, __assign({ sx: { height: 64, flex: '1 0', mr: 2 }, required: true, disabled: preview, name: "prepareTime", label: "\u51C6\u5907\u65F6\u957F" }, { children: _jsx(Select, { options: prepareTimeOptions }) })), _jsx(FormItem, __assign({ sx: { height: 64, flex: '1 0' }, required: true, disabled: preview, name: "duration", label: "\u56DE\u7B54\u65F6\u957F" }, { children: _jsx(Select, { options: durationOptions }) })), _jsx(FormItem, { sx: { height: 64, flex: '1 0', ml: 2 }, name: "minResponseDuration", label: "\u6700\u5C11\u56DE\u7B54\u65F6\u957F", type: "number",
127
+ // rules={[
128
+ // e => {
129
+ // if (!/^[1-9]\d*$/.test(e.value)) {
130
+ // return '输入不正确';
131
+ // }
132
+ // },
133
+ // ]}
134
+ InputProps: {
135
+ placeholder: '最少回答时长',
136
+ sx: { padding: 0, pr: 1 },
137
+ endAdornment: 's',
138
+ }, onChange: handleMinResponseDurationChange })] }))] })), !preview && _jsx(AiAnalysis, {})] }));
111
139
  });
112
140
  QuestionForm.displayName = 'QuestionForm';
113
141
  export default memo(QuestionForm);
@@ -16,6 +16,7 @@ export var defaultQuestionParams = {
16
16
  language: undefined,
17
17
  name: '',
18
18
  prepareTime: 3,
19
+ minResponseDuration: 3,
19
20
  type: 1,
20
21
  videoBroadcast: {
21
22
  videoRetry: 2,
@@ -88,6 +88,7 @@ var QuestionUpdate = function () {
88
88
  readText: (_a = item === null || item === void 0 ? void 0 : item.extra) === null || _a === void 0 ? void 0 : _a.readText,
89
89
  prepareTime: item === null || item === void 0 ? void 0 : item.prepareTime,
90
90
  duration: item === null || item === void 0 ? void 0 : item.duration,
91
+ minResponseDuration: item === null || item === void 0 ? void 0 : item.minResponseDuration,
91
92
  category: (item === null || item === void 0 ? void 0 : item.category) ? { label: (item === null || item === void 0 ? void 0 : item.category[0]) || '', value: (item === null || item === void 0 ? void 0 : item.category[0]) || '' } : { label: '', value: '' },
92
93
  };
93
94
  var CustomHeader = function () {
@@ -186,16 +187,21 @@ var QuestionUpdate = function () {
186
187
  return [2 /*return*/, (_a = formRef === null || formRef === void 0 ? void 0 : formRef.current) === null || _a === void 0 ? void 0 : _a.handleSubmit()];
187
188
  }); }); };
188
189
  var handleSubmit = useCallback(function (values) { return __awaiter(void 0, void 0, void 0, function () {
189
- var _a, errorIndexes, params;
190
- return __generator(this, function (_b) {
191
- switch (_b.label) {
190
+ var _a, errorIndexes, params, _b, minResponseDuration, duration;
191
+ return __generator(this, function (_c) {
192
+ switch (_c.label) {
192
193
  case 0: return [4 /*yield*/, getModelParams(values, true)];
193
194
  case 1:
194
- _a = _b.sent(), errorIndexes = _a.errorIndexes, params = _a.params;
195
+ _a = _c.sent(), errorIndexes = _a.errorIndexes, params = _a.params;
195
196
  if (values.broadcastType === 2 && !(item === null || item === void 0 ? void 0 : item.videoBroadcast.videoUrl)) {
196
197
  Message.error('请上传视频素材');
197
198
  return [2 /*return*/, false];
198
199
  }
200
+ _b = values.minResponseDuration, minResponseDuration = _b === void 0 ? 3 : _b, duration = values.duration;
201
+ if (!(minResponseDuration >= 3 && /^[1-9]\d*$/.test(minResponseDuration.toString()) && duration >= minResponseDuration)) {
202
+ Message.error('最少回答时长必须大于等于3s,小于回答时长');
203
+ return [2 /*return*/, false];
204
+ }
199
205
  if (!errorIndexes.length) {
200
206
  token ? editModel(params, index) : addModel(params);
201
207
  updateQuestionState({ open: false });
@@ -12,6 +12,7 @@ export interface QuestionParams {
12
12
  desc: string;
13
13
  prepareTime: number;
14
14
  duration: number;
15
+ minResponseDuration?: number;
15
16
  category?: string[];
16
17
  extra: BaseExtraParams;
17
18
  broadcastType: number;
@@ -33,6 +34,7 @@ export interface QuestionFormValues {
33
34
  desc: string;
34
35
  prepareTime: number;
35
36
  duration: number;
37
+ minResponseDuration?: number;
36
38
  broadcastType: number;
37
39
  category?: {
38
40
  label: string;
@@ -15,22 +15,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  var jsx_runtime_1 = require("react/jsx-runtime");
18
- var react_1 = require("react");
19
- var fbm_ui_1 = require("fbm-ui");
18
+ var Form_1 = __importDefault(require("../QuestionUpdate/Form"));
19
+ var styled_1 = require("./styled");
20
20
  var ai_question_1 = require("../../../../constants/ai-question");
21
21
  var ai_question_2 = require("../../../../enum/ai-question");
22
22
  var question_preview_store_1 = require("../../../../store/ai-question/question-preview-store");
23
- var Form_1 = __importDefault(require("../QuestionUpdate/Form"));
24
- var styled_1 = require("./styled");
23
+ var fbm_ui_1 = require("fbm-ui");
24
+ var react_1 = require("react");
25
25
  var QuestionPreview = function () {
26
26
  var _a = (0, question_preview_store_1.useQuestionPreviewStore)(), visible = _a.visible, previewItem = _a.previewItem;
27
- var _b = previewItem || {}, _c = _b.name, name = _c === void 0 ? '' : _c, _d = _b.type, type = _d === void 0 ? 1 : _d, _e = _b.broadcastType, broadcastType = _e === void 0 ? 1 : _e, _f = _b.desc, desc = _f === void 0 ? '' : _f, _g = _b.prepareTime, prepareTime = _g === void 0 ? 3 : _g, _h = _b.duration, duration = _h === void 0 ? 30 : _h, extra = _b.extra;
28
- var _j = (0, react_1.useState)(), values = _j[0], setValues = _j[1];
29
- var _k = (0, react_1.useState)('none'), display = _k[0], setDisplay = _k[1];
27
+ var _b = previewItem || {}, _c = _b.name, name = _c === void 0 ? '' : _c, _d = _b.type, type = _d === void 0 ? 1 : _d, _e = _b.broadcastType, broadcastType = _e === void 0 ? 1 : _e, _f = _b.desc, desc = _f === void 0 ? '' : _f, _g = _b.prepareTime, prepareTime = _g === void 0 ? 3 : _g, _h = _b.minResponseDuration, minResponseDuration = _h === void 0 ? 3 : _h, _j = _b.duration, duration = _j === void 0 ? 30 : _j, extra = _b.extra;
28
+ var _k = (0, react_1.useState)(), values = _k[0], setValues = _k[1];
29
+ var _l = (0, react_1.useState)('none'), display = _l[0], setDisplay = _l[1];
30
30
  (0, react_1.useEffect)(function () {
31
- setValues({ name: name, broadcastType: broadcastType, desc: desc, prepareTime: prepareTime, duration: duration });
31
+ setValues({ name: name, broadcastType: broadcastType, desc: desc, prepareTime: prepareTime, duration: duration, minResponseDuration: minResponseDuration });
32
32
  setDisplay(visible ? 'block' : 'none');
33
- }, [name, broadcastType, desc, prepareTime, duration, visible]);
33
+ }, [name, broadcastType, desc, prepareTime, duration, visible, minResponseDuration]);
34
34
  return ((0, jsx_runtime_1.jsx)(styled_1.PreviewRoot, __assign({ style: { display: display } }, { children: (extra === null || extra === void 0 ? void 0 : extra.icon) ? ((0, jsx_runtime_1.jsx)("img", { src: extra === null || extra === void 0 ? void 0 : extra.icon, alt: "", style: { width: 250 } })) : ((0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ width: 500 }, { children: [(0, jsx_runtime_1.jsxs)(fbm_ui_1.Typography, __assign({ variant: "h5", textAlign: "center", mb: 3 }, { children: [ai_question_1.QUESTION_TYPE_MAPPING_LABEL[type], "\uFF08\u9884\u89C8\uFF09"] })), values && (0, jsx_runtime_1.jsx)(Form_1.default, { preview: true, aiShowType: ai_question_2.ADD_QUESTION_TYPE.FREE, initialValues: values, values: values })] }))) })));
35
35
  };
36
36
  exports.default = QuestionPreview;
@@ -19,6 +19,7 @@ export interface AiEvaluationList {
19
19
  isDefault: boolean;
20
20
  duration: number;
21
21
  prepareTime: number;
22
+ minResponseDuration: number;
22
23
  extra: AiEvaluationListExtra;
23
24
  broadcastType: number;
24
25
  aiSwitch: number;
@@ -81,6 +81,22 @@ var QuestionForm = (0, react_1.forwardRef)(function (props, ref) {
81
81
  var handleCategoryChange = function (e, value) {
82
82
  onCategoryChange === null || onCategoryChange === void 0 ? void 0 : onCategoryChange(value);
83
83
  };
84
+ var handleMinResponseDurationChange = function (e) {
85
+ var minResponseDurationValue = e.target.value;
86
+ if (minResponseDurationValue && minResponseDurationValue.indexOf('-') > -1) {
87
+ minResponseDurationValue = minResponseDurationValue.replaceAll('-', '');
88
+ }
89
+ if (minResponseDurationValue && minResponseDurationValue.indexOf('.') > -1) {
90
+ minResponseDurationValue = minResponseDurationValue.split('.')[0];
91
+ }
92
+ if (/^[1-9]\d*$/.test(minResponseDurationValue)) {
93
+ minResponseDurationValue = Number(minResponseDurationValue);
94
+ }
95
+ else {
96
+ minResponseDurationValue = '';
97
+ }
98
+ form.setValues(__assign(__assign({}, form.values), { minResponseDuration: minResponseDurationValue }));
99
+ };
84
100
  (0, react_1.useImperativeHandle)(ref, function () { return ({
85
101
  handleValues: function () { return form.values; },
86
102
  handleSubmit: function () { return form.handleSubmit(); },
@@ -112,7 +128,19 @@ var QuestionForm = (0, react_1.forwardRef)(function (props, ref) {
112
128
  multiline: true,
113
129
  placeholder: '朗读内容(候选人将根据此内容进行朗读)',
114
130
  sx: { padding: 0 },
115
- } })), (0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ display: "flex" }, { children: [(0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, __assign({ sx: { height: 64, flex: '1 0', mr: 1 }, required: true, disabled: preview, name: "prepareTime", label: "\u51C6\u5907\u65F6\u957F" }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Select, { options: const_1.prepareTimeOptions }) })), (0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, __assign({ sx: { height: 64, flex: '1 0' }, required: true, disabled: preview, name: "duration", label: "\u56DE\u7B54\u65F6\u957F" }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Select, { options: const_1.durationOptions }) }))] }))] })), !preview && (0, jsx_runtime_1.jsx)(AiAnalysis_1.default, {})] }));
131
+ } })), (0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ display: "flex" }, { children: [(0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, __assign({ sx: { height: 64, flex: '1 0', mr: 2 }, required: true, disabled: preview, name: "prepareTime", label: "\u51C6\u5907\u65F6\u957F" }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Select, { options: const_1.prepareTimeOptions }) })), (0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, __assign({ sx: { height: 64, flex: '1 0' }, required: true, disabled: preview, name: "duration", label: "\u56DE\u7B54\u65F6\u957F" }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Select, { options: const_1.durationOptions }) })), (0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, { sx: { height: 64, flex: '1 0', ml: 2 }, name: "minResponseDuration", label: "\u6700\u5C11\u56DE\u7B54\u65F6\u957F", type: "number",
132
+ // rules={[
133
+ // e => {
134
+ // if (!/^[1-9]\d*$/.test(e.value)) {
135
+ // return '输入不正确';
136
+ // }
137
+ // },
138
+ // ]}
139
+ InputProps: {
140
+ placeholder: '最少回答时长',
141
+ sx: { padding: 0, pr: 1 },
142
+ endAdornment: 's',
143
+ }, onChange: handleMinResponseDurationChange })] }))] })), !preview && (0, jsx_runtime_1.jsx)(AiAnalysis_1.default, {})] }));
116
144
  });
117
145
  QuestionForm.displayName = 'QuestionForm';
118
146
  exports.default = (0, react_1.memo)(QuestionForm);
@@ -19,6 +19,7 @@ exports.defaultQuestionParams = {
19
19
  language: undefined,
20
20
  name: '',
21
21
  prepareTime: 3,
22
+ minResponseDuration: 3,
22
23
  type: 1,
23
24
  videoBroadcast: {
24
25
  videoRetry: 2,
@@ -93,6 +93,7 @@ var QuestionUpdate = function () {
93
93
  readText: (_a = item === null || item === void 0 ? void 0 : item.extra) === null || _a === void 0 ? void 0 : _a.readText,
94
94
  prepareTime: item === null || item === void 0 ? void 0 : item.prepareTime,
95
95
  duration: item === null || item === void 0 ? void 0 : item.duration,
96
+ minResponseDuration: item === null || item === void 0 ? void 0 : item.minResponseDuration,
96
97
  category: (item === null || item === void 0 ? void 0 : item.category) ? { label: (item === null || item === void 0 ? void 0 : item.category[0]) || '', value: (item === null || item === void 0 ? void 0 : item.category[0]) || '' } : { label: '', value: '' },
97
98
  };
98
99
  var CustomHeader = function () {
@@ -191,16 +192,21 @@ var QuestionUpdate = function () {
191
192
  return [2 /*return*/, (_a = formRef === null || formRef === void 0 ? void 0 : formRef.current) === null || _a === void 0 ? void 0 : _a.handleSubmit()];
192
193
  }); }); };
193
194
  var handleSubmit = (0, react_1.useCallback)(function (values) { return __awaiter(void 0, void 0, void 0, function () {
194
- var _a, errorIndexes, params;
195
- return __generator(this, function (_b) {
196
- switch (_b.label) {
195
+ var _a, errorIndexes, params, _b, minResponseDuration, duration;
196
+ return __generator(this, function (_c) {
197
+ switch (_c.label) {
197
198
  case 0: return [4 /*yield*/, getModelParams(values, true)];
198
199
  case 1:
199
- _a = _b.sent(), errorIndexes = _a.errorIndexes, params = _a.params;
200
+ _a = _c.sent(), errorIndexes = _a.errorIndexes, params = _a.params;
200
201
  if (values.broadcastType === 2 && !(item === null || item === void 0 ? void 0 : item.videoBroadcast.videoUrl)) {
201
202
  fbm_ui_1.Message.error('请上传视频素材');
202
203
  return [2 /*return*/, false];
203
204
  }
205
+ _b = values.minResponseDuration, minResponseDuration = _b === void 0 ? 3 : _b, duration = values.duration;
206
+ if (!(minResponseDuration >= 3 && /^[1-9]\d*$/.test(minResponseDuration.toString()) && duration >= minResponseDuration)) {
207
+ fbm_ui_1.Message.error('最少回答时长必须大于等于3s,小于回答时长');
208
+ return [2 /*return*/, false];
209
+ }
204
210
  if (!errorIndexes.length) {
205
211
  token ? editModel(params, index) : addModel(params);
206
212
  updateQuestionState({ open: false });
@@ -12,6 +12,7 @@ export interface QuestionParams {
12
12
  desc: string;
13
13
  prepareTime: number;
14
14
  duration: number;
15
+ minResponseDuration?: number;
15
16
  category?: string[];
16
17
  extra: BaseExtraParams;
17
18
  broadcastType: number;
@@ -33,6 +34,7 @@ export interface QuestionFormValues {
33
34
  desc: string;
34
35
  prepareTime: number;
35
36
  duration: number;
37
+ minResponseDuration?: number;
36
38
  broadcastType: number;
37
39
  category?: {
38
40
  label: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eli-video-interview",
3
- "version": "1.2.34",
3
+ "version": "1.2.35",
4
4
  "description": "鳄梨科技 AI视频面试 React SDK",
5
5
  "author": "鳄梨科技",
6
6
  "license": "MIT",