Browse Source

Merge branch 'product' of http://1.116.113.26:8088/zhuliu/xiaoshi_system into product

zhuliu 1 year ago
parent
commit
d3c0df0214

+ 7 - 3
src/views/patentMining/components/details/components/basicMessage.vue

@@ -33,7 +33,7 @@
           <template slot="label">
             <i class="el-icon-office-building"></i> 是否检索
           </template>
-          {{ row.ifSearch }}
+          <span>{{ getArrJoin(row.ifSearch,{true:'是',false:'否'}) }}</span>
         </el-descriptions-item>
         <el-descriptions-item>
           <template slot="label">
@@ -75,13 +75,14 @@
           <template slot="label">
             <i class="el-icon-office-building"></i> 参与人
           </template>
-         <span v-for="item in row.involvedPersons" :key="item.personId">{{ item.personName }}/</span>
+         <!-- <span v-for="item in row.involvedPersons" :key="item.personId">{{ item.personName }}/</span> -->
+         <span>{{ getArrJoin(row.involvedPersons,'personName') }}</span>
         </el-descriptions-item>
         <el-descriptions-item>
           <template slot="label">
             <i class="el-icon-office-building"></i> 附件
           </template>
-          {{ row.type }}
+          <span>{{ getArrJoin(row.systemFileList,'name') }}</span>
         </el-descriptions-item>
       </el-descriptions>
     </div>
@@ -89,7 +90,9 @@
 </template>
 
 <script>
+import {column} from '../../mixins/index2'
 export default {
+  mixins:[column],
   components: {
   },
   props:['id'],
@@ -131,6 +134,7 @@ export default {
         this.row = {}
       })
     },
+    
   },
   deactivated(){
     window.removeEventListener('resize',()=>{})

+ 1 - 1
src/views/patentMining/components/details/components/projectPath.vue

@@ -132,7 +132,7 @@ export default {
     },
     // 跳转文件列表界面
     toFilePage(str) {
-      console.log(str);
+      // console.log(str);
     },
   },
 }

+ 3 - 41
src/views/patentMining/components/dialog/addAndEditProject.vue

@@ -212,10 +212,12 @@
 
 <script>
 import { mapGetters } from 'vuex'
+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'
 export default {
+  mixins:[personnelLoading],
   components: {
     choosePerson,
     ClientTable,
@@ -588,47 +590,7 @@ export default {
         this.form.rdName = val
       }
     },
-    /**
-     * 人员列表
-     * @param {*} query 
-     */
-    // 人员列表远程搜索
-    remoteMethodPerson(query) {
-      this.personnelList.data = []
-      this.personnelList.queryParams.current = 1
-      this.personnelList.queryParams.name = query
-      this.getPermissionPersonnel()
-    },
-    // 获取所有人员列表懒加载
-    lazyLoadingPerson() {
-      if (this.personnelList.queryParams.current * this.personnelList.queryParams.size >= this.personnelList.queryParams.total) {
-        return false
-      }
-      this.personnelList.queryParams.current += 1
-      this.getPermissionPersonnel()
-    },
-    //获取所有人员列表(修改不要一次性获取,可以使用懒加载加远程搜索 )
-    async getPermissionPersonnel(type) {
-      this.personnelList.loading = true;
-      await this.$api.getPermissionPersonnel(this.personnelList.queryParams).then((response) => {
-        if (response.code == 200) {
-          this.personnelList.loading = false;
-          if (!type) {
-            if (this.form.headId) {
-              var index = response.data.findIndex(item => {
-                return item.id == this.form.headId
-              })
-              if (index != -1) {
-                response.data.splice(index, 1)
-              }
-            }
-            this.personnelList.queryParams.total = response.pageColumn.total
-          }
-          this.personnelList.data.push(...response.data)
-          // this.personnelList.queryParams.total = response.pageColumn.total
-        }
-      })
-    },
+    
 
     /**
      * 上传文件处理

+ 29 - 12
src/views/patentMining/components/dialog/createTask.vue

@@ -1,7 +1,8 @@
 <template>
   <!-- 创建挖掘任务弹窗 -->
   <div class="createTask">
-    <el-dialog :title="title" :visible.sync="dialogVisible" width="500px" :before-close="handleClose" :close-on-click-modal="false">
+    <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="taskName">
           <el-input v-model="form.taskName" placeholder="请输入任务名称"></el-input>
@@ -13,16 +14,24 @@
           </el-select>
         </el-form-item>
         <el-form-item label="处理人:" prop="taskPerson">
-          <el-select v-model="form.taskPerson" placeholder="请选择处理人" style="width: 100%;">
-            <el-option v-for="item in personOptions" :key="item.value" :label="item.label" :value="item.value">
+          <el-select v-model="form.headId" placeholder="请选择处理人" style="width: 100%;" filterable remote
+            :remote-method="remoteMethodPerson" v-SelectLazyLoading="lazyLoadingPerson" :loading="personnelList.loading">
+            <el-option v-for="item in personnelList.data" :key="item.id" :label="item.name" :value="item.id">
             </el-option>
           </el-select>
+          <!-- <el-select v-model="form.taskPerson" placeholder="请选择处理人" style="width: 100%;">
+            <el-option v-for="item in personOptions" :key="item.value" :label="item.label" :value="item.value">
+            </el-option>
+          </el-select> -->
         </el-form-item>
         <el-form-item label="截止时间:" prop="endTime">
           <el-date-picker style="width: 100%" v-model="form.endTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
             placeholder="请选择截止日期时间">
           </el-date-picker>
         </el-form-item>
+        <el-form-item label="备注:">
+          <el-input type="textarea" :rows="3" placeholder="请输入内容" v-model="form.description"></el-input>
+        </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
         <el-button @click="handleClose">取 消</el-button>
@@ -34,7 +43,9 @@
 </template>
 
 <script>
+import { personnelLoading } from '../mixins/index2'
 export default {
+  mixins: [personnelLoading],
   components: {},
   props: {},
   data() {
@@ -45,12 +56,12 @@ export default {
       rules: {},
       personOptions: [],//处理人
       pathOptions: [
-        {label:'创新点流程',value:'1'},
-        {label:'查新检索',value:'2'},
-        {label:'保护主题规划',value:'3'},
-        {label:'独权撰写',value:'4'},
-        {label:'从权撰写',value:'5'},
-        {label:'申请文件定稿',value:'6'},
+        { label: '创新点流程', value: '1' },
+        { label: '查新检索', value: '2' },
+        { label: '保护主题规划', value: '3' },
+        { label: '独权撰写', value: '4' },
+        { label: '从权撰写', value: '5' },
+        { label: '申请文件定稿', value: '6' },
         { label: '说明书规划撰写', value: '7' },
       ],//流程
       rules: {
@@ -68,13 +79,14 @@ export default {
   methods: {
     //打开弹窗
     open(form) {
-      this.form = JSON.parse(JSON.stringify(form))
+      // this.form = JSON.parse(JSON.stringify(form))
       // if(this.form.id){
       //     this.title = '编辑任务'
       // }else{
       //     this.title = '创建任务'
       // }
-      this.title = '创建任务'
+      this.title = '创建文件分配任务'
+      this.getPermissionPersonnel()
       this.dialogVisible = true
     },
     //关闭弹窗
@@ -87,7 +99,12 @@ export default {
     submit() {
       this.$refs.form.validate((valid) => {
         if (valid) {
-          this.handleClose()
+          this.$api.submit(this.form).then(res => {
+            if (res.code == 200) {
+              this.$message.success('创建文件分配任务成功')
+              this.handleClose()
+            }
+          })
         } else {
           this.$message.error('信息未输入完整')
         }

+ 123 - 20
src/views/patentMining/components/dialog/handleTask1.vue

@@ -13,19 +13,19 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="技术方向:">
-              <el-input v-model="form.type" placeholder="请输入技术方向"></el-input>
+              <el-input v-model="form.technicalDirection" placeholder="请输入技术方向"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
             <el-form-item label="产品阶段:">
-              <el-input v-model="form.name" placeholder="请输入产品阶段"></el-input>
+              <el-input v-model="form.productPhase" placeholder="请输入产品阶段"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="产品产出:">
-              <el-input v-model="form.type" placeholder="请输入产品产出"></el-input>
+              <el-input v-model="form.output" placeholder="请输入产品产出"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
@@ -33,34 +33,47 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="相关竞争对手:">
-              <el-input v-model="form.name" placeholder="请输入相关竞争对手"></el-input>
+              <el-input v-model="form.relatedCompetitors" placeholder="请输入相关竞争对手"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="技术关键词:">
-              <el-input v-model="form.type" placeholder="请输入技术关键词"></el-input>
+              <el-input v-model="form.technicalKeyword" placeholder="请输入技术关键词"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="12">
+          <el-col :span="24">
             <el-form-item label="参与人:">
-              <el-input v-model="form.name" placeholder="请输入参与人"></el-input>
+              <div class="manage">
+                <el-button size="small" @click="showDialog()">选择</el-button>
+                <div v-html="getNames(form.involvedPersons)">
+
+                </div>
+              </div>
+              <!-- <el-input v-model="form.involvedPersons" placeholder="请输入参与人"></el-input> -->
             </el-form-item>
           </el-col>
+
+        </el-row>
+        <el-row>
           <el-col :span="12">
             <el-form-item label="负责人:">
-              <el-select v-model="form.value" placeholder="请选择负责人" style="width: 100%;">
-                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+              <el-select v-model="form.headId" placeholder="请选择负责人" style="width: 100%;" filterable remote
+                :remote-method="remoteMethodPerson" v-SelectLazyLoading="lazyLoadingPerson"
+                :loading="personnelList.loading">
+                <el-option v-for="item in personnelList.data" :key="item.id" :label="item.name" :value="item.id">
                 </el-option>
               </el-select>
+              <!-- <el-select v-model="form.value" placeholder="请选择负责人" style="width: 100%;">
+                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+                </el-option>
+              </el-select> -->
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row>
           <el-col :span="12">
             <el-form-item label="是否检索:">
-              <el-switch v-model="form.delivery" active-color="#13ce66" inactive-color="#ff4949">
+              <el-switch v-model="form.ifSearch" active-color="#13ce66" inactive-color="#ff4949">
               </el-switch>
             </el-form-item>
           </el-col>
@@ -73,24 +86,39 @@
             </el-form-item>
           </el-col>
         </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="备注:">
+              <el-input type="textarea" :rows="3" placeholder="请输入内容" v-model="form.description"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
       </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="handleClose" size="small">取 消</el-button>
-        <el-dropdown v-if="form.isLook" split-button type="primary" @click="submit" size="small">
+        <el-button @click="handleClose">取 消</el-button>
+        <el-dropdown v-if="form.isLook" split-button type="primary" @click="submit">
           <span>{{ btn.label }}</span>
           <el-dropdown-menu slot="dropdown" class="text-align_center">
-            <el-dropdown-item v-for="item in btnObj" :key="item.label" @click.native="onChangeFamily(item)">{{ item.label }}</el-dropdown-item>
+            <el-dropdown-item v-for="item in btnObj" :key="item.label" @click.native="onChangeFamily(item)">{{ item.label
+            }}</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
       </span>
     </el-dialog>
 
+    <choosePerson ref="choosePerson" @getPersonIds="getPersonIds"></choosePerson>
+
   </div>
 </template>
 
 <script>
+import { personnelLoading } from '../mixins/index2'
+import choosePerson from '@/views/components/dialog/person.vue'
 export default {
-  components: {},
+  mixins: [personnelLoading],
+  components: {
+    choosePerson,
+  },
   props: {},
   data() {
     return {
@@ -129,19 +157,45 @@ export default {
   created() { },
   mounted() { },
   methods: {
+    // 打开参与人 人员弹窗
+    showDialog() {
+      this.$refs.choosePerson.open(this.form.involvedPersonsIds, this.form.involvedPersons)
+    },
+    //获取参与人员信息
+    getPersonIds({ personIds, persons }) {
+      if (personIds.length > 0) {
+        // adminPersons存储返回的人员id数组
+        this.$set(this.form, 'involvedPersons', persons)
+        this.$set(this.form, 'involvedPersonsIds', personIds)
+      } else {
+        this.$set(this.form, 'involvedPersons', [])
+        this.$set(this.form, 'involvedPersonsIds', [])
+      }
+    },
+    // 处理参与人数据
+    getNames(row) {
+      if (!row) {
+        return ''
+      }
+      var arr = row.map(item => {
+        return item.name
+      })
+      return arr.join('、')
+    },
     // 上传的文件监听
     onchangeFile(file, fileList) {
-      if (file.guid) {
+      if (file.guid && this.form.systemFileList && this.form.systemFileList.length > 0) {
         let index = this.form.systemFileList.findIndex(item => {
           return item.uid == file.uid
         })
         if (index != -1) {
           this.form.systemFileList.splice(index, 1, file)
+        } else {
+          this.form.systemFileList.push(file.raw)
         }
       } else {
         this.form.systemFileList.push(file.raw)
       }
-
     },
     // 删除上传的文件
     onRemove(file, fileList) {
@@ -159,14 +213,34 @@ export default {
       this.btn = val
     },
     //打开弹窗
-    open(form, val) {
+    async open(form, val) {
       this.form = JSON.parse(JSON.stringify(form))
+      // 是否可以处理任务
       this.form.isLook = val
+      // 负责人
+      if (this.form.headId) {
+        this.personnelList.queryParams.id = this.form.headId
+        await this.getPermissionPersonnel(1)
+        this.personnelList.queryParams.id = null
+      }
+      // 文件
+      if (!this.form.systemFileList) {
+        this.$set(this.form, 'systemFileList', [])
+      }
+      // 参与人
+      if (this.form.involvedPersons && this.form.involvedPersons.length > 0) {
+        this.form.involvedPersonsIds = []
+        this.form.involvedPersonsIds = this.form.involvedPersons.map(item => {
+          item.name = item.personName
+          return item.personId
+        })
+      }
       if (this.form.isLook) {
         this.title = '处理任务'
       } else {
         this.title = '查看任务'
       }
+      this.getPermissionPersonnel()
       this.dialogVisible = true
     },
     //关闭弹窗
@@ -174,11 +248,40 @@ export default {
       this.form = {
         systemFileList: [],
       }
+      this.clear()
       this.dialogVisible = false
     },
+    // 清空负责人
+    clear() {
+      this.personnelList.queryParams.name = null
+      this.personnelList.queryParams.current = 1
+      this.personnelList.queryParams.data = []
+    },
     //提交数据
     submit() {
-      this.handleClose()
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          // 判断文件是否都上传完毕
+          if (this.form.systemFileList && this.form.systemFileList.length > 0) {
+            this.form.fileGuids = []
+            for (let i = 0; i < this.form.systemFileList.length; i++) {
+              if (this.form.systemFileList[i].guid) {
+                this.form.fileGuids.push(this.form.systemFileList[i].guid)
+              } else {
+                this.$message.error('文件未全部上传,请耐心等待')
+                return false
+              }
+            }
+          }
+          this.$api.submit(this.form).then(res => {
+            if (res.code == 200) {
+              this.$message.success('任务已处理')
+              this.handleClose()
+            }
+          })
+        }
+      })
+
     }
   },
 

+ 44 - 9
src/views/patentMining/components/dialog/handleTask2.vue

@@ -4,8 +4,8 @@
     <el-dialog ref="dialog" :title="title" :visible.sync="dialogVisible" width="800px" :before-close="handleClose"
       :close-on-click-modal="false">
 
-      <el-upload class="upload-demo" ref="upload" action="#" :auto-upload="false" :show-file-list="false"
-        :on-change="onChange" multiple :on-preview="handlePreview" :on-remove="handleRemove" :file-list="fileList">
+      <el-upload class="upload-demo" ref="upload" action="#" :auto-upload="true" :show-file-list="false"
+        :on-change="onChange" multiple >
         <el-button size="small" type="primary">上传文件</el-button>
       </el-upload>
 
@@ -71,15 +71,19 @@ export default {
         }
       ],
       dialogVisible: false,
-      auditTask: false,
-      fileList: [],
+      // auditTask: false,
+      // 备注
       textarea: '',
+      // 审核弹窗
       examineForm: {},
       examinePerson: [],
       examineRules: {
         name: [{ required: true, message: '请输入任务名称', trigger: 'blur' },],
         examineId: [{ required: true, message: '请选择审核人', trigger: 'change' },],
-      }
+      },
+      // 是否是处理任务?
+      isLook: false,
+      row:null,
     };
   },
   watch: {},
@@ -90,9 +94,39 @@ export default {
     // 删除文件
     deleteFile(row) { },
     // 上传文件
-    onChange(file, fileList) { },
-    handlePreview(file, fileList) { },
-    handleRemove(file, fileList) { },
+    onChange(file, fileList) { 
+      if (file) {
+        this.uploadFile(file)
+      }
+    },
+    // 上传附件
+    uploadFile(file){
+      let formData = new FormData()
+      formData.append('sourceId',this.$constants.sourceId)
+      formData.append('files',file.raw)
+      this.$api.uploadFile(formData).then(response=>{
+        if(response.code == 200){
+          file.guid = response.data[0]
+          file.raw.guid = response.data[0]
+          // this.$emit("on-change", file)
+        }
+      })
+    },
+    // 查询文件列表
+    getFileList() {
+      let params = {
+        id:this.row.id,
+      }
+      this.$api.getFileList(params).then(response => { 
+        if (response.code == 200) {
+          this.tableData = response.data.data
+          this.textarea=response.data.textarea
+        }
+      }).catch(error => {
+        this.tableData = []
+        this.textarea=''
+      })
+    },
     //打开弹窗
     open(row, val) {
       // let row = JSON.parse(JSON.stringify(row))
@@ -101,7 +135,8 @@ export default {
       // }else{
       //     this.title = '创建任务'
       // }
-      this.tableData[0].isLook = val
+      this.row=row
+      this.isLook = val
       this.title = '任务名称:' + row.name
       this.dialogVisible = true
     },

+ 8 - 7
src/views/patentMining/components/excavateTask/excavateTask.vue

@@ -190,18 +190,19 @@ export default {
       // 1: '项目审核任务',
       // 2: '文件分配任务',
       // 3: '文件审核任务',
-      if (row.status == '已完成' || row.handlePerson != this.userinfo.name) {
-        if (row.taskType == '1') {
+      
+      if (row.status == '已完成' || row.handlePerson != this.userinfo.name) {// 完成状态并且负责人不是自己
+        if (row.taskType == '1') {// 项目审核任务
           this.$refs.handleTask1Dialog.open(row, false)
-        } else if (row.taskType == '2') {
+        } else if (row.taskType == '2') {//文件分配任务
           this.$refs.handleTask2Dialog.open(row, false)
         }
-      } else {
-        if (row.taskType == '1') {
+      } else {//未完成状态
+        if (row.taskType == '1') {// 项目审核任务
           this.$refs.handleTask1Dialog.open(row, true)
-        } else if (row.taskType == '2') {
+        } else if (row.taskType == '2') {//文件分配任务
           this.$refs.handleTask2Dialog.open(row, true)
-        } else {
+        } else {//文件审核任务
           let router = this.$router.resolve({
             path: '/handleExamine',
             query: {

+ 80 - 1
src/views/patentMining/components/mixins/index2.js

@@ -1,3 +1,4 @@
+// 专利挖掘-挖掘任务表格栏位
 export const column = {
   data() {
     return {
@@ -52,6 +53,84 @@ export const column = {
   },
   methods: {
     // 点击项目名称
-    handleItem(row,key){},
+    handleItem(row, key) { },
+    // 遍历栏位为数组类型
+    getArrJoin(data, type) {
+      if (!data) {
+        return false
+      }
+      if (data.constructor == Array) {
+        let arr = data.map(item => {
+          return item[type]
+        })
+        return arr.join('、')
+      } else {
+        console.log(type[data]);
+        return type[data]
+      }
+    },
+  },
+}
+
+
+// 专利挖掘-负责人懒加载
+export const personnelLoading = {
+  data() {
+    return {
+      //人员列表懒加载
+      personnelList: {
+        queryParams: {
+          current: 1,
+          size: 10
+        },
+        data: []
+      },
+    }
+  },
+  mounted() {
+
+  },
+  methods: {
+    /**
+      * 人员列表
+      * @param {*} query 
+    */
+    // 人员列表远程搜索
+    remoteMethodPerson(query) {
+      this.personnelList.data = []
+      this.personnelList.queryParams.current = 1
+      this.personnelList.queryParams.name = query
+      this.getPermissionPersonnel()
+    },
+    // 获取所有人员列表懒加载
+    lazyLoadingPerson() {
+      if (this.personnelList.queryParams.current * this.personnelList.queryParams.size >= this.personnelList.queryParams.total) {
+        return false
+      }
+      this.personnelList.queryParams.current += 1
+      this.getPermissionPersonnel()
+    },
+    //获取所有人员列表(修改不要一次性获取,可以使用懒加载加远程搜索 )
+    async getPermissionPersonnel(type) {
+      this.personnelList.loading = true;
+      await this.$api.getPermissionPersonnel(this.personnelList.queryParams).then((response) => {
+        if (response.code == 200) {
+          this.personnelList.loading = false;
+          if (!type) {
+            if (this.form.headId) {
+              var index = response.data.findIndex(item => {
+                return item.id == this.form.headId
+              })
+              if (index != -1) {
+                response.data.splice(index, 1)
+              }
+            }
+            this.personnelList.queryParams.total = response.pageColumn.total
+          }
+          this.personnelList.data.push(...response.data)
+          // this.personnelList.queryParams.total = response.pageColumn.total
+        }
+      })
+    },
   },
 }