Sfoglia il codice sorgente

专利挖掘任务

zhuhao 1 anno fa
parent
commit
c708d381e0

+ 1 - 1
src/utils/model/upload/index.vue

@@ -398,7 +398,7 @@ export default {
 <style lang="scss" scoped>
 .myUpload {
   width: calc(100% - 0px);
-  height: 180px;
+  height: 185px;
   padding: 5px;
 }
 .myUpload1 {

+ 2 - 1
src/views/components/dialog/examine.vue

@@ -125,19 +125,20 @@ export default {
             }
             params.projectId = this.parentForm.projectId//项目id
             params.assoTaskId  = this.parentForm.id//当前任务id
+            params.lastTaskId  = this.parentForm.id//上一级任务的id
           } else {
             params = {
               patentDigProjectDTO: this.parentForm,
               projectTaskDTO: this.form,
             }
           }
-        //  console.log(2,this.form);
           // 区分是哪种审核
           switch (this.form.type) {
             case 1://专利挖掘项目审核
               this.addProjectOpenExamineTask(params)
               break;
             case 5://专利挖掘项目-文件分配任务审核
+              this.$emit('isHandleSave',true)
               this.fileTask(params)
               break;
             case 7://专利挖掘项目-文件列表审核任务

+ 5 - 1
src/views/patentMining/components/dialog/addAndEditProject.vue

@@ -207,6 +207,7 @@
     </el-dialog>
 
     <examine ref="examine"  @taskForm="handleTaskForm"></examine>
+    <addEvent ref="addEvent"></addEvent>
   </div>
 </template>
 
@@ -216,12 +217,14 @@ import { personnelLoading } from '../mixins/index2'
 import choosePerson from '@/views/components/dialog/person.vue'
 import ClientTable from '@/views/client'
 import examine from '@/views/components/dialog/examine.vue'
+import addEvent from '@/views/event/components/dialog/addEvent.vue'
 export default {
   mixins:[personnelLoading],
   components: {
     choosePerson,
     ClientTable,
     examine,
+    addEvent,
   },
   props: {},
   data() {
@@ -386,7 +389,8 @@ export default {
     */
     //打开事件弹窗
     addEvent() {
-
+      let form = {}
+      this.$refs.addEvent.open(form,1)
     },
     //懒加载事件
     loadEvent() {

+ 24 - 19
src/views/patentMining/components/dialog/createTask.vue

@@ -4,11 +4,11 @@
     <el-dialog :title="title" :visible.sync="dialogVisible" width="500px" :before-close="handleClose"
       :close-on-click-modal="false">
       <el-form :model="form" status-icon :rules="rules" ref="form" label-width="120px" class="demo-ruleForm">
-        <el-form-item label="任务名称:" prop="name" >
-          <el-input v-model="form.name" placeholder="请输入任务名称" :disabled="form.id?true:false"></el-input>
+        <el-form-item label="任务名称:" prop="name">
+          <el-input v-model="form.name" placeholder="请输入任务名称" :disabled="form.id ? true : false"></el-input>
         </el-form-item>
         <el-form-item label="任务流程:" prop="processId">
-          <el-select v-model="form.processId" placeholder="请选择流程" style="width: 100%;" :disabled="form.id?true:false">
+          <el-select v-model="form.processId" placeholder="请选择流程" style="width: 100%;" :disabled="form.id ? true : false">
             <el-option v-for="item in pathOptions" :key="item.value" :label="item.label" :value="item.value">
             </el-option>
           </el-select>
@@ -21,8 +21,8 @@
           </el-select>
         </el-form-item>
         <el-form-item label="截止时间:" prop="deadLineTime">
-          <el-date-picker style="width: 100%" v-model="form.deadLineTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
-            placeholder="请选择截止日期时间">
+          <el-date-picker style="width: 100%" v-model="form.deadLineTime" type="datetime"
+            value-format="yyyy-MM-dd HH:mm:ss" placeholder="请选择截止日期时间">
           </el-date-picker>
         </el-form-item>
         <el-form-item label="备注:">
@@ -39,9 +39,9 @@
 </template>
 
 <script>
-import { personnelLoading ,optionsData} from '../mixins/index2'
+import { personnelLoading, optionsData } from '../mixins/index2'
 export default {
-  mixins: [personnelLoading,optionsData],
+  mixins: [personnelLoading, optionsData],
   components: {},
   props: ['id'],
   data() {
@@ -68,18 +68,18 @@ export default {
     async open(data) {
       if (data.type == 6 || data.type == 5) {//文件分配任务//文件分配审核任务
         if (data.type == 6) {
-          this.title='编辑文件分配任务'
+          this.title = '编辑文件分配任务'
         } else {
-          this.title='编辑文件分配审核任务'
+          this.title = '编辑文件分配审核任务'
         }
         this.form = JSON.parse(JSON.stringify(data))
-         // 负责人
+        // 负责人
         if (this.form.handler) {
           this.personnelList.queryParams.id = this.form.handler
           await this.getPermissionPersonnel(1)
           this.personnelList.queryParams.id = null
         }
-      }else {//创建分配任务
+      } else {//创建分配任务
         this.title = '创建文件分配任务'
         this.form.projectId = this.id//项目id
         this.form.type = 6//分配任务
@@ -98,20 +98,25 @@ export default {
     clear() {
       this.personnelList.data = []
       this.personnelList.queryParams.current = 1
-      this.personnelList.queryParams.total=0
+      this.personnelList.queryParams.total = 0
       this.personnelList.queryParams.name = null
     },
     //提交数据
     submit() {
       this.$refs.form.validate((valid) => {
         if (valid) {
-          this.$api.addTask(this.form).then(res => {
-            if (res.code == 200) {
-              this.$message.success('创建文件分配任务成功')
-              this.$emit('isCreate','新增成功')
-              this.handleClose()
-            }
-          })
+          if (!this.form.id) {//新增分配任务
+            this.$api.addTask(this.form).then(res => {
+              if (res.code == 200) {
+                this.$message.success('创建文件分配任务成功')
+                this.$emit('isCreate', '新增成功')
+                this.handleClose()
+              }
+            })
+          } else {
+
+          }
+
         } else {
           this.$message.error('信息未输入完整')
         }

+ 16 - 17
src/views/patentMining/components/dialog/handleTask2.vue

@@ -46,7 +46,7 @@
       </span>
     </el-dialog>
 
-    <examine ref="examine" @taskForm="handleTaskForm"></examine>
+    <examine ref="examine" @taskForm="handleTaskForm" @isHandleSave="isHandleSave"></examine>
   </div>
 </template>
 
@@ -128,6 +128,8 @@ export default {
         if (res.code == 200) {
           this.tableData = res.data.systemFileList
         }
+      }).catch(error => {
+        this.tableData=[]
       })
     },
     // 删除文件
@@ -150,7 +152,7 @@ export default {
       this.dialogVisible = false
     },
     // 保存
-    handleSave() {
+    async handleSave(type) {
        // 判断文件是否都上传完毕
        if (this.form.systemFileList && this.form.systemFileList.length > 0) {
         this.form.fileGuids = []
@@ -162,30 +164,27 @@ export default {
             return false
           }
         }
-      } else {
-        return false
-      }
+      } 
       this.form.taskId = this.row.id
-      this.$api.addTaskAuditResult(this.form).then(res => {
+      await this.$api.addTaskAuditResult(this.form).then(res => {
         if (res.code == 200) {
           this.$message.success('保存文件成功')
-          this.handleClose()
+          if (!type) {
+            this.handleClose()
+          }
         }
       })
     },
+    // 提交审核时有未保存的文件调用保存接口
+    async isHandleSave() {
+      if (this.form.systemFileList && this.form.systemFileList.length > 0) { 
+        await this.handleSave(1)
+      }
+    },
     //提交审核
-    submit() {
+     submit() {
       this.$refs.form.validate((valid) => {
         if (valid) {
-          // this.tableData.forEach(item => {
-          //   if (this.form.fileGuids && this.form.fileGuids.length>0) {
-          //     this.form.fileGuids.push(item.fileGuid)
-          //   } else {
-          //     this.form.fileGuids = []
-          //     this.form.fileGuids.push(item.fileGuid)
-          //   }
-            
-          // })
           this.form.projectId = this.row.projectId//项目id
           this.form.id = this.row.id//当前文件分配任务的id
           this.$refs.examine.open(this.form, 5)

+ 13 - 24
src/views/patentMining/components/dialog/uploadFile.vue

@@ -3,36 +3,28 @@
     <el-dialog :title="title" :visible.sync="dialogVisible" width="600px" :before-close="handleClose"
       :close-on-click-modal="false" label-width="300px">
       <el-form :model="form" status-icon :rules="rules" ref="form" label-width="120px" class="demo-ruleForm">
-        <el-form-item label="文件名称:" prop="name">
-          <el-input v-model="form.name" placeholder="请输入文件名称"></el-input>
-        </el-form-item>
-        <el-form-item label="最终文件:" prop="delivery" style="width: 20px;">
-          <el-switch v-model="form.delivery" active-color="#13ce66" inactive-color="#ff4949"></el-switch>
-        </el-form-item>
-        <el-form-item label="流程:">
+        
+        <el-form-item label="流程:" prop="processId">
           <el-select v-model="form.processId" placeholder="请选择流程" style="width: 100%;">
             <el-option v-for="item in pathOptions" :key="item.value" :label="item.label" :value="item.value">
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="发生时间:">
-          <el-date-picker v-model="form.createTime" value-format="yyyy-MM-dd" type="date" placeholder="选择日期"
-            style="width: 100%;">
-          </el-date-picker>
-        </el-form-item>
-
         <el-form-item label="附件:" prop="delivery">
           <myUpload :file-list="form.systemFileList" @on-change="onchangeFile" @on-remove="onRemove"
-            @on-preview="onPreview" style="height: 180px;" :autoUpload="true"></myUpload>
+            @on-preview="onPreview" style="height: 185px;" :autoUpload="true"></myUpload>
+        </el-form-item>
+        <el-form-item label="最终文件:" prop="ifFinal" style="width: 20px;">
+          <el-switch v-model="form.ifFinal" active-color="#13ce66" inactive-color="#ff4949"></el-switch>
         </el-form-item>
-        <el-form-item label="备注:">
-          <el-input v-model="form.description" type="textarea" placeholder="请输入内容"></el-input>
+        <el-form-item label="说明:">
+          <el-input v-model="form.description"  type="textarea" placeholder="请输入说明内容"></el-input>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
         <el-button @click="handleClose" size="small">取 消</el-button>
-        <el-button @click="submit" size="small" type="primary">确 定</el-button>
-        <el-button v-if="!form.id" @click="examine" size="small" type="primary">提交审核</el-button>
+        <el-button @click="submit" size="small" type="primary">直接上传</el-button>
+        <el-button v-if="!form.ifFinal && !form.id" @click="examine" size="small" type="primary">提交审核</el-button>
       </span>
     </el-dialog>
 
@@ -56,11 +48,12 @@ export default {
       title: '',
       form: {
         systemFileList: [],
+        ifFinal: false,
       },
       rules: {
-        name: [{ required: true, message: '请输入文件名称', trigger: 'blur' },],
+        processId: [{ required: true, message: '请选择流程', trigger: 'change' },],
       },
-      delivery: '',
+      
     };
   },
   watch: {},
@@ -81,10 +74,6 @@ export default {
       this.$emit('isSuccess', '新增成功')
       this.handleClose()
     },
-    // 切换按钮
-    onChangeFamily(val) {
-      this.btn = val
-    },
     //打开弹窗
     open(row,id) {
       if (row && row.id) {

+ 1 - 7
src/views/patentMining/components/fileMessage.vue

@@ -88,11 +88,6 @@ export default {
       // table栏位信息
       columnList: [
         {
-          name: "文件名称",
-          type: "String",
-          value: "fileName",
-        },
-        {
           name: "文件流程",
           type: "String",
           value: "path",
@@ -118,7 +113,7 @@ export default {
           value: "endFile",
         },
         {
-          name: "描述",
+          name: "说明",
           type: "DateTime",
           value: "description",
         },
@@ -149,7 +144,6 @@ export default {
     // this.columnList = await this.$commonJS.getCustomField('projectTask')
     // 获取栏位
     // this.getColumn()
-    console.log(1);
     this.getList()
   },
   methods: {

+ 27 - 13
src/views/patentMining/components/handleExamine/detailsPage.vue

@@ -27,37 +27,38 @@
               <template slot="label">
                 <i class="el-icon-user"></i> 任务名称
               </template>
-              {{ detailsMessage.name }}
+              <span v-html="getColumnData(detailsMessage,'name')"></span>
             </el-descriptions-item>
             <el-descriptions-item>
               <template slot="label">
                 <i class="el-icon-user"></i> 创建人
               </template>
-              {{ detailsMessage.createName }}
+              <span v-html="getColumnData(detailsMessage,'createName')"></span>
             </el-descriptions-item>
             <el-descriptions-item>
               <template slot="label">
                 <i class="el-icon-user"></i> 处理人
               </template>
-              {{ detailsMessage.handlerName }}
+              <span v-html="getColumnData(detailsMessage,'handlerName')"></span>
             </el-descriptions-item>
             <el-descriptions-item>
               <template slot="label">
                 <i class="el-icon-mobile-phone"></i> 所属项目
               </template>
-              {{ detailsMessage.name }}
+              <span v-html="getColumnData(detailsMessage,'projectName')"></span>
             </el-descriptions-item>
             <el-descriptions-item>
               <template slot="label">
                 <i class="el-icon-location-outline"></i> 所属流程
               </template>
-              {{ detailsMessage.taskPath }}
+                {{ pathOptions.filter(item =>{ return item.value == detailsMessage.processId})[0].label }}
+              <!-- {{ detailsMessage.taskPath }} -->
             </el-descriptions-item>
             <el-descriptions-item>
               <template slot="label">
                 <i class="el-icon-tickets"></i> 截止时间
               </template>
-              {{ detailsMessage.deadLineTime }}
+              <span v-html="getColumnData(detailsMessage,'deadLineTime')"></span>
             </el-descriptions-item>
           </el-descriptions>
         </div>
@@ -93,23 +94,26 @@
           <el-timeline :reverse="false" style="padding: 10px 0 0 10px;cursor: pointer;">
             <template>
               <div v-if="timelineList.length > 0">
-                <el-card v-for="item in timelineList" :key="item.id">
+                <el-timeline-item v-for="item in timelineList" :key="item.id" timestamp=""  placement="top">
+                  <el-card >
                   <div style="margin-bottom: 5px;">
                     <span>处理人:</span>
-                    <span>{{ item.taskHandleResultVO.createName }}</span>
+                    <span>{{ item.taskHandleResultVO?item.taskHandleResultVO.createName:'--' }}</span>
                   </div>
                   <div>
                     <span>说明:</span>
-                    <span>{{ item.taskHandleResultVO.handleResult }}</span>
+                    <span>{{ item.taskHandleResultVO?item.taskHandleResultVO.description:'--' }}</span>
                   </div>
                 </el-card>
+                </el-timeline-item>
+                
               </div>
               <div v-else>
-                <el-card>
-                  <div>
+                <el-timeline-item timestamp="2018/4/12" placement="top">
+                  <el-card>
                     <span>暂无数据</span>
-                  </div>
-                </el-card>
+                  </el-card>
+                </el-timeline-item>
               </div>
             </template>
 
@@ -123,7 +127,9 @@
 
 <script>
 import { downLoad2 } from "@/utils"
+import {optionsData} from '../mixins/index2'
 export default {
+  mixins:[optionsData],
   props: ['row'],
   data() {
     return {
@@ -206,6 +212,14 @@ export default {
     downloads(data) {
       downLoad2(data.guid)
     },
+    // 处理数据
+    getColumnData(data, key) {
+      if (data && data[key]) {
+        return data[key]
+      } else {
+        return '--'
+      }
+    },
   },
 }
 </script>

+ 29 - 14
src/views/patentMining/components/handleExamine/handleExamine.vue

@@ -7,7 +7,7 @@
 
         <detailsPage :row="row"></detailsPage>
 
-        
+
       </div>
       <div slot="right" style="height: 100%;width:100%;padding: 20px 10px 0 10px;">
         <div>审核:</div>
@@ -19,24 +19,24 @@
                 <el-col :span="24">
                   <el-form-item label="审核附件:">
                     <myUpload :file-list="form.systemFileList" @on-change="onchangeFile" @on-remove="onRemove"
-                      style="height: 180px;" :autoUpload="true" @on-dblclick="handleOndblclick"></myUpload>
+                      style="height: 185px;" :autoUpload="true" @on-dblclick="handleOndblclick"></myUpload>
                   </el-form-item>
                 </el-col>
               </el-row>
               <el-row>
                 <el-col :span="12">
                   <el-form-item label="是否返回修改:">
-                    <el-switch v-model="form.ifSearch" active-color="#13ce66" inactive-color="#ff4949">
+                    <el-switch v-model="form.ifBack" active-color="#13ce66" inactive-color="#ff4949">
                     </el-switch>
                   </el-form-item>
                 </el-col>
               </el-row>
-              <el-row v-if="!form.ifSearch">
+              <el-row v-if="!form.ifBack">
                 <el-col :span="12">
                   <el-form-item label="下一个审核人:">
-                    <el-autocomplete v-model="form.handlerName" value-key="name" v-SelectLazyLoading="personnelLoad"
+                    <el-autocomplete v-model="form.nextAuditorName" value-key="name" v-SelectLazyLoading="personnelLoad"
                       :fetch-suggestions="querySearchPersonnel" placeholder="请输入审核人(外部审核人请直接输入邮箱)"
-                      :trigger-on-focus="false" @select="handleSelectPersonnel" @blur="handleBlur(form.handlerName)"
+                      :trigger-on-focus="false" @select="handleSelectPersonnel" @blur="handleBlur(form.nextAuditorName)"
                       style="width: 100%;"></el-autocomplete>
                   </el-form-item>
                 </el-col>
@@ -48,11 +48,11 @@
                   </el-form-item>
                 </el-col>
               </el-row>
-              
+
               <el-row>
                 <el-col :span="24">
                   <el-form-item label="审核意见:">
-                    <el-input type="textarea" :rows="3" v-model="form.description"
+                    <el-input type="textarea" :rows="3" v-model="form.auditResult"
                       style="margin-bottom: 20px;"></el-input>
                   </el-form-item>
                 </el-col>
@@ -88,8 +88,7 @@ export default {
     return {
       form: {
         systemFileList: [],//文件数组
-        description: '',//审核意见
-        ifSearch: false,//是否返回修改
+        ifBack: false,//是否返回修改
       },
     }
   },
@@ -101,6 +100,16 @@ export default {
     handleOndblclick(file) {
 
     },
+    // 人员输入框失焦
+    handleBlur(val) {
+      if (this.form.nextAuditorName.includes('@')) {
+        this.form.nextAuditor = val
+      }
+    },
+    // 人员输入框选择
+    handleSelectPersonnel(val) {
+      this.form.nextAuditor=val.id
+    },
     // 审核确认
     sure() {
       // 判断文件是否都上传完毕
@@ -114,12 +123,18 @@ export default {
             return false
           }
         }
-      } else {
-        return false
+      } 
+      if (this.form.nextAuditor) {
+        if (this.form.nextAuditor.includes('@')) {//是邮箱为false
+          this.form.ifInner = false
+        } else {//是内部人员是id为true
+          this.form.ifInner = true
+        }
       }
       let params = {
-        type:5,//任务的类型,5任务审核任务
-        assoTaskId : this.row.id,//当前任务的id
+        type: 5,//任务的类型,5任务审核任务
+        taskId: this.row.id,//当前任务的id
+        lastTaskId: this.row.id,//上一级任务的id
         ...this.form,
       }
       this.$api.addTaskAuditResult(params).then(res => {

+ 2 - 1
src/views/patentMining/components/viewIndex.vue

@@ -54,13 +54,14 @@ import commonCard from './view/card.vue';
 import addAndEditProject from './dialog/addAndEditProject.vue';
 import fields from '@/views/components/dialog/fields.vue';
 import mergeTable from '../components/view/MergeTable.vue'
+import addEvent from '@/views/event/components/dialog/addEvent.vue'
 export default {
   components: {
     commonTable,
     addAndEditProject,
     fields,
     mergeTable,
-    commonCard
+    commonCard,
   },
   props: {
     isOperate: '',

+ 20 - 8
src/views/task/components/table.vue

@@ -41,13 +41,13 @@
               <div>
                 <el-dropdown split-button type="primary" size="small" @command="handleCommand($event, scope.row)"
                   @click="handleTask(scope.row)">
-                  <span v-if="scope.row.status == '3' || scope.row.handlerName != userinfo.name">查 看</span>
+                  <span v-if="scope.row.status != 2 || scope.row.handlerName != userinfo.name">查 看</span>
                   <span v-else>处 理</span>
                   <el-dropdown-menu slot="dropdown" style="text-align: center;">
                     <el-dropdown-item command="1" v-if="[6].includes(scope.row.type)">查看审核记录</el-dropdown-item>
-                    <el-dropdown-item command="4" v-if="scope.row.status != 3">编 辑</el-dropdown-item>
+                    <el-dropdown-item command="4" v-if="scope.row.status != 3 || scope.row.createName == userinfo.name">编 辑</el-dropdown-item>
                     <el-dropdown-item command="3" v-if="[6].includes(scope.row.type)">完 成</el-dropdown-item>
-                    <el-dropdown-item command="2" divided style="color: red;">删 除</el-dropdown-item>
+                    <el-dropdown-item command="2" v-if="scope.row.createName == userinfo.name || (scope.row.type == 5 && !scope.row.handlerName.includes('@'))" divided style="color: red;">取 消</el-dropdown-item>
                   </el-dropdown-menu>
                 </el-dropdown>
               </div>
@@ -196,6 +196,18 @@ export default {
     this.getList()
   },
   methods: {
+    // 创建分配任务成功
+    isCreate(val) {
+      if (val) {
+        this.getList()
+      }
+    },
+    // 分配任务审核任务新增成功
+    isSuccess(val) {
+      if (val) {
+        this.getList()
+      }
+    },
     // 请求数据
     getList() {
       let searchOption = {
@@ -231,7 +243,7 @@ export default {
         case '1'://查看审核记录
           this.$refs.auditRecords.open(row)
           break;
-        case '2'://删除任务
+        case '2'://取消任务//发起人和审核人可以取消任务,外部人员不能取消任务
           this.deleteTask(row)
           break;
         case '3'://完成任务
@@ -257,18 +269,18 @@ export default {
       this.$api.status(params).then(res => {
         if (res.code == 200) {
           this.$message.success('任务已置为完成')
-          // this.getList()
+          this.getList()
         }
       })
     },
-    // 删除任务
+    // 取消任务
     deleteTask(row) {
       this.deleteTasks([row.id])
     },
     deleteTasks(ids) {
       this.$api.dele(ids).then(response => {
         if (response.code == 200) {
-          this.$message.success('删除成功')
+          this.$message.success('取消任务成功')
           this.queryParams.current = 1
           this.getList()
         }
@@ -276,7 +288,7 @@ export default {
     },
     //处理任务 
     handleTask(row) {
-      if (row.status == 3 || row.handlerName != this.userinfo.name) {// 负责人不是自己
+      if (row.status != 2 || row.handlerName != this.userinfo.name) {// 负责人不是自己
         this.handleTypeTask2(row)
       } else {
         // if (row.status != 3) {/