Browse Source

feat: 添加主页背景图和更新网络图片枚举,优化HTTP请求方法

EvilDragon 3 months ago
parent
commit
db302c3d65

+ 0 - 0
packages/assets/src/assets/svgs/homepage_bg.svg → packages/assets/src/assets/homepage_bg.svg


+ 2 - 0
packages/assets/src/libs/assets/homepage_bg.ts

@@ -0,0 +1,2 @@
+import homepage_bg from '../../assets/homepage_bg.svg' 
+ export default homepage_bg

+ 0 - 2
packages/assets/src/svgs.ts

@@ -15,7 +15,6 @@ import homepageBg from "./assets/svgs/homepage_bg.svg";
 import videoEyeIcon from "./assets/svgs/video_eye_icon.svg";
 import videoPlayIcon from "./assets/svgs/video_play_icon.svg";
 import router from "./assets/svgs/router";
-import pageHeaderBg from "./assets/svgs/pageHeaderBg";
 import scanIcon from "./assets/svgs/scan_icon.svg";
 import bookIcon from "./assets/svgs/book_icon.svg";
 import pageHeaderFilter from "./assets/svgs/pageHeaderFilter";
@@ -23,7 +22,6 @@ import filterIcon from "./assets/svgs/filter_icon.svg";
 
 export {
   ts,
-  pageHeaderBg,
   pageHeaderFilter,
   merchantPageHeaderBg,
   loginAccountIcon,

+ 1 - 2
packages/merchant/src/components/page-helper-evo.vue

@@ -1,7 +1,6 @@
 <script setup lang="ts" generic="T extends Object, R extends { list: T[] }, Q extends T">
 import { ResPageData } from '@designer-hub/app/src/core/libs/models'
-// import { NetImages } from '../core/libs/net-images'
-import { NetImages } from '@designer-hub/app/src/core/libs/net-images'
+import { NetImages } from '../core/libs/net-images'
 import { getRect, addUnit } from 'wot-design-uni/components/common/util'
 
 const props = withDefaults(

+ 15 - 0
packages/merchant/src/core/libs/net-images.ts

@@ -0,0 +1,15 @@
+export enum NetImages {
+  'default' = 'https://cdn.jsdelivr.net/gh/yangyang-yangyang/yangyang-yangyang.github.io@master/images/default.png',
+  'avatar' = 'https://cdn.jsdelivr.net/gh/yangyang-yangyang/yangyang-yangyang.github.io@master/images/avatar.png',
+  'NotContent' = 'https://image.zhuchaohui.com/zhucaohui/3819d411440c23cc9e4f4bd3a520325386d7f038ed6dfa7c2ba076bd5110d2d2.png',
+  'DesigerHomepageDefaultBg' = 'https://image.zhuchaohui.com/zhucaohui/58dcb982d2957c5578478abbf000936efe9d11c96c5af4d457177cf5d90a9d39.png',
+  ConsultDefaultBg = 'https://image.zhuchaohui.com/zhucaohui/7e98b5995902cd9484a6baecfc1219420cbcc30d8ae11e058af0c140a3c11137.png',
+  StudyTourItemBg = 'https://image.zhuchaohui.com/zhucaohui/254b7ea7fdecaba8e318a7f50e292d036cafe49904fc7fc160a5477ce921e261.png',
+  DefaultAvatar = 'https://image.zhuchaohui.com/zhucaohui/0b57771c2fbe60157e592a5b0e51a2b2b6c5263300663ad33efd55b235a2402a.png',
+  InviteBg = 'https://image.zhuchaohui.com/zhucaohui/b8f5350f9c09c1210adfa1417aaba4160b583928765df14194be2227ee928305.png',
+  Logo = 'https://image.zhuchaohui.com/zhucaohui/186acb6fdb8c8499c5ea77af317bfdab426edea94a009f8575877ab5179092d0.png',
+  TopSpotlight = 'https://image.zhuchaohui.com/zhucaohui/3a561f2dcbfd84474e44ff8f031c6ac749a874cb27c8a2f94f26a42a4633302b.png',
+  Stars = 'https://image.zhuchaohui.com/zhucaohui/dc15a86a2034ddc17e2825b56319902af1635c20e065919750ebbe51ee95f635.png',
+  HonorsHeader = 'https://image.zhuchaohui.com/zhucaohui/3945d2a7643317aca126c4b766139c4560c6ce2c051b7e03ee0ac664abe966c3.png',
+  CyclingRankingsHeaderBg = 'https://image.zhuchaohui.com/zhucaohui/2351014a57a0df427516c4993876ade7e3695ce33b1f227c52c8381aa631ba02.png',
+}

+ 6 - 2
packages/merchant/src/core/libs/requests.ts

@@ -1,9 +1,8 @@
-import { http, httpGet, httpPost } from '../../utils/http'
+import { httpGet, httpPost, httpPut, httpDelete } from '../../utils/http'
 import { Schedule } from '../models/schedule'
 import { Moment } from '../models/moment'
 import dayjs from 'dayjs'
 import { PointsOrder, ResPageData, Todo } from '@designer-hub/app/src/core/libs/models'
-import { httpDelete, httpPut } from '../../../../app/src/utils/http'
 
 export const getUserInfo = () =>
   httpGetMock<any>({
@@ -343,6 +342,11 @@ export const deleteTodo = (id: number) => httpDelete('/app-api/member/todo/delet
  */
 export const updateTodo = (data: Partial<Todo>) =>
   httpPut('/app-api/member/todo/updateStatus', data)
+/**
+ * 渠道端-获取设计师活动列表
+ */
+export const getDeignerPointsActivities = (query) =>
+  httpGet<any>('/app-api/member/points-order/getPointsDynamics', query)
 export const httpGetMock = <T>(data: T) =>
   new Promise<IResData<T>>((resolve) => resolve({ code: 1, msg: '', data } as IResData<T>))
 export interface Circle {

+ 0 - 8
packages/merchant/src/pages.json

@@ -67,14 +67,6 @@
       }
     },
     {
-      "path": "pages/designer/homepage",
-      "type": "page",
-      "style": {
-        "navigationBarTitleText": "个人主页",
-        "navigationBarBackgroundColor": "#fff"
-      }
-    },
-    {
       "path": "pages/designer/index",
       "type": "page",
       "style": {

+ 0 - 304
packages/merchant/src/pages/designer/homepage.vue

@@ -1,304 +0,0 @@
-<route lang="yaml">
-style:
-  navigationBarTitleText: 个人主页
-  navigationBarBackgroundColor: '#fff'
-</route>
-
-<script setup lang="ts">
-import {
-  vipIcon,
-  shareIcon,
-  praiseIcon,
-  messageIcon,
-  yinyongIcon,
-  homepageBg,
-  videoEyeIcon,
-  videoPlayIcon,
-} from '@designer-hub/assets/src/svgs'
-const tab = ref(0)
-const tabs = ref([
-  { label: '案例', value: 'integral' },
-  { label: '动态', value: 'system' },
-  { label: '视频', value: 'interact' },
-])
-</script>
-
-<template>
-  <view>
-    <div class="aspect-[1.13/1] absolute left-0 right-0 top-0">
-      <wd-img width="100%" height="100%" :src="homepageBg" custom-class="vertical-top"></wd-img>
-    </div>
-    <div class="flex flex-col relative mt-[180px]">
-      <div class="rounded-2xl flex items-center p-4">
-        <div>
-          <img class="w-16 h-16 rounded-full" src="https://via.placeholder.com/64x64" />
-        </div>
-        <div class="flex-1 ml-[11px]">
-          <div class="flex flex-col w-[100%]">
-            <div class="flex-row flex items-center justify-between w-full">
-              <div class="flex-row flex items-center">
-                <div class="text-white text-2xl font-normal font-['PingFang_SC'] leading-normal">
-                  苏小萌
-                </div>
-
-                <div
-                  class="h-4 bg-neutral-100 rounded-[20px] justify-start items-center inline-flex flex-row ml-[9px]"
-                >
-                  <wd-img width="17" height="17" :src="vipIcon"></wd-img>
-
-                  <div
-                    class="text-black/40 text-[10px] font-normal font-['PingFang_SC'] px-[7px] leading-none"
-                  >
-                    白银会员
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-          <div class="mt-[12px] flex items-center">
-            <div
-              class="text-center text-white text-[10px] font-normal font-['PingFang_SC'] leading-normal"
-            >
-              创设空间事务所创始人
-            </div>
-          </div>
-        </div>
-      </div>
-      <div class="bg-white rounded-tl-2xl rounded-tr-2xl border-2 pa-[11px]">
-        <div class="flex items-center justify-start gap-[6px]">
-          <div class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-[26.98px]">
-            10
-          </div>
-          <div class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[26.98px]">
-            从业年限
-          </div>
-          <div style="width: 1px; height: 10px; background-color: black"></div>
-          <div class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-[26.98px]">
-            10
-          </div>
-          <div class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[26.98px]">
-            客户
-          </div>
-        </div>
-        <div
-          class="w-[347px] h-10 text-black/40 text-sm font-normal font-['PingFang_SC'] leading-normal mt-[21px]"
-        >
-          “设计没有风格,设计是对生活的一种诠释,不是所谓的造型与装饰!”
-        </div>
-        <div class="mt-[26px]">
-          <div
-            class="h-7 px-3 py-0.5 bg-[#e6e6e6]/40 rounded-[30px] justify-center items-center gap-2.5 inline-flex"
-          >
-            <div
-              class="text-center text-black/60 text-xs font-normal font-['PingFang_SC'] leading-normal"
-            >
-              日本设计游学
-            </div>
-          </div>
-        </div>
-      </div>
-      <div>
-        <wd-tabs v-model="tab">
-          <block v-for="(item, index) in tabs" :key="item">
-            <wd-tab :title="`${item.label}`">
-              <view class="content ma-[15px]" v-if="index === 0">
-                <div class="bg-white rounded-2xl shadow pa-[15px] mt-[20px] flex-col gap-2 flex">
-                  <div class="flex items-center justify-between">
-                    <div class="flex items-center">
-                      <img
-                        class="w-[35px] h-[35px] rounded-full"
-                        src="https://via.placeholder.com/35x35"
-                      />
-                      <div
-                        class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-[10.18px] ml-[11px]"
-                      >
-                        苏小萌
-                      </div>
-                    </div>
-                    <div
-                      class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[10.18px]"
-                    >
-                      4小时前
-                    </div>
-                  </div>
-                  <div
-                    class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-normal mr-[15px] mt-[29px]"
-                  >
-                    和周老师在工作碰了环球项目,选了瓷砖款式,后天客户交定金,订单金额初步为 304958
-                  </div>
-                  <div class="mt-[15px]">
-                    <img
-                      class="w-[319px] h-[194px] rounded-lg"
-                      src="https://via.placeholder.com/319x194"
-                    />
-                  </div>
-                  <div
-                    class="text-black text-lg font-normal font-['PingFang_SC'] leading-[10.18px] mt-[20px]"
-                  >
-                    现代 | 日星花园
-                  </div>
-                  <div
-                    class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[10.18px] mt-[18px]"
-                  >
-                    龙湖狮山天街生活广场三期·780 m²·全案定制
-                  </div>
-                  <div class="flex items-center justify-between mt-[19px]">
-                    <div class="flex items-center gap-[8px]">
-                      <wd-img width="17" height="17" :src="shareIcon"></wd-img>
-                      <div
-                        class="text-black/90 text-sm font-normal font-['D-DIN Exp'] leading-snug"
-                      >
-                        232
-                      </div>
-                    </div>
-                    <div class="flex items-center gap-[8px]">
-                      <wd-img width="17" height="17" :src="messageIcon"></wd-img>
-                      <div
-                        class="text-black/90 text-sm font-normal font-['D-DIN Exp'] leading-snug"
-                      >
-                        232
-                      </div>
-                    </div>
-                    <div class="flex items-center gap-[8px]">
-                      <wd-img width="17" height="17" :src="praiseIcon"></wd-img>
-                      <div
-                        class="text-black/90 text-sm font-normal font-['D-DIN Exp'] leading-snug"
-                      >
-                        232
-                      </div>
-                    </div>
-                    <div
-                      class="text-black/30 text-xs font-normal font-['PingFang_SC'] leading-[10.18px]"
-                    >
-                      删除x
-                    </div>
-                  </div>
-                </div>
-              </view>
-              <view class="content ma-[15px]" v-if="index === 1">
-                <div class="bg-white rounded-2xl shadow pa-[15px] mt-[20px] flex-col gap-2 flex">
-                  <div class="flex items-center justify-between">
-                    <div class="flex items-center">
-                      <img
-                        class="w-[35px] h-[35px] rounded-full"
-                        src="https://via.placeholder.com/35x35"
-                      />
-                      <div
-                        class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-[10.18px] ml-[11px]"
-                      >
-                        苏小萌
-                      </div>
-                      <div
-                        class="h-4 bg-neutral-100 rounded-[20px] justify-start items-center inline-flex flex-row ml-[9px]"
-                      >
-                        <wd-img width="17" height="17" :src="vipIcon"></wd-img>
-
-                        <div
-                          class="text-black/40 text-[10px] font-normal font-['PingFang_SC'] px-[7px] leading-none"
-                        >
-                          白银会员
-                        </div>
-                      </div>
-                    </div>
-                    <div
-                      class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[10.18px]"
-                    >
-                      4小时前
-                    </div>
-                  </div>
-
-                  <div class="mt-[15px]">
-                    <img
-                      class="w-[70px] h-[70px] rounded-lg"
-                      src="https://via.placeholder.com/70x70"
-                    />
-                  </div>
-                  <div
-                    class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-[10.18px] mt-[30px]"
-                  >
-                    用心做好设计,为客户创造美好家居环境
-                  </div>
-
-                  <div
-                    class="h-7 py-1.5 rounded-[50px] border border-black/20 justify-start items-center gap-[5px] inline-flex mt-[29px]"
-                  >
-                    <wd-img width="17" height="17" :src="yinyongIcon"></wd-img>
-
-                    <div
-                      class="text-black/60 text-xs font-normal font-['PingFang_SC'] leading-none"
-                    >
-                      意大利游学设计班
-                    </div>
-                  </div>
-                  <div class="flex items-center justify-between mt-[19px]">
-                    <div class="flex items-center gap-[8px]">
-                      <wd-img width="17" height="17" :src="shareIcon"></wd-img>
-                      <div
-                        class="text-black/90 text-sm font-normal font-['D-DIN Exp'] leading-snug"
-                      >
-                        232
-                      </div>
-                    </div>
-                    <div class="flex items-center gap-[8px]">
-                      <wd-img width="17" height="17" :src="messageIcon"></wd-img>
-                      <div
-                        class="text-black/90 text-sm font-normal font-['D-DIN Exp'] leading-snug"
-                      >
-                        232
-                      </div>
-                    </div>
-                    <div class="flex items-center gap-[8px]">
-                      <wd-img width="17" height="17" :src="praiseIcon"></wd-img>
-                      <div
-                        class="text-black/90 text-sm font-normal font-['D-DIN Exp'] leading-snug"
-                      >
-                        232
-                      </div>
-                    </div>
-                    <div
-                      class="text-black/30 text-xs font-normal font-['PingFang_SC'] leading-[10.18px]"
-                    >
-                      删除x
-                    </div>
-                  </div>
-                </div>
-              </view>
-              <view class="content" v-if="index === 2">
-                <div class="pa-[15px] mt-[0px] flex-col gap-2">
-                  <div class="grid-cols-2 gap-2.5 grid">
-                    <div class="relative">
-                      <img
-                        class="w-[168px] h-[220px] rounded-lg"
-                        src="https://via.placeholder.com/168x220"
-                      />
-                      <div style="position: absolute; top: 10px; left: 10px">
-                        <wd-img width="17" height="17" :src="videoPlayIcon"></wd-img>
-                      </div>
-                      <div
-                        style="position: absolute; right: 10px; bottom: 10px"
-                        class="flex items-center gap-[2px]"
-                      >
-                        <div
-                          class="text-[#cacaca] text-xs font-normal font-['PingFang_SC'] leading-normal"
-                        >
-                          315
-                        </div>
-                        <wd-img width="17" height="17" :src="videoEyeIcon"></wd-img>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </view>
-            </wd-tab>
-          </block>
-        </wd-tabs>
-      </div>
-    </div>
-  </view>
-</template>
-
-<style scoped lang="scss">
-:deep(.wd-tabs) {
-  background: transparent;
-}
-</style>

+ 34 - 97
packages/merchant/src/pages/home/index.vue

@@ -10,9 +10,8 @@
 </route>
 
 <script lang="ts" setup>
-import useRequest from '../../hooks/useRequest'
 import dayjs from 'dayjs'
-import { getCircles, scanCodeCheckPaper } from '../../core/libs/requests'
+import { getDeignerPointsActivities, scanCodeCheckPaper } from '../../core/libs/requests'
 import SectionHeading from '@designer-hub/app/src/components/section-heading.vue'
 import Card from '@designer-hub/app/src/components/card.vue'
 import { merchantPageHeaderBg, scanIcon, bookIcon } from '@designer-hub/assets/src/svgs'
@@ -20,8 +19,8 @@ import { useUserStore } from '../../store'
 import { storeToRefs } from 'pinia'
 import { qrCodeString2Object, requestToast } from '@designer-hub/app/src/core/utils/common'
 import { QrCodeBusinessType } from '../../core/libs/enums'
-import NavbarEvo from '@/components/navbar-evo.vue'
 import { useRouter } from '../../composables/router'
+import PageHelperEvo from '@/components/page-helper-evo.vue'
 
 defineOptions({
   name: 'Home',
@@ -29,81 +28,8 @@ defineOptions({
 const router = useRouter()
 const userStore = useUserStore()
 const { isLogined, userInfo } = storeToRefs(userStore)
-// 测试 uni API 自动引入
-const { data } = useRequest(async () => ({ code: 0, msg: '', data: {} }) as IResData<any>, {
-  initialData: {
-    banners: [],
-    hots: [
-      {
-        id: 1,
-        title: '日本研学·东京艺术大学游学',
-        img: '',
-        start: dayjs('2024-07-15').toDate(),
-        end: dayjs('2024-08-10').toDate(),
-      },
-      {
-        id: 1,
-        title: '日本研学·东京艺术大学游学',
-        img: '',
-        start: dayjs('2024-07-15').toDate(),
-        end: dayjs('2024-08-10').toDate(),
-      },
-    ],
-    dynamics: [
-      {
-        author: {
-          avatar: 'https://via.placeholder.com/35x35',
-          nickname: '苏小萌',
-          level: '0',
-        },
-        content: '用心做好设计,为客户创造美好家居环境',
-        images: ['https://via.placeholder.com/165x220'],
-        tags: ['意大利游学设计班'],
-        shares: 0,
-        comments: 0,
-        likes: 0,
-        createdAt: dayjs('2024-07-15').toDate(),
-      },
-      {
-        author: {
-          avatar: 'https://via.placeholder.com/35x35',
-          nickname: '苏小萌',
-          level: '0',
-        },
-        content: '用心做好设计,为客户创造美好家居环境',
-        images: ['https://via.placeholder.com/220x165'],
-        tags: ['意大利游学设计班'],
-        shares: 0,
-        comments: 0,
-        likes: 0,
-        createdAt: dayjs('2024-07-15').toDate(),
-      },
-      {
-        author: {
-          avatar: 'https://via.placeholder.com/35x35',
-          nickname: '苏小萌',
-          level: '0',
-        },
-        content: '用心做好设计,为客户创造美好家居环境',
-        images: [
-          'https://via.placeholder.com/104x104',
-          'https://via.placeholder.com/104x204',
-          'https://via.placeholder.com/204x104',
-        ],
-        tags: ['意大利游学设计班'],
-        shares: 0,
-        comments: 0,
-        likes: 0,
-        createdAt: dayjs('2024-07-15').toDate(),
-      },
-    ],
-    studyTour: null,
-  },
-})
-const { data: circlesData, run } = useRequest(() => getCircles({}), { initialData: { list: [] } })
 const orderAmount = ref()
 const pointsAmount = computed(() => orderAmount.value * 10)
-console.log(data.value)
 const toDesigner = () => {
   uni.navigateTo({ url: '/pages/designer/index' })
 }
@@ -133,11 +59,13 @@ const handle2Settlement = () => {
 const toAddReporting = () => {
   uni.navigateTo({ url: '/pages/home/merchant/add-reporting-information' })
 }
-onShow(async () => {})
+onShow(async () => {
+  await Promise.all([])
+})
 onLoad(() => {
   console.log(isLogined.value)
   if (!isLogined.value) {
-    // uni.reLaunch({ url: '/pages/login/index' })
+    uni.reLaunch({ url: '/pages/login/index' })
   }
 })
 onShareAppMessage(() => ({}))
@@ -233,27 +161,36 @@ onShareAppMessage(() => ({}))
         </div>
         <div>
           <SectionHeading title="设计师最新动态" path="" custom-class="mb-5"></SectionHeading>
-          <div class="flex flex-col gap-4">
-            <template
-              v-for="{ title, date } of [
-                { title: '苏小萌报名了日本设计游学', date: new Date() },
-                { title: '苏小萌报名了骑行活动', date: new Date() },
-                { title: '苏小萌获取imola16000积分', date: new Date() },
-              ]"
-              :key="title"
-            >
-              <Card>
-                <div class="text-black/90 text-sm font-normal font-['PingFang_SC'] leading-none">
-                  {{ title }}
-                </div>
-                <div
-                  class="mt-3 text-black/30 text-xs font-normal font-['PingFang_SC'] leading-none"
+          <PageHelperEvo
+            :request="getDeignerPointsActivities"
+            :query="{ brokerId: userInfo.userId }"
+          >
+            <template #default="{ source }">
+              <div class="flex flex-col gap-4">
+                <template
+                  v-for="{ title, date } of [
+                    { title: '苏小萌报名了日本设计游学', date: new Date() },
+                    { title: '苏小萌报名了骑行活动', date: new Date() },
+                    { title: '苏小萌获取imola16000积分', date: new Date() },
+                  ]"
+                  :key="title"
                 >
-                  {{ dayjs(date).format('YYYY-MM-DD hh:mm') }}
-                </div>
-              </Card>
+                  <Card>
+                    <div
+                      class="text-black/90 text-sm font-normal font-['PingFang_SC'] leading-none"
+                    >
+                      {{ title }}
+                    </div>
+                    <div
+                      class="mt-3 text-black/30 text-xs font-normal font-['PingFang_SC'] leading-none"
+                    >
+                      {{ dayjs(date).format('YYYY-MM-DD hh:mm') }}
+                    </div>
+                  </Card>
+                </template>
+              </div>
             </template>
-          </div>
+          </PageHelperEvo>
         </div>
       </div>
     </template>

+ 0 - 1
packages/merchant/src/types/uni-pages.d.ts

@@ -6,7 +6,6 @@
 interface NavigateToOptions {
   url: "/pages/login/index" |
        "/pages/designer/detail" |
-       "/pages/designer/homepage" |
        "/pages/designer/index" |
        "/pages/home/index" |
        "/pages/mine/index" |

+ 9 - 2
packages/merchant/src/utils/http.ts

@@ -10,9 +10,7 @@ export const http = async <T>(options: CustomRequestOptions) => {
     'tenant-id': 1,
     Authorization,
   }
-  // console.log(dayjs(userStore.userInfo.expiresTime).format('YYYY-MM-DD HH:mm:ss'))
   const diff = dayjs(userStore.userInfo.expiresTime).diff(dayjs(), 'minutes')
-  // console.log(diff)
   if (userStore.isLogined && diff < 10 && options.url !== '/app-api/member/auth/refresh-token') {
     const { data } = await refreshToken(userStore.userInfo.refreshToken)
 
@@ -115,6 +113,15 @@ export const httpPost = <T>(
     method: 'POST',
   })
 }
+export const httpPut = <T>(url: string, data?: Record<string, any>) =>
+  http<T>({
+    url,
+    query: {},
+    data,
+    method: 'PUT',
+  })
+export const httpDelete = <T>(url: string, query?: Record<string, any>) =>
+  http<T>({ url, query, method: 'DELETE' })
 
 http.get = httpGet
 http.post = httpPost