(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-8707bab4"],{"02c4":function(t,e,i){"use strict";i("1203")},1203:function(t,e,i){},"1c46":function(t,e,i){"use strict";i("34dd")},"34dd":function(t,e,i){},"472a":function(t,e,i){"use strict";i.d(e,"d",(function(){return h})),i.d(e,"e",(function(){return p})),i.d(e,"b",(function(){return v})),i.d(e,"c",(function(){return b})),i.d(e,"a",(function(){return y}));i("cf9b"),i("fd72");var n=i("ff5b");const o=new Map;function a(t,e){const i=String(t||"").trim(),n=String(e||"");return`${i}::${n}`}function s(t,e){const i=Object(n["d"])();if(!i)return"";const s=a(t,e),r=o.get(s);if(r&&r.version===i&&r.url)return r.url;const l=Object(n["c"])();if(!l)return"";const c=e?{process:e}:void 0,u=Object(n["f"])(t,c);return u?(o.set(s,{version:i,url:u}),u):""}function r(t){const e=Number(t);if(!Number.isFinite(e))return 0;const i=(Math.round(e)%360+360)%360;return 90===i||180===i||270===i?i:0}function l(t){const e=r(t);return e||0}function c(t){const e=l(t);return e?"rotate,"+e:""}function u(){return"resize,m_lfit,w_4096,h_4096"}function d(t,e){const i=String(t||"").trim().replace(/\/+$/,""),n=String(e||"").trim().replace(/^\/+/,"");return i?n?`${i}/${n}`:i:""}function m(t={}){const e="image/resize,m_fill,w_70,h_70,g_center",i=r(null===t||void 0===t?void 0:t.angle);return!i||null!==t&&void 0!==t&&t.disableRotate?e:d(e,c(i))}function f(t={}){const e=r(null===t||void 0===t?void 0:t.angle);return!e||null!==t&&void 0!==t&&t.disableRotate?"":d("image/"+u(),c(e))}function h(t,e={}){const i=f(e);return s(t,i)}function p(t,e={}){return s(t,m(e))}function g(t){return s(t,"")}async function v(t,e={}){return await Object(n["b"])(),h(t,e)}async function b(t,e={}){return await Object(n["b"])(),p(t,e)}async function y(t){return await Object(n["b"])(),g(t)}},"78a6":function(t,e,i){"use strict";var n=function(){var t=this,e=t._self._c;return e("el-dialog",{staticClass:"image-compare-modal",attrs:{visible:t.internalVisible,width:"88%",top:"6vh","append-to-body":!1,"modal-append-to-body":!1,modal:!0,"lock-scroll":!0,"close-on-click-modal":!0,"close-on-press-escape":!1},on:{"update:visible":function(e){t.internalVisible=e},close:t.handleDialogClose},scopedSlots:t._u([{key:"title",fn:function(){return[e("div",{staticClass:"image-compare-modal__title"},[e("span",[t._v("重复图片审核")]),e("el-tag",{attrs:{size:"mini",type:"info"}},[t._v(t._s(t.comparisonImages.length)+" 张对比图")])],1)]},proxy:!0}])},[e("div",{staticClass:"image-compare-modal__body"},[e("div",{staticClass:"image-compare-modal__canvas"},[e("h4",[t._v("原图")]),t.originalImage?e("image-sync-canvas",{attrs:{image:t.originalImage,"lock-sync":t.lockSync,"linked-transforms":t.comparisonTransforms,"toolbar-position":"bottom"},on:{"transform-change":e=>t.originalTransforms=e},scopedSlots:t._u([{key:"toolbar",fn:function(){return[e("span",{staticClass:"image-sync-canvas__file-id",attrs:{title:t.formatFileId(t.originalImage)}},[t._v(" ID:"+t._s(t.formatFileId(t.originalImage))+" ")])]},proxy:!0}],null,!1,3273996567)}):e("el-empty",{attrs:{description:"暂无原图数据"}})],1),e("div",{staticClass:"image-compare-modal__controls"},[e("div",{staticClass:"image-compare-modal__control-left"},[e("el-button",{attrs:{type:t.lockSync?"primary":"default",icon:"el-icon-link"},on:{click:t.toggleLock}},[t._v(" "+t._s(t.lockSync?"联动中":"已解锁")+" ")])],1),t.feedback.message?e("div",{staticClass:"image-compare-modal__feedback-inline",class:"is-"+t.feedback.type},[t._v(" "+t._s(t.feedback.message)+" ")]):t._e(),e("div",{staticClass:"image-compare-modal__control-right"},[e("el-switch",{attrs:{"active-text":"标记为相同","inactive-text":"未标记","active-color":"#67C23A","inactive-color":"#909399",disabled:!t.hasComparisons||t.submitting||!t.activeComparison},on:{change:t.handleDecisionToggle},model:{value:t.decisionToggle,callback:function(e){t.decisionToggle=e},expression:"decisionToggle"}}),e("div",{staticClass:"image-compare-modal__nav-buttons"},[e("el-button",{attrs:{size:"mini",icon:"el-icon-arrow-left",disabled:!t.hasComparisons||t.comparisonImages.length<=1},on:{click:t.goPrevComparison}},[t._v(" 上一张 ")]),e("el-button",{attrs:{size:"mini",icon:"el-icon-arrow-right",disabled:!t.hasComparisons||t.comparisonImages.length<=1},on:{click:t.goNextComparison}},[t._v(" 下一张 ")])],1)],1)]),e("div",{staticClass:"image-compare-modal__canvas"},[e("h4",[t._v("对比图")]),t.activeComparison?e("image-sync-canvas",{attrs:{image:t.activeComparison,"lock-sync":t.lockSync,"linked-transforms":t.lockSync?t.originalTransforms:null,"toolbar-position":"top"},on:{"transform-change":e=>t.comparisonTransforms=e},scopedSlots:t._u([{key:"toolbar",fn:function(){return[e("span",{staticClass:"image-sync-canvas__file-id",attrs:{title:t.formatFileId(t.activeComparison)}},[t._v(" ID:"+t._s(t.formatFileId(t.activeComparison))+" ")])]},proxy:!0}],null,!1,3704635287)}):e("el-empty",{attrs:{description:"暂无可对比图片"}})],1),t.hasComparisons?e("carousel-strip",{attrs:{images:t.comparisonImages,"active-index":t.activeIndex},on:{select:t.setActiveIndex,prev:function(e){return t.stepIndex(-1)},next:function(e){return t.stepIndex(1)}}}):e("el-alert",{attrs:{type:"info",closable:!1,title:"无可用对比图,操作按钮已禁用"}})],1)])},o=[],a=function(){var t=this,e=t._self._c;return e("div",{staticClass:"image-sync-canvas",class:{disabled:t.disabled}},[e("div",{staticClass:"image-sync-canvas__viewport",on:{mousedown:function(e){return e.preventDefault(),t.startDrag.apply(null,arguments)},mousemove:function(e){return e.preventDefault(),t.drag.apply(null,arguments)},mouseup:t.endDrag,mouseleave:t.endDrag,wheel:function(e){return e.preventDefault(),t.handleWheel.apply(null,arguments)}}},[t.image&&!t.imageError?e("img",{style:t.transformStyle,attrs:{src:t.image.file_path,alt:t.image.alt||t.image.file_id},on:{load:t.handleLoad,error:t.handleError}}):e("div",{staticClass:"image-sync-canvas__error"},[e("p",[t._v("图片加载失败")]),e("el-button",{attrs:{type:"text"},on:{click:t.retryLoad}},[t._v("重试加载")])],1),t._t("default"),e("div",{staticClass:"image-sync-canvas__toolbar",class:["toolbar-"+t.toolbarPosition]},[e("el-button-group",{attrs:{size:"mini"}},[e("el-button",{attrs:{icon:"el-icon-zoom-in",disabled:t.disabled},on:{click:function(e){return e.stopPropagation(),t.handleZoomIn.apply(null,arguments)}}}),e("el-button",{attrs:{icon:"el-icon-zoom-out",disabled:t.disabled},on:{click:function(e){return e.stopPropagation(),t.handleZoomOut.apply(null,arguments)}}}),e("el-button",{attrs:{icon:"el-icon-refresh-left",disabled:t.disabled},on:{click:function(e){return e.stopPropagation(),t.handleRotateLeft.apply(null,arguments)}}}),e("el-button",{attrs:{icon:"el-icon-refresh-right",disabled:t.disabled},on:{click:function(e){return e.stopPropagation(),t.handleRotateRight.apply(null,arguments)}}}),e("el-button",{attrs:{icon:"el-icon-refresh",disabled:t.disabled},on:{click:function(e){return e.stopPropagation(),t.handleReset.apply(null,arguments)}}})],1),t._t("toolbar")],2)],2)])},s=[],r=i("5923");const l=()=>({zoom:1,rotation:0,translateX:0,translateY:0,dragging:!1,dragStart:{x:0,y:0}});function c(t={}){return r["default"].observable({...l(),...t})}function u(t,e){t&&e&&(e.zoom=t.zoom,e.rotation=t.rotation,e.translateX=t.translateX,e.translateY=t.translateY)}function d(t={}){const e=c(t.initialState),i=t.minZoom||.2,n=t.maxZoom||5,o=t=>Math.min(n,Math.max(i,t));function a(t){e.zoom=o(t)}function s(t=.1){a(e.zoom+t)}function r(t=.1){a(e.zoom-t)}function u(t=90){e.rotation=(e.rotation+t+360)%360}function d(){Object.assign(e,l())}function m(t){e.dragging=!0,e.dragStart={x:t.clientX,y:t.clientY}}function f(t){if(!e.dragging)return;const i=t.clientX-e.dragStart.x,n=t.clientY-e.dragStart.y;e.translateX+=i,e.translateY+=n,e.dragStart={x:t.clientX,y:t.clientY}}function h(){e.dragging=!1}function p(t,i=.001){const n=e.zoom+t.deltaY*i*-1;a(n)}function g(){return{transform:`translate(${e.translateX}px, ${e.translateY}px) scale(${e.zoom}) rotate(${e.rotation}deg)`}}return{state:e,setZoom:a,zoomIn:s,zoomOut:r,rotate:u,reset:d,startDrag:m,drag:f,endDrag:h,applyWheel:p,toTransformStyle:g}}var m=i("472a"),f=i("ff5b"),h=i("dd32"),p={name:"ImageSyncCanvas",props:{image:{type:Object,required:!0},disabled:{type:Boolean,default:!1},linkedTransforms:{type:Object,default:null},lockSync:{type:Boolean,default:!1},toolbarPosition:{type:String,default:"top",validator:t=>["top","bottom"].includes(t)}},data(){const t=d();return{transformApi:t,transforms:t.state,imageError:!1,lastEmit:null,linkTipShown:!1}},computed:{transformStyle(){return this.transformApi.toTransformStyle()}},watch:{lockSync(t){t&&this.linkedTransforms?(u(this.linkedTransforms,this.transforms),this.emitTransform(),this.linkTipShown||(this.$message.success("已同步视角"),this.linkTipShown=!0)):t||(this.linkTipShown=!1)},linkedTransforms:{deep:!0,handler(t){this.lockSync&&t&&u(t,this.transforms)}}},methods:{emitTransform(){const t={zoom:this.transforms.zoom,rotation:this.transforms.rotation,translateX:this.transforms.translateX,translateY:this.transforms.translateY};this.$emit("transform-change",t),this.lastEmit=t},handleZoomIn(){this.transformApi.zoomIn(),this.emitTransform()},handleZoomOut(){this.transformApi.zoomOut(),this.emitTransform()},handleRotateLeft(){this.transformApi.rotate(-90),this.emitTransform()},handleRotateRight(){this.transformApi.rotate(90),this.emitTransform()},handleReset(){this.transformApi.reset(),this.emitTransform()},startDrag(t){this.disabled||this.transformApi.startDrag(t)},drag(t){this.disabled||(this.transformApi.drag(t),this.emitTransform())},endDrag(){this.transformApi.endDrag()},handleWheel(t){this.disabled||(this.transformApi.applyWheel(t),this.emitTransform())},handleLoad(){this.imageError=!1,this.$emit("load",this.image)},async handleError(){var t;const e=null===(t=this.image)||void 0===t?void 0:t.oss_path;if(!e)return this.imageError=!0,void this.$emit("error",this.image);if(!Object(h["b"])(e))return this.imageError=!0,void this.$emit("error",this.image);if(e)try{var i,n,o,a,s;const t=Number(null===(i=this.image)||void 0===i?void 0:i.image_angle)||0;if(t&&(null===(n=this.image)||void 0===n||!n.__ossRotateDisabled)&&(null===(o=this.image)||void 0===o||!o.__ossRotateFallbackAttempted)){this.$set(this.image,"__ossRotateFallbackAttempted",!0),this.$set(this.image,"__ossRotateDisabled",!0);const t=await Object(m["b"])(e,{angle:0,disableRotate:!0});if(t)return this.$set(this.image,"file_path",t),this.imageError=!1,void this.$forceUpdate()}if(null!==(a=this.image)&&void 0!==a&&a.__ossTokenRetryAttempted)return this.imageError=!0,void this.$emit("error",this.image);this.$set(this.image,"__ossTokenRetryAttempted",!0),await Object(f["e"])();const r=Boolean(null===(s=this.image)||void 0===s?void 0:s.__ossRotateDisabled),l=await Object(m["b"])(e,{angle:r?0:t,disableRotate:r});if(l)return this.$set(this.image,"file_path",l),this.imageError=!1,void this.$forceUpdate()}catch(r){}this.imageError=!0,this.$emit("error",this.image)},retryLoad(){var t,e;this.imageError=!1,null!==(t=this.image)&&void 0!==t&&t.__ossRotateFallbackAttempted&&this.$set(this.image,"__ossRotateFallbackAttempted",!1),null!==(e=this.image)&&void 0!==e&&e.__ossTokenRetryAttempted&&this.$set(this.image,"__ossTokenRetryAttempted",!1),this.$forceUpdate()}}},g=p,v=(i("02c4"),i("1805")),b=Object(v["a"])(g,a,s,!1,null,"159baca3",null),y=b.exports,_=function(){var t=this,e=t._self._c;return e("div",{staticClass:"carousel-strip"},[e("el-button",{attrs:{type:"text",icon:"el-icon-arrow-left"},on:{click:function(e){return t.$emit("prev")}}}),e("div",{staticClass:"carousel-strip__list"},t._l(t.images,(function(i,n){return e("div",{key:i.file_id||n,staticClass:"carousel-strip__item",class:{active:n===t.activeIndex,["status-"+(i.status||"pending")]:!0},on:{click:function(e){return t.$emit("select",n)},mouseenter:function(e){return t.$emit("hover",n)}}},[e("img",{attrs:{src:i.thumbnail_path||i.file_path,alt:i.file_id}})])})),0),e("el-button",{attrs:{type:"text",icon:"el-icon-arrow-right"},on:{click:function(e){return t.$emit("next")}}})],1)},k=[],w={name:"CarouselStrip",props:{images:{type:Array,default:()=>[]},activeIndex:{type:Number,default:0}}},I=w,S=(i("1c46"),Object(v["a"])(I,_,k,!1,null,"48989f34",null)),x=S.exports;i("8f26"),i("666b"),i("963e"),i("cf9b"),i("fd72");const C=new Map;function T(t){if(!t)return Promise.resolve();if(C.has(t))return C.get(t);const e=new Promise((e,i)=>{const n=new Image;n.onload=()=>e(t),n.onerror=i,n.src=t});return C.set(t,e),e}function A(t,e){if(!Array.isArray(t)||0===t.length)return;const i=[e,e-1,e+1].filter(e=>e>=0&&e{var i;return null===(i=t[e])||void 0===i?void 0:i.file_path});i.forEach(t=>T(t))}var $={name:"ImageCompareModal",components:{ImageSyncCanvas:y,CarouselStrip:x},props:{visible:{type:Boolean,default:!1},originalImage:{type:Object,default:null},comparisonImages:{type:Array,default:()=>[]},onDecision:{type:Function,default:null}},data(){return{internalVisible:this.visible,activeIndex:0,lockSync:!0,originalTransforms:null,comparisonTransforms:null,submitting:!1,feedback:{type:"success",message:""},decisionToggle:!1}},computed:{hasComparisons(){return this.comparisonImages.length>0},activeComparison(){return this.comparisonImages[this.activeIndex]||null}},watch:{visible(t){this.internalVisible=t},internalVisible(t){t?window.addEventListener("keydown",this.handleKeydown,!0):(window.removeEventListener("keydown",this.handleKeydown,!0),this.$emit("update:visible",!1))},comparisonImages:{immediate:!0,handler(t){t&&0!==t.length?this.activeIndex>=t.length&&(this.activeIndex=0):this.activeIndex=0,A(t||[],this.activeIndex)}},activeComparison:{immediate:!0,handler(t){this.decisionToggle=Boolean(null===t||void 0===t?void 0:t.isMarkedSimilar)}}},methods:{handleDecisionToggle(t){var e;this.activeComparison&&!this.submitting?this.markDecision(t).catch(()=>{this.$nextTick(()=>{var t;this.decisionToggle=Boolean(null===(t=this.activeComparison)||void 0===t?void 0:t.isMarkedSimilar)})}):this.decisionToggle=Boolean(null===(e=this.activeComparison)||void 0===e?void 0:e.isMarkedSimilar)},handleDialogClose(){this.internalVisible&&(this.internalVisible=!1),this.$emit("close"),this.$emit("update:visible",!1),window.removeEventListener("keydown",this.handleKeydown)},toggleLock(){this.lockSync=!this.lockSync,this.$message.success(this.lockSync?"已开启联动":"已关闭联动")},async markDecision(t){var e;if(!this.activeComparison||this.submitting)return;const i=null===(e=this.originalImage)||void 0===e?void 0:e.file_id,n=this.activeComparison.file_id;if(!i||!n)return;this.submitting=!0,this.feedback.message="";const o={originalId:i,comparisonId:n,isSame:t};this.$emit("decision",o);try{this.onDecision&&await Promise.resolve(this.onDecision(i,n,t)),this.feedback={type:"success",message:"标记成功,可继续操作"}}catch(a){this.feedback={type:"error",message:(null===a||void 0===a?void 0:a.message)||"标记失败,请重试"},this.$message.error("标记失败,可重试")}finally{this.submitting=!1}},setActiveIndex(t){if(!this.hasComparisons)return;const e=Math.min(Math.max(t,0),this.comparisonImages.length-1);this.activeIndex=e,this.$emit("index-change",e),this.feedback.message="",A(this.comparisonImages,e)},stepIndex(t){if(!this.hasComparisons)return;let e=this.activeIndex+t;e<0&&(e=this.comparisonImages.length-1),e>=this.comparisonImages.length&&(e=0),this.setActiveIndex(e)},goPrevComparison(){this.stepIndex(-1)},goNextComparison(){this.stepIndex(1)},formatFileId(t){return t&&(t.file_id||t.id)||"--"},handleKeydown(t){this.internalVisible&&("ArrowLeft"===t.key?this.stepIndex(-1):"ArrowRight"===t.key?this.stepIndex(1):"Escape"!==t.key&&"Esc"!==t.key||(t.stopPropagation(),t.preventDefault(),this.handleDialogClose()))}},beforeDestroy(){window.removeEventListener("keydown",this.handleKeydown,!0)}},D=$,O=(i("908a"),Object(v["a"])(D,n,o,!1,null,"8ce8d8e0",null));e["a"]=O.exports},"908a":function(t,e,i){"use strict";i("f44d")},dd32:function(t,e,i){"use strict";function n(t){if(!t||"object"!==typeof t)return"";const e=t=>{if("string"!==typeof t)return"";const e=t.trim();return e||""},i=e(t.oss_path)||e(t.ossPath);if(i)return i;const n=t.materialDetail,o=Array.isArray(n)?n[0]:n,a=e(null===o||void 0===o?void 0:o.oss_path)||e(null===o||void 0===o?void 0:o.ossPath);if(a)return a;const s=t.material_detail,r=Array.isArray(s)?s[0]:s,l=e(null===r||void 0===r?void 0:r.oss_path)||e(null===r||void 0===r?void 0:r.ossPath);return l||""}function o(t){var e,i,n;if(!t||"object"!==typeof t)return 0;const o=t=>{if(void 0===t||null===t)return null;const e=Number(t);return Number.isFinite(e)?e:null},a=null!==(e=o(t.image_angle))&&void 0!==e?e:o(t.imageAngle);if(null!==a){const t=(Math.round(a)%360+360)%360;return 90===t||180===t||270===t?t:0}const s=t.materialDetail,r=Array.isArray(s)?s[0]:s,l=null!==(i=o(null===r||void 0===r?void 0:r.image_angle))&&void 0!==i?i:o(null===r||void 0===r?void 0:r.imageAngle);if(null!==l){const t=(Math.round(l)%360+360)%360;return 90===t||180===t||270===t?t:0}const c=t.material_detail,u=Array.isArray(c)?c[0]:c,d=null!==(n=o(null===u||void 0===u?void 0:u.image_angle))&&void 0!==n?n:o(null===u||void 0===u?void 0:u.imageAngle);if(null!==d){const t=(Math.round(d)%360+360)%360;return 90===t||180===t||270===t?t:0}return 0}function a(t){if("string"!==typeof t)return"";const e=t.trim();return e?e.split("#")[0].split("?")[0]:""}function s(t){const e=a(t);if(!e)return"";const i=e.split("/").pop()||"",n=i.lastIndexOf(".");return n<=0||n===i.length-1?"":i.slice(n+1).toLowerCase()}function r(t){const e=s(t);return!!e&&("jpg"===e||"jpeg"===e||"jpe"===e||"jfif"===e||"png"===e||"avif"===e||"webp"===e||"bmp"===e||"gif"===e||"ico"===e||"tif"===e||"tiff"===e||"heic"===e||"heif"===e)}function l(t){const e=s(t);return"📄"+(e||"FILE").toUpperCase()}i.d(e,"d",(function(){return n})),i.d(e,"c",(function(){return o})),i.d(e,"b",(function(){return r})),i.d(e,"a",(function(){return l}))},f44d:function(t,e,i){},ff5b:function(t,e,i){"use strict";i.d(e,"a",(function(){return g})),i.d(e,"d",(function(){return I})),i.d(e,"c",(function(){return S})),i.d(e,"b",(function(){return x})),i.d(e,"e",(function(){return C})),i.d(e,"f",(function(){return T}));i("0f5d");var n,o=i("5923"),a=i("eb06"),s=i.n(a);const r=(null===(n=o["default"].prototype)||void 0===n?void 0:n.instance)||s.a.create();function l(t,e={}){return r.post("/api/oss/sts-token",t,e)}let c=null,u=null,d=0,m=null,f=null,h=null,p="";function g({apiClient:t,apiBaseUrl:e}={}){h=t||null,p="string"===typeof e?e.trim().replace(/\/+$/,""):""}function v(t){if(!t)return null;const e=new Date(t);return Number.isNaN(e.getTime())?null:e}function b(t,e=60){if(!t)return!1;const i=v(t.expiration);if(!i)return!1;const n=Date.now(),o=1e3*Math.max(0,Number(e)||0);return n{const e=await _(t);return c=e,u=await w(e),d+=1,e})().finally(()=>{m=null})),await m),{client:u,credential:c,version:d}}async function C(t={}){return c=null,u=null,m=null,x({...t,refreshBufferSeconds:0})}function T(t,e={}){const i=u;if(!i)return"";const n=y(t);return n?i.signatureUrl(n,e):""}}}]); //# sourceMappingURL=chunk-8707bab4.b243bdd7b497c98a9737.js.map