sand-components-vben 2.7.135 → 2.7.136

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sand-components-vben",
3
- "version": "2.7.135",
3
+ "version": "2.7.136",
4
4
  "description": "",
5
5
  "main": "sand-components-vben.js",
6
6
  "scripts": {
@@ -102860,11 +102860,14 @@ const Zdt = { class: "hint-content" }, Xdt = { class: "dialog-body" }, $dt = { c
102860
102860
  }), Vpt = /* @__PURE__ */ Ut(qpt, [["__scopeId", "data-v-594eb9ba"]]), Hpt = /* @__PURE__ */ Ge({
102861
102861
  __name: "BaseImport",
102862
102862
  props: {
102863
+ otherParams: {},
102863
102864
  type: {},
102864
102865
  templateApi: { type: Function },
102865
102866
  importApi: { type: Function },
102866
102867
  downloadErrorApi: { type: Function },
102867
- title: {}
102868
+ title: {},
102869
+ projectId: {},
102870
+ buildingId: {}
102868
102871
  },
102869
102872
  emits: ["success", "cancel"],
102870
102873
  setup(e, { expose: t, emit: n }) {
@@ -102905,11 +102908,14 @@ const Zdt = { class: "hint-content" }, Xdt = { class: "dialog-body" }, $dt = { c
102905
102908
  }), E = async (D) => {
102906
102909
  var w;
102907
102910
  try {
102908
- f.value = !0, c.value = S(), await i.importApi({
102909
- uuid: c.value,
102911
+ f.value = !0, c.value = S();
102912
+ const F = {
102910
102913
  filePath: D,
102911
- type: i.type
102912
- }) ? (d.value = !1, (w = s.value) == null || w.open(i.type, c.value)) : g.value = !1;
102914
+ uuid: c.value,
102915
+ type: i.type,
102916
+ ...i.otherParams
102917
+ };
102918
+ await i.importApi(F) ? (d.value = !1, (w = s.value) == null || w.open(i.type, c.value)) : g.value = !1;
102913
102919
  } catch (F) {
102914
102920
  console.error("导入流程启动失败:", F), g.value = !1;
102915
102921
  } finally {
@@ -103031,7 +103037,7 @@ const Zdt = { class: "hint-content" }, Xdt = { class: "dialog-body" }, $dt = { c
103031
103037
  ], 64);
103032
103038
  };
103033
103039
  }
103034
- }), Ype = /* @__PURE__ */ Ut(Hpt, [["__scopeId", "data-v-3c1a26af"]]), Jpt = { class: "import-example" }, jpt = { class: "example-content" }, zpt = /* @__PURE__ */ Ge({
103040
+ }), Ype = /* @__PURE__ */ Ut(Hpt, [["__scopeId", "data-v-6b6b4c1b"]]), Jpt = { class: "import-example" }, jpt = { class: "example-content" }, zpt = /* @__PURE__ */ Ge({
103035
103041
  __name: "BaseImportExample",
103036
103042
  setup(e) {
103037
103043
  const t = Oe(), n = async () => "https://example.com/template.xlsx", r = async (s) => (console.log("启动导入处理:", s), { data: (await (await fetch("/api/import/start", {
@@ -411,4 +411,4 @@ https://github.com/highlightjs/highlight.js/issues/2277`),Oe=ce,Ot=Be),We===void
411
411
  width: ${j.width}px;
412
412
  height: ${j.height}px;
413
413
  display: block;
414
- `},y=()=>{b.overlay&&(b.overlay.style.display="none")},T=V=>{if(!b.isActive)return;const j=V.target;if(j.closest("#element-picker-overlay")||j.closest(".chat-bot-box")||j.closest(".ant-tooltip")||j.closest(".element-picker-hint")||j===document.body||j===document.documentElement||j.tagName==="SCRIPT"||j.tagName==="STYLE"||j.tagName==="LINK"||j.tagName==="META"){y();return}const N=j.getBoundingClientRect();if(N.width<3||N.height<3){y();return}if(N.bottom<0||N.top>window.innerHeight||N.right<0||N.left>window.innerWidth){y();return}b.currentElement=j,C(j)},R=async V=>{if(!b.isActive)return;V.preventDefault(),V.stopPropagation();const j=V.target;if(j.closest("#element-picker-overlay")||j.closest(".chat-bot-box")||j.closest(".ant-tooltip")||j.closest(".element-picker-hint")||j===document.body||j===document.documentElement||j.tagName==="SCRIPT"||j.tagName==="STYLE"||j.tagName==="LINK"||j.tagName==="META")return;const N=j.getBoundingClientRect();if(N.width<3||N.height<3)return;b.selectedElement=j;const w=O(j);M(),b.isLoading=!0,console.log("选中的元素:",j),console.log("元素信息:",w);const{minimalHtml:_,formHtml:P,structure:H,formData:J,selectorInfo:ee}=lut(j);c(),await s({url:sR(),data:{analyse:{html:P},modelTag:"analyse",systemFlag:lR(window.location.href)},onComplete:()=>{console.log("润色请求完成")}})},O=V=>{var w;const j=V.getBoundingClientRect(),N=window.getComputedStyle(V);return{tagName:V.tagName.toLowerCase(),className:V.className,id:V.id,textContent:((w=V.textContent)==null?void 0:w.trim().substring(0,100))||"",attributes:Array.from(V.attributes).reduce((_,P)=>(_[P.name]=P.value,_),{}),dimensions:{width:j.width,height:j.height,left:j.left,top:j.top},styles:{backgroundColor:N.backgroundColor,color:N.color,fontSize:N.fontSize,fontFamily:N.fontFamily,display:N.display,position:N.position},xpath:I(V),cssSelector:x(V)}},I=V=>{if(V.id)return`//*[@id="${V.id}"]`;const j=[];for(;V&&V.nodeType===Node.ELEMENT_NODE;){let N=0,w=!1,_=V.previousSibling;for(;_;)_.nodeType===Node.ELEMENT_NODE&&_.nodeName===V.nodeName&&N++,_=_.previousSibling;for(_=V.nextSibling;_;){if(_.nodeType===Node.ELEMENT_NODE&&_.nodeName===V.nodeName){w=!0;break}_=_.nextSibling}const P=N||w?`[${N+1}]`:"";j.unshift(V.nodeName.toLowerCase()+P),V=V.parentNode}return j.length?"/"+j.join("/"):""},x=V=>{if(V.id)return`#${V.id}`;const j=[];for(;V&&V.nodeType===Node.ELEMENT_NODE;){let N=V.nodeName.toLowerCase();V.className&&(N+="."+V.className.split(" ").join(".")),j.unshift(N),V=V.parentNode}return j.join(" > ")},D=V=>{V.key==="Escape"&&b.isActive&&M()},k=()=>{!b.isActive||!b.currentElement||C(b.currentElement)},L=V=>{b.isActive=!0,b.currentElement=null,b.selectedElement=null,v(),document.addEventListener("mousemove",T,!0),document.addEventListener("click",R,!0),document.addEventListener("keydown",D,!0),document.addEventListener("scroll",k,!0),document.body.style.cursor="crosshair"},M=()=>{b.isActive=!1,b.currentElement=null,b.isLoading=!1,document.removeEventListener("mousemove",T,!0),document.removeEventListener("click",R,!0),document.removeEventListener("keydown",D,!0),document.removeEventListener("scroll",k,!0),document.body.style.cursor="",y()};return{pickerState:b,startPicker:L,stopPicker:M,cleanup:()=>{M(),b.overlay&&(document.body.removeChild(b.overlay),b.overlay=null)},showDialog:()=>{},hideDialog:()=>{b.showDialog=!1,b.isLoading=!1}}}const{pickerState:p,startPicker:f,stopPicker:g,cleanup:m,showDialog:E,hideDialog:h}=d(),A=()=>{g()},S=()=>{h()};return t({pickerState:p,startPicker:f,stopPicker:g,cleanup:m,showDialog:E,hideDialog:h}),u.watch(o,b=>{p.content=b,b&&p.isLoading&&(p.isLoading=!1,p.showDialog=!0)}),(b,v)=>u.unref(p).isActive||u.unref(p).showDialog||u.unref(p).isLoading?(u.openBlock(),u.createElementBlock("div",{key:0,class:u.normalizeClass(["element-picker-hint",{"dialog-mode":u.unref(p).showDialog,"loading-mode":u.unref(p).isLoading}])},[u.createElementVNode("div",dut,[u.unref(p).isActive&&!u.unref(p).showDialog&&!u.unref(p).isLoading?(u.openBlock(),u.createElementBlock(u.Fragment,{key:0},[v[0]||(v[0]=u.createElementVNode("div",{class:"hint-icon"},"🎯",-1)),v[1]||(v[1]=u.createElementVNode("div",{class:"hint-text"},[u.createElementVNode("div",{class:"hint-title"},"元素选择模式已启动"),u.createElementVNode("div",{class:"hint-description"}," 移动鼠标选择页面元素,点击确认选择,按ESC键退出 ")],-1)),u.createElementVNode("div",{class:"hint-close",onClick:A},"✕")],64)):u.createCommentVNode("",!0),u.unref(p).isLoading?(u.openBlock(),u.createElementBlock(u.Fragment,{key:1},[v[2]||(v[2]=u.createStaticVNode('<div class="loading-icon" data-v-f5be1ddd><div class="spinner" data-v-f5be1ddd></div></div><div class="loading-text" data-v-f5be1ddd><div class="loading-title" data-v-f5be1ddd>正在分析元素</div><div class="loading-description" data-v-f5be1ddd> 上传图片并进行AI分析中,请稍候... </div></div>',2))],64)):u.createCommentVNode("",!0),u.unref(p).showDialog?(u.openBlock(),u.createElementBlock(u.Fragment,{key:2},[u.createElementVNode("div",{class:"dialog-header"},[u.createElementVNode("div",{class:"dialog-close",onClick:S},"✕")]),u.createElementVNode("div",put,[u.createElementVNode("div",fut,[u.createElementVNode("p",{innerHTML:u.unref(r)(u.unref(p).content||"")},null,8,gut)])])],64)):u.createCommentVNode("",!0)])],2)):u.createCommentVNode("",!0)}},[["__scopeId","data-v-f5be1ddd"]]),hut={class:"chat-bot-box"},Eut={class:"chat-bot-sidebar-menu"},Sut={class:"chat-bot-sidebar-menu-item"},Aut=["src"],but=["src"],vut={key:0},yut={key:1},ype=bt({__name:"ChatBot",props:{userType:{type:String,default:"0"}},setup(e){const t=e,n=u.ref(!1),r=u.ref(!1),i=u.ref(),o=u.ref(null),a=u.ref(null),s=u.ref(!1),l=u.ref(!1),{animationState:c,sidebarHeight:d,sidebarStyle:p,iframeStyle:f,buttonAnimationClass:g,resizeHandleClass:m,toggleMainPanel:E,toggleIframe:h,startDragAnimation:A,endDragAnimation:S,updateIframeWidth:b}=rut(),{createDragHandler:v}=iut();v({startDragAnimation:A,endDragAnimation:S,updateIframeWidth:b,animationState:c});const C=async()=>{var F,U;if(["1","2"].includes(t.userType)){if(!((U=(F=i.value)==null?void 0:F.jsonData)!=null&&U.aiAgreeFlag)){r.value=!0;return}}else r.value=!1;r.value=!1,E()},y=()=>{c.isIframeOpen=!0,setTimeout(()=>R("newConversation"),300)},T=()=>{let F=!c.menuVisible;F&&(c.isIframeOpen=!0),setTimeout(()=>{c.menuVisible=F,R("saasMenu",{visible:c.menuVisible})},300)},R=(F,U={})=>{const q=document.querySelector("iframe");if(q)try{q.contentWindow.postMessage({type:F,...U},"*")}catch(V){console.warn(`发送${F}消息到iframe失败:`,V)}},O=window.location.hostname.includes("localhost"),I=F=>{const{pathname:U}=new URL(F),q=/^\/(?:micro\/([^/]+)|([^/]+))/,V=U.match(q);return V?V[1]||V[2]:null},x=`?sdkey=${localStorage.getItem("accessToken")}&sysFlag=2&tenantId=${localStorage.getItem("tenantId")}&from=${I(window.location.href)}`,D=()=>{var F,U;if((F=o.value)!=null&&F.pickerState.isActive){o.value.stopPicker();return}(U=o.value)==null||U.startPicker()},k=async()=>{if(t.userType=="1"){i.value.jsonData.aiAgreeFlag=!0;const F=i.value;i.value=await D7(F),i.value=await t1({id:"1"}),n.value=!1,r.value=!1,E()}else r.value=!1},L=async()=>{if(t.userType=="1"){i.value.jsonData.aiAgreeFlag=!1;const F=i.value;await D7(F),i.value=await t1({id:1})}};u.onUnmounted(()=>{var F;c.isDragging=!1,c.menuVisible=!1,(F=o.value)==null||F.cleanup();try{window.removeEventListener("message")}catch(U){console.warn("移除message事件监听器失败:",U)}}),u.onMounted(async()=>{let F=[];window.addEventListener("message",U=>{U.data.type==="closeSaasMenu"&&T(),U.data.type==="showKanban"&&(F=U.data.kanbanData||[],F.length&&(l.value=!0,s.value=!0)),U.data.type==="crm_kanban_show"&&a.value.contentWindow.postMessage({type:"refreshKanbanData",kanbanData:F},"*")}),i.value=await t1({id:"1"}),!i.value.jsonData.aiAgreeFlag&&t.userType!="0"&&(n.value=!0)});const M=()=>{s.value=!1,setTimeout(()=>{l.value=!1},500)};return(F,U)=>{var j,N;const q=u.resolveComponent("a-tooltip"),V=u.resolveComponent("a-modal");return u.openBlock(),u.createElementBlock("div",hut,[u.createVNode(mut,{ref_key:"elementPickerHintRef",ref:o},null,512),u.createElementVNode("div",{class:u.normalizeClass(["chat-bot-btn",u.unref(g)]),style:u.normalizeStyle({"--grayscale-value":n.value?"100%":"0%"}),onClick:C},U[3]||(U[3]=[u.createElementVNode("img",{src:Xct,alt:""},null,-1)]),6),u.createElementVNode("div",{class:"chat-bot-sidebar",style:u.normalizeStyle(u.unref(p))},[u.createElementVNode("div",{class:"chat-bot-sidebar-header",onClick:U[0]||(U[0]=(...w)=>u.unref(h)&&u.unref(h)(...w))},U[4]||(U[4]=[u.createElementVNode("img",{src:$ct,alt:""},null,-1)])),u.createElementVNode("div",Eut,[u.createElementVNode("div",{class:u.normalizeClass(["chat-bot-sidebar-menu-item",{"chat-bot-sidebar-menu-item-active":u.unref(c).menuVisible}])},[u.createVNode(q,{placement:"left"},{title:u.withCtx(()=>U[5]||(U[5]=[u.createTextVNode("历史对话")])),default:u.withCtx(()=>[u.createElementVNode("img",{onClick:T,src:eut,alt:""})]),_:1})],2),u.createElementVNode("div",Sut,[u.createVNode(q,{placement:"left"},{title:u.withCtx(()=>U[6]||(U[6]=[u.createTextVNode("新的对话")])),default:u.withCtx(()=>[u.createElementVNode("img",{onClick:y,src:tut,alt:""})]),_:1})]),u.createElementVNode("div",{class:u.normalizeClass(["chat-bot-sidebar-menu-item",{"chat-bot-sidebar-menu-item-active":(N=(j=o.value)==null?void 0:j.pickerState)==null?void 0:N.isActive}])},[u.createVNode(q,{placement:"left"},{title:u.withCtx(()=>{var w,_;return[u.createTextVNode(u.toDisplayString((_=(w=o.value)==null?void 0:w.pickerState)!=null&&_.isActive?"退出选择模式":"鼐思图析"),1)]}),default:u.withCtx(()=>{var w,_;return[u.createElementVNode("img",{onClick:D,src:nut,alt:"",style:u.normalizeStyle({filter:(_=(w=o.value)==null?void 0:w.pickerState)!=null&&_.isActive?"brightness(1.2) saturate(1.3)":""})},null,4)]}),_:1})],2)])],4),u.unref(c).isOpenShowIframe?(u.openBlock(),u.createElementBlock(u.Fragment,{key:0},[l.value?(u.openBlock(),u.createElementBlock("div",{key:0,class:u.normalizeClass(["kanban-box",s.value?"is-visible":"is-hidden"]),onClick:M},[u.createElementVNode("div",{class:"iframe-box",onClick:U[1]||(U[1]=u.withModifiers(()=>{},["stop"]))},[u.createElementVNode("iframe",{ref_key:"aiWorkbenchiframeRef",ref:a,src:`${u.unref(O)?"http://localhost:5199":""}/micro/sd-crm/work/ai-workbench?from=iframe`,frameborder:"0",scrolling:"no"},null,8,Aut),u.createElementVNode("div",{class:"close-kanban",onClick:M},[u.createVNode(u.unref(wo))])])],2)):u.createCommentVNode("",!0),u.createElementVNode("div",{class:"chat-bot-iframe",style:u.normalizeStyle(u.unref(f))},[u.createElementVNode("iframe",{src:`${u.unref(O)?"http://localhost:81":""}/nsibot-ai/?${x}`,frameborder:"0"},null,8,but)],4)],64)):u.createCommentVNode("",!0),u.createVNode(V,{open:r.value,"onUpdate:open":U[2]||(U[2]=w=>r.value=w),title:"提示",onOk:k,onCancel:L,cancelText:t.userType=="1"?"不同意":"取消",okText:t.userType=="1"?"同意":"确定",cancelButtonProps:t.userType=="2"?{style:{display:"none"}}:"",centered:""},{default:u.withCtx(()=>[t.userType=="1"?(u.openBlock(),u.createElementBlock("p",vut,U[7]||(U[7]=[u.createTextVNode(" AI 功能数据使用说明"),u.createElementVNode("br",null,null,-1),u.createElementVNode("br",null,null,-1),u.createTextVNode(" 当您使用 AI 问答功能时,我们可能会调用对应系统的相关数据接口"),u.createElementVNode("br",null,null,-1),u.createElementVNode("br",null,null,-1),u.createTextVNode(" 【调用目的】:"),u.createElementVNode("br",null,null,-1),u.createElementVNode("br",null,null,-1),u.createTextVNode(" 1、提高问答准确性"),u.createElementVNode("br",null,null,-1),u.createElementVNode("br",null,null,-1),u.createTextVNode(" 2、提供更符合业务场景的智能分析"),u.createElementVNode("br",null,null,-1),u.createElementVNode("br",null,null,-1),u.createTextVNode(" 【我们承诺】:"),u.createElementVNode("br",null,null,-1),u.createElementVNode("br",null,null,-1),u.createTextVNode(" 1、数据仅在问答过程中调用,不会额外保存或对外泄露;"),u.createElementVNode("br",null,null,-1),u.createElementVNode("br",null,null,-1),u.createTextVNode(" 2、数据仅限用于提升功能效果,不作其他用途; ")]))):(u.openBlock(),u.createElementBlock("p",yut,"请联系管理员开通权限"))]),_:1},8,["open","cancelText","okText","cancelButtonProps"])])}}},[["__scopeId","data-v-ec195d94"]]),Cut={class:"import-upload"},Tut={key:0,class:"file-list"},Rut={class:"file-info"},Iut={class:"file-name"},Cpe=bt(u.defineComponent({__name:"ImportUpload",props:{templateApi:{type:Function}},emits:["fileUploaded","fileRemoved"],setup(e,{expose:t,emit:n}){const r=e,i=n,o=u.ref([]),a=u.ref(!1),s=A=>c(A)?(l(A.name)||Ct.error("请上传有效的文件类型"),!1):(Ct.error("文件大小不能超过 10MB!"),!1),l=A=>/\.(xlsx|xls)$/.test(A),c=A=>A.size/1024/1024<10,d=async A=>{try{let b=(await R$e(A)).paths[0]??"";return b=b.replace("/resfile",""),b}catch(S){throw console.error("文件上传失败:",S),new Error("文件上传失败")}},p=async A=>{if(!c(A.file)||!l(A.file.name))return f(A.file),!1;let S=[...A.fileList];if(S=S.slice(-1),S.length>0&&S[0].originFileObj){const b=S[0];b.status="uploading",o.value=S,a.value=!0;try{const v=await d(b.originFileObj);b.status="done",b.fileUrl=v,o.value=[...o.value],Ct.success(`${b.name} 文件上传成功`),i("fileUploaded",v)}catch{b.status="error",o.value=[...o.value]}finally{a.value=!1}}},f=A=>{const S=o.value.findIndex(b=>b.uid===A.uid);S>-1&&(o.value.splice(S,1),i("fileRemoved"))},g=async()=>{try{const A=await r.templateApi();window.open(A,"_blank"),Ct.success("下载成功")}catch{}};return t({clearFiles:()=>{o.value=[]},getFileUrl:()=>{if(o.value.length===0)return null;const A=o.value[0];return(A==null?void 0:A.fileUrl)||null},hasUploadedFile:()=>o.value.length>0&&o.value[0].status==="done"&&o.value[0].fileUrl}),(A,S)=>{const b=u.resolveComponent("a-upload-dragger"),v=u.resolveComponent("a-button");return u.openBlock(),u.createElementBlock("div",Cut,[u.createElementVNode("div",{class:"template-download"},[S[3]||(S[3]=u.createStaticVNode('<div class="td-icon" aria-hidden="true" data-v-98be62fc><svg width="80" height="80" viewBox="0 0 48 48" fill="none" data-v-98be62fc><path fill="#CCCCCC" d="M12 36h24c4.418 0 8-3.358 8-7.5 0-2.8-1.5-5.3-3.8-6.7 0.3-0.9 0.5-1.8 0.5-2.8 0-4.4-3.6-8-8-8-1.8 0-3.4 0.6-4.7 1.6C26.8 9.1 23.6 7 20 7c-5.5 0-10 4.5-10 10 0 1.1 0.2 2.1 0.5 3.1C7.6 21.4 6 24.3 6 27.5c0 2.2 0.9 4.2 2.4 5.7C9.6 34.4 10.7 36 12 36z" data-v-98be62fc></path><rect x="22" y="18.5" width="4" height="11" rx="2" fill="#ffffff" data-v-98be62fc></rect><polygon points="24,34 18.5,28.5 29.5,28.5" fill="#ffffff" data-v-98be62fc></polygon></svg></div>',1)),u.createElementVNode("div",{class:"td-content"},[S[1]||(S[1]=u.createElementVNode("div",{class:"td-title"},"填写导入数据信息",-1)),S[2]||(S[2]=u.createElementVNode("div",{class:"td-desc"},"请按照数据模板的格式准备导入数据,模板中的表头名称不可更改,表头行不能删除",-1)),u.createElementVNode("span",{class:"td-link",onClick:g},"下载模板")])]),u.createVNode(b,{"file-list":o.value,"onUpdate:fileList":S[0]||(S[0]=C=>o.value=C),"before-upload":s,multiple:!1,"show-upload-list":!1,accept:".xlsx,.xls",limit:"1",onChange:p},{default:u.withCtx(()=>S[4]||(S[4]=[u.createElementVNode("div",{class:"upload-area"},[u.createElementVNode("div",{class:"upload-icon"},[u.createElementVNode("svg",{width:"120",height:"100",viewBox:"0 0 48 48",fill:"none"},[u.createElementVNode("path",{fill:"#999999",d:"M12 36h24c4.418 0 8-3.358 8-7.5 0-2.8-1.5-5.3-3.8-6.7 0.3-0.9 0.5-1.8 0.5-2.8 0-4.4-3.6-8-8-8-1.8 0-3.4 0.6-4.7 1.6C26.8 9.1 23.6 7 20 7c-5.5 0-10 4.5-10 10 0 1.1 0.2 2.1 0.5 3.1C7.6 21.4 6 24.3 6 27.5c0 2.2 0.9 4.2 2.4 5.7C9.6 34.4 10.7 36 12 36z"}),u.createElementVNode("rect",{x:"22",y:"18.5",width:"4",height:"11",rx:"2",fill:"#ffffff"}),u.createElementVNode("polygon",{points:"24,14 18.5,19.5 29.5,19.5",fill:"#ffffff"})])]),u.createElementVNode("div",{class:"upload-text"},[u.createElementVNode("span",null,"将文件拖到此处,或 "),u.createElementVNode("span",{class:"upload-link"},"点击上传"),u.createElementVNode("p",null,"文件后缀名必须为xls或xlsx(即Excel格式)文件大小不得大于10M,最多支持导入3000条数据")])],-1)])),_:1},8,["file-list"]),o.value.length>0?(u.openBlock(),u.createElementBlock("div",Tut,[(u.openBlock(!0),u.createElementBlock(u.Fragment,null,u.renderList(o.value,C=>(u.openBlock(),u.createElementBlock("div",{key:C.uid,class:"file-item"},[u.createElementVNode("div",Rut,[u.createElementVNode("span",Iut,u.toDisplayString(C.name),1),u.createElementVNode("span",{class:u.normalizeClass(["file-status",C.status])},[C.status==="uploading"?(u.openBlock(),u.createElementBlock(u.Fragment,{key:0},[u.createTextVNode("上传中...")],64)):C.status==="done"?(u.openBlock(),u.createElementBlock(u.Fragment,{key:1},[u.createTextVNode("上传成功")],64)):C.status==="error"?(u.openBlock(),u.createElementBlock(u.Fragment,{key:2},[u.createTextVNode("上传失败")],64)):u.createCommentVNode("",!0)],2)]),u.createVNode(v,{type:"link",class:"delete-button",size:"small",onClick:y=>f(C)},{default:u.withCtx(()=>S[5]||(S[5]=[u.createTextVNode("删除")])),_:2},1032,["onClick"])]))),128))])):u.createCommentVNode("",!0)])}}}),[["__scopeId","data-v-98be62fc"]]),xut=async(e,t)=>Dn.get(`${Ye.VITE_GLOB_BASE_URL}/system/easy-excel/get-progress`,{params:{type:e,uuid:t}}),Out={class:"import-progress"},Nut={class:"status-section"},Dut={class:"status-icon"},wut={class:"status-message"},kut={class:"progress-section"},But={class:"progress-bar-container"},_ut={class:"progress-bar-bg"},Mut={class:"progress-text"},Tpe=bt(u.defineComponent({__name:"ImportProgress",props:{pollInterval:{default:3e3}},emits:["completed","failed"],setup(e,{expose:t,emit:n}){const r=e,i=n,o=u.ref(0),a=u.ref("processing"),s=u.ref(""),l=u.ref(""),c=u.ref(""),d=u.ref(),p=u.ref(!1),f=(y,T)=>{l.value=y,c.value=T,o.value=0,a.value="processing",s.value="正在处理中...",d.value=setInterval(()=>{h()},r.pollInterval)};let g=0,m=0;const E={error:0,success:0},h=async()=>{try{const y=await xut(l.value,c.value),T=y.total>0?Math.round((y.success+y.error)/(y.total??0)*100):0;if(o.value=Math.min(Math.max(T,0),100),y.handled){if(y.error>0&&!y.resultUrl&&g<3){g++;return}a.value=(y.error>0,"completed"),s.value=`处理完成:成功 ${y.success} 条,失败 ${y.error} 条`,o.value=100,A(),setTimeout(()=>{i("completed",y),p.value=!1},1e3)}else a.value="processing",s.value=y.total?`正在处理中:已处理 ${y.success+y.error}/${y.total} 条记录`:"正在处理中",E.error===y.error&&E.success===y.success?(m++,m>3&&(A(),a.value="failed",s.value="查询进度失败,请重试",setTimeout(()=>{i("failed",{message:"查询进度失败"}),p.value=!1},1e3),E.error=0,E.success=0)):(m=0,E.error=y.error,E.success=y.success)}catch(y){console.error("查询进度失败:",y),A(),a.value="failed",s.value="查询进度失败,请重试",setTimeout(()=>{i("failed",{message:"查询进度失败"}),p.value=!1},1e3)}},A=()=>{d.value&&(clearInterval(d.value),d.value=void 0,g=0)},S=()=>a.value==="failed"?"#ff4d4f":a.value==="completed"?"#52c41a":"#1890ff",b=()=>a.value==="failed"?"❌":a.value==="completed"?"✅":"⏳";return t({open:(y,T)=>{p.value=!0,f(y,T)},close:()=>{A(),p.value=!1}}),u.onUnmounted(()=>{A()}),(y,T)=>{const R=u.resolveComponent("a-modal");return u.openBlock(),u.createBlock(R,{open:p.value,"onUpdate:open":T[0]||(T[0]=O=>p.value=O),title:"导入进度",closable:!1,maskClosable:!1,footer:null,width:"400px"},{default:u.withCtx(()=>[u.createElementVNode("div",Out,[u.createElementVNode("div",Nut,[u.createElementVNode("div",Dut,u.toDisplayString(b()),1),u.createElementVNode("div",wut,u.toDisplayString(s.value),1)]),u.createElementVNode("div",kut,[u.createElementVNode("div",But,[u.createElementVNode("div",_ut,[u.createElementVNode("div",{class:"progress-bar-fill",style:u.normalizeStyle({width:o.value+"%",backgroundColor:S()})},null,4)]),u.createElementVNode("div",Mut,u.toDisplayString(o.value)+"%",1)])]),T[1]||(T[1]=u.createElementVNode("div",{class:"tips-section"},[u.createElementVNode("div",{class:"tips-text"},[u.createElementVNode("span",{class:"tips-icon"},"💡"),u.createElementVNode("span",null,"请耐心等待,导入过程中请勿关闭页面")])],-1))])]),_:1},8,["open"])}}}),[["__scopeId","data-v-033bdbed"]]),Fut={class:"import-result"},Lut={class:"status-section"},Put={class:"status-icon-wrapper"},Uut={class:"status-title"},Vut={class:"status-description"},Qut={key:0,class:"stats-section"},Gut={class:"stats-grid"},Kut={class:"stat-item"},Yut={class:"stat-value"},qut={class:"stat-item success"},Hut={class:"stat-value"},Jut={key:0,class:"stat-item error"},jut={class:"stat-value"},zut={class:"action-section"},Wut={key:0,class:"error-download"},Rpe=bt(u.defineComponent({__name:"ImportResult",emits:["confirm","retry"],setup(e,{expose:t,emit:n}){const r=n,i=u.ref({success:!0,successCount:0,failCount:0,totalCount:0}),o=u.ref(!1),a=()=>{o.value=!1,r("confirm")},s=u.computed(()=>i.value.success),l=u.computed(()=>i.value.failCount>0),c=u.computed(()=>{const S=i.value.resultUrl;return l.value&&S&&S.trim()!==""}),d=u.computed(()=>i.value.resultUrl||""),p=()=>s.value?"✅":"❌",f=()=>s.value?"数据导入完成":"导入失败",g=()=>s.value?l.value?`导入成功 ${i.value.successCount} 条,失败 ${i.value.failCount} 条`:`导入成功 ${i.value.successCount} 条`:i.value.message||"导入过程中发生错误,请检查数据后重试",m=()=>{const A=d.value;if(!A){console.warn("错误文件下载链接为空");return}try{window.open(A,"_blank")}catch(S){console.error("打开下载链接失败:",S),window.location.href=A}};return t({open:A=>{i.value=A,o.value=!0},close:()=>{o.value=!1}}),(A,S)=>{const b=u.resolveComponent("a-button"),v=u.resolveComponent("a-modal");return u.openBlock(),u.createBlock(v,{open:o.value,"onUpdate:open":S[0]||(S[0]=C=>o.value=C),title:"导入结果",width:"420px",okText:"知道了","cancel-button-props":{style:{display:"none"}},maskClosable:!1,onOk:a,onCancel:a},{default:u.withCtx(()=>[u.createElementVNode("div",Fut,[u.createElementVNode("div",Lut,[u.createElementVNode("div",Put,[u.createElementVNode("div",{class:u.normalizeClass(["status-icon",{success:s.value,error:!s.value}])},u.toDisplayString(p()),3)]),u.createElementVNode("div",Uut,u.toDisplayString(f()),1),u.createElementVNode("div",Vut,u.toDisplayString(g()),1)]),s.value?(u.openBlock(),u.createElementBlock("div",Qut,[u.createElementVNode("div",Gut,[u.createElementVNode("div",Kut,[u.createElementVNode("div",Yut,u.toDisplayString(i.value.totalCount),1),S[1]||(S[1]=u.createElementVNode("div",{class:"stat-label"},"总计",-1))]),u.createElementVNode("div",qut,[u.createElementVNode("div",Hut,u.toDisplayString(i.value.successCount),1),S[2]||(S[2]=u.createElementVNode("div",{class:"stat-label"},"成功",-1))]),l.value?(u.openBlock(),u.createElementBlock("div",Jut,[u.createElementVNode("div",jut,u.toDisplayString(i.value.failCount),1),S[3]||(S[3]=u.createElementVNode("div",{class:"stat-label"},"失败",-1))])):u.createCommentVNode("",!0)])])):u.createCommentVNode("",!0),u.createElementVNode("div",zut,[c.value?(u.openBlock(),u.createElementBlock("div",Wut,[u.createVNode(b,{type:"primary",ghost:"",onClick:m},{default:u.withCtx(()=>S[4]||(S[4]=[u.createTextVNode(" 下载错误文件 ")])),_:1})])):u.createCommentVNode("",!0)])])]),_:1},8,["open"])}}}),[["__scopeId","data-v-594eb9ba"]]),D6=bt(u.defineComponent({__name:"BaseImport",props:{type:{},templateApi:{type:Function},importApi:{type:Function},downloadErrorApi:{type:Function},title:{}},emits:["success","cancel"],setup(e,{expose:t,emit:n}){const r={NO_FILE_SELECTED:"请选择文件并等待上传完成",FILE_UPLOAD_FAILED:"文件上传失败,请重新选择文件",IMPORT_FAILED:"导入失败,请检查文件",IMPORT_ERROR:"导入过程中发生错误"},i=e,o=n,a=u.ref(),s=u.ref(),l=u.ref(),c=u.ref(null),d=u.ref(""),p=u.ref(!1),f=u.ref(!1),g=u.ref(!1),m=u.ref(!1),E=async()=>{var D,k;if(!(m.value||g.value))try{if(m.value=!0,f.value=!0,!((D=a.value)!=null&&D.hasUploadedFile())){Ct.warning(r.NO_FILE_SELECTED);return}const L=(k=a.value)==null?void 0:k.getFileUrl();if(!L){Ct.warning(r.FILE_UPLOAD_FAILED);return}await S(L)}catch(L){console.error("Modal确认处理失败:",L),Ct.error(r.IMPORT_ERROR)}finally{m.value=!1,f.value=!1}},h=()=>{var D;try{(D=a.value)==null||D.clearFiles(),c.value=null,o("cancel"),p.value=!1}catch(k){console.error("Modal取消处理失败:",k)}},A=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(D){const k=Math.random()*16|0;return(D==="x"?k:k&3|8).toString(16)}),S=async D=>{var k;try{g.value=!0,d.value=A(),await i.importApi({uuid:d.value,filePath:D,type:i.type})?(p.value=!1,(k=s.value)==null||k.open(i.type,d.value)):m.value=!1}catch(L){console.error("导入流程启动失败:",L),m.value=!1}finally{g.value=!1}},b=D=>{c.value=D},v=()=>{c.value=null},C=D=>{var k;try{T();const L=D.success||0,M=D.error||0,F=D.total||0,U={success:!0,successCount:L,failCount:M,totalCount:F,resultUrl:D.resultUrl||"",errorFileUrl:D.resultUrl||"",message:`导入完成:成功 ${L} 条,失败 ${M} 条`};m.value=!1,(k=l.value)==null||k.open(U)}catch(L){console.error("处理导入完成事件失败:",L),y({message:r.IMPORT_ERROR})}},y=D=>{var k;try{T();const L={success:!1,successCount:0,failCount:0,totalCount:0,message:D.message||r.IMPORT_ERROR};m.value=!1,(k=l.value)==null||k.open(L)}catch(L){console.error("处理导入失败事件失败:",L),Ct.error(r.IMPORT_ERROR),m.value=!1}},T=()=>{var D;try{(D=s.value)==null||D.close()}catch(k){console.error("清理进度监控资源失败:",k)}},R=()=>{var D;try{(D=a.value)==null||D.clearFiles(),c.value=null,d.value="",m.value=!1,g.value=!1,f.value=!1,o("success")}catch(k){console.error("处理结果确认失败:",k),m.value=!1,g.value=!1,f.value=!1}},O=()=>{try{m.value=!1,g.value=!1,f.value=!1,p.value=!0}catch(D){console.error("处理重试失败:",D),m.value=!1,g.value=!1,f.value=!1}};return t({open:()=>{var D;try{T(),(D=a.value)==null||D.clearFiles(),c.value=null,d.value="",m.value=!1,g.value=!1,f.value=!1,p.value=!0}catch(k){console.error("打开导入组件失败:",k),m.value=!1,g.value=!1,f.value=!1}},close:()=>{var D,k;try{T(),p.value=!1,(D=l.value)==null||D.close(),m.value=!1,g.value=!1,f.value=!1,c.value=null,d.value="",(k=a.value)==null||k.clearFiles()}catch(L){console.error("关闭导入组件失败:",L),m.value=!1,g.value=!1,f.value=!1}}}),(D,k)=>{const L=u.resolveComponent("a-modal");return u.openBlock(),u.createElementBlock(u.Fragment,null,[u.createVNode(L,{open:p.value,"onUpdate:open":k[0]||(k[0]=M=>p.value=M),title:i.title,"confirm-loading":f.value,okText:"确认",cancelText:"取消",maskClosable:!1,onOk:E,onCancel:h,width:"35%"},{default:u.withCtx(()=>[u.createVNode(Cpe,{ref_key:"uploadRef",ref:a,"template-api":i.templateApi,onFileUploaded:b,onFileRemoved:v},null,8,["template-api"])]),_:1},8,["open","title","confirm-loading"]),u.createVNode(Tpe,{ref_key:"progressRef",ref:s,onCompleted:C,onFailed:y},null,512),u.createVNode(Rpe,{ref_key:"resultRef",ref:l,onConfirm:R,onRetry:O},null,512)],64)}}}),[["__scopeId","data-v-3c1a26af"]]),Zut={class:"import-example"},Xut={class:"example-content"},$ut=bt(u.defineComponent({__name:"BaseImportExample",setup(e){const t=u.ref(),n=async()=>"https://example.com/template.xlsx",r=async s=>(console.log("启动导入处理:",s),{data:(await(await fetch("/api/import/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)})).json()).success}),i=()=>{console.log("导入成功")},o=()=>{console.log("导入取消")},a=()=>{var s;(s=t.value)==null||s.open()};return(s,l)=>{const c=u.resolveComponent("a-button");return u.openBlock(),u.createElementBlock("div",Zut,[l[3]||(l[3]=u.createElementVNode("h2",null,"标准化文件导入组件使用示例",-1)),u.createElementVNode("div",Xut,[l[1]||(l[1]=u.createElementVNode("p",null,"这是一个展示如何使用StandardImport组件的示例",-1)),u.createVNode(c,{type:"primary",onClick:a},{default:u.withCtx(()=>l[0]||(l[0]=[u.createTextVNode(" 打开导入弹窗 ")])),_:1}),l[2]||(l[2]=u.createStaticVNode('<div class="usage-info" data-v-723639ae><h3 data-v-723639ae>使用说明:</h3><ul data-v-723639ae><li data-v-723639ae>1. 点击&quot;打开导入弹窗&quot;按钮</li><li data-v-723639ae>2. 下载模板文件(可选)</li><li data-v-723639ae>3. 选择要导入的文件并自动上传</li><li data-v-723639ae>4. 系统自动开始处理并显示进度</li><li data-v-723639ae>5. 实时查看处理进度</li><li data-v-723639ae>6. 查看最终处理结果</li></ul><h3 data-v-723639ae>标准化流程特点:</h3><ul data-v-723639ae><li data-v-723639ae>✅ 三阶段标准流程:上传 → 进度 → 结果</li><li data-v-723639ae>✅ 使用标准轮询接口 /system/easy-excel/get-progress</li><li data-v-723639ae>✅ 组件内部自动生成和管理UUID</li><li data-v-723639ae>✅ 完善的错误处理和重试机制</li><li data-v-723639ae>✅ 支持错误结果文件下载</li></ul></div>',1))]),u.createVNode(u.unref(D6),{ref_key:"importRef",ref:t,type:"customer","template-api":n,"import-api":r,title:"数据导入",onSuccess:i,onCancel:o},null,512)])}}}),[["__scopeId","data-v-723639ae"]]),Ipe={ApiSelect:w6,BaseUpload:Md,UploadImage:Rse,UploadFile:Tse,DetailItem:Lse,DetailRow:Pse,EmployeeStatus:NP,SexStatus:Vse,PositionStatus:Use,BaseUserSelect:Yse,TableUserSelect:Hse,SelectUserDialog:uR,UserTag:cR,SandEditor:Ase,SandEditorV2:bse,SelectAddress:yse,EnterpriseSearch:w7,ChangeRecord:Bse,FollowUpRecord:Fse,UserCard:DP,BtnAi:Spe,ChatBot:ype,AITextarea:wse,AIInput:kse,UploadImageV2:xse,UploadImageV3:Ose,UploadFileV2:Nse,TagSelect:qse,UploadFileV3:Dse,BaseImport:D6},edt={install:e=>{Object.entries(Ipe).forEach(([t,n])=>{e.component(t,n)})}},tdt=e=>YRe(e);Fe.AIInput=kse,Fe.AITextarea=wse,Fe.ApiSelect=w6,Fe.BaseImport=D6,Fe.BaseImportExample=$ut,Fe.BaseUpload=Md,Fe.BaseUserSelect=Yse,Fe.BtnAi=Spe,Fe.BusinessUserSelect=Kse,Fe.ChangeRecord=Bse,Fe.ChatBot=ype,Fe.DeptTree=Gse,Fe.DetailItem=Lse,Fe.DetailRow=Pse,Fe.EmployeeStatus=NP,Fe.EnterpriseSearch=w7,Fe.FollowUpRecord=Fse,Fe.ImportProgress=Tpe,Fe.ImportResult=Rpe,Fe.ImportUpload=Cpe,Fe.PositionStatus=Use,Fe.SandEditor=Ase,Fe.SandEditorV2=bse,Fe.SelectAddress=yse,Fe.SelectUserDialog=uR,Fe.SexStatus=Vse,Fe.TableUserSelect=Hse,Fe.TagSelect=qse,Fe.TreeOrg=Itt,Fe.UploadFile=Tse,Fe.UploadFileV2=Nse,Fe.UploadFileV3=Dse,Fe.UploadImage=Rse,Fe.UploadImageV2=xse,Fe.UploadImageV3=Ose,Fe.UserCard=DP,Fe.UserTag=cR,Fe.components=Ipe,Fe.default=edt,Fe.filePreview=aR,Fe.sandInit=tdt,Object.defineProperties(Fe,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
414
+ `},y=()=>{b.overlay&&(b.overlay.style.display="none")},T=V=>{if(!b.isActive)return;const j=V.target;if(j.closest("#element-picker-overlay")||j.closest(".chat-bot-box")||j.closest(".ant-tooltip")||j.closest(".element-picker-hint")||j===document.body||j===document.documentElement||j.tagName==="SCRIPT"||j.tagName==="STYLE"||j.tagName==="LINK"||j.tagName==="META"){y();return}const N=j.getBoundingClientRect();if(N.width<3||N.height<3){y();return}if(N.bottom<0||N.top>window.innerHeight||N.right<0||N.left>window.innerWidth){y();return}b.currentElement=j,C(j)},R=async V=>{if(!b.isActive)return;V.preventDefault(),V.stopPropagation();const j=V.target;if(j.closest("#element-picker-overlay")||j.closest(".chat-bot-box")||j.closest(".ant-tooltip")||j.closest(".element-picker-hint")||j===document.body||j===document.documentElement||j.tagName==="SCRIPT"||j.tagName==="STYLE"||j.tagName==="LINK"||j.tagName==="META")return;const N=j.getBoundingClientRect();if(N.width<3||N.height<3)return;b.selectedElement=j;const w=O(j);M(),b.isLoading=!0,console.log("选中的元素:",j),console.log("元素信息:",w);const{minimalHtml:_,formHtml:P,structure:H,formData:J,selectorInfo:ee}=lut(j);c(),await s({url:sR(),data:{analyse:{html:P},modelTag:"analyse",systemFlag:lR(window.location.href)},onComplete:()=>{console.log("润色请求完成")}})},O=V=>{var w;const j=V.getBoundingClientRect(),N=window.getComputedStyle(V);return{tagName:V.tagName.toLowerCase(),className:V.className,id:V.id,textContent:((w=V.textContent)==null?void 0:w.trim().substring(0,100))||"",attributes:Array.from(V.attributes).reduce((_,P)=>(_[P.name]=P.value,_),{}),dimensions:{width:j.width,height:j.height,left:j.left,top:j.top},styles:{backgroundColor:N.backgroundColor,color:N.color,fontSize:N.fontSize,fontFamily:N.fontFamily,display:N.display,position:N.position},xpath:I(V),cssSelector:x(V)}},I=V=>{if(V.id)return`//*[@id="${V.id}"]`;const j=[];for(;V&&V.nodeType===Node.ELEMENT_NODE;){let N=0,w=!1,_=V.previousSibling;for(;_;)_.nodeType===Node.ELEMENT_NODE&&_.nodeName===V.nodeName&&N++,_=_.previousSibling;for(_=V.nextSibling;_;){if(_.nodeType===Node.ELEMENT_NODE&&_.nodeName===V.nodeName){w=!0;break}_=_.nextSibling}const P=N||w?`[${N+1}]`:"";j.unshift(V.nodeName.toLowerCase()+P),V=V.parentNode}return j.length?"/"+j.join("/"):""},x=V=>{if(V.id)return`#${V.id}`;const j=[];for(;V&&V.nodeType===Node.ELEMENT_NODE;){let N=V.nodeName.toLowerCase();V.className&&(N+="."+V.className.split(" ").join(".")),j.unshift(N),V=V.parentNode}return j.join(" > ")},D=V=>{V.key==="Escape"&&b.isActive&&M()},k=()=>{!b.isActive||!b.currentElement||C(b.currentElement)},L=V=>{b.isActive=!0,b.currentElement=null,b.selectedElement=null,v(),document.addEventListener("mousemove",T,!0),document.addEventListener("click",R,!0),document.addEventListener("keydown",D,!0),document.addEventListener("scroll",k,!0),document.body.style.cursor="crosshair"},M=()=>{b.isActive=!1,b.currentElement=null,b.isLoading=!1,document.removeEventListener("mousemove",T,!0),document.removeEventListener("click",R,!0),document.removeEventListener("keydown",D,!0),document.removeEventListener("scroll",k,!0),document.body.style.cursor="",y()};return{pickerState:b,startPicker:L,stopPicker:M,cleanup:()=>{M(),b.overlay&&(document.body.removeChild(b.overlay),b.overlay=null)},showDialog:()=>{},hideDialog:()=>{b.showDialog=!1,b.isLoading=!1}}}const{pickerState:p,startPicker:f,stopPicker:g,cleanup:m,showDialog:E,hideDialog:h}=d(),A=()=>{g()},S=()=>{h()};return t({pickerState:p,startPicker:f,stopPicker:g,cleanup:m,showDialog:E,hideDialog:h}),u.watch(o,b=>{p.content=b,b&&p.isLoading&&(p.isLoading=!1,p.showDialog=!0)}),(b,v)=>u.unref(p).isActive||u.unref(p).showDialog||u.unref(p).isLoading?(u.openBlock(),u.createElementBlock("div",{key:0,class:u.normalizeClass(["element-picker-hint",{"dialog-mode":u.unref(p).showDialog,"loading-mode":u.unref(p).isLoading}])},[u.createElementVNode("div",dut,[u.unref(p).isActive&&!u.unref(p).showDialog&&!u.unref(p).isLoading?(u.openBlock(),u.createElementBlock(u.Fragment,{key:0},[v[0]||(v[0]=u.createElementVNode("div",{class:"hint-icon"},"🎯",-1)),v[1]||(v[1]=u.createElementVNode("div",{class:"hint-text"},[u.createElementVNode("div",{class:"hint-title"},"元素选择模式已启动"),u.createElementVNode("div",{class:"hint-description"}," 移动鼠标选择页面元素,点击确认选择,按ESC键退出 ")],-1)),u.createElementVNode("div",{class:"hint-close",onClick:A},"✕")],64)):u.createCommentVNode("",!0),u.unref(p).isLoading?(u.openBlock(),u.createElementBlock(u.Fragment,{key:1},[v[2]||(v[2]=u.createStaticVNode('<div class="loading-icon" data-v-f5be1ddd><div class="spinner" data-v-f5be1ddd></div></div><div class="loading-text" data-v-f5be1ddd><div class="loading-title" data-v-f5be1ddd>正在分析元素</div><div class="loading-description" data-v-f5be1ddd> 上传图片并进行AI分析中,请稍候... </div></div>',2))],64)):u.createCommentVNode("",!0),u.unref(p).showDialog?(u.openBlock(),u.createElementBlock(u.Fragment,{key:2},[u.createElementVNode("div",{class:"dialog-header"},[u.createElementVNode("div",{class:"dialog-close",onClick:S},"✕")]),u.createElementVNode("div",put,[u.createElementVNode("div",fut,[u.createElementVNode("p",{innerHTML:u.unref(r)(u.unref(p).content||"")},null,8,gut)])])],64)):u.createCommentVNode("",!0)])],2)):u.createCommentVNode("",!0)}},[["__scopeId","data-v-f5be1ddd"]]),hut={class:"chat-bot-box"},Eut={class:"chat-bot-sidebar-menu"},Sut={class:"chat-bot-sidebar-menu-item"},Aut=["src"],but=["src"],vut={key:0},yut={key:1},ype=bt({__name:"ChatBot",props:{userType:{type:String,default:"0"}},setup(e){const t=e,n=u.ref(!1),r=u.ref(!1),i=u.ref(),o=u.ref(null),a=u.ref(null),s=u.ref(!1),l=u.ref(!1),{animationState:c,sidebarHeight:d,sidebarStyle:p,iframeStyle:f,buttonAnimationClass:g,resizeHandleClass:m,toggleMainPanel:E,toggleIframe:h,startDragAnimation:A,endDragAnimation:S,updateIframeWidth:b}=rut(),{createDragHandler:v}=iut();v({startDragAnimation:A,endDragAnimation:S,updateIframeWidth:b,animationState:c});const C=async()=>{var F,U;if(["1","2"].includes(t.userType)){if(!((U=(F=i.value)==null?void 0:F.jsonData)!=null&&U.aiAgreeFlag)){r.value=!0;return}}else r.value=!1;r.value=!1,E()},y=()=>{c.isIframeOpen=!0,setTimeout(()=>R("newConversation"),300)},T=()=>{let F=!c.menuVisible;F&&(c.isIframeOpen=!0),setTimeout(()=>{c.menuVisible=F,R("saasMenu",{visible:c.menuVisible})},300)},R=(F,U={})=>{const q=document.querySelector("iframe");if(q)try{q.contentWindow.postMessage({type:F,...U},"*")}catch(V){console.warn(`发送${F}消息到iframe失败:`,V)}},O=window.location.hostname.includes("localhost"),I=F=>{const{pathname:U}=new URL(F),q=/^\/(?:micro\/([^/]+)|([^/]+))/,V=U.match(q);return V?V[1]||V[2]:null},x=`?sdkey=${localStorage.getItem("accessToken")}&sysFlag=2&tenantId=${localStorage.getItem("tenantId")}&from=${I(window.location.href)}`,D=()=>{var F,U;if((F=o.value)!=null&&F.pickerState.isActive){o.value.stopPicker();return}(U=o.value)==null||U.startPicker()},k=async()=>{if(t.userType=="1"){i.value.jsonData.aiAgreeFlag=!0;const F=i.value;i.value=await D7(F),i.value=await t1({id:"1"}),n.value=!1,r.value=!1,E()}else r.value=!1},L=async()=>{if(t.userType=="1"){i.value.jsonData.aiAgreeFlag=!1;const F=i.value;await D7(F),i.value=await t1({id:1})}};u.onUnmounted(()=>{var F;c.isDragging=!1,c.menuVisible=!1,(F=o.value)==null||F.cleanup();try{window.removeEventListener("message")}catch(U){console.warn("移除message事件监听器失败:",U)}}),u.onMounted(async()=>{let F=[];window.addEventListener("message",U=>{U.data.type==="closeSaasMenu"&&T(),U.data.type==="showKanban"&&(F=U.data.kanbanData||[],F.length&&(l.value=!0,s.value=!0)),U.data.type==="crm_kanban_show"&&a.value.contentWindow.postMessage({type:"refreshKanbanData",kanbanData:F},"*")}),i.value=await t1({id:"1"}),!i.value.jsonData.aiAgreeFlag&&t.userType!="0"&&(n.value=!0)});const M=()=>{s.value=!1,setTimeout(()=>{l.value=!1},500)};return(F,U)=>{var j,N;const q=u.resolveComponent("a-tooltip"),V=u.resolveComponent("a-modal");return u.openBlock(),u.createElementBlock("div",hut,[u.createVNode(mut,{ref_key:"elementPickerHintRef",ref:o},null,512),u.createElementVNode("div",{class:u.normalizeClass(["chat-bot-btn",u.unref(g)]),style:u.normalizeStyle({"--grayscale-value":n.value?"100%":"0%"}),onClick:C},U[3]||(U[3]=[u.createElementVNode("img",{src:Xct,alt:""},null,-1)]),6),u.createElementVNode("div",{class:"chat-bot-sidebar",style:u.normalizeStyle(u.unref(p))},[u.createElementVNode("div",{class:"chat-bot-sidebar-header",onClick:U[0]||(U[0]=(...w)=>u.unref(h)&&u.unref(h)(...w))},U[4]||(U[4]=[u.createElementVNode("img",{src:$ct,alt:""},null,-1)])),u.createElementVNode("div",Eut,[u.createElementVNode("div",{class:u.normalizeClass(["chat-bot-sidebar-menu-item",{"chat-bot-sidebar-menu-item-active":u.unref(c).menuVisible}])},[u.createVNode(q,{placement:"left"},{title:u.withCtx(()=>U[5]||(U[5]=[u.createTextVNode("历史对话")])),default:u.withCtx(()=>[u.createElementVNode("img",{onClick:T,src:eut,alt:""})]),_:1})],2),u.createElementVNode("div",Sut,[u.createVNode(q,{placement:"left"},{title:u.withCtx(()=>U[6]||(U[6]=[u.createTextVNode("新的对话")])),default:u.withCtx(()=>[u.createElementVNode("img",{onClick:y,src:tut,alt:""})]),_:1})]),u.createElementVNode("div",{class:u.normalizeClass(["chat-bot-sidebar-menu-item",{"chat-bot-sidebar-menu-item-active":(N=(j=o.value)==null?void 0:j.pickerState)==null?void 0:N.isActive}])},[u.createVNode(q,{placement:"left"},{title:u.withCtx(()=>{var w,_;return[u.createTextVNode(u.toDisplayString((_=(w=o.value)==null?void 0:w.pickerState)!=null&&_.isActive?"退出选择模式":"鼐思图析"),1)]}),default:u.withCtx(()=>{var w,_;return[u.createElementVNode("img",{onClick:D,src:nut,alt:"",style:u.normalizeStyle({filter:(_=(w=o.value)==null?void 0:w.pickerState)!=null&&_.isActive?"brightness(1.2) saturate(1.3)":""})},null,4)]}),_:1})],2)])],4),u.unref(c).isOpenShowIframe?(u.openBlock(),u.createElementBlock(u.Fragment,{key:0},[l.value?(u.openBlock(),u.createElementBlock("div",{key:0,class:u.normalizeClass(["kanban-box",s.value?"is-visible":"is-hidden"]),onClick:M},[u.createElementVNode("div",{class:"iframe-box",onClick:U[1]||(U[1]=u.withModifiers(()=>{},["stop"]))},[u.createElementVNode("iframe",{ref_key:"aiWorkbenchiframeRef",ref:a,src:`${u.unref(O)?"http://localhost:5199":""}/micro/sd-crm/work/ai-workbench?from=iframe`,frameborder:"0",scrolling:"no"},null,8,Aut),u.createElementVNode("div",{class:"close-kanban",onClick:M},[u.createVNode(u.unref(wo))])])],2)):u.createCommentVNode("",!0),u.createElementVNode("div",{class:"chat-bot-iframe",style:u.normalizeStyle(u.unref(f))},[u.createElementVNode("iframe",{src:`${u.unref(O)?"http://localhost:81":""}/nsibot-ai/?${x}`,frameborder:"0"},null,8,but)],4)],64)):u.createCommentVNode("",!0),u.createVNode(V,{open:r.value,"onUpdate:open":U[2]||(U[2]=w=>r.value=w),title:"提示",onOk:k,onCancel:L,cancelText:t.userType=="1"?"不同意":"取消",okText:t.userType=="1"?"同意":"确定",cancelButtonProps:t.userType=="2"?{style:{display:"none"}}:"",centered:""},{default:u.withCtx(()=>[t.userType=="1"?(u.openBlock(),u.createElementBlock("p",vut,U[7]||(U[7]=[u.createTextVNode(" AI 功能数据使用说明"),u.createElementVNode("br",null,null,-1),u.createElementVNode("br",null,null,-1),u.createTextVNode(" 当您使用 AI 问答功能时,我们可能会调用对应系统的相关数据接口"),u.createElementVNode("br",null,null,-1),u.createElementVNode("br",null,null,-1),u.createTextVNode(" 【调用目的】:"),u.createElementVNode("br",null,null,-1),u.createElementVNode("br",null,null,-1),u.createTextVNode(" 1、提高问答准确性"),u.createElementVNode("br",null,null,-1),u.createElementVNode("br",null,null,-1),u.createTextVNode(" 2、提供更符合业务场景的智能分析"),u.createElementVNode("br",null,null,-1),u.createElementVNode("br",null,null,-1),u.createTextVNode(" 【我们承诺】:"),u.createElementVNode("br",null,null,-1),u.createElementVNode("br",null,null,-1),u.createTextVNode(" 1、数据仅在问答过程中调用,不会额外保存或对外泄露;"),u.createElementVNode("br",null,null,-1),u.createElementVNode("br",null,null,-1),u.createTextVNode(" 2、数据仅限用于提升功能效果,不作其他用途; ")]))):(u.openBlock(),u.createElementBlock("p",yut,"请联系管理员开通权限"))]),_:1},8,["open","cancelText","okText","cancelButtonProps"])])}}},[["__scopeId","data-v-ec195d94"]]),Cut={class:"import-upload"},Tut={key:0,class:"file-list"},Rut={class:"file-info"},Iut={class:"file-name"},Cpe=bt(u.defineComponent({__name:"ImportUpload",props:{templateApi:{type:Function}},emits:["fileUploaded","fileRemoved"],setup(e,{expose:t,emit:n}){const r=e,i=n,o=u.ref([]),a=u.ref(!1),s=A=>c(A)?(l(A.name)||Ct.error("请上传有效的文件类型"),!1):(Ct.error("文件大小不能超过 10MB!"),!1),l=A=>/\.(xlsx|xls)$/.test(A),c=A=>A.size/1024/1024<10,d=async A=>{try{let b=(await R$e(A)).paths[0]??"";return b=b.replace("/resfile",""),b}catch(S){throw console.error("文件上传失败:",S),new Error("文件上传失败")}},p=async A=>{if(!c(A.file)||!l(A.file.name))return f(A.file),!1;let S=[...A.fileList];if(S=S.slice(-1),S.length>0&&S[0].originFileObj){const b=S[0];b.status="uploading",o.value=S,a.value=!0;try{const v=await d(b.originFileObj);b.status="done",b.fileUrl=v,o.value=[...o.value],Ct.success(`${b.name} 文件上传成功`),i("fileUploaded",v)}catch{b.status="error",o.value=[...o.value]}finally{a.value=!1}}},f=A=>{const S=o.value.findIndex(b=>b.uid===A.uid);S>-1&&(o.value.splice(S,1),i("fileRemoved"))},g=async()=>{try{const A=await r.templateApi();window.open(A,"_blank"),Ct.success("下载成功")}catch{}};return t({clearFiles:()=>{o.value=[]},getFileUrl:()=>{if(o.value.length===0)return null;const A=o.value[0];return(A==null?void 0:A.fileUrl)||null},hasUploadedFile:()=>o.value.length>0&&o.value[0].status==="done"&&o.value[0].fileUrl}),(A,S)=>{const b=u.resolveComponent("a-upload-dragger"),v=u.resolveComponent("a-button");return u.openBlock(),u.createElementBlock("div",Cut,[u.createElementVNode("div",{class:"template-download"},[S[3]||(S[3]=u.createStaticVNode('<div class="td-icon" aria-hidden="true" data-v-98be62fc><svg width="80" height="80" viewBox="0 0 48 48" fill="none" data-v-98be62fc><path fill="#CCCCCC" d="M12 36h24c4.418 0 8-3.358 8-7.5 0-2.8-1.5-5.3-3.8-6.7 0.3-0.9 0.5-1.8 0.5-2.8 0-4.4-3.6-8-8-8-1.8 0-3.4 0.6-4.7 1.6C26.8 9.1 23.6 7 20 7c-5.5 0-10 4.5-10 10 0 1.1 0.2 2.1 0.5 3.1C7.6 21.4 6 24.3 6 27.5c0 2.2 0.9 4.2 2.4 5.7C9.6 34.4 10.7 36 12 36z" data-v-98be62fc></path><rect x="22" y="18.5" width="4" height="11" rx="2" fill="#ffffff" data-v-98be62fc></rect><polygon points="24,34 18.5,28.5 29.5,28.5" fill="#ffffff" data-v-98be62fc></polygon></svg></div>',1)),u.createElementVNode("div",{class:"td-content"},[S[1]||(S[1]=u.createElementVNode("div",{class:"td-title"},"填写导入数据信息",-1)),S[2]||(S[2]=u.createElementVNode("div",{class:"td-desc"},"请按照数据模板的格式准备导入数据,模板中的表头名称不可更改,表头行不能删除",-1)),u.createElementVNode("span",{class:"td-link",onClick:g},"下载模板")])]),u.createVNode(b,{"file-list":o.value,"onUpdate:fileList":S[0]||(S[0]=C=>o.value=C),"before-upload":s,multiple:!1,"show-upload-list":!1,accept:".xlsx,.xls",limit:"1",onChange:p},{default:u.withCtx(()=>S[4]||(S[4]=[u.createElementVNode("div",{class:"upload-area"},[u.createElementVNode("div",{class:"upload-icon"},[u.createElementVNode("svg",{width:"120",height:"100",viewBox:"0 0 48 48",fill:"none"},[u.createElementVNode("path",{fill:"#999999",d:"M12 36h24c4.418 0 8-3.358 8-7.5 0-2.8-1.5-5.3-3.8-6.7 0.3-0.9 0.5-1.8 0.5-2.8 0-4.4-3.6-8-8-8-1.8 0-3.4 0.6-4.7 1.6C26.8 9.1 23.6 7 20 7c-5.5 0-10 4.5-10 10 0 1.1 0.2 2.1 0.5 3.1C7.6 21.4 6 24.3 6 27.5c0 2.2 0.9 4.2 2.4 5.7C9.6 34.4 10.7 36 12 36z"}),u.createElementVNode("rect",{x:"22",y:"18.5",width:"4",height:"11",rx:"2",fill:"#ffffff"}),u.createElementVNode("polygon",{points:"24,14 18.5,19.5 29.5,19.5",fill:"#ffffff"})])]),u.createElementVNode("div",{class:"upload-text"},[u.createElementVNode("span",null,"将文件拖到此处,或 "),u.createElementVNode("span",{class:"upload-link"},"点击上传"),u.createElementVNode("p",null,"文件后缀名必须为xls或xlsx(即Excel格式)文件大小不得大于10M,最多支持导入3000条数据")])],-1)])),_:1},8,["file-list"]),o.value.length>0?(u.openBlock(),u.createElementBlock("div",Tut,[(u.openBlock(!0),u.createElementBlock(u.Fragment,null,u.renderList(o.value,C=>(u.openBlock(),u.createElementBlock("div",{key:C.uid,class:"file-item"},[u.createElementVNode("div",Rut,[u.createElementVNode("span",Iut,u.toDisplayString(C.name),1),u.createElementVNode("span",{class:u.normalizeClass(["file-status",C.status])},[C.status==="uploading"?(u.openBlock(),u.createElementBlock(u.Fragment,{key:0},[u.createTextVNode("上传中...")],64)):C.status==="done"?(u.openBlock(),u.createElementBlock(u.Fragment,{key:1},[u.createTextVNode("上传成功")],64)):C.status==="error"?(u.openBlock(),u.createElementBlock(u.Fragment,{key:2},[u.createTextVNode("上传失败")],64)):u.createCommentVNode("",!0)],2)]),u.createVNode(v,{type:"link",class:"delete-button",size:"small",onClick:y=>f(C)},{default:u.withCtx(()=>S[5]||(S[5]=[u.createTextVNode("删除")])),_:2},1032,["onClick"])]))),128))])):u.createCommentVNode("",!0)])}}}),[["__scopeId","data-v-98be62fc"]]),xut=async(e,t)=>Dn.get(`${Ye.VITE_GLOB_BASE_URL}/system/easy-excel/get-progress`,{params:{type:e,uuid:t}}),Out={class:"import-progress"},Nut={class:"status-section"},Dut={class:"status-icon"},wut={class:"status-message"},kut={class:"progress-section"},But={class:"progress-bar-container"},_ut={class:"progress-bar-bg"},Mut={class:"progress-text"},Tpe=bt(u.defineComponent({__name:"ImportProgress",props:{pollInterval:{default:3e3}},emits:["completed","failed"],setup(e,{expose:t,emit:n}){const r=e,i=n,o=u.ref(0),a=u.ref("processing"),s=u.ref(""),l=u.ref(""),c=u.ref(""),d=u.ref(),p=u.ref(!1),f=(y,T)=>{l.value=y,c.value=T,o.value=0,a.value="processing",s.value="正在处理中...",d.value=setInterval(()=>{h()},r.pollInterval)};let g=0,m=0;const E={error:0,success:0},h=async()=>{try{const y=await xut(l.value,c.value),T=y.total>0?Math.round((y.success+y.error)/(y.total??0)*100):0;if(o.value=Math.min(Math.max(T,0),100),y.handled){if(y.error>0&&!y.resultUrl&&g<3){g++;return}a.value=(y.error>0,"completed"),s.value=`处理完成:成功 ${y.success} 条,失败 ${y.error} 条`,o.value=100,A(),setTimeout(()=>{i("completed",y),p.value=!1},1e3)}else a.value="processing",s.value=y.total?`正在处理中:已处理 ${y.success+y.error}/${y.total} 条记录`:"正在处理中",E.error===y.error&&E.success===y.success?(m++,m>3&&(A(),a.value="failed",s.value="查询进度失败,请重试",setTimeout(()=>{i("failed",{message:"查询进度失败"}),p.value=!1},1e3),E.error=0,E.success=0)):(m=0,E.error=y.error,E.success=y.success)}catch(y){console.error("查询进度失败:",y),A(),a.value="failed",s.value="查询进度失败,请重试",setTimeout(()=>{i("failed",{message:"查询进度失败"}),p.value=!1},1e3)}},A=()=>{d.value&&(clearInterval(d.value),d.value=void 0,g=0)},S=()=>a.value==="failed"?"#ff4d4f":a.value==="completed"?"#52c41a":"#1890ff",b=()=>a.value==="failed"?"❌":a.value==="completed"?"✅":"⏳";return t({open:(y,T)=>{p.value=!0,f(y,T)},close:()=>{A(),p.value=!1}}),u.onUnmounted(()=>{A()}),(y,T)=>{const R=u.resolveComponent("a-modal");return u.openBlock(),u.createBlock(R,{open:p.value,"onUpdate:open":T[0]||(T[0]=O=>p.value=O),title:"导入进度",closable:!1,maskClosable:!1,footer:null,width:"400px"},{default:u.withCtx(()=>[u.createElementVNode("div",Out,[u.createElementVNode("div",Nut,[u.createElementVNode("div",Dut,u.toDisplayString(b()),1),u.createElementVNode("div",wut,u.toDisplayString(s.value),1)]),u.createElementVNode("div",kut,[u.createElementVNode("div",But,[u.createElementVNode("div",_ut,[u.createElementVNode("div",{class:"progress-bar-fill",style:u.normalizeStyle({width:o.value+"%",backgroundColor:S()})},null,4)]),u.createElementVNode("div",Mut,u.toDisplayString(o.value)+"%",1)])]),T[1]||(T[1]=u.createElementVNode("div",{class:"tips-section"},[u.createElementVNode("div",{class:"tips-text"},[u.createElementVNode("span",{class:"tips-icon"},"💡"),u.createElementVNode("span",null,"请耐心等待,导入过程中请勿关闭页面")])],-1))])]),_:1},8,["open"])}}}),[["__scopeId","data-v-033bdbed"]]),Fut={class:"import-result"},Lut={class:"status-section"},Put={class:"status-icon-wrapper"},Uut={class:"status-title"},Vut={class:"status-description"},Qut={key:0,class:"stats-section"},Gut={class:"stats-grid"},Kut={class:"stat-item"},Yut={class:"stat-value"},qut={class:"stat-item success"},Hut={class:"stat-value"},Jut={key:0,class:"stat-item error"},jut={class:"stat-value"},zut={class:"action-section"},Wut={key:0,class:"error-download"},Rpe=bt(u.defineComponent({__name:"ImportResult",emits:["confirm","retry"],setup(e,{expose:t,emit:n}){const r=n,i=u.ref({success:!0,successCount:0,failCount:0,totalCount:0}),o=u.ref(!1),a=()=>{o.value=!1,r("confirm")},s=u.computed(()=>i.value.success),l=u.computed(()=>i.value.failCount>0),c=u.computed(()=>{const S=i.value.resultUrl;return l.value&&S&&S.trim()!==""}),d=u.computed(()=>i.value.resultUrl||""),p=()=>s.value?"✅":"❌",f=()=>s.value?"数据导入完成":"导入失败",g=()=>s.value?l.value?`导入成功 ${i.value.successCount} 条,失败 ${i.value.failCount} 条`:`导入成功 ${i.value.successCount} 条`:i.value.message||"导入过程中发生错误,请检查数据后重试",m=()=>{const A=d.value;if(!A){console.warn("错误文件下载链接为空");return}try{window.open(A,"_blank")}catch(S){console.error("打开下载链接失败:",S),window.location.href=A}};return t({open:A=>{i.value=A,o.value=!0},close:()=>{o.value=!1}}),(A,S)=>{const b=u.resolveComponent("a-button"),v=u.resolveComponent("a-modal");return u.openBlock(),u.createBlock(v,{open:o.value,"onUpdate:open":S[0]||(S[0]=C=>o.value=C),title:"导入结果",width:"420px",okText:"知道了","cancel-button-props":{style:{display:"none"}},maskClosable:!1,onOk:a,onCancel:a},{default:u.withCtx(()=>[u.createElementVNode("div",Fut,[u.createElementVNode("div",Lut,[u.createElementVNode("div",Put,[u.createElementVNode("div",{class:u.normalizeClass(["status-icon",{success:s.value,error:!s.value}])},u.toDisplayString(p()),3)]),u.createElementVNode("div",Uut,u.toDisplayString(f()),1),u.createElementVNode("div",Vut,u.toDisplayString(g()),1)]),s.value?(u.openBlock(),u.createElementBlock("div",Qut,[u.createElementVNode("div",Gut,[u.createElementVNode("div",Kut,[u.createElementVNode("div",Yut,u.toDisplayString(i.value.totalCount),1),S[1]||(S[1]=u.createElementVNode("div",{class:"stat-label"},"总计",-1))]),u.createElementVNode("div",qut,[u.createElementVNode("div",Hut,u.toDisplayString(i.value.successCount),1),S[2]||(S[2]=u.createElementVNode("div",{class:"stat-label"},"成功",-1))]),l.value?(u.openBlock(),u.createElementBlock("div",Jut,[u.createElementVNode("div",jut,u.toDisplayString(i.value.failCount),1),S[3]||(S[3]=u.createElementVNode("div",{class:"stat-label"},"失败",-1))])):u.createCommentVNode("",!0)])])):u.createCommentVNode("",!0),u.createElementVNode("div",zut,[c.value?(u.openBlock(),u.createElementBlock("div",Wut,[u.createVNode(b,{type:"primary",ghost:"",onClick:m},{default:u.withCtx(()=>S[4]||(S[4]=[u.createTextVNode(" 下载错误文件 ")])),_:1})])):u.createCommentVNode("",!0)])])]),_:1},8,["open"])}}}),[["__scopeId","data-v-594eb9ba"]]),D6=bt(u.defineComponent({__name:"BaseImport",props:{otherParams:{},type:{},templateApi:{type:Function},importApi:{type:Function},downloadErrorApi:{type:Function},title:{},projectId:{},buildingId:{}},emits:["success","cancel"],setup(e,{expose:t,emit:n}){const r={NO_FILE_SELECTED:"请选择文件并等待上传完成",FILE_UPLOAD_FAILED:"文件上传失败,请重新选择文件",IMPORT_FAILED:"导入失败,请检查文件",IMPORT_ERROR:"导入过程中发生错误"},i=e,o=n,a=u.ref(),s=u.ref(),l=u.ref(),c=u.ref(null),d=u.ref(""),p=u.ref(!1),f=u.ref(!1),g=u.ref(!1),m=u.ref(!1),E=async()=>{var D,k;if(!(m.value||g.value))try{if(m.value=!0,f.value=!0,!((D=a.value)!=null&&D.hasUploadedFile())){Ct.warning(r.NO_FILE_SELECTED);return}const L=(k=a.value)==null?void 0:k.getFileUrl();if(!L){Ct.warning(r.FILE_UPLOAD_FAILED);return}await S(L)}catch(L){console.error("Modal确认处理失败:",L),Ct.error(r.IMPORT_ERROR)}finally{m.value=!1,f.value=!1}},h=()=>{var D;try{(D=a.value)==null||D.clearFiles(),c.value=null,o("cancel"),p.value=!1}catch(k){console.error("Modal取消处理失败:",k)}},A=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(D){const k=Math.random()*16|0;return(D==="x"?k:k&3|8).toString(16)}),S=async D=>{var k;try{g.value=!0,d.value=A();const L={filePath:D,uuid:d.value,type:i.type,...i.otherParams};await i.importApi(L)?(p.value=!1,(k=s.value)==null||k.open(i.type,d.value)):m.value=!1}catch(L){console.error("导入流程启动失败:",L),m.value=!1}finally{g.value=!1}},b=D=>{c.value=D},v=()=>{c.value=null},C=D=>{var k;try{T();const L=D.success||0,M=D.error||0,F=D.total||0,U={success:!0,successCount:L,failCount:M,totalCount:F,resultUrl:D.resultUrl||"",errorFileUrl:D.resultUrl||"",message:`导入完成:成功 ${L} 条,失败 ${M} 条`};m.value=!1,(k=l.value)==null||k.open(U)}catch(L){console.error("处理导入完成事件失败:",L),y({message:r.IMPORT_ERROR})}},y=D=>{var k;try{T();const L={success:!1,successCount:0,failCount:0,totalCount:0,message:D.message||r.IMPORT_ERROR};m.value=!1,(k=l.value)==null||k.open(L)}catch(L){console.error("处理导入失败事件失败:",L),Ct.error(r.IMPORT_ERROR),m.value=!1}},T=()=>{var D;try{(D=s.value)==null||D.close()}catch(k){console.error("清理进度监控资源失败:",k)}},R=()=>{var D;try{(D=a.value)==null||D.clearFiles(),c.value=null,d.value="",m.value=!1,g.value=!1,f.value=!1,o("success")}catch(k){console.error("处理结果确认失败:",k),m.value=!1,g.value=!1,f.value=!1}},O=()=>{try{m.value=!1,g.value=!1,f.value=!1,p.value=!0}catch(D){console.error("处理重试失败:",D),m.value=!1,g.value=!1,f.value=!1}};return t({open:()=>{var D;try{T(),(D=a.value)==null||D.clearFiles(),c.value=null,d.value="",m.value=!1,g.value=!1,f.value=!1,p.value=!0}catch(k){console.error("打开导入组件失败:",k),m.value=!1,g.value=!1,f.value=!1}},close:()=>{var D,k;try{T(),p.value=!1,(D=l.value)==null||D.close(),m.value=!1,g.value=!1,f.value=!1,c.value=null,d.value="",(k=a.value)==null||k.clearFiles()}catch(L){console.error("关闭导入组件失败:",L),m.value=!1,g.value=!1,f.value=!1}}}),(D,k)=>{const L=u.resolveComponent("a-modal");return u.openBlock(),u.createElementBlock(u.Fragment,null,[u.createVNode(L,{open:p.value,"onUpdate:open":k[0]||(k[0]=M=>p.value=M),title:i.title,"confirm-loading":f.value,okText:"确认",cancelText:"取消",maskClosable:!1,onOk:E,onCancel:h,width:"35%"},{default:u.withCtx(()=>[u.createVNode(Cpe,{ref_key:"uploadRef",ref:a,"template-api":i.templateApi,onFileUploaded:b,onFileRemoved:v},null,8,["template-api"])]),_:1},8,["open","title","confirm-loading"]),u.createVNode(Tpe,{ref_key:"progressRef",ref:s,onCompleted:C,onFailed:y},null,512),u.createVNode(Rpe,{ref_key:"resultRef",ref:l,onConfirm:R,onRetry:O},null,512)],64)}}}),[["__scopeId","data-v-6b6b4c1b"]]),Zut={class:"import-example"},Xut={class:"example-content"},$ut=bt(u.defineComponent({__name:"BaseImportExample",setup(e){const t=u.ref(),n=async()=>"https://example.com/template.xlsx",r=async s=>(console.log("启动导入处理:",s),{data:(await(await fetch("/api/import/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)})).json()).success}),i=()=>{console.log("导入成功")},o=()=>{console.log("导入取消")},a=()=>{var s;(s=t.value)==null||s.open()};return(s,l)=>{const c=u.resolveComponent("a-button");return u.openBlock(),u.createElementBlock("div",Zut,[l[3]||(l[3]=u.createElementVNode("h2",null,"标准化文件导入组件使用示例",-1)),u.createElementVNode("div",Xut,[l[1]||(l[1]=u.createElementVNode("p",null,"这是一个展示如何使用StandardImport组件的示例",-1)),u.createVNode(c,{type:"primary",onClick:a},{default:u.withCtx(()=>l[0]||(l[0]=[u.createTextVNode(" 打开导入弹窗 ")])),_:1}),l[2]||(l[2]=u.createStaticVNode('<div class="usage-info" data-v-723639ae><h3 data-v-723639ae>使用说明:</h3><ul data-v-723639ae><li data-v-723639ae>1. 点击&quot;打开导入弹窗&quot;按钮</li><li data-v-723639ae>2. 下载模板文件(可选)</li><li data-v-723639ae>3. 选择要导入的文件并自动上传</li><li data-v-723639ae>4. 系统自动开始处理并显示进度</li><li data-v-723639ae>5. 实时查看处理进度</li><li data-v-723639ae>6. 查看最终处理结果</li></ul><h3 data-v-723639ae>标准化流程特点:</h3><ul data-v-723639ae><li data-v-723639ae>✅ 三阶段标准流程:上传 → 进度 → 结果</li><li data-v-723639ae>✅ 使用标准轮询接口 /system/easy-excel/get-progress</li><li data-v-723639ae>✅ 组件内部自动生成和管理UUID</li><li data-v-723639ae>✅ 完善的错误处理和重试机制</li><li data-v-723639ae>✅ 支持错误结果文件下载</li></ul></div>',1))]),u.createVNode(u.unref(D6),{ref_key:"importRef",ref:t,type:"customer","template-api":n,"import-api":r,title:"数据导入",onSuccess:i,onCancel:o},null,512)])}}}),[["__scopeId","data-v-723639ae"]]),Ipe={ApiSelect:w6,BaseUpload:Md,UploadImage:Rse,UploadFile:Tse,DetailItem:Lse,DetailRow:Pse,EmployeeStatus:NP,SexStatus:Vse,PositionStatus:Use,BaseUserSelect:Yse,TableUserSelect:Hse,SelectUserDialog:uR,UserTag:cR,SandEditor:Ase,SandEditorV2:bse,SelectAddress:yse,EnterpriseSearch:w7,ChangeRecord:Bse,FollowUpRecord:Fse,UserCard:DP,BtnAi:Spe,ChatBot:ype,AITextarea:wse,AIInput:kse,UploadImageV2:xse,UploadImageV3:Ose,UploadFileV2:Nse,TagSelect:qse,UploadFileV3:Dse,BaseImport:D6},edt={install:e=>{Object.entries(Ipe).forEach(([t,n])=>{e.component(t,n)})}},tdt=e=>YRe(e);Fe.AIInput=kse,Fe.AITextarea=wse,Fe.ApiSelect=w6,Fe.BaseImport=D6,Fe.BaseImportExample=$ut,Fe.BaseUpload=Md,Fe.BaseUserSelect=Yse,Fe.BtnAi=Spe,Fe.BusinessUserSelect=Kse,Fe.ChangeRecord=Bse,Fe.ChatBot=ype,Fe.DeptTree=Gse,Fe.DetailItem=Lse,Fe.DetailRow=Pse,Fe.EmployeeStatus=NP,Fe.EnterpriseSearch=w7,Fe.FollowUpRecord=Fse,Fe.ImportProgress=Tpe,Fe.ImportResult=Rpe,Fe.ImportUpload=Cpe,Fe.PositionStatus=Use,Fe.SandEditor=Ase,Fe.SandEditorV2=bse,Fe.SelectAddress=yse,Fe.SelectUserDialog=uR,Fe.SexStatus=Vse,Fe.TableUserSelect=Hse,Fe.TagSelect=qse,Fe.TreeOrg=Itt,Fe.UploadFile=Tse,Fe.UploadFileV2=Nse,Fe.UploadFileV3=Dse,Fe.UploadImage=Rse,Fe.UploadImageV2=xse,Fe.UploadImageV3=Ose,Fe.UserCard=DP,Fe.UserTag=cR,Fe.components=Ipe,Fe.default=edt,Fe.filePreview=aR,Fe.sandInit=tdt,Object.defineProperties(Fe,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});