// 选择专利js export const fastSelectPatent = { data() { return { // 数据 tableData: [], //总数 total: 0, //分页及选择专利的信息 queryParams: { current: 1, size: 10, groupField: '0', selected: [], isAdd: [], isDelete: [], }, //是否编辑//编辑按钮暂时隐藏,改为默认为true refresh: true, //选择的专利集合 patentNoList: [], //选择总数 selectedTotal: 0, //选择专利加载 selectNumberLoading: false, // 起始位置 startNumber: 1, // 结束位置 endNumber: 0, // 判断是否是全部选择或范围选择 quickSelect: false, quickSelectArr: [], } }, mounted() { if(!this.taskType || this.taskType == 0){ this.refresh = true }else{ this.refresh = false } }, methods: { // 是否刷新 isRefresh() { if(!this.refresh){ return } this.refresh = false this.$nextTick(() => { this.refresh = true }) }, //快速选择 handleSelectNumber(type) { switch (type) { case 0: //本页选择 var patentNos = this.$store.state.patent.records.map((item) => item.patentNo) if(this.quickSelect){ var arr = patentNos.filter(item=>{ return this.patentNoList.indexOf(item) == -1 }) if(arr.length>0){ arr.forEach(item => { this.getChoosePatentNo(item) }); } }else{ this.queryParams.isAdd = [...new Set(this.queryParams.isAdd.concat(patentNos)),]; } this.patentNoList = [...new Set(this.patentNoList.concat(patentNos)),]; break; case 1: //全部选择 this.startNumber = 1; this.endNumber = this.total; this.$set(this.queryParams, 'startNumber', 1) this.$set(this.queryParams, 'endNumber', this.total) case 2: //范围选择 this.queryParams.isDelete = []; this.queryParams.isAdd = []; this.patentNoList = []; this.quickSelect = true; if (type == 2) { if (!Number(this.queryParams.startNumber) || !Number(this.queryParams.endNumber)) { this.$set(this.queryParams, 'startNumber', this.startNumber > 0 ? this.startNumber : 1) this.$set(this.queryParams, 'endNumber', this.endNumber > 0 ? this.endNumber : this.total) break; } this.startNumber = this.queryParams.startNumber; this.endNumber = this.queryParams.endNumber; } this.commonSwitch(); break; } this.getSelectedTotal() this.isRefresh() }, //每页全部选择或范围选择的专利 commonSwitch() { var arr = [] if (this.queryParams.size * this.queryParams.current >= this.startNumber) { if (this.queryParams.size * this.queryParams.current >= this.endNumber) { if (this.queryParams.size * (this.queryParams.current - 1) + 1 <= this.startNumber) { var a = this.startNumber - (this.queryParams.size * (this.queryParams.current - 1) + 1); var b = this.endNumber - (this.queryParams.size * (this.queryParams.current - 1) + 1); for (var y = a; y <= b; y++) { arr.push(this.tableData[y].patentNo) } } else { var a = this.queryParams.size * (this.queryParams.current - 1) + 1 - (this.queryParams.size * (this.queryParams.current - 1) + 1); var b = this.endNumber - (this.queryParams.size * (this.queryParams.current - 1) + 1); for (var y = a; y <= b; y++) { arr.push(this.tableData[y].patentNo) } } } else { if (this.queryParams.size * (this.queryParams.current - 1) + 1 <= this.startNumber) { var a = this.startNumber - (this.queryParams.size * (this.queryParams.current - 1) + 1); var b = this.queryParams.size * this.queryParams.current - (this.queryParams.size * (this.queryParams.current - 1) + 1); for (var y = a; y <= b; y++) { arr.push(this.tableData[y].patentNo) } } else { var a = this.queryParams.size * (this.queryParams.current - 1) + 1 - (this.queryParams.size * (this.queryParams.current - 1) + 1); var b = this.queryParams.size * this.queryParams.current - (this.queryParams.size * (this.queryParams.current - 1) + 1); for (var y = a; y <= b; y++) { arr.push(this.tableData[y].patentNo) } } } } // this.patentNoList = JSON.parse(JSON.stringify(arr)) this.quickSelectArr = JSON.parse(JSON.stringify(arr)) this.getHaveChoose(arr) }, //获取已选择的专利 getHaveChoose(arr) { var arr1 = [...new Set(arr.concat(this.queryParams.isAdd))] this.patentNoList = arr1.filter((x) => this.queryParams.isDelete.indexOf(x) == -1) }, //获取已选择的总条数 getSelectedTotal() { this.selectedTotal = Number(this.endNumber) - Number(this.startNumber) + 1 + Number(this.queryParams.isAdd.length) - Number(this.queryParams.isDelete.length) }, //获取手动选择的专利 getChoosePatentNo(patentNo) { if (this.quickSelect) { var index = this.queryParams.isDelete.findIndex(item => { return item == patentNo }) if (index == -1) { var index2 = this.quickSelectArr.findIndex(item => { return item == patentNo }) if (index2 == -1) { this.setIsAdd(patentNo) } else { this.queryParams.isDelete.push(patentNo) } } else { this.queryParams.isDelete.splice(index, 1) } } else { this.setIsAdd(patentNo) } this.getSelectedTotal() }, //是否加入isAdd里面 setIsAdd(patentNo) { var index = this.queryParams.isAdd.findIndex(item => { return item == patentNo }) if (index != -1) { this.queryParams.isAdd.splice(index, 1) } else { this.queryParams.isAdd.push(patentNo) } }, //取消选择 handleCancelSelectNumber() { this.patentNoList = []; this.queryParams.isAdd = [] this.queryParams.isDelete = [] this.startNumber = 1 this.queryParams.startNumber = 1 this.queryParams.endNumber = this.total this.endNumber = 0 this.quickSelect = false this.selectedTotal = 0 // this.getList() this.isRefresh() }, // 范围选择起始数字框 change1(val) { if (!isNaN(val)) { if (!val || val <= 0) { this.queryParams.startNumber = 1 } else { if (this.queryParams.startNumber > this.total) { this.queryParams.startNumber = this.total } } } else { this.queryParams.startNumber = 1 } }, // 范围选择截止数字框 change2(val) { if (!isNaN(val)) { if (!val || val <= 0) { this.queryParams.endNumber = this.total } else { if (this.queryParams.endNumber > this.total) { this.queryParams.endNumber = this.total } } } else { this.queryParams.endNumber = this.total } }, // 批量标引 async handleIndex() { if(!(await this.$permission.projectPermission(this.projectId))){ this.$showPermissionDialog() return false } let obj = { isAdd: this.queryParams.isAdd, isDelete: this.queryParams.isDelete, startNumber: this.startNumber, endNumber: this.endNumber, searchQuery: this.searchStr, customFields: this.customFields, groupField:this.queryParams.groupField, orderDTOList:this.sort, } this.$refs.PatentBatchIndexVue.open(obj) }, //批量删除专利 async deletePatents(){ if(!(await this.$permission.projectPermission(this.projectId))){ this.$showPermissionDialog() return false } this.$confirm('确认删除选择的专利吗?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { var params = { isAdd:this.queryParams.isAdd, isDelete: this.queryParams.isDelete, startNumber: this.startNumber, endNumber: this.endNumber, searchQuery: this.searchStr, customFields: this.customFields, groupField:this.queryParams.groupField, orderDTOList:this.sort, projectId:this.projectId } this.loading =true this.$api.deletePatents(params).then(res=>{ if(res.code == 200){ this.queryParams = { current: 1, size: 10, groupField: '0', selected: [], isAdd: [], isDelete: [], } this.endNumber = 0 this.startNumber = 1 this.getSelectedTotal() this.loading = false this.$message.success('删除成功') this.handleCancelSelectNumber() this.getList() if(this.$refs.customFields){ this.$refs.customFields.refreshOptions(1) } } }).catch(error=>{ this.loading = false this.$message.error('删除失败') }) }) }, }, }