eli-video-interview 1.2.36 → 1.2.37-beta.0

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.
Files changed (179) hide show
  1. package/esm/components/ScrollDialogContent/index.js +1 -1
  2. package/esm/constants/ai-question.d.ts +7 -0
  3. package/esm/constants/ai-question.js +10 -1
  4. package/esm/index.d.ts +1 -0
  5. package/esm/index.js +1 -0
  6. package/esm/modules/ai-ability-select/Root.d.ts +4 -0
  7. package/esm/modules/ai-ability-select/Root.js +47 -0
  8. package/esm/modules/ai-ability-select/components/AiAbilityItem/AiAbilityDetail.d.ts +4 -0
  9. package/esm/modules/ai-ability-select/components/AiAbilityItem/AiAbilityDetail.js +22 -0
  10. package/esm/modules/ai-ability-select/components/AiAbilityItem/index.d.ts +4 -0
  11. package/esm/modules/ai-ability-select/components/AiAbilityItem/index.js +42 -0
  12. package/esm/modules/ai-ability-select/components/AiAbilityItem/interface.d.ts +13 -0
  13. package/esm/modules/ai-ability-select/components/AiAbilityItem/interface.js +1 -0
  14. package/esm/modules/ai-ability-select/components/AiAbilityItem/styled.d.ts +2 -0
  15. package/esm/modules/ai-ability-select/components/AiAbilityItem/styled.js +8 -0
  16. package/esm/modules/ai-ability-select/components/AiAbilityList/index.d.ts +4 -0
  17. package/esm/modules/ai-ability-select/components/AiAbilityList/index.js +19 -0
  18. package/esm/modules/ai-ability-select/components/AiAbilityList/interface.d.ts +4 -0
  19. package/esm/modules/ai-ability-select/components/AiAbilityList/interface.js +1 -0
  20. package/esm/modules/ai-ability-select/index.d.ts +4 -0
  21. package/esm/modules/ai-ability-select/index.js +20 -0
  22. package/esm/modules/ai-ability-select/interface.d.ts +33 -0
  23. package/esm/modules/ai-ability-select/interface.js +1 -0
  24. package/esm/modules/ai-question/Root.js +5 -1
  25. package/esm/modules/ai-question/components/AiAnalysis/AnalysisItem.js +1 -1
  26. package/esm/modules/ai-question/components/AiAnalysis/index.js +1 -1
  27. package/esm/modules/ai-question/components/AiAssessmentCriteria/index.js +13 -4
  28. package/esm/modules/ai-question/components/BaseAccordion/index.d.ts +1 -1
  29. package/esm/modules/ai-question/components/BaseAccordion/index.js +22 -13
  30. package/esm/modules/ai-question/components/BootVideo/index.js +43 -24
  31. package/esm/modules/ai-question/components/BootVideo/styled.js +5 -4
  32. package/esm/modules/ai-question/components/QuestionModel/AutoCombine.d.ts +4 -0
  33. package/esm/modules/ai-question/components/QuestionModel/AutoCombine.js +19 -0
  34. package/esm/modules/ai-question/components/QuestionModel/Header.js +6 -6
  35. package/esm/modules/ai-question/components/QuestionModel/Interactive.d.ts +6 -0
  36. package/esm/modules/ai-question/components/QuestionModel/Interactive.js +26 -0
  37. package/esm/modules/ai-question/components/QuestionModel/Item.d.ts +2 -2
  38. package/esm/modules/ai-question/components/QuestionModel/Item.js +13 -8
  39. package/esm/modules/ai-question/components/QuestionModel/List.js +30 -8
  40. package/esm/modules/ai-question/components/QuestionModel/index.js +5 -1
  41. package/esm/modules/ai-question/components/QuestionModel/interface.d.ts +7 -0
  42. package/esm/modules/ai-question/components/QuestionPreview/index.js +1 -1
  43. package/esm/modules/ai-question/components/QuestionPreview/styled.d.ts +1 -1
  44. package/esm/modules/ai-question/components/QuestionTemplate/AiEvaluation.js +13 -8
  45. package/esm/modules/ai-question/components/QuestionTemplate/index.d.ts +2 -1
  46. package/esm/modules/ai-question/components/QuestionTemplate/index.js +10 -5
  47. package/esm/modules/ai-question/components/QuestionTemplate/interface.d.ts +10 -0
  48. package/esm/modules/ai-question/components/QuestionUpdate/Form.d.ts +2 -2
  49. package/esm/modules/ai-question/components/QuestionUpdate/Form.js +44 -10
  50. package/esm/modules/ai-question/components/QuestionUpdate/RandomQuestion.d.ts +4 -0
  51. package/esm/modules/ai-question/components/QuestionUpdate/RandomQuestion.js +58 -0
  52. package/esm/modules/ai-question/components/QuestionUpdate/SelectQuestion.d.ts +8 -0
  53. package/esm/modules/ai-question/components/QuestionUpdate/SelectQuestion.js +62 -0
  54. package/esm/modules/ai-question/components/QuestionUpdate/VideoVoice.d.ts +2 -2
  55. package/esm/modules/ai-question/components/QuestionUpdate/VideoVoice.js +35 -49
  56. package/esm/modules/ai-question/components/QuestionUpdate/VideoVoicePreview.d.ts +6 -0
  57. package/esm/modules/ai-question/components/QuestionUpdate/VideoVoicePreview.js +47 -0
  58. package/esm/modules/ai-question/components/QuestionUpdate/VideoVoiceUploader.d.ts +7 -0
  59. package/esm/modules/ai-question/components/QuestionUpdate/VideoVoiceUploader.js +60 -0
  60. package/esm/modules/ai-question/components/QuestionUpdate/const.js +1 -0
  61. package/esm/modules/ai-question/components/QuestionUpdate/index.js +9 -6
  62. package/esm/modules/ai-question/components/QuestionUpdate/interface.d.ts +12 -0
  63. package/esm/modules/ai-question/components/QuestionUpdate/styled.d.ts +6 -0
  64. package/esm/modules/ai-question/components/QuestionUpdate/styled.js +52 -0
  65. package/esm/modules/ai-question/index.js +3 -5
  66. package/esm/modules/ai-question/interface.d.ts +17 -0
  67. package/esm/modules/ai-question/useAiQuestion.d.ts +1 -0
  68. package/esm/modules/ai-report/components/ScoreReport/styled.d.ts +3 -3
  69. package/esm/modules/ai-report/components/VideoQuestion/styled.d.ts +2 -2
  70. package/esm/modules/ai-report/components/WorkPlaces/styled.d.ts +2 -2
  71. package/esm/modules/ai-template/components/TemplateList/styled.d.ts +3 -3
  72. package/esm/modules/ai-template/components/TemplateMenu/styled.d.ts +1 -1
  73. package/esm/services/ai-ability.d.ts +1 -0
  74. package/esm/services/ai-ability.js +3 -1
  75. package/esm/services/ai-question.d.ts +2 -1
  76. package/esm/services/ai-question.js +4 -2
  77. package/esm/store/ai-ability-select/question-ability-store.d.ts +21 -0
  78. package/esm/store/ai-ability-select/question-ability-store.js +21 -0
  79. package/esm/store/ai-question/ai-analysis-store.d.ts +2 -2
  80. package/esm/store/ai-question/boot-video-store.js +7 -2
  81. package/esm/store/ai-question/global-store.d.ts +3 -0
  82. package/esm/store/ai-question/global-store.js +1 -0
  83. package/esm/store/ai-question/interview-room-store.d.ts +17 -0
  84. package/esm/store/ai-question/interview-room-store.js +24 -0
  85. package/esm/store/ai-question/question-model-store.d.ts +3 -0
  86. package/esm/store/ai-question/question-model-store.js +5 -3
  87. package/esm/store/ai-question/question-template-store.js +1 -1
  88. package/esm/store/enterprise/enterprise-store.d.ts +29 -0
  89. package/esm/store/enterprise/enterprise-store.js +13 -0
  90. package/lib/components/ScrollDialogContent/index.js +1 -1
  91. package/lib/constants/ai-question.d.ts +7 -0
  92. package/lib/constants/ai-question.js +11 -2
  93. package/lib/index.d.ts +1 -0
  94. package/lib/index.js +3 -1
  95. package/lib/modules/ai-ability-select/Root.d.ts +4 -0
  96. package/lib/modules/ai-ability-select/Root.js +52 -0
  97. package/lib/modules/ai-ability-select/components/AiAbilityItem/AiAbilityDetail.d.ts +4 -0
  98. package/lib/modules/ai-ability-select/components/AiAbilityItem/AiAbilityDetail.js +24 -0
  99. package/lib/modules/ai-ability-select/components/AiAbilityItem/index.d.ts +4 -0
  100. package/lib/modules/ai-ability-select/components/AiAbilityItem/index.js +47 -0
  101. package/lib/modules/ai-ability-select/components/AiAbilityItem/interface.d.ts +13 -0
  102. package/lib/modules/ai-ability-select/components/AiAbilityItem/interface.js +2 -0
  103. package/lib/modules/ai-ability-select/components/AiAbilityItem/styled.d.ts +2 -0
  104. package/lib/modules/ai-ability-select/components/AiAbilityItem/styled.js +11 -0
  105. package/lib/modules/ai-ability-select/components/AiAbilityList/index.d.ts +4 -0
  106. package/lib/modules/ai-ability-select/components/AiAbilityList/index.js +24 -0
  107. package/lib/modules/ai-ability-select/components/AiAbilityList/interface.d.ts +4 -0
  108. package/lib/modules/ai-ability-select/components/AiAbilityList/interface.js +2 -0
  109. package/lib/modules/ai-ability-select/index.d.ts +4 -0
  110. package/lib/modules/ai-ability-select/index.js +25 -0
  111. package/lib/modules/ai-ability-select/interface.d.ts +33 -0
  112. package/lib/modules/ai-ability-select/interface.js +2 -0
  113. package/lib/modules/ai-question/Root.js +5 -1
  114. package/lib/modules/ai-question/components/AiAnalysis/AnalysisItem.js +1 -1
  115. package/lib/modules/ai-question/components/AiAnalysis/index.js +1 -1
  116. package/lib/modules/ai-question/components/AiAssessmentCriteria/index.js +13 -4
  117. package/lib/modules/ai-question/components/BaseAccordion/index.d.ts +1 -1
  118. package/lib/modules/ai-question/components/BaseAccordion/index.js +22 -13
  119. package/lib/modules/ai-question/components/BootVideo/index.js +38 -19
  120. package/lib/modules/ai-question/components/BootVideo/styled.js +5 -4
  121. package/lib/modules/ai-question/components/QuestionModel/AutoCombine.d.ts +4 -0
  122. package/lib/modules/ai-question/components/QuestionModel/AutoCombine.js +21 -0
  123. package/lib/modules/ai-question/components/QuestionModel/Header.js +5 -8
  124. package/lib/modules/ai-question/components/QuestionModel/Interactive.d.ts +6 -0
  125. package/lib/modules/ai-question/components/QuestionModel/Interactive.js +31 -0
  126. package/lib/modules/ai-question/components/QuestionModel/Item.d.ts +2 -2
  127. package/lib/modules/ai-question/components/QuestionModel/Item.js +9 -4
  128. package/lib/modules/ai-question/components/QuestionModel/List.js +30 -8
  129. package/lib/modules/ai-question/components/QuestionModel/index.js +5 -1
  130. package/lib/modules/ai-question/components/QuestionModel/interface.d.ts +7 -0
  131. package/lib/modules/ai-question/components/QuestionPreview/index.js +1 -1
  132. package/lib/modules/ai-question/components/QuestionPreview/styled.d.ts +1 -1
  133. package/lib/modules/ai-question/components/QuestionTemplate/AiEvaluation.js +12 -7
  134. package/lib/modules/ai-question/components/QuestionTemplate/index.d.ts +2 -1
  135. package/lib/modules/ai-question/components/QuestionTemplate/index.js +10 -5
  136. package/lib/modules/ai-question/components/QuestionTemplate/interface.d.ts +10 -0
  137. package/lib/modules/ai-question/components/QuestionUpdate/Form.d.ts +2 -2
  138. package/lib/modules/ai-question/components/QuestionUpdate/Form.js +42 -8
  139. package/lib/modules/ai-question/components/QuestionUpdate/RandomQuestion.d.ts +4 -0
  140. package/lib/modules/ai-question/components/QuestionUpdate/RandomQuestion.js +63 -0
  141. package/lib/modules/ai-question/components/QuestionUpdate/SelectQuestion.d.ts +8 -0
  142. package/lib/modules/ai-question/components/QuestionUpdate/SelectQuestion.js +64 -0
  143. package/lib/modules/ai-question/components/QuestionUpdate/VideoVoice.d.ts +2 -2
  144. package/lib/modules/ai-question/components/QuestionUpdate/VideoVoice.js +36 -47
  145. package/lib/modules/ai-question/components/QuestionUpdate/VideoVoicePreview.d.ts +6 -0
  146. package/lib/modules/ai-question/components/QuestionUpdate/VideoVoicePreview.js +49 -0
  147. package/lib/modules/ai-question/components/QuestionUpdate/VideoVoiceUploader.d.ts +7 -0
  148. package/lib/modules/ai-question/components/QuestionUpdate/VideoVoiceUploader.js +62 -0
  149. package/lib/modules/ai-question/components/QuestionUpdate/const.js +1 -0
  150. package/lib/modules/ai-question/components/QuestionUpdate/index.js +9 -6
  151. package/lib/modules/ai-question/components/QuestionUpdate/interface.d.ts +12 -0
  152. package/lib/modules/ai-question/components/QuestionUpdate/styled.d.ts +6 -0
  153. package/lib/modules/ai-question/components/QuestionUpdate/styled.js +55 -0
  154. package/lib/modules/ai-question/index.js +3 -5
  155. package/lib/modules/ai-question/interface.d.ts +17 -0
  156. package/lib/modules/ai-question/useAiQuestion.d.ts +1 -0
  157. package/lib/modules/ai-report/components/ScoreReport/styled.d.ts +3 -3
  158. package/lib/modules/ai-report/components/VideoQuestion/styled.d.ts +2 -2
  159. package/lib/modules/ai-report/components/WorkPlaces/styled.d.ts +2 -2
  160. package/lib/modules/ai-template/components/TemplateList/styled.d.ts +3 -3
  161. package/lib/modules/ai-template/components/TemplateMenu/styled.d.ts +1 -1
  162. package/lib/services/ai-ability.d.ts +1 -0
  163. package/lib/services/ai-ability.js +4 -1
  164. package/lib/services/ai-question.d.ts +2 -1
  165. package/lib/services/ai-question.js +5 -2
  166. package/lib/store/ai-ability-select/question-ability-store.d.ts +21 -0
  167. package/lib/store/ai-ability-select/question-ability-store.js +24 -0
  168. package/lib/store/ai-question/ai-analysis-store.d.ts +2 -2
  169. package/lib/store/ai-question/boot-video-store.js +7 -2
  170. package/lib/store/ai-question/global-store.d.ts +3 -0
  171. package/lib/store/ai-question/global-store.js +1 -0
  172. package/lib/store/ai-question/interview-room-store.d.ts +17 -0
  173. package/lib/store/ai-question/interview-room-store.js +27 -0
  174. package/lib/store/ai-question/question-model-store.d.ts +3 -0
  175. package/lib/store/ai-question/question-model-store.js +5 -3
  176. package/lib/store/ai-question/question-template-store.js +1 -1
  177. package/lib/store/enterprise/enterprise-store.d.ts +29 -0
  178. package/lib/store/enterprise/enterprise-store.js +16 -0
  179. package/package.json +1 -1
@@ -46,6 +46,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
46
46
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
47
  }
48
48
  };
49
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
50
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
51
+ if (ar || !(i in from)) {
52
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
53
+ ar[i] = from[i];
54
+ }
55
+ }
56
+ return to.concat(ar || Array.prototype.slice.call(from));
57
+ };
49
58
  var __importDefault = (this && this.__importDefault) || function (mod) {
50
59
  return (mod && mod.__esModule) ? mod : { "default": mod };
51
60
  };
@@ -53,17 +62,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
53
62
  var jsx_runtime_1 = require("react/jsx-runtime");
54
63
  var AiAnalysis_1 = __importDefault(require("../AiAnalysis"));
55
64
  var const_1 = require("./const");
65
+ var RandomQuestion_1 = __importDefault(require("./RandomQuestion"));
56
66
  var VideoVoice_1 = __importDefault(require("./VideoVoice"));
57
- var question_ability_store_1 = require("../../../../store/ai-ability/question-ability-store");
67
+ var question_ability_store_1 = require("../../../../store/ai-ability-select/question-ability-store");
68
+ var enterprise_store_1 = require("../../../../store/enterprise/enterprise-store");
58
69
  var ai_question_1 = require("../../../../enum/ai-question");
59
70
  var ai_ability_1 = require("../../../../services/ai-ability");
60
71
  var ahooks_1 = require("ahooks");
61
72
  var fbm_ui_1 = require("fbm-ui");
73
+ var mui_1 = require("fbm-ui/lib/mui");
74
+ var formik_1 = require("formik");
62
75
  var react_1 = require("react");
63
76
  var QuestionForm = (0, react_1.forwardRef)(function (props, ref) {
64
77
  var aiShowType = props.aiShowType, initialValues = props.initialValues, values = props.values, preview = props.preview, onValuesChange = props.onValuesChange, onSubmit = props.onSubmit, onCategoryChange = props.onCategoryChange;
65
- var _a = (0, question_ability_store_1.useQuestionCollectionListStore)(function (store) { return [store.questionCollectionList]; }), questionCollectionList = _a.questionCollectionList, updateQuestionCollectionList = _a.updateQuestionCollectionList;
66
- var data = (0, ahooks_1.useRequest)(ai_ability_1.PostQuestionCollectionList, { manual: preview }).data;
78
+ var _a = (0, question_ability_store_1.useAiAbilityListStore)(), aiAbilityList = _a.aiAbilityList, setSpecialAiAbilityList = _a.setSpecialAiAbilityList;
79
+ var _b = (0, enterprise_store_1.useEnterpriseStore)().enterprise, jobToken = _b.jobToken, thirdToken = _b.thirdToken;
80
+ var data = (0, ahooks_1.useRequest)(function () { return (0, ai_ability_1.GetAiAbilityList)({ jobToken: jobToken, thirdToken: thirdToken }); }, {
81
+ refreshDeps: [jobToken, thirdToken],
82
+ manual: preview,
83
+ }).data;
84
+ (0, react_1.useEffect)(function () {
85
+ setSpecialAiAbilityList((data === null || data === void 0 ? void 0 : data.data.list) || []);
86
+ // eslint-disable-next-line react-hooks/exhaustive-deps
87
+ }, [data]);
67
88
  var form = (0, fbm_ui_1.useForm)({
68
89
  initialValues: initialValues,
69
90
  onSubmit: function (values) { return __awaiter(void 0, void 0, void 0, function () {
@@ -78,7 +99,7 @@ var QuestionForm = (0, react_1.forwardRef)(function (props, ref) {
78
99
  });
79
100
  }); },
80
101
  });
81
- var handleCategoryChange = function (e, value) {
102
+ var handleCategoryChange = function (_, value) {
82
103
  onCategoryChange === null || onCategoryChange === void 0 ? void 0 : onCategoryChange(value);
83
104
  };
84
105
  var handleMinResponseDurationChange = function (e) {
@@ -104,14 +125,14 @@ var QuestionForm = (0, react_1.forwardRef)(function (props, ref) {
104
125
  }); });
105
126
  (0, react_1.useEffect)(function () {
106
127
  values && form.setValues(values);
107
- updateQuestionCollectionList((data === null || data === void 0 ? void 0 : data.data.list) || []);
128
+ // updateQuestionCollectionList(data?.data.list || []);
108
129
  // eslint-disable-next-line react-hooks/exhaustive-deps
109
130
  }, [values, data]);
110
131
  (0, react_1.useEffect)(function () {
111
132
  // console.log(form.values);
112
133
  onValuesChange === null || onValuesChange === void 0 ? void 0 : onValuesChange(form.values);
113
134
  }, [form.values, onValuesChange]);
114
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(fbm_ui_1.Form, __assign({}, form, { children: [(0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, { required: true, disabled: preview, name: "name", label: "\u6807\u9898", placeholder: "\u6807\u9898\uFF08\u7528\u4E8E\u7CFB\u7EDF\u7BA1\u7406\uFF09", max: 15 }), (0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ display: "flex" }, { children: [!preview && aiShowType === ai_question_1.ADD_QUESTION_TYPE.FREE && ((0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, __assign({ sx: { flex: '1 0', mr: 1 }, required: true, disabled: preview, name: "broadcastType", label: "\u64AD\u62A5\u65B9\u5F0F" }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Select, { placeholder: "\u64AD\u62A5\u65B9\u5F0F", options: const_1.broadcastModeOptions }) }))), !preview && ((0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, __assign({ style: { flex: '1 0' }, disabled: preview, name: "category", label: "\u8003\u5BDF\u80FD\u529B" }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Autocomplete, { placeholder: "\u8003\u5BDF\u80FD\u529B", options: questionCollectionList.map(function (_a) {
135
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(fbm_ui_1.Form, __assign({}, form, { children: [(0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, { required: true, disabled: preview, name: "name", label: "\u6807\u9898", placeholder: "\u6807\u9898\uFF08\u7528\u4E8E\u7CFB\u7EDF\u7BA1\u7406\uFF09", max: 15 }), (0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ display: "flex" }, { children: [!preview && aiShowType === ai_question_1.ADD_QUESTION_TYPE.FREE && ((0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, __assign({ sx: { flex: '1 0', mr: 1 }, required: true, disabled: preview, name: "broadcastType", label: "\u64AD\u62A5\u65B9\u5F0F" }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Select, { placeholder: "\u64AD\u62A5\u65B9\u5F0F", options: const_1.broadcastModeOptions }) }))), !preview && ((0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, __assign({ style: { flex: '1 0' }, disabled: preview, name: "category", label: "\u8003\u5BDF\u80FD\u529B" }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Autocomplete, { placeholder: "\u8003\u5BDF\u80FD\u529B", options: aiAbilityList.map(function (_a) {
115
136
  var tag = _a.tag, token = _a.token, isWorkplace = _a.isWorkplace, define = _a.define, type = _a.type;
116
137
  return ({
117
138
  label: tag,
@@ -123,12 +144,25 @@ var QuestionForm = (0, react_1.forwardRef)(function (props, ref) {
123
144
  define: define,
124
145
  isWorkplace: isWorkplace,
125
146
  });
126
- }), onChange: handleCategoryChange }) })))] })), form.values.broadcastType === 1 || preview ? ((0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, { required: true, disabled: preview, name: "desc", label: "\u9762\u8BD5\u5185\u5BB9", max: 300, placeholder: "\u9762\u8BD5\u5185\u5BB9\uFF08\u7CFB\u7EDF\u5C06\u6839\u636E\u6B64\u5185\u5BB9\u5411\u5019\u9009\u4EBA\u8FDB\u884C\u8BED\u97F3\u64AD\u62A5\uFF09" })) : ((0, jsx_runtime_1.jsx)(VideoVoice_1.default, {})), aiShowType === ai_question_1.ADD_QUESTION_TYPE.LANGUAGE && ((0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, { sx: { height: 'auto', mb: 2 }, required: true, name: "readText", label: "\u6717\u8BFB\u5185\u5BB9", max: 240, InputProps: {
147
+ }), onChange: handleCategoryChange }) })))] })), (form === null || form === void 0 ? void 0 : form.values.broadcastType) === 1 || preview ? ((0, jsx_runtime_1.jsx)(formik_1.FieldArray, { name: "questions", render: function () {
148
+ var _a;
149
+ return (_a = form.values.questions) === null || _a === void 0 ? void 0 : _a.map(function (_, index) { return ((0, jsx_runtime_1.jsxs)(mui_1.Stack, __assign({ direction: "row", justifyContent: "space-between", spacing: 1 }, { children: [(0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, { required: true, name: "questions.".concat(index, ".content"), label: "\u9762\u8BD5\u5185\u5BB9", max: 300, placeholder: "\u9762\u8BD5\u5185\u5BB9\uFF08\u7CFB\u7EDF\u5C06\u6839\u636E\u6B64\u5185\u5BB9\u5411\u5019\u9009\u4EBA\u8FDB\u884C\u8BED\u97F3\u64AD\u62A5\uFF09", InputProps: {
150
+ rows: 3,
151
+ multiline: true,
152
+ sx: { padding: 0 },
153
+ }, sx: { flexGrow: 1, height: 120 } }), form.values.questions.length > 1 && ((0, jsx_runtime_1.jsx)(fbm_ui_1.Box, __assign({ height: 84, pt: 1 }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.IconButton, __assign({ size: "small", onClick: function () {
154
+ form.setValues(__assign(__assign({}, form.values), { questions: __spreadArray([], form.values.questions.filter(function (_, i) { return i !== index; }), true) }));
155
+ } }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.CloseIcon, {}) })) })))] }), index)); });
156
+ } })) : ((0, jsx_runtime_1.jsx)(VideoVoice_1.default, {})), !preview && aiShowType === ai_question_1.ADD_QUESTION_TYPE.FREE && ((0, jsx_runtime_1.jsx)(RandomQuestion_1.default, { category: aiAbilityList === null || aiAbilityList === void 0 ? void 0 : aiAbilityList.find(function (v) { var _a; return v.name === ((_a = form.values.category) === null || _a === void 0 ? void 0 : _a.value); }), broadcastType: form.values.broadcastType, onAddCustonQuestion: function () {
157
+ form.setValues(__assign(__assign({}, form.values), { questions: __spreadArray(__spreadArray([], form.values.questions, true), [{ content: '', videoUrl: '' }], false) }));
158
+ }, onAddRandomQuestion: function (qs) {
159
+ form.setValues(__assign(__assign({}, form.values), { questions: __spreadArray(__spreadArray([], form.values.questions, true), qs.map(function (v) { return ({ content: v, videoUrl: '' }); }), true) }));
160
+ } })), aiShowType === ai_question_1.ADD_QUESTION_TYPE.LANGUAGE && ((0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, { sx: { height: 'auto', mb: 2 }, required: true, name: "readText", label: "\u6717\u8BFB\u5185\u5BB9", max: 240, InputProps: {
127
161
  rows: 3,
128
162
  multiline: true,
129
163
  placeholder: '朗读内容(候选人将根据此内容进行朗读)',
130
164
  sx: { padding: 0 },
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",
165
+ } })), (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", disabled: preview,
132
166
  // rules={[
133
167
  // e => {
134
168
  // if (!/^[1-9]\d*$/.test(e.value)) {
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { RandomQuestionProps } from './interface';
3
+ declare const RandomQuestion: React.FC<RandomQuestionProps>;
4
+ export default RandomQuestion;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var jsx_runtime_1 = require("react/jsx-runtime");
18
+ var SelectQuestion_1 = __importDefault(require("./SelectQuestion"));
19
+ var question_update_store_1 = require("../../../../store/ai-question/question-update-store");
20
+ var fbm_ui_1 = require("fbm-ui");
21
+ var mui_1 = require("fbm-ui/lib/mui");
22
+ var mui_2 = require("fbm-ui/lib/mui");
23
+ var react_1 = require("react");
24
+ var RandomQuestion = function (_a) {
25
+ var _b, _c;
26
+ var broadcastType = _a.broadcastType, onAddCustonQuestion = _a.onAddCustonQuestion, onAddRandomQuestion = _a.onAddRandomQuestion, category = _a.category;
27
+ var _d = (0, question_update_store_1.useUpdateQuestionStore)(function (store) { return [store.questionState]; }), questionState = _d.questionState, updateQuestionState = _d.updateQuestionState;
28
+ var _e = (0, react_1.useState)(false), open = _e[0], setOpen = _e[1];
29
+ var item = questionState.item;
30
+ var actions = [
31
+ {
32
+ text: (0, jsx_runtime_1.jsx)(mui_1.Typography, __assign({ width: 108 }, { children: "\u5FEB\u901F\u9009\u9898" })),
33
+ onClick: function (_a) {
34
+ var handleClose = _a.handleClose;
35
+ handleClose();
36
+ if (!(category === null || category === void 0 ? void 0 : category.token)) {
37
+ fbm_ui_1.Message.error('题目未选择考察能力,不可快速选题');
38
+ }
39
+ else {
40
+ setOpen(true);
41
+ }
42
+ },
43
+ },
44
+ {
45
+ text: (0, jsx_runtime_1.jsx)(mui_1.Typography, __assign({ width: 108 }, { children: "\u81EA\u5B9A\u4E49" })),
46
+ onClick: function (_a) {
47
+ var handleClose = _a.handleClose;
48
+ handleClose();
49
+ onAddCustonQuestion === null || onAddCustonQuestion === void 0 ? void 0 : onAddCustonQuestion();
50
+ },
51
+ },
52
+ ];
53
+ var isVideoBroadcast = broadcastType === 2;
54
+ var desc = isVideoBroadcast ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["1. \u89C6\u9891\u5EFA\u8BAE\u7AD6\u7248\uFF0C\u6BD4\u4F8B9\uFF1A16\uFF0C\u683C\u5F0F.mp4\uFF1B\u5019\u9009\u4EBA\u53EF\u91CD\u590D\u542C\u9898\uFF0C\u4F46\u5355\u9898 \u6700\u591A\u91CD\u590D3\u6B21\u3002", (0, jsx_runtime_1.jsx)("br", {}), "2. \u5F53\u9762\u8BD5\u95F4\u4EA4\u4E92\u65B9\u5F0F\u662FAI\u9762\u8BD5\u5B98\u5BF9\u8BDD\u6A21\u5F0F\u65F6\uFF0C\u5019\u9009\u4EBA\u9762\u8BD5\u65F6\u5C06\u81EA\u52A8\u628A \u9898\u76EE\u7684\u64AD\u62A5\u65B9\u5F0F\u53D8\u6362\u4E3AAI\u8BED\u97F3\u64AD\u62A5\u65B9\u5F0F", (0, jsx_runtime_1.jsx)("br", {}), "3.\u6BCF\u4F4D\u5019\u9009\u4EBA\u968F\u673A1\u9898\uFF0C\u6700\u591A5\u4E2A\u9009\u9879\u3002"] })) : ('每位候选人随机1题,最多5个选项。');
55
+ var handleVideoBroadcastChange = function (key, checked) {
56
+ var _a;
57
+ updateQuestionState({
58
+ item: __assign(__assign({}, item), { videoBroadcast: __assign(__assign({}, item === null || item === void 0 ? void 0 : item.videoBroadcast), (_a = {}, _a[key] = checked ? 1 : 2, _a)) }),
59
+ });
60
+ };
61
+ return ((0, jsx_runtime_1.jsxs)(fbm_ui_1.Layout, { children: [(0, jsx_runtime_1.jsxs)(mui_2.Stack, __assign({ spacing: 2, mb: 1, direction: "row", alignItems: "center", justifyContent: "space-between", mt: 0.375 }, { children: [(0, jsx_runtime_1.jsxs)(mui_2.Stack, __assign({ spacing: 1, direction: "row", alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(fbm_ui_1.Popactions, __assign({ actions: actions, trigger: "click", isClickAway: true, sx: { height: 1 } }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Button, __assign({ variant: "outlined", color: "inherit", icon: (0, jsx_runtime_1.jsx)(fbm_ui_1.AddIcon, {}) }, { children: "\u968F\u673A\u9762\u8BD5\u5185\u5BB9" })) })), (0, jsx_runtime_1.jsx)(fbm_ui_1.Tooltip, __assign({ title: desc, placement: "bottom-start" }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Box, __assign({ display: "flex", alignItems: "center", sx: { ml: 1, height: 48 } }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.InfoIcon, { sx: { color: 'rgba(0, 0, 0, 0.26)', fontSize: 16 } }) })) }))] })), (0, jsx_runtime_1.jsx)(mui_2.Stack, __assign({ spacing: 1, direction: "row", alignItems: "center", mb: 2 }, { children: isVideoBroadcast && ((0, jsx_runtime_1.jsx)(mui_1.FormGroup, { children: (0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ display: "flex" }, { children: [(0, jsx_runtime_1.jsx)(mui_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(mui_1.Checkbox, { checked: ((_b = item === null || item === void 0 ? void 0 : item.videoBroadcast) === null || _b === void 0 ? void 0 : _b.videoRetry) === 1 }), label: (0, jsx_runtime_1.jsx)(mui_1.Typography, __assign({ variant: "body2" }, { children: "\u5141\u8BB8\u91CD\u590D\u542C\u9898" })), onChange: function (e, checked) { return handleVideoBroadcastChange('videoRetry', checked); } }), (0, jsx_runtime_1.jsx)(mui_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(mui_1.Checkbox, { checked: ((_c = item === null || item === void 0 ? void 0 : item.videoBroadcast) === null || _c === void 0 ? void 0 : _c.videoSkip) === 1 }), label: (0, jsx_runtime_1.jsx)(mui_1.Typography, __assign({ variant: "body2" }, { children: "\u5141\u8BB8\u8DF3\u8FC7" })), onChange: function (e, checked) { return handleVideoBroadcastChange('videoSkip', checked); } })] })) })) }))] })), open && (0, jsx_runtime_1.jsx)(SelectQuestion_1.default, { token: category === null || category === void 0 ? void 0 : category.token, open: open, onClose: function () { return setOpen(false); }, onOk: onAddRandomQuestion })] }));
62
+ };
63
+ exports.default = RandomQuestion;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ declare const SelectQuestion: ({ token, open, onClose, onOk }: {
3
+ token: any;
4
+ open: any;
5
+ onClose: any;
6
+ onOk: any;
7
+ }) => JSX.Element;
8
+ export default SelectQuestion;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
+ if (ar || !(i in from)) {
16
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
+ ar[i] = from[i];
18
+ }
19
+ }
20
+ return to.concat(ar || Array.prototype.slice.call(from));
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ var jsx_runtime_1 = require("react/jsx-runtime");
24
+ var question_template_store_1 = require("../../../../store/ai-question/question-template-store");
25
+ var fbm_ui_1 = require("fbm-ui");
26
+ var mui_1 = require("fbm-ui/lib/mui");
27
+ var react_1 = require("react");
28
+ var formatQuestion = function (questions) { return questions === null || questions === void 0 ? void 0 : questions.map(function (v) { return v.content; }).join('\n'); };
29
+ var SelectQuestion = function (_a) {
30
+ var token = _a.token, open = _a.open, onClose = _a.onClose, onOk = _a.onOk;
31
+ var aiEvaluationData = (0, question_template_store_1.useQuestionTemplateStore)(function (store) { return [store.aiEvaluationData]; }).aiEvaluationData;
32
+ var _b = (0, react_1.useState)([]), questions = _b[0], setQuestions = _b[1];
33
+ var handleChange = function (q, checked) {
34
+ if (checked) {
35
+ setQuestions(__spreadArray(__spreadArray([], questions, true), [q], false));
36
+ }
37
+ else {
38
+ setQuestions(questions.filter(function (v) { return v.token !== q.token; }));
39
+ }
40
+ };
41
+ return ((0, jsx_runtime_1.jsx)(fbm_ui_1.Dialog, __assign({ open: open, title: "\u5FEB\u901F\u9009\u9898", size: "sm", onClose: onClose, onOk: function () {
42
+ onOk(questions.map(function (v) { return formatQuestion(v.questions); }));
43
+ onClose();
44
+ } }, { children: (0, jsx_runtime_1.jsx)(mui_1.Stack, { children: aiEvaluationData.map(function (item) {
45
+ var _a;
46
+ return (_a = item.list
47
+ .find(function (v) { return v.token === token; })) === null || _a === void 0 ? void 0 : _a.list.map(function (q) {
48
+ return ((0, jsx_runtime_1.jsx)(fbm_ui_1.Checkbox
49
+ // @ts-ignore
50
+ , {
51
+ // @ts-ignore
52
+ sx: {
53
+ alignItems: 'flex-start',
54
+ '& .MuiCheckbox-root': {},
55
+ '& .MuiTypography-root': {
56
+ pt: 0.75,
57
+ },
58
+ }, label: formatQuestion(q.questions), onChange: function (_, checked) {
59
+ handleChange(q, checked);
60
+ } }, q.token));
61
+ });
62
+ }) }) })));
63
+ };
64
+ exports.default = SelectQuestion;
@@ -1,3 +1,3 @@
1
- import { FC } from 'react';
2
- declare const VideoVoice: FC;
1
+ /// <reference types="react" />
2
+ declare const VideoVoice: React.FC;
3
3
  export default VideoVoice;
@@ -10,57 +10,46 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
+ if (ar || !(i in from)) {
16
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
+ ar[i] = from[i];
18
+ }
19
+ }
20
+ return to.concat(ar || Array.prototype.slice.call(from));
21
+ };
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
13
25
  Object.defineProperty(exports, "__esModule", { value: true });
14
26
  var jsx_runtime_1 = require("react/jsx-runtime");
27
+ var VideoVoicePreview_1 = __importDefault(require("./VideoVoicePreview"));
28
+ var VideoVoiceUploader_1 = __importDefault(require("./VideoVoiceUploader"));
15
29
  var fbm_ui_1 = require("fbm-ui");
16
30
  var mui_1 = require("fbm-ui/lib/mui");
17
- var ahooks_1 = require("ahooks");
18
- var ai_question_1 = require("../../../../services/ai-question");
19
- var question_update_store_1 = require("../../../../store/ai-question/question-update-store");
20
- var utils_1 = require("../../../../utils/utils");
31
+ var formik_1 = require("formik");
21
32
  var VideoVoice = function () {
22
- var _a, _b, _c, _d, _e;
23
- var _f = (0, question_update_store_1.useUpdateQuestionStore)(function (store) { return [store.questionState]; }), questionState = _f.questionState, updateQuestionState = _f.updateQuestionState;
24
- var item = questionState.item;
25
- var _g = (0, ahooks_1.useRequest)(ai_question_1.PostCommonUpload, {
26
- manual: true,
27
- onSuccess: function (_a) {
28
- var data = _a.data;
29
- var firstData = data[0];
30
- updateQuestionState({
31
- item: __assign(__assign({}, item), { videoBroadcast: __assign(__assign({}, item === null || item === void 0 ? void 0 : item.videoBroadcast), { videoUrl: firstData.url }) }),
32
- });
33
- },
34
- }), loading = _g.loading, postCommonUpload = _g.run;
35
- var handleVideoBroadcastChange = function (key, checked) {
36
- var _a;
37
- updateQuestionState({
38
- item: __assign(__assign({}, item), { videoBroadcast: __assign(__assign({}, item === null || item === void 0 ? void 0 : item.videoBroadcast), (_a = {}, _a[key] = checked ? 1 : 2, _a)) }),
39
- });
40
- };
41
- var uploadProps = {
42
- type: 'custom',
43
- showUploadList: false,
44
- accept: '.mp4',
45
- maxCount: 1,
46
- customRequest: function (_a) {
47
- var file = _a.file;
48
- console.log(file);
49
- if ((0, utils_1.isExceedMaxVideoFileSize)(file.size)) {
50
- fbm_ui_1.Message.error('视频大小超过500M,请重新上传!');
51
- }
52
- else {
53
- var formData = new FormData();
54
- formData.append('files', file);
55
- postCommonUpload(formData);
56
- }
57
- },
58
- };
59
- return ((0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ display: "flex", mb: 3 }, { children: [(0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ width: 168, mr: 2, textAlign: "center" }, { children: [(0, jsx_runtime_1.jsx)("video", { style: { width: '100%', height: 292, backgroundColor: 'rgb(222, 222, 222)' }, src: (_a = item === null || item === void 0 ? void 0 : item.videoBroadcast) === null || _a === void 0 ? void 0 : _a.videoUrl, controls: !!((_b = item === null || item === void 0 ? void 0 : item.videoBroadcast) === null || _b === void 0 ? void 0 : _b.videoUrl) }), (0, jsx_runtime_1.jsx)(fbm_ui_1.Upload, __assign({}, uploadProps, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Button, __assign({ variant: "outlined", color: "inherit", icon: (0, jsx_runtime_1.jsx)(fbm_ui_1.UploadIcon, {}), loading: loading }, { children: ((_c = item === null || item === void 0 ? void 0 : item.videoBroadcast) === null || _c === void 0 ? void 0 : _c.videoUrl) ? '重新上传' : '上传视频' })) }))] })), (0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ flex: "1 0" }, { children: [(0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, { required: true, name: "desc", label: "\u9762\u8BD5\u5185\u5BB9", max: 300, InputProps: {
60
- rows: 5,
61
- multiline: true,
62
- placeholder: '面试内容(系统将根据此内容向候选人进行语音播报)',
63
- sx: { padding: 0 },
64
- } }), (0, jsx_runtime_1.jsx)(mui_1.FormGroup, __assign({ sx: { mt: 9 } }, { children: (0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ display: "flex" }, { children: [(0, jsx_runtime_1.jsx)(mui_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(mui_1.Checkbox, { checked: ((_d = item === null || item === void 0 ? void 0 : item.videoBroadcast) === null || _d === void 0 ? void 0 : _d.videoRetry) === 1 }), label: (0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ variant: "body2" }, { children: "\u5141\u8BB8\u91CD\u590D\u542C\u9898" })), onChange: function (e, checked) { return handleVideoBroadcastChange('videoRetry', checked); } }), (0, jsx_runtime_1.jsx)(mui_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(mui_1.Checkbox, { checked: ((_e = item === null || item === void 0 ? void 0 : item.videoBroadcast) === null || _e === void 0 ? void 0 : _e.videoSkip) === 1 }), label: (0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ variant: "body2" }, { children: "\u5141\u8BB8\u8DF3\u8FC7" })), onChange: function (e, checked) { return handleVideoBroadcastChange('videoSkip', checked); } })] })) })), (0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ fontSize: 12, variant: "body2", sx: { mb: 1 } }, { children: "\u89C6\u9891\u8BED\u97F3\u64AD\u62A5\u8BF4\u660E\uFF1A" })), (0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ fontSize: 12, variant: "body2", color: "secondary" }, { children: "1.\u89C6\u9891\u7D20\u6750\u5C3A\u5BF8\u5EFA\u8BAE\u4E3A\u7AD6\u7248\uFF0C\u6BD4\u4F8B\u63A7\u5236\u57289\uFF1A16 \uFF0C\u683C\u5F0F\u9650\u4E8E.mp4" })), (0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ fontSize: 12, variant: "body2", color: "secondary" }, { children: "2.\u89C6\u9891\u8BED\u97F3\u64AD\u62A5\u8FC7\u7A0B\u4E2D\uFF0C\u9762\u8BD5\u5185\u5BB9\u5C06\u4E0D\u8FDB\u884CAI\u8BED\u97F3\u64AD\u62A5\u5904\u7406" })), (0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ fontSize: 12, variant: "body2", color: "secondary" }, { children: "3.\u5982\u5141\u8BB8\u5019\u9009\u4EBA\u91CD\u590D\u542C\u9898\uFF0C\u5355\u9898\u5168\u7A0B\u91CD\u590D\u6B21\u6570\u4E3A3\u6B21\u3002" }))] }))] })));
33
+ return ((0, jsx_runtime_1.jsx)(formik_1.FieldArray, { name: "questions", render: function (_a) {
34
+ var _b;
35
+ var form = _a.form;
36
+ return (_b = form.values.questions) === null || _b === void 0 ? void 0 : _b.map(function (q, index) { return ((0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ display: "flex", mb: 3 }, { children: [(0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ width: 96, height: 96, mr: 2, textAlign: "center", overflow: "hidden", sx: {
37
+ borderRadius: 2,
38
+ border: '1px dashed rgba(0,0,0, 0.08)',
39
+ } }, { children: [q.videoUrl && ((0, jsx_runtime_1.jsx)(VideoVoicePreview_1.default, { onDel: function () {
40
+ var questons = __spreadArray([], form.values.questions, true);
41
+ questons[index] = __assign(__assign({}, questons[index]), { videoUrl: '' });
42
+ form.setValues(__assign(__assign({}, form.values), { questions: __spreadArray([], questons, true) }));
43
+ }, videoUrl: q.videoUrl })), (0, jsx_runtime_1.jsx)(VideoVoiceUploader_1.default, { index: index, questions: form.values.questions, setQuestions: function (qs) {
44
+ form.setValues(__assign(__assign({}, form.values), { questions: __spreadArray([], qs, true) }));
45
+ } })] })), (0, jsx_runtime_1.jsxs)(mui_1.Stack, __assign({ flexGrow: 1, direction: "row", justifyContent: "space-between", spacing: 1 }, { children: [(0, jsx_runtime_1.jsx)(fbm_ui_1.FormItem, { required: true, name: "questions.".concat(index, ".content"), label: "\u9762\u8BD5\u5185\u5BB9", max: 300, placeholder: "\u9762\u8BD5\u5185\u5BB9\uFF08\u7CFB\u7EDF\u5C06\u6839\u636E\u6B64\u5185\u5BB9\u5411\u5019\u9009\u4EBA\u8FDB\u884C\u8BED\u97F3\u64AD\u62A5\uFF09", InputProps: {
46
+ rows: 3,
47
+ multiline: true,
48
+ placeholder: '面试内容(系统将根据此内容向候选人进行语音播报)',
49
+ sx: { padding: 0 },
50
+ }, sx: { flexGrow: 1 } }), form.values.questions.length > 1 && ((0, jsx_runtime_1.jsx)(fbm_ui_1.Box, __assign({ height: 84, pt: 1 }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.IconButton, __assign({ size: "small", onClick: function () {
51
+ form.setValues(__assign(__assign({}, form.values), { questions: __spreadArray([], form.values.questions.filter(function (_, i) { return i !== index; }), true) }));
52
+ } }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.CloseIcon, {}) })) })))] }))] }), index)); });
53
+ } }));
65
54
  };
66
55
  exports.default = VideoVoice;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ declare const VideoVoicePreview: ({ videoUrl, onDel }: {
3
+ videoUrl: any;
4
+ onDel: any;
5
+ }) => JSX.Element;
6
+ export default VideoVoicePreview;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ var jsx_runtime_1 = require("react/jsx-runtime");
15
+ var styled_1 = require("./styled");
16
+ var fbm_ui_1 = require("fbm-ui");
17
+ var mui_1 = require("fbm-ui/lib/mui");
18
+ var react_1 = require("react");
19
+ var VideoVoicePreview = function (_a) {
20
+ var videoUrl = _a.videoUrl, onDel = _a.onDel;
21
+ var videoRef = (0, react_1.useRef)(null);
22
+ var handlePlay = function () {
23
+ if (videoRef.current) {
24
+ videoRef.current.play();
25
+ videoRef.current.requestFullscreen();
26
+ videoRef.current.style.objectFit = 'contain';
27
+ }
28
+ };
29
+ var handleDel = onDel;
30
+ (0, react_1.useEffect)(function () {
31
+ var currentVideoRef = videoRef.current;
32
+ if (currentVideoRef) {
33
+ currentVideoRef.addEventListener('fullscreenchange', function () {
34
+ if (!document.fullscreenElement) {
35
+ currentVideoRef.pause();
36
+ if (currentVideoRef)
37
+ currentVideoRef.style.objectFit = 'cover';
38
+ }
39
+ });
40
+ }
41
+ return function () {
42
+ if (currentVideoRef) {
43
+ currentVideoRef.removeEventListener('fullscreenchange', function () { });
44
+ }
45
+ };
46
+ }, []);
47
+ return ((0, jsx_runtime_1.jsxs)(styled_1.VideoPreviewWrapper, { children: [(0, jsx_runtime_1.jsx)(styled_1.VideoPreview, { src: videoUrl, ref: videoRef }), (0, jsx_runtime_1.jsx)(styled_1.VideoPreviewMask, __assign({ className: "video-preview" }, { children: (0, jsx_runtime_1.jsxs)(mui_1.Stack, __assign({ direction: "row", justifyContent: "space-around", alignItems: "center", height: "100%" }, { children: [(0, jsx_runtime_1.jsx)(fbm_ui_1.IconButton, __assign({ color: "inherit", onClick: handlePlay }, { children: (0, jsx_runtime_1.jsx)("img", { src: "//webcdn.fbmms.cn/assets/mPfO/oPs2dSpKQW5Rw-cOavSwz", alt: "", width: 24, height: 24 }) })), (0, jsx_runtime_1.jsx)(fbm_ui_1.Divider, { orientation: "vertical", sx: { height: 20 } }), (0, jsx_runtime_1.jsx)(fbm_ui_1.IconButton, __assign({ color: "inherit", onClick: handleDel }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.DeleteIcon, {}) }))] })) }))] }));
48
+ };
49
+ exports.default = VideoVoicePreview;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ declare const VideoVoiceUploader: ({ index, questions, setQuestions }: {
3
+ index: any;
4
+ questions: any;
5
+ setQuestions: any;
6
+ }) => JSX.Element;
7
+ export default VideoVoiceUploader;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
+ if (ar || !(i in from)) {
16
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
+ ar[i] = from[i];
18
+ }
19
+ }
20
+ return to.concat(ar || Array.prototype.slice.call(from));
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ var jsx_runtime_1 = require("react/jsx-runtime");
24
+ var ai_question_1 = require("../../../../services/ai-question");
25
+ var utils_1 = require("../../../../utils/utils");
26
+ var ahooks_1 = require("ahooks");
27
+ var fbm_ui_1 = require("fbm-ui");
28
+ var mui_1 = require("fbm-ui/lib/mui");
29
+ var VideoVoiceUploader = function (_a) {
30
+ var index = _a.index, questions = _a.questions, setQuestions = _a.setQuestions;
31
+ var _b = (0, ahooks_1.useRequest)(ai_question_1.PostCommonUpload, {
32
+ manual: true,
33
+ onSuccess: function (_a) {
34
+ var data = _a.data;
35
+ var firstData = data[0];
36
+ questions[index] = __assign(__assign({}, questions[index]), { videoUrl: firstData.url });
37
+ setQuestions(__spreadArray([], questions, true));
38
+ },
39
+ }), loading = _b.loading, postCommonUpload = _b.run;
40
+ var uploadProps = {
41
+ type: 'custom',
42
+ showUploadList: false,
43
+ accept: '.mp4',
44
+ customRequest: function (_a) {
45
+ var file = _a.file;
46
+ if ((0, utils_1.isExceedMaxVideoFileSize)(file.size)) {
47
+ fbm_ui_1.Message.error('视频大小超过500M,请重新上传!');
48
+ }
49
+ else {
50
+ var formData = new FormData();
51
+ formData.append('files', file);
52
+ postCommonUpload(formData);
53
+ }
54
+ },
55
+ };
56
+ return ((0, jsx_runtime_1.jsx)(fbm_ui_1.Upload, __assign({}, uploadProps, { children: (0, jsx_runtime_1.jsxs)(mui_1.Stack, __assign({ justifyContent: "center", alignItems: "center", color: "text.secondary", sx: {
57
+ cursor: 'pointer',
58
+ width: 94,
59
+ height: 94,
60
+ } }, { children: [!loading && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(fbm_ui_1.UploadIcon, { color: "inherit" }), (0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ variant: "caption", color: "inherit" }, { children: "\u4E0A\u4F20\u89C6\u9891" }))] })), loading && (0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ variant: "caption" }, { children: "\u4E0A\u4F20\u4E2D..." }))] })) })));
61
+ };
62
+ exports.default = VideoVoiceUploader;
@@ -10,6 +10,7 @@ exports.defaultQuestionParams = {
10
10
  answerStatus: 2,
11
11
  broadcastType: 1,
12
12
  desc: '',
13
+ questions: [{ content: '', videoUrl: '' }],
13
14
  duration: 30,
14
15
  category: undefined,
15
16
  extra: {
@@ -90,6 +90,7 @@ var QuestionUpdate = function () {
90
90
  name: item === null || item === void 0 ? void 0 : item.name,
91
91
  broadcastType: item === null || item === void 0 ? void 0 : item.broadcastType,
92
92
  desc: item === null || item === void 0 ? void 0 : item.desc,
93
+ questions: item === null || item === void 0 ? void 0 : item.questions,
93
94
  readText: (_a = item === null || item === void 0 ? void 0 : item.extra) === null || _a === void 0 ? void 0 : _a.readText,
94
95
  prepareTime: item === null || item === void 0 ? void 0 : item.prepareTime,
95
96
  duration: item === null || item === void 0 ? void 0 : item.duration,
@@ -107,8 +108,8 @@ var QuestionUpdate = function () {
107
108
  setSwitchTypeOpen(false);
108
109
  (_a = formRef === null || formRef === void 0 ? void 0 : formRef.current) === null || _a === void 0 ? void 0 : _a.setFormValues({ broadcastType: const_1.defaultQuestionParams.broadcastType });
109
110
  updateQuestionState({ aiShowType: ai_question_1.ADD_QUESTION_TYPE.LANGUAGE });
110
- } }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ variant: "body2" }, { children: "\u8DDF\u8BFB\u80FD\u529B" })) }))] }));
111
- return ((0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ display: "flex", alignItems: "center", height: 56 }, { children: [(0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ ml: 3, variant: "subtitle1" }, { children: aiShowType === ai_question_1.ADD_QUESTION_TYPE.FREE ? '自由作答' : '跟读能力' })), (0, jsx_runtime_1.jsx)(fbm_ui_1.Popover, __assign({ open: switchTypeOpen, content: content, onClickAway: function () { return setSwitchTypeOpen(false); } }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Button, __assign({ variant: "text", size: "small", sx: { fontSize: 12, color: 'rgb(87, 107, 149)' }, onClick: function () { return setSwitchTypeOpen(true); } }, { children: "\u5207\u6362\u9898\u578B" })) }))] })));
111
+ } }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ variant: "body2" }, { children: "\u6717\u8BFB\u9898" })) }))] }));
112
+ return ((0, jsx_runtime_1.jsxs)(fbm_ui_1.Box, __assign({ display: "flex", alignItems: "center", height: 56 }, { children: [(0, jsx_runtime_1.jsx)(fbm_ui_1.Typography, __assign({ ml: 3, variant: "subtitle1" }, { children: aiShowType === ai_question_1.ADD_QUESTION_TYPE.FREE ? '自由作答' : '朗读题' })), (0, jsx_runtime_1.jsx)(fbm_ui_1.Popover, __assign({ open: switchTypeOpen, content: content, onClickAway: function () { return setSwitchTypeOpen(false); } }, { children: (0, jsx_runtime_1.jsx)(fbm_ui_1.Button, __assign({ variant: "text", size: "small", sx: { fontSize: 12, color: 'rgb(87, 107, 149)' }, onClick: function () { return setSwitchTypeOpen(true); } }, { children: "\u5207\u6362\u9898\u578B" })) }))] })));
112
113
  };
113
114
  var getModelParams = (0, react_1.useCallback)(function (values, isSubmit) {
114
115
  return new Promise(function (resolve, reject) {
@@ -198,7 +199,11 @@ var QuestionUpdate = function () {
198
199
  case 0: return [4 /*yield*/, getModelParams(values, true)];
199
200
  case 1:
200
201
  _a = _c.sent(), errorIndexes = _a.errorIndexes, params = _a.params;
201
- if (values.broadcastType === 2 && !(item === null || item === void 0 ? void 0 : item.videoBroadcast.videoUrl)) {
202
+ if ((values === null || values === void 0 ? void 0 : values.questions.length) > 5) {
203
+ fbm_ui_1.Message.error('最多可添加5个面试内容。');
204
+ return [2 /*return*/, false];
205
+ }
206
+ if (values.broadcastType === 2 && !(values === null || values === void 0 ? void 0 : values.questions.every(function (v) { return v.videoUrl !== ''; }))) {
202
207
  fbm_ui_1.Message.error('请上传视频素材');
203
208
  return [2 /*return*/, false];
204
209
  }
@@ -214,9 +219,8 @@ var QuestionUpdate = function () {
214
219
  return [2 /*return*/];
215
220
  }
216
221
  });
217
- }); }, [getModelParams, item === null || item === void 0 ? void 0 : item.videoBroadcast.videoUrl, token, editModel, index, addModel, updateQuestionState]);
222
+ }); }, [getModelParams, token, editModel, index, addModel, updateQuestionState]);
218
223
  var handleWorkplaceData = (0, react_1.useCallback)(function (curSelectWorkPlace) {
219
- // console.log('curSelectWorkPlace', curSelectWorkPlace);
220
224
  var curAiAbilities = aiAbilities.slice();
221
225
  // 是否是初始化
222
226
  var inInit = true;
@@ -226,7 +230,6 @@ var QuestionUpdate = function () {
226
230
  var CurWorkPlaceAiAbility = __assign(__assign(__assign({}, curSelectWorkPlace), CurWorkplace), { abilityType: 2, weight: 0, sort: 0 });
227
231
  inInit = workplaceTypeIndex === -1;
228
232
  CurWorkPlaceAiAbility.desc = CurWorkPlaceAiAbility.define ? CurWorkPlaceAiAbility.define : CurWorkPlaceAiAbility.name;
229
- // console.log('CurWorkPlaceAiAbility', CurWorkPlaceAiAbility);
230
233
  // 添加和修改
231
234
  if (workplaceTypeIndex > -1) {
232
235
  curAiAbilities.splice(workplaceTypeIndex, 1, CurWorkPlaceAiAbility);
@@ -4,12 +4,17 @@ export interface VideoBroadcastParams {
4
4
  videoUrl?: string;
5
5
  videoSkip?: number;
6
6
  }
7
+ export interface Question {
8
+ content: string;
9
+ videoUrl: string;
10
+ }
7
11
  export interface QuestionParams {
8
12
  name: string;
9
13
  token: string;
10
14
  originToken: string;
11
15
  type: number;
12
16
  desc: string;
17
+ questions: Question[];
13
18
  prepareTime: number;
14
19
  duration: number;
15
20
  minResponseDuration?: number;
@@ -32,6 +37,7 @@ export interface SubmitModelParams {
32
37
  export interface QuestionFormValues {
33
38
  name: string;
34
39
  desc: string;
40
+ questions: Question[];
35
41
  prepareTime: number;
36
42
  duration: number;
37
43
  minResponseDuration?: number;
@@ -63,3 +69,9 @@ export interface FormRef {
63
69
  handleSubmit: () => void;
64
70
  setFormValues: (values: Partial<QuestionFormValues>) => void;
65
71
  }
72
+ export interface RandomQuestionProps {
73
+ broadcastType: number;
74
+ category: any;
75
+ onAddCustonQuestion?: () => void;
76
+ onAddRandomQuestion?: (qs: string[]) => void;
77
+ }
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ export declare const VideoPreview: import("@emotion/styled").StyledComponent<import("@mui/system/createStyled").MUIStyledCommonProps<import("@mui/material").Theme>, import("react").DetailedHTMLProps<import("react").VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, {}>;
3
+ export declare const VideoPreviewWrapper: import("@emotion/styled").StyledComponent<import("@mui/system/createStyled").MUIStyledCommonProps<import("@mui/material").Theme>, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
4
+ export declare const VideoPreviewMask: import("@emotion/styled").StyledComponent<import("@mui/system/createStyled").MUIStyledCommonProps<import("@mui/material").Theme>, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
5
+ export declare const VideoPreviewMaskContent: import("@emotion/styled").StyledComponent<import("@mui/system/createStyled").MUIStyledCommonProps<import("@mui/material").Theme>, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
6
+ export declare const VideoPreviewMaskIcon: import("@emotion/styled").StyledComponent<import("@mui/system/createStyled").MUIStyledCommonProps<import("@mui/material").Theme>, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;