|
@@ -9,20 +9,22 @@
|
|
|
style="margin:0 0 0 80px;">
|
|
|
<el-form-item label="任务名称" prop="title" style="width: 700px;">
|
|
|
<el-input size="small" v-if="isModifyMode" v-model="task.title"></el-input>
|
|
|
- <span v-if="!isModifyMode">{{task.title}}</span>
|
|
|
- <el-tag v-if="!isModifyMode" :type="task.statusVO&&task.statusVO.style">{{task.statusVO ?
|
|
|
- task.statusVO.text:''}}
|
|
|
+ <span v-if="!isModifyMode">{{ task.title }}</span>
|
|
|
+ <el-tag v-if="!isModifyMode" :type="task.statusVO&&task.statusVO.style">{{
|
|
|
+ task.statusVO ?
|
|
|
+ task.statusVO.text : ''
|
|
|
+ }}
|
|
|
</el-tag>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="任务描述" prop="description" style="width: 700px;">
|
|
|
<el-input autosize v-if="isModifyMode" type="textarea" v-model="task.description"></el-input>
|
|
|
- <span v-if="!isModifyMode">{{task.description ? task.description : '暂无'}}</span>
|
|
|
+ <span v-if="!isModifyMode">{{ task.description ? task.description : '暂无' }}</span>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="任务报价" prop="quotePrice" style="width: 700px;">
|
|
|
<el-input size="small" type="number" v-if="isModifyMode" v-model="task.quotePrice">
|
|
|
<template slot="append">¥</template>
|
|
|
</el-input>
|
|
|
- <span v-if="!isModifyMode">¥{{task.quotePrice}}</span>
|
|
|
+ <span v-if="!isModifyMode">¥{{ task.quotePrice }}</span>
|
|
|
</el-form-item>
|
|
|
<!--<el-form-item type="number" label="任务定价" prop="fixedPrice">-->
|
|
|
<!--<el-input v-if="isModifyMode" v-model="task.fixedPrice">-->
|
|
@@ -33,24 +35,24 @@
|
|
|
<el-form-item label="测试类型" prop="serviceType">
|
|
|
<el-radio-group v-if="isModifyMode" v-model="task.serviceType" @change="handleTestTypeChange">
|
|
|
<span v-for="(item,index) in serviceType" :key="index">
|
|
|
- <el-radio :label="item.code" name="serviceType">{{item.name}}</el-radio>
|
|
|
+ <el-radio :label="item.code" name="serviceType">{{ item.name }}</el-radio>
|
|
|
</span>
|
|
|
</el-radio-group>
|
|
|
- <span class="badge" v-if="!isModifyMode">{{serviceName}}</span>
|
|
|
+ <span class="badge" v-if="!isModifyMode">{{ serviceName }}</span>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="服务序列号" prop="endPoint" style="width: 700px;"
|
|
|
v-if="showBD&&task.endPoint&&currType.type===1"
|
|
|
>
|
|
|
<el-input v-if="isModifyMode" v-model="task.endPoint.serverCode" label="examId"></el-input>
|
|
|
- <span v-if="!isModifyMode&&showBD">{{task.endPoint.serverCode}}</span>
|
|
|
+ <span v-if="!isModifyMode&&showBD">{{ task.endPoint.serverCode }}</span>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="任务可见性" prop="resource" style="width: 700px;">
|
|
|
<div v-if="!isModifyMode">
|
|
|
<!--<div v-if="task.resource=='1'">{{updateLocation(task.location)}}</div>-->
|
|
|
<div v-if="task.resource==0">定向</div>
|
|
|
- <div v-if="task.resource==2">{{resourceType[task.resource]}}</div>
|
|
|
+ <div v-if="task.resource==2">{{ resourceType[task.resource] }}</div>
|
|
|
</div>
|
|
|
<el-tabs
|
|
|
:tab-position="tabPosition"
|
|
@@ -65,7 +67,7 @@
|
|
|
name="type"
|
|
|
v-for="(item,index) in institutionArray"
|
|
|
:key="index"
|
|
|
- >{{item.name}}
|
|
|
+ >{{ item.name }}
|
|
|
</el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-tab-pane>
|
|
@@ -80,14 +82,16 @@
|
|
|
<el-tab-pane :label="resourceType[2]" name="2"></el-tab-pane>
|
|
|
</el-tabs>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="领取人数" prop="contactPhone" v-if="isModifyMode&&task.resource !== '0' && currType.type===0">
|
|
|
+ <el-form-item label="领取人数" prop="contactPhone"
|
|
|
+ v-if="isModifyMode&&task.resource !== '0' && currType.type===0">
|
|
|
<el-input-number v-model="task.participantCount" :min="1" :max="1000" label="领取人数"></el-input-number>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="领取人数" prop="contactPhone" v-if="isModifyMode&&task.resource !== '0' && currType.type===1">
|
|
|
+ <el-form-item label="领取人数" prop="contactPhone"
|
|
|
+ v-if="isModifyMode&&task.resource !== '0' && currType.type===1">
|
|
|
<el-input-number v-model="task.participantCount" :min="2" :max="1000" label="领取人数"></el-input-number>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="领取人数" prop="quotePrice" v-if="!isModifyMode">
|
|
|
- {{task.acceptedCount }}/{{ task.participantCount}}
|
|
|
+ {{ task.acceptedCount }}/{{ task.participantCount }}
|
|
|
</el-form-item>
|
|
|
<el-form-item label="需求文档" prop="doc">
|
|
|
<el-upload
|
|
@@ -132,7 +136,7 @@
|
|
|
:picker-options="pickerOptions"
|
|
|
></el-date-picker>
|
|
|
</div>
|
|
|
- <span v-if="!isModifyMode">{{dateFormat(new Date(task.datetime),'yyyy-MM-dd HH:mm:ss')}}</span>
|
|
|
+ <span v-if="!isModifyMode">{{ dateFormat(new Date(task.datetime), 'yyyy-MM-dd HH:mm:ss') }}</span>
|
|
|
</el-form-item>
|
|
|
<el-form-item v-if="isModifyMode">
|
|
|
<div class="btn btn-small btn-info" @click="updateTask()">确认修改</div>
|
|
@@ -140,7 +144,8 @@
|
|
|
<div class="btn btn-small" @click="cancelMode()">取消</div>
|
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item v-if="editShortLink && task.endPoint.serverCode && taskOperationControl.confirmFinish" label="任务面板链接" props="shortLink">
|
|
|
+ <el-form-item v-if="editShortLink && task.endPoint.serverCode && taskOperationControl.confirmFinish"
|
|
|
+ label="任务面板链接" props="shortLink">
|
|
|
<el-input v-model="shortLink" placeholder="请输入短链接生成任务报告" style="width: 800px">
|
|
|
<template slot="append">
|
|
|
<el-button @click="getTaskDataBoard()">确定</el-button>
|
|
@@ -149,7 +154,7 @@
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item v-if="shortLink && !editShortLink" label="任务面板链接" props="shortLink">
|
|
|
- {{shortLink}}
|
|
|
+ {{ shortLink }}
|
|
|
<i class="el-icon-edit" @click="editShortLink = true" v-if="taskOperationControl.confirmFinish"/>
|
|
|
</el-form-item>
|
|
|
|
|
@@ -195,23 +200,25 @@
|
|
|
trigger="hover"
|
|
|
content="接收任务后请认真完成!">
|
|
|
<el-button v-if="taskOperationControl.receive" type="primary" size="mini" slot="reference"
|
|
|
- @click="receiveTask()">接收任务
|
|
|
+ @click="showTaskCodeModal = !showTaskCodeModal">接收任务
|
|
|
</el-button>
|
|
|
</el-popover>
|
|
|
|
|
|
- <el-button v-if="taskOperationControl.writeReport" type="primary" size="mini" @click="gotoWriteReport()">填写报告
|
|
|
+ <el-button v-if="taskOperationControl.writeReport" type="primary" size="mini" @click="gotoWriteReport()">
|
|
|
+ 填写报告
|
|
|
</el-button>
|
|
|
|
|
|
<el-button v-if="taskOperationControl.update" type="primary" size="mini" @click="modifyForm()">修改任务
|
|
|
</el-button>
|
|
|
|
|
|
- <el-button v-if="featureTaskRecommend && taskOperationControl.taskRecommend" type="primary" size="mini" @click="recommendTask()">任务推荐
|
|
|
+ <el-button v-if="featureTaskRecommend && taskOperationControl.taskRecommend" type="primary" size="mini"
|
|
|
+ @click="recommendTask()">任务推荐
|
|
|
</el-button>
|
|
|
|
|
|
|
|
|
-<!-- <el-button v-if="taskOperationControl.exportTask && task.exportUrl != null && task.exportUrl != ''" type="primary" size="mini">-->
|
|
|
-<!-- <a :href="task.exportUrl" style="color:white">导出任务</a>-->
|
|
|
-<!-- </el-button>-->
|
|
|
+ <!-- <el-button v-if="taskOperationControl.exportTask && task.exportUrl != null && task.exportUrl != ''" type="primary" size="mini">-->
|
|
|
+ <!-- <a :href="task.exportUrl" style="color:white">导出任务</a>-->
|
|
|
+ <!-- </el-button>-->
|
|
|
<el-button v-if="taskOperationControl.exportTask" type="primary" size="mini" @click="toExportTask()">
|
|
|
导出任务
|
|
|
</el-button>
|
|
@@ -220,11 +227,13 @@
|
|
|
上传报告
|
|
|
</el-button>
|
|
|
|
|
|
- <el-button v-if="taskOperationControl.taskDemonstrate" type="success" size="mini" @click="gotoDataboard()">
|
|
|
+ <el-button v-if="taskOperationControl.taskDemonstrate" type="success" size="mini"
|
|
|
+ @click="gotoDataboard()">
|
|
|
任务面板
|
|
|
</el-button>
|
|
|
|
|
|
- <el-button v-if="taskOperationControl.forkTask" type="primary" size="mini" @click="toExportTask()">
|
|
|
+ <el-button v-if="taskOperationControl.forkTask" type="primary" size="mini"
|
|
|
+ @click="showTaskCodeModal = !showTaskCodeModal">
|
|
|
fork任务
|
|
|
</el-button>
|
|
|
<!--<div class="btn btn-small btn-info"-->
|
|
@@ -253,8 +262,8 @@
|
|
|
<el-collapse-item v-for="(item,index) in acceptedUserList" :key="item.id">
|
|
|
<template slot="title">
|
|
|
<el-row style="width: 100%;font-size: 16px">
|
|
|
- <el-col :span="6">{{item.userVO.userName}}</el-col>
|
|
|
- <el-col :span="6">{{item.userVO.email}}</el-col>
|
|
|
+ <el-col :span="6">{{ item.userVO.userName }}</el-col>
|
|
|
+ <el-col :span="6">{{ item.userVO.email }}</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-tag type="success" v-if="item.crowdReportVOS">已提交报告</el-tag>
|
|
|
<el-tag type="info" v-if="!item.crowdReportVOS">未提交报告</el-tag>
|
|
@@ -271,6 +280,14 @@
|
|
|
<!-- <report-list v-if="isAgency" v-bind:reports="reportList" v-bind:taskId="taskId" v-bind:projectId="projectId"/>-->
|
|
|
<!-- <report-list v-bind:reports="reportList" v-bind:taskId="taskId" v-bind:projectId="projectId"/>-->
|
|
|
</div>
|
|
|
+
|
|
|
+ <el-dialog title="请输入任务接收码" :visible.sync="showTaskCodeModal">
|
|
|
+ <el-input v-model="taskValidCode" autocomplete="off" placeholder="请输入任务接收码"></el-input>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="showTaskCodeModal = false;taskValidCode = ''">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="handleTaskCodeValid()">确 定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -311,15 +328,17 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
- featureTaskRecommend:CONFIG.feature_task_recommend,
|
|
|
+ showTaskCodeModal: false,
|
|
|
+ taskValidCode:'',
|
|
|
+ featureTaskRecommend: CONFIG.feature_task_recommend,
|
|
|
taskRecommendUrl: CONFIG.task_recommend_url,
|
|
|
currType: {},
|
|
|
user: {},
|
|
|
- serviceName:'',
|
|
|
+ serviceName: '',
|
|
|
showBD: true,
|
|
|
rolesPermissions: {},
|
|
|
loading: false,
|
|
|
- isModifyMode: false, institutionArray: [],
|
|
|
+ isModifyMode: false, institutionArray: [],
|
|
|
tabPosition: 'top',
|
|
|
resourceType: ResourceType,
|
|
|
serviceType: [],
|
|
@@ -339,7 +358,7 @@ export default {
|
|
|
},
|
|
|
crowdReportUrl: '',
|
|
|
exportTaskUrl: '',
|
|
|
- wordCloud:[],
|
|
|
+ wordCloud: [],
|
|
|
task: {
|
|
|
agencyId: '',
|
|
|
status: '',
|
|
@@ -432,14 +451,14 @@ export default {
|
|
|
} else {
|
|
|
callback()
|
|
|
}
|
|
|
- }, trigger: ['change','blur']
|
|
|
+ }, trigger: ['change', 'blur']
|
|
|
},
|
|
|
],
|
|
|
datetime: [{required: true, message: '截止时间不可为空', trigger: 'blur'}],
|
|
|
},
|
|
|
acceptedUserList: [],
|
|
|
- shortLink:'',
|
|
|
- editShortLink:false,
|
|
|
+ shortLink: '',
|
|
|
+ editShortLink: false,
|
|
|
}
|
|
|
},
|
|
|
watch: {
|
|
@@ -457,28 +476,38 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
methods: {
|
|
|
+ handleTaskCodeValid(){
|
|
|
+ let str1 = this.task.code;
|
|
|
+ let str2 = this.projectId;
|
|
|
+ let str = str1.substring(str1.length-2) + str2.substring(str2.length-2);
|
|
|
+ if(str === this.taskValidCode){
|
|
|
+ //接收码正确,可以正确接收任务
|
|
|
+ this.receiveTask();
|
|
|
+ this.showTaskCodeModal = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
//跳转到任务对应的数据面板
|
|
|
- gotoDataboard(){
|
|
|
+ gotoDataboard() {
|
|
|
window.open(this.task.endPoint.token)
|
|
|
},
|
|
|
//根据短链接获取生成databoard
|
|
|
- getTaskDataBoard(){
|
|
|
+ getTaskDataBoard() {
|
|
|
this.showLoading()
|
|
|
- Http.put(`/api/project/${this.projectId}/task/${this.taskId}/addToken`,{"token":this.shortLink}).then((res)=>{
|
|
|
+ Http.put(`/api/project/${this.projectId}/task/${this.taskId}/addToken`, {"token": this.shortLink}).then((res) => {
|
|
|
this.taskOperationControl = res.taskOperationControl;
|
|
|
this.task.endPoint = res.crowdTaskVO.endPointVO;
|
|
|
this.shortLink = res.crowdTaskVO.endPointVO.token;
|
|
|
- if(this.shortLink != ''){
|
|
|
+ if (this.shortLink != '') {
|
|
|
this.editShortLink = false;
|
|
|
}
|
|
|
this.hideLoading()
|
|
|
})
|
|
|
},
|
|
|
- getServiceByCode(code){
|
|
|
+ getServiceByCode(code) {
|
|
|
let serviceName = this.serviceType.filter((item) => {
|
|
|
return item.code === code;
|
|
|
});
|
|
|
- return serviceName&&serviceName[0]&&serviceName[0]['name']
|
|
|
+ return serviceName && serviceName[0] && serviceName[0]['name']
|
|
|
},
|
|
|
|
|
|
handleTestTypeChange(val) {
|
|
@@ -581,14 +610,14 @@ export default {
|
|
|
},
|
|
|
|
|
|
//获取词云
|
|
|
- getWordCloud(){
|
|
|
+ getWordCloud() {
|
|
|
getTaskWordCloud(this.projectId, this.taskId, this.getTaskCloudSuccess, this.getTaskCloudFail)
|
|
|
},
|
|
|
- getTaskCloudSuccess(words){
|
|
|
+ getTaskCloudSuccess(words) {
|
|
|
this.wordCloud = words.data;
|
|
|
},
|
|
|
- getTaskCloudFail(err){
|
|
|
- notify('error',err)
|
|
|
+ getTaskCloudFail(err) {
|
|
|
+ notify('error', err)
|
|
|
},
|
|
|
|
|
|
//获取任务详情成功时回调函数
|
|
@@ -597,6 +626,7 @@ export default {
|
|
|
// console.log(res)
|
|
|
this.taskId = res.crowdTaskVO.id
|
|
|
this.projectId = res.crowdTaskVO.projectId
|
|
|
+ this.task.code = res.crowdTaskVO.code
|
|
|
this.task.title = res.crowdTaskVO.title
|
|
|
this.task.description = res.crowdTaskVO.description
|
|
|
this.task.serviceType = res.crowdTaskVO.serviceType
|
|
@@ -623,11 +653,11 @@ export default {
|
|
|
this.handleFormatReport(this.acceptedUserList);
|
|
|
this.handleTestTypeChange(res.crowdTaskVO.serviceType);
|
|
|
this.serviceName = this.getServiceByCode(res.crowdTaskVO.serviceType);
|
|
|
- if(res.crowdTaskVO.endPointVO){
|
|
|
- if(res.crowdTaskVO.endPointVO.token){
|
|
|
+ if (res.crowdTaskVO.endPointVO) {
|
|
|
+ if (res.crowdTaskVO.endPointVO.token) {
|
|
|
this.shortLink = res.crowdTaskVO.endPointVO.token;
|
|
|
this.editShortLink = false
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
this.editShortLink = true
|
|
|
}
|
|
|
}
|
|
@@ -814,7 +844,7 @@ export default {
|
|
|
},
|
|
|
|
|
|
// 任务推荐
|
|
|
- recommendTask(){
|
|
|
+ recommendTask() {
|
|
|
let task = {
|
|
|
"title": this.task.title,
|
|
|
"description": this.task.description,
|
|
@@ -825,7 +855,7 @@ export default {
|
|
|
"createTime": this.task.createTime,
|
|
|
"datetime": this.task.datetime
|
|
|
};
|
|
|
- Http.post('/recommendationtest/query',task).then((res)=>{
|
|
|
+ Http.post('/recommendationtest/query', task).then((res) => {
|
|
|
window.open(this.taskRecommendUrl, "_blank");
|
|
|
})
|
|
|
},
|
|
@@ -914,11 +944,11 @@ export default {
|
|
|
notify('error', '结束任务失败:' + error.data)
|
|
|
},
|
|
|
// 导出任务
|
|
|
- toExportTask(){
|
|
|
+ toExportTask() {
|
|
|
exportTask(this.projectId, this.taskId, this.exportTaskSuccess, this.exportTaskFail);
|
|
|
},
|
|
|
// 导出任务成功时的回调函数
|
|
|
- exportTaskSuccess(res){
|
|
|
+ exportTaskSuccess(res) {
|
|
|
this.hideLoading()
|
|
|
console.log(res.data)
|
|
|
this.exportTaskUrl = res.data;
|
|
@@ -926,7 +956,7 @@ export default {
|
|
|
notify('success', '任务导出成功!')
|
|
|
},
|
|
|
// 导出任务失败时的回调函数
|
|
|
- exportTaskFail(error){
|
|
|
+ exportTaskFail(error) {
|
|
|
this.hideLoading()
|
|
|
notify('error', '导出任务失败:' + error.data)
|
|
|
},
|