ray-template/assets/index-8540e42e.js
2023-06-12 15:41:15 +08:00

2 lines
4.3 KiB
JavaScript

var C=Object.defineProperty;var F=(e,t,n)=>t in e?C(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var y=(e,t,n)=>(F(e,typeof t!="symbol"?t+"":t,n),n);import{a as A}from"./axios-760d4776.js";import{g as x}from"./index-2371ec4f.js";import{x as q,U as D,f as E,p as w,P as v,B as b,X as N,A as P}from"./naive-ui-bed575c4.js";import{h as k,H as V,k as j,O as B,ad as r,e as c}from"./@vue-5ea710d1.js";import"./dayjs-fb92b34a.js";import"./date-fns-43132c58.js";import"./pinia-752c5196.js";import"./vue-demi-71ba0ef2.js";import"./lodash-es-de060e62.js";import"./vue-i18n-a81083e4.js";import"./@intlify-deb68647.js";import"./vue-router-73d0f31d.js";import"./@vueuse-1c312fe5.js";import"./screenfull-b3e6dc1f.js";import"./pinia-plugin-persistedstate-d93b4f94.js";import"./vueuc-ab337559.js";import"./evtd-b614532e.js";import"./seemly-dc6f1e91.js";import"./@css-render-3e4116d4.js";import"./vooks-30ff42a2.js";import"./vdirs-b0483831.js";import"./@juggle-41516555.js";import"./css-render-d3958e6a.js";import"./@emotion-8a8e73f6.js";import"./treemate-25c27bff.js";import"./date-fns-tz-9041c6f6.js";import"./async-validator-dee29e8b.js";const K={baseURL:"",withCredentials:!1,timeout:5*1e3,headers:{"Content-Type":"application/json"}};class O{constructor(){y(this,"pendingRequest");this.pendingRequest=new Map}generateRequestKey(t){const{method:n,url:o}=t;return[o||"",n||"",JSON.stringify(t.params),JSON.stringify(t.data)].join("&")}addPendingRequest(t){const n=this.generateRequestKey(t);if(this.pendingRequest.has(n))t.signal=this.pendingRequest.get(n).signal;else{const o=new AbortController;t.signal=o.signal,this.pendingRequest.set(n,o)}}removePendingRequest(t){const n=this.generateRequestKey(t);this.pendingRequest.has(n)&&(this.pendingRequest.get(n).abort(),this.pendingRequest.delete(n))}}const p={requestInstance:null,responseInstance:null},l={implementRequestInterceptorArray:[],implementResponseInterceptorArray:[]},u=new O,m=()=>{const e=s=>s==="requestInstance"?"implementRequestInterceptorArray":"implementResponseInterceptorArray",t=s=>{p.requestInstance=s},n=s=>{p.responseInstance=s},o=s=>p[s];return{createRequestAxiosInstance:t,createResponseAxiosInstance:n,beforeAxiosFetch:s=>{const a=l[e(s)],h=o(s),{MODE:f}=x();h&&(a==null||a.forEach(I=>{typeof I=="function"&&I(h,f)}))},setImplementQueue:(s,a)=>{s&&a&&(l[e(a)]=s)},getImplementQueue:s=>l[e(s)],getAxiosFetchInstance:o}},Q=(e,t)=>{if(e){const n=e.headers;t.forEach(o=>{n[o.key]=o.value})}},{setImplementQueue:_}=m(),H=(e,t)=>{Q(e,[{key:"X-TOKEN",value:"token"}])},T=(e,t)=>{u.removePendingRequest(e),u.addPendingRequest(e)},L=()=>{_([H,T],"requestInstance")},{setImplementQueue:S}=m(),M=(e,t)=>{u.removePendingRequest(e.config)},U=()=>{S([M],"responseInstance")},d=A.create(K),{createRequestAxiosInstance:X,createResponseAxiosInstance:$,beforeAxiosFetch:g}=m();d.interceptors.request.use(e=>(X(e),L(),g("requestInstance"),e),e=>Promise.reject(e));d.interceptors.response.use(e=>{$(e),U(),g("responseInstance");const{data:t}=e;return Promise.resolve(t)},e=>(u.removePendingRequest(e.config||{}),Promise.reject(e)));const R=async e=>d({url:`https://www.tianqiapi.com/api?version=v9&appid=23035354&appsecret=8YvlPNrz&city=${e}`}),xe=k({name:"RAxios",setup(){const e=V({weatherData:[],inputCityValue:""}),t=[{title:"空气指数",key:"air"},{title:"风速",key:"win_meter"},{title:"能见度",key:"visibility"},{title:"天气情况",key:"wea_day"},{title:"提示",key:"air_tips"}],n=async o=>{try{const i=await R(o);e.weatherData=i.data}catch{window.$message.error("请求已被取消")}};return j(async()=>{const o=await R("成都");e.weatherData=o.data}),{...B(e),columns:t,handleInputCityValue:n}},render(){return r(P,null,{default:()=>[r(q,{bordered:!0},{default:()=>[r(D,{title:"请求函数"},{default:()=>[c("基于 axios 封装,能够自动取消连续请求,避免重复渲染造成问题"),r("p",null,[c("打开控制台 => 网络 => 使用低速3g网络 => 查看控制台被取消的请求")])]})]}),r(q,{bordered:!0},{default:()=>[r(E,{class:"axios-header__btn",align:"center"},{default:()=>[r(w,{value:this.inputCityValue,"onUpdate:value":e=>this.inputCityValue=e,onInput:this.handleInputCityValue.bind(this),placeholder:"请输入城市"},null),r(v,{onClick:this.handleInputCityValue.bind(this,"")},{default:()=>[c("搜索")]})]})]}),r(b,null,{default:()=>[r(N,{data:this.weatherData,columns:this.columns},null)]})]})}});export{xe as default};