龙三郎 1 year ago
parent
commit
796afef421
52 changed files with 489 additions and 24 deletions
  1. 1 1
      dist/assets/CusNavigation-ec36c0a1.js
  2. 0 0
      dist/assets/Detail-cc2c111b.js
  3. 0 0
      dist/assets/Index-10783efc.js
  4. 0 0
      dist/assets/Index-164f83e8.js
  5. 0 0
      dist/assets/Index-1e866c70.js
  6. 0 0
      dist/assets/Index-2caab662.js
  7. 0 0
      dist/assets/Index-4eac9063.js
  8. 0 0
      dist/assets/Index-618ebcb5.js
  9. 0 0
      dist/assets/Index-8298d3fb.js
  10. 0 0
      dist/assets/Index-872f52dd.js
  11. 0 0
      dist/assets/Index-8b54b8f8.js
  12. 0 0
      dist/assets/Index-c3dcb982.js
  13. 0 0
      dist/assets/Index-cc95e3d8.js
  14. 0 0
      dist/assets/Index-e801b631.js
  15. 0 0
      dist/assets/Index-f5cc3349.js
  16. 0 0
      dist/assets/Index-ff0f94d5.js
  17. 1 1
      dist/assets/Index1-9f59218b.js
  18. 0 0
      dist/assets/Location-e2eab1f0.js
  19. 0 0
      dist/assets/Log-97e7a272.js
  20. 0 0
      dist/assets/function-call-efeac0c3.js
  21. 1 0
      dist/assets/index-0e7aa4f5.js
  22. 0 1
      dist/assets/index-131f0bd3.js
  23. 1 1
      dist/assets/index-14b62858.js
  24. 1 1
      dist/assets/index-3eb30ca6.js
  25. 0 0
      dist/assets/index-4ee9e5f5.js
  26. 0 0
      dist/assets/index-5a1d85e8.js
  27. 1 1
      dist/assets/index-5ee9bdb8.js
  28. 1 1
      dist/assets/index-66d7a86d.js
  29. 1 1
      dist/assets/index-6df653fe.js
  30. 1 1
      dist/assets/index-7c1ba4b9.js
  31. 1 0
      dist/assets/index-9c8b4e4e.js
  32. 0 0
      dist/assets/index-9e6184ff.js
  33. 1 1
      dist/assets/index-9ec0d3d1.js
  34. 0 0
      dist/assets/index-a61f8a85.js
  35. 1 1
      dist/assets/index-e143d03e.js
  36. 0 0
      dist/assets/index-f141f45c.js
  37. 0 0
      dist/assets/index-fd844e5f.js
  38. 1 1
      dist/assets/interceptor-9127ccda.js
  39. 0 1
      dist/assets/on-popup-reopen-66a2aa44.js
  40. 1 0
      dist/assets/on-popup-reopen-704b0be0.js
  41. 1 1
      dist/assets/request-44f8475f.js
  42. 1 0
      dist/assets/use-expose-5cb8f942.js
  43. 0 1
      dist/assets/use-expose-a9262edb.js
  44. 1 1
      dist/assets/use-placeholder-05cfb9c2.js
  45. 0 0
      dist/assets/util-b7348ae4.js
  46. 2 1
      dist/index.html
  47. 1 0
      index.html
  48. 153 0
      src/pages/device/Location.vue
  49. 274 0
      src/pages/device/Log.vue
  50. 20 7
      src/pages/device/list/Index.vue
  51. 14 0
      src/router/index.ts
  52. 8 0
      src/vite-env.d.ts

+ 1 - 1
dist/assets/CusNavigation-76c2b299.js → dist/assets/CusNavigation-ec36c0a1.js

@@ -1 +1 @@
-import{I as x}from"./index-fd844e5f.js";import"./index-499beab6.js";import{F as y}from"./index-59c565e6.js";import{d as h,r as v,u as b,b as o,e as n,c as s,s as r,f as e,t as k,F as C,_ as S}from"./index-c174cf79.js";const F={style:{height:"36px",padding:"0px 0px 0px 0px",display:"flex","align-items":"center"}},N={style:{"font-family":"PingFangSC, PingFang SC","font-weight":"bold","font-size":"1.1rem",color:"#191A1A","line-height":"30px","text-align":"justify","font-style":"normal"}},V={style:{"background-color":"#eee","border-radius":"2.5rem",width:"0px","flex-grow":"1",margin:"0px 5px 0px 10px"}},B=h({__name:"CusNavigation",props:{title:{type:String,default:"未知"},gobackabled:{type:Boolean,default:!1},searchabled:{type:Boolean,default:!1}},emits:["onSearch"],setup(t,{emit:d}){const p=d,a=v(""),m=()=>{p("onSearch",a.value)},g=b(),u=i=>{console.log(i),g.go(-1)};return(i,l)=>{const c=x,_=y;return o(),n("div",F,[t.gobackabled?(o(),n("div",{key:0,style:{"line-height":"0px"},class:"cus-goback",onClick:u},[s(c,{name:"static/images/icon-back.png",size:"1.7rem"})])):r("",!0),e("div",N,[e("span",null,k(t.title),1)]),t.searchabled?(o(),n(C,{key:1},[e("div",V,[s(_,{style:{padding:"6px 16px"},modelValue:a.value,"onUpdate:modelValue":l[0]||(l[0]=f=>a.value=f),size:"normal",clearable:""},null,8,["modelValue"])]),e("div",{style:{"line-height":"0px"},onClick:m},[s(c,{name:"static/images/icon-search-black.png",size:"1.7rem"})])],64)):r("",!0)])}}});const P=S(B,[["__scopeId","data-v-8ec8254a"]]);export{P as C};
+import{I as f}from"./index-4ee9e5f5.js";import"./index-6df653fe.js";import{F as y}from"./index-f141f45c.js";import{d as h,r as v,u as b,b as o,e as n,c as s,x as r,f as e,t as k,F as C,_ as S}from"./index-e143d03e.js";const F={style:{height:"36px",padding:"0px 0px 0px 0px",display:"flex","align-items":"center"}},N={style:{"font-family":"PingFangSC, PingFang SC","font-weight":"bold","font-size":"1.1rem",color:"#191A1A","line-height":"30px","text-align":"justify","font-style":"normal"}},V={style:{"background-color":"#eee","border-radius":"2.5rem",width:"0px","flex-grow":"1",margin:"0px 5px 0px 10px"}},B=h({__name:"CusNavigation",props:{title:{type:String,default:"未知"},gobackabled:{type:Boolean,default:!1},searchabled:{type:Boolean,default:!1}},emits:["onSearch"],setup(t,{emit:d}){const p=d,a=v(""),m=()=>{p("onSearch",a.value)},g=b(),u=i=>{console.log(i),g.go(-1)};return(i,l)=>{const c=f,_=y;return o(),n("div",F,[t.gobackabled?(o(),n("div",{key:0,style:{"line-height":"0px"},class:"cus-goback",onClick:u},[s(c,{name:"static/images/icon-back.png",size:"1.7rem"})])):r("",!0),e("div",N,[e("span",null,k(t.title),1)]),t.searchabled?(o(),n(C,{key:1},[e("div",V,[s(_,{style:{padding:"6px 16px"},modelValue:a.value,"onUpdate:modelValue":l[0]||(l[0]=x=>a.value=x),size:"normal",clearable:""},null,8,["modelValue"])]),e("div",{style:{"line-height":"0px"},onClick:m},[s(c,{name:"static/images/icon-search-black.png",size:"1.7rem"})])],64)):r("",!0)])}}});const P=S(B,[["__scopeId","data-v-8ec8254a"]]);export{P as C};

File diff suppressed because it is too large
+ 0 - 0
dist/assets/Detail-cc2c111b.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Index-10783efc.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Index-164f83e8.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Index-1e866c70.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Index-2caab662.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Index-4eac9063.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Index-618ebcb5.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Index-8298d3fb.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Index-872f52dd.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Index-8b54b8f8.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Index-c3dcb982.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Index-cc95e3d8.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Index-e801b631.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Index-f5cc3349.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Index-ff0f94d5.js


+ 1 - 1
dist/assets/Index1-ba68363d.js → dist/assets/Index1-9f59218b.js

@@ -1 +1 @@
-import{_ as i,b as d,e as v,K as e}from"./index-c174cf79.js";const t={},o={style:{position:"flex",height:"100%",width:"100%","background-color":"#aaa"}},c=e('<div style="display:flex;width:100%;height:100%;align-items:center;justify-content:center;"><div style="height:60%;width:60%;display:flex;flex-direction:column;"><div style="height:200px;background-color:red;">jjj</div><div style="overflow:auto;background-color:#ccc;flex-grow:1;"><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>666666</div></div><div style="height:200px;background-color:red;"></div></div></div>',1),r=[c];function s(n,l){return d(),v("div",o,r)}const h=i(t,[["render",s]]);export{h as default};
+import{_ as i,b as d,e as v,L as e}from"./index-e143d03e.js";const t={},o={style:{position:"flex",height:"100%",width:"100%","background-color":"#aaa"}},c=e('<div style="display:flex;width:100%;height:100%;align-items:center;justify-content:center;"><div style="height:60%;width:60%;display:flex;flex-direction:column;"><div style="height:200px;background-color:red;">jjj</div><div style="overflow:auto;background-color:#ccc;flex-grow:1;"><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>123456</div><div>666666</div></div><div style="height:200px;background-color:red;"></div></div></div>',1),r=[c];function s(n,l){return d(),v("div",o,r)}const h=i(t,[["render",s]]);export{h as default};

File diff suppressed because it is too large
+ 0 - 0
dist/assets/Location-e2eab1f0.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/Log-97e7a272.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/function-call-efeac0c3.js


+ 1 - 0
dist/assets/index-0e7aa4f5.js

@@ -0,0 +1 @@
+import{c as B,f as u,A as $,v as j,n as d,t as z,l as P,I as D,w as _}from"./index-4ee9e5f5.js";import{d as A,r as f,g as C,a as N,z as R,H as U,o as F,A as b,c as n,w as H,I as M,m as S}from"./index-e143d03e.js";const[O,t]=B("image"),T={src:String,alt:String,fit:String,position:String,round:Boolean,block:Boolean,width:d,height:d,radius:d,lazyLoad:Boolean,iconSize:d,showError:z,errorIcon:P("photo-fail"),iconPrefix:String,showLoading:z,loadingIcon:P("photo")};var V=A({name:O,props:T,emits:["load","error"],setup(a,{emit:v,slots:s}){const i=f(!1),o=f(!0),r=f(),{$Lazyload:l}=C().proxy,x=N(()=>{const e={width:u(a.width),height:u(a.height)};return $(a.radius)&&(e.overflow="hidden",e.borderRadius=u(a.radius)),e});R(()=>a.src,()=>{i.value=!1,o.value=!0});const g=e=>{o.value&&(o.value=!1,v("load",e))},m=()=>{const e=new Event("load");Object.defineProperty(e,"target",{value:r.value,enumerable:!0}),g(e)},h=e=>{i.value=!0,o.value=!1,v("error",e)},w=(e,c,L)=>L?L():n(D,{name:e,size:a.iconSize,class:c,classPrefix:a.iconPrefix},null),E=()=>{if(o.value&&a.showLoading)return n("div",{class:t("loading")},[w(a.loadingIcon,t("loading-icon"),s.loading)]);if(i.value&&a.showError)return n("div",{class:t("error")},[w(a.errorIcon,t("error-icon"),s.error)])},k=()=>{if(i.value||!a.src)return;const e={alt:a.alt,class:t("img"),style:{objectFit:a.fit,objectPosition:a.position}};return a.lazyLoad?H(n("img",S({ref:r},e),null),[[M("lazy"),a.src]]):n("img",S({ref:r,src:a.src,onLoad:g,onError:h},e),null)},y=({el:e})=>{const c=()=>{e===r.value&&o.value&&m()};r.value?c():b(c)},I=({el:e})=>{e===r.value&&!i.value&&h()};return l&&j&&(l.$on("loaded",y),l.$on("error",I),U(()=>{l.$off("loaded",y),l.$off("error",I)})),F(()=>{b(()=>{var e;(e=r.value)!=null&&e.complete&&!a.lazyLoad&&m()})}),()=>{var e;return n("div",{class:t({round:a.round,block:a.block}),style:x.value},[k(),E(),(e=s.default)==null?void 0:e.call(s)])}}});const J=_(V);export{J as I};

+ 0 - 1
dist/assets/index-131f0bd3.js

@@ -1 +0,0 @@
-import{c as B,f as u,A as $,v as j,n as d,t as z,l as P,I as D,w as _}from"./index-fd844e5f.js";import{d as C,r as f,g as N,a as R,y as U,G as A,o as F,z as b,c as n,w as G,H,m as S}from"./index-c174cf79.js";const[M,t]=B("image"),O={src:String,alt:String,fit:String,position:String,round:Boolean,block:Boolean,width:d,height:d,radius:d,lazyLoad:Boolean,iconSize:d,showError:z,errorIcon:P("photo-fail"),iconPrefix:String,showLoading:z,loadingIcon:P("photo")};var T=C({name:M,props:O,emits:["load","error"],setup(a,{emit:v,slots:s}){const i=f(!1),o=f(!0),r=f(),{$Lazyload:l}=N().proxy,x=R(()=>{const e={width:u(a.width),height:u(a.height)};return $(a.radius)&&(e.overflow="hidden",e.borderRadius=u(a.radius)),e});U(()=>a.src,()=>{i.value=!1,o.value=!0});const g=e=>{o.value&&(o.value=!1,v("load",e))},m=()=>{const e=new Event("load");Object.defineProperty(e,"target",{value:r.value,enumerable:!0}),g(e)},h=e=>{i.value=!0,o.value=!1,v("error",e)},w=(e,c,I)=>I?I():n(D,{name:e,size:a.iconSize,class:c,classPrefix:a.iconPrefix},null),E=()=>{if(o.value&&a.showLoading)return n("div",{class:t("loading")},[w(a.loadingIcon,t("loading-icon"),s.loading)]);if(i.value&&a.showError)return n("div",{class:t("error")},[w(a.errorIcon,t("error-icon"),s.error)])},k=()=>{if(i.value||!a.src)return;const e={alt:a.alt,class:t("img"),style:{objectFit:a.fit,objectPosition:a.position}};return a.lazyLoad?G(n("img",S({ref:r},e),null),[[H("lazy"),a.src]]):n("img",S({ref:r,src:a.src,onLoad:g,onError:h},e),null)},y=({el:e})=>{const c=()=>{e===r.value&&o.value&&m()};r.value?c():b(c)},L=({el:e})=>{e===r.value&&!i.value&&h()};return l&&j&&(l.$on("loaded",y),l.$on("error",L),A(()=>{l.$off("loaded",y),l.$off("error",L)})),F(()=>{b(()=>{var e;(e=r.value)!=null&&e.complete&&!a.lazyLoad&&m()})}),()=>{var e;return n("div",{class:t({round:a.round,block:a.block}),style:x.value},[k(),E(),(e=s.default)==null?void 0:e.call(s)])}}});const J=_(T);export{J as I};

+ 1 - 1
dist/assets/index-ca445d28.js → dist/assets/index-14b62858.js

@@ -1 +1 @@
-import{c as o,t as c,B as d,w as u}from"./index-fd844e5f.js";import{d as m,c as r,F as f,m as p}from"./index-c174cf79.js";const[v,a]=o("cell-group"),g={title:String,inset:Boolean,border:c};var B=m({name:v,inheritAttrs:!1,props:g,setup(e,{slots:t,attrs:l}){const n=()=>{var i;return r("div",p({class:[a({inset:e.inset}),{[d]:e.border&&!e.inset}]},l),[(i=t.default)==null?void 0:i.call(t)])},s=()=>r("div",{class:a("title",{inset:e.inset})},[t.title?t.title():e.title]);return()=>e.title||t.title?r(f,null,[s(),n()]):n()}});const T=u(B);export{T as C};
+import{c as o,t as c,B as d,w as u}from"./index-4ee9e5f5.js";import{d as m,c as r,F as f,m as p}from"./index-e143d03e.js";const[v,a]=o("cell-group"),g={title:String,inset:Boolean,border:c};var B=m({name:v,inheritAttrs:!1,props:g,setup(e,{slots:t,attrs:l}){const n=()=>{var i;return r("div",p({class:[a({inset:e.inset}),{[d]:e.border&&!e.inset}]},l),[(i=t.default)==null?void 0:i.call(t)])},s=()=>r("div",{class:a("title",{inset:e.inset})},[t.title?t.title():e.title]);return()=>e.title||t.title?r(f,null,[s(),n()]):n()}});const T=u(B);export{T as C};

+ 1 - 1
dist/assets/index-36535de0.js → dist/assets/index-3eb30ca6.js

@@ -1 +1 @@
-import{a as m}from"./axios-9cbf0d09.js";import{I as u}from"./index-c174cf79.js";const f=u("userInfo",{state:()=>({mobile:"",username:"",password:"",token:"",roles:[],isLogin:!1,isRememberMe:!1}),persist:{enabled:!0,encryptionKey:"userInfo",storage:localStorage}}),i=f(),c=m.create({baseURL:"/forward-service",timeout:1e4}),d=function(a,r,s){const{url:o,data:e}=a;c.post(o,e,{headers:{token:i.token}}).then(t=>{const n=t.data;n.code==0?r&&r(n):n.code==3?i.isLogin=!1:s&&s(n.msg)},t=>{s&&s(t.message)}).catch(t=>{console.log(t)})},g=function(a){const{url:r,data:s}=a;return c.post(r,s,{headers:{token:i.token}}).then(o=>{const e=o.data;return e.code==0?Promise.resolve(e):(e.code==3&&console.log(e),Promise.reject(e.msg))},o=>Promise.reject(o.message))};export{d as a,g as p,f as u};
+import{a as m}from"./axios-9cbf0d09.js";import{J as u}from"./index-e143d03e.js";const f=u("userInfo",{state:()=>({mobile:"",username:"",password:"",token:"",roles:[],isLogin:!1,isRememberMe:!1}),persist:{enabled:!0,encryptionKey:"userInfo",storage:localStorage}}),i=f(),c=m.create({baseURL:"/forward-service",timeout:1e4}),d=function(a,r,s){const{url:o,data:e}=a;c.post(o,e,{headers:{token:i.token}}).then(t=>{const n=t.data;n.code==0?r&&r(n):n.code==3?i.isLogin=!1:s&&s(n.msg)},t=>{s&&s(t.message)}).catch(t=>{console.log(t)})},g=function(a){const{url:r,data:s}=a;return c.post(r,s,{headers:{token:i.token}}).then(o=>{const e=o.data;return e.code==0?Promise.resolve(e):(e.code==3&&console.log(e),Promise.reject(e.msg))},o=>Promise.reject(o.message))};export{d as a,g as p,f as u};

File diff suppressed because it is too large
+ 0 - 0
dist/assets/index-4ee9e5f5.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index-5a1d85e8.js


+ 1 - 1
dist/assets/index-6a309e15.js → dist/assets/index-5ee9bdb8.js

@@ -1 +1 @@
-import{c as z,e as I,r as R,l,n as C,a as D,Y as w,I as L,D as N,w as p}from"./index-fd844e5f.js";import{L as q}from"./index-8bdc99e6.js";import{d as O,c as o}from"./index-c174cf79.js";const[U,a]=z("button"),_=I({},R,{tag:l("button"),text:String,icon:String,type:l("default"),size:l("normal"),color:String,block:Boolean,plain:Boolean,round:Boolean,square:Boolean,loading:Boolean,hairline:Boolean,disabled:Boolean,iconPrefix:String,nativeType:l("button"),loadingSize:C,loadingText:String,loadingType:String,iconPosition:l("left")});var E=O({name:U,props:_,emits:["click"],setup(e,{emit:g,slots:t}){const f=D(),m=()=>t.loading?t.loading():o(q,{size:e.loadingSize,type:e.loadingType,class:a("loading")},null),c=()=>{if(e.loading)return m();if(t.icon)return o("div",{class:a("icon")},[t.icon()]);if(e.icon)return o(L,{name:e.icon,class:a("icon"),classPrefix:e.iconPrefix},null)},b=()=>{let n;if(e.loading?n=e.loadingText:n=t.default?t.default():e.text,n)return o("span",{class:a("text")},[n])},x=()=>{const{color:n,plain:r}=e;if(n){const i={color:r?n:"white"};return r||(i.background=n),n.includes("gradient")?i.border=0:i.borderColor=n,i}},y=n=>{e.loading?N(n):e.disabled||(g("click",n),f())};return()=>{const{tag:n,type:r,size:i,block:S,round:B,plain:P,square:k,loading:T,disabled:s,hairline:d,nativeType:h,iconPosition:u}=e,v=[a([r,i,{plain:P,block:S,round:B,square:k,loading:T,disabled:s,hairline:d}]),{[w]:d}];return o(n,{type:h,class:v,style:x(),disabled:s,onClick:y},{default:()=>[o("div",{class:a("content")},[u==="left"&&c(),b(),u==="right"&&c()])]})}}});const A=p(E);export{A as B};
+import{c as z,e as I,r as R,l,n as C,a as D,Y as w,I as L,D as N,w as p}from"./index-4ee9e5f5.js";import{L as q}from"./index-66d7a86d.js";import{d as O,c as o}from"./index-e143d03e.js";const[U,a]=z("button"),_=I({},R,{tag:l("button"),text:String,icon:String,type:l("default"),size:l("normal"),color:String,block:Boolean,plain:Boolean,round:Boolean,square:Boolean,loading:Boolean,hairline:Boolean,disabled:Boolean,iconPrefix:String,nativeType:l("button"),loadingSize:C,loadingText:String,loadingType:String,iconPosition:l("left")});var E=O({name:U,props:_,emits:["click"],setup(e,{emit:g,slots:t}){const f=D(),m=()=>t.loading?t.loading():o(q,{size:e.loadingSize,type:e.loadingType,class:a("loading")},null),c=()=>{if(e.loading)return m();if(t.icon)return o("div",{class:a("icon")},[t.icon()]);if(e.icon)return o(L,{name:e.icon,class:a("icon"),classPrefix:e.iconPrefix},null)},b=()=>{let n;if(e.loading?n=e.loadingText:n=t.default?t.default():e.text,n)return o("span",{class:a("text")},[n])},x=()=>{const{color:n,plain:r}=e;if(n){const i={color:r?n:"white"};return r||(i.background=n),n.includes("gradient")?i.border=0:i.borderColor=n,i}},y=n=>{e.loading?N(n):e.disabled||(g("click",n),f())};return()=>{const{tag:n,type:r,size:i,block:S,round:B,plain:P,square:k,loading:T,disabled:s,hairline:d,nativeType:h,iconPosition:u}=e,v=[a([r,i,{plain:P,block:S,round:B,square:k,loading:T,disabled:s,hairline:d}]),{[w]:d}];return o(n,{type:h,class:v,style:x(),disabled:s,onClick:y},{default:()=>[o("div",{class:a("content")},[u==="left"&&c(),b(),u==="right"&&c()])]})}}});const A=p(E);export{A as B};

+ 1 - 1
dist/assets/index-8bdc99e6.js → dist/assets/index-66d7a86d.js

@@ -1 +1 @@
-import{c as u,e as d,x as f,n as c,l as m,f as x,w as y}from"./index-fd844e5f.js";import{c as a,d as S,a as p}from"./index-c174cf79.js";const[g,r]=u("loading"),v=Array(12).fill(null).map((e,n)=>a("i",{class:r("line",String(n+1))},null)),z=a("svg",{class:r("circular"),viewBox:"25 25 50 50"},[a("circle",{cx:"50",cy:"50",r:"20",fill:"none"},null)]),I={size:c,type:m("circular"),color:String,vertical:Boolean,textSize:c,textColor:String};var C=S({name:g,props:I,setup(e,{slots:n}){const l=p(()=>d({color:e.color},f(e.size))),i=()=>{const t=e.type==="spinner"?v:z;return a("span",{class:r("spinner",e.type),style:l.value},[n.icon?n.icon():t])},o=()=>{var t;if(n.default)return a("span",{class:r("text"),style:{fontSize:x(e.textSize),color:(t=e.textColor)!=null?t:e.color}},[n.default()])};return()=>{const{type:t,vertical:s}=e;return a("div",{class:r([t,{vertical:s}]),"aria-live":"polite","aria-busy":!0},[i(),o()])}}});const _=y(C);export{_ as L};
+import{c as u,e as d,x as f,n as c,l as m,f as x,w as y}from"./index-4ee9e5f5.js";import{c as a,d as S,a as p}from"./index-e143d03e.js";const[g,r]=u("loading"),v=Array(12).fill(null).map((e,n)=>a("i",{class:r("line",String(n+1))},null)),z=a("svg",{class:r("circular"),viewBox:"25 25 50 50"},[a("circle",{cx:"50",cy:"50",r:"20",fill:"none"},null)]),I={size:c,type:m("circular"),color:String,vertical:Boolean,textSize:c,textColor:String};var C=S({name:g,props:I,setup(e,{slots:n}){const l=p(()=>d({color:e.color},f(e.size))),i=()=>{const t=e.type==="spinner"?v:z;return a("span",{class:r("spinner",e.type),style:l.value},[n.icon?n.icon():t])},o=()=>{var t;if(n.default)return a("span",{class:r("text"),style:{fontSize:x(e.textSize),color:(t=e.textColor)!=null?t:e.color}},[n.default()])};return()=>{const{type:t,vertical:s}=e;return a("div",{class:r([t,{vertical:s}]),"aria-live":"polite","aria-busy":!0},[i(),o()])}}});const _=y(C);export{_ as L};

+ 1 - 1
dist/assets/index-499beab6.js → dist/assets/index-6df653fe.js

@@ -1 +1 @@
-import{c as L,e as y,r as D,a as I,l as B,n as o,t as V,k as s,A as u,I as b,w as _}from"./index-fd844e5f.js";import{d as A,c as n}from"./index-c174cf79.js";const[q,i]=L("cell"),z={tag:B("div"),icon:String,size:String,title:o,value:o,label:o,center:Boolean,isLink:Boolean,border:V,required:Boolean,iconPrefix:String,valueClass:s,labelClass:s,titleClass:s,titleStyle:null,arrowDirection:String,clickable:{type:Boolean,default:null}},N=y({},z,D);var R=A({name:q,props:N,setup(e,{slots:l}){const v=I(),g=()=>{if(l.label||u(e.label))return n("div",{class:[i("label"),e.labelClass]},[l.label?l.label():e.label])},h=()=>{var a;if(l.title||u(e.title)){const t=(a=l.title)==null?void 0:a.call(l);return Array.isArray(t)&&t.length===0?void 0:n("div",{class:[i("title"),e.titleClass],style:e.titleStyle},[t||n("span",null,[e.title]),g()])}},m=()=>{const a=l.value||l.default;if(a||u(e.value))return n("div",{class:[i("value"),e.valueClass]},[a?a():n("span",null,[e.value])])},w=()=>{if(l.icon)return l.icon();if(e.icon)return n(b,{name:e.icon,class:i("left-icon"),classPrefix:e.iconPrefix},null)},k=()=>{if(l["right-icon"])return l["right-icon"]();if(e.isLink){const a=e.arrowDirection&&e.arrowDirection!=="right"?`arrow-${e.arrowDirection}`:"arrow";return n(b,{name:a,class:i("right-icon")},null)}};return()=>{var a;const{tag:t,size:r,center:C,border:P,isLink:S,required:x}=e,c=(a=e.clickable)!=null?a:S,d={center:C,required:x,clickable:c,borderless:!P};return r&&(d[r]=!!r),n(t,{class:i(d),role:c?"button":void 0,tabindex:c?0:void 0,onClick:v},{default:()=>{var f;return[w(),h(),m(),k(),(f=l.extra)==null?void 0:f.call(l)]}})}}});const j=_(R);export{j as C,z as c};
+import{c as L,e as y,r as D,a as I,l as B,n as o,t as V,k as s,A as u,I as b,w as _}from"./index-4ee9e5f5.js";import{d as A,c as n}from"./index-e143d03e.js";const[q,i]=L("cell"),z={tag:B("div"),icon:String,size:String,title:o,value:o,label:o,center:Boolean,isLink:Boolean,border:V,required:Boolean,iconPrefix:String,valueClass:s,labelClass:s,titleClass:s,titleStyle:null,arrowDirection:String,clickable:{type:Boolean,default:null}},N=y({},z,D);var R=A({name:q,props:N,setup(e,{slots:l}){const v=I(),g=()=>{if(l.label||u(e.label))return n("div",{class:[i("label"),e.labelClass]},[l.label?l.label():e.label])},h=()=>{var a;if(l.title||u(e.title)){const t=(a=l.title)==null?void 0:a.call(l);return Array.isArray(t)&&t.length===0?void 0:n("div",{class:[i("title"),e.titleClass],style:e.titleStyle},[t||n("span",null,[e.title]),g()])}},m=()=>{const a=l.value||l.default;if(a||u(e.value))return n("div",{class:[i("value"),e.valueClass]},[a?a():n("span",null,[e.value])])},w=()=>{if(l.icon)return l.icon();if(e.icon)return n(b,{name:e.icon,class:i("left-icon"),classPrefix:e.iconPrefix},null)},k=()=>{if(l["right-icon"])return l["right-icon"]();if(e.isLink){const a=e.arrowDirection&&e.arrowDirection!=="right"?`arrow-${e.arrowDirection}`:"arrow";return n(b,{name:a,class:i("right-icon")},null)}};return()=>{var a;const{tag:t,size:r,center:C,border:P,isLink:S,required:x}=e,c=(a=e.clickable)!=null?a:S,d={center:C,required:x,clickable:c,borderless:!P};return r&&(d[r]=!!r),n(t,{class:i(d),role:c?"button":void 0,tabindex:c?0:void 0,onClick:v},{default:()=>{var f;return[w(),h(),m(),k(),(f=l.extra)==null?void 0:f.call(l)]}})}}});const j=_(R);export{j as C,z as c};

+ 1 - 1
dist/assets/index-8cea1388.js → dist/assets/index-7c1ba4b9.js

@@ -1 +1 @@
-import{d as S,c as t,E as k}from"./index-c174cf79.js";import{c as x,t as B,l as I,H as P,I as T,w as h}from"./index-fd844e5f.js";const[v,s]=x("tag"),w={size:String,mark:Boolean,show:B,type:I("default"),color:String,plain:Boolean,round:Boolean,textColor:String,closeable:Boolean};var y=S({name:v,props:w,emits:["close"],setup(o,{slots:n,emit:r}){const c=e=>{e.stopPropagation(),r("close",e)},i=()=>o.plain?{color:o.textColor||o.color,borderColor:o.color}:{color:o.textColor,background:o.color},d=()=>{var e;const{type:u,mark:m,plain:g,round:f,size:a,closeable:C}=o,l={mark:m,plain:g,round:f};a&&(l[a]=a);const b=C&&t(T,{name:"cross",class:[s("close"),P],onClick:c},null);return t("span",{style:i(),class:s([l,u])},[(e=n.default)==null?void 0:e.call(n),b])};return()=>t(k,{name:o.closeable?"van-fade":void 0},{default:()=>[o.show?d():null]})}});const _=h(y);export{_ as T};
+import{d as S,c as t,G as k}from"./index-e143d03e.js";import{c as x,t as B,l as I,H as P,I as T,w as h}from"./index-4ee9e5f5.js";const[v,s]=x("tag"),w={size:String,mark:Boolean,show:B,type:I("default"),color:String,plain:Boolean,round:Boolean,textColor:String,closeable:Boolean};var y=S({name:v,props:w,emits:["close"],setup(o,{slots:n,emit:r}){const c=e=>{e.stopPropagation(),r("close",e)},i=()=>o.plain?{color:o.textColor||o.color,borderColor:o.color}:{color:o.textColor,background:o.color},d=()=>{var e;const{type:u,mark:m,plain:g,round:f,size:a,closeable:C}=o,l={mark:m,plain:g,round:f};a&&(l[a]=a);const b=C&&t(T,{name:"cross",class:[s("close"),P],onClick:c},null);return t("span",{style:i(),class:s([l,u])},[(e=n.default)==null?void 0:e.call(n),b])};return()=>t(k,{name:o.closeable?"van-fade":void 0},{default:()=>[o.show?d():null]})}});const z=h(y);export{z as T};

+ 1 - 0
dist/assets/index-9c8b4e4e.js

@@ -0,0 +1 @@
+function M(t,g){g=="s"&&(t=t*1e3);let e=new Date(t),n=e.getFullYear()+"-",o=(e.getMonth()+1<10?"0"+(e.getMonth()+1):e.getMonth()+1)+"-",s=(e.getDate()<10?"0"+e.getDate():e.getDate())+" ",l=(e.getHours()<10?"0"+e.getHours():e.getHours())+":",u=(e.getMinutes()<10?"0"+e.getMinutes():e.getMinutes())+":",r=e.getSeconds()<10?"0"+e.getSeconds():e.getSeconds();return n+o+s+l+u+r}export{M as t};

File diff suppressed because it is too large
+ 0 - 0
dist/assets/index-9e6184ff.js


+ 1 - 1
dist/assets/index-d46f0f2c.js → dist/assets/index-9ec0d3d1.js

@@ -1 +1 @@
-import{c as V,u as y,n as A,t as g,D as T,X as C,w as M}from"./index-fd844e5f.js";import{u as N}from"./use-expose-a9262edb.js";import{d as _,c as x}from"./index-c174cf79.js";const[D,I]=V("form"),O={colon:Boolean,disabled:Boolean,readonly:Boolean,showError:Boolean,labelWidth:A,labelAlign:String,inputAlign:String,scrollToError:Boolean,validateFirst:Boolean,submitOnEnter:g,showErrorMessage:g,errorMessageAlign:String,validateTrigger:{type:[String,Array],default:"onBlur"}};var j=_({name:D,props:O,emits:["submit","failed"],setup(l,{emit:s,slots:u}){const{children:i,linkChildren:v}=y(C),r=e=>e?i.filter(t=>e.includes(t.name)):i,p=e=>new Promise((t,n)=>{const o=[];r(e).reduce((E,F)=>E.then(()=>{if(!o.length)return F.validate().then(h=>{h&&o.push(h)})}),Promise.resolve()).then(()=>{o.length?n(o):t()})}),b=e=>new Promise((t,n)=>{const o=r(e);Promise.all(o.map(a=>a.validate())).then(a=>{a=a.filter(Boolean),a.length?n(a):t()})}),B=e=>{const t=i.find(n=>n.name===e);return t?new Promise((n,o)=>{t.validate().then(a=>{a?o(a):n()})}):Promise.reject()},c=e=>typeof e=="string"?B(e):l.validateFirst?p(e):b(e),P=e=>{typeof e=="string"&&(e=[e]),r(e).forEach(n=>{n.resetValidation()})},S=()=>i.reduce((e,t)=>(e[t.name]=t.getValidationStatus(),e),{}),d=(e,t)=>{i.some(n=>n.name===e?(n.$el.scrollIntoView(t),!0):!1)},f=()=>i.reduce((e,t)=>(t.name!==void 0&&(e[t.name]=t.formValue.value),e),{}),m=()=>{const e=f();c().then(()=>s("submit",e)).catch(t=>{s("failed",{values:e,errors:t}),l.scrollToError&&t[0].name&&d(t[0].name)})},w=e=>{T(e),m()};return v({props:l}),N({submit:m,validate:c,getValues:f,scrollToField:d,resetValidation:P,getValidationStatus:S}),()=>{var e;return x("form",{class:I(),onSubmit:w},[(e=u.default)==null?void 0:e.call(u)])}}});const R=M(j);export{R as F};
+import{c as V,u as y,n as A,t as g,D as T,X as C,w as M}from"./index-4ee9e5f5.js";import{u as N}from"./use-expose-5cb8f942.js";import{d as _,c as x}from"./index-e143d03e.js";const[D,I]=V("form"),O={colon:Boolean,disabled:Boolean,readonly:Boolean,showError:Boolean,labelWidth:A,labelAlign:String,inputAlign:String,scrollToError:Boolean,validateFirst:Boolean,submitOnEnter:g,showErrorMessage:g,errorMessageAlign:String,validateTrigger:{type:[String,Array],default:"onBlur"}};var j=_({name:D,props:O,emits:["submit","failed"],setup(l,{emit:s,slots:u}){const{children:i,linkChildren:v}=y(C),r=e=>e?i.filter(t=>e.includes(t.name)):i,p=e=>new Promise((t,n)=>{const o=[];r(e).reduce((E,F)=>E.then(()=>{if(!o.length)return F.validate().then(h=>{h&&o.push(h)})}),Promise.resolve()).then(()=>{o.length?n(o):t()})}),b=e=>new Promise((t,n)=>{const o=r(e);Promise.all(o.map(a=>a.validate())).then(a=>{a=a.filter(Boolean),a.length?n(a):t()})}),B=e=>{const t=i.find(n=>n.name===e);return t?new Promise((n,o)=>{t.validate().then(a=>{a?o(a):n()})}):Promise.reject()},c=e=>typeof e=="string"?B(e):l.validateFirst?p(e):b(e),P=e=>{typeof e=="string"&&(e=[e]),r(e).forEach(n=>{n.resetValidation()})},S=()=>i.reduce((e,t)=>(e[t.name]=t.getValidationStatus(),e),{}),d=(e,t)=>{i.some(n=>n.name===e?(n.$el.scrollIntoView(t),!0):!1)},f=()=>i.reduce((e,t)=>(t.name!==void 0&&(e[t.name]=t.formValue.value),e),{}),m=()=>{const e=f();c().then(()=>s("submit",e)).catch(t=>{s("failed",{values:e,errors:t}),l.scrollToError&&t[0].name&&d(t[0].name)})},w=e=>{T(e),m()};return v({props:l}),N({submit:m,validate:c,getValues:f,scrollToField:d,resetValidation:P,getValidationStatus:S}),()=>{var e;return x("form",{class:I(),onSubmit:w},[(e=u.default)==null?void 0:e.call(u)])}}});const R=M(j);export{R as F};

File diff suppressed because it is too large
+ 0 - 0
dist/assets/index-a61f8a85.js


File diff suppressed because it is too large
+ 1 - 1
dist/assets/index-e143d03e.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index-f141f45c.js


File diff suppressed because it is too large
+ 0 - 0
dist/assets/index-fd844e5f.js


+ 1 - 1
dist/assets/interceptor-f9ea4b6f.js → dist/assets/interceptor-9127ccda.js

@@ -1 +1 @@
-import{a2 as r,o as a}from"./index-fd844e5f.js";function e(l,{args:o=[],done:i,canceled:s}){if(l){const f=l.apply(null,o);r(f)?f.then(t=>{t?i():s&&s()}).catch(a):f?i():s&&s()}else i()}export{e as c};
+import{a2 as r,o as a}from"./index-4ee9e5f5.js";function e(l,{args:o=[],done:i,canceled:s}){if(l){const f=l.apply(null,o);r(f)?f.then(t=>{t?i():s&&s()}).catch(a):f?i():s&&s()}else i()}export{e as c};

+ 0 - 1
dist/assets/on-popup-reopen-66a2aa44.js

@@ -1 +0,0 @@
-import{P as p,y as s}from"./index-c174cf79.js";const a=Symbol();function c(t){const o=p(a,null);o&&s(o,n=>{n&&t()})}export{a as P,c as o};

+ 1 - 0
dist/assets/on-popup-reopen-704b0be0.js

@@ -0,0 +1 @@
+import{Q as p,z as s}from"./index-e143d03e.js";const a=Symbol();function e(t){const o=p(a,null);o&&s(o,n=>{n&&t()})}export{a as P,e as o};

+ 1 - 1
dist/assets/request-9f2bc390.js → dist/assets/request-44f8475f.js

@@ -1 +1 @@
-import{a as s}from"./axios-9cbf0d09.js";import{I as n}from"./index-c174cf79.js";const c=n("localStore",{state:()=>({username:"",password:"",rememberPassword:!0,token:""}),persist:{enabled:!0,encryptionKey:"nfgj",storage:localStorage}}),a="https://www.huifutiancai.com/huishou-service",r=c(),t=s.create({baseURL:a,timeout:5e3});t.interceptors.request.use(function(e){return r.token&&(e.headers.accessToken=r.token),e},function(e){return Promise.reject(e)});t.interceptors.response.use(function(e){return e},function(e){return Promise.reject(e)});const p=function(e,o){return t.post(e,o)};export{p,c as u};
+import{a as s}from"./axios-9cbf0d09.js";import{J as n}from"./index-e143d03e.js";const c=n("localStore",{state:()=>({username:"",password:"",rememberPassword:!0,token:""}),persist:{enabled:!0,encryptionKey:"nfgj",storage:localStorage}}),a="https://www.huifutiancai.com/huishou-service",r=c(),t=s.create({baseURL:a,timeout:5e3});t.interceptors.request.use(function(e){return r.token&&(e.headers.accessToken=r.token),e},function(e){return Promise.reject(e)});t.interceptors.response.use(function(e){return e},function(e){return Promise.reject(e)});const p=function(e,o){return t.post(e,o)};export{p,c as u};

+ 1 - 0
dist/assets/use-expose-5cb8f942.js

@@ -0,0 +1 @@
+import{e as n}from"./index-4ee9e5f5.js";import{g as o}from"./index-e143d03e.js";function a(t){const e=o();e&&n(e.proxy,t)}export{a as u};

+ 0 - 1
dist/assets/use-expose-a9262edb.js

@@ -1 +0,0 @@
-import{e as n}from"./index-fd844e5f.js";import{g as o}from"./index-c174cf79.js";function a(t){const e=o();e&&n(e.proxy,t)}export{a as u};

+ 1 - 1
dist/assets/use-placeholder-49141036.js → dist/assets/use-placeholder-05cfb9c2.js

@@ -1 +1 @@
-import{W as r,U as h,T as n}from"./index-fd844e5f.js";import{o as u}from"./on-popup-reopen-66a2aa44.js";import{r as c,o as l,z as a,y as d,c as p}from"./index-c174cf79.js";const f=(o,s)=>{const t=c(),e=()=>{t.value=n(o).height};return l(()=>{if(a(e),s)for(let i=1;i<=3;i++)setTimeout(e,100*i)}),u(()=>a(e)),d([r,h],e),t};function w(o,s){const t=f(o,!0);return e=>p("div",{class:s("placeholder"),style:{height:t.value?`${t.value}px`:void 0}},[e()])}export{w as u};
+import{W as r,U as h,T as n}from"./index-4ee9e5f5.js";import{o as u}from"./on-popup-reopen-704b0be0.js";import{r as c,o as l,A as a,z as d,c as p}from"./index-e143d03e.js";const f=(o,s)=>{const t=c(),e=()=>{t.value=n(o).height};return l(()=>{if(a(e),s)for(let i=1;i<=3;i++)setTimeout(e,100*i)}),u(()=>a(e)),d([r,h],e),t};function w(o,s){const t=f(o,!0);return e=>p("div",{class:s("placeholder"),style:{height:t.value?`${t.value}px`:void 0}},[e()])}export{w as u};

File diff suppressed because it is too large
+ 0 - 0
dist/assets/util-b7348ae4.js


+ 2 - 1
dist/index.html

@@ -6,7 +6,8 @@
     <link type="text/css" rel="stylesheet" href="//at.alicdn.com/t/c/font_3378860_jxulrbfimdf.css" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
     <title>驼人物联网平台</title>
-    <script type="module" crossorigin src="/wap/assets/index-c174cf79.js"></script>
+    <script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=r6wmhUcG2BBUmqP4OjRlxLOMbQ3F1Ptn"></script>
+    <script type="module" crossorigin src="/wap/assets/index-e143d03e.js"></script>
     <link rel="stylesheet" href="/wap/assets/index-a26c7d6f.css">
   </head>
   <body>

+ 1 - 0
index.html

@@ -6,6 +6,7 @@
     <link type="text/css" rel="stylesheet" href="//at.alicdn.com/t/c/font_3378860_jxulrbfimdf.css" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
     <title>驼人物联网平台</title>
+    <script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=r6wmhUcG2BBUmqP4OjRlxLOMbQ3F1Ptn"></script>
   </head>
   <body>
     <div id="app"></div>

+ 153 - 0
src/pages/device/Location.vue

@@ -0,0 +1,153 @@
+<template>
+  <div style="display: flex; 
+    flex-direction: column; 
+    height: 100vh;">
+
+    <!-- 导航 -->
+    <div style="padding: 10px;">
+      <CusNavigation gobackabled title="设备位置"></CusNavigation>
+    </div>
+
+
+    <div class="container" style="overflow-y: auto; flex-grow: 1; background-color: #F7F8FA;">
+      <!-- <van-pull-refresh style="height: 100%;" v-model="refreshing" @refresh="onRefresh"> -->
+
+      <div style="height: 100%; position: relative;">
+        <div id="map_1" style="height: 100%; background-color: #aaa; "></div>
+
+        <!-- 设备信息 -->
+        <div style="position: absolute; 
+          width: 100%; 
+          z-index: 99999999;
+          border-top-left-radius: 20px;
+          border-top-right-radius: 20px;
+          background-color: #fff;
+          border-top: 2px solid #eee;
+          bottom: 0px;">
+          <div style="padding: 30px 40px;">
+            <div style="display: flex; align-items:flex-end;">
+              <div style="width: 80px; color: #969799; font-size: 0.9rem">
+                <span>设备编号:</span>
+              </div>
+              <div style="font-weight: bold;">
+                <span>123457895</span>
+              </div>
+            </div>
+            <div style="display: flex; align-items:flex-end; margin-top: 5px;">
+              <div style="width: 80px; color: #969799; font-size: 0.9rem">
+                <span>位置坐标:</span>
+              </div>
+              <div style="font-weight: bold;">
+                <span>116.404, 39.915</span>
+              </div>
+            </div>
+            <div style="display: flex; align-items:flex-end; margin-top: 5px;">
+              <div style="width: 80px; color: #969799; font-size: 0.9rem">
+                <span>地址:</span>
+              </div>
+              <div style="font-weight: bold;">
+                <span>河南省新乡市长垣市南浦街道</span>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+
+
+      <!-- </van-pull-refresh> -->
+    </div>
+
+
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, onMounted } from 'vue'
+import { useRouter } from 'vue-router';
+// import { post_promise } from '@/network/axios';
+// import { DeviceEntity, ProductEntity } from '@/api/model';
+import { CusNavigation } from '@/components'
+// import { timestampToTime } from '@/utils'
+// import { showToast } from 'vant';
+
+
+// 初始化地图
+const BMap = window.BMapGL;
+const map = ref<any>(null);
+const init_map = () => {
+  if(map.value){
+    return;
+  }
+	map.value = new BMap.Map("map_1");    // 创建Map实例
+  map.value.centerAndZoom(new BMap.Point(116.404, 39.915), 15);
+	map.value.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放
+  // var scaleCtrl = new BMap.ScaleControl();  // 添加比例尺控件
+  // map.value.addControl(scaleCtrl);
+
+  
+  const lng = 116.404;
+  const lat = 39.915;
+  let point = new BMap.Point(lng, lat);
+  console.log(lng, lat)
+  // let point = new BMap.Point(114.65822523540115,35.1407595573966);
+  let marker1 = new BMap.Marker(point);
+  // 创建圆
+  let circle = new BMap.Circle(point, 500, {
+      strokeColor: 'red',
+      strokeWeight: 1,
+      strokeOpacity: 1,
+      fillOpacity: 0
+  });
+  map.value.addOverlay(marker1);
+  map.value.addOverlay(circle);
+  setTimeout(()=>{
+    map.value.setCenter(point)
+  }, 300)
+
+}
+
+
+
+// 设备
+// const device = ref<DeviceEntity>();
+// 查询设备
+// const refreshList = async () => {
+
+//   await post_promise({url: '/device/search', data: {
+//     size: 200,
+//     page: 1,
+//     sort: 'createtime',
+//     order: 'desc',
+//     keyWord: deviceId.value,
+//   }})
+//   .then((result: any) => {
+//     if(!result.data[0].data) {
+//       device.value = {
+//         data: []
+//       };
+//       return Promise.reject('ok');
+//     };
+//     device.value = result.data[0];
+//     device.value!.data = JSON.parse(result.data[0].data);
+//     console.log(device.value)
+//     return Promise.resolve(device.value)
+//   })
+
+// }
+
+
+
+
+const router = useRouter();
+const deviceId = ref('');
+// 生命周期
+onMounted(() => {
+  console.log('deviceDetail onMounted')
+  deviceId.value = router.currentRoute.value.params.deviceId as string;
+  // refreshList();
+  init_map();
+})
+
+</script>
+
+<style scoped></style>

+ 274 - 0
src/pages/device/Log.vue

@@ -0,0 +1,274 @@
+<template>
+  <div style="display: flex; 
+    flex-direction: column; 
+    height: 100vh;">
+
+    <!-- 导航 -->
+    <div style="padding: 10px;">
+      <CusNavigation gobackabled title="设备日志" searchabled @onSearch="onSearch"></CusNavigation>
+    </div>
+
+
+    <div class="container" style="overflow-y: auto; flex-grow: 1; background-color: #F7F8FA;">
+      <van-pull-refresh style="min-height: 100%;" v-model="refreshing" @refresh="onRefresh">
+
+        <van-swipe-cell style="background-color: #fff; margin-bottom: 10px;">
+          <van-cell clickable>
+            <div style="text-align: left;">
+              <!-- <div>{{ device }}</div> -->
+              <!-- 第一行 -->
+              <div style="display: flex; justify-content: space-between; margin-bottom: 5px;">
+                <div style="color: #000; font-weight: bold; font-size: 1.1rem;">
+                  <span>{{ deviceId }}</span>
+                </div>
+                <div style="font-size: 0.9rem;">设备编号</div>
+              </div>
+              <!-- 第二行 -->
+              <div style="display: flex; justify-content: space-between;">
+                <div style="font-weight: bold; font-size: 0.9rem; height: 31px;">
+                  <span>{{ device?.modifytime }}</span>
+                </div>
+                <!-- <div style="display: flex; color: #aaa;">
+                  <div>
+                    <van-icon name="static/images/icon-check.png" size="1.5rem" />
+                  </div>
+                  <div style="margin-left: 3px; font-size: 1rem;">查看数据</div>
+                </div> -->
+              </div>
+              
+            </div>
+          </van-cell>
+        </van-swipe-cell>
+
+        <van-swipe-cell v-for="item in showProperties" style="background-color: #fff; margin-bottom: 10px;">
+          <van-cell clickable>
+            <div style="text-align: left;">
+              <!-- <div>{{ item }}</div> -->
+              <!-- 第一行 -->
+              <div style="display: flex; justify-content: space-between; margin-bottom: 5px;">
+                <div style="color: #000; font-weight: bold; font-size: 1.1rem;">
+                  <span>{{item.value}}</span>
+                  <span v-if="item.model.type == 'enum'" style="margin-left: 5px;">
+                    <span>(</span>
+                    <span>{{ item.model.define.range[item.value] }}</span>
+                    <span>)</span>
+                  </span>
+                </div>
+                <div style="font-size: 0.9rem;">{{ item.name }}</div>
+              </div>
+              <!-- 第二行 -->
+              <div style="display: flex; justify-content: space-between;">
+                <div style="font-weight: bold; font-size: 0.9rem;">
+                  <span>{{ item.date }}</span>
+                </div>
+                <div style="display: flex; color: #000;">
+                  <div>
+                    <van-icon name="static/images/icon-check.png" size="1.5rem" />
+                  </div>
+                  <div style="margin-left: 3px; font-size: 1rem;">查看数据</div>
+                </div>
+              </div>
+              
+            </div>
+          </van-cell>
+        </van-swipe-cell>
+
+        <!-- 数据提示 -->
+        <div>
+          <div v-if="refreshing"></div>
+          <div v-else-if="showProperties.length == 0" style="text-align: center; padding: 20px; color: #ccc;">
+            <span>暂无数据</span>
+          </div>
+        </div>
+
+      </van-pull-refresh>
+      <!-- 返回顶部 -->
+      <van-back-top target=".container" right="5vw" bottom="80px" />
+    </div>
+
+
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, onMounted } from 'vue'
+import { useRouter } from 'vue-router';
+import { post_promise } from '@/network/axios';
+import { DeviceEntity, ProductEntity } from '@/api/model';
+import { CusNavigation } from '@/components'
+import { timestampToTime } from '@/utils'
+import { showToast } from 'vant';
+
+
+// 点击搜索
+const onSearch = (keyWord: string) => {
+  console.log('jjj')
+  console.log(keyWord)
+  keyword.value = keyWord
+  search();
+}
+
+
+
+const refreshing = ref(false);
+const onRefresh = () => {
+  console.log('onrefresh...')
+  console.log(refreshing.value)
+  refreshList();
+  refreshing.value = false
+};
+
+
+// 属性
+interface Property{
+  name: string,
+  value: string,
+  date: string,
+  info?: string
+  model?: any
+}
+// 设备
+const device = ref<DeviceEntity>();
+// 产品
+const product = ref<ProductEntity>();
+// 显示属性
+const showProperties = ref<Property[]>([]);
+// 根据key获取属性
+const getModel = (key: any) => {
+
+const models = product.value?.model;
+for(let i = 0; i < models.length; i++){
+  const model = models[i]
+  if(key == model.title){
+    return model;
+  }
+}
+return undefined;
+}
+// 搜索
+const keyword = ref<string>('');
+const search = function(){
+  // if(!keyword.value){
+  //   showProperties.value = properties.value;
+  //   return;
+  // }
+  console.log(product.value?.model)
+
+  showProperties.value = [];
+  const data = device.value?.data;
+  for (const key in data) {
+    const model = getModel(key)
+    if (Object.prototype.hasOwnProperty.call(data, key) && model) {
+      // console.log(key, model)
+      const element = data[key];
+      const property:Property = {
+        name: model.name,
+        value: element.value,
+        date: timestampToTime(element.time),
+        model: model
+      }
+      if(!keyword.value){
+        showProperties.value.push(property)
+      }else if(JSON.stringify(property).includes(keyword.value)){
+        showProperties.value.push(property)
+      }
+      
+    }
+  }
+
+  // device.value!.data.forEach((item) => {
+  //   console.log(item)
+  //   if(item.name.includes(keyword.value)){
+  //     showProperties.value.push(item)
+  //   }
+  // })
+}
+// 查询设备
+const refreshList = async () => {
+
+  await post_promise({url: '/device/search', data: {
+    size: 200,
+    page: 1,
+    sort: 'createtime',
+    order: 'desc',
+    keyWord: deviceId.value,
+  }})
+  .then((result: any) => {
+    if(!result.data[0].data) {
+      device.value = {
+        data: []
+      };
+      return Promise.reject('ok');
+    };
+    device.value = result.data[0];
+    device.value!.data = JSON.parse(result.data[0].data);
+    console.log(device.value)
+    return Promise.resolve(device.value)
+  })
+  .then((device: any) => {
+    console.log(device.productId)
+    if(!product.value){
+      product.value = {
+        id: '',
+        name: device.productName,
+        model: []
+      }
+      return post_promise({url: '/model/search', data: {
+        size: 200,
+        page: 1,
+        sort: 'code',
+        order: 'asc',
+        productId: device.productId,
+      }})
+    }else{
+      console.log('else...........')
+      return Promise.reject('ok')
+    }
+    
+  })
+  .then((result: any) => {
+    console.log(result)
+    result.data.forEach((element: any) => {
+      element.define = JSON.parse(element.define)
+      product.value!.model.push(element)
+    });
+    return post_promise({url: '/model/searchCommon', data: {
+      size: 200,
+      page: 1,
+      sort: 'code',
+      order: 'asc',
+    }})
+  })
+  .then((result: any) => {
+    console.log(result)
+    result.data.forEach((element: any) => {
+      element.define = JSON.parse(element.define)
+      product.value!.model.push(element)
+    });
+  })
+  .catch((msg: any) => {
+    if(msg != 'ok'){
+      console.log(msg)
+      showToast(msg);
+    }
+  })
+
+  search();
+
+}
+
+
+
+
+const router = useRouter();
+const deviceId = ref('');
+// 生命周期
+onMounted(() => {
+  console.log('deviceDetail onMounted')
+  deviceId.value = router.currentRoute.value.params.deviceId as string;
+  refreshList();
+})
+
+</script>
+
+<style scoped></style>

+ 20 - 7
src/pages/device/list/Index.vue

@@ -71,24 +71,25 @@
               </div>
               <!-- 第四行 -->
               <div style="display: flex; justify-content: space-between;">
-                <div style="display: flex; color: #000;">
+                <div style="display: flex; color: #000;" @click.stop="onLocation(item.mac)">
                   <div>
                     <van-icon name="static/images/icon-location2.png" size="1.5rem" />
                   </div>
                   <div style="margin-left: 3px;">位置</div>
                 </div>
-                <div style="display: flex; color: #000;">
+                <div></div>
+                <div style="display: flex; color: #000;" @click.stop="onLog(item.mac)">
                   <div>
                     <van-icon name="static/images/icon-log.png" size="1.5rem" />
                   </div>
-                  <div style="margin-left: 3px;">日志</div>
+                  <div style="margin-left: 3px;">传输日志</div>
                 </div>
-                <div style="display: flex; color: #000;">
+                <!-- <div style="display: flex; color: #000;">
                   <div>
                     <van-icon name="static/images/icon-edit.png" size="1.5rem" />
                   </div>
                   <div style="margin-left: 3px;">编辑</div>
-                </div>
+                </div> -->
               </div>
               
             </div>
@@ -123,11 +124,23 @@
 
 <script setup lang="ts">
   import { onMounted, reactive, ref } from 'vue';
-  // import { useRouter } from 'vue-router'
+  import { useRouter } from 'vue-router'
   import { post_promise } from '@/network/axios';
   import 'vant/es/toast/style';
   // 路由
-  // const router = useRouter();
+  const router = useRouter();
+  const onLocation = (deviceId: string) => {
+    console.log(deviceId)
+    // 跳转到定位
+    router.push('/device/location/' + deviceId)
+  }
+
+  // 跳转到日志
+  const onLog = (deviceId: string) => {
+    console.log(deviceId)
+    // 跳转到定位
+    router.push('/device/log/' + deviceId)
+  }
 
   // 搜索关键字
   const keyWord = ref('');

+ 14 - 0
src/router/index.ts

@@ -65,6 +65,20 @@ const routes: Array<RouteRecordRaw> = [
       keepAlive: false,
     }
   },
+  {
+    path: '/device/location/:deviceId',
+    component: () => import('@/pages/device/Location.vue'),
+    meta: {
+      keepAlive: false,
+    }
+  },
+  {
+    path: '/device/log/:deviceId',
+    component: () => import('@/pages/device/Log.vue'),
+    meta: {
+      keepAlive: false,
+    }
+  },
   {
     path: '/demo',
     component: () => import('@/pages/demo/Index1.vue')

+ 8 - 0
src/vite-env.d.ts

@@ -1 +1,9 @@
 /// <reference types="vite/client" />
+
+
+
+
+declare interface Window {
+  BMapGL: any,
+  BMAP_EARTH_MAP: any
+}

Some files were not shown because too many files changed in this diff