|
|
@@ -882,6 +882,156 @@
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
+
|
|
|
+ <!-- 六顶思考帽 -->
|
|
|
+ <div class="c_t72" v-if="props.showData && props.showData.toolType === 832">
|
|
|
+ <div class="c_t72_title">
|
|
|
+ <div class="c_title">
|
|
|
+ <span>{{ lang.ssKwlTitle }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <span class="c_t72_type">{{ lang.ssKwlTitle }}</span>
|
|
|
+ <div class="c_t72_msg" v-if="props.roleType == 1">
|
|
|
+ <div>{{ lang.ssAnswerCount }} {{ props.workArray.length }}<span
|
|
|
+ v-if="props.unsubmittedStudents.length > 0">/{{
|
|
|
+ props.workArray.length +
|
|
|
+ props.unsubmittedStudents.length
|
|
|
+ }}</span></div>
|
|
|
+ <span v-if="props.unsubmittedStudents.length > 0" @click.stop="viewUnsubmittedStudents()">{{
|
|
|
+ lang.ssViewSubmitStatus2 }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="c_t72_content" v-show="!lookWorkData">
|
|
|
+ <div class="c_t72_c_item" v-for="item in processedWorkArray" :key="item.id" @click.stop="lookWork(item.id)">
|
|
|
+ <div class="c_t72_c_i_top">
|
|
|
+ <span>{{ item.name.charAt(0) }}</span>
|
|
|
+ <div>{{ item.name }}</div>
|
|
|
+ <div class="cast_sreen_btn" @click.stop="castScreen(item)"
|
|
|
+ v-if="props.isCreator && props.roleType == 1 && isFollowModeActive && canValue">
|
|
|
+ <IconCastScreen />
|
|
|
+ {{ lang.ssCastScreen }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="bottom_btn" v-if="likeValue">
|
|
|
+ <div class="bottom_like" :class="{ 'active': item.isLikes }" @click.stop="handleLikeClick(item)">
|
|
|
+ <IconThumbsUp />
|
|
|
+ <span>{{ item.likesCount }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="aiAnalysis" style="margin-top:1rem ;"
|
|
|
+ v-if="processedWorkArray.length > 0 && lookWorkData === null && props.showData.toolType == '831' && props.roleType == 1"
|
|
|
+ @click.stop="clickContent(false)">
|
|
|
+ <div class="ai_header">
|
|
|
+ <div class="ai_title">
|
|
|
+ <svg viewBox="0 0 1024 1024" width="200" height="200">
|
|
|
+ <path
|
|
|
+ d="M512 170.666667C323.477333 170.666667 170.666667 323.477333 170.666667 512s152.810667 341.333333 341.333333 341.333333 341.333333-152.810667 341.333333-341.333333S700.522667 170.666667 512 170.666667zM85.333333 512C85.333333 276.352 276.352 85.333333 512 85.333333s426.666667 191.018667 426.666667 426.666667-191.018667 426.666667-426.666667 426.666667S85.333333 747.648 85.333333 512z">
|
|
|
+ </path>
|
|
|
+ <path
|
|
|
+ d="M693.013333 330.986667a42.666667 42.666667 0 0 1 10.304 43.648l-75.413333 226.282666a42.666667 42.666667 0 0 1-26.986667 26.986667l-226.282666 75.413333a42.666667 42.666667 0 0 1-53.973334-53.973333l75.434667-226.261333a42.666667 42.666667 0 0 1 26.986667-26.986667l226.282666-75.413333a42.666667 42.666667 0 0 1 43.648 10.304z m-222.72 139.306666l-41.685333 125.098667 125.077333-41.706667 41.706667-125.077333-125.077333 41.706667z">
|
|
|
+ </path>
|
|
|
+ </svg>{{ lang.ssAnalysis }}
|
|
|
+ </div>
|
|
|
+ <div class="ai_refresh" :class="{ 'disabled': currentAnalysis && currentAnalysis.loading }"
|
|
|
+ @click.stop="aiAnalysisRefresh831()">
|
|
|
+ {{ lang.ssAIGenerate }}
|
|
|
+ <svg viewBox="0 0 1024 1024" width="200" height="200">
|
|
|
+ <path
|
|
|
+ d="M875 483c-33.4 0-60.5 27.1-60.5 60.5v0.1C814.4 710.3 678.8 846 512 846S209.5 710.3 209.5 543.5 345.2 241 512 241c36.8 0 71.7 7.6 104.4 19.7-32 3-57.4 29.1-57.4 61.9 0 34.8 28.2 63 63 63h201.9c34.8 0 63-28.2 63-63V120c0-34.8-28.2-63-63-63s-63 28.2-63 63v81.4C691 150.5 605.2 120 512 120 278.1 120 88.5 309.6 88.5 543.5S278.1 967 512 967s423.5-189.6 423.5-423.5c0-33.4-27.1-60.5-60.5-60.5z">
|
|
|
+ </path>
|
|
|
+ </svg>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="ai_content" v-if="currentAnalysis && currentAnalysis.json" v-html="currentAnalysis.json.text">
|
|
|
+ </div>
|
|
|
+ <div class="ai_updateTime" v-if="currentAnalysis">{{ lang.ssUpdateTime }}:{{ currentAnalysis.update_at }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="c_t72_workDetail" v-if="lookWorkData" @click.stop="clickContent(false)">
|
|
|
+ <div class="c_t72_wd_top">
|
|
|
+ <img src="../../../assets/img/arrow_left.png" @click.stop="lookWork('')" v-if="!isCastScreen" />
|
|
|
+ <span>{{ lookWorkData.name.charAt(0) }}</span>
|
|
|
+ <div>{{ lookWorkData.name }}</div>
|
|
|
+ <div class="cast_sreen_btn" @click.stop="exitCastScreen"
|
|
|
+ v-if="(props.isCreator && props.roleType == 1 && isCastScreen) || (!isFollowModeActive && isCastScreen)">
|
|
|
+ <IconCastScreen />
|
|
|
+ {{ lang.ssExitCastScreen }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+ <div class="c_t831_wd_content">
|
|
|
+ <!-- KWL 三栏 -->
|
|
|
+ <div class="kwl-grid" v-if="lookWorkData.content">
|
|
|
+ <!-- K - 已知 -->
|
|
|
+ <div class="kwl-col kwl-col--k">
|
|
|
+ <div class="kwl-col__header">
|
|
|
+ <span class="kwl-col__badge">K</span>
|
|
|
+ <span class="kwl-col__label">{{ lang.ssKwlKnown }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="kwl-col__body">
|
|
|
+ <template v-if="lookWorkData.content.know.length">
|
|
|
+ <div v-for="(item, idx) in lookWorkData.content.know" :key="'k-' + idx" class="kwl-item">{{ item }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div v-else class="kwl-empty">{{ lang.ssNone }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- W - 想知 -->
|
|
|
+ <div class="kwl-col kwl-col--w">
|
|
|
+ <div class="kwl-col__header">
|
|
|
+ <span class="kwl-col__badge">W</span>
|
|
|
+ <span class="kwl-col__label">{{ lang.ssKwlWant }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="kwl-col__body">
|
|
|
+ <template v-if="lookWorkData.content.want.length">
|
|
|
+ <div v-for="(item, idx) in lookWorkData.content.want" :key="'w-' + idx" class="kwl-item">{{ item }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div v-else class="kwl-empty">{{ lang.ssNone }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- L - 已学 -->
|
|
|
+ <div class="kwl-col kwl-col--l">
|
|
|
+ <div class="kwl-col__header">
|
|
|
+ <span class="kwl-col__badge">L</span>
|
|
|
+ <span class="kwl-col__label">{{ lang.ssKwlLearned }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="kwl-col__body">
|
|
|
+ <template v-if="lookWorkData.content.learned.length">
|
|
|
+ <div v-for="(item, idx) in lookWorkData.content.learned" :key="'l-' + idx" class="kwl-item">{{ item
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div v-else class="kwl-empty">{{ lang.ssNone }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 学习反思 -->
|
|
|
+ <div class="kwl-reflection">
|
|
|
+ <div class="kwl-reflection__header">
|
|
|
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
|
+ <path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z" />
|
|
|
+ </svg>
|
|
|
+ <span>{{ lang.ssKwlReflection }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="kwl-reflection__body">
|
|
|
+ {{ lookWorkData.content.reflection ? lookWorkData.content.reflection : lang.ssNone }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<previewImageTool ref="previewImageToolRef" />
|
|
|
|
|
|
@@ -1107,7 +1257,7 @@ const processWorkContent = async (content: string, toolType: number): Promise<an
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
- if ([45, 15, 78, 79, 84, 831].includes(toolType)) {
|
|
|
+ if ([45, 15, 78, 79, 84, 831, 832].includes(toolType)) {
|
|
|
return JSON.parse(decodeURIComponent(contentToParse))
|
|
|
}
|
|
|
else if (toolType === 72) {
|