2 lines
8.4 KiB
JavaScript
2 lines
8.4 KiB
JavaScript
import{g as a,e,f as l,c as t,w as o,i as s,o as n,a as c,n as u,u as d,b as r,p as i,q as m,F as f,t as p,x as g,B as _,j as h,E as b,G as v,H as $,s as w,l as x,d as k,S as y,I as C,C as D,J as S,K as V,L as U,N}from"./index-CPzZ0wy_.js";import{_ as I}from"./ic_back.BKIFUCMS.js";import{o as R}from"./uni-app.es.CdmqpGGi.js";import{c as j}from"./trunk.Cy1l3Qkm.js";import{a as T,g as M,u as A}from"./watermark.BmlaikmI.js";import{_ as F}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./api.WAttHfYM.js";const H=F({__name:"index",setup(F){const H=a().statusBarHeight||0,G=e([]),E=e(""),L=e(!1),O=e(100),P=e(100),q=N(),z=l({faultTime:"",personnel:"",faultReason:"",mileage:"",mileageCorrection:"",cableName:"",latitude:0,longitude:0,remark:""});function B(){h()}function J(){b({count:1,sourceType:["camera"],success(a){const e=a.tempFilePaths[0];if(G.value.push(e),1===G.value.length){const a=new Date,e=a.getFullYear(),l=String(a.getMonth()+1).padStart(2,"0"),t=String(a.getDate()).padStart(2,"0"),o=String(a.getHours()).padStart(2,"0"),s=String(a.getMinutes()).padStart(2,"0");z.faultTime=`${e}/${l}/${t} ${o}:${s}`}}})}function K(){v({title:"定位中...",mask:!0}),window.AMap?AMap.plugin("AMap.Geolocation",(()=>{new AMap.Geolocation({enableHighAccuracy:!0,timeout:1e4}).getCurrentPosition(((a,e)=>{$(),"complete"===a&&e.position?(z.longitude=e.position.lng,z.latitude=e.position.lat,w({title:"获取成功",icon:"success"})):(console.error("[GPS-H5] 高德定位失败:",e),w({title:"获取位置失败,请检查浏览器定位权限",icon:"none"}))}))})):($(),w({title:"地图SDK加载失败",icon:"none"}))}async function Y(){if(0!==G.value.length)if(E.value){if(!L.value){L.value=!0,v({title:"处理图片中...",mask:!0});try{const e=Date.now();console.log("[fault-add] ====== 开始提交流程 ======"),console.log(`[fault-add] 照片数量: ${G.value.length}`),console.log("[fault-add] [步骤1] 开始水印处理...");const l=[`${z.faultTime} ${z.personnel}`,`故障原因:${z.faultReason||""}`,`经度:${z.longitude} 纬度:${z.latitude}`],t=[];for(let d=0;d<G.value.length;d++){const e=G.value[d],o=Date.now();try{const a=await T(e,l,{canvasId:"watermarkCanvas",proxy:q.proxy,setSize(a,e){O.value=a,P.value=e}});t.push(a),console.log(`[fault-add] [步骤1] 第${d+1}张水印完成, 耗时${Date.now()-o}ms`),await V()}catch(a){console.warn(`[fault-add] [步骤1] 第${d+1}张水印失败, 使用原图, err:`,a),t.push(e)}}console.log(`[fault-add] [步骤1] 水印处理全部完成, 总耗时${Date.now()-e}ms`),console.log(`[fault-add] [步骤2] 请求COS预签名URL, count=${t.length}...`),v({title:"准备上传...",mask:!0});const o=Date.now(),s=await M(t.length,".jpg");console.log(`[fault-add] [步骤2] 预签名URL获取成功, 耗时${Date.now()-o}ms, 数量:${s.length}`),console.log("[fault-add] [步骤3] 开始上传图片到COS...");const n=[];for(let a=0;a<t.length;a++){v({title:`上传图片 ${a+1}/${t.length}`,mask:!0});const e=Date.now();console.log(`[fault-add] [步骤3] 第${a+1}张开始上传, presignUrl: ${s[a].presignUrl.substring(0,80)}...`),await A(s[a].presignUrl,t[a]),console.log(`[fault-add] [步骤3] 第${a+1}张上传成功, 耗时${Date.now()-e}ms`),n.push(s[a].accessUrl)}console.log(`[fault-add] [步骤3] 全部图片上传完成, 总耗时${Date.now()-e}ms`),console.log("[fault-add] [步骤4] 提交故障表单..."),v({title:"提交中...",mask:!0});const c=Date.now(),u=await j({cableId:Number(E.value),faultTime:z.faultTime,personnel:z.personnel,faultReason:z.faultReason,mileage:z.mileage,mileageCorrection:z.mileageCorrection,latitude:Number(z.latitude),longitude:Number(z.longitude),remark:z.remark,imageUrls:n});console.log(`[fault-add] [步骤4] 表单提交返回, 耗时${Date.now()-c}ms, code:${u.code}, msg:${u.msg}`),200===u.code?(console.log(`[fault-add] ====== 提交成功, 总耗时${Date.now()-e}ms ======`),w({title:"提交成功",icon:"success"}),setTimeout((()=>{U({url:"/pages/fault-list/index?cableId="+E.value+"&cableName="+encodeURIComponent(z.cableName)})}),1500)):(console.warn(`[fault-add] 业务失败: code=${u.code}, msg=${u.msg}`),w({title:u.msg||"提交失败",icon:"none"}))}catch(a){console.error(`[fault-add] ====== 提交异常, 总耗时${Date.now()-t0}ms ======`),console.error("[fault-add] 错误详情:",JSON.stringify(a)),w({title:a.message||"网络异常,请重试",icon:"none"})}finally{$(),L.value=!1}}}else w({title:"所属光缆信息缺失,无法提交",icon:"none"});else w({title:"请至少拍摄一张照片",icon:"none"})}return R((a=>{a.cableId&&(E.value=a.cableId),a.cableName&&(z.cableName=decodeURIComponent(a.cableName))})),(a,e)=>{const l=x,h=k,b=s,v=y,$=C,w=D,V=S;return n(),t(b,{class:"fault-add-page"},{default:o((()=>[c(b,{class:"content"},{default:o((()=>[c(b,{class:"nav-bar",style:u({paddingTop:d(H)+"px"})},{default:o((()=>[c(b,{class:"nav-bar-inner"},{default:o((()=>[c(l,{class:"nav-icon",src:I,mode:"aspectFit",onClick:B}),c(h,{class:"nav-title"},{default:o((()=>[r("新增故障")])),_:1}),c(b,{class:"nav-icon-placeholder"})])),_:1})])),_:1},8,["style"]),c(b,{class:"photo-area"},{default:o((()=>[c(v,{class:"photo-scroll","scroll-x":""},{default:o((()=>[c(b,{class:"photo-list"},{default:o((()=>[c(b,{class:"photo-add-btn",onClick:J},{default:o((()=>[c(h,{class:"plus-icon"},{default:o((()=>[r("+")])),_:1}),c(h,{class:"add-text"},{default:o((()=>[r("点击拍摄")])),_:1})])),_:1}),(n(!0),i(f,null,m(G.value,((a,e)=>(n(),t(l,{class:"photo-thumb",key:e,src:a,mode:"aspectFill"},null,8,["src"])))),128))])),_:1})])),_:1})])),_:1}),c(b,{class:"form-area"},{default:o((()=>[c(b,{class:"form-group"},{default:o((()=>[c(h,{class:"form-label"},{default:o((()=>[r("故障时间")])),_:1}),c(b,{class:"form-display"},{default:o((()=>[c(h,{class:"display-text"},{default:o((()=>[r(p(z.faultTime||"拍摄第一张照片后自动填充"),1)])),_:1})])),_:1})])),_:1}),c(b,{class:"form-group"},{default:o((()=>[c(h,{class:"form-label"},{default:o((()=>[r("人员")])),_:1}),c($,{class:"form-input",modelValue:z.personnel,"onUpdate:modelValue":e[0]||(e[0]=a=>z.personnel=a),placeholder:"请输入","placeholder-class":"input-placeholder"},null,8,["modelValue"])])),_:1}),c(b,{class:"form-group"},{default:o((()=>[c(h,{class:"form-label"},{default:o((()=>[r("故障原因")])),_:1}),c($,{class:"form-input",modelValue:z.faultReason,"onUpdate:modelValue":e[1]||(e[1]=a=>z.faultReason=a),placeholder:"请输入","placeholder-class":"input-placeholder"},null,8,["modelValue"])])),_:1}),c(b,{class:"form-group"},{default:o((()=>[c(h,{class:"form-label"},{default:o((()=>[r("表显故障里程")])),_:1}),c($,{class:"form-input",modelValue:z.mileage,"onUpdate:modelValue":e[2]||(e[2]=a=>z.mileage=a),placeholder:"请输入","placeholder-class":"input-placeholder"},null,8,["modelValue"])])),_:1}),c(b,{class:"form-group"},{default:o((()=>[c(h,{class:"form-label"},{default:o((()=>[r("表显里程矫正")])),_:1}),c($,{class:"form-input",modelValue:z.mileageCorrection,"onUpdate:modelValue":e[3]||(e[3]=a=>z.mileageCorrection=a),placeholder:"选填","placeholder-class":"input-placeholder"},null,8,["modelValue"])])),_:1}),c(b,{class:"form-group"},{default:o((()=>[c(h,{class:"form-label"},{default:o((()=>[r("所属光缆")])),_:1}),c(b,{class:"form-display"},{default:o((()=>[c(h,{class:"display-text"},{default:o((()=>[r(p(z.cableName),1)])),_:1})])),_:1})])),_:1}),c(b,{class:"form-group"},{default:o((()=>[c(h,{class:"form-label"},{default:o((()=>[r("地点")])),_:1}),c(b,{class:"location-btn",onClick:K},{default:o((()=>[c(h,{class:"location-btn-text"},{default:o((()=>[r("点击获取当前经纬度")])),_:1})])),_:1}),c(h,{class:"location-text"},{default:o((()=>[r("当前经度:"+p(z.longitude)+" 当前纬度:"+p(z.latitude),1)])),_:1})])),_:1}),c(b,{class:"form-group"},{default:o((()=>[c(h,{class:"form-label"},{default:o((()=>[r("备注")])),_:1}),c(w,{class:"form-textarea",modelValue:z.remark,"onUpdate:modelValue":e[4]||(e[4]=a=>z.remark=a),placeholder:"请输入","placeholder-class":"input-placeholder"},null,8,["modelValue"])])),_:1})])),_:1})])),_:1}),c(b,{class:"bottom-bar"},{default:o((()=>[c(b,{class:g(["submit-btn",{"submit-btn-disabled":L.value}]),onClick:_(Y,["stop"])},{default:o((()=>[c(h,{class:"submit-btn-text"},{default:o((()=>[r(p(L.value?"提交中...":"提交故障"),1)])),_:1})])),_:1},8,["class"])])),_:1}),c(V,{"canvas-id":"watermarkCanvas",style:u({position:"fixed",left:"0px",top:"0px",width:O.value+"px",height:P.value+"px",opacity:0,pointerEvents:"none",zIndex:-1})},null,8,["style"])])),_:1})}}},[["__scopeId","data-v-ac9fac27"]]);export{H as default};
|