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

Commit 3c4369d7 by 王腾

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

parents da76cc4d 1766d334
......@@ -5,7 +5,7 @@
<div class="tasklist">
<div class="task-item" v-for="(item, index) in tasks" :key='index'>
<div>{{item.name}}</div>
<div>发布者:{{item.creator}}&emsp;&emsp;发布时间:{{item.date|formatDate}}&emsp;&emsp;任务状态:已完成
<div>发布者:{{item.creator}}&emsp;&emsp;发布时间:{{item.date|formatDate}}&emsp;&emsp;任务状态:{{item.state}}
</div>
<el-button class="task-enter-btn1" type="primary" @click="detail(item)" plain>查看任务</el-button>
</div>
......
......@@ -3,8 +3,22 @@
<div class="taskhall-left">
<div class="filter-container">
<div class="filter-item">
任务名称:
<el-input class="filter-input" prefix-icon="el-icon-search" v-model="keyword" placeholder="请输入查询条件"></el-input>
<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">
<span class="filter-lable">发布者:</span>
<el-input class="filter-input" prefix-icon="el-icon-search" v-model="creatorName" placeholder="请输入发布者名称"></el-input>
</div>
<div class="filter-item">
<span class="filter-lable">类型:</span>
<el-checkbox-group v-model="taskType">
<el-checkbox label="文本"></el-checkbox>
<el-checkbox label="图片"></el-checkbox>
<el-checkbox label="图层"></el-checkbox>
</el-checkbox-group>
</div>
<div class="filter-item">
<el-button class="filter-button" type="primary" @click="search()">查询</el-button>
</div>
<el-divider></el-divider>
......@@ -47,6 +61,8 @@ export default {
activeName: '任务大厅',
tasks: [],
keyword: '',
creatorName: '',
taskType: [],
condition: {}
}
},
......@@ -58,11 +74,11 @@ export default {
})
},
search () {
if (this.keyword) {
this.condition = {keyword: this.keyword}
} else {
this.condition = {}
}
var condition = {}
if (this.keyword) { condition.keyword = this.keyword }
if (this.creatorName) { condition.creatorName = this.creatorName }
if (this.taskType) { condition.taskType = this.taskType }
this.condition = condition
}
}
}
......@@ -79,14 +95,18 @@ export default {
width: 70%;
.filter-container{
.filter-item{
display: flex;
align-items: center;
text-align: left;
margin-bottom: 15px;
.filter-lable{
width: 6em;
display: inline-block;
}
.filter-input{
margin-left: 20px;
margin-right: 20px;;
width: 300px;
}
.el-checkbox-group{
display: inline;
}
}
}
}
......
......@@ -1131,7 +1131,7 @@ export default {
yesAll++;
yesTmp++;
}
else if(e === 1) {
else if(e === 1 || e === 0) {
yesAll++;
}
})
......
......@@ -885,7 +885,7 @@ export default {
yesAll++;
yesTmp++;
}
else if(e == 1) {
else if(e == 1 || e === 0) {
yesAll++;
}
})
......@@ -894,7 +894,7 @@ export default {
yesAll++;
yesTmp++;
}
else if(e == 1) {
else if(e == 1 || e === 0) {
yesAll++;
}
})
......
......@@ -157,6 +157,7 @@ export default {
},
allContent: [],
numOfSheet: 0,
treeToArray: []
};
},
beforeMount() {
......@@ -271,6 +272,15 @@ export default {
this.value = res.result.templateName; // 现在的实体与模板相近,所以就先固定了
// 属性
this.treeData = res.result.entityList;
for (var i = 0; i < this.treeData.length; i++) {
this.treeToArray.push({
id: this.treeData[i].id,
label: this.treeData[i].label,
}); // 属性
if (this.treeData[i].children != []) {
this.transfer(this.treeData[i].children);
}
}
} else {
this.$message({
message: res.return_info,
......@@ -426,6 +436,7 @@ export default {
message: "已保存",
type: "success",
});
this.$refs.tree.setCheckedNodes([]);
} else {
this.$message({
message: res.return_info,
......@@ -471,6 +482,26 @@ export default {
this.token.begin = tag.begin;
this.token.end = tag.end;
this.token.entityId = tag.entityId;
let res = [];
for (var i = 0; i < this.treeToArray.length; i++) {
res[i] = {};
for (var j = 0; j < this.treeToArray.length; j++) {
if (this.treeToArray[j].label == tag.attribute[i]) {
res[i].id = this.treeToArray[j].id;
break;
}
}
}
this.$refs.tree.setCheckedNodes(res);
},
transfer(children) {
if (children == []) return;
for (var i = 0; i < children.length; i++) {
this.treeToArray.push({ id: children[i].id, label: children[i].label });
if (children[i] != []) {
this.transfer(children[i].children);
}
}
},
// 提交已标注文档
submit() {
......@@ -613,4 +644,4 @@ export default {
margin-top: 3px;
margin-bottom: 3px;
}
</style>
\ No newline at end of file
</style>
......@@ -182,6 +182,7 @@ export default {
},
formLabelWidth: "120px",
executors: [],
treeToArray: []
};
},
beforeMount() {
......@@ -297,6 +298,15 @@ export default {
this.value = res.result.templateName; // 现在的实体与模板相近,所以就先固定了
// 属性
this.treeData = res.result.entityList;
for (var i = 0; i < this.treeData.length; i++) {
this.treeToArray.push({
id: this.treeData[i].id,
label: this.treeData[i].label,
}); // 属性
if (this.treeData[i].children != []) {
this.transfer(this.treeData[i].children);
}
}
} else {
this.$message({
message: res.return_info,
......@@ -335,6 +345,7 @@ export default {
return;
}
}
this.$refs.tree.setCheckedNodes([]);
console.log(" token select" + JSON.stringify(this.token));
console.log(" tokenList select" + JSON.stringify(this.tokenList));
},
......@@ -410,6 +421,7 @@ export default {
message: "已保存",
type: "success",
});
this.$refs.tree.setCheckedNodes([]);
} else {
this.$message({
message: res.return_info,
......@@ -455,6 +467,26 @@ export default {
this.token.begin = tag.begin;
this.token.end = tag.end;
this.token.entityId = tag.entityId;
let res = [];
for (var i = 0; i < this.treeToArray.length; i++) {
res[i] = {};
for (var j = 0; j < this.treeToArray.length; j++) {
if (this.treeToArray[j].label == tag.attribute[i]) {
res[i].id = this.treeToArray[j].id;
break;
}
}
}
this.$refs.tree.setCheckedNodes(res);
},
transfer(children) {
if (children == []) return;
for (var i = 0; i < children.length; i++) {
this.treeToArray.push({ id: children[i].id, label: children[i].label });
if (children[i] != []) {
this.transfer(children[i].children);
}
}
},
// 打分
addScore() {
......
......@@ -67,23 +67,66 @@ def find_task_by_name(task_name, start, num):
# 查找所有任务(用于任务大厅界面)
# 什么任务会出现在任务大厅中?未被选择完全的任务、未被发布者终止的任务
def find_task(start, num):
def find_task(start, num, keyword, creatorName, taskType):
try:
find = Task.select(Task.task_id, Task.task_name, Task.publish_id, Task.publish_time, Task.task_state).where(
Task.task_state <= 1).order_by(Task.task_id.desc())
if creatorName:
uid = User.get_userid(creatorName)
if keyword:
if creatorName:
find = Task.select(Task.task_id, Task.task_name, Task.publish_id, Task.publish_time, Task.task_state).where(
Task.task_state <= 1, Task.task_name.contains(keyword), Task.publish_id == uid).order_by(Task.task_id.desc())
else:
find = Task.select(Task.task_id, Task.task_name, Task.publish_id, Task.publish_time,Task.task_state).where(
Task.task_state <= 1, Task.task_name.contains(keyword)).order_by(Task.task_id.desc())
else:
if creatorName:
find = Task.select(Task.task_id, Task.task_name, Task.publish_id, Task.publish_time,Task.task_state).where(
Task.task_state <= 1, Task.publish_id == uid).order_by(Task.task_id.desc())
else:
find = Task.select(Task.task_id, Task.task_name, Task.publish_id, Task.publish_time, Task.task_state).where(
Task.task_state <= 1).order_by(Task.task_id.desc())
# typeList记录哪种类型被要求,typeList[type]=1表示被要求
typeList = [0] * 3
for typeItem in taskType:
if typeItem == "文本":
typeList[0] = 1
elif typeItem == "图片":
typeList[1] = 1
else:
typeList[2] = 1
findLen = len(find)
# flagList记录find中哪个task下存在typeList[type]=1的分片
flagList = [0] * findLen
if taskType:
i = 0
while i < findLen:
taskId = find[i].task_id
sliceList = Slice.find_slicelist_by_taskId(taskId)
for sliceItem in sliceList:
sliceType = int(sliceItem.type)
if typeList[sliceType] == 1:
flagList[i] = 1
break
i += 1
else:
flagList = [1] * findLen
# 根据taskType数组内容挑选task结果,task Type是一个数组['文本', '图片', '图层'],最多只有这三个元素
index = 0
list = []
while index + start < len(find) and index < num:
user = User.get_username(find[index + start].publish_id)
list.append(
{
'id': find[index + start].task_id,
'creator': user,
'creator_id': find[index + start].publish_id,
'name': find[index + start].task_name,
'date': find[index + start].publish_time.strftime("%Y-%m-%d %H:%M:%S")
}
)
if flagList[index] == 1:
user = User.get_username(find[index + start].publish_id)
list.append(
{
'id': find[index + start].task_id,
'creator': user,
'creator_id': find[index + start].publish_id,
'name': find[index + start].task_name,
'date': find[index + start].publish_time.strftime("%Y-%m-%d %H:%M:%S")
}
)
index += 1
except:
return Result(0, "find failed", {}, 0)
......@@ -151,13 +194,18 @@ def find_task_completed(executor, start, num):
while index + start < len(find) and index < num:
user = User.get_username(find[index + start].publish_id)
if judge_completed(find[index + start].task_id, executor):
if find[index + start].task_state == '4':
state = "已完成"
else:
state = "待审核"
list.append(
{
'id': find[index + start].task_id,
'creator': user,
'creator_id': find[index + start].publish_id,
'name': find[index + start].task_name,
'date': find[index + start].publish_time.strftime("%Y-%m-%d %H:%M:%S")
'date': find[index + start].publish_time.strftime("%Y-%m-%d %H:%M:%S"),
'state': state
}
)
index += 1
......
......@@ -21,6 +21,10 @@ class User(Model):
textAccuracy = DoubleField(null=True, default=0)
postScore = IntegerField(null=False, default=0)
postNum = IntegerField(null=False, default=0)
textcorrectnum = IntegerField(null=False, default=0)
textnum = IntegerField(null=False, default=0)
imagecorrectnum = IntegerField(null=False, default=0)
imagenum = IntegerField(null=False, default=0)
class Meta:
database = mysql
......@@ -64,15 +68,23 @@ def login(username, pwd):
def personnal_information(id):
try:
tmp = User.get(User.usrId == id)
if tmp.imagenum == 0:
imageAccuracy = 0
else:
imageAccuracy = float(tmp.imagecorrectnum)/float(tmp.imagenum)
if tmp.textnum == 0:
textAccuracy = 0
else:
textAccuracy = float(tmp.textcorrectnum)/float(tmp.textnum)
data = {
'userName': tmp.userName,
'userId': tmp.usrId,
'email': tmp.mail,
'identity': tmp.type,
'imageIntegration': tmp.imageScore,
'imageAccuracy': tmp.imageAccuracy,
'imageAccuracy': imageAccuracy,
'textIntegration': tmp.textScore,
'textAccuracy': tmp.textAccuracy,
'textAccuracy': textAccuracy,
'releaseTaskIntegration': tmp.postScore,
'taskNumber': tmp.postNum
}
......@@ -153,6 +165,59 @@ def get_username(id):
return tmp.userName
def get_userid(name):
try:
tmp = User.get(User.userName == name)
except:
return tmp
else:
return tmp.usrId
def add_text_correctnum(num, userid):
try:
tmp = User.get(User.usrId == userid)
tmp.textcorrectnum += num
tmp.save()
except:
return False
else:
return True
def add_text_num(num, userid):
try:
tmp = User.get(User.usrId == userid)
tmp.textnum += num
tmp.save()
except:
return False
else:
return True
def add_image_correctnum(num, userid):
try:
tmp = User.get(User.usrId == userid)
tmp.imagecorrectnum += num
tmp.save()
except:
return False
else:
return True
def add_image_num(num, userid):
try:
tmp = User.get(User.usrId == userid)
tmp.imagenum += num
tmp.save()
except:
return False
else:
return True
if __name__ == '__main__':
User.drop_table()
User.create_table()
......
......@@ -14,11 +14,11 @@ def get_tasks():
keyword = request.args.get('keyword') # 搜索任务时的搜索关键词
executor = request.args.get('executor') # 任务标注者id
creator = request.args.get('creator') # 任务发布者id
creatorName = request.args.get('creatorName')
taskType = request.args.getlist('taskType[]')
state = request.args.get('state') # 任务状态:已完成、待审核等
# get函数用于可选参数,在未接收到参数时返回空值
if keyword:
ret = Task.find_task_by_name(keyword, pagesize * (currentpage - 1), pagesize)
elif creator:
if creator:
if state:
ret = Task.find_task_by_creator(creator, pagesize * (currentpage - 1), pagesize, state)
elif executor:
......@@ -27,7 +27,7 @@ def get_tasks():
else:
ret = Task.find_task_my_task(executor, pagesize * (currentpage - 1), pagesize)
else:
ret = Task.find_task(pagesize * (currentpage - 1), pagesize)
ret = Task.find_task(pagesize * (currentpage - 1), pagesize, keyword, creatorName, taskType)
res = {
'code': ret.code,
'message': ret.message,
......@@ -42,7 +42,6 @@ def get_tasks():
@task.route("/createTask", methods=["Post"])
def create_task():
data = request.get_json(silent=True)
print(data)
id = int(data['taskId'])
if id >= 0:
find_slice = Slice.find_slice_by_task(id)
......@@ -55,7 +54,6 @@ def create_task():
ret = Task.create_task(data['userId'], data['taskName'])
tid = ret.data
i = 0
print(data)
while i < len(data['task']['domains']):
s = Slice.create_text_slice(tid, data['task']['domains'][i]['templateId'])
j = 0
......@@ -85,6 +83,7 @@ def create_task():
data['task']['layerDomains'][i]['fileList'][j]['url'])
j += 1
i += 1
User.add_post_num(data['userId'], len(data['task']['domains'])+len(data['task']['pictureDomains'])+len(data['task']['layerDomains']))
res = {
'code': ret.code,
'message': ret.message,
......@@ -192,6 +191,8 @@ def grade():
data_id = request.args['fileId']
userId = request.args['userId']
score = int(request.args['score'])
correctnum = int(request.args['correctnum'])
num = int(request.args['num'])
ret = Data.find_slice_id(data_id)
if ret.code == 0:
......@@ -206,9 +207,12 @@ def grade():
slice_type = Slice.find_type_by_slice(slice_id)
if slice_type == '0':
User.add_text_score(userId, score)
User.add_text_correctnum(userId, correctnum)
User.add_text_num(userId, num)
else:
User.add_image_score(userId, score)
User.add_image_correctnum(userId, correctnum)
User.add_image_num(userId, num)
ret = Relation.set_grade(userId, slice_id, data_id, score)
taskid = Slice.find_task_by_slice(slice_id)
Task.set_state(taskid, 'check')
......
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