Переглянути джерело

许可历史和查询专利自定义栏位选中值

zhuliu 1 рік тому
батько
коміт
a5db95fd7d

+ 2 - 0
src/api/index.js

@@ -37,6 +37,7 @@ import task2 from "./newApi/task"
 import importAndExport from './newApi/importAndExport'
 import patent from './newApi/patent'
 import custom from "./newApi/custom";
+import otherPatentInformation from "./newApi/otherPatentInformation";
 
 export default {
   ...report,
@@ -74,4 +75,5 @@ export default {
   ...importAndExport,
   ...patent,
   ...custom,
+  ...otherPatentInformation
 }

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

@@ -119,6 +119,14 @@ export default {
     return axios.post("/xiaoshi/customOption/deleteCustomOption", data);
   },
 
+  /**
+  * 查询所有标引栏位对应选择的值
+  * @param {*} data 
+  * @returns 
+  */
+  getPatentFields(data) {
+    return axios.post("/xiaoshi/customField/getPatentFields", data);
+  },
 
   /**
   * 查询所有标引栏位

+ 115 - 0
src/api/newApi/otherPatentInformation.js

@@ -0,0 +1,115 @@
+import axios from "@/utils/axios";
+export default {
+  /**
+   * 诉讼历史
+   * 新增或编辑诉讼历史
+   * @param {*} data 
+   * @returns 
+   */
+  addLitigationHistory(data) {
+    return axios.post("/xiaoshi/litigationHistory/saveOrUpdate", data);
+  },
+  /**
+   * 诉讼历史
+   * 删除诉讼历史
+   * @param {*} data 
+   * @returns 
+   */
+  deleteLitigationHistory(data) {
+    return axios.post("/xiaoshi/litigationHistory/delete", data);
+  },
+  /**
+   * 诉讼历史
+   * 查询诉讼历史
+   * @param {*} data 
+   * @returns 
+   */
+  queryLitigationHistory(data) {
+    return axios.post("/xiaoshi/litigationHistory/query", data);
+  },
+
+  /**
+   * 审查历史
+   * 新增或编辑审查历史
+   * @param {*} data 
+   * @returns 
+   */
+  addReviewHistory(data) {
+    return axios.post("/xiaoshi/reviewHistory/saveOrUpdate", data);
+  },
+  /**
+   * 审查历史
+   * 删除审查历史
+   * @param {*} data 
+   * @returns 
+   */
+  deleteReviewHistory(data) {
+    return axios.post("/xiaoshi/reviewHistory/delete", data);
+  },
+  /**
+   * 审查历史
+   * 查询审查历史
+   * @param {*} data 
+   * @returns 
+   */
+  queryReviewHistory(data) {
+    return axios.post("/xiaoshi/reviewHistory/query", data);
+  },
+
+
+  /**
+   * 其他参考资料
+   * 新增或编辑其他参考资料
+   * @param {*} data 
+   * @returns 
+   */
+  addOtherReferences(data) {
+    return axios.post("/xiaoshi/otherReferences/saveOrUpdate", data);
+  },
+  /**
+   * 其他参考资料
+   * 删除其他参考资料
+   * @param {*} data 
+   * @returns 
+   */
+  deleteOtherReferences(data) {
+    return axios.post("/xiaoshi/otherReferences/delete", data);
+  },
+  /**
+   * 审查历史
+   * 查询其他参考资料
+   * @param {*} data 
+   * @returns 
+   */
+  queryOtherReferences(data) {
+    return axios.post("/xiaoshi/otherReferences/query", data);
+  },
+
+  /**
+   * 许可历史
+   * 新增或编辑许可历史
+   * @param {*} data 
+   * @returns 
+   */
+  addPermissionRecord(data) {
+    return axios.post("/xiaoshi/permissionRecord/saveOrUpdate", data);
+  },
+  /**
+   * 许可历史
+   * 删除许可历史
+   * @param {*} data 
+   * @returns 
+   */
+  deletePermissionRecord(data) {
+    return axios.post("/xiaoshi/permissionRecord/delete", data);
+  },
+  /**
+   * 许可历史
+   * 查询许可历史
+   * @param {*} data 
+   * @returns 
+   */
+  queryPermissionRecord(data) {
+    return axios.post("/xiaoshi/permissionRecord/query", data);
+  },
+}

+ 43 - 0
src/views/project/patentCollection/index.vue

@@ -412,6 +412,48 @@ export default {
       }
       this.getList()
     },
+    //查询专利自定义字段对应的值
+    getPatentFields(){
+      var arr = this.customList.filter(item=>{
+        return item.ifPersonal
+      })
+      if(arr.length == 0){
+        return false
+      }
+      if(this.tableData.length == 0){
+        return false
+      }
+      var patent = this.tableData[0]
+      var customFields = patent.customFields
+      if(customFields){
+        for(var i = 0;i<customFields.length;i++){
+          var index = arr.find(item=>{
+            return item.value == customFields[i].value
+          })
+          if(index != -1){
+            arr.splice(index,1)
+          }
+        }
+      }
+      var patentNos = this.tableData.map(item=>{
+        return item.patentNo
+      })
+      var params = {
+        projectId:this.projectId,
+        patentNos:patentNos,
+        innerFields:arr.map(item=>{
+          return {
+            fieldType:item.type,
+            fieldId:item.value
+          }
+        })
+      }
+      this.$api.getPatentFields(params).then(response=>{
+        if(response.code == 200){
+
+        }
+      })
+    },
     //获取专利信息
     getList(size) {
       if (size) {
@@ -441,6 +483,7 @@ export default {
             this.commonSwitch()
           }
           this.isRefresh()
+          this.getPatentFields()
         }
       }).catch(error => {
         this.tableData = []

+ 5 - 1
src/views/project/patentDetails/components/patentDetails.vue

@@ -128,6 +128,9 @@ import PatentFamily from './patentMessage/PatentFamily.vue'
 import PatentStatus from './patentMessage/PatentStatus.vue'
 import PatentPDF from './patentMessage/PatentPDF.vue'
 import pageProduct from './patentMessage/pageProduct.vue'
+import licenseHistory from './patentMessage/history/licenseHistory.vue'
+
+
 import { projectData, handleData } from '../../patentCollection/components/mixins/index'
 
 import PatentField from './PatentField.vue'
@@ -143,6 +146,7 @@ export default {
     PatentStatus,
     PatentPDF,
     pageProduct,
+    licenseHistory,
 
 
     PatentField,
@@ -247,7 +251,7 @@ export default {
       ],
       menuList2: [
         {
-          value: 'Permit',
+          value: 'licenseHistory',
           // show: this.$permission('/workspace/patent/worth') ? false : true,
           label: '许可历史'
         },

+ 68 - 0
src/views/project/patentDetails/components/patentMessage/history/dialog/form.vue

@@ -0,0 +1,68 @@
+<template>
+  <div>
+    <el-dialog width="800px" :title="title" :visible.sync="showDialog" :before-close="close">
+        <el-form :model="form" ref="form" label-width="120px">
+            <el-form-item v-for="item in field" :key="item.field" :label="item.label">
+                <component style="width:100%" v-if="item.type == 'text'" :is='item.components' v-model="form[item.field]" :placeholder="`请输入${item.label}`"></component>
+                <component style="width:100%" v-if="item.type == 'number'" :is='item.components' v-model="form[item.field]" :precision="item.precision" :step="item.step" :min="item.min" :max="item.max" :placeholder="`请输入${item.label}`"></component>
+                <component style="width:100%" v-if="item.type == 'date'" :is='item.components' :type="item.type" value-format="yyyy-MM-dd" v-model="form[item.field]" :placeholder="`请选择${item.label}`"></component>
+                <component style="width:100%" v-if="item.type == 'select'" :is='item.components' v-model="form[item.field]" :placeholder="`请选择${item.label}`" >
+                    <el-option
+                        v-for="option in item.options"
+                        :key="option.value"
+                        :label="option.label"
+                        :value="option.value">
+                    </el-option>
+                </component>
+            </el-form-item>
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+            <el-button type="primary" @click="submitForm()" size="small" style="width:100px" :loading="btnLoading">保存</el-button>
+            <el-button  @click="close()" size="small" style="width:100px">取消</el-button>
+        </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  props: {},
+  data() {
+    return {
+        title:'',
+        showDialog:false,
+        field:[],
+        form:{},
+        btnLoading:false
+    };
+  },
+  watch: {},
+  computed: {},
+  created() {},
+  mounted() {},
+  methods: {
+    open(field,form,title){
+        this.field = field
+        this.form = JSON.parse(JSON.stringify(form))
+        this.title = title
+        this.showDialog = true
+    },
+    close(){
+        this.showDialog = false
+    },
+    submitForm(){
+        this.$refs.form.validate((valid) => {
+            if (valid) {
+                this.$emit('save',this.form)
+            }
+        })
+    },
+    changeBtnLoading(val){
+        this.btnLoading = val
+    }
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 229 - 0
src/views/project/patentDetails/components/patentMessage/history/licenseHistory.vue

@@ -0,0 +1,229 @@
+<template>
+    <!-- 许可历史 -->
+  <div class="height_100">
+    <el-container>
+        <el-header>
+            <div class="head">
+                <el-button size="small" @click="add">添加</el-button>
+            </div>
+        </el-header>
+        <el-main>
+            <el-table :data="tableData" v-loading="loading" border style="width: 100%">
+                <el-table-column label="许可人" prop="licensor" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.licensor}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="被许可人" prop="licensee" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.licensee}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="被许可人国家" prop="licenseeCountry" align="center">
+                    <template slot-scope="scope">
+                        <span>{{scope.row.licenseeCountry}}</span>
+                    </template>
+            </el-table-column>
+            <el-table-column label="许可时间" prop="licenseTime" align="center">
+                <template slot-scope="scope">
+                    <span>{{scope.row.licenseTime? scope.row.licenseTime.slice(0,10):'' }}</span>
+                </template>
+            </el-table-column>
+            <el-table-column label="截止时间" prop="licenseDeadLine" align="center">
+                <template slot-scope="scope">
+                    <span>{{scope.row.licenseDeadLine? scope.row.licenseDeadLine.slice(0,10):'' }}</span>
+                </template>
+            </el-table-column>
+            <el-table-column label="许可费用/万元" prop="licenseFee" align="center">
+                <template slot-scope="scope">
+                    <span>{{scope.row.licenseFee}}</span>
+                </template>
+            </el-table-column>
+                <el-table-column label="许可类型" prop="licenseType" align="center">
+                    <template slot-scope="scope">
+                        <span>{{permitTypeList[scope.row.licenseType]}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="操作" width="160" align="center">
+                    <template slot-scope="scope">
+                        <div class="special">
+                            <el-button type="text" size="small" @click="edit(scope.row)">编辑</el-button>
+                            <el-button type="text" size="small" @click="del(scope.row)">删除</el-button>
+                        </div>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </el-main>
+        <el-footer class="pagination">
+            <el-pagination  background layout="total,prev, pager, next,jumper" :total="total" @current-change="handleCurrentChange" :current-page="queryParams.current" :page-size="queryParams.size"></el-pagination>
+        </el-footer>
+    </el-container>
+    <addMessage ref="addMessage" @save="save"></addMessage>
+  </div>
+</template>
+
+<script>
+import mixins from './mixins/index';
+export default {
+    mixins:[mixins],
+    components: {},
+    props: {},
+    data() {
+        return {
+            field:[
+                {
+                    field:'licensor',
+                    label:'许可人',
+                    components:'el-input',
+                    type:'text'
+                },
+                {
+                    field:'licensee',
+                    label:'被许可人',
+                    components:'el-input',
+                    type:'text'
+                },
+                {
+                    field:'licenseeCountry',
+                    label:'被许可人国家',
+                    components:'el-input',
+                    type:'text'
+                },
+                {
+                    field:'licenseTime',
+                    label:'许可时间',
+                    components:'el-date-picker',
+                    type:'date'
+                },
+                {
+                    field:'licenseDeadLine',
+                    label:'截止时间',
+                    components:'el-date-picker',
+                    type:'date'
+                },
+                {
+                    field:'licenseFee',
+                    label:'许可费用(万元)',
+                    components:'el-input-number',
+                    type:'number',
+                    min:0,
+                    max:1,
+                    precision:1,
+                    step:0.1
+                },
+                {
+                    field:'licenseType',
+                    label:'许可类型',
+                    components:'el-select',
+                    type:'select',
+                    options:[
+                        {
+                            label:'独占许可',
+                            value:'1'
+                        },
+                        {
+                            label:'普通许可',
+                            value:'2'
+                        },
+                        {
+                            label:'排他许可',
+                            value:'3'
+                        },
+                    ]
+                },
+            ],
+            permitTypeList:{
+                '1':'独占许可',
+                '2':'普通许可',
+                '3':'排他许可'
+            }
+        };
+    },
+    watch: {},
+    computed: {},
+    created() {},
+    mounted() {},
+    methods: {
+        getList(){
+            this.loading = true
+            this.$api.queryPermissionRecord(this.queryParams).then(response=>{
+                if(response.code == 200){
+                    this.tableData = response.data.data
+                    this.total = response.data.total
+                    this.loading = false
+                }
+            }).catch(error=>{
+                this.tableData = []
+                this.total = 0
+                this.loading = false
+            })
+        },
+        add(){
+            var licensor = ''
+            if(this.patent.rightHolder && this.patent.rightHolder.length>0){
+                licensor = this.patent.rightHolder[0]
+            }
+            var form = {
+                licensor:licensor
+            }
+            var title = '添加许可历史'
+            this.$refs.addMessage.open(this.field,form,title)
+        },
+        edit(row){
+            var title = '编辑许可历史'
+            this.$refs.addMessage.open(this.field,row,title)
+        },
+        del(row){
+            this.deletes([row.id])
+        },
+        deletes(ids){
+            this.$confirm('是否删除', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                this.$api.deletePermissionRecord(ids).then(response=>{
+                    if(response.code == 200){
+                        this.$message.success('删除成功')
+                        this.getList()
+                    }
+                }).catch(error=>{
+
+                })
+            })
+        },
+        save(val){
+            this.$refs.addMessage.changeBtnLoading(true)
+            var form = {
+                ...val,
+                patentNo:this.patent.patentNo
+            }
+            var a = ''
+            if(form.id){
+                a='编辑'
+            }else{
+                a='添加'
+            }
+            this.$api.addPermissionRecord(form).then(response=>{
+                if(response.code == 200){
+                    this.$message.success(a+'成功')
+                    this.$refs.addMessage.changeBtnLoading(false)
+                    this.$refs.addMessage.close()
+                    this.getList()
+                }
+            }).catch(error=>{
+                this.$message.error(a+'失败')
+                this.$refs.addMessage.changeBtnLoading(false)
+            })
+        },
+        
+    },
+};
+</script>
+<style lang="scss" scoped>
+.head{
+    width: 100%;
+    display: flex;
+    justify-content: flex-end;
+}
+</style>

+ 37 - 0
src/views/project/patentDetails/components/patentMessage/history/mixins/index.js

@@ -0,0 +1,37 @@
+import addMessage from '../dialog/form.vue'
+export default{
+    components:{
+        addMessage
+    },
+    props:{
+        patent:{
+            default:{}
+        }
+    },
+    data() {
+        return {
+            tableData:[],
+            queryParams:{
+                current:1,
+                size:10
+            },
+            total:0,
+            loading:false
+        }
+    },
+    watch:{
+        patent(val){
+            this.queryParams.patentNo = val.patentNo
+            this.getList()
+        }
+    },
+    mounted() {
+        this.getList()
+    },
+    methods: {
+        handleCurrentChange(val){
+            this.queryParams.current = val
+            this.getList()
+        }
+    },
+}