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

Commit 69150fc5 by 李严凡

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

parents dfed49ee da579e75
......@@ -13,6 +13,7 @@
"dependencies": {
"axios": "^0.19.2",
"element-ui": "^2.13.1",
"node-sass": "^4.14.1",
"vue": "^2.5.2",
"vue-router": "^3.0.1"
},
......
......@@ -21,4 +21,9 @@ body{
color: #2c3e50;
margin:0;
}
html,body,#app{
height: 100%;
width: 100%;
margin: 0;
}
</style>
body,html{
height: 100%;
}
*{
margin: 0;
box-sizing: border-box;
}
<template>
<div class="task-container">
<div class="task-panel">
<h2>桥梁勘测文件标注</h2>
<p>发布时间:2019-12-13</p>
<p>文本大小:200k</p>
<h2>{{task.title}}</h2>
<p>发布者:{{task.creater}}</p>
<p>发布时间:{{task.date}}</p>
<el-divider></el-divider>
<el-table
:data="tableData"
height="400"
style="width: 100%">
<el-table-column
prop="id"
label="分片id"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="模板名称"
width="180">
</el-table-column>
<el-table-column
prop="number"
label="文件数量">
</el-table-column>
<el-table-column
prop="biaozhu"
label="标注者">
</el-table-column>
<el-table-column
prop="time"
label="标注时间">
</el-table-column>
<el-table-column
fixed="right"
label="操作"
width="180">
<template slot-scope="scope">
<el-button type="primary">查看详情</el-button>
</template>
</el-table-column>
</el-table>
<pieces-table :task-id="task.id" :mode="3"></pieces-table>
</div>
</div>
</template>
<script>
import PiecesTable from './PiecesTable'
export default {
name: 'task',
data() {
name: 'check-detail',
components: {
PiecesTable
},
data () {
return {
task: {},
piecesMap: {},
pieces: [],
checkedPieces: [],
isIndeterminate: true,
checkAll: false,
tableData: [{
id: '10247',
name: '植物标注模板',
number: '3',
biaozhu: '小明',
time: '2017-12-13'
}, {
id: '10258',
name: '文本标注模板',
number: '3',
biaozhu: 'dell',
time: '2017-12-13'
}, {
id: '10117',
name: '植物标注模板',
number: '8',
biaozhu: '小宏',
time: '2017-12-13'
}, {
id: '101329',
name: '桥梁标注模板',
number: '8',
biaozhu: '小白',
time: '2017-12-13'
}, {
id: '10128',
name: '植物标注模板',
number: '4',
biaozhu: '小明',
time: '2017-12-13'
}, {
id: '10154',
name: '植物标注模板',
number: '10',
biaozhu: '小明',
time: '2017-12-13'
}, {
id: '10125',
name: '桥梁标注模板',
number: '8',
biaozhu: '小明',
time: '2017-12-13'
}]
task: null
}
},
mounted () {
var self = this
var task = JSON.parse(decodeURIComponent(this.$route.params.task))
this.task = task
// 根据任务id拉取分片信息
this.axios.get('/getPieces', {
params: {
id: task.id
}
}).then(res => {
var piecesMap = {}
var pieces = []
for (let piece of res.data.data) {
piecesMap[piece.id] = {
fileNum: piece.fileNum,
templateName: piece.templateName
}
pieces.push(piece.id)
}
self.piecesMap = piecesMap
self.pieces = pieces
})
},
beforeMount () {
this.task = JSON.parse(decodeURIComponent(this.$route.params.task))
},
methods: {
handleCheckAllChange (val) {
this.checkedPieces = val ? this.pieces : []
this.isIndeterminate = false
},
handleCheckedPiecesChange (value) {
let checkedCount = value.length
this.checkAll = checkedCount === this.pieces.length
this.isIndeterminate = checkedCount > 0 && checkedCount < this.pieces.length
},
begin () {
if (this.checkedPieces.length === 0) {
alert('请选择分片')
}
start(){
this.$router.push('/selected');
}
}
}
......@@ -152,22 +43,5 @@
text-align: left;
padding: 30px 20px 30px 20px;
}
.pieces{
margin-bottom: 30px;
.el-checkbox{
display: block;
margin: 0px;
padding: 9px 0 9px 10px;
}
.checkbox{
span{
display: inline-block;
min-width: 15em;
}
&:nth-child(odd){
background-color: ghostwhite;
}
}
}
}
</style>
......@@ -9,7 +9,7 @@
<span v-if="item.type == 'text'">文本大小:{{item.size}}k</span>
<span v-else>图片张数:{{item.size}}</span>
</div>
<el-button class="task-enter-btn1" type="primary" @click="detail()" plain>审核任务</el-button>
<el-button class="task-enter-btn1" type="primary" @click="detail(item)" plain>审核任务</el-button>
</div>
</div>
<div class="page-navigator">
......@@ -49,8 +49,11 @@
deleteRow(index, rows) {//删除改行
rows.splice(index, 1);
},
detail(){
this.$router.push('/checkdetail')
detail(task){
this.$router.push({
name: 'checkdetail',
params: { task: encodeURIComponent(JSON.stringify(task)) }
})
}
}
}
......
......@@ -9,7 +9,7 @@
<span v-if="item.type == 'text'">文本大小:{{item.size}}k</span>
<span v-else>图片张数:{{item.size}}</span>
</div>
<el-button class="task-enter-btn1" type="primary" @click="detail()" plain>查看任务</el-button>
<el-button class="task-enter-btn1" type="primary" @click="detail(item)" plain>查看任务</el-button>
<el-button class="task-enter-btn2" type="primary" plain>导出任务</el-button>
</div>
</div>
......@@ -50,8 +50,11 @@
deleteRow(index, rows) {//删除改行
rows.splice(index, 1);
},
detail(){
this.$router.push('/completeddetail')
detail(task){
this.$router.push({
name: 'completeddetail',
params: { task: encodeURIComponent(JSON.stringify(task)) }
})
}
}
}
......
<template>
<div class="task-container">
<div class="task-panel">
<h2>桥梁勘测文件标注</h2>
<p>发布者:小明</p>
<p>发布时间:2019-12-13</p>
<p>文本大小:200k</p>
<h2>{{task.title}}</h2>
<p>发布者:{{task.creater}}</p>
<p>发布时间:{{task.date}}</p>
<el-divider></el-divider>
<el-table
:data="tableData"
height="400"
style="width: 100%">
<el-table-column
prop="id"
label="分片id"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="模板名称"
width="180">
</el-table-column>
<el-table-column
prop="number"
label="文件数量">
</el-table-column>
<el-table-column
fixed="right"
label="操作"
width="180">
<template slot-scope="scope">
<el-button type="primary">查看详情</el-button>
</template>
</el-table-column>
</el-table>
<pieces-table :task-id="task.id" :mode="2"></pieces-table>
</div>
</div>
</template>
<script>
export default {
name: 'task',
data() {
return {
task: {},
piecesMap: {},
pieces: [],
checkedPieces: [],
isIndeterminate: true,
checkAll: false,
tableData: [{
id: '10247',
name: '植物标注模板',
number: '3'
}, {
id: '10258',
name: '文本标注模板',
number: '3'
}, {
id: '10117',
name: '植物标注模板',
number: '8'
}, {
id: '101329',
name: '桥梁标注模板',
number: '8'
}, {
id: '10128',
name: '植物标注模板',
number: '4'
}, {
id: '10154',
name: '植物标注模板',
number: '10'
}, {
id: '10125',
name: '桥梁标注模板',
number: '8'
}]
}
},
mounted () {
var self = this
var task = JSON.parse(decodeURIComponent(this.$route.params.task))
this.task = task
// 根据任务id拉取分片信息
this.axios.get('/getPieces', {
params: {
id: task.id
}
}).then(res => {
var piecesMap = {}
var pieces = []
for (let piece of res.data.data) {
piecesMap[piece.id] = {
fileNum: piece.fileNum,
templateName: piece.templateName
}
pieces.push(piece.id)
}
self.piecesMap = piecesMap
self.pieces = pieces
})
},
methods: {
handleCheckAllChange (val) {
this.checkedPieces = val ? this.pieces : []
this.isIndeterminate = false
},
handleCheckedPiecesChange (value) {
let checkedCount = value.length
this.checkAll = checkedCount === this.pieces.length
this.isIndeterminate = checkedCount > 0 && checkedCount < this.pieces.length
},
begin () {
if (this.checkedPieces.length === 0) {
alert('请选择分片')
}
}
import PiecesTable from './PiecesTable'
export default {
name: 'task',
components: {
PiecesTable
},
data () {
return {
task: null
}
},
beforeMount () {
this.task = JSON.parse(decodeURIComponent(this.$route.params.task))
},
methods: {
start () {
this.$router.push('/selected')
}
}
}
</script>
<style lang="scss" scoped>
@import '../assets/scss/config.scss';
@import '../assets/scss/mixin.scss';
.task-container{
@include container;
.task-panel{
@include whiteBoard;
text-align: left;
padding: 30px 20px 30px 20px;
}
.pieces{
margin-bottom: 30px;
.el-checkbox{
display: block;
margin: 0px;
padding: 9px 0 9px 10px;
}
.checkbox{
span{
display: inline-block;
min-width: 15em;
}
&:nth-child(odd){
background-color: ghostwhite;
}
}
}
@import "../assets/scss/config.scss";
@import "../assets/scss/mixin.scss";
.task-container {
@include container;
.task-panel {
@include whiteBoard;
text-align: left;
padding: 30px 20px 30px 20px;
}
}
</style>
......@@ -13,12 +13,12 @@
</div>
<div class="input-item">
密码:
<el-input class="input" v-model="password" placeholder="请输入密码"></el-input>
<el-input class="input" v-model="password" placeholder="请输入密码" type="password"></el-input>
</div>
<transition name="fade">
<div class="input-item" v-if="activeIndex == '2'">
确认密码:
<el-input class="input" v-model="confirm" placeholder="请确认密码"></el-input>
<el-input class="input" v-model="confirm" placeholder="请确认密码" type="password"></el-input>
</div>
</transition>
<transition name="fade">
......
<template>
<div class="task-container">
<div class="task-panel">
<h2>桥梁勘测文件标注</h2>
<p>发布者:小明</p>
<p>发布时间:2019-12-13</p>
<p>文本大小:200k</p>
<h2>{{task.title}}</h2>
<p>发布者:{{task.creater}}</p>
<p>发布时间:{{task.date}}</p>
<el-divider></el-divider>
<el-table
:data="tableData"
height="400"
style="width: 100%">
<el-table-column
prop="id"
label="分片id"
width="180">
</el-table-column>
<el-table-column
prop="type"
label="文件类别"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="文件名">
</el-table-column>
<el-table-column
fixed="right"
label="操作"
width="180">
<template slot-scope="scope">
<el-button type="primary" @click="start(scope.row.type)">开始任务</el-button>
</template>
</el-table-column>
</el-table>
<pieces-table :task-id="task.id" :mode="1"></pieces-table>
</div>
</div>
</template>
<script>
export default {
name: 'task',
data() {
return {
task: {},
piecesMap: {},
pieces: [],
checkedPieces: [],
isIndeterminate: true,
checkAll: false,
tableData: [{
id: '10247',
name: '植物标注.txt',
type: '文本'
}, {
id: '10258',
name: '文本标注.doc',
type: '文本'
}, {
id: '10117',
name: '植物标注.jpg',
type: '图层'
}, {
id: '101329',
name: '桥梁标注.doc',
type: '文本'
}, {
id: '10128',
name: '植物标注2.txt',
type: '文本'
}, {
id: '10154',
name: '植物标注2.doc',
type: '文本'
}, {
id: '10125',
name: '桥梁标注.jpg',
type: '图像'
}]
}
},
mounted () {
var self = this
var task = JSON.parse(decodeURIComponent(this.$route.params.task))
this.task = task
// 根据任务id拉取分片信息
this.axios.get('/getPieces', {
params: {
id: task.id
}
}).then(res => {
var piecesMap = {}
var pieces = []
for (let piece of res.data.data) {
piecesMap[piece.id] = {
fileNum: piece.fileNum,
templateName: piece.templateName
}
pieces.push(piece.id)
}
self.piecesMap = piecesMap
self.pieces = pieces
})
},
methods: {
handleCheckAllChange (val) {
this.checkedPieces = val ? this.pieces : []
this.isIndeterminate = false
},
handleCheckedPiecesChange (value) {
let checkedCount = value.length
this.checkAll = checkedCount === this.pieces.length
this.isIndeterminate = checkedCount > 0 && checkedCount < this.pieces.length
},
begin () {
if (this.checkedPieces.length === 0) {
alert('请选择分片')
}
},
start(type){
if(type=='文本'){
this.$router.push('/select');
}
else if(type=='图像'){
this.$router.push('/image');
}
else{
this.$router.push('/layer');
}
}
import PiecesTable from './PiecesTable'
export default {
name: 'on-going-task-detail',
components: {
PiecesTable
},
data () {
return {
task: null
}
},
beforeMount () {
this.task = JSON.parse(decodeURIComponent(this.$route.params.task))
},
methods: {
}
}
</script>
<style lang="scss" scoped>
@import '../assets/scss/config.scss';
@import '../assets/scss/mixin.scss';
.task-container{
@include container;
.task-panel{
@include whiteBoard;
text-align: left;
padding: 30px 20px 30px 20px;
}
.pieces{
margin-bottom: 30px;
.el-checkbox{
display: block;
margin: 0px;
padding: 9px 0 9px 10px;
}
.checkbox{
span{
display: inline-block;
min-width: 15em;
}
&:nth-child(odd){
background-color: ghostwhite;
}
}
}
@import "../assets/scss/config.scss";
@import "../assets/scss/mixin.scss";
.task-container {
@include container;
.task-panel {
@include whiteBoard;
text-align: left;
padding: 30px 20px 30px 20px;
}
}
</style>
<template>
<div class="pieces-table-container">
<el-table
ref="multipleTable"
:data="tableData"
style="width: 100%"
:row-class-name="tableRowClassName"
@selection-change="handleSelectionChange"
>
<el-table-column v-if="mode == 0" type="selection" width="55"></el-table-column>
<el-table-column prop="id" label="分片id" width="120"></el-table-column>
<el-table-column prop="fileType" label="文件类别" width="120"></el-table-column>
<el-table-column prop="fileNum" label="文件数量" width="120"></el-table-column>
<el-table-column prop="templateName" label="模板名" :width="mode == 1 ? 240 : ''"></el-table-column>
<el-table-column v-if="mode == 1" label="进度">
<template>
<el-progress :percentage="50" style="width:150px" :format="format"></el-progress>
</template>
</el-table-column>
<el-table-column type="expand">
<div class="file">
<i class="el-icon-document"></i>
<span class="file-name">文本标注.doc</span>12.8KB
<el-button type="primary" size="mini" v-if="mode == 1" plain>标注</el-button>
<el-button type="primary" size="mini" v-if="mode == 2" plain>详情</el-button>
<el-button type="primary" size="mini" v-if="mode == 3" plain>审核</el-button>
</div>
<div class="file">
<i class="el-icon-document-copy"></i>
<span class="file-name">图层文件.kml</span>31.5KB
<el-button type="primary" size="mini" v-if="mode == 1" plain>标注</el-button>
<el-button type="primary" size="mini" v-if="mode == 2" plain>详情</el-button>
<el-button type="primary" size="mini" v-if="mode == 3" plain>审核</el-button>
</div>
<div class="file">
<i class="el-icon-picture-outline"></i>
<span class="file-name">图片文件.jpg</span>1.8MB
<i v-if="mode == 1" class="el-icon-success"></i>
<el-button type="primary" size="mini" v-if="mode == 2" plain>详情</el-button>
<el-button type="primary" size="mini" v-if="mode == 3" plain>审核</el-button>
<!-- <el-button type="primary" size="mini" v-if="mode == 1" plain>标注</el-button> -->
</div>
</el-table-column>
</el-table>
<el-button v-if="mode == 0" type="primary" style="margin-top:20px" @click="complete">完成选择</el-button>
</div>
</template>
<script>
export default {
name: 'pieces-table',
props: {
taskId: Number, // 接收任务的id
mode: {
type: Number,
default: 0
} // 模式:0显示选择框,不显示标注按钮,1不显示选择框,显示标注按钮, 2不显示选择框,不显示标注按钮,显示详情按钮. 3不显示选择框,不显示标注按钮,显示审核按钮
},
data () {
return {
tableData: [],
multipleSelection: []
}
},
beforeMount () {
// 根据任务id,拉取分片信息
var id = this.taskId
var self = this
this.axios.get('/getPieces', {
params: { id }
}).then(res => {
self.tableData = res.data.data
})
},
methods: {
handleSelectionChange (val) {
this.multipleSelection = val
},
complete () {
if (this.multipleSelection.length === 0) {
alert('请选择分片')
} else {
this.$router.push('/ongoing')
}
},
tableRowClassName ({row}) {
if (row.fileType === '图像') {
return 'image-row'
} else if (row.fileType === '图层') {
return 'coverage-row'
} else {
return 'text-row'
}
},
format (percentage) {
return '20/30'
}
}
}
</script>
<style>
.el-table .image-row {
background: oldlace;
}
.el-table .coverage-row {
background: #fef0f0;
}
.el-table .text-row {
background: #ecf5ff;
}
</style>
<style lang="scss" scopde>
.file{
position: relative;
height: 40px;
line-height: 40px;
.file-name{
display: inline-block;
min-width: 240px;
}
.el-button{
position: absolute;
right: 0;
top: 5px;
}
.el-icon-success{
position: absolute;
right: 20px;
top: 5px;
color: #67c23a;
}
}
</style>
<template>
<div class="task-container">
<div class="task-panel">
<h2>{{task.title}}</h2>
<p>发布者:{{task.creater}}</p>
<p>发布时间:{{task.date}}</p>
<p v-if="task.type == 'text'">文本大小:{{task.size}}k</p>
<p v-else>图片张数:{{task.size}}</p>
<el-divider></el-divider>
<h2>选择分片</h2>
<div class="pieces">
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
<div style="margin: 15px 0;"></div>
<el-checkbox-group v-model="checkedPieces" @change="handleCheckedPiecesChange">
<el-checkbox class="checkbox" v-for="pieceId in pieces" :label="pieceId" :key="pieceId">
<span>分片编号:{{pieceId}}</span><span>文件数:{{piecesMap[pieceId].fileNum}}</span><span>模板:{{piecesMap[pieceId].templateName}}</span>
</el-checkbox>
</el-checkbox-group>
</div>
<el-button type="primary" @click="begin">开始任务</el-button>
</div>
<div class="task-container">
<div class="task-panel">
<h2>{{task.title}}</h2>
<p>发布者:{{task.creater}}</p>
<p>发布时间:{{task.date}}</p>
<el-divider></el-divider>
<h2>选择分片</h2>
<pieces-table :task-id="task.id" :mode="0"></pieces-table>
</div>
</div>
</template>
<script>
import PiecesTable from './PiecesTable'
export default {
name: 'task',
components: {
PiecesTable
},
data () {
return {
task: {},
piecesMap: {},
pieces: [],
checkedPieces: [],
isIndeterminate: true,
checkAll: false
task: null
}
},
mounted () {
var self = this
var task = JSON.parse(decodeURIComponent(this.$route.params.task))
this.task = task
// 根据任务id拉取分片信息
this.axios.get('/getPieces', {
params: {
id: task.id
}
}).then(res => {
var piecesMap = {}
var pieces = []
for (let piece of res.data.data) {
piecesMap[piece.id] = {
fileNum: piece.fileNum,
templateName: piece.templateName
}
pieces.push(piece.id)
}
self.piecesMap = piecesMap
self.pieces = pieces
})
beforeMount () {
this.task = JSON.parse(decodeURIComponent(this.$route.params.task))
},
methods: {
handleCheckAllChange (val) {
this.checkedPieces = val ? this.pieces : []
this.isIndeterminate = false
},
handleCheckedPiecesChange (value) {
let checkedCount = value.length
this.checkAll = checkedCount === this.pieces.length
this.isIndeterminate = checkedCount > 0 && checkedCount < this.pieces.length
},
begin () {
if (this.checkedPieces.length === 0) {
alert('请选择分片')
} else {
this.$router.push('/ongoing')
}
}
}
}
</script>
......@@ -89,22 +42,5 @@ export default {
text-align: left;
padding: 30px 20px 30px 20px;
}
.pieces{
margin-bottom: 30px;
.el-checkbox{
display: block;
margin: 0px;
padding: 9px 0 9px 10px;
}
.checkbox{
span{
display: inline-block;
min-width: 15em;
}
&:nth-child(odd){
background-color: ghostwhite;
}
}
}
}
</style>
......@@ -15,10 +15,7 @@
<div class="tasklist">
<div class="task-item" v-for="(item, index) in tasks" :key='index'>
<div>{{item.title}}</div>
<div>发布人:{{item.creater}}&emsp;&emsp;发布时间:{{item.date}}&emsp;&emsp;
<span v-if="item.type == 'text'">文本大小:{{item.size}}k</span>
<span v-else>图片张数:{{item.size}}</span>
</div>
<div>发布人:{{item.creater}}&emsp;&emsp;发布时间:{{item.date}}</div>
<el-button class="task-enter-btn" type="primary" plain @click="enterTask(item)">进入任务</el-button>
</div>
</div>
......
......@@ -9,7 +9,7 @@
<span v-if="item.type == 'text'">文本大小:{{item.size}}k</span>
<span v-else>图片张数:{{item.size}}</span>
</div>
<el-button class="task-enter-btn1" @click="detail()" type="primary" plain>查看任务详情</el-button>
<el-button class="task-enter-btn1" @click="detail(item)" type="primary" plain>查看任务详情</el-button>
</div>
</div>
<div class="page-navigator">
......@@ -49,8 +49,11 @@
deleteRow(index, rows) {//删除改行
rows.splice(index, 1);
},
detail(){
this.$router.push('/ongoingdetail')
detail(task){
this.$router.push({
name: 'ongoingtaskdetail',
params: { task: encodeURIComponent(JSON.stringify(task)) }
})
}
}
}
......
......@@ -18,6 +18,7 @@ Mock.mock(/\/api\/getPieces\?id=[0-9]+/, {
'data|5-20': [{
'id|1-65535': 1,
'fileNum|10-50': 1,
'templateName|1': ['人脸识别标注模板', '动物标注模板', '本文标注模板', '桥梁标注模板', '植物标注模板']
'templateName|1': ['人脸识别标注模板', '动物标注模板', '本文标注模板', '桥梁标注模板', '植物标注模板'],
'fileType|1': ['文本', '图像', '图层']
}]
})
......@@ -13,9 +13,10 @@ import ongoingtaskdetail from '../components/OngoingTaskDetail'
import completeddetail from '../components/CompletedTaskDetail'
import checkdetail from '../components/CheckDetail'
import SelectText from '../components/textAnnotation/SelectText'
import SelectedText from '../components/textAnnotation/SelectedText'
import Table from '../components/textAnnotation/Table'
import imageAnnotiation from '../components/imageAnnotation/imageAnnotiation'
import layerAnnotation from '../components/imageAnnotation/layerAnnotation';
import layerAnnotation from '../components/imageAnnotation/layerAnnotation'
Vue.use(Router)
......@@ -59,27 +60,27 @@ export default new Router({
},
{
path: '/publishtask',
name: publishtask,
name: 'publishtask',
component: publishtask
},
{
path: '/ongoing',
name: ongoingtask,
name: 'ongoingtask',
component: ongoingtask
},
{
path: '/ongoingdetail',
name: ongoingtaskdetail,
path: '/ongoingdetail/:task',
name: 'ongoingtaskdetail',
component: ongoingtaskdetail
},
{
path: '/completeddetail',
name: completeddetail,
path: '/completeddetail/:task',
name: 'completeddetail',
component: completeddetail
},
{
path: '/checkdetail',
name: checkdetail,
path: '/checkdetail/:task',
name: 'checkdetail',
component: checkdetail
},
{
......@@ -88,6 +89,11 @@ export default new Router({
component: SelectText
},
{
path: '/selected',
name: 'SelectedText',
component: SelectedText
},
{
path: '/table',
name: 'table',
component: Table
......
......@@ -7,7 +7,7 @@
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="Python 3.7" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TemplatesService">
......@@ -18,7 +18,4 @@
</list>
</option>
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="Unittests" />
</component>
</module>
\ No newline at end of file
......@@ -3,5 +3,8 @@
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (DAPlatform)" project-jdk-type="Python SDK" />
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7" project-jdk-type="Python SDK" />
<component name="PyCharmProfessionalAdvertiser">
<option name="shown" value="true" />
</component>
</project>
\ No newline at end of file
from flask import Flask, render_template
from flask import Flask, render_template, request
from flask import jsonify
from peewee import *
import os
app = Flask(__name__)
mysql = MySQLDatabase(
'sys',
host='127.0.0.1',
user='root',
passwd='root',
)
# @app.route('/')
# def hello_world():
# return "<h1 style='color:red'>Hello World</h1>"
@app.route('/')
def hello(name=None):
return render_template('index.html', name=name)
from service.common.testss import *
if __name__ == '__main__':
mysql.connect()
app.run()
from peewee import *
from DA import mysql
mysql.connect()
class Data(Model):
name = CharField(null=False)
url = CharField(null=False,unique=True)
class Meta:
database = mysql
#向数据库中添加原始数据
def create_data(name,url):
if not Data.table_exists():
Data.create_table()
try:
data = Data(name=name,url=url)
data.save()
except Exception:
print(0)
else:
print(1)
#根据数据id寻找数据url
def find_data(id):
if not Data.table_exists():
Data.create_table()
try:
data = Data.get(Data.id == id)
except Exception:
print(0)
else:
print(data.url)
if __name__ == '__main__':
create_data('ha','123')
find_data(1)
\ No newline at end of file
from peewee import *
from DA import mysql
from dao import Slice,User,Data
import datetime
mysql.connect()
class Relation(Model):
slice_id = ForeignKeyField(Slice)
user_id = ForeignKeyField(User)
data_id = ForeignKeyField(Data)
flag = BooleanField(default=False)
score = IntegerField(default=0)
receive_time = DateTimeField(default=datetime.datetime.now())
complete_time = DateTimeField()
class Meta:
database = mysql
#创建标注关系
def create_relation(slice_id,user_id,data_id):
if not Relation.table_exists():
Relation.create_table()
try:
relation = Relation(slice_id=slice_id,user_id=user_id,data_id=data_id)
relation.save()
except Exception:
print(0)
else:
print(1)
if __name__ == '__main__':
create_relation(3,1,2)
from peewee import *
from DA import mysql
mysql.connect()
class Slice(Model):
task_id = ForeignKeyField(Task)
model_id = CharField()
illustration = TextField()
Annotaion_number = IntegerField(null=False,default=0)
document_number = IntegerField(null=False,default=0)
type = FixedCharField(null=False)
class Meta:
database = mysql
#创建分片
def create_slice(task_id,model_id,Annotaion_number,document_number,type):
if not Slice.table_exists():
Slice.create_table()
try:
slice = Slice(task_id=task_id,model_id=model_id,Annotaion_number=Annotaion_number,document_number=document_number,type=type)
slice.save()
except Exception:
print(0)
else:
print(slice.id)
#删除分片
def delete_slice(id):
if not Slice.table_exists():
Slice.create_table()
try:
Slice.delete().where(Slice.id==id);
except Exception:
print(0)
else:
print(1)
if __name__ == '__main__':
print(0)
\ No newline at end of file
from peewee import *
from DA import mysql
mysql.connect()
class User(Model):
username = CharField(unique=True,null=False);
password = CharField(null=False);
email = CharField(unique=True,null=False);
type = BooleanField(default=False);
picscore = IntegerField(default=0);
picAccuracy = DoubleField(default=0);
textscore = IntegerField(default=0);
textAccuracy = DoubleField(default=0);
publishscore = IntegerField(default=0);
class Meta:
database = mysql;
#注册功能
def create_user(username,password,email):
if not User.table_exists():
User.create_table()
user = User(username=username,password=password,email=email)
try:
user.save()
except BaseException:
print(0);
else:
print(1)
#登录
def find_user(username,password):
if not User.table_exists():
User.create_table()
try:
p = User.get(User.username == username and User.password == password)
except Exception:
print(0)
else:
print(1)
#个人信息界面根据用户名返回用户信息
def find_information(username):
if not User.table_exists():
User.create_table()
try:
p = User.get(User.username == username)
except Exception:
print(0)
else:
print(p.email)
if __name__ == '__main__':
create_user('333','0','7')
find_information('333')
find_user('123','200')
\ No newline at end of file
from peewee import *
from pymongo import MongoClient
import datetime
mysql = MySQLDatabase(
'test',
host='127.0.0.1',
user='root',
passwd='root',
charset='utf8'
)
# 连接mysql数据库
# mysql.connect();
# 连接mongodb数据库, root:mongodb为角色:登录密码
client = MongoClient('mongodb://root:mongodb@localhost:27017')
# mysql数据库基类
class MysqlBaseModel(Model):
# 内部类
class Meta:
database = mysql; # 每一个继承BaseModel类的子类都是连接db表
# mysql示例类
class User(MysqlBaseModel):
username = CharField(unique=True); # 每个属性都是一个表字段
class Tweet(MysqlBaseModel):
user = ForeignKeyField(User, related_name='tests');
message = TextField();
created_date = DateTimeField(default=datetime.datetime.now);
is_published = BooleanField(default=True);
if __name__ == '__main__':
# mysql操作示例
# User.create_table(); 创建User表
# Tweet.create_table(); 创建Tweet表
# 添加
# user = User.create(username="tom")
# Tweet.create(user=user, message="this is test msg")
# # 查询
# t = Tweet.get(message="this is test msg")
# print(t.user_id)
# print(t.created_date)
# print(t.is_published)
# mongodb操作示例
mongodb = client['test']
collection = mongodb['testcollection'].find()
for t in collection:
print(t)
col = mongodb['test1']
image = {'onepic': '1.jpg', 'twopic': '2.jpg', 'threepic': '3.jpg'}
aim = {'name': 'test_1', 'document': 'this is test msg!', 'image': image}
col.insert_one(aim)
from flask import jsonify
from flask import request
from dao import User
from DA import app
@app.route('/register')
def login():
username = request.form.get('username')
password = request.form.get('password')
email = request.form.get('email')
User.create_user(username,password,email)
return jsonify(username)
\ No newline at end of file
No preview for this file type
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