|
@@ -263,6 +263,51 @@ export default {
|
|
|
},
|
|
|
},
|
|
|
methods: {
|
|
|
+ /**
|
|
|
+ * 智能识别
|
|
|
+ * @param {String} text 识别数据
|
|
|
+ */
|
|
|
+ recognition(text) {
|
|
|
+ let arr = this.recognitionCommon(text);
|
|
|
+ // 角色列表
|
|
|
+ let roleList = [];
|
|
|
+ arr.forEach((item) => {
|
|
|
+ if (!item.match(/.+[::].+/)) return;
|
|
|
+ let [role] = item.split(/[::]/);
|
|
|
+ if (!roleList.includes(role)) {
|
|
|
+ roleList.push(role);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (roleList.length < 2 || roleList.length > 5) {
|
|
|
+ return this.$message.warning('角色数不符合要求,最小为 2,最大为 5');
|
|
|
+ }
|
|
|
+ this.data.property.role_number = roleList.length;
|
|
|
+ this.data.property.role_list = roleList.map((item, i) => getRole(i, item));
|
|
|
+
|
|
|
+ this.data.option_list = [];
|
|
|
+ arr.forEach((item) => {
|
|
|
+ if (item.match(/.+[::].+/)) {
|
|
|
+ let [role, content] = item.split(/[::]/);
|
|
|
+ let { hasFill, content_list } = this.getTextContenList(content);
|
|
|
+ this.data.option_list.push({
|
|
|
+ role: this.data.property.role_list.find((item) => item.name === role).mark,
|
|
|
+ text: content,
|
|
|
+ mark: getRandomNumber(),
|
|
|
+ file_id: '',
|
|
|
+ content_list,
|
|
|
+ type: hasFill ? 'input' : 'text',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (item.match(/^-学生$/)) {
|
|
|
+ this.data.option_list.push({
|
|
|
+ mark: getRandomNumber(),
|
|
|
+ file_id: '',
|
|
|
+ type: 'input_student',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.identifyText();
|
|
|
+ },
|
|
|
// 识别
|
|
|
identifyText() {
|
|
|
let answer_list = [];
|
|
@@ -332,12 +377,30 @@ export default {
|
|
|
return this.$message.error('请先选择角色');
|
|
|
}
|
|
|
let text = this.textInput.replace(/\n/, '');
|
|
|
+
|
|
|
+ let { hasFill, content_list } = this.getTextContenList(text);
|
|
|
+ this.data.option_list.push({
|
|
|
+ role: this.curRole,
|
|
|
+ text: this.textInput.replace(/\n/, ''),
|
|
|
+ mark: getRandomNumber(),
|
|
|
+ file_id: '',
|
|
|
+ content_list,
|
|
|
+ type: hasFill ? 'input' : 'text',
|
|
|
+ });
|
|
|
+ this.textInput = '';
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 获取文本内容列表
|
|
|
+ * @param {string} text 文本
|
|
|
+ */
|
|
|
+ getTextContenList(text) {
|
|
|
+ let str = text;
|
|
|
let reg = /_{3,}/;
|
|
|
- let hasFill = reg.test(text); // 是否有填空
|
|
|
+ let hasFill = reg.test(str); // 是否有填空
|
|
|
let content_list = [];
|
|
|
if (hasFill) {
|
|
|
- text = text.replace(/(_{3,})/g, '###$1###');
|
|
|
- content_list = text
|
|
|
+ str = str.replace(/(_{3,})/g, '###$1###');
|
|
|
+ content_list = str
|
|
|
.split('###')
|
|
|
.filter((item) => item)
|
|
|
.map((content) => {
|
|
@@ -351,21 +414,13 @@ export default {
|
|
|
} else {
|
|
|
content_list = [
|
|
|
{
|
|
|
- content: text,
|
|
|
+ content: str,
|
|
|
mark: '',
|
|
|
type: 'text',
|
|
|
},
|
|
|
];
|
|
|
}
|
|
|
- this.data.option_list.push({
|
|
|
- role: this.curRole,
|
|
|
- text: this.textInput.replace(/\n/, ''),
|
|
|
- mark: getRandomNumber(),
|
|
|
- file_id: '',
|
|
|
- content_list,
|
|
|
- type: hasFill ? 'input' : 'text',
|
|
|
- });
|
|
|
- this.textInput = '';
|
|
|
+ return { hasFill, content_list };
|
|
|
},
|
|
|
/**
|
|
|
* 移动选项
|