2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
"use strict";const e=require("../../common/vendor.js"),a=require("../../request/api.js"),t=require("../../request/three_one_api/area.js"),o=require("../../utils/upload.js"),l=require("./hazardForm.js");if(!Array){(e.resolveComponent("up-upload")+e.resolveComponent("up-input")+e.resolveComponent("up-textarea")+e.resolveComponent("u-popup"))()}Math||((()=>"../../uni_modules/uview-plus/components/u-upload/u-upload.js")+(()=>"../../uni_modules/uview-plus/components/u-input/u-input.js")+(()=>"../../uni_modules/uview-plus/components/u-textarea/u-textarea.js")+(()=>"../../uni_modules/uview-plus/components/u-popup/u-popup.js"))();const n={__name:"HazardFormPanel",props:{pageMode:{type:Boolean,default:!1},show:{type:Boolean,default:!1},title:{type:String,default:"填写隐患信息"},mode:{type:String,default:"collect"},modelValue:{type:Object,default:null},extraParams:{type:Object,default:()=>({})},showDraftBanner:{type:Boolean,default:!1},bodyHeight:{type:String,default:""},canvasId:{type:String,default:"hazardFormWatermarkCanvas"}},emits:["update:show","update:modelValue","success","confirm","clear-draft","close","draft-change"],setup(n,{expose:u,emit:r}){const d=n,i=r,c=e.computed({get:()=>!!d.pageMode||d.show,set:e=>{d.pageMode||i("update:show",e)}}),s=e=>0===Number(null==e?void 0:e.code)||200===Number(null==e?void 0:e.code),v=e.computed((()=>d.bodyHeight?{height:d.bodyHeight}:d.pageMode?{maxHeight:"none"}:{})),f=e.ref(300),p=e.ref(300),g=e.ref(!1),m=e.ref(!1),h=e.ref(!1),y=e.reactive({title:"",level:0,source:0,hazardSourceCode:null,hazardSourceName:"",description:"",tagIndex:0,tagId:null,regulationId:null,regulationName:""}),x=e.ref(""),I=e.ref(0),w=e.ref(0),S=e.ref(""),z=e.ref(""),N=e.ref([]),b=e.ref([]),L=e.ref(!1),M=e.ref(""),C=e.ref(null),T=e.ref(""),_=e.ref([]),j=e.ref(!1),V=e.ref(1),D=e.ref(10),H=e.ref(!0),A=e.ref(!1),P=e.ref([]),k=e.ref(null),B=e.ref(!1),O=e.ref([]),q=e.ref(""),E=e.ref(!1),F=e.ref(!1),R=e.ref(0),U=e.getCurrentInstance(),{afterRead:$,deletePic:W}=o.createUploadListHandlers(N,{watermark:{canvasId:d.canvasId,canvasWidthRef:f,canvasHeightRef:p,instance:U}});function K(){return te(),{formData:{title:y.title,level:y.level,source:y.source,hazardSourceCode:y.hazardSourceCode,hazardSourceName:y.hazardSourceName,description:y.description,tagIndex:y.tagIndex,tagId:y.tagId,regulationId:y.regulationId,regulationName:y.regulationName},address:x.value,lng:I.value,lat:w.value,areaId:S.value,areaName:z.value,fileList:N.value,tagOptions:b.value}}function G(e){if(!e)return;h.value=!0;const a=e.formData||{};y.title=a.title||"",y.level=a.level??0,y.source=a.source??0,y.hazardSourceCode=a.hazardSourceCode??null,y.hazardSourceName=a.hazardSourceName||"",pe(),y.description=a.description||"",y.tagIndex=a.tagIndex??0,y.tagId=a.tagId??null,y.regulationId=a.regulationId??null,y.regulationName=a.regulationName||"",x.value=e.address||"",I.value=e.lng||0,w.value=e.lat||0,S.value=e.areaId||"",z.value=e.areaName||"",N.value=e.fileList?[...e.fileList]:[],C.value=a.regulationId??null,T.value=a.regulationName||"",h.value=!1,R.value++}function J(e){if(!e)return!1;const a=e.formData||{},t=e.fileList||[];return!!(a.title||a.description||a.regulationName||e.address||t.length>0)}function Q(){var e;return(null==(e=d.extraParams)?void 0:e.locationDraftKey)||"hazard_form_location_picker_draft"}function X(){try{const a=e.index.getStorageSync(Q());return a&&"object"==typeof a?a:null}catch(a){return null}}function Y(){try{e.index.removeStorageSync(Q())}catch(a){console.error("清除选点草稿失败:",a)}}function Z(e={}){const a=X();return!!a&&(G({...a,...e,formData:{...a.formData||{},...e.formData||{}},fileList:e.fileList??a.fileList??[]}),Y(),!0)}function ee(){e.nextTick$1((()=>{E.value=!1,d.pageMode||(c.value=!0),le()}))}function ae(){G(l.createEmptyHazardPayload()),C.value=null,T.value="",q.value="",Y()}function te(){const e=b.value[y.tagIndex];y.tagId=(null==e?void 0:e.id)??y.tagId??null}function oe(e,a){y[e]=Number(a),"tagIndex"===e&&te(),le()}function le(){F.value||h.value||(d.pageMode&&"direct"===d.mode?i("draft-change",K()):null!==d.modelValue&&"collect"!==d.mode&&"direct"!==d.mode&&i("update:modelValue",K()))}function ne(){d.pageMode||(c.value=!1)}function ue(){d.pageMode?e.index.navigateBack():(ne(),i("close"))}function re(){return 0===N.value.length?(e.index.showToast({title:"请上传隐患图片",icon:"none"}),!1):y.title?null==y.hazardSourceCode?(e.index.showToast({title:"请选择隐患来源",icon:"none"}),!1):x.value?!!y.description||(e.index.showToast({title:"请输入隐患描述",icon:"none"}),!1):(e.index.showToast({title:"请输入隐患位置",icon:"none"}),!1):(e.index.showToast({title:"请输入隐患标题",icon:"none"}),!1)}async function de(){if(!re())return;const t=K();if("collect"===d.mode)return null!==d.modelValue&&i("update:modelValue",t),i("confirm",t),ne(),void e.index.showToast({title:"隐患信息已暂存",icon:"success"});g.value=!0;try{const o=l.buildHiddenDangerParams(t,d.extraParams),n=await a.addHiddenDanger(o);s(n)?(F.value=!0,d.pageMode||ne(),i("success",{...t,hazardId:n.data}),await e.nextTick$1(),ae(),e.index.showToast({title:n.msg||"新增成功",icon:"success"}),d.pageMode&&setTimeout((()=>{e.index.navigateBack()}),1500)):e.index.showToast({title:n.msg||"新增失败",icon:"none"})}catch(o){console.error(o),e.index.showToast({title:"请求失败",icon:"none"})}finally{F.value=!1,g.value=!1}}function ie(){L.value=!0,0===_.value.length&&ce()}async function ce(e=!1){var t;if(!j.value){j.value=!0;try{const o={pageNum:V.value,pageSize:D.value,status:1};(null==(t=M.value)?void 0:t.trim())&&(o.keyword=M.value.trim());const l=await a.getRegulationList(o);if(0===l.code){const a=l.data.records||l.data||[];_.value=e?[..._.value,...a]:a;const t=l.data.total||0;H.value=_.value.length<t}}catch(o){console.error("获取法规列表失败:",o)}finally{j.value=!1}}}function se(){V.value=1,_.value=[],H.value=!0,ce()}function ve(){H.value&&!j.value&&(V.value++,ce(!0))}function fe(){C.value&&(y.regulationId=C.value,y.regulationName=T.value),L.value=!1,le()}function pe(){if(null==y.hazardSourceCode)return;const e=P.value.find((e=>e.code===y.hazardSourceCode));e&&(y.hazardSourceName=e.name)}function ge(){k.value=y.hazardSourceCode,A.value=!0}function me(){if(null!=k.value){const e=P.value.find((e=>e.code===k.value));e&&(y.hazardSourceCode=e.code,y.hazardSourceName=e.name)}A.value=!1,le()}async function he(){try{const e=await a.getHazardSourceList();if(s(e)){const a=Array.isArray(e.data)?e.data:[];P.value=a.map((e=>({code:e.code,name:e.name||""}))).filter((e=>null!=e.code&&e.name)),pe()}}catch(e){console.error("获取隐患来源列表失败:",e)}}function ye(){q.value=S.value,B.value=!0}async function xe(){var e;try{const a=await t.getAreaList();0===a.code&&(null==(e=a.data)?void 0:e.records)&&(O.value=a.data.records)}catch(a){console.error("获取区域列表失败:",a)}}function Ie(){if(q.value){S.value=q.value;const e=O.value.find((e=>e.id===q.value));z.value=e?e.name:""}B.value=!1,le()}function we(){if(E.value=!0,function(){const a=K();try{e.index.setStorageSync(Q(),a)}catch(t){console.error("保存选点草稿失败:",t)}}(),!d.pageMode)return ne(),void setTimeout((()=>{e.index.getLocation({type:"gcj02",success:e=>{Se(e.latitude,e.longitude)},fail:()=>{Se()}})}),300);e.index.getLocation({type:"gcj02",success:e=>{Se(e.latitude,e.longitude)},fail:()=>{Se()}})}function Se(a,t){const o={};null!=a&&null!=t&&(o.latitude=a,o.longitude=t),e.index.chooseLocation({...o,success:e=>{Z({address:e.address+(e.name?`(${e.name})`:""),lng:e.longitude,lat:e.latitude}),ee()},fail:a=>{Z(),ee(),a.errMsg&&-1===a.errMsg.indexOf("cancel")&&e.index.showToast({title:"选择位置失败",icon:"none"})}})}async function ze(){const t=N.value.filter((e=>"success"===e.status&&e.url.toLowerCase().match(/\.(jpg|jpeg|png|gif|bmp|webp)$/)));if(0!==t.length){m.value=!0;try{const o=await a.analyzeHazardImage({imageUrl:t[0].url});if(0===o.code&&o.data){const a=o.data;if(a.title&&(y.title=a.title),a.description&&(y.description=a.description),a.level){const e=l.AI_LEVEL_MAP[a.level];void 0!==e&&(y.level=e)}le(),e.index.showToast({title:"AI分析完成,已自动填充",icon:"success",duration:2e3})}else e.index.showToast({title:o.msg||"AI分析失败",icon:"none"})}catch(o){console.error("AI分析接口调用失败:",o),e.index.showToast({title:"AI分析失败,请重试",icon:"none"})}finally{m.value=!1}}else e.index.showToast({title:"请先上传隐患图片",icon:"none"})}return e.watch((()=>d.modelValue),(e=>{"direct"===d.mode&&d.pageMode||"direct"!==d.mode&&J(e)&&G(e)}),{deep:!0,immediate:!0}),e.watch((()=>({title:y.title,level:y.level,source:y.source,hazardSourceCode:y.hazardSourceCode,hazardSourceName:y.hazardSourceName,description:y.description,tagIndex:y.tagIndex,regulationId:y.regulationId,regulationName:y.regulationName,address:x.value,areaId:S.value,areaName:z.value,fileListLength:N.value.length})),(()=>{d.pageMode&&!h.value&&i("draft-change",K())}),{deep:!0}),e.watch((()=>d.show),(e=>{if(d.pageMode)return;if(e&&0===P.value.length&&he(),e&&0===O.value.length&&xe(),!e)return;if(E.value)return;const a=X();if(a)return G(a),void Y();J(d.modelValue)&&G(d.modelValue)})),async function(){try{const e=await a.getHiddenDangerLabelList();0===e.code&&(b.value=e.data.map((e=>({id:e.id,title:e.name}))),te())}catch(e){console.error("获取标签列表失败:",e)}}(),he(),xe(),u({getPayload:K,applyPayload:G,resetForm:ae,validateForm:re}),(a,t)=>e.e({a:!n.pageMode},n.pageMode?{}:{b:e.t(n.title),c:e.o(ue)},{d:n.showDraftBanner},n.showDraftBanner?{e:e.o((e=>i("clear-draft")))}:{},{f:e.f(e.unref(l.SOURCE_OPTIONS),((a,t,o)=>({a:e.t(a.title),b:a.id,c:y.source===t?1:"",d:e.o((e=>oe("source",t)),a.id)}))),g:e.t(y.hazardSourceName||"请选择隐患来源"),h:y.hazardSourceName?"":1,i:e.o(ge),j:e.o(e.unref($)),k:e.o(e.unref(W)),l:e.p({fileList:N.value,name:"1",multiple:!0,imageMode:"aspectFill",maxCount:10}),m:n.canvasId,n:f.value,o:p.value,p:f.value+"px",q:p.value+"px",r:!m.value},(m.value,{}),{s:e.t(m.value?"AI识别中...":"AI 识别隐患"),t:m.value,v:m.value,w:e.o(ze),x:e.o((e=>y.title=e)),y:e.p({placeholder:"请输入内容",border:"surround",modelValue:y.title}),z:e.f(e.unref(l.LEVEL_OPTIONS),((a,t,o)=>({a:e.t(a.title),b:a.id,c:y.level===t?1:"",d:e.o((e=>oe("level",t)),a.id)}))),A:"address-"+R.value,B:e.o((e=>x.value=e)),C:e.p({placeholder:"请输入地址",border:"surround",modelValue:x.value}),D:e.o(we),E:e.t(y.regulationName||"请选择法律依据"),F:y.regulationName?"":1,G:e.o(ie),H:e.t(z.value||"请选择隐患区域"),I:z.value?"":1,J:e.o(ye),K:"description-"+R.value,L:e.o((e=>y.description=e)),M:e.p({placeholder:"请输入内容",modelValue:y.description}),N:e.f(b.value,((a,t,o)=>({a:e.t(a.title),b:a.id,c:y.tagIndex===t?1:"",d:e.o((e=>oe("tagIndex",t)),a.id)}))),O:e.n(n.pageMode?"page-body":"popup-body"),P:e.s(v.value),Q:e.o(ue),R:g.value,S:e.o(de),T:e.n(n.pageMode?"page-footer":"popup-footer"),U:e.n(n.pageMode?"hazard-form-page":"popup-content"),V:e.o((e=>L.value=!1)),W:e.o(se),X:M.value,Y:e.o((e=>M.value=e.detail.value)),Z:e.o(se),aa:j.value&&0===_.value.length},j.value&&0===_.value.length?{}:j.value||0!==_.value.length?e.e({ac:e.f(_.value,((a,t,o)=>({a:e.t(a.depict),b:e.t(a.legalBasis),c:C.value===a.id?1:"",d:a.id,e:e.o((e=>function(e){C.value=e.id,T.value=e.depict||e.keyword||""}(a)),a.id)}))),ad:j.value},(j.value,{})):{},{ab:!j.value&&0===_.value.length,ae:e.o(ve),af:e.o((e=>L.value=!1)),ag:e.o(fe),ah:e.o((e=>L.value=!1)),ai:e.p({show:L.value,mode:"center",round:"20","safe-area-inset-bottom":!1}),aj:e.o((e=>A.value=!1)),ak:e.o(me),al:e.f(P.value,((a,t,o)=>e.e({a:e.t(a.name),b:k.value===a.code},(k.value,a.code,{}),{c:a.code,d:k.value===a.code?1:"",e:e.o((e=>k.value=a.code),a.code)}))),am:0===P.value.length},(P.value.length,{}),{an:e.o((e=>A.value=!1)),ao:e.p({show:A.value,mode:"bottom",round:"20"}),ap:e.o((e=>B.value=!1)),aq:e.o(Ie),ar:e.f(O.value,((a,t,o)=>e.e({a:a.color,b:e.t(a.name),c:q.value===a.id},(q.value,a.id,{}),{d:a.id,e:q.value===a.id?1:"",f:e.o((e=>q.value=a.id),a.id)}))),as:0===O.value.length},(O.value.length,{}),{at:e.o((e=>B.value=!1)),av:e.p({show:B.value,mode:"bottom",round:"20"})})}},u=e._export_sfc(n,[["__scopeId","data-v-d6b40f55"]]);wx.createComponent(u);
|