{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\eipControl\\EipSignature.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\eipControl\\EipSignature.vue","mtime":1667327529247},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport { mapState } from \"vuex\";\r\nimport req from \"@/request.js\";\r\nimport utils from \"@/utils.js\";\r\nimport { Base64 } from \"js-base64\";\r\nimport sub_pio_mixin from \"@/sub-permission-mixin.js\";\r\nexport default {\r\n  name: \"eip-signature\",\r\n  props:[\"maxPeople\",\"permission\",\"value\",\"fieldPath\"],\r\n  data() {\r\n    return {\r\n       dialogVisible: false,\r\n       inputVal:\"\",\r\n       password:\"\",\r\n       signatureList:[],\r\n       showSignatureBtn: true,\r\n       showSignatureMap: {},\r\n    };\r\n  },\r\n  mixins: [sub_pio_mixin],//混入方式引入表单组件中公共属性，处理子表、孙表行内联动（切面修改permission_sub）\r\n  computed: mapState({\r\n    userId: state => {\r\n      if (state.login && state.login.currentUser) {\r\n        return state.login.currentUser.userId;\r\n      }\r\n      return '';\r\n    },\r\n    userName: state => {\r\n      if (state.login && state.login.currentUser) {\r\n        return state.login.currentUser.username;\r\n      }\r\n      return '';\r\n    },\r\n    signatureConfig: state =>state.storeProcess.signatureConfig,\r\n    signatureStatus: state =>state.storeProcess.signatureConfig.status,\r\n  }),\r\n  watch: {\r\n    inputVal: function(newVal, oldVal) {\r\n      this.$emit(\"input\", newVal);\r\n    },\r\n    signatureList: {\r\n      handler: function (newVal, oldValue) {\r\n        if(!newVal || newVal.length==0){\r\n          this.showSignatureBtn = true;\r\n          this.$emit(\"input\", '');\r\n        }else if (newVal && newVal.length >= 1) {\r\n          let _this = this;\r\n          let signatures = JSON.parse(JSON.stringify(newVal));\r\n          signatures.forEach(item =>{\r\n            if(item.userId==_this.userId){\r\n              _this.showSignatureBtn = false;\r\n            }\r\n          });\r\n          this.$emit(\"input\", JSON.stringify(signatures));\r\n        }\r\n      },\r\n      deep: true,\r\n      immediate: true,\r\n    },\r\n    signatureConfig: {\r\n      handler: function (newVal, oldVal) {\r\n        if(this.signatureConfig.field == this.fieldPath){\r\n          if(newVal.status === 'start'){\r\n            this.submitSignature('ing');//发出消息，开始签章处理\r\n            if(this.signatureConfig.isCover){\r\n              this.signatureList = [];\r\n            }else{\r\n              let index = this.getCurrentIndex(null);\r\n              if(index>=0){\r\n                this.signatureList.splice(index, 1);\r\n              }\r\n            }\r\n            this.getSignature(this.signatureConfig.password);\r\n          }\r\n        }else if(newVal.status === 'start' && !this.fieldPath){\r\n          this.$message.warning(\"未获取到签章字段路径，请初始化表单模板后重新保存表单！\");\r\n        }\r\n      },\r\n      deep: true,\r\n      immediate: true,\r\n    },\r\n  },\r\n  methods: {\r\n    doSignature() {\r\n      this.password = '';\r\n      this.dialogVisible = true;\r\n    },\r\n    submitSignature(status){\r\n      this.$store.dispatch(\"storeProcess/setSignatureStatus\",status).then(rep => {});\r\n    },\r\n    getSignature(password){\r\n      let _this = this;\r\n      const url = window.context.uc + '/uc/electronicSeal/v1/getElectronicSeal?password='+password+'&secretFree='+this.signatureConfig.secretFree;\r\n      req.get(url).then(resp=>{\r\n        if(resp.data.state){\r\n          _this.dialogVisible = false;\r\n          _this.reloadSignatures(resp.data.value);\r\n          setTimeout(function(){\r\n            _this.submitSignature('success');\r\n          },300);\r\n        }else{\r\n          this.submitSignature('fail');\r\n        }\r\n      })\r\n    },\r\n    getShowSignature(fileId){\r\n      let _this = this;\r\n      if(!this.showSignatureMap ||!this.showSignatureMap[fileId]){\r\n        let imgUrl = '';\r\n        req.get(window.context.portal+'/file/onlinePreviewController/v1/getFileById_'+fileId,'arraybuffer').then(response=>{\r\n          let type = response.headers['content-type'];\r\n          \r\n          if(type){\r\n              imgUrl = window.URL.createObjectURL(new Blob([response.data], { type: type }));\r\n          }else{\r\n              imgUrl = window.URL.createObjectURL(new Blob([response.data]));\r\n          }\r\n          _this.showSignatureMap[fileId] = imgUrl;\r\n          try {\r\n            _this.$refs['signature_'+fileId][0].src = imgUrl;\r\n          } catch (error) {\r\n            return imgUrl;\r\n          }\r\n        });\r\n        return imgUrl;\r\n      }else{\r\n        setTimeout(function(){\r\n            try {\r\n              if(_this.$refs['signature_'+fileId]){\r\n                _this.$refs['signature_'+fileId][0].src = _this.showSignatureMap[fileId];\r\n              }else{\r\n                _this.getShowSignature(fileId);\r\n              }\r\n            } catch (error) {\r\n              return _this.showSignatureMap[fileId];\r\n            }\r\n        },100);\r\n      }\r\n    },\r\n    reloadSignatures(fileId){\r\n      if(fileId){\r\n        this.showSignatureMap[fileId] = null;\r\n      }\r\n      let index = this.getCurrentIndex(fileId);\r\n      if(index<0){\r\n        this.signatureList.push({index:this.signatureList.length+1,userId:this.userId,name:this.userName,signature:fileId,createTime:utils.formatDate(new Date())})\r\n      }\r\n    },\r\n    getCurrentIndex(fileId){\r\n      let _this = this;\r\n      let rindex = -1;\r\n      if(this.signatureList.length>0){\r\n        let index = 0;\r\n        this.signatureList.forEach(f =>{\r\n          if(f.userId==_this.userId){\r\n            if(fileId){\r\n              f.signature = fileId;\r\n              _this.showSignatureBtn = false;\r\n            }\r\n            rindex = index;\r\n            return rindex;\r\n          }\r\n          index++;\r\n        });\r\n      }\r\n      return rindex;\r\n    },\r\n    handleSort(){\r\n      this.signatureList.sort(function (a, b) {\r\n        var x = 'index'//要排序字段\r\n        if (a[x] < b[x]) {\r\n          return -1\r\n        }\r\n        if (a[x] > b[x]) {\r\n          return 1\r\n        }\r\n        return 0;\r\n      });\r\n    },\r\n    getImgFit(item){\r\n      return item.name+' 于 '+item.createTime+' 进行了签章';\r\n    },\r\n    handleRemove(item){\r\n      let index = 0;\r\n      let rIdx = 0;\r\n      this.signatureList.forEach(sn =>{\r\n        if(sn.userId == item.userId){\r\n          rIdx = index;\r\n        }\r\n        index++;\r\n      })\r\n      this.signatureList.splice(rIdx,1);\r\n      this.showSignatureBtn = true;\r\n    },\r\n    onConfirm(){\r\n      if(!this.password){\r\n        this.$message.error(\"请填写获取签章密码！\");\r\n        return ;\r\n      }\r\n      this.getSignature(this.password);\r\n    },\r\n    handleClose(){\r\n      this.dialogVisible = false;\r\n      this.submitSignature('fail');\r\n    },\r\n  },\r\n  mounted() {\r\n    this.$validator = this.$root.$validator;\r\n    if(this.value){\r\n      this.signatureList = JSON.parse(this.value);\r\n      // let list = JSON.parse(this.value);\r\n      // let _this = this;\r\n      // list.forEach(item =>{\r\n      //   _this.showCurSignature(item.userId, item.name, item.signature);\r\n      // })\r\n    }\r\n  },\r\n};\r\n",null]}