123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- <template>
- <div>
- <el-dialog :title="title" v-draggable :visible.sync="visible" width="1000px" custom-class="checkFile" :before-close="close" :modal="false" :close-on-click-modal="false" :modal-append-to-body="false">
- <el-form :model="form" ref="form" label-width="100px" label-position="left">
-
- <!-- <el-form-item label="选择颜色" class="item">
- <el-input type="color" v-model="form.color" style="user-select:none;width: 100px;" @input="changeColor()"/>
- </el-form-item> -->
- <el-form-item label="选中文本" class="item">
- <el-input v-model="form.evidenceText" placeholder="请输入备注" type="textarea" show-word-limit></el-input>
- </el-form-item>
- <el-form-item label="位置/附图号" class="item">
- <el-input v-model="form.fieldName" placeholder="请输入备注" show-word-limit></el-input>
- </el-form-item>
- <el-form-item label="解析过程" class="item">
- <el-input v-model="form.common" placeholder="请输入解析过程" show-word-limit></el-input>
- </el-form-item>
- <el-form-item label="代表图" class="item">
- <el-upload ref="upload" action="#" :auto-upload="false" :on-change="change" list-type="picture" :show-file-list="false">
- <span style="display:flex;flex-direction:row;flex-wrap:wrap;">
- <span class="avatar" v-if="form.fileGuid"
- style="margin-left:10px">
- <span class="deleteImg">
- <span>
- <i class="el-icon-zoom-in" @click.stop="handlePictureCardPreview()"></i>
- <i class="el-icon-delete" @click.stop="handleRemove()"></i>
- </span>
- </span>
- <el-image ref="image" class="img" :src="$commonJS.checkViewer(form.fileGuid)" :preview-src-list="[$commonJS.checkViewer(form.fileGuid)]"></el-image>
- </span>
- <i class="el-icon-plus avatar-uploader-icon" v-if="!form.fileGuid"></i>
- </span>
- </el-upload>
- </el-form-item>
- <el-form-item label="权利特征" class="item" style="margin-bottom:5px">
- <span v-for="item in form.features">[{{item.rightName}}]
- <el-tooltip class="item" effect="dark" :content="item.content" placement="top">
- <span>特征{{item.featuresOrder}}</span>
- </el-tooltip>
- </span>
- </el-form-item>
- </el-form>
- <!-- 特征 -->
- <div style="height:500px" v-if="visible">
- <splitPage ref="splitPage" @getCheckList="getCheckList" :isEdit="false" :tableData="features" :isResult="9" :patentNo="patentNo" :columnList="columnList" :checkFeatures="checkFeatures" :checkData="checkData">
- <!-- <div slot="handleLeft">
- <span>标的专利:</span><el-link type="primary" @click="toPatentDetails(patentNo)">{{ patentNo }}</el-link>
- </div>
- <div slot="handleRight"></div> -->
- </splitPage>
- </div>
- <div slot="footer" class="dialog-footer">
- <el-button @click="close">取 消</el-button>
- <el-button type="primary" v-if="form.id" @click="delContrast(form)">删 除</el-button>
- <el-button type="primary" :loading="btnLoading" @click="submit">确 定</el-button>
- </div>
- </el-dialog>
- </div>
- </template>
- <script>
- import splitPage from '@/views/report/components/splitPage/splitPage.vue';
- import { mapGetters } from "vuex";
- export default {
- components: {
- splitPage
- },
- props: {},
- data() {
- return {
- form:{},
- title:'添加对比',
- visible:false,
- features:[],
- projectId:0,
- patentNo:'',
- loading:false,
- selected:[],
- columnList:[
- {
- name: "结论",
- type: "Array",
- value: 'conclusion',
- disabled:true,
- options:[
- {
- label:'公开',
- value:'公开'
- },
- {
- label:'部分公开',
- value:'部分公开'
- },
- ]
- },
- ],
- checkData:[],
- checkFeatures:[],
- btnLoading:false
- };
- },
- watch: {},
- computed: {
- ...mapGetters(["contextMenu",'highlight']),
- },
- created() {},
- mounted() {
- },
- methods: {
- open(){
- this.getData()
- this.visible = true
- },
- close(){
- this.visible = false
- },
- getFeature(){
- let params = {
- patentNo:this.patentNo,
- projectId: this.projectId,
- }
- this.$api.getSpiltFeature(params).then(res => {
- if (res.code == 200) {
- if (res.data.data.length > 0) {
- var data = []
- res.data.data.forEach(RightVosItem => {
- if (RightVosItem.features.length > 0) {
- RightVosItem.features.forEach(FeaturesItem => {
- FeaturesItem.featureId = FeaturesItem.id
- FeaturesItem.pRightName = RightVosItem.rightName
- FeaturesItem.pSignPatentNo = RightVosItem.signPatentNo
- FeaturesItem.pPatentNo = RightVosItem.patentNo
- FeaturesItem.pContentOut = RightVosItem.contentOut
- FeaturesItem.pContent = RightVosItem.content
- FeaturesItem.pProjectId = RightVosItem.projectId
- FeaturesItem.pType = RightVosItem.type
- FeaturesItem.pSort = RightVosItem.sort
- FeaturesItem.conclusion = ''
- this.hasOwn(FeaturesItem)
- data.push(FeaturesItem)
- })
- }
- })
- this.features = data
- }
- }
- })
-
- },
- hasOwn(item) {
- if (!item.hasOwnProperty("explainText")) {
- item.explainText = ''
- }
- },
- getData(){
- var mark = this.contextMenu.mark
- this.patentNo = mark.patentNo
- if(this.projectId){
- if(this.projectId != mark.projectId){
- this.projectId = mark.projectId
- this.getFeature()
- }
- }else{
- this.projectId = mark.projectId
- this.getFeature()
- }
-
- this.form = {
- literatureId:mark.literatureId,
- fieldName:mark.scratchField,
- position:mark.position,
- markType:mark.scratchType,
- markColor:mark.color,
- evidenceText:mark.text,
- id:mark.id
- }
- },
- submit(){
- this.$refs.splitPage.getCheckList()
- },
- //获取子组件选中的特征
- getCheckList(data){
- this.form.assoFeatureList = data.map(item=>{
- return {
- featureId:item.featureId,
- conclusion:item.conclusion
- }
- })
- this.btnLoading = true
- this.$api.addCompareRecord(this.form).then(response=>{
- if(response.code == 200){
- this.changeHighlight(response.data.data)
- this.btnLoading = false
- this.close()
- }
- }).catch(error=>{
- this.btnLoading = false
- })
- },
- changeHighlight(id,type){
- var contrastList = this.highlight.contrastList
- var message = ''
- if(this.form.id){
- var index = contrastList.findIndex(item=>{
- return item.id == this.form.id
- })
- if(type){
- message = '删除成功'
- contrastList.splice(index,1)
- }else{
- message = '更新成功'
- contrastList.splice(index,1,this.form)
- }
- }else{
- message = '新增成功'
- this.form.id = id
- contrastList.push(this.form)
- }
- this.$message.success(message)
- this.$store.commit("SET_CONTEXT_MENU",contrastList)
- },
- //文件上传
- change(file,fileList){
- 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){
- this.$set(this.form,'fileGuid',response.data[0])
- }
- })
- },
- handleRemove() {
- this.$set(this.form,'fileGuid','')
- },
- handlePictureCardPreview() {
- this.$refs.image.showViewer = true
- },
- delContrast(){
- var ids = [this.form.id]
- this.$confirm('确认删除该数据吗?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- this.$api.removeCompareRecord(ids).then(response => {
- this.changeHighlight(this.form.id,'删除')
- this.close()
- }).catch(error => {
- })
- })
- }
- },
- };
- </script>
- <style lang="scss" scoped>
- .avatar-uploader-icon {
- background-color: #fbfdff;
- border: 1px dashed #c0ccda;
- font-size: 28px;
- color: #8c939d;
- width: 148px;
- height: 148px;
- line-height: 148px;
- text-align: center;
- }
- .avatar {
- position: relative;
- width: 148px;
- height: 148px;
- display: block;
- }
- .avatar:hover .deleteImg {
- display: block;
- }
- .deleteImg {
- display: none;
- font-size: 30px;
- width: 148px;
- height: 148px;
- background-color: black;
- opacity: 0.6;
- position: absolute;
- top: 0;
- right: 0;
- left: 0;
- bottom: 0;
- margin: auto;
- z-index: 999;
- }
- .avatar .img {
- width: 148px;
- height: 148px;
- }
- .deleteImg span i {
- margin-left: 10px;
- color: #fff;
- }
- .deleteImg span {
- display: flex;
- align-items: center;
- /*垂直居中*/
- justify-content: center;
- /*水平居中*/
- width: 100%;
- height: 100%;
- }
- </style>
|