临时提交 基本功能完成

master
hujunbo 3 years ago
parent 62c1be6187
commit 350a61aece

@ -7,6 +7,7 @@ import com.ruoyi.biemo.business.service.CategoryService;
import com.ruoyi.biemo.business.service.DocInfoService;
import com.ruoyi.biemo.core.page.Page;
import com.ruoyi.biemo.core.page.PageFactory;
import com.ruoyi.biemo.utils.MyObjects;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
@ -75,6 +76,21 @@ public class DocInfoController extends BaseController {
return AjaxResult.success(docInfoService.selectDocInfoById(id));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('biemo:docInfo:query')")
@GetMapping(value = "/getInfoDelHtml/{id}")
public AjaxResult getInfoDelHtml(@PathVariable("id") String id)
{
DocInfo docInfo = docInfoService.selectDocInfoById(id);
String content = docInfo.getContent();
content = MyObjects.delHTMLTag(content);
content = MyObjects.delSpace(content);
docInfo.setContent(content);
return AjaxResult.success(docInfo);
}
/**
*
*/

@ -42,6 +42,7 @@ public class ReportController
public Page<Report> list(Report report)
{
Page<Report> page = reportService.selectReportPage(report, PageFactory.defaultPage());
//Page<Report> page = reportService.getReportList(SecurityUtils.getUsername());
return page;
}

@ -209,7 +209,7 @@ public class ReportService extends EsService<Report> {
private String uploadAttachmentUrl = "http://test.vsp.cqooc.com/open/api/v2/upload/attachment?access_token=ACCESS_TOKEN&appid=APPID&originId=ORIGINID&filename=FILENAME&title=TITLE&remarks=REMARKS";
@Value("${report.getReportListUrl}")
private String getReportListUrl = "http://test.vsp.cqooc.com/open/api/v2/query/data?appId=APPID&accessToken=ACCESS_TOKEN&signature=SIGNATURE&&originId=ORIGINID";
private String getReportListUrl = "http://test.vsp.cqooc.com/open/api/v2/query/data?appId=APPID&accessToken=ACCESS_TOKEN&signature=SIGNATURE";
@Autowired
private RedisCache redisCache;
@ -282,14 +282,17 @@ public class ReportService extends EsService<Report> {
if(report==null||StringUtils.isBlank(username)){
return AjaxResult.error("参数不能为空!");
}
report.setAppId(appId);
MyResponseResult myResponseResult = redisCache.getCacheObject(MyConstants.TOKEN_PREFIX+username);
if(myResponseResult!=null&&myResponseResult.getAccessToken()!=null){
//插入本地数据库
String id = insertOrUpdateReport(report);
report.setAccessToken(myResponseResult.getAccessToken());
String signature = report.getSignature();
signature = Md5Utils.hash(appId+secretKey+report.getAccessToken()).toUpperCase();
report.setSignature(signature);
report.setOpenId(myResponseResult.getOpenId());
report.setOriginId(username);
report.setOriginId(id);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<Map> uploadResponseEntity = restTemplate.postForEntity(reportUploadUrl, report, Map.class);
Map result = uploadResponseEntity.getBody();

@ -68,10 +68,10 @@ public class MyObjects {
}
public static String delSpace(String htmlStr){
htmlStr = htmlStr.replaceAll("\t", "\n");
htmlStr = htmlStr.replaceAll("\t", "");
htmlStr = htmlStr.replaceAll("\\u3000", "");
htmlStr = htmlStr.replaceAll("(\\s{4})", "\n");
htmlStr = htmlStr.replaceAll("\\s", "\n");
htmlStr = htmlStr.replaceAll("(\\s{4})", "");
htmlStr = htmlStr.replaceAll("\\s", "");
htmlStr = StringUtils.deleteWhitespace(htmlStr);
return htmlStr.trim(); //返回文本字符串
}

@ -16,6 +16,13 @@ export function getDocInfo(id) {
method: 'get'
})
}
// 查询文章管理详细
export function getInfoDelHtml(id) {
return request({
url: '/makesoft/docInfo/getInfoDelHtml/' + id,
method: 'get'
})
}
// 新增文章管理
export function addDocInfo(data) {

@ -129,32 +129,31 @@
</v-card>
</v-dialog>
</div>
<!-- <div class="bottom-bar">
<div class="bottom-bar">
<div class="button-group">
<button class="btn" @click="switchLanguage">{{ $t('message.switchLanguage') }}</button>
<button class="btn" v-if="!uploaded" @click="useDefault">{{ $t('message.useExample') }}</button>
<button class="btn upload-button"><input class="upload" type="file"
@change="upload">
<button class="btn upload-button"><input class="upload" type="button"
@click="upload">
{{ $t("message.upload") }}
</button>
<button class="btn" v-if="uploaded" @click="download">
{{ $t("message.downloadButton") }}
</button>
</div>
</div>-->
</div>
</div>
</template>
<script>
import {Action, Annotator} from 'poplar-annotation'
import hljs from 'highlight.js'
const defaultJson = "{\"content\":\"北冥有鱼,其名为鲲。鲲之大,不知其几千里也;化而为鸟,其名为鹏。鹏之背,不知其几千里也;怒而飞,其翼若垂天之云。是鸟也,海运则将徙于南冥。南冥者,天池也。《齐谐》者,志怪者也。《谐》之言曰:“鹏之徙于南冥也,水击三千里,抟扶摇而上者九万里,去以六月息者也。”野马也,尘埃也,生物之以息相吹也。天之苍苍,其正色邪?其远而无所至极邪?其视下也,亦若是则已矣。且夫水之积也不厚,则其负大舟也无力。覆杯水于坳堂之上,则芥为之舟,置杯焉则胶,水浅而舟大也。风之积也不厚,则其负大翼也无力。故九万里,则风斯在下矣,而后乃今培风;背负青天,而莫之夭阏者,而后乃今将图南。蜩与学鸠笑之曰:“我决起而飞,抢榆枋而止,时则不至,而控于地而已矣,奚以之九万里而南为?”适莽苍者,三餐而反,腹犹果然;适百里者,宿舂粮;适千里者,三月聚粮。之二虫又何知!小知不及大知,小年不及大年。奚以知其然也?朝菌不知晦朔,蟪蛄不知春秋,此小年也。楚之南有冥灵者,以五百岁为春,五百岁为秋;上古有大椿者,以八千岁为春,八千岁为秋,此大年也。而彭祖乃今以久特闻,众人匹之,不亦悲乎!汤之问棘也是已。穷发之北,有冥海者,天池也。有鱼焉,其广数千里,未有知其修者,其名为鲲。有鸟焉,其名为鹏,背若泰山,翼若垂天之云,抟扶摇羊角而上者九万里,绝云气,负青天,然后图南,且适南冥也。斥鴳笑之曰:“彼且奚适也?我腾跃而上,不过数仞而下,翱翔蓬蒿之间,此亦飞之至也。而彼且奚适也?”此小大之辩也。故夫知效一官,行比一乡,德合一君,而征一国者,其自视也,亦若此矣。而宋荣子犹然笑之。且举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世,未数数然也。虽然,犹有未树也。夫列子御风而行,泠然善也,旬有五日而后反。彼于致福者,未数数然也。此虽免乎行,犹有所待者也。若夫乘天地之正,而御六气之辩,以游无穷者,彼且恶乎待哉?故曰:至人无己,神人无功,圣人无名。\",\"labelCategories\":[{\"id\":\"0\",\"text\":\"名词\",\"color\":\"#eac0a2\",\"border-color\":\"#8c7361\"},{\"id\":\"1\",\"text\":\"动词\",\"color\":\"#619dff\",\"border-color\":\"#3c619d\"},{\"id\":\"2\",\"text\":\"形容词\",\"color\":\"#9d61ff\",\"border-color\":\"#613C9D\"},{\"id\":\"3\",\"text\":\"副词\",\"color\":\"#ff9d61\",\"border-color\":\"#995e3a\"}],\"labels\":[{\"id\":\"0\",\"categoryId\":\"0\",\"startIndex\":0,\"endIndex\":2},{\"id\":\"1\",\"categoryId\":\"0\",\"startIndex\":3,\"endIndex\":4},{\"id\":\"2\",\"categoryId\":\"0\",\"startIndex\":216,\"endIndex\":217},{\"id\":\"3\",\"categoryId\":\"2\",\"startIndex\":217,\"endIndex\":218},{\"id\":\"4\",\"categoryId\":\"0\",\"startIndex\":219,\"endIndex\":220},{\"id\":\"5\",\"categoryId\":\"2\",\"startIndex\":220,\"endIndex\":221},{\"id\":\"6\",\"categoryId\":\"0\",\"startIndex\":32,\"endIndex\":33},{\"id\":\"7\",\"categoryId\":\"1\",\"startIndex\":46,\"endIndex\":47},{\"id\":\"8\",\"categoryId\":\"0\",\"startIndex\":78,\"endIndex\":80},{\"id\":\"9\",\"categoryId\":\"1\",\"startIndex\":64,\"endIndex\":65}],\"connectionCategories\":[{\"id\":\"0\",\"text\":\"修饰\"},{\"id\":\"1\",\"text\":\"限定\"},{\"id\":\"2\",\"text\":\"是...的动作\"}],\"connections\":[{\"id\":\"0\",\"categoryId\":\"2\",\"fromId\":\"7\",\"toId\":\"6\"},{\"id\":\"1\",\"categoryId\":\"0\",\"fromId\":\"3\",\"toId\":\"2\"},{\"id\":\"2\",\"categoryId\":\"0\",\"fromId\":\"5\",\"toId\":\"4\"},{\"id\":\"3\",\"categoryId\":\"2\",\"fromId\":\"9\",\"toId\":\"6\"}]}";
//const defaultJson = "{\"content\":\"宿椿广\",\"labelCategories\":[{\"id\":\"0\",\"text\":\"\",\"color\":\"#eac0a2\",\"border-color\":\"#8c7361\"},{\"id\":\"1\",\"text\":\"\",\"color\":\"#619dff\",\"border-color\":\"#3c619d\"},{\"id\":\"2\",\"text\":\"\",\"color\":\"#9d61ff\",\"border-color\":\"#613C9D\"},{\"id\":\"3\",\"text\":\"\",\"color\":\"#ff9d61\",\"border-color\":\"#995e3a\"}],\"labels\":[{\"id\":\"0\",\"categoryId\":\"0\",\"startIndex\":0,\"endIndex\":2},{\"id\":\"1\",\"categoryId\":\"0\",\"startIndex\":3,\"endIndex\":4},{\"id\":\"2\",\"categoryId\":\"0\",\"startIndex\":216,\"endIndex\":217},{\"id\":\"3\",\"categoryId\":\"2\",\"startIndex\":217,\"endIndex\":218},{\"id\":\"4\",\"categoryId\":\"0\",\"startIndex\":219,\"endIndex\":220},{\"id\":\"5\",\"categoryId\":\"2\",\"startIndex\":220,\"endIndex\":221},{\"id\":\"6\",\"categoryId\":\"0\",\"startIndex\":32,\"endIndex\":33},{\"id\":\"7\",\"categoryId\":\"1\",\"startIndex\":46,\"endIndex\":47},{\"id\":\"8\",\"categoryId\":\"0\",\"startIndex\":78,\"endIndex\":80},{\"id\":\"9\",\"categoryId\":\"1\",\"startIndex\":64,\"endIndex\":65}],\"connectionCategories\":[{\"id\":\"0\",\"text\":\"\"},{\"id\":\"1\",\"text\":\"\"},{\"id\":\"2\",\"text\":\"...\"}],\"connections\":[{\"id\":\"0\",\"categoryId\":\"2\",\"fromId\":\"7\",\"toId\":\"6\"},{\"id\":\"1\",\"categoryId\":\"0\",\"fromId\":\"3\",\"toId\":\"2\"},{\"id\":\"2\",\"categoryId\":\"0\",\"fromId\":\"5\",\"toId\":\"4\"},{\"id\":\"3\",\"categoryId\":\"2\",\"fromId\":\"9\",\"toId\":\"6\"}]}";
const defaultJson = "{\"content\":\"%s\",\"labelCategories\":[{\"id\":\"0\",\"text\":\"名词\",\"color\":\"#eac0a2\",\"border-color\":\"#8c7361\"},{\"id\":\"1\",\"text\":\"动词\",\"color\":\"#619dff\",\"border-color\":\"#3c619d\"},{\"id\":\"2\",\"text\":\"形容词\",\"color\":\"#9d61ff\",\"border-color\":\"#613C9D\"},{\"id\":\"3\",\"text\":\"副词\",\"color\":\"#ff9d61\",\"border-color\":\"#995e3a\"}],\"labels\":[],\"connectionCategories\":[],\"connections\":[]}";
import {getInfoDelHtml} from "@/api/biemo/docInfo";
export default {
name: 'posTagging',
data: function () {
return {
posData: defaultJson,
id: '',
labelCategoryRepo: [{
"id": 0,
"text": "名词",
@ -200,9 +199,22 @@ export default {
}
},
mounted:function(){
this.constructAnnotator(defaultJson);
getInfoDelHtml(this.id).then(response =>{
let json = defaultJson.replace(/%s/ig,response.data.content);
this.constructAnnotator(json);
})
},
created(){
this.getParams()
},
watch: {
'$route': 'getParams'
},
methods: {
getParams(){
this.id = this.$route.params && this.$route.params.id;
},
constructAnnotator: function (data) {
this.annotator = new Annotator(data, this.$refs.svgContainer);
this.annotator.on('textSelected', (startIndex, endIndex) => {
@ -235,15 +247,7 @@ export default {
this.constructAnnotator(defaultJson);
},
upload: function (e) {
let reader = new FileReader();
if (this.annotator !== null) {
this.$refs.svgContainer.innerHTML = "";
}
reader.readAsText(e.target.files[0]);
reader.onload = (event) => {
this.constructAnnotator(event.target.result);
this.uploaded = true;
}
},
createLabel() {
this.annotator.applyAction(Action.Label.Create(this.selectedLabelCategory, this.startIndex, this.endIndex));

@ -57,16 +57,6 @@
v-hasPermi="['report:report:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['report:report:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -101,6 +91,13 @@
@click="handleDelete(scope.row)"
v-hasPermi="['report:report:remove']"
>删除</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDetail(scope.row)"
v-hasPermi="['report:report:remove']"
>详情</el-button>
</template>
</el-table-column>
</el-table>
@ -114,37 +111,37 @@
/>
<!-- 添加或修改报告提交对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="报告名称" prop="title">
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="报告名称" >
<el-input v-model="form.title" placeholder="请输入实验报告名称" />
</el-form-item>
<el-form-item label="开始时间" prop="startTime">
<el-form-item label="开始时间" >
<el-date-picker
v-model="form.startTime"
style="width: 240px"
type="date"
type="datetime"
value-format="timestamp"
></el-date-picker>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-form-item label="结束时间" >
<el-date-picker
v-model="form.endTime"
style="width: 240px"
type="date"
type="datetime"
value-format="timestamp"
></el-date-picker>
</el-form-item>
<el-form-item label="实验状态" prop="status">
<el-form-item label="实验状态" >
<el-select v-model="form.status">
<el-option value="1" label="未完成"/>
<el-option value="2" label="已完成"/>
</el-select>
</el-form-item>
<el-form-item label="合理用时" prop="timeUsed">
<el-form-item label="合理用时" >
<el-input v-model="form.timeUsed" placeholder="请输入合理用时" />
</el-form-item>
<el-form-item label="得分" prop="score">
<el-form-item label="得分" >
<el-input v-model="form.score" placeholder="请输入得分" />
</el-form-item>
@ -154,6 +151,8 @@
<el-button type="primary" @click="addform"></el-button>
</el-col>
</el-row>
</el-form-item>
<!-- 动态表单 -->
<el-form :model="form_1" ref="form_1" label-width="120px" style="width:83%; margin-bottom: 8%;">
<div v-for="(item,index) in domains" :key="item.key">
@ -163,7 +162,9 @@
<span>步骤:{{index+1}}</span>
</el-col>
<el-col :span="7">
<el-form-item><el-input v-model="form_1[index].seq" value="index+1" hidden></el-input></el-form-item>
<el-form-item>
<el-input v-model="form_1[index].seq" hidden></el-input>
</el-form-item>
<el-form-item label="标题" style="margin-bottom: 2%;">
<el-input v-model="form_1[index].title" style="width:300px"></el-input>
</el-form-item>
@ -179,19 +180,19 @@
<el-form-item label="得分" style="margin-bottom: 2%;">
<el-input v-model="form_1[index].score" style="width:300px"></el-input>
</el-form-item>
<el-form-item label="开始时间" prop="startTime">
<el-form-item label="开始时间" >
<el-date-picker
v-model="form_1[index].startTime"
style="width: 240px"
type="date"
type="datetime"
value-format="timestamp"
></el-date-picker>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-form-item label="结束时间" >
<el-date-picker
v-model="form_1[index].endTime"
style="width: 240px"
type="date"
type="datetime"
value-format="timestamp"
></el-date-picker>
</el-form-item>
@ -211,7 +212,7 @@
</el-row>
</div>
</el-form>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -219,6 +220,121 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!--详情-->
<el-dialog :title="title" :visible.sync="openDetail" width="800px" append-to-body>
<el-form label-width="80px">
<el-form-item label="报告名称" >
<el-input v-model="form.title" placeholder="请输入实验报告名称" disabled/>
</el-form-item>
<el-form-item label="开始时间" >
<el-date-picker
v-model="form.startTime"
style="width: 240px"
type="datetime"
value-format="timestamp"
disabled
></el-date-picker>
</el-form-item>
<el-form-item label="结束时间" >
<el-date-picker
v-model="form.endTime"
style="width: 240px"
type="datetime"
value-format="timestamp"
disabled
></el-date-picker>
</el-form-item>
<el-form-item label="实验状态" >
<el-select v-model="form.status" disabled>
<el-option value="1" label="未完成"/>
<el-option value="2" label="已完成"/>
</el-select>
</el-form-item>
<el-form-item label="合理用时" >
<el-input v-model="form.timeUsed" placeholder="请输入合理用时" disabled/>
</el-form-item>
<el-form-item label="得分" >
<el-input v-model="form.score" placeholder="请输入得分" disabled/>
</el-form-item>
<el-form-item label="步骤列表">
<el-row>
<el-col :span="3">
<el-button type="primary" >步骤列表</el-button>
</el-col>
</el-row>
</el-form-item>
<!-- 动态表单 -->
<el-form :model="form_1" ref="form_1" label-width="120px" style="width:83%; margin-bottom: 8%;">
<div v-for="(item,index) in domains" :key="item.key">
<el-row>
<el-col :span="1">
<i class="el-icon-delete-solid" style="color:red;" ></i>
<span>步骤:{{index+1}}</span>
</el-col>
<el-col :span="7">
<el-form-item>
<el-input v-model="form_1[index].seq" hidden></el-input>
</el-form-item>
<el-form-item label="标题" style="margin-bottom: 2%;">
<el-input v-model="form_1[index].title" style="width:300px" disabled></el-input>
</el-form-item>
<el-form-item label="评价" style="margin-bottom: 2%;">
<el-input v-model="form_1[index].evaluation" style="width:300px" disabled></el-input>
</el-form-item>
<el-form-item label="重复次数" style="margin-bottom: 2%;">
<el-input v-model="form_1[index].repeatCount" style="width:300px" disabled></el-input>
</el-form-item>
<el-form-item label="满分" style="margin-bottom: 2%;">
<el-input v-model="form_1[index].maxScore" style="width:300px" disabled></el-input>
</el-form-item>
<el-form-item label="得分" style="margin-bottom: 2%;">
<el-input v-model="form_1[index].score" style="width:300px" disabled></el-input>
</el-form-item>
<el-form-item label="开始时间" >
<el-date-picker
v-model="form_1[index].startTime"
style="width: 240px"
type="datetime"
value-format="timestamp"
disabled
></el-date-picker>
</el-form-item>
<el-form-item label="结束时间" >
<el-date-picker
v-model="form_1[index].endTime"
style="width: 240px"
type="datetime"
value-format="timestamp"
disabled
></el-date-picker>
</el-form-item>
<el-form-item label="合理用时" style="margin-bottom: 2%;">
<el-input v-model="form_1[index].expectTime" style="width:300px" disabled></el-input>
</el-form-item>
<el-form-item label="实验用时" style="margin-bottom: 2%;">
<el-input v-model="form_1[index].timeUsed" style="width:300px" disabled></el-input>
</el-form-item>
<el-form-item label="赋分模型" style="margin-bottom: 2%;">
<el-input v-model="form_1[index].scoringModel" style="width:300px" disabled></el-input>
</el-form-item>
<el-form-item label="备注" style="margin-bottom: 2%;">
<el-input v-model="form_1[index].remarks" style="width:300px" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"></el-button>
</div>
</el-dialog>
</div>
</template>
@ -229,6 +345,7 @@ export default {
name: "Report",
data() {
return {
seqCount: 1,
//
loading: true,
//
@ -247,6 +364,7 @@ export default {
title: "",
//
open: false,
openDetail: false,
//
queryParams: {
pageNum: 1,
@ -265,8 +383,7 @@ export default {
//
rules: {
},
domains: [],
fromList:[]
domains: []
};
},
created() {
@ -281,10 +398,12 @@ export default {
this.total = response.total;
this.loading = false;
});
this.seqCount = 1 ;
},
//
cancel() {
this.open = false;
this.openDetail = false;
this.reset();
},
//
@ -329,10 +448,24 @@ export default {
const id = row.id || this.ids
getReport(id).then(response => {
this.form = response.data;
this.domains = response.data.steps;
this.form_1 = response.data.steps;
this.open = true;
this.title = "修改报告提交";
});
},
/** 详情按钮操作 */
handleDetail(row) {
this.reset();
const id = row.id || this.ids
getReport(id).then(response => {
this.form = response.data;
this.domains = response.data.steps;
this.form_1 = response.data.steps;
this.openDetail = true;
this.title = "查看报告详情";
});
},
/** 提交按钮 */
submitForm() {
this.form.steps = this.form_1;
@ -373,7 +506,6 @@ export default {
//
addform() {
this.domains.push({
formName: this.form.appUrl, //
key: Date.now()
})
this.form_1.push({
@ -384,7 +516,7 @@ export default {
timeUsed:null,
scoringModel:null,
remarks:null,
seq:null,
seq: this.seqCount++,
startTime:null,
endTime:null,
repeatCount:null

Loading…
Cancel
Save