文档服务地址:http://47.92.0.57:3000/ 周报索引地址:http://47.92.0.57:3000/s/NruNXRYmV

Commit 97bd2c8e by 王腾

Merge branch 'develop' of https://gitlab.redhtc.com/Berlincen/DA-Platform into develop

parents 3c4369d7 2177509f
var baseURL = 'http://localhost:9100/api'
var baseURL = 'http://47.92.1.107/api'
export {
baseURL
......
......@@ -8,12 +8,16 @@
<pieces-table :task-id="task.id" showProgress isCheck>
<!-- 仅当executor不为undefined时(即有人标注)显示功能按钮 -->
<template v-slot:option="slotProps">
<el-button v-if="slotProps.executor && !slotProps.executor.state" type="primary" size="mini" plain
@click="goto(slotProps.file, slotProps.piece, slotProps.executor)">待审核</el-button>
<!-- 有人标注,状态为0(未审核),显示,有人标注状态为1(已审核),不显示 -->
<el-button v-if="slotProps.executor && !slotProps.executor.state"
type="primary" size="mini" plain
@click="goto(slotProps.file, slotProps.piece, slotProps.executor)">
待审核
</el-button>
<el-button v-if="slotProps.executor && slotProps.executor.state" type="success" size="mini" plain
@click="goto(slotProps.file, slotProps.piece, slotProps.executor)">修改</el-button>
<!-- 没有人标注或者未审核的的不能导出 -->
<el-button type="primary" size="mini" plain :disabled="!slotProps.executor || !slotProps.executor.state"
@click="exportFile(slotProps.piece.type, slotProps.executor.relation_id)" >导出</el-button>
</template>
......
......@@ -36,7 +36,6 @@
<script>
import '@/mock/api.js'
import {getSlice} from '@/assets/js/api/slice.js'
export default {
name: 'pieces-table',
props: {
......@@ -82,8 +81,6 @@ export default {
var res = await this.axios.get('/slice/getPieces', { params })
this.tableData = res.data
res.data.forEach(piece => { self.getFiles(piece.id) })
getSlice()
},
methods: {
selectionChange (val) {
......
......@@ -6,10 +6,10 @@
<span class="filter-lable">任务名称:</span>
<el-input class="filter-input" prefix-icon="el-icon-search" v-model="keyword" placeholder="请输入任务名称"></el-input><br/>
</div>
<div class="filter-item">
<!-- <div class="filter-item">
<span class="filter-lable">发布者:</span>
<el-input class="filter-input" prefix-icon="el-icon-search" v-model="creatorName" placeholder="请输入发布者名称"></el-input>
</div>
</div> -->
<div class="filter-item">
<span class="filter-lable">类型:</span>
<el-checkbox-group v-model="taskType">
......@@ -21,8 +21,8 @@
<div class="filter-item">
<el-button class="filter-button" type="primary" @click="search()">查询</el-button>
</div>
<el-divider></el-divider>
</div>
<el-divider></el-divider>
<div class="tasklist-container">
<div class="tasklist">
<div class="task-item" v-for="(item, index) in tasks" :key='index'>
......@@ -94,15 +94,20 @@ export default {
float: left;
width: 70%;
.filter-container{
overflow: hidden;
.filter-item{
text-align: left;
float: left;
margin-left: 10px;
margin-bottom: 15px;
height: 40px;
line-height: 40px;
.filter-lable{
width: 6em;
width: 5em;
display: inline-block;
}
.filter-input{
width: 300px;
width: 200px;
}
.el-checkbox-group{
display: inline;
......
......@@ -1227,12 +1227,26 @@ export default {
// alert("请打分和填写准确率");
// return;
// }
// 2=>标注者标对的,1=>审查者后加的,0=>标错的
var yesAll = 0
var yesTmp = 0
this.canvasAllCheck.forEach(e =>{
if(e === 2) {
yesAll++;
yesTmp++;
}
else if(e === 1 || e === 0) {
yesAll++;
}
})
this.axios({
method: "get",
params: {
userId: this.$route.params.executor.id,
fileId: this.$route.params.file.id,
score: this.computeScore
score: this.computeScore,
num: yesAll,
correctnum: yesTmp
},
url: "task/gradePieces"
}).then(res => {
......
......@@ -1000,12 +1000,37 @@ export default {
// alert("请打分和填写准确率");
// return;
// }
// 2=>标注者标对的,1=>审查者后加的,0=>标错的
var yesAll = 0
var yesTmp = 0
// console.log(this.checkLayer)
// console.log(this.checkLand)
this.checkLayer.forEach(e =>{
if(e == 2) {
yesAll++;
yesTmp++;
}
else if(e == 1 || e === 0) {
yesAll++;
}
})
this.checkLand.forEach(e =>{
if(e == 2) {
yesAll++;
yesTmp++;
}
else if(e == 1 || e === 0) {
yesAll++;
}
})
this.axios({
method: "get",
params: {
userId: this.$route.params.executor.id,
fileId: this.$route.params.file.id,
score: this.computeScore
score: this.computeScore,
num: yesAll,
correctnum: yesTmp
},
url: "task/gradePieces"
}).then(res => {
......
......@@ -12,6 +12,8 @@
<el-tree
:data="treeData"
show-checkbox
check-strictly
@check="handleNodeClick"
default-expand-all
node-key="id"
ref="tree"
......@@ -27,13 +29,6 @@
style="margin-top: 9px;margin-right: 20px;float:right"
plain
>提交</el-button>
<el-button
type="primary"
style="margin-top: 9px;margin-right: 20px;float:right"
@click="uploadToken"
size="small"
plain
>保存</el-button>
</div>
</div>
</div>
......@@ -118,6 +113,17 @@ export default {
this.piece = this.$route.params.piece;
},
methods: {
handleNodeClick(data, checked, node) {
if (checked === true) {
this.checkedId = data.id;
this.$refs.treeForm.setCheckedKeys([data.id]);
} else {
if (this.checkedId == data.id) {
this.$refs.treeForm.setCheckedKeys([data.id]);
}
}
this.uploadToken();
},
// 插入数据库
insertDocument() {
// console.log("userId" + this.$store.state.userInfo.userId);
......
......@@ -12,6 +12,8 @@
<el-tree
:data="treeData"
show-checkbox
check-strictly
@check="handleNodeClick"
default-expand-all
node-key="id"
ref="tree"
......@@ -27,13 +29,6 @@
size="small"
plain
>提交</el-button>
<el-button
type="primary"
style="margin-top: 9px;margin-right: 20px;float:right"
@click="uploadToken"
size="small"
plain
>修改</el-button>
</div>
</div>
</div>
......@@ -140,6 +135,17 @@ export default {
this.executors = this.$route.params.executor;
},
methods: {
handleNodeClick(data, checked, node) {
if (checked === true) {
this.checkedId = data.id;
this.$refs.treeForm.setCheckedKeys([data.id]);
} else {
if (this.checkedId == data.id) {
this.$refs.treeForm.setCheckedKeys([data.id]);
}
}
this.uploadToken();
},
countScore() {
this.rightScore++;
this.computeScore = (this.rightScore / this.allScore) * 100;
......
......@@ -22,7 +22,7 @@
<!-- 实体列表 -->
<div class="sidebar-box3">
<div>
<div class="img-list-title3">实体/属性模板</div>
<div class="img-list-title3">标注:{{this.token.word}}</div>
<div class="img-title-list-box4">
<div>
<div style="overflow: auto;height: calc(100vh - 61px - 100px - 180px - 50px);">
......@@ -30,6 +30,8 @@
<el-tree
:data="treeData"
show-checkbox
check-strictly
@check="handleNodeClick"
default-expand-all
node-key="id"
ref="tree"
......@@ -63,7 +65,6 @@
<div class="content2" @mouseup="select2()">
<el-table
:data="nowContent.tableData"
:cell-style="cellStyle"
border
style="width: 100%,height:200px"
@cell-click="select"
......@@ -157,7 +158,7 @@ export default {
},
allContent: [],
numOfSheet: 0,
treeToArray: []
treeToArray: [],
};
},
beforeMount() {
......@@ -167,6 +168,17 @@ export default {
this.piece = this.$route.params.piece;
},
methods: {
handleNodeClick(data, checked, node) {
if (checked === true) {
this.checkedId = data.id;
this.$refs.treeForm.setCheckedKeys([data.id]);
} else {
if (this.checkedId == data.id) {
this.$refs.treeForm.setCheckedKeys([data.id]);
}
}
this.uploadToken();
},
// 插入数据库
insertDocument() {
// console.log("userId" + this.$store.state.userInfo.userId);
......
......@@ -22,7 +22,7 @@
<!-- 实体列表 -->
<div class="sidebar-box3">
<div>
<div class="img-list-title3">实体/属性模板</div>
<div class="img-list-title3">标注:{{this.token.word}}</div>
<div class="img-title-list-box4">
<div>
<div style="overflow: auto;height: calc(100vh - 61px - 100px - 180px - 50px);">
......@@ -30,6 +30,8 @@
<el-tree
:data="treeData"
show-checkbox
check-strictly
@check="handleNodeClick"
default-expand-all
node-key="id"
ref="tree"
......@@ -40,23 +42,29 @@
<el-button
type="primary"
style="margin-top: 9px;margin-right: 20px;float:right"
@click="save"
size="small"
plain
>提交</el-button>
<el-button
type="primary"
style="margin-top: 9px;margin-right: 20px;float:right"
@click="uploadToken"
size="small"
plain
>确定</el-button>
>修改</el-button>
</div>
</div>
</div>
</div>
</el-aside>
<!-- 文件界面 -->
<el-main class="filter-container2" style="background-color: #FFFFFF">
<el-main class="filter-container3" style="background-color: #FFFFFF">
<div style="overflow-y:auto;height:100%;">
<!-- 表格界面 -->
<div class="content2">
<div class="content3">
<el-table
:data="nowContent.tableData"
:cell-style="cellStyle"
border
style="width: 100%,height:200px"
@cell-click="select"
......@@ -70,50 +78,34 @@
></el-table-column>
</el-table>
</div>
<!-- 表格界面 -->
<!-- 打分 -->
<!--div v-if="this.$route.query.isCheck == '1'"-->
<el-row>
<el-col :span="21">
<div class="content_left">
<div class="content_left1">
<div
class="tokenList3"
class="tokenList1"
v-for="it in tokenList"
:key="it"
style="user-select:none; float: left;"
>
<el-tag
size="small"
@click="changeToken(it)"
closable
:disable-transitions="false"
@close="deleteToken(it)"
>
<a class="token3" v-html="it.word"></a>
</el-tag>
</div>
<el-checkbox>
<a style="font-size: 18px;" v-html="it.word"></a>
<a style="font-size: 14px;">: 实体</a>
<a style="font-size: 14px;" v-html="it.entityId"></a>
<a style="font-size: 14px;">属性</a>
<a style="font-size: 14px;" v-html="it.attribute"></a>
<!--el-button
style="margin-left: auto;font-size: 12px"
@click="countScore()"
size="mini"
type="text"
>O</el-button-->
</el-checkbox>
</div>
</el-col>
<el-col :span="3">
<div class="content_right">
<div class="button1">
<el-button type="primary" @click="commentScore = true">打分</el-button>
<!-- <el-button type="primary" @click="submit()">提交</el-button>-->
<el-dialog title="请打分" :visible.sync="commentScore" width="400px">
<el-form :model="scoreForm">
<el-form-item label="标注准确率" :label-width="formLabelWidth">
<el-input v-model="scoreForm.accuracy" autocomplete="off" clearable></el-input>
</el-form-item>
<el-form-item label="标注得分" :label-width="formLabelWidth">
<el-input v-model="scoreForm.score" autocomplete="off" clearable></el-input>
</el-form-item>
<el-button class="button1" type="primary" @click="addScore()">确认</el-button>
</el-form>
</el-dialog>
</div>
<div style="overflow:auto;font-size: 15px;float: right;">
计算得分 =
<b style="font-size: 20px">{{this.computeScore}}</b>
</div>
</el-col>
</el-row>
</div>
</el-main>
</el-container>
......@@ -125,6 +117,7 @@ import FileSaver from "file-saver";
export default {
data() {
return {
computeScore: 0,
documentId: "",
// 文章
file: null,
......@@ -182,7 +175,7 @@ export default {
},
formLabelWidth: "120px",
executors: [],
treeToArray: []
treeToArray: [],
};
},
beforeMount() {
......@@ -193,6 +186,17 @@ export default {
this.executors = this.$route.params.executor;
},
methods: {
handleNodeClick(data, checked, node) {
if (checked === true) {
this.checkedId = data.id;
this.$refs.treeForm.setCheckedKeys([data.id]);
} else {
if (this.checkedId == data.id) {
this.$refs.treeForm.setCheckedKeys([data.id]);
}
}
this.uploadToken();
},
// 插入数据库
insertDocument() {
// console.log("userId" + this.$store.state.userInfo.userId);
......@@ -534,27 +538,37 @@ export default {
// this.$message("打分成功");
}
},
// submit() {
// // alert("打分成功");
// // this.$router.push({path: '/taskhall'});
// // // alert("inin");
// // this.axios({
// // method: "get",
// // params: {
// // userId: this.$route.params.executor.id,
// // fileId: this.file.id,
// // scoreForm: this.scoreForm,
// // },
// // url: "task/gradePieces",
// // }).then((res) => {
// // if (res.code == 0) {
// // alert("分数提交失败!");
// // } else if (res.code == 1) {
// // alert("打分成功");
// // this.$router.push({ path: "/taskhall" });
// // }
// // });
// },
save() {
this.submit();
this.$router.push({ path: "/check" });
},
submit() {
// alert("打分成功");
// console.log("route:")
// console.log(this.$route.params.executor.id)
// if(this.scoreForm.score == '' || this.scoreForm.accuracy == ''){
// alert("请打分和填写准确率");
// return;
// }
this.axios({
method: "get",
params: {
userId: this.$route.params.executor.id,
fileId: this.$route.params.file.id,
score: this.computeScore,
},
url: "task/gradePieces",
}).then((res) => {
// console.log(res);
// console.log("dafennjg");
if (res.code == 0) {
alert("分数提交失败!");
} else if (res.code == 1) {
// alert("打分成功");
// this.$router.push({ path: "/taskhall" });
}
});
},
},
mounted: function () {
this.insertDocument();
......@@ -613,4 +627,35 @@ export default {
.token {
font-size: 18px;
}
.filter-container3 {
margin-right: 40px;
margin-left: 20px;
margin-top: 40px;
height: calc(100vh - 61px - 100px);
//float: center;
width: 100%;
@include whiteBoard;
.content3 {
overflow: auto;
height: calc(100vh - 61px - 100px - 170px);
text-align: left;
font-size: 20px;
line-height: 30px;
}
.content_left1 {
width: 100%;
overflow: auto;
height: 100px;
margin-top: 1px;
.tokenList1 {
margin: 3px;
}
}
.button1 {
overflow: auto;
float: right;
margin-right: 10px;
margin-top: 10px;
}
}
</style>
......@@ -8,10 +8,12 @@ from views.task import task
from views.slice import slice
from views.file import data
from views.imageAnnotation import image
from playhouse.flask_utils import FlaskDB
from dao.model import mysql
from config.config import DevelopmentConfig
app = Flask(__name__)
FlaskDB(app, mysql)
CORS(app)
app.config.from_object(DevelopmentConfig)
......
......@@ -184,25 +184,19 @@ def get_state(user_id, data_id):
# 获取某文件的标注者信息
def get_executors(data_id):
try:
find = Relation.select(Relation.user_id, Relation.relation_id, Relation.flag2).where(
find = Relation.select(Relation.user_id, Relation.data_id, Relation.flag, Relation.flag2).where(
Relation.data_id == data_id, Relation.flag == 1)
index = 0
list = []
while index < len(find):
name = User.get_username(find[index].user_id)
list.append(
{
'id': find[index].user_id,
'relation_id': find[index].relation_id,
name = User.get_username(find[0].user_id)
data = [{
'id': find[0].user_id,
'relation_id': find[0].relation_id,
'nickname': name,
'state': find[index].flag2,
}
)
index += 1
'state': find[0].flag2,
}]
except:
return Result(0, "get failed", {})
else:
return Result(1, "ok", list)
return Result(1, "ok", data)
def get_relation_id(uid, did):
......@@ -271,6 +265,7 @@ def check_slice_completed(slice_id):
else:
return False
def check_slice_shenhe_completed(slice_id):
try:
find = Relation.select().where(Relation.slice_id == slice_id)
......@@ -290,4 +285,4 @@ if __name__ == '__main__':
# Relation.delete().where(Relation.relation_id == 67).execute()
# print(get_state(1, 5))
# create_relation(3, 1, 2)
print(find_slice(26))
print(get_executors(1).code)
......@@ -10,6 +10,12 @@ collectionTemplate = db.template
# 插入文档
def insert(collection, document):
"""
:param collection: 数据库表名
:param document: 插入的内容,如:{"documentId": "XXXX", "templateId": "XXX", ……}
:return: <pymongo.results.InsertOneResult object at 0x10d68b558>
"""
try:
a = collection.insert(document)
return a
......@@ -20,6 +26,11 @@ def insert(collection, document):
# 获取所有文档
def findAll(collection):
"""
:param collection: 数据库表名
:return: list [document,document,document,……]
"""
try:
results = collection.find() # 获取为cursor
x = []
......@@ -38,6 +49,12 @@ def findAll(collection):
# 获取单个文档
def findOne(collection, condition):
"""
:param collection: 数据库表名
:param condition: 查询条件,如:{"documentId":"XXXX","templateId":"XXX", ……}
:return: {"documentId": "XXXXX", "templateId": "XXX", ……}
"""
if condition is None:
return None
try:
......@@ -56,6 +73,13 @@ def findOne(collection, condition):
# 修改单个文档
def revOne(collection, condition, reset):
"""
:param collection: 数据库表名
:param condition: 查询条件,如:{"documentId":"XXXX","templateId":"XXX", ……}
:param reset: 修改的内容,如:{"$set": {"state": "0"}}
:return: <pymongo.results.UpdateResult object at 0x10d17b678>
"""
try:
result = collection.update_one(condition, reset)
return result
......@@ -66,6 +90,13 @@ def revOne(collection, condition, reset):
# 向tokenList中添加一个token
def addToken(collection, condition, token):
"""
:param collection: 数据库表名
:param condition: 查询条件,如:{"documentId":"XXXX","templateId":"XXX", ……}
:param token: token的内容
:return: tokenId string
"""
try:
tokenId = str(uuid.uuid1()).replace('-', '')
# print(tokenId)
......@@ -79,6 +110,13 @@ def addToken(collection, condition, token):
# tokenList中删除一个token
def deleteToken(collection, condition, token):
"""
:param collection: 数据库表名
:param condition: 查询条件,如:{"documentId":"XXXX","templateId":"XXX", ……}
:param token: token的内容,如:{"tokenId":"XXX"}
:return: <pymongo.results.UpdateResult object at 0x10d17b678>
"""
try:
result = collection.update_one(condition, {"$pull": {'tokenList': token}})
return result
......@@ -89,6 +127,12 @@ def deleteToken(collection, condition, token):
# tokenList中修改一个token
def revToken(collection, condition, token):
"""
:param collection: 数据库表名
:param condition: 查询条件,如:{"documentId": "XXXX", "templateId":"XXX", ……}
:param token: token的内容,如:{"tokenId": "XXX", "word":"XXXX", ……}
"""
try:
# print(token['tokenId'])
collection.update_one(condition, {"$pull": {'tokenList': {'tokenId': token['tokenId']}}})
......@@ -100,6 +144,13 @@ def revToken(collection, condition, token):
# tokenList中查找一个token
def findToken(collection, condition, token):
"""
:param collection: 数据库表名
:param condition: 查询条件,如:{"documentId": "XXXX", "templateId":"XXX", ……}
:param token: {"tokenId": "XXX"}
:return: token 的具体内容
"""
try:
result = collection.find_one(condition) # 查询条件
if result is None:
......@@ -114,6 +165,12 @@ def findToken(collection, condition, token):
# 获取所有模板
def findAllTemplate(collection):
"""
:param collection: 数据库表名
:return: list [document,document,document,……]
document = {"templateId": "", "templateName":"", "entityList":"", "templateType":""}
"""
try:
results = collection.find() # 获取为cursor
x = []
......@@ -130,7 +187,7 @@ def findAllTemplate(collection):
print(e)
# 获取单个模板
# 获取单个模板(跟获取单个文档相同)
def findOneTemplate(collection, condition):
if condition is None:
return None
......@@ -146,6 +203,13 @@ def findOneTemplate(collection, condition):
# 获取某条件的模板
def findSomeTemplates(collection, condition):
"""
:param collection: 数据库表名
:param condition: 查询条件,如:{"templateId": "XXXX", "templateType":"XXX", ……}
:return: list [document,document,document,……]
document = {"templateId": "", "templateName":"", "entityList":"", "templateType":""}
"""
if condition is None:
return None
try:
......@@ -169,6 +233,13 @@ def findSomeTemplates(collection, condition):
# 插入模板
def insertTemplate(collection, template):
"""
:param collection: 数据库表名
:param template: {"templateId": "", "templateName":"", "entityList":"", "templateType":"", "creatorId":""}
:return: list [document,document,document,……]
document = {"templateId": "", "templateName":"", "entityList":"", "templateType":""}
"""
try:
collection.insert(template)
a = findAllTemplate(collection)
......@@ -180,6 +251,12 @@ def insertTemplate(collection, template):
# 删除某一模板
def deleteTemplate(collection, template):
"""
:param collection: 数据库表名
:param template: template: {"templateId": ""}
:return: {"templateId": "", "templateName":"", "entityList":"", "templateType":"", "creatorId":""}
"""
try:
result = collection.find_one(template)
collection.delete_one(template)
......
1.数据单创建任务;
2.分数准确率,发布分数等检验;
3.bug(登录时候的无反馈,用户页面的无反馈)
4.bug(slice/getpieces 400 error)
某些任务在getSlice时候taskId未传递
\ No newline at end of file
......@@ -24,6 +24,7 @@ def getTokenList():
return_dict['return_info'] = '请求参数有误'
return json.dumps(return_dict, ensure_ascii=False)
# 前端传给后端
documentId = get_Data.get('documentId', None)
if documentId is None:
return_dict['return_code'] = '201'
......@@ -38,6 +39,7 @@ def getTokenList():
return_dict['return_info'] = '获取失败'
return json.dumps(return_dict, ensure_ascii=False)
# 后端传给前端 return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': result.get('tokenList')}
return_dict['result'] = result.get('tokenList')
return json.dumps(return_dict, ensure_ascii=False)
......@@ -57,6 +59,7 @@ def addToken():
return_dict['return_info'] = '请求参数有误'
return json.dumps(return_dict, ensure_ascii=False)
# 前端传给后端
documentId = get_Data.get('documentId', None)
token = get_Data.get('token', None)
if documentId is None or token is None:
......@@ -77,6 +80,7 @@ def addToken():
return_dict['return_info'] = '插入失败'
return json.dumps(return_dict, ensure_ascii=False)
# 后端传给前端 return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': result}
return_dict['result'] = result
return json.dumps(return_dict, ensure_ascii=False)
......@@ -95,6 +99,7 @@ def deleteToken():
return_dict['return_info'] = '请求参数有误'
return json.dumps(return_dict, ensure_ascii=False)
# 前端传给后端
documentId = get_Data.get('documentId', None)
tokenId = get_Data.get('tokenId', None)
if documentId is None or tokenId is None:
......@@ -118,6 +123,8 @@ def deleteToken():
mongodbApi.deleteToken(collectionTest, {"documentId": documentId}, {"tokenId": tokenId})
# 后端传给前端 return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': False}
# return_dict['result'] = result
return json.dumps(return_dict, ensure_ascii=False)
......@@ -137,6 +144,7 @@ def revToken():
return_dict['return_info'] = '请求参数有误'
return json.dumps(return_dict, ensure_ascii=False)
# 前端传给后端
documentId = get_Data.get('documentId', None)
token = get_Data.get('token', None)
if documentId is None or token is None:
......@@ -161,6 +169,7 @@ def revToken():
mongodbApi.revToken(collectionTest, {"documentId": documentId}, token)
# return_dict['result'] = result
# 后端传给前端 return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': False}
return json.dumps(return_dict, ensure_ascii=False)
......@@ -178,6 +187,7 @@ def insertDocument():
return_dict['return_info'] = '请求参数有误'
return json.dumps(return_dict, ensure_ascii=False)
# 前端传给后端
templateId = get_Data.get('templateId', None)
creatorId = get_Data.get('creatorId', None)
annotatorId = get_Data.get('annotatorId', None)
......@@ -209,6 +219,7 @@ def insertDocument():
return_dict['return_info'] = '插入失败'
return json.dumps(return_dict, ensure_ascii=False)
# 后端传给前端 return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': documentId}
return_dict['result'] = documentId
return json.dumps(return_dict, ensure_ascii=False)
......@@ -227,6 +238,7 @@ def revDocumentState():
return_dict['return_info'] = '请求参数有误'
return json.dumps(return_dict, ensure_ascii=False)
# 前端传给后端
documentId = get_Data.get('documentId', None)
if documentId is None:
......@@ -248,8 +260,10 @@ def revDocumentState():
return_dict['return_info'] = '修改失败'
return json.dumps(return_dict, ensure_ascii=False)
# 调用通用函数
Relation.set_result_id(result.get("annotatorId"), result.get("fileId"), documentId)
# 后端传给前端 return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': False}
return json.dumps(return_dict, ensure_ascii=False)
......@@ -266,6 +280,7 @@ def createTemplated():
return_dict['code'] = '0'
return json.dumps(return_dict, ensure_ascii=False)
# 前端传给后端
templateName = get_Data.get('templateName', None)
templateType = get_Data.get('templateType', None)
creatorId = get_Data.get('creatorId', None)
......@@ -292,6 +307,7 @@ def createTemplated():
return_dict['message'] = result_system
return json.dumps(return_dict, ensure_ascii=False)
# 后端传给前端 return_dict = {'code': '1', 'message': result}
return_dict['message'] = result
return json.dumps(return_dict, ensure_ascii=False)
......@@ -310,6 +326,7 @@ def getTemplated():
return_dict['code'] = '0'
return json.dumps(return_dict, ensure_ascii=False)
# 前端传给后端
creatorId = get_Data.get('creatorId', None)
if creatorId is None:
......@@ -322,6 +339,7 @@ def getTemplated():
return_dict['message'] = result_system
return json.dumps(return_dict, ensure_ascii=False)
# 后端传给前端 return_dict = {'code': '1', 'message': result}
return_dict['message'] = result
return json.dumps(return_dict, ensure_ascii=False)
......@@ -340,6 +358,7 @@ def getOneTemplate():
return_dict['return_info'] = '请求参数有误'
return json.dumps(return_dict, ensure_ascii=False)
# 前端传给后端
templateId = get_Data.get('templateId', None)
if templateId is None:
......@@ -354,6 +373,7 @@ def getOneTemplate():
return_dict['return_info'] = '请求参数有误'
return json.dumps(return_dict, ensure_ascii=False)
# 后端传给前端 return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': result}
return_dict['result'] = result
return json.dumps(return_dict, ensure_ascii=False)
......@@ -372,6 +392,7 @@ def deleteTemplate():
return_dict['return_info'] = '请求参数有误'
return json.dumps(return_dict, ensure_ascii=False)
# 前端传给后端
templateId = get_Data.get('templateId', None)
if templateId is None:
......@@ -386,5 +407,6 @@ def deleteTemplate():
return_dict['return_info'] = '模板不存在'
return json.dumps(return_dict, ensure_ascii=False)
# 后端传给前端 return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': False}
return json.dumps(return_dict, ensure_ascii=False)
......@@ -67,46 +67,46 @@ def delFile():
return jsonify({"code": 1, "msg": "succeed "})
# 显示文档
@uploadDownload.route('/getfile/<path>', methods=['GET'])
def today(path):
fileStr = open(os.path.join(basedir, UPLOAD_FOLDER, path), 'r', encoding='UTF-8').read()
x1 = [{"file": fileStr}]
return json.dumps(x1, ensure_ascii=False)
# 显示表格
@uploadDownload.route('/getExcel/<path>', methods=['GET'])
def read_excel(path):
# 打开文件
workbook = xlrd.open_workbook(os.path.join(basedir, UPLOAD_FOLDER, path))
statement = []
# 遍历sheets
sheets = len(workbook.sheets())
data = {"numOfSheet": sheets}
for sheet in range(sheets):
d1 = {"sheetName": workbook.sheet_by_index(sheet).name}
rows = workbook.sheet_by_index(sheet).nrows
cols = workbook.sheet_by_index(sheet).ncols
d1.update({"numOfRow": rows})
d1.update({"numOfCol": cols})
d2 = []
for row in range(rows):
for col in range(cols):
ctype = workbook.sheet_by_index(sheet).cell(row, col).ctype
cell = workbook.sheet_by_index(sheet).cell_value(row, col)
if ctype == 2 and cell % 1 == 0.0:
cell = int(cell)
cell = str(cell)
elif ctype == 3:
date = datetime(*xldate_as_tuple(cell, 0))
cell = date.strftime('%Y/%m/%d %H:%M:%S')
d2.append({"value": cell})
d1.update({"content": d2})
statement.append(d1)
data.update({"content": statement})
return json.dumps(data, ensure_ascii=False)
# # 显示文档
# @uploadDownload.route('/getfile/<path>', methods=['GET'])
# def today(path):
# fileStr = open(os.path.join(basedir, UPLOAD_FOLDER, path), 'r', encoding='UTF-8').read()
# x1 = [{"file": fileStr}]
# return json.dumps(x1, ensure_ascii=False)
# # 显示表格
# @uploadDownload.route('/getExcel/<path>', methods=['GET'])
# def read_excel(path):
# # 打开文件
# workbook = xlrd.open_workbook(os.path.join(basedir, UPLOAD_FOLDER, path))
# statement = []
#
# # 遍历sheets
# sheets = len(workbook.sheets())
# data = {"numOfSheet": sheets}
# for sheet in range(sheets):
# d1 = {"sheetName": workbook.sheet_by_index(sheet).name}
# rows = workbook.sheet_by_index(sheet).nrows
# cols = workbook.sheet_by_index(sheet).ncols
# d1.update({"numOfRow": rows})
# d1.update({"numOfCol": cols})
# d2 = []
# for row in range(rows):
# for col in range(cols):
# ctype = workbook.sheet_by_index(sheet).cell(row, col).ctype
# cell = workbook.sheet_by_index(sheet).cell_value(row, col)
# if ctype == 2 and cell % 1 == 0.0:
# cell = int(cell)
# cell = str(cell)
# elif ctype == 3:
# date = datetime(*xldate_as_tuple(cell, 0))
# cell = date.strftime('%Y/%m/%d %H:%M:%S')
# d2.append({"value": cell})
# d1.update({"content": d2})
# statement.append(d1)
# data.update({"content": statement})
# return json.dumps(data, ensure_ascii=False)
# 显示图片url
......@@ -178,7 +178,9 @@ def getFileContent():
return_dict['return_info'] = '请求参数有误'
return json.dumps(return_dict, ensure_ascii=False)
# 前端传给后端
documentId = get_Data.get('documentId')
result = mongodbApi.findOne(collectionTest, {"documentId": documentId})
# 判断是否查询到结果
......@@ -189,6 +191,8 @@ def getFileContent():
url = result.get('textUrl')
fileStr = open(os.path.join(basedir, UPLOAD_FOLDER, url), 'r', encoding='UTF-8').read()
# 后端传给前端 return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': fileStr}
return_dict['result'] = fileStr
return json.dumps(return_dict, ensure_ascii=False)
......@@ -205,7 +209,9 @@ def getExcelContent():
return_dict['return_info'] = '请求参数有误'
return json.dumps(return_dict, ensure_ascii=False)
# 前端传给后端
documentId = data['documentId']
result = mongodbApi.findOne(collectionTest, {"documentId": documentId})
# 判断是否查询到结果
......@@ -261,23 +267,25 @@ def getExcelContent():
d1.update({"content": d3})
statement.append(d1)
data.update({"content": statement})
# 后端传给前端 return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': data}
return_dict["result"] = data
return json.dumps(return_dict, ensure_ascii=False)
# 下载文本
@uploadDownload.route('/downloadContent', methods=['POST'])
def downloadContent():
get_Data = request.get_data()
get_Data = json.loads(get_Data.decode('utf-8'))
documentId = get_Data.get('documentId')
result = mongodbApi.findOne(collectionTest, {"documentId": documentId})
url = result.get('textUrl')
file_dir = os.path.join(basedir, UPLOAD_FOLDER, url)
return send_file(file_dir, as_attachment=True, attachment_filename=url)
# # 下载文本
# @uploadDownload.route('/downloadContent', methods=['POST'])
# def downloadContent():
# get_Data = request.get_data()
# get_Data = json.loads(get_Data.decode('utf-8'))
#
# documentId = get_Data.get('documentId')
# result = mongodbApi.findOne(collectionTest, {"documentId": documentId})
#
# url = result.get('textUrl')
# file_dir = os.path.join(basedir, UPLOAD_FOLDER, url)
#
# return send_file(file_dir, as_attachment=True, attachment_filename=url)
# 打包下载
......@@ -298,6 +306,7 @@ def downloadFile():
# 下载压缩包接口
@uploadDownload.route('/downloadZip/<relationId>', methods=['GET'])
def downloadZip(relationId):
# 前端传给后端
relationId = int(relationId)
result = mongodbApi.findOne(collectionTest, {"relationId": relationId})
......@@ -327,4 +336,5 @@ def downloadZip(relationId):
f.write(fpath, arcname=arcname) # 写进去 压缩!
f.close() # 关闭
# 后端传给前端
return send_file(zipname, as_attachment=True, attachment_filename=new_name)
......@@ -2,23 +2,10 @@ import json
from flask import Blueprint
from flask import request
from dao import User
from dao.model import mysql
user = Blueprint("user", __name__, url_prefix="/api/user")
@user.before_request
def db_connect():
mysql.connect()
@user.after_request
def db_close(response):
if not mysql.is_closed():
mysql.close()
return response
@user.route("/signup", methods=["Post"])
def signup():
# print("signup")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment