|
@@ -8,34 +8,34 @@
|
|
|
width: 95%;
|
|
|
">
|
|
|
<div class="pb_head">
|
|
|
- <span>项目数据看板</span>
|
|
|
+ <span>Project Data Dashboard</span>
|
|
|
<div style="display: flex;align-items: center;">
|
|
|
- <!-- <el-button type="primary" size="small" @click="exportHtml" style="margin-right: 10px;">导出html</el-button> -->
|
|
|
- <el-button type="primary" size="small" @click="exportExcel" style="margin-right: 10px;">导出Excel</el-button>
|
|
|
- <el-switch v-model="mode" active-text="详情模式" inactive-text="简易模式" @change="changeMode">
|
|
|
+ <!-- <el-button type="primary" size="small" @click="exportHtml" style="margin-right: 10px;">Export HTML</el-button> -->
|
|
|
+ <el-button type="primary" size="small" @click="exportExcel" style="margin-right: 10px;">Export Excel</el-button>
|
|
|
+ <el-switch v-model="mode" active-text="Detail Mode" inactive-text="Simple Mode" @change="changeMode">
|
|
|
</el-switch>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="student_head">
|
|
|
<div class="head_left">
|
|
|
- <span>筛选:</span>
|
|
|
+ <span>Filter:</span>
|
|
|
<el-select v-model="choose" @change="isLoading = true, getData()" style="margin-right: 10px;">
|
|
|
- <el-option label="默认排序" value=""> </el-option>
|
|
|
- <el-option label="学校名称" value="school"> </el-option>
|
|
|
- <el-option label="任务数量" value="task"> </el-option>
|
|
|
- <el-option label="评审结果" value="score"> </el-option>
|
|
|
- <!-- <el-option label="评价" value="eval"> </el-option> -->
|
|
|
- <el-option label="工具" value="tool"> </el-option>
|
|
|
- <el-option label="字数" value="font"> </el-option>
|
|
|
+ <el-option label="Default Sorting" value=""> </el-option>
|
|
|
+ <el-option label="School Name" value="school"> </el-option>
|
|
|
+ <el-option label="Task Quantity" value="task"> </el-option>
|
|
|
+ <el-option label="Review Result" value="score"> </el-option>
|
|
|
+ <!-- <el-option label="Evaluation" value="eval"> </el-option> -->
|
|
|
+ <el-option label="Tool" value="tool"> </el-option>
|
|
|
+ <el-option label="Word Count" value="font"> </el-option>
|
|
|
</el-select>
|
|
|
|
|
|
<el-select v-model="ttype" @change="page = 1, isLoading = true, getData()">
|
|
|
- <el-option label="全部" value=""></el-option>
|
|
|
+ <el-option label="All" value=""></el-option>
|
|
|
<el-option v-for="item in courseTypeId" :key="item.id" :label="item.name" :value="item.id">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
|
|
|
- <el-input v-model="search" class="student_input" placeholder="请输入教师名称或学校名称" @input="getData"></el-input>
|
|
|
+ <el-input v-model="search" class="student_input" placeholder="Enter teacher's name or school's name" @input="getData"></el-input>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -43,9 +43,9 @@
|
|
|
<el-table ref="table" :data="tableData" border :fit="true" v-loading="isLoading" style="width: 100%"
|
|
|
:header-cell-style="{ background: '#f1f1f1', fontSize: '17px' }" :row-class-name="tableRowClassName" class="table"
|
|
|
:height="tableHeight" :key="mode">
|
|
|
- <el-table-column label="序号" prop="number" width="70px" align="center">
|
|
|
+ <el-table-column label="Number" prop="number" width="70px" align="center">
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="项目" width="150px" align="center">
|
|
|
+ <el-table-column label="Item" width="150px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<div style="max-height: 180px; overflow: auto">
|
|
|
<div v-for="(item, index) in scope.row.course" :key="index" class="cd_course" @click="jump(item.courseId)">
|
|
@@ -56,175 +56,175 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="分类" prop="typename" width="130px" align="center">
|
|
|
+ <el-table-column label="Category" prop="typename" width="130px" align="center">
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="学校" prop="school" width="100px" align="center">
|
|
|
+ <el-table-column label="School" prop="school" width="100px" align="center">
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="负责人" prop="username" width="80px" align="center">
|
|
|
+ <el-table-column label="Principal" prop="username" width="80px" align="center">
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="协同人员" prop="cteacher" width="100px" align="center">
|
|
|
+ <el-table-column label="Collaborators" prop="cteacher" width="100px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<div>{{ scope.row.cteacher ? scope.row.cteacher : '—' }}</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="创建时间" prop="ctime" width="85px" align="center">
|
|
|
+ <el-table-column label="Creation Time" prop="ctime" width="85px" align="center">
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="更新时间" prop="time" width="85px" align="center">
|
|
|
+ <el-table-column label="Update Time" prop="time" width="85px" align="center">
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="总计" width="85px" align="center">
|
|
|
+ <el-table-column label="Total" width="85px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<div class="cd_d_span">
|
|
|
<div>
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jdz.taskC }}</span><span>任务</span>
|
|
|
+ <span>{{ scope.row.jdz.taskC }}</span><span>Tasks</span>
|
|
|
</div>
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jdz.toolC }}</span><span>工具</span>
|
|
|
+ <span>{{ scope.row.jdz.toolC }}</span><span>Tools</span>
|
|
|
</div>
|
|
|
<!-- <div>
|
|
|
<span>{{ scope.row.jdz.evalC }}</span
|
|
|
><span>评价</span>
|
|
|
</div> -->
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jdz.fontC }}</span><span>字</span>
|
|
|
+ <span>{{ scope.row.jdz.fontC }}</span><span>word</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="阶段1" v-if="mode" width="85px" align="center">
|
|
|
+ <el-table-column label="Stage 1" v-if="mode" width="85px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<div v-if="scope.row.jd1">
|
|
|
<div class="cd_d_span">
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd1.taskC }}</span><span>任务</span>
|
|
|
+ <span>{{ scope.row.jd1.taskC }}</span><span>task</span>
|
|
|
</div>
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd1.toolC }}</span><span>工具</span>
|
|
|
+ <span>{{ scope.row.jd1.toolC }}</span><span>tool</span>
|
|
|
</div>
|
|
|
<!-- <div>
|
|
|
<span>{{ scope.row.jd1.evalC }}</span
|
|
|
- ><span>评价</span>
|
|
|
+ ><span>evaluation</span>
|
|
|
</div> -->
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd1.fontC }}</span><span>字</span>
|
|
|
+ <span>{{ scope.row.jd1.fontC }}</span><span>word</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div v-else>—</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="阶段2" v-if="mode" width="85px" align="center">
|
|
|
+ <el-table-column label="Stage 2" v-if="mode" width="85px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<div v-if="scope.row.jd2">
|
|
|
<div class="cd_d_span">
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd2.taskC }}</span><span>任务</span>
|
|
|
+ <span>{{ scope.row.jd2.taskC }}</span><span>task</span>
|
|
|
</div>
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd2.toolC }}</span><span>工具</span>
|
|
|
+ <span>{{ scope.row.jd2.toolC }}</span><span>tool</span>
|
|
|
</div>
|
|
|
<!-- <div>
|
|
|
<span>{{ scope.row.jd2.evalC }}</span
|
|
|
- ><span>评价</span>
|
|
|
+ ><span>evaluation</span>
|
|
|
</div> -->
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd2.fontC }}</span><span>字</span>
|
|
|
+ <span>{{ scope.row.jd2.fontC }}</span><span>word</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div v-else>—</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="阶段3" v-if="mode" width="85px" align="center">
|
|
|
+ <el-table-column label="Stage 3" v-if="mode" width="85px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<div v-if="scope.row.jd3">
|
|
|
<div class="cd_d_span">
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd3.taskC }}</span><span>任务</span>
|
|
|
+ <span>{{ scope.row.jd3.taskC }}</span><span>task</span>
|
|
|
</div>
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd3.toolC }}</span><span>工具</span>
|
|
|
+ <span>{{ scope.row.jd3.toolC }}</span><span>tool</span>
|
|
|
</div>
|
|
|
<!-- <div>
|
|
|
<span>{{ scope.row.jd3.evalC }}</span
|
|
|
><span>评价</span>
|
|
|
</div> -->
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd3.fontC }}</span><span>字</span>
|
|
|
+ <span>{{ scope.row.jd3.fontC }}</span><span>word</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div v-else>—</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="阶段4" v-if="mode" width="85px" align="center">
|
|
|
+ <el-table-column label="Phase 4" v-if="mode" width="85px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<div v-if="scope.row.jd4">
|
|
|
<div class="cd_d_span">
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd4.taskC }}</span><span>任务</span>
|
|
|
+ <span>{{ scope.row.jd4.taskC }}</span><span>task</span>
|
|
|
</div>
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd4.toolC }}</span><span>工具</span>
|
|
|
+ <span>{{ scope.row.jd4.toolC }}</span><span>tool</span>
|
|
|
</div>
|
|
|
<!-- <div>
|
|
|
<span>{{ scope.row.jd4.evalC }}</span
|
|
|
- ><span>评价</span>
|
|
|
+ ><span>evaluation</span>
|
|
|
</div> -->
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd4.fontC }}</span><span>字</span>
|
|
|
+ <span>{{ scope.row.jd4.fontC }}</span><span>word</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div v-else>—</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="阶段5" v-if="mode" width="85px" align="center">
|
|
|
+ <el-table-column label="Phase 5" v-if="mode" width="85px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<div v-if="scope.row.jd5">
|
|
|
<div class="cd_d_span">
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd5.taskC }}</span><span>任务</span>
|
|
|
+ <span>{{ scope.row.jd5.taskC }}</span><span>task</span>
|
|
|
</div>
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd5.toolC }}</span><span>工具</span>
|
|
|
+ <span>{{ scope.row.jd5.toolC }}</span><span>tool</span>
|
|
|
</div>
|
|
|
<!-- <div>
|
|
|
<span>{{ scope.row.jd5.evalC }}</span
|
|
|
- ><span>评价</span>
|
|
|
+ ><span>evaluation</span>
|
|
|
</div> -->
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd5.fontC }}</span><span>字</span>
|
|
|
+ <span>{{ scope.row.jd5.fontC }}</span><span>word</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div v-else>—</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="阶段6" v-if="mode" width="85px" align="center">
|
|
|
+ <el-table-column label="Phase 6" v-if="mode" width="85px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<div v-if="scope.row.jd6">
|
|
|
<div class="cd_d_span">
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd6.taskC }}</span><span>任务</span>
|
|
|
+ <span>{{ scope.row.jd6.taskC }}</span><span>task</span>
|
|
|
</div>
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd6.toolC }}</span><span>工具</span>
|
|
|
+ <span>{{ scope.row.jd6.toolC }}</span><span>tool</span>
|
|
|
</div>
|
|
|
<!-- <div>
|
|
|
<span>{{ scope.row.jd6.evalC }}</span
|
|
|
- ><span>评价</span>
|
|
|
+ ><span>evaluation</span>
|
|
|
</div> -->
|
|
|
<div>
|
|
|
- <span>{{ scope.row.jd6.fontC }}</span><span>字</span>
|
|
|
+ <span>{{ scope.row.jd6.fontC }}</span><span>word</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div v-else>—</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="项目简介" v-if="!mode" min-width="80px" align="center">
|
|
|
+ <el-table-column label="Project Summary" v-if="!mode" min-width="80px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<div v-if="scope.row.brief" class="tooltip">
|
|
|
<el-tooltip :content="scope.row.brief" class="my-tooltip-class" popper-class="text_tooltip">
|
|
@@ -236,36 +236,36 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="项目所处阶段" prop="lastTask" width="130px" align="center">
|
|
|
+ <el-table-column label="Project Phase" prop="lastTask" width="130px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<div>{{ scope.row.lastTask ? scope.row.lastTask : '—' }}</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="评审状态" width="80px" align="center">
|
|
|
+ <el-table-column label="Review Status" width="80px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <div>{{ scope.row.score ? '已评分' : '未评分' }}</div>
|
|
|
+ <div>{{ scope.row.score ? 'Reviewed' : 'Not Reviewed' }}</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="评审结果" prop="score" width="80px" align="center">
|
|
|
+ <el-table-column label="Review Result" prop="score" width="80px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <div>{{ scope.row.score }}分</div>
|
|
|
+ <div>{{ scope.row.score }} points</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="评审类型" prop="psType" width="80px" align="center">
|
|
|
+ <el-table-column label="Review Type" prop="psType" width="80px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <div>{{ scope.row.psType == '1' ? '造型结构' : scope.row.psType == '2' ? '开源硬件' : scope.row.psType == '3' ? '软件设计'
|
|
|
- : scope.row.psType == '4' ? '总分' : '—' }}</div>
|
|
|
+ <div>{{ scope.row.psType == '1' ? 'Structural Design' : scope.row.psType == '2' ? 'Open Source Hardware' : scope.row.psType == '3' ? 'Software Design'
|
|
|
+ : scope.row.psType == '4' ? 'Overall Score' : '—' }}</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column fixed="right" label="操作" width="180px" align="center">
|
|
|
+ <el-table-column fixed="right" label="Actions" width="180px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<!-- <div
|
|
|
@click="getAll(scope.row)"
|
|
|
>
|
|
|
查看全部
|
|
|
</div> -->
|
|
|
- <el-button type="primary" size="small" @click="jump2(scope.row.course[0].courseId)">评审</el-button>
|
|
|
- <el-button type="primary" size="small" @click="setMan(scope.row)">导出</el-button>
|
|
|
+ <el-button type="primary" size="small" @click="jump2(scope.row.course[0].courseId)">Review</el-button>
|
|
|
+ <el-button type="primary" size="small" @click="setMan(scope.row)">Export</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -275,56 +275,56 @@
|
|
|
@size-change="handleSizeChange"></el-pagination>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <el-dialog title="查看" :visible.sync="dialogVisible" :append-to-body="true" width="620px" :before-close="handleClose"
|
|
|
+ <el-dialog title="View" :visible.sync="dialogVisible" :append-to-body="true" width="620px" :before-close="handleClose"
|
|
|
class="dialog_diy">
|
|
|
<div v-if="dataArray.length">
|
|
|
<div class="cd_d_box">
|
|
|
- <span>教师:</span><span>{{ data.username }}</span>
|
|
|
+ <span>Teacher:</span><span>{{ data.username }}</span>
|
|
|
</div>
|
|
|
<div class="cd_d_box">
|
|
|
- <span>学校:</span><span>{{ data.school }}</span>
|
|
|
+ <span>School:</span><span>{{ data.school }}</span>
|
|
|
</div>
|
|
|
<div class="cd_d_jd">
|
|
|
<div v-for="(item, index) in dataArray" :key="index" class="cd_d_jd_box">
|
|
|
- <div class="cd_d_jd_name">{{ "阶段" + (index + 1) }}</div>
|
|
|
+ <div class="cd_d_jd_name">{{ "Phase " + (index + 1) }}</div>
|
|
|
<div class="cd_d_jd_content cd_d_span">
|
|
|
<div>
|
|
|
- <span>{{ data[item].taskC }}</span><span>任务</span>
|
|
|
+ <span>{{ data[item].taskC }}</span><span>Tasks</span>
|
|
|
</div>
|
|
|
<div>
|
|
|
- <span>{{ data[item].toolC }}</span><span>工具</span>
|
|
|
+ <span>{{ data[item].toolC }}</span><span>Tools</span>
|
|
|
</div>
|
|
|
<!-- <div>
|
|
|
<span>{{ data[item].evalC }}</span
|
|
|
><span>评价</span>
|
|
|
</div> -->
|
|
|
<div>
|
|
|
- <span>{{ data[item].fontC }}</span><span>字</span>
|
|
|
+ <span>{{ data[item].fontC }}</span><span>character</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="cd_d_jd_box">
|
|
|
- <div class="cd_d_jd_name">总计</div>
|
|
|
+ <div class="cd_d_jd_name">Total</div>
|
|
|
<div class="cd_d_jd_content cd_d_span" style="background: #d4d4d4">
|
|
|
<div>
|
|
|
- <span>{{ data["jdz"].taskC }}</span><span>任务</span>
|
|
|
+ <span>{{ data["jdz"].taskC }}</span><span>tasks</span>
|
|
|
</div>
|
|
|
<div>
|
|
|
- <span>{{ data["jdz"].toolC }}</span><span>工具</span>
|
|
|
+ <span>{{ data["jdz"].toolC }}</span><span>tools</span>
|
|
|
</div>
|
|
|
<!-- <div>
|
|
|
<span>{{ data["jdz"].evalC }}</span
|
|
|
- ><span>评价</span>
|
|
|
+ ><span>evaluations</span>
|
|
|
</div> -->
|
|
|
<div>
|
|
|
- <span>{{ data["jdz"].fontC }}</span><span>字</span>
|
|
|
+ <span>{{ data["jdz"].fontC }}</span><span>characters</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="dialogVisible = false">关闭</el-button>
|
|
|
+ <el-button @click="dialogVisible = false">Close</el-button>
|
|
|
</span>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
@@ -464,7 +464,7 @@ export default {
|
|
|
for (var ttask = _tasks.length - 1; ttask >= 0; ttask--) {
|
|
|
let _tools = _tasks[ttask].toolArray ? _tasks[ttask].toolArray : [];
|
|
|
if (_tools.length) {
|
|
|
- _res[i].lastTask = `第${tk + 1}阶段任务${ttask + 1}步骤${_tools.length}`
|
|
|
+ _res[i].lastTask = `Step ${tk + 1} of Phase ${ttask + 1}, Task ${_tools.length}`
|
|
|
break;
|
|
|
} else {
|
|
|
continue;
|
|
@@ -630,7 +630,7 @@ export default {
|
|
|
},
|
|
|
exportExcel() {
|
|
|
if (!this.tableData.length) {
|
|
|
- this.$message.error('请等待加载数据')
|
|
|
+ this.$message.error('Please wait for the data to load.')
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -640,29 +640,29 @@ export default {
|
|
|
var array = [];
|
|
|
for (var i = 0; i < res.length; i++) {
|
|
|
var _json = {};
|
|
|
- _json["序号"] = res[i].number;
|
|
|
- _json["负责人"] = res[i].username;
|
|
|
- _json["项目"] = res[i].course[0].title;
|
|
|
- _json["分类"] = res[i].typename;
|
|
|
- _json["学校"] = res[i].school;
|
|
|
- _json["协同人员"] = res[i].cteacher ? res[i].cteacher : '—';
|
|
|
- _json["创建时间"] = res[i].ctime;
|
|
|
- _json["更新时间"] = res[i].time;
|
|
|
- _json["总计"] = `${res[i].jdz.taskC}任务 ${res[i].jdz.toolC}工具 ${res[i].jdz.fontC}字数`;
|
|
|
+ _json["Index"] = res[i].number;
|
|
|
+ _json["Responsible Person"] = res[i].username;
|
|
|
+ _json["Project"] = res[i].course[0].title;
|
|
|
+ _json["Category"] = res[i].typename;
|
|
|
+ _json["School"] = res[i].school;
|
|
|
+ _json["Collaborators"] = res[i].cteacher ? res[i].cteacher : '—';
|
|
|
+ _json["Creation Time"] = res[i].ctime;
|
|
|
+ _json["Update Time"] = res[i].time;
|
|
|
+ _json["Total"] = `${res[i].jdz.taskC} tasks ${res[i].jdz.toolC} tools ${res[i].jdz.fontC} words`;
|
|
|
if (this.mode) {
|
|
|
- _json["阶段1"] = res[i].jd1 ? res[i].brief : '—';
|
|
|
- _json["阶段2"] = res[i].jd2 ? res[i].brief : '—';
|
|
|
- _json["阶段3"] = res[i].jd3 ? res[i].brief : '—';
|
|
|
- _json["阶段4"] = res[i].jd4 ? res[i].brief : '—';
|
|
|
- _json["阶段5"] = res[i].jd5 ? res[i].brief : '—';
|
|
|
- _json["阶段6"] = res[i].jd6 ? res[i].brief : '—';
|
|
|
+ _json["Phase 1"] = res[i].jd1 ? res[i].brief : '—';
|
|
|
+ _json["Phase 2"] = res[i].jd2 ? res[i].brief : '—';
|
|
|
+ _json["Phase 3"] = res[i].jd3 ? res[i].brief : '—';
|
|
|
+ _json["Phase 4"] = res[i].jd4 ? res[i].brief : '—';
|
|
|
+ _json["Phase 5"] = res[i].jd5 ? res[i].brief : '—';
|
|
|
+ _json["Phase 6"] = res[i].jd6 ? res[i].brief : '—';
|
|
|
} else {
|
|
|
- _json["项目简介"] = res[i].brief ? res[i].brief : '—';
|
|
|
+ _json["Project Summary"] = res[i].brief ? res[i].brief : '—';
|
|
|
}
|
|
|
- _json["项目所处阶段"] = res[i].lastTask ? res[i].lastTask : '—';
|
|
|
- _json["评审状态"] = res[i].score ? '已评分' : '未评分';
|
|
|
- _json["评审结果"] = res[i].score + '分';
|
|
|
- _json["评审类型"] = res[i].psType == '1' ? '造型结构' : res[i].psType == '2' ? '开源硬件' : res[i].psType == '3' ? '软件设计' : res[i].psType == '4' ? '总分' : '—';
|
|
|
+ _json["Project Phase"] = res[i].lastTask ? res[i].lastTask : '—';
|
|
|
+ _json["Review Status"] = res[i].score ? 'Reviewed' : 'Not Reviewed';
|
|
|
+ _json["Review Result"] = res[i].score + ' points';
|
|
|
+ _json["Review Type"] = res[i].psType == '1' ? 'Structural Design' : res[i].psType == '2' ? 'Open Source Hardware' : res[i].psType == '3' ? 'Software Design' : res[i].psType == '4' ? 'Total Score' : '—';
|
|
|
array.push(_json);
|
|
|
}
|
|
|
|
|
@@ -676,12 +676,12 @@ export default {
|
|
|
// { wch: 50 },
|
|
|
// ];
|
|
|
XLSX.utils.book_append_sheet(workbook, ws, "sheet1"); //把sheet添加到workbook里,第三个参数是sheet名
|
|
|
- XLSX.writeFile(workbook, "项目数据导出.xlsx");
|
|
|
+ XLSX.writeFile(workbook, "Project Data Export.xlsx");
|
|
|
// const wopts = { bookType: "xlsx", bookSST: false, type: "array" };//写入的样式bookType:输出的文件类型,type:输出的数据类型,bookSST: 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
|
|
|
// const wbout = XLSX.write(workbook, wopts);// 浏览器端和node共有的API,实际上node可以直接使用xlsx.writeFile来写入文件,但是浏览器没有该API
|
|
|
// FileSaver.saveAs(new Blob([wbout], { type: "application/octet-stream" }), `${title} demo.xlsx`);//保存文件
|
|
|
this.$message({
|
|
|
- message: "导出成功",
|
|
|
+ message: "Export successful",
|
|
|
type: "success",
|
|
|
});
|
|
|
},
|
|
@@ -695,82 +695,82 @@ export default {
|
|
|
// 项目名称、项目创建人、协同人员、创建时间、修改时间、所属赛道、所属主题、项目详情简介;项目阶段数量、项目任务数量、项目进展
|
|
|
// if possible 项目所处阶段、各阶段负责人/任务周期/协同者/任务描述/项目方案
|
|
|
let _course = `<h1>${course.course[0].title}</h1>`
|
|
|
- let _people = `<h2>负责人:${course.username}</h2>`
|
|
|
- let _cteacher = `<h3>协同人员:${course.cteacher ? course.cteacher : '—'}</h3>`
|
|
|
- let _time = `<h2>创建时间:${course.ctime} 修改时间:${course.time}</h2>`
|
|
|
- let _type = `<h2>分类:${course.typename}</h2>`
|
|
|
- let _detail = `<h2>项目详情:${course.brief}</h2>`
|
|
|
- let _jdZ = `<h2>项目阶段数量:${course.chapters.length} 项目任务任数量:${course.jdz.taskC}</h2>`
|
|
|
+ let _people = `<h2>Responsible Person: ${course.username}</h2>`
|
|
|
+ let _cteacher = `<h3>Collaborators: ${course.cteacher ? course.cteacher : '—'}</h3>`
|
|
|
+ let _time = `<h2>Creation Time: ${course.ctime} Modification Time: ${course.time}</h2>`
|
|
|
+ let _type = `<h2>Category: ${course.typename}</h2>`
|
|
|
+ let _detail = `<h2>Project Details: ${course.brief}</h2>`
|
|
|
+ let _jdZ = `<h2>Number of Project Stages: ${course.chapters.length} Number of Project Tasks: ${course.jdz.taskC}</h2>`
|
|
|
let _lasttask = ''
|
|
|
if (course.lastTask) {
|
|
|
- _lasttask = `<h2>项目所处阶段:${course.lastTask}</h2>`
|
|
|
+ _lasttask = `<h2>Project Stage: ${course.lastTask}</h2>`
|
|
|
}
|
|
|
|
|
|
let _chapter = course.chapters
|
|
|
let chapterHTML = ''
|
|
|
for (var i = 0; i < _chapter.length; i++) {
|
|
|
- chapterHTML += `<h2 style="border-top: 1px solid #ddd;padding: 10px 0 0 0;">第${i + 1}阶段-${_chapter[i].dyName}</h2>`
|
|
|
+ chapterHTML += `<h2 style="border-top: 1px solid #ddd;padding: 10px 0 0 0;">Stage ${i + 1}-${_chapter[i].dyName}</h2>`
|
|
|
let taskJson = _chapter[i].chapterInfo[0].taskJson
|
|
|
for (var j = 0; j < taskJson.length; j++) {
|
|
|
- chapterHTML += `<h3>任务${j + 1}-${taskJson[j].task}</h3>`
|
|
|
+ chapterHTML += `<h3>Task ${j + 1}-${taskJson[j].task}</h3>`
|
|
|
if (taskJson[j].time && taskJson[j].time.length) {
|
|
|
- chapterHTML += `<p>任务周期:${this.timeB(taskJson[j].time[0])}至${this.timeB(taskJson[j].time[1])}</p>`
|
|
|
+ chapterHTML += `<p>Task Period: ${this.timeB(taskJson[j].time[0])} to ${this.timeB(taskJson[j].time[1])}</p>`
|
|
|
}
|
|
|
if (taskJson[j].people) {
|
|
|
- chapterHTML += `<p>负责人:${this.getMan(Man, taskJson[j].people)}</p>`
|
|
|
+ chapterHTML += `<p>Responsible Person: ${this.getMan(Man, taskJson[j].people)}</p>`
|
|
|
}
|
|
|
if (taskJson[j].tcMember && taskJson[j].tcMember.length) {
|
|
|
let tcMember = []
|
|
|
for (var tc = 0; tc < taskJson[j].tcMember.length; tc++) {
|
|
|
tcMember.push(this.getMan(Man, taskJson[j].tcMember[tc]))
|
|
|
}
|
|
|
- chapterHTML += `<p>协同者:${tcMember.join(",")}</p>`
|
|
|
+ chapterHTML += `<p>Collaborators: ${tcMember.join(",")}</p>`
|
|
|
}
|
|
|
- chapterHTML += `<div>任务描述</div>`
|
|
|
+ chapterHTML += `<div>Task Description</div>`
|
|
|
chapterHTML += `<div>${taskJson[j].taskDetail}</div>`
|
|
|
let _tool = taskJson[j].toolArray ? taskJson[j].toolArray : []
|
|
|
for (var tool = 0; tool < _tool.length; tool++) {
|
|
|
if (_tool[tool].tool == 1) {
|
|
|
- chapterHTML += `<h4>步骤${tool + 1}:电子白板</h4>`
|
|
|
+ chapterHTML += `<h4>Step ${tool + 1}: Electronic Whiteboard</h4>`
|
|
|
} else if (_tool[tool].tool == 3) {
|
|
|
- chapterHTML += `<h4>步骤${tool + 1}:思维导图</h4>`
|
|
|
+ chapterHTML += `<h4>Step ${tool + 1}: Mind Map</h4>`
|
|
|
} else if (_tool[tool].tool == 6) {
|
|
|
- chapterHTML += `<h4>步骤${tool + 1}:协同文档</h4>`
|
|
|
+ chapterHTML += `<h4>Step ${tool + 1}: Collaborative Document</h4>`
|
|
|
} else if (_tool[tool].tool == 15) {
|
|
|
- chapterHTML += `<h4>步骤${tool + 1}:问答工具</h4>`
|
|
|
+ chapterHTML += `<h4>Step ${tool + 1}: Q&A Tool</h4>`
|
|
|
} else if (_tool[tool].tool == 53) {
|
|
|
- chapterHTML += `<h4>步骤${tool + 1}:文件上传</h4>`
|
|
|
+ chapterHTML += `<h4>Step ${tool + 1}: File Upload</h4>`
|
|
|
} else if (_tool[tool].tool == 54) {
|
|
|
- chapterHTML += `<h4>步骤${tool + 1}:拍照</h4>`
|
|
|
+ chapterHTML += `<h4>Step ${tool + 1}: Take Photo</h4>`
|
|
|
} else if (_tool[tool].tool == 55) {
|
|
|
- chapterHTML += `<h4>步骤${tool + 1}:压缩文件</h4>`
|
|
|
+ chapterHTML += `<h4>Step ${tool + 1}: Compress File</h4>`
|
|
|
} else if (_tool[tool].tool == 56) {
|
|
|
- chapterHTML += `<h4>步骤${tool + 1}:投票</h4>`
|
|
|
+ chapterHTML += `<h4>Step ${tool + 1}: Vote</h4>`
|
|
|
} else if (_tool[tool].tool == 48) {
|
|
|
- chapterHTML += `<h4>步骤${tool + 1}:表格</h4>`
|
|
|
+ chapterHTML += `<h4>Step ${tool + 1}: Spreadsheet</h4>`
|
|
|
} else if (_tool[tool].tool == 52) {
|
|
|
- chapterHTML += `<h4>步骤${tool + 1}:文档</h4>`
|
|
|
+ chapterHTML += `<h4>Step ${tool + 1}: Document</h4>`
|
|
|
} else if (_tool[tool].tool == 51) {
|
|
|
- chapterHTML += `<h4>步骤${tool + 1}:资源库</h4>`
|
|
|
+ chapterHTML += `<h4>Step ${tool + 1}: Resource Library</h4>`
|
|
|
} else if (_tool[tool].tool == 56) {
|
|
|
- chapterHTML += `<h4>步骤${tool + 1}:投票</h4>`
|
|
|
+ chapterHTML += `<h4>Step ${tool + 1}: Vote</h4>`
|
|
|
} else if (_tool[tool].tool == 57) {
|
|
|
- chapterHTML += `<h4>步骤${tool + 1}:CocoPi</h4>`
|
|
|
+ chapterHTML += `<h4>Step ${tool + 1}: CocoPi</h4>`
|
|
|
}
|
|
|
|
|
|
- if (_tool[tool].tool == 51) {
|
|
|
+ if (_tool[tool].tool === 51) {
|
|
|
if (_tool[tool].toolData.length) {
|
|
|
- for (var ti = 0; ti < _tool[tool].toolData.length; ti++) {
|
|
|
- let _td = _tool[tool].toolData[ti]
|
|
|
- if (_td.type == 2) {
|
|
|
- chapterHTML += `<div><span>视频链接:</span><a href='${_td.url}'>${_td.name}</a></div>`
|
|
|
- } else if (_td.type == 3) {
|
|
|
- chapterHTML += `<div><span>文档链接:</span><a href='${_td.url}'>${_td.name}</a></div>`
|
|
|
- } else if (_td.type == 6) {
|
|
|
- chapterHTML += `<div>图文标题:${_td.name}</div>`
|
|
|
- chapterHTML += `<div class="cont"><span>图文内容:</span>${_td.url}</div>`
|
|
|
- } else if (_td.type == 8) {
|
|
|
- chapterHTML += `<div><span>链接:</span><a href='${_td.src}'>${_td.title}</a></div>`
|
|
|
+ for (let ti = 0; ti < _tool[tool].toolData.length; ti++) {
|
|
|
+ let _td = _tool[tool].toolData[ti];
|
|
|
+ if (_td.type === 2) {
|
|
|
+ chapterHTML += `<div><span>Video Link:</span><a href='${_td.url}'>${_td.name}</a></div>`;
|
|
|
+ } else if (_td.type === 3) {
|
|
|
+ chapterHTML += `<div><span>Document Link:</span><a href='${_td.url}'>${_td.name}</a></div>`;
|
|
|
+ } else if (_td.type === 6) {
|
|
|
+ chapterHTML += `<div>Image Text Title: ${_td.name}</div>`;
|
|
|
+ chapterHTML += `<div class="cont"><span>Image Text Content:</span>${_td.url}</div>`;
|
|
|
+ } else if (_td.type === 8) {
|
|
|
+ chapterHTML += `<div><span>Link:</span><a href='${_td.src}'>${_td.title}</a></div>`;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -783,15 +783,15 @@ export default {
|
|
|
} else if (photo.type == 10) {
|
|
|
chapterHTML += `<div class="cont">${JSON.parse(photo.content)}</div>`
|
|
|
} else if (photo.type == 4) {
|
|
|
- chapterHTML += `<div><span>文档链接:</span><a href='${photo.content}'>${photo.content}</a></div>`
|
|
|
+ chapterHTML += `<div><span>Document Link:</span><a href='${photo.content}'>${photo.content}</a></div>`
|
|
|
} else if (photo.type == 5) {
|
|
|
- chapterHTML += `<div><span>视频链接:</span><a href='${photo.content}'>${photo.content}</a></div>`
|
|
|
+ chapterHTML += `<div><span>Video Link:</span><a href='${photo.content}'>${photo.content}</a></div>`
|
|
|
} else if (photo.type == 12) {
|
|
|
chapterHTML += `<div class="cont">${JSON.parse(photo.content)}</div>`
|
|
|
} else if (photo.type == 14) {
|
|
|
var _ask = "";
|
|
|
var _div = document.createElement("div");
|
|
|
- _div.innerHTML = `<h4>标题:${_tool[tool].askJson.askTitle}</h4>`;
|
|
|
+ _div.innerHTML = `<h4>Title:${_tool[tool].askJson.askTitle}</h4>`;
|
|
|
for (
|
|
|
var j = 0;
|
|
|
j < _tool[tool].askJson.askJson.length;
|
|
@@ -799,8 +799,8 @@ export default {
|
|
|
) {
|
|
|
let answer = JSON.parse(photo.content)
|
|
|
var _div2 = document.createElement("div");
|
|
|
- _div2.innerHTML = `<h5>第${j + 1}题:${_tool[tool].askJson.askJson[j].askstitle
|
|
|
- } 选择:${answer &&
|
|
|
+ _div2.innerHTML = `<h5>Question ${j + 1}:${_tool[tool].askJson.askJson[j].askstitle
|
|
|
+ } Choice:${answer &&
|
|
|
answer.length > 0
|
|
|
? answer[j]
|
|
|
: 1
|
|
@@ -822,7 +822,7 @@ export default {
|
|
|
_ask += `<div>${_div.innerHTML}</div>`;
|
|
|
chapterHTML += _ask
|
|
|
} else if (photo.type == 13) {
|
|
|
- chapterHTML += `<div><span>文件链接:</span><a href='${photo.content}'>${photo.content}</a></div>`
|
|
|
+ chapterHTML += `<div><span>File Link:</span><a href='${photo.content}'>${photo.content}</a></div>`
|
|
|
}
|
|
|
// <img v-if="photo.type == 1" :src="photo.content" @click="previewImg(photo.content)" />
|
|
|
// <img v-if="photo.type == 10" :src="word" @click="openTable(photo.content)" />
|
|
@@ -838,7 +838,7 @@ export default {
|
|
|
}
|
|
|
|
|
|
if (_tool[tool].toolDetail) {
|
|
|
- chapterHTML += `<div>工具描述</div>`
|
|
|
+ chapterHTML += `<div>Tool Description</div>`
|
|
|
chapterHTML += `<div>${_tool[tool].toolDetail}</div>`
|
|
|
}
|
|
|
}
|
|
@@ -918,7 +918,7 @@ export default {
|
|
|
<meta charset="UTF-8">
|
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
- <title>报告</title>
|
|
|
+ <title>Report</title>
|
|
|
<style>
|
|
|
.cont{
|
|
|
word-break: break-all;
|
|
@@ -941,10 +941,10 @@ export default {
|
|
|
|
|
|
.cont table th {
|
|
|
border-bottom: 2px solid #ccc;
|
|
|
- text-align: center;
|
|
|
+ text-align: centre;
|
|
|
}
|
|
|
|
|
|
- /* blockquote 样式 */
|
|
|
+ /* blockquote style */
|
|
|
.cont blockquote {
|
|
|
display: block;
|
|
|
border-left: 8px solid #d0e5f2;
|
|
@@ -952,15 +952,15 @@ export default {
|
|
|
margin: 10px 0;
|
|
|
line-height: 1.4;
|
|
|
font-size: 100%;
|
|
|
- background-color: #f1f1f1;
|
|
|
+ background-colour: #f1f1f1;
|
|
|
}
|
|
|
|
|
|
- /* code 样式 */
|
|
|
+ /* code style */
|
|
|
.cont code {
|
|
|
display: inline-block;
|
|
|
*display: inline;
|
|
|
*zoom: 1;
|
|
|
- background-color: #f1f1f1;
|
|
|
+ background-colour: #f1f1f1;
|
|
|
border-radius: 3px;
|
|
|
padding: 3px 5px;
|
|
|
margin: 0 3px;
|
|
@@ -970,7 +970,7 @@ export default {
|
|
|
display: block;
|
|
|
}
|
|
|
|
|
|
- /* ul ol 样式 */
|
|
|
+ /* ul ol style */
|
|
|
.cont ul,
|
|
|
.cont ol {
|
|
|
margin: 10px 0 10px 20px;
|
|
@@ -1011,7 +1011,7 @@ export default {
|
|
|
time.setTime(time.getTime());
|
|
|
var s2 = time.getFullYear() + "-" + ((time.getMonth() + 1) < 10 ? '0' + (time.getMonth() + 1) : (time.getMonth() + 1)) + "-"
|
|
|
+ ((time.getDate()) < 10 ? '0' + (time.getDate()) : (time.getDate()));
|
|
|
- return time.getFullYear() ? s2 : '无'
|
|
|
+ return time.getFullYear() ? s2 : 'None'
|
|
|
},
|
|
|
},
|
|
|
beforeDestroy() {
|