mirror of
https://github.com/XiaoDaiGua-Ray/ray-template.git
synced 2025-04-06 03:57:49 +08:00
2 lines
5.9 KiB
JavaScript
2 lines
5.9 KiB
JavaScript
var w=Object.defineProperty;var x=(e,t,r)=>t in e?w(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var R=(e,t,r)=>(x(e,typeof t!="symbol"?t+"":t,r),r);import{a as b}from"./axios@1.2.0-413e2d92.js";import{g as E,h as N,A as P}from"./index-28ba1be9.js";import{x as A,U as B,f as V,p as H,P as _,C as j,Z as K,B as O}from"./naive-ui@2.34.4_vue@3.2.47-32e0de7f.js";import{d as T,t as S,a,m as d}from"./@vue_runtime-core@3.2.47-0e1d4738.js";import{h as L,v as M}from"./@vue_reactivity@3.2.47-f5c8a668.js";import"./form-data@4.0.0-19dc8c5e.js";import"./@babel_runtime@7.22.6-960cbc2f.js";import"./@vue_runtime-dom@3.2.47-43f0d619.js";import"./@vue_shared@3.2.47-7b400ff4.js";import"./pinia@2.0.17_typescript@5.0.2_vue@3.2.47-a112ab9d.js";import"./vue-demi@0.14.5_vue@3.2.47-71ba0ef2.js";import"./lodash-es@4.17.21-92f3d5bd.js";import"./vue-i18n@9.2.2_vue@3.2.47-89f98dc3.js";import"./@intlify_shared@9.2.2-e4047ebf.js";import"./@intlify_core-base@9.2.2-a0a8715c.js";import"./@intlify_message-compiler@9.2.2-8a818441.js";import"./@intlify_devtools-if@9.2.2-c61c979f.js";import"./dayjs@1.11.7-adc18375.js";import"./vue-router@4.1.3_vue@3.2.47-450d1fe0.js";import"./@vueuse_core@9.1.0_vue@3.2.47-6868176a.js";import"./@vueuse_shared@9.1.0_vue@3.2.47-0bbfe17c.js";import"./screenfull@6.0.2-b3e6dc1f.js";import"./pinia-plugin-persistedstate@2.4.0_pinia@2.0.17-d93b4f94.js";import"./clipboard@2.0.11-6193b289.js";import"./date-fns@2.30.0-0bf1b710.js";import"./vueuc@0.4.51_vue@3.2.47-57ccb8de.js";import"./evtd@0.2.4-b614532e.js";import"./seemly@0.3.6-dc6f1e91.js";import"./@css-render_vue3-ssr@0.15.12_vue@3.2.47-1c0b4a7a.js";import"./vooks@0.2.12_vue@3.2.47-b42353d8.js";import"./vdirs@0.1.8_vue@3.2.47-4519c5fd.js";import"./@juggle_resize-observer@3.4.0-41516555.js";import"./css-render@0.15.12-57b1a53f.js";import"./@emotion_hash@0.8.0-8a8e73f6.js";import"./treemate@0.3.11-25c27bff.js";import"./date-fns-tz@1.3.8_date-fns@2.30.0-7cff6900.js";import"./async-validator@4.2.5-dee29e8b.js";import"./@css-render_plugin-bem@0.15.12_css-render@0.15.12-9dde7ffe.js";const U={baseURL:"",withCredentials:!1,timeout:5*1e3,headers:{"Content-Type":"application/json"}};class ${constructor(){R(this,"pendingRequest");this.pendingRequest=new Map}generateRequestKey(t){const{method:r,url:s}=t;return[s||"",r||"",JSON.stringify(t.params),JSON.stringify(t.data)].join("&")}addPendingRequest(t){var s;const r=this.generateRequestKey(t);if(this.pendingRequest.has(r))t.signal=(s=this.pendingRequest.get(r))==null?void 0:s.signal;else{const u=new AbortController;t.signal=u.signal,this.pendingRequest.set(r,u)}}removePendingRequest(t){const r=this.generateRequestKey(t);this.pendingRequest.has(r)&&(this.pendingRequest.get(r).abort(),this.pendingRequest.delete(r))}}const y={requestInstance:null,responseInstance:null},h={implementRequestInterceptorArray:[],implementResponseInterceptorArray:[]},c={implementRequestInterceptorErrorArray:[],implementResponseInterceptorErrorArray:[]},m=new $,I=()=>{const e=(n,o)=>{o==="requestInstance"?y.requestInstance=n:y.responseInstance=n},t=n=>y[n],r=(n,o,i)=>{i==="ok"?h[n]=o:c[n]=o},s=(n,o)=>o==="ok"?h[n]:c[n],u=(n,...o)=>{Array.isArray(n)&&(n==null||n.forEach(i=>{typeof i=="function"&&i(...o)}))};return{createAxiosInstance:e,setImplement:r,getImplement:s,getAxiosInstance:t,beforeFetch:(n,o,i)=>{const l=i==="ok"?h[o]:c[o],p=t(n),{MODE:v}=E();p&&u(l,p,v)},fetchError:(n,o,i)=>{const l=c[i],{MODE:p}=E();u(l,o,p)}}},{setImplement:g}=I(),J=(e,t)=>{m.removePendingRequest(e.config)},X=(e,t)=>{},Y=()=>{g("implementResponseInterceptorArray",[J],"ok")},z=()=>{g("implementResponseInterceptorErrorArray",[X],"error")},G=(e,t)=>{if(e){const r=e.headers;t.forEach(s=>{r[s.key]=s.value})}},{setImplement:f}=I(),Z=(e,t)=>{const r=N(P.token);return e.url,{key:"X-TOKEN",value:r}},Q=(e,t)=>{G(e,[Z(e),{key:"Demo-Header-Key",value:"Demo Header Value"}])},W=(e,t)=>{m.removePendingRequest(e),m.addPendingRequest(e)},ee=(e,t)=>{},te=()=>{f("implementRequestInterceptorArray",[Q,W],"ok")},re=()=>{f("implementRequestInterceptorErrorArray",[ee],"error")},q=b.create(U),{createAxiosInstance:F,beforeFetch:D,fetchError:k}=I();q.interceptors.request.use(e=>(F(e,"requestInstance"),te(),D("requestInstance","implementRequestInterceptorArray","ok"),e),e=>(re(),k("requestError",e,"implementRequestInterceptorErrorArray"),Promise.reject(e)));q.interceptors.response.use(e=>{F(e,"responseInstance"),Y(),D("responseInstance","implementResponseInterceptorArray","ok");const{data:t}=e;return Promise.resolve(t)},e=>(z(),k("responseError",e,"implementResponseInterceptorErrorArray"),m.removePendingRequest(e.config||{}),Promise.reject(e)));const C=async e=>q({url:`https://www.tianqiapi.com/api?version=v9&appid=23035354&appsecret=8YvlPNrz&city=${e}`}),Ue=T({name:"RAxios",setup(){const e=L({weatherData:[],inputCityValue:""}),t=[{title:"空气指数",key:"air"},{title:"风速",key:"win_meter"},{title:"能见度",key:"visibility"},{title:"天气情况",key:"wea_day"},{title:"提示",key:"air_tips"}],r=async s=>{try{const u=await C(s);e.weatherData=u.data}catch{window.$message.error("请求已被取消")}};return S(async()=>{const s=await C("成都");e.weatherData=s.data}),{...M(e),columns:t,handleInputCityValue:r}},render(){return a(O,null,{default:()=>[a(A,{bordered:!0},{default:()=>[a(B,{title:"请求函数"},{default:()=>[d("基于 axios 封装,能够自动取消连续请求,避免重复渲染造成问题"),a("p",null,[d("打开控制台 => 网络 => 使用低速3g网络 => 查看控制台被取消的请求")])]})]}),a(A,{bordered:!0},{default:()=>[a(V,{class:"axios-header__btn",align:"center"},{default:()=>[a(H,{value:this.inputCityValue,"onUpdate:value":e=>this.inputCityValue=e,onInput:this.handleInputCityValue.bind(this),placeholder:"请输入城市"},null),a(_,{onClick:this.handleInputCityValue.bind(this,"")},{default:()=>[d("搜索")]})]})]}),a(j,null,{default:()=>[a(K,{data:this.weatherData,columns:this.columns},null)]})]})}});export{Ue as default};
|