From 81095f57a1567b7511247bffec3606f40eaf0077 Mon Sep 17 00:00:00 2001 From: weipengfei <2187978347@qq.com> Date: Sat, 6 Apr 2024 10:21:06 +0800 Subject: [PATCH] 1 --- package-lock.json | 6 ++ package.json | 1 + src/layout/index.vue | 4 - src/router/index.js | 4 +- src/utils/axios.js | 8 +- src/views/home/index.vue | 2 +- src/views/order/component/order.vue | 144 ++++++++++++---------------- src/views/order/indexList.vue | 1 - src/vite-env.d.ts | 2 + tsconfig.json | 2 + vite.config.ts | 1 + 11 files changed, 82 insertions(+), 93 deletions(-) diff --git a/package-lock.json b/package-lock.json index 236db18..6ae3644 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "@element-plus/icons-vue": "^2.3.1", "axios": "^1.6.8", "element-plus": "^2.6.3", + "mitt": "^3.0.1", "pinia": "^2.1.7", "sass": "^1.72.0", "vue": "^3.4.21", @@ -1308,6 +1309,11 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, "node_modules/muggle-string": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", diff --git a/package.json b/package.json index 120e1db..7c40b8c 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "@element-plus/icons-vue": "^2.3.1", "axios": "^1.6.8", "element-plus": "^2.6.3", + "mitt": "^3.0.1", "pinia": "^2.1.7", "sass": "^1.72.0", "vue": "^3.4.21", diff --git a/src/layout/index.vue b/src/layout/index.vue index 8ebbb8e..7f2b3b9 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -1,10 +1,6 @@ <script setup> import myHeader from "./myHeader.vue"; import myAside from "./myAside.vue"; -import { initWS } from "@/utils/ws"; - -const ws = initWS('eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIxMjcuMC4wLjE6ODMyNCIsImF1ZCI6IjEyNy4wLjAuMTo4MzI0IiwiaWF0IjoxNzEyMTI4NDczLCJuYmYiOjE3MTIxMjg0NzMsImV4cCI6MTcxMjE1MDA3MywianRpIjpbMzAsIm1lciJdfQ.1HO_Ax3wxW-gloTRn6Psy4KYEdv8kuEqlgTJSl4G4Wk'); - </script> <template> diff --git a/src/router/index.js b/src/router/index.js index 4509fcd..27ce779 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,4 +1,4 @@ -import { createRouter, createWebHistory } from 'vue-router'; +import { createRouter, createWebHashHistory } from 'vue-router'; import layout from '@/layout/index.vue'; import { useUserStore } from '@/store/user.js'; @@ -46,7 +46,7 @@ const routes = [ ]; const router = createRouter({ - history: createWebHistory(), + history: createWebHashHistory(), routes }); diff --git a/src/utils/axios.js b/src/utils/axios.js index 0f3504b..c4b8d38 100644 --- a/src/utils/axios.js +++ b/src/utils/axios.js @@ -1,6 +1,6 @@ import axios from "axios"; import { ElMessage } from "element-plus"; -import { useRouter } from "vue-router"; +import router from "@/router/index.js"; import { useUserStore } from "../store/user"; const request = axios.create({ @@ -8,6 +8,7 @@ const request = axios.create({ timeout: 10000 }) + // 请求拦截器 request.interceptors.request.use( config => { @@ -31,17 +32,16 @@ request.interceptors.response.use( response => { // 对响应数据做些什么,例如解析数据、统一处理错误等 if (response.data.status === 401 || response.data.status === 40000) { - const router = useRouter(); ElMessage({ message: response.data.message, type: 'error', }) - setTimeout(() => { + setTimeout(()=>{ const userStore = useUserStore(); userStore.setUserInfo({}); userStore.setToken(''); router.push('/login'); - }, 800); + },700) } if (response.data.status === 400) { ElMessage({ diff --git a/src/views/home/index.vue b/src/views/home/index.vue index bba8940..a81e13c 100644 --- a/src/views/home/index.vue +++ b/src/views/home/index.vue @@ -29,7 +29,7 @@ const getStoreList = (data) => { ...data, }; storeListApi(userStore.userInfo.service.mer_id, where.value).then((res) => { - if(res.data.list.length < where.value.limit) loadEnd.value = true; + if(res.data?.list?.length < where.value.limit) loadEnd.value = true; let list = res.data.list.map((item) => { item.attr = Object.keys(item.sku); return item; diff --git a/src/views/order/component/order.vue b/src/views/order/component/order.vue index c0b66d7..9421f05 100644 --- a/src/views/order/component/order.vue +++ b/src/views/order/component/order.vue @@ -1,9 +1,44 @@ <script setup> import { ref } from "vue"; -import { cartListApi, cartDeleteApi, cartChangeApi } from "@/api/store.js"; +import { + orderListApi, + orderStatusApi, + orderLadingApi, + cartListApi +} from "@/api/store.js"; +import { useUserStore } from "@/store/user.js"; +import { ElMessage } from "element-plus"; +import { useRouter } from "vue-router"; + +const userStore = useUserStore(); const list = ref([]); -const keyword = ref('') +const keyword = ref(''); + +const tabPosition = ref(1); // 1-全部, 2-未支付 +const payRef = ref(null); + +const where = ref({ + page: 1, + limit: 20, +}); + +const loading = ref(false); +const total = ref(0); + +const orderList = ref([]); +const getOrderList = () => { + loading.value = true; + if (tabPosition.value == 1) where.value.paid = null; + if (tabPosition.value == 2) where.value.paid = 0; + orderListApi(userStore.userInfo.service.mer_id, where.value).then((res) => { + orderList.value = res.data.list; + total.value = res.data.count; + loading.value = false; + }); +}; + +getOrderList(); </script> @@ -13,12 +48,24 @@ const keyword = ref('') <div class="nav-item"> 订单列表 </div> - <div class="nav-item-clear" @click="clearAll"> - <el-icon><Delete /></el-icon>清空 + <div class="nav-item-clear"> + <el-icon><Delete /></el-icon> </div> </div> <div class="header-input"> - <el-input v-model="keyword" placeholder="请输入付款"></el-input> + <el-input v-model="keyword" placeholder="请输入订单编号"> + <template #append> + <el-button type="primary" style="background-color: #1890ff;color: #fff;border-radius: 0 5px 5px 0;">搜索</el-button> + </template> + </el-input> + </div> + <div class="order-list"> + <div class="item" v-for="(item, index) in orderList" :key="index"> + <div class="top"> + <div class="sn">单号: {{ item.order_sn }}</div> + <div class="create-time"> {{ item.create_time }}</div> + </div> + </div> </div> </div> </template> @@ -51,95 +98,30 @@ const keyword = ref('') .header-input{ padding: 1rem; padding-top: 0; - padding-bottom: 2rem; - height: 1.5rem; + height: 2.5rem; border-bottom: 1px solid #eee; } .order-list { - height: calc(100vh - 100px - 14rem); + height: calc(100vh - 100px - 8.2rem); overflow-y: auto; - .order-item { - display: flex; + .item{ padding: 1rem; - border-bottom: 1px solid #eee; - - .order-item-img { - width: 5rem; - height: 5rem; - border-radius: 0.5rem; - } - .order-item-info { - flex: 1; - box-sizing: border-box; - padding-left: 12px; + .top{ display: flex; - flex-direction: column; justify-content: space-between; - & > div { - display: flex; - align-items: center; - justify-content: space-between; - } - .order-item-title { - .title { - width: 18rem; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - .delete { - color: #1890ff; - cursor: pointer; + align-items: flex-end; + .sn{ + font-weight: bold; + font-size: 0.9rem; + &::before{ + } } - .order-item-sku { - cursor: pointer; + .create-time{ font-size: 0.8rem; - color: #999; } } } } - .order-footer { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - box-shadow: 0 -1px 10px #eee; - - .order-total { - height: 2.5rem; - padding: 1rem 2rem; - display: flex; - justify-content: space-between; - border-bottom: 1px solid #eee; - align-items: center; - .price { - display: flex; - align-items: center; - .total-item { - padding-right: 1.5rem; - span { - color: #f5222d; - } - } - } - .update-price { - .btn { - border-radius: 3rem; - } - } - } - .order-btn { - height: 3.2rem; - padding: 1rem 1.5rem; - .btn { - width: 100%; - height: 100%; - font-size: 1.2rem; - border-radius: 3rem; - } - } - } } </style> diff --git a/src/views/order/indexList.vue b/src/views/order/indexList.vue index f714567..6f9e21b 100644 --- a/src/views/order/indexList.vue +++ b/src/views/order/indexList.vue @@ -2,7 +2,6 @@ import { ref } from "vue"; import { orderListApi, - groupOrderListApi, orderStatusApi, orderLadingApi, cartListApi diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index 11f02fe..bd01096 100644 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -1 +1,3 @@ /// <reference types="vite/client" /> +declare module 'element-plus/dist/locale/zh-cn.mjs' +declare module './router' \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 9e03e60..0db6bf2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,6 +14,8 @@ "noEmit": true, "jsx": "preserve", + "allowJs": true, + /* Linting */ "strict": true, "noUnusedLocals": true, diff --git a/vite.config.ts b/vite.config.ts index 9732daa..3611be8 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,6 +4,7 @@ import vue from '@vitejs/plugin-vue' // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue()], + base: './', server: { port: '5175', host: '0.0.0.0',