Browse Source

ADD:增加任务接收需要填写任务接受码

wjj 4 years ago
parent
commit
c232ec24f1
1 changed files with 81 additions and 51 deletions
  1. 81 51
      src/components/task/Task.vue

+ 81 - 51
src/components/task/Task.vue

@@ -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)
     },