Jelajahi Sumber

修改字典项栏位

zhuliu 1 tahun lalu
induk
melakukan
8d5a16fc9a

+ 8 - 0
src/api/newApi/common.js

@@ -1,6 +1,14 @@
 import axios from "@/utils/axios";
 export default {
   /**
+   * 查询字典项
+   * @param {*} data 
+   * @returns 
+   */
+  getOsSystemDict(data) {
+    return axios.post("/xiaoshi/common/getOsSystemDict",  data );
+  },
+  /**
    * 查询应用场景
    * @param {*} data 
    * @returns 

+ 9 - 9
src/views/event/components/mixins/index.js

@@ -23,15 +23,15 @@ export default {
       var a = JSON.parse(JSON.stringify(this.$store.state.dictMessage.dictMessage))
       if (a.REPORT_TYPE) {
         a.REPORT_TYPE.forEach(item => {
-          if (['0', '1', '2'].includes(item.dictChildValue)) {
+          if (['0', '1', '2'].includes(item.value)) {
             item.permission = 'invalid'
-          } else if (item.dictChildValue == 3) {
+          } else if (item.value == 3) {
             item.permission = 'FTO'
-          } else if (item.dictChildValue == 4) {
+          } else if (item.value == 4) {
             item.permission = 'tort'
-          } else if (item.dictChildValue == 5) {
+          } else if (item.value == 5) {
             item.permission = 'avoidDesign'
-          } else if (item.dictChildValue == 7) {
+          } else if (item.value == 7) {
             item.permission = 'reInvalid'
           }
         })
@@ -39,13 +39,13 @@ export default {
       if (a.REPORT_TYPE) {
         a.REPORT_TYPE.push(
           {
-            dictChildValue: 'w',
-            dictChildLabel: '专利挖掘',
+            value: 'w',
+            label: '专利挖掘',
             permission: 'reInvalid'
           },
           {
-            dictChildValue: 'e',
-            dictChildLabel: '其他',
+            value: 'e',
+            label: '其他',
             permission: 'reInvalid'
           }
         )

+ 3 - 3
src/views/event/components/view/card.vue

@@ -20,9 +20,9 @@
                       <span class="el-dropdown-link"> 新增报告 </span>
                       <el-dropdown-menu class="children_item" v-if="dictMessage.REPORT_TYPE">
                         <el-dropdown-item
-                          v-for="item1 in dictMessage.REPORT_TYPE.filter(item1 => !['6'].includes(item1.dictChildValue))"
-                          :key="item1.dictChildValue" @click.native="handleAnalyse(item1.dictChildValue, item)"
-                          v-if="$permission('/pcs/report/add/' + item1.permission)">{{ item1.dictChildLabel }}</el-dropdown-item>
+                          v-for="item1 in dictMessage.REPORT_TYPE.filter(item1 => !['6'].includes(item1.value))"
+                          :key="item1.value" @click.native="handleAnalyse(item1.value, item)"
+                          v-if="$permission('/pcs/report/add/' + item1.permission)">{{ item1.label }}</el-dropdown-item>
                       </el-dropdown-menu>
                     </el-dropdown>
                   </el-dropdown-item>

+ 1 - 1
src/views/event/components/view/table.vue

@@ -32,7 +32,7 @@
                   <el-dropdown trigger="hover" placement="right-start">
                     <span class="el-dropdown-link"> 新增报告 </span>
                     <el-dropdown-menu  class="children_item" v-if="dictMessage.REPORT_TYPE">
-                        <el-dropdown-item v-for="item in dictMessage.REPORT_TYPE.filter(item=>!['6'].includes(item.dictChildValue))" :key="item.dictChildLabel"  @click.native="handleAnalyse(item.dictChildValue,scope.row)" v-if="$permission('/pcs/report/add/' + item.permission)">{{item.dictChildLabel}}</el-dropdown-item>
+                        <el-dropdown-item v-for="item in dictMessage.REPORT_TYPE.filter(item=>!['6'].includes(item.value))" :key="item.label"  @click.native="handleAnalyse(item.value,scope.row)" v-if="$permission('/pcs/report/add/' + item.permission)">{{item.label}}</el-dropdown-item>
                     </el-dropdown-menu>
                 </el-dropdown> 
                 </el-dropdown-item>

+ 4 - 4
src/views/home/components/echarts/components/report.vue

@@ -65,9 +65,9 @@ export default {
       }
       this.reportType.forEach((item,index) => {
         var obj = data.find(i=>{
-          return i.value == item.dictChildValue
+          return i.value == item.value
         })
-        this.reportData.type.push(item.dictChildLabel)
+        this.reportData.type.push(item.label)
         if(obj){
           this.reportData.count.push(obj.count)
         }else{
@@ -81,9 +81,9 @@ export default {
       this.chart = this.$echarts.init(chartDom)
       this.chart.on('click',(params)=>{
         var obj = this.reportType.find(item=>{
-          return item.dictChildLabel == params.name
+          return item.label == params.name
         })
-        localStorage.reportType = obj.dictChildValue
+        localStorage.reportType = obj.value
         this.$router.push({
           name:'AllReport',
         })

+ 1 - 1
src/views/layout/mixins/index.js

@@ -40,7 +40,7 @@ export const commonData={
     },
     //获取字典项
     DictMessage() {
-      this.$api.DictMessage().then(response => {
+      this.$api.getOsSystemDict([]).then(response => {
         this.$store.commit("SET_DictMessage",response.data)
       })
     },

+ 0 - 1
src/views/project/components/view/table.vue

@@ -43,7 +43,6 @@
                 <el-dropdown-item command="8">其他附件</el-dropdown-item>
                 <el-dropdown-item command="9">项目分享</el-dropdown-item>
                 <el-dropdown-item command="10" divided style="color:red">删 除</el-dropdown-item>
-                <el-dropdown-item command="11" divided style="color:red">自定义栏位管理</el-dropdown-item>
               </el-dropdown-menu>
             </el-dropdown>
           </template>

+ 0 - 6
src/views/project/index.vue

@@ -62,7 +62,6 @@
     <project-form-drawer @submit="getMessage" :common-data="commonData" ref="projectFormDrawer" />
     <field ref="field" type="patentProject" @getFieldList="getFieldList"></field>
 
-    <customField ref="customField"></customField>
 
   </div>
 </template>
@@ -77,7 +76,6 @@ import mergeTable from "./components/view/MergeTable.vue";
 import ProjectFormDrawer from './components/drawer/form.vue'
 import field from '@/views/components/dialog/fields.vue';
 
-import customField from '@/views/components/drawer/Field.vue';
 export default {
   components: {
     TotalChart,
@@ -86,7 +84,6 @@ export default {
     ProjectFormDrawer,
     field,
     mergeTable,
-    customField
 
   },
   props: {
@@ -427,9 +424,6 @@ export default {
         case 'e'://编辑
           this.handleEdit(row)
           break
-        case '11':
-          this.$refs.customField.open(row.id)
-          break;
       }
     },
     //获取删除的id

+ 8 - 8
src/views/report/components/dialog/addAndEditReport.vue

@@ -120,8 +120,8 @@
             <el-form-item label="需要复制的选项" v-show="form.track">
               <el-select v-model="form.copyIds" multiple clearable placeholder="请选择需要复制的选项" :popper-append-to-body="false"
                 @change="changeCopyIds">
-                <el-option v-for="item in copyList" :key="item.dictChildValue" :label="item.dictChildLabel"
-                  :value="item.dictChildValue"></el-option>
+                <el-option v-for="item in copyList" :key="item.value" :label="item.label"
+                  :value="item.value"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -613,7 +613,7 @@ export default {
         a = '创建'
       }
 
-      var reportType = this.dictMessage.REPORT_TYPE.filter(item => { return item.dictChildValue == this.form.reportType })[0].dictChildLabel
+      var reportType = this.dictMessage.REPORT_TYPE.filter(item => { return item.value == this.form.reportType })[0].label
       this.title = a + reportType + '报告'
       // 负责人
       if (this.form.headId) {
@@ -717,7 +717,7 @@ export default {
     //获取专利号且填入报告名称
     getPatentNo() {
       if (!this.form.name) {
-        var a = this.dictMessage.REPORT_TYPE.filter(item => { return item.dictChildValue == this.form.reportType })[0].dictChildLabel
+        var a = this.dictMessage.REPORT_TYPE.filter(item => { return item.value == this.form.reportType })[0].label
         if (this.form.signProjectId) {
           let name=this.productList.data.filter(item => {
             return item.id == this.form.signProjectId
@@ -734,12 +734,12 @@ export default {
     changeCopyIds(val) {
       if (Object.keys(this.copyIndex).length > 0) {
         var index = this.copyList.findIndex(item => {
-          return item.dictChildLabel == '对比文件'
+          return item.label == '对比文件'
         })
         if (index != -1) {
-          var id = this.copyList[index].dictChildValue
+          var id = this.copyList[index].value
           var index2 = this.copyList.findIndex(item => {
-            return item.dictChildLabel == '标引信息'
+            return item.label == '标引信息'
           })
           if (val.indexOf(id) != -1) {
             if (index2 == -1) {
@@ -748,7 +748,7 @@ export default {
           } else {
             if (index2 != -1) {
               this.copyList.splice(index2, 1)
-              this.form.copyIds.splice(this.form.copyIds.indexOf(this.copyIndex.dictChildValue), 1)
+              this.form.copyIds.splice(this.form.copyIds.indexOf(this.copyIndex.value), 1)
             }
           }
         } else {

+ 965 - 0
src/views/report/components/dialog/addAndEditReport1.vue

@@ -0,0 +1,965 @@
+<template>
+  <div>
+    <el-dialog :title="title" :visible.sync="showDialog" width="1000px" :close-on-click-modal="false"
+      @close="handleClose(false)" :append-to-body="true">
+      <el-form :model="form" :rules="rules" ref="reportForm" label-width="120px" v-loading="loading"
+        :element-loading-text="load_text" element-loading-spinner="el-icon-loading"
+        element-loading-background-color="rgba(0, 0, 0, 0.8)">
+        <el-row>
+          <el-col :span="12">
+            <!-- <el-form-item :label="[3].includes(Number(form.type)) ? '标的产品' : '标的专利'" prop="signPatentNo">
+              <el-input v-model="form.signPatentNo" autocomplete="off"
+                :placeholder="[3].includes(Number(form.type)) ? '请输入标的产品' : '请输入标的专利'" @change="getPatentNo"></el-input>
+            </el-form-item> -->
+            <el-form-item v-if="form.reportType == 3" label="标的产品" prop="signPatentNo">
+              <el-select style="width:100%" v-model="form.signProjectId" placeholder="请选择产品" filterable remote
+                :popper-append-to-body="false" :remote-method="remoteMethodProduct"
+                v-SelectLazyLoading="lazyLoadingProduct" :loading="productList.loading">
+                <el-option v-for="item in productList.data" :key="item.id" :label="item.name"
+                  :value="item.id"></el-option>
+              </el-select>
+              <!-- <el-input v-model="form.signProjectId" autocomplete="off"
+                placeholder="请输入标的产品" @change="getPatentNo"></el-input> -->
+            </el-form-item>
+            <el-form-item v-else label="标的专利" prop="signPatentNo">
+              <el-input v-model="form.signPatentNo" autocomplete="off" placeholder="请输入标的专利"
+                @change="getPatentNo"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="报告名称" prop="name">
+              <el-input v-model="form.name" autocomplete="off" placeholder="请输入报告名称"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-form-item label="是否完成" v-if="!form.id">
+          <el-switch v-model="form.status" active-color="#13ce66" inactive-color="#ff4949" @change="changeStatus"
+            :active-value="3" :inactive-value="1">
+          </el-switch>
+        </el-form-item>
+        <template v-if="!form.id && form.status == 3">
+          <div>
+            <el-form-item label="核心结论">
+              <el-checkbox-group v-model="form.cronIds">
+                <el-checkbox v-for="item in conclusion" :key="item.value" :label="item.value">{{
+                  item.label }}</el-checkbox>
+                <!-- <el-checkbox v-for="item in conclusion" :key="item.value" :label="item.value">{{
+                  item.label }}</el-checkbox> -->
+              </el-checkbox-group>
+            </el-form-item>
+            <el-form-item label="结论论述">
+              <el-input v-model="form.cronDescription" type="textarea" placeholder="请输入结论论述"></el-input>
+            </el-form-item>
+            <el-form-item label="后续跟进事项" v-if="$permission('/rms/matter')">
+              <span v-if="form.followUps"><span v-for="item in form.followUps" :key="item.followUpName"
+                  style="margin-right:10px">{{ item.followUpName }}</span></span>
+              <span>
+                <el-popover ref="popover" placement="bottom" @hide="hidePopover" @show="showPopover" trigger="click">
+                  <div>
+                    <addMatter :type="matterType" :sign="matterSign" @value="getMatter"></addMatter>
+                  </div>
+                  <el-button slot="reference">添加后续事项</el-button>
+                </el-popover>
+              </span>
+            </el-form-item>
+          </div>
+        </template>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="承担部门" prop="departmentId">
+              <mySelectTree style="width:100%" v-model="form.departmentId" :options="departmentList"></mySelectTree>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="负责人" prop="headId">
+              <el-select style="width:100%" v-model="form.headId" placeholder="请选择负责人" filterable remote
+                :popper-append-to-body="false" :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-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <template>
+              <div>
+                <el-form-item label="委托方" prop="entrustId" v-if="userinfo.tenantType == 1">
+                  <el-select style="width:100%" v-model="form.entrustId" placeholder="请选择委托方" filterable remote
+                    :popper-append-to-body="false" :remote-method="remoteMethodClient"
+                    v-SelectLazyLoading="lazyLoadingClient" :loading="clientObj.loading">
+                    <el-option v-for="item in clientList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                  </el-select>
+                </el-form-item>
+                <el-form-item label="委托部门" prop="departmentId" v-else>
+                  <mySelectTree style="width:100%" v-model="form.departmentId" :options="departmentList"></mySelectTree>
+                </el-form-item>
+              </div>
+            </template>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="卷号" prop="volumeNumber">
+              <el-input v-model="form.volumeNumber" autocomplete="off" placeholder="请输入卷号"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <!-- <el-form-item label="应用场景">
+          <el-checkbox-group v-model="form.scenarioList">
+            <el-checkbox v-for="item in commonData.ENTERPRISE_APPLICATION_SCENARIO" :key="item.value"
+              :label="parseInt(item.value)">{{ item.label }}</el-checkbox>
+          </el-checkbox-group>
+        </el-form-item> -->
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="产品/技术">
+              <el-input v-model="form.productOrTech" autocomplete="off" placeholder="请输入产品/技术"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="form.track ? 12 : 24">
+            <el-form-item label="关联报告">
+              <el-input v-model="form.associateReportName" autocomplete="off" placeholder="请输入关联报告"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="需要复制的选项" v-show="form.track">
+              <el-select v-model="form.copyIds" multiple clearable placeholder="请选择需要复制的选项" :popper-append-to-body="false"
+                @change="changeCopyIds">
+                <el-option v-for="item in copyList" :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="24">
+            <el-form-item label="事件:">
+              <mySelectButton size='large' style="width:100%" @click="addEvent">
+                <div style="width:100%">
+                  <el-select style="width:100%" v-model="form.eventId" @change="changeEvent" filterable remote clearable
+                    placeholder="请选择" :loading="eventList.loading" v-SelectLazyLoading="loadEvent"
+                    :remote-method="remoteEvent">
+                    <el-option v-for="item in eventList.data" :key="item.id" :label="item.name" :value="item.id">
+                    </el-option>
+                  </el-select>
+                </div>
+              </mySelectButton>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row v-if="show == true">
+          <el-col :span="24">
+            <el-form-item label="调查类型:" prop="matterIds">
+              <el-checkbox-group v-model="form.matterIds">
+                <template>
+                  <el-checkbox v-for="item in dictAssociates" :key="item.id" :label="parseInt(item.id)">
+                    {{ item.name }}
+                  </el-checkbox>
+                </template>
+              </el-checkbox-group>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <template v-if="form.reportType == 7">
+          <div>
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="案件编号">
+                  <el-input v-model="form.caseNumber" autocomplete="off" placeholder="请输入案件编号"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="发文序号">
+                  <el-input v-model="form.issueNumber" autocomplete="off" 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.inventionName" autocomplete="off" placeholder="请输入发明创造名称"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="无效宣告请求人">
+                  <el-input v-model="form.invalidApplication" autocomplete="off" placeholder="请输入无效宣告请求人"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+        </template>
+        <el-form-item :label="(!form.id && form.status == 3) ? '上传报告文档' : '上传附件'">
+          <myUpload :file-list="form.systemFileList" @on-change="onchangeFile" @on-remove="onRemove"
+            @on-preview="onPreview" style="height: 180px;" :autoUpload="true"></myUpload>
+        </el-form-item>
+        <el-form-item label="备注" prop="description">
+          <el-input type='textarea' v-model="form.description" autocomplete="off" placeholder="请输入备注"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" v-if="$reportPermission(form.id, [0, 1])">
+        <el-button @click="handleClose(false)">取 消</el-button>
+        <el-button type="primary" @click="ifNext" v-if="form.reportType == 7 && !form.id">下一步</el-button>
+        <el-button type="primary" @click="submit" v-else>确 定</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 审核弹窗 -->
+    <el-dialog title="添加审核任务" :visible.sync="showTask" width="500px" @close="handleCloseTask">
+      <el-form :model="taskForm" :rules="TaskRules" ref="TaskForm" label-width="120px" v-loading="loading">
+        <el-form-item label="任务名称:" prop="taskName">
+          <el-input v-model="taskForm.taskName" type="text" placeholder="输入任务名称" />
+        </el-form-item>
+        <el-form-item label="审核人:" prop="personnelId">
+          <el-select style="width:100%;" ref="select1" v-model="taskForm.personnelId" clearable filterable remote
+            :remote-method="remoteMethodPerson" v-SelectLazyLoading="lazyLoadingPerson">
+            <el-option v-for="item in personnelList" :key="item.id" :label="item.personnelName" :value="item.id"
+              placeholder="请选择审核人"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="完成日期:" prop="endTime">
+          <el-date-picker style="width:100%" v-model="taskForm.endTime" value-format="yyyy-MM-dd HH:mm:ss" type="datetime"
+            placeholder="选择日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="审核备注:" prop="description">
+          <el-input v-model="taskForm.description" type="textarea" placeholder="输入备注" />
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="handleCloseTask">取 消</el-button>
+        <el-button type="primary" @click="submitTask">确 定</el-button>
+      </span>
+    </el-dialog>
+
+    <!-- 无效应对报告下一步所打开弹窗 -->
+    <el-dialog :visible.sync="showEvidenceAndRequest" width="1000px" :close-on-click-modal="false">
+      <evidenceAndRequest ref="evidence" :examine="true" :reportId="reportId" @show="showEvidenceAndRequest = false">
+      </evidenceAndRequest>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+import evidenceAndRequest from './evidenceAndRequest.vue'
+import addMatter from './addMatter.vue'
+export default {
+  components: {
+    evidenceAndRequest,
+    addMatter,
+  },
+  props: {},
+  data() {
+    const isExist = (rule, value, callback) => {
+      if (!this.form.signPatentNo) {//没有专利号进入报错提示
+        if ([3].includes(Number(this.form.reportType))) {
+          var text = '请输入标的产品'
+        } else {
+          var text = '请输入标的专利号'
+        }
+        callback(new Error(text))
+      } else {
+        callback()
+      }
+    }
+    const isTime = (rule, value, callback) => {
+      if (this.isEndTime) {
+        this.isEndTimes = Date.parse(new Date)
+      }
+
+      let b = Date.parse(value)
+      if (value) {
+        if (b < this.isEndTimes) {
+          callback(new Error('禁止选择现在及以前时间,请重新选择'))
+        } else {
+          callback()
+        }
+      } else {
+        callback(new Error('请选择时间'))
+      }
+    }
+    return {
+      //弹窗标题
+      title: '',
+      //控制弹窗是否打开
+      showDialog: false,
+      //表单数据
+      form: {
+        matterIds: [],
+        systemFileList: [],
+        fileGuids: [],
+      },
+      //表单规则
+      rules: {
+        name: [{ required: true, message: '请输入报告名称', trigger: 'blur' },],
+        signPatentNo: [{ required: true, validator: isExist, trigger: 'blur' },],
+        headId: [{ required: true, message: '请选择负责人', trigger: 'change' },],
+        entrustId: [{ required: true, message: '请选择委托方', trigger: 'change' },],
+      },
+      //加载
+      loading: false,
+      //加载时显示的文字
+      load_text: '加载中',
+      //应用场景
+      commonData: {},
+      //核心结论
+      conclusion: [],
+      //部门数据
+      departmentList: [],
+      //需要复制的选项集合
+      copyList: [],
+      //人员列表
+      // personnelList: [],
+      //客户/委托方列表
+      clientList: [],
+      //上传文件列表
+      files: [],
+      //核心结论类型字典
+      reportAsDicItem: {
+        "0": "INVALID_ASSESS",
+        "1": "THIRD_ASSESS",
+        "2": "STABILITY_ASSESS",
+        "3": "FTO_ASSESS",
+        "4": "TORT_ASSESS",
+        "5": "AVOID_ASSESS",
+        "7": "REINVALID_ASSESS",
+      },
+      //需要复制的内容字典
+      reportAsDicItemCopy: {
+        "0": "INVALID_COPY",
+        "1": "THIRD_COPY",
+        "2": "STABILITY_COPY",
+        "3": "FTO_COPY",
+        "4": "TORT_COPY",
+        "5": "AVOID_COPY",
+      },
+      // 客户懒加载obj
+      clientObj: {
+        queryParams: {
+          current: 1,
+          size: 10,
+        },
+        loading: false,
+        //是否懒加载
+        isLazy: true,
+        data:[],
+      },
+      //人员列表懒加载
+      personnelList: {
+        queryParams: {
+          current: 1,
+          size: 10
+        },
+        data: []
+      },
+      //产品列表懒加载
+      productList: {
+        queryParams: {
+          current: 1,
+          size: 10
+        },
+        isLazy: true,
+        data: []
+      },
+      matterType: null,
+      //事件列表
+      eventList: {
+        queryParams: {
+          current: 1,
+          size: 10
+        },
+        data: []
+      },
+      // 控制调查类型是否显示
+      show: false,
+      //调查类型列表
+      dictAssociates: [],
+      /*审核弹窗所需变量start*/
+      showTask: false,
+      // 任务表单
+      taskForm: {},
+      isEndTime: true,
+      isEndTimes: null,
+      // 任务表单校验
+      TaskRules: {
+        taskName: [{ required: true, message: '请输入任务名称', trigger: 'blur' },],
+        personnelId: [{ required: true, message: '请选择审核人', trigger: 'change' },],
+        endTime: [{ required: true, validator: isTime, trigger: 'change' }],
+      },
+      /*审核弹窗所需变量end*/
+      /*无效应对报告下一步弹窗所需变量start*/
+      // 报告id
+      reportId: null,
+      // 控制弹窗的关闭
+      showEvidenceAndRequest: false,
+      /*无效应对报告下一步弹窗所需变量end*/
+    };
+  },
+  watch: {},
+  computed: {
+    ...mapGetters(['webSocket', 'userinfo']),
+    dictMessage() {
+      return this.$store.state.dictMessage.dictMessage
+    },
+    scenario() {
+      console.log(this.$store.state.dictMessage);
+      return this.$store.state.dictMessage.scenario || []
+    }
+  },
+  created() { },
+  mounted() {
+    // 获取所有产品
+    this.getAllProduct()
+    //获取所有人员列表(修改不要一次性获取,可以使用懒加载加远程搜索 )
+    this.getPermissionPersonnel()
+    //获取所有客户列表(修改不要一次性获取,可以使用懒加载加远程搜索 )
+    this.getAllClientList()
+    //获取所有部门列表
+    this.getDepartment()
+  },
+  methods: {
+    //打开事件弹窗
+    addEvent() {
+
+    },
+    //懒加载事件
+    loadEvent() {
+      if (this.eventList.queryParams.current * this.eventList.queryParams.size >= this.eventList.queryParams.total) {
+        return false
+      }
+      this.eventList.queryParams.current += 1
+      this.getEventList()
+    },
+    //远程搜索
+    remoteEvent(query) {
+      this.eventList.data = []
+      this.eventList.queryParams.current = 1
+      this.eventList.name = query
+      this.getEventList()
+    },
+    //获取事件列表
+    async getEventList(type) {
+      this.eventList.loading = true;
+      let params = {
+        ...this.eventList.queryParams,//分页信息
+        searchQuery: this.eventList.name ? `name=${this.eventList.name}` : '',//检索条件
+        orderDTOList: [{ orderBy: "createTime", orderType: 1 },]//排序
+      }
+      await this.$api.queryEvent(params).then(response => {
+        if (response.code == 200) {
+          this.eventList.loading = false;
+          if (!type) {
+            if (this.form.eventId) {
+              var index = response.data.data.findIndex(item => {
+                return item.id == this.form.eventId
+              })
+              if (index != -1) {
+                response.data.data.splice(index, 1)
+              }
+            }
+            this.eventList.queryParams.total = response.data.total
+          }
+          this.eventList.data.push(...response.data.data)
+          // this.eventList.queryParams.total = response.data.total
+        }
+      })
+    },
+    //切换事件
+    async changeEvent(val) {
+      if (!val) {
+        this.form.scenarioIds = []
+        this.show = false
+        this.form.matterIds = []
+        return
+      }
+      var obj = this.eventList.data.find(item => {
+        return item.id == val
+      })
+      if (obj) {
+        this.form.scenarioIds = [obj.scenarioId]
+        this.show = true
+        await this.onChange()
+      }
+    },
+    //调查类型选择切换
+    async onChange() {
+      if (this.form.scenarioIds.length != 0) {
+        await this.$api.getMatter(this.form.scenarioIds).then(response => {
+          this.show = true
+          this.dictAssociates = response.data.data
+        })
+      } else {
+        this.show = false
+      }
+    },
+    //打开弹窗
+    async open(form) {
+      var a = ''
+      this.form = JSON.parse(JSON.stringify(form))
+      if (this.form.id) {
+        if (this.$reportPermission(this.form.id, [0, 1])) {
+          a = '编辑'
+        } else {
+          a = '查看'
+        }
+      } else {
+        this.$set(this.form,'matterIds',[])
+        this.$set(this.form,'systemFileList',[])
+        this.$set(this.form,'fileGuids',[])
+        a = '创建'
+      }
+      var reportType = this.dictMessage.REPORT_TYPE.filter(item => { return item.value == this.form.reportType })[0].label
+      this.title = a + reportType + '报告'
+      // 事件
+      if (this.form.eventIds && this.form.eventIds.length > 0) {
+        this.form.eventId = this.form.eventIds[0]
+        this.onChange()
+        this.eventList.queryParams.id = this.form.eventId[0]
+        await this.getEventList(1)
+        this.eventList.queryParams.id = null
+        this.show = true
+      } else {
+        this.show = false
+      }
+      // 文件
+      if (this.form.systemFileList && this.form.systemFileList.length > 0) {
+        this.$set(this.form, 'fileGuids', [])
+        this.form.systemFileList.forEach(item => {
+          this.form.fileGuids.push(item.guid)
+        })
+      }
+      // 负责人
+      if (this.form.headId) {
+        this.personnelList.queryParams.id = this.form.headId
+        await this.getPermissionPersonnel(1)
+        this.personnelList.queryParams.id = null
+      }
+      // 委托方
+      if (this.form.entrustId) {
+        this.personnelList.queryParams.id = this.form.headId
+        await this.getPermissionPersonnel(1)
+        this.personnelList.queryParams.id = null
+      }
+      this.getPermissionPersonnel()
+      this.getEventList()
+      this.showDialog = true
+    },
+    // 产品列表远程搜索
+    remoteMethodProduct(query) {
+      this.productList.isLazy = true
+      if (query !== '') {
+        this.productList.loading = true;
+        this.productList.queryParams = {
+          current: 1,
+          size: 10,
+          searchQuery: `name=${query}`
+        }
+        this.$api.queryProductCategory(this.productList.queryParams).then(response => {
+          if (response.code == 200) {
+            this.productList.loading = false;
+            this.productList.data = response.data.data
+          }
+        }).catch(error => {
+          this.productList.loading = false;
+        })
+      } else {
+        this.productList.queryParams.name = null
+        this.productList = [];
+        this.getAllProduct()
+      }
+    },
+    // 产品列表懒加载
+    lazyLoadingProduct() {
+      if (!this.productList.isLazy) {
+        return false
+      }
+      this.productList.queryParams.current++;
+      this.getAllProduct();
+    },
+    getAllProduct() {
+      if (!this.productList.isLazy) {
+        return false
+      }
+      this.$api.queryProductCategory(this.productList.queryParams).then(response => {
+        if (response.code == 200) {
+          if (response.data.data && response.data.data.length == 0) {
+            this.productList.isLazy = false
+          }
+          this.productList.data = [...this.productList.data, ...response.data.data];
+        }
+      }).catch(error => {
+      })
+    },
+    // 人员列表远程搜索
+    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
+        }
+      })
+    },
+    // 客户列表远程搜索
+    remoteMethodClient(query) {
+      if (query != '') {
+        this.clientObj.loading = true;
+        this.clientObj.queryParams.current = 1
+        this.clientObj.queryParams.name = query
+        this.$api.getAllClientList(this.clientObj.queryParams).then(response => {
+          if (response.code == 200) {
+            this.clientObj.loading = false;
+            this.clientList = response.data.records
+          }
+        }).catch(error => {
+          this.clientObj.loading = false;
+        })
+      } else {
+        this.clientObj.queryParams.name = null
+        this.clientList = [];
+        this.getAllClientList()
+      }
+    },
+    // 获取所有客户列表懒加载
+    lazyLoadingClient() {
+      if (this.clientObj.queryParams.current * this.clientObj.queryParams.size >= this.clientObj.queryParams.total) {
+        return false
+      }
+      this.clientObj.queryParams.current += 1
+      this.getAllClientList()
+    },
+    //获取所有客户列表(修改不要一次性获取,可以使用懒加载加远程搜索 )
+    getAllClientList() {
+      this.$api.getAdminClientList(this.clientObj.queryParams).then(response => {
+        this.clientList.push(...response.data.records)
+        this.clientObj.queryParams.total = response.data.total
+      }).catch(error => {
+        this.clientList = []
+        this.$message.error(error.message)
+      })
+    },
+    //获取所有部门列表
+    //获取部门列表
+    getDepartment() {
+      this.$api.getPermissionDepartmentList().then((response) => {
+        this.departmentList = response.data;
+      });
+    },
+    //切换是否完成状态
+    async changeStatus(val) {
+      if (val == 3) {
+        this.rules.headId[0].required = false
+        this.rules.entrustId[0].required = false
+        if (!this.form.id) {
+          this.$set(this.form, 'cronIds', [])
+        }
+        let params = {
+          reportType:this.form.reportType
+        }
+        await this.$api.queryCrons(params).then(res => {
+          if (res.code == 200) {
+            this.conclusion=res.data.data
+          }
+        }).catch(error => {
+          this.conclusion = []
+          this.$message.error(error.message)
+        })
+        // this.conclusion = this.dictMessage[this.reportAsDicItem[this.form.reportType]]
+        this.matterType = 2
+      } else {
+        this.rules.headId[0].required = true
+        this.rules.entrustId[0].required = true
+        this.matterType = null
+      }
+    },
+    //获取专利号且填入报告名称
+    getPatentNo() {
+      if (!this.form.name) {
+        var a = this.dictMessage.REPORT_TYPE.filter(item => { return item.value == this.form.reportType })[0].label
+        this.$set(this.form, 'name', this.form.signPatentNo + a)
+      }
+    },
+    //修改需要复制的选项
+    changeCopyIds(val) {
+      if (Object.keys(this.copyIndex).length > 0) {
+        var index = this.copyList.findIndex(item => {
+          return item.label == '对比文件'
+        })
+        if (index != -1) {
+          var id = this.copyList[index].value
+          var index2 = this.copyList.findIndex(item => {
+            return item.label == '标引信息'
+          })
+          if (val.indexOf(id) != -1) {
+            if (index2 == -1) {
+              this.copyList.splice(index + 1, 0, this.copyIndex)
+            }
+          } else {
+            if (index2 != -1) {
+              this.copyList.splice(index2, 1)
+              this.form.copyIds.splice(this.form.copyIds.indexOf(this.copyIndex.value), 1)
+            }
+          }
+        } else {
+
+        }
+      }
+    },
+    // 上传的文件监听
+    onchangeFile(file, fileList) {
+      if (file.guid) {
+        let index = this.form.systemFileList.findIndex(item => {
+          return item.uid == file.uid
+        })
+        if (index != -1) {
+          this.form.systemFileList.splice(index, 1, file)
+          this.form.fileGuids.push(file.guid)
+        }
+      } else {
+        this.form.systemFileList.push(file.raw)
+      }
+
+    },
+    // 删除上传的文件
+    onRemove(file, fileList) {
+      if (file.guid) {
+        let index = this.form.systemFileList.findIndex(item => {
+          return item.guid == file.guid
+        })
+        if (index!=-1) {
+          this.form.systemFileList.splice(index, 1)
+        }
+        let index2 = this.form.fileGuids.findIndex(item => {
+            return item == file.guid
+        })
+        if (index2 != -1) {
+            this.form.fileGuids.splice(index2, 1)
+        }
+      } else {
+        let index3 = this.form.systemFileList.findIndex(item => {
+          return item.uid == file.uid
+        })
+        if (index3 != -1) { 
+          this.form.fileGuids.splice(index3, 1)
+        }
+      }
+    },
+    //上传附件时点击查看附件内容
+    onPreview(file) {
+      var item = {
+        name: file.name,
+        suffix: '',
+        downLoad: true
+      }
+      var index = file.raw.type.lastIndexOf('/')
+      var type = file.raw.type.substring(index + 1, file.raw.type.length)
+      var arr = ['png', 'jpeg', 'bmp', 'jpg']
+      if (arr.includes(type)) {
+        var FileUrl = URL.createObjectURL(file.raw)
+        var isPicture = 1
+      } else if (type == 'pdf') {
+        var FileUrl = URL.createObjectURL(file.raw)
+        var isPicture = 0
+      } else {
+        return false
+      }
+      const router = this.$router.resolve({
+        path: '/checkFile',
+        query: {
+          row: JSON.stringify(item),
+          FileUrl: FileUrl,
+          isPicture: isPicture
+        }
+      })
+      window.open(router.href, '_blank');
+    },
+    //提交填写的信息
+    submit() {
+      this.$refs.reportForm.validate((valid) => {
+        if (valid) {
+          this.form.type = 2//项目类型(1专利数据库 2报告 3专利挖掘项目)
+          if (this.form.scenarioIds && this.form.scenarioIds.length>0) {
+            var scenarioIds = JSON.parse(JSON.stringify(this.form.scenarioIds))
+          }
+          if (this.form.eventId) {
+            this.form.events = []
+            this.form.scenarioIds = []
+            this.form.matterIds.forEach(item => {
+              this.form.events.push(
+                {
+                  matterId: item,
+                  scenarioId: scenarioIds[0],
+                  eventId: this.form.eventId
+                }
+              )
+            })
+          }
+          let formData = this.form
+          if (!this.form.id) {//新增报告
+            this.$confirm('是否需要进行审核?', '提示', {
+              confirmButtonText: '是',
+              cancelButtonText: '否',
+              closeOnClickModal: false,
+              distinguishCancelAndClose: true,
+            }).then(() => {//审核打开审核弹窗
+              this.showTask = true
+              this.$set(this.taskForm, 'taskName', this.form.name + '审核')
+            }).catch(action => {//不审核直接创建报告
+              // 调用创建报告公用,接口
+              this.addReport(formData)
+            });
+
+          } else {//编辑报告
+            this.$api.updateReportProject(formData).then(response => {
+              if (response.code == 200) {
+                this.files = []
+                this.$message.success('报告更新成功')
+                this.$emit('getList', true)
+                this.handleClose()
+              }
+            })
+          }
+        }
+      })
+    },
+    //关闭弹窗
+    handleClose(val) {
+      if (this.form.reportType == 7 && val) {
+        this.showEvidenceAndRequest = true
+        this.$s.setSession('params', {})
+        this.reportId = val
+      }
+      this.personnelList.queryParams.name = ''
+      this.$refs.reportForm.resetFields()
+      this.form = {
+        matterIds: [],
+        systemFileList: [],
+        fileGuids: [],
+      }
+      this.showDialog = false
+    },
+    // 创建报告创建接口公用
+    addReport(formData) {
+      this.$api.addReportProject(formData).then(response => {
+        if (response.code == 200) {
+          this.files = []
+          this.$message.success('报告创建成功')
+          this.$emit('getList', true)
+          // response.data是创建成功后返回的报告id
+          this.handleClose(response.data)
+        }
+      })
+    },
+    //提交审核任务
+    submitTask() {
+      this.isEndTime = false
+      this.$refs.TaskForm.validate((valid) => {
+        if (valid) {
+          let formData = new FormData()
+          if (this.files && this.files.length > 0) {
+            for (var i = 0; i < this.files.length; i++) {
+              formData.append("files", this.files[i]);
+            }
+          }
+          let a = {
+            report: this.form,
+            personIds: [this.taskForm.personnelId],
+            taskName: this.taskForm.taskName,
+            endTime: this.taskForm.endTime,
+            description: this.taskForm.description,
+            type: 0,
+          }
+          formData.append('taskVO', JSON.stringify(a))
+          this.$api.AddTask(formData).then(response => {
+            if (response.code == 200) {
+              this.files = []
+              this.$message.success('报告创建成功并发送审核')
+              this.$emit('getList', true)
+              this.handleCloseTask()
+              this.handleClose()
+            }
+          }).catch(error => {
+            this.$message.error('报告创建失败')
+            this.handleCloseTask()
+          })
+        }
+      })
+    },
+    //关闭审核弹窗
+    handleCloseTask() {
+      this.matterType = null
+      this.$refs.TaskForm.resetFields()
+      this.taskForm = {}
+      this.showTask = false
+      this.isEndTime = true
+    },
+    // 创建无效应对报告下一步
+    ifNext() {
+      this.$refs.reportForm.validate((valid) => {
+        if (valid) {
+          let formData = new FormData()
+          if (this.files && this.files.length > 0) {
+            for (var i = 0; i < this.files.length; i++) {
+              formData.append("files", this.files[i]);
+            }
+          }
+          formData.append('report', this.form)
+          this.addReport(formData)
+        } else {
+          this.loading = false
+          this.$alert('校验未通过,请按照要求创建报告', '提示', {
+            confirmButtonText: '确定',
+            type: 'warning',
+            callback: action => {
+            }
+          });
+          return false;
+        }
+      })
+    },
+    
+  },
+  // 组件销毁函数
+  destroyed() {
+    // 清空事件相关
+    this.form.eventIds = []
+    this.eventList.queryParams.current=1
+    this.eventList.data=[]
+     // 清空负责人相关
+    this.personnelList.data = []
+    this.personnelList.queryParams.current=1
+  },
+};
+</script>
+<style lang="scss" scoped></style>

+ 16 - 16
src/views/report/components/index.vue

@@ -27,9 +27,9 @@
               <el-dropdown-menu slot="dropdown" style="margin-top:0px" v-if="dictMessage.REPORT_TYPE && dictMessage.REPORT_TYPE.length>0">
                 <!-- 遍历按钮 -->
                 <el-dropdown-item
-                  v-for="item in dictMessage.REPORT_TYPE.filter(item => !['6'].includes(item.dictChildValue))"
-                  :key="item.dictChildLabel" @click.native="handleAnalyse(item.dictChildValue)"
-                  v-if="$permission('/pcs/report/add/' + item.permission)">{{ item.dictChildLabel }}</el-dropdown-item>
+                  v-for="item in dictMessage.REPORT_TYPE.filter(item => !['6'].includes(item.value))"
+                  :key="item.label" @click.native="handleAnalyse(item.value)"
+                  v-if="$permission('/pcs/report/add/' + item.permission)">{{ item.label }}</el-dropdown-item>
               </el-dropdown-menu>
             </el-dropdown>
             <el-button type="primary" class="margin-left_10" size="small" @click="showField">显示栏位管理</el-button>
@@ -147,15 +147,15 @@ export default {
       var a = this.$store.state.dictMessage.dictMessage
       if (a.REPORT_TYPE) {
         a.REPORT_TYPE.forEach(item => {
-          if (['0', '1', '2'].includes(item.dictChildValue)) {
+          if (['0', '1', '2'].includes(item.value)) {
             item.permission = 'invalid'
-          } else if (item.dictChildValue == 3) {
+          } else if (item.value == 3) {
             item.permission = 'FTO'
-          } else if (item.dictChildValue == 4) {
+          } else if (item.value == 4) {
             item.permission = 'tort'
-          } else if (item.dictChildValue == 5) {
+          } else if (item.value == 5) {
             item.permission = 'avoidDesign'
-          } else if (item.dictChildValue == 7) {
+          } else if (item.value == 7) {
             item.permission = 'reInvalid'
           }
         })
@@ -164,15 +164,15 @@ export default {
         // 报告类型
         this.searchFiled[1].options = a.REPORT_TYPE.map(item => {
           return {
-            value: item.dictChildValue,
-            label: item.dictChildLabel
+            value: item.value,
+            label: item.label
           }
         })
         // 报告状态
         this.searchFiled[2].options = a.REPORT_STATE.map(item => {
           return {
-            value: item.dictChildValue,
-            label: item.dictChildLabel
+            value: item.value,
+            label: item.label
           }
         })
       }
@@ -184,7 +184,7 @@ export default {
       var b = {}
       if (a) {
         a.forEach(item => {
-          b[item.dictChildValue] = item.dictChildLabel
+          b[item.value] = item.label
         });
         return b
       }
@@ -299,11 +299,11 @@ export default {
       switch (obj.label) {
         case '报告类型':
           if(this.dictMessage.REPORT_TYPE && this.dictMessage.REPORT_TYPE.length>0){
-            let dict = this.dictMessage.REPORT_TYPE.filter(item => !['6'].includes(item.dictChildValue))
+            let dict = this.dictMessage.REPORT_TYPE.filter(item => !['6'].includes(item.value))
             obj.options = dict.map(item => {
               return {
-                label: item.dictChildLabel,
-                value: item.dictChildValue,
+                label: item.label,
+                value: item.value,
               }
             })
           }