2 lines
8.3 KiB
JavaScript
2 lines
8.3 KiB
JavaScript
import{g as e,e as a,f as l,c as t,w as s,i as o,o as n,a as r,n as c,u as i,b as u,q as d,v as f,F as m,t as p,y as g,m as h,j as _,E as b,G as w,H as y,s as x,l as v,d as k,S as C,I as S,C as T,J as V,K as $,L as U}from"./index-BdaFlYHp.js";import{_ as j}from"./ic_back.BKIFUCMS.js";import{o as R}from"./uni-app.es.WWKfztdS.js";import{c as I}from"./trunk.CaiWAhmx.js";import{p as M}from"./api.C9gaKYwb.js";import{_ as F}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./index.Dn422CqY.js";function N(e,a){return new Promise(((l,t)=>{(async function(e,a){let l;if(a.startsWith("data:")){const e=await fetch(a);l=await e.blob()}else{const e=await fetch(a);l=await e.blob()}const t=await fetch(e,{method:"PUT",headers:{"Content-Type":"image/jpeg"},body:l});if(!t.ok)throw new Error(`COS上传失败: ${t.status}`)})(e,a).then(l).catch(t)}))}function E(e,a,l){return"string"==typeof a&&(a=[a]),new Promise((l=>{const t=setTimeout((()=>{console.warn("[watermark] timeout"),l(e)}),1e4);(function(e,a,l){return function(e,a){return new Promise(((l,t)=>{const s=new Image;s.crossOrigin="anonymous",s.onload=()=>{try{const e=s.naturalWidth,t=s.naturalHeight,o=document.createElement("canvas");o.width=e,o.height=t;const n=o.getContext("2d");n.drawImage(s,0,0,e,t),function(e,a,l,t,s){const o=Math.max(Math.floor(.03*a),14),n=Math.floor(.8*o),r=o+n,c=r*t.length+n;s?(e.setFillStyle("rgba(0,0,0,0.4)"),e.fillRect(0,l-c,a,c),e.setFillStyle("#ffffff"),e.setFontSize(o),t.forEach(((a,t)=>{e.fillText(a,n,l-c+n+r*t)}))):(e.fillStyle="rgba(0,0,0,0.4)",e.fillRect(0,l-c,a,c),e.fillStyle="#ffffff",e.font=`${o}px sans-serif`,e.textBaseline="middle",t.forEach(((a,t)=>{e.fillText(a,n,l-c+n/2+r*t+o/2)})))}(n,e,t,a,!1),l(o.toDataURL("image/jpeg",.9))}catch(e){t(e)}},s.onerror=t,s.src=e}))}(e,a)})(e,a).then((a=>{clearTimeout(t),l(a||e)})).catch((a=>{clearTimeout(t),console.warn("[watermark]",a),l(e)}))}))}const P=F({__name:"index",setup(F){const P=e().statusBarHeight||0,H=a([]),A=a(""),D=a(!1),G=a(100),z=a(100),q=U(),B=l({faultTime:"",personnel:"",faultReason:"",mileage:"",mileageCorrection:"",cableName:"",latitude:0,longitude:0,remark:""});function K(){_()}function L(){b({count:1,sourceType:["camera"],success(e){const a=e.tempFilePaths[0];if(H.value.push(a),1===H.value.length){const e=new Date,a=e.getFullYear(),l=String(e.getMonth()+1).padStart(2,"0"),t=String(e.getDate()).padStart(2,"0"),s=String(e.getHours()).padStart(2,"0"),o=String(e.getMinutes()).padStart(2,"0");B.faultTime=`${a}/${l}/${t} ${s}:${o}`}}})}function O(){w({title:"定位中...",mask:!0}),window.AMap?AMap.plugin("AMap.Geolocation",(()=>{new AMap.Geolocation({enableHighAccuracy:!0,timeout:1e4}).getCurrentPosition(((e,a)=>{y(),"complete"===e&&a.position?(B.longitude=a.position.lng,B.latitude=a.position.lat,x({title:"获取成功",icon:"success"})):(console.error("[GPS-H5] 高德定位失败:",a),x({title:"获取位置失败,请检查浏览器定位权限",icon:"none"}))}))})):(y(),x({title:"地图SDK加载失败",icon:"none"}))}async function W(){if(0!==H.value.length)if(A.value){if(!D.value){D.value=!0,w({title:"处理图片中...",mask:!0});try{const a=[`${B.faultTime} ${B.personnel}`,`故障原因:${B.faultReason||""}`,`经度:${B.longitude} 纬度:${B.latitude}`],l=[];for(const n of H.value)try{const e=await E(n,a,q.proxy);l.push(e),await $()}catch(e){l.push(n)}w({title:"准备上传...",mask:!0});const t=await async function(e,a=".jpg"){const l=await M("/business/CosUpload/presignUrl",{count:e,ext:a});if(200!==l.code)throw new Error(l.msg||"获取上传地址失败");return l.data}(l.length,".jpg"),s=[];for(let e=0;e<l.length;e++)w({title:`上传图片 ${e+1}/${l.length}`,mask:!0}),await N(t[e].presignUrl,l[e]),s.push(t[e].accessUrl);w({title:"提交中...",mask:!0});const o=await I({cableId:Number(A.value),faultTime:B.faultTime,personnel:B.personnel,faultReason:B.faultReason,mileage:B.mileage,mileageCorrection:B.mileageCorrection,latitude:Number(B.latitude),longitude:Number(B.longitude),remark:B.remark,imageUrls:s});200===o.code?(x({title:"提交成功",icon:"success"}),setTimeout((()=>{_()}),1500)):x({title:o.msg||"提交失败",icon:"none"})}catch(e){console.error("[fault-add] 提交失败:",e),x({title:e.message||"网络异常,请重试",icon:"none"})}finally{y(),D.value=!1}}}else x({title:"所属光缆信息缺失,无法提交",icon:"none"});else x({title:"请至少拍摄一张照片",icon:"none"})}return R((e=>{e.cableId&&(A.value=e.cableId),e.cableName&&(B.cableName=decodeURIComponent(e.cableName))})),(e,a)=>{const l=v,_=k,b=o,w=C,y=S,x=T,$=V;return n(),t(b,{class:"fault-add-page"},{default:s((()=>[r(b,{class:"content"},{default:s((()=>[r(b,{class:"nav-bar",style:c({paddingTop:i(P)+"px"})},{default:s((()=>[r(b,{class:"nav-bar-inner"},{default:s((()=>[r(l,{class:"nav-icon",src:j,mode:"aspectFit",onClick:K}),r(_,{class:"nav-title"},{default:s((()=>[u("新增故障")])),_:1}),r(b,{class:"nav-icon-placeholder"})])),_:1})])),_:1},8,["style"]),r(b,{class:"photo-area"},{default:s((()=>[r(w,{class:"photo-scroll","scroll-x":""},{default:s((()=>[r(b,{class:"photo-list"},{default:s((()=>[r(b,{class:"photo-add-btn",onClick:L},{default:s((()=>[r(_,{class:"plus-icon"},{default:s((()=>[u("+")])),_:1}),r(_,{class:"add-text"},{default:s((()=>[u("点击拍摄")])),_:1})])),_:1}),(n(!0),d(m,null,f(H.value,((e,a)=>(n(),t(l,{class:"photo-thumb",key:a,src:e,mode:"aspectFill"},null,8,["src"])))),128))])),_:1})])),_:1})])),_:1}),r(b,{class:"form-area"},{default:s((()=>[r(b,{class:"form-group"},{default:s((()=>[r(_,{class:"form-label"},{default:s((()=>[u("故障时间")])),_:1}),r(b,{class:"form-display"},{default:s((()=>[r(_,{class:"display-text"},{default:s((()=>[u(p(B.faultTime||"拍摄第一张照片后自动填充"),1)])),_:1})])),_:1})])),_:1}),r(b,{class:"form-group"},{default:s((()=>[r(_,{class:"form-label"},{default:s((()=>[u("人员")])),_:1}),r(y,{class:"form-input",modelValue:B.personnel,"onUpdate:modelValue":a[0]||(a[0]=e=>B.personnel=e),placeholder:"请输入","placeholder-class":"input-placeholder"},null,8,["modelValue"])])),_:1}),r(b,{class:"form-group"},{default:s((()=>[r(_,{class:"form-label"},{default:s((()=>[u("故障原因")])),_:1}),r(y,{class:"form-input",modelValue:B.faultReason,"onUpdate:modelValue":a[1]||(a[1]=e=>B.faultReason=e),placeholder:"请输入","placeholder-class":"input-placeholder"},null,8,["modelValue"])])),_:1}),r(b,{class:"form-group"},{default:s((()=>[r(_,{class:"form-label"},{default:s((()=>[u("表显故障里程")])),_:1}),r(y,{class:"form-input",modelValue:B.mileage,"onUpdate:modelValue":a[2]||(a[2]=e=>B.mileage=e),placeholder:"请输入","placeholder-class":"input-placeholder"},null,8,["modelValue"])])),_:1}),r(b,{class:"form-group"},{default:s((()=>[r(_,{class:"form-label"},{default:s((()=>[u("表显里程矫正")])),_:1}),r(y,{class:"form-input",modelValue:B.mileageCorrection,"onUpdate:modelValue":a[3]||(a[3]=e=>B.mileageCorrection=e),placeholder:"选填","placeholder-class":"input-placeholder"},null,8,["modelValue"])])),_:1}),r(b,{class:"form-group"},{default:s((()=>[r(_,{class:"form-label"},{default:s((()=>[u("所属光缆")])),_:1}),r(b,{class:"form-display"},{default:s((()=>[r(_,{class:"display-text"},{default:s((()=>[u(p(B.cableName),1)])),_:1})])),_:1})])),_:1}),r(b,{class:"form-group"},{default:s((()=>[r(_,{class:"form-label"},{default:s((()=>[u("地点")])),_:1}),r(b,{class:"location-btn",onClick:O},{default:s((()=>[r(_,{class:"location-btn-text"},{default:s((()=>[u("点击获取当前经纬度")])),_:1})])),_:1}),r(_,{class:"location-text"},{default:s((()=>[u("当前经度:"+p(B.longitude)+" 当前纬度:"+p(B.latitude),1)])),_:1})])),_:1}),r(b,{class:"form-group"},{default:s((()=>[r(_,{class:"form-label"},{default:s((()=>[u("备注")])),_:1}),r(x,{class:"form-textarea",modelValue:B.remark,"onUpdate:modelValue":a[4]||(a[4]=e=>B.remark=e),placeholder:"请输入","placeholder-class":"input-placeholder"},null,8,["modelValue"])])),_:1})])),_:1})])),_:1}),r(b,{class:"bottom-bar"},{default:s((()=>[r(b,{class:g(["submit-btn",{"submit-btn-disabled":D.value}]),onClick:h(W,["stop"])},{default:s((()=>[r(_,{class:"submit-btn-text"},{default:s((()=>[u(p(D.value?"提交中...":"提交故障"),1)])),_:1})])),_:1},8,["class"])])),_:1}),r($,{"canvas-id":"watermarkCanvas",style:c({position:"fixed",left:"0px",top:"0px",width:G.value+"px",height:z.value+"px",opacity:0,pointerEvents:"none",zIndex:-1})},null,8,["style"])])),_:1})}}},[["__scopeId","data-v-5f6ad8ba"]]);export{P as default};
|