From c3ddddee3a3c712a3fd924513ea952ba2b3df6e0 Mon Sep 17 00:00:00 2001 From: dzq Date: Tue, 22 Apr 2025 10:47:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=94=A8=E6=88=B7=E5=A7=93=E5=90=8D=E5=B9=B6?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=82=A8=E7=89=A9=E6=9F=9C=E6=89=93=E5=BC=80?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在QyLoginDTO接口中添加name字段,并在wx存储中引入name变量。更新openCabinetApi接口以支持传递用户信息,确保在打开储物柜时记录用户身份和操作类型。 --- src/common/apis/shop/index.ts | 7 ++++--- src/common/apis/shop/type.ts | 14 ++++++++++++++ src/pages/approval/handle.vue | 13 ++++++++++++- src/pages/me/index.vue | 10 +++++++--- src/pages/order/Success.vue | 18 +++++++++++++++--- src/pages/order/index.vue | 16 +++++++++++++++- src/pinia/stores/wx.ts | 5 ++++- 7 files changed, 71 insertions(+), 12 deletions(-) diff --git a/src/common/apis/shop/index.ts b/src/common/apis/shop/index.ts index 65254ff..e106b27 100644 --- a/src/common/apis/shop/index.ts +++ b/src/common/apis/shop/index.ts @@ -1,5 +1,5 @@ import { request } from "@/http/axios" -import { GetBalanceResponse, GetOrdersByOpenIdDTO, QyLoginDTO, QyLoginRequestParams, ShopGoodsResponseData, SubmitOrderRequestData, SubmitOrderResponseData } from './type' +import { GetBalanceResponse, GetOrdersByOpenIdDTO, OpenCabinetApiData, QyLoginDTO, QyLoginRequestParams, ShopGoodsResponseData, SubmitOrderRequestData, SubmitOrderResponseData } from './type' import { GetOpenIdRequestParams } from './type' @@ -47,10 +47,11 @@ export function getOrdersByOpenIdApi(openid: string) { } /** 打开储物柜接口 */ -export function openCabinetApi(orderId: number, orderGoodsId: number) { +export function openCabinetApi(orderId: number, orderGoodsId: number, data: OpenCabinetApiData) { return request>({ url: `order/openCabinet/${orderId}/${orderGoodsId}`, - method: "post" + method: "post", + data }) } diff --git a/src/common/apis/shop/type.ts b/src/common/apis/shop/type.ts index a5a0133..bf49b59 100644 --- a/src/common/apis/shop/type.ts +++ b/src/common/apis/shop/type.ts @@ -107,4 +107,18 @@ export interface QyLoginDTO { userid: string openid: string isCabinetAdmin: number + name: string +} + +export interface OpenCabinetApiData { + // 用户ID + userid: string + // 是否内部用户(0否 1汇邦云用户 2企业微信用户) + isInternal: number + // 姓名 + name: string + // 联系电话 + mobile: string + // 操作类型(1用户 2管理员) + operationType: number } \ No newline at end of file diff --git a/src/pages/approval/handle.vue b/src/pages/approval/handle.vue index b89cd0c..c137c8c 100644 --- a/src/pages/approval/handle.vue +++ b/src/pages/approval/handle.vue @@ -9,12 +9,16 @@ import { useRoute, useRouter } from 'vue-router' import { useApprovalStore } from '@/pinia/stores/approval' import { useWxStore } from '@/pinia/stores/wx'; import Compressor from 'compressorjs'; +import { useAb98UserStore } from '@/pinia/stores/ab98-user' const { VITE_APP_BASE_API } = import.meta.env; const router = useRouter() const route = useRoute() const approvalStore = useApprovalStore(); const wxStore = useWxStore(); +const { openid, balance, corpidLogin, userid: qyUserid, name: qyName } = storeToRefs(wxStore); +const ab98UserStore = useAb98UserStore(); +const { tel, userid: ab98Userid, name } = storeToRefs(ab98UserStore); const formData = ref({ approvalId: approvalStore.currentApproval?.approvalId || 0, @@ -188,9 +192,16 @@ const handleOpenCabinet = async () => { isButtonDisabled.value = true try { + const isInternal = corpidLogin.value ? 2 : ab98Userid.value ? 1 : 0; const result = await openCabinetApi( approvalStore.currentApproval.orderId, - approvalStore.currentApproval.orderGoodsId + approvalStore.currentApproval.orderGoodsId, { + userid: isInternal === 2 ? qyUserid.value : ab98Userid.value, + isInternal: isInternal, + name: isInternal === 2 ? qyName.value : name.value, + mobile: tel.value, + operationType: 0 + } ) if (result.code !== 0) { showFailToast(result.msg || '开启失败') diff --git a/src/pages/me/index.vue b/src/pages/me/index.vue index c1e55da..d2bea43 100644 --- a/src/pages/me/index.vue +++ b/src/pages/me/index.vue @@ -9,8 +9,12 @@ const router = useRouter() const wxStore = useWxStore() const ab98UserStore = useAb98UserStore() -const { balance } = storeToRefs(wxStore) -const { name: userName, sex: userSex, face_img } = storeToRefs(ab98UserStore) +const { balance, name: qyName } = storeToRefs(wxStore); +const { name: userName, sex: userSex, face_img } = storeToRefs(ab98UserStore); + +const name = computed(() => { + return userName.value || qyName.value || '未知用户' +}) const userAvatar = face_img.value ? face_img.value : `${publicPath}img/1.jpg` @@ -29,7 +33,7 @@ const userAvatar = face_img.value ? face_img.value : `${publicPath}img/1.jpg` class="mr-4" />
-
{{ userName }}
+
{{ name }}
{{ userSex }}
diff --git a/src/pages/order/Success.vue b/src/pages/order/Success.vue index 34b26ff..5f4093e 100644 --- a/src/pages/order/Success.vue +++ b/src/pages/order/Success.vue @@ -2,23 +2,35 @@ import { useRouter } from 'vue-router' import { useRoute } from 'vue-router' import { Order, useOrderStore } from '@/pinia/stores/order' -import { useWxStoreOutside } from '@/pinia/stores/wx' +import { useWxStore, useWxStoreOutside } from '@/pinia/stores/wx' import { openCabinetApi } from '@/common/apis/shop' import { showSuccessToast, showFailToast } from 'vant' import { ref } from 'vue' +import { useAb98UserStore } from '@/pinia/stores/ab98-user' const router = useRouter() const route = useRoute() const orderStore = useOrderStore() -const wxStore = useWxStoreOutside() const orderId = ref(Number(route.query.orderId)) const currentOrder = ref() const isButtonDisabled = ref>({}) +const wxStore = useWxStore(); +const { openid, balance, corpidLogin, userid: qyUserid, name: qyName } = storeToRefs(wxStore); +const ab98UserStore = useAb98UserStore(); +const { tel, userid: ab98Userid, name } = storeToRefs(ab98UserStore); + async function handleOpenCabinet(orderId: number, orderGoodsId: number) { isButtonDisabled.value[orderGoodsId] = true try { - const result = await openCabinetApi(orderId, orderGoodsId) + const isInternal = corpidLogin.value ? 2 : ab98Userid.value ? 1 : 0; + const result = await openCabinetApi(orderId, orderGoodsId, { + userid: isInternal === 2 ? qyUserid.value : ab98Userid.value, + isInternal: isInternal, + name: isInternal === 2 ? qyName.value : name.value, + mobile: tel.value, + operationType: 0 + }); if (result.code !== 0) { showFailToast(result.msg || '开启失败,请稍后重试') return diff --git a/src/pages/order/index.vue b/src/pages/order/index.vue index d55a2b7..5866633 100644 --- a/src/pages/order/index.vue +++ b/src/pages/order/index.vue @@ -5,11 +5,18 @@ import { useRoute, useRouter } from 'vue-router' import { openCabinetApi } from '@/common/apis/shop' import { showSuccessToast, showFailToast } from 'vant' import { ref } from 'vue' +import { useWxStore } from '@/pinia/stores/wx' +import { useAb98UserStore } from '@/pinia/stores/ab98-user' const orderStore = useOrderStore() const route = useRoute() const router = useRouter() +const wxStore = useWxStore(); +const { openid, balance, corpidLogin, userid: qyUserid, name: qyName } = storeToRefs(wxStore); +const ab98UserStore = useAb98UserStore(); +const { tel, userid: ab98Userid, name } = storeToRefs(ab98UserStore); + const statusMap: Record = { 1: '待付款', 2: '已付款', @@ -65,7 +72,14 @@ async function handleOpenCabinet(item: OrderGoods) { const orderGoodsId = item.orderGoods.orderGoodsId isButtonDisabled.value[orderGoodsId] = true try { - const result = await openCabinetApi(orderId.value, orderGoodsId) + const isInternal = corpidLogin.value ? 2 : ab98Userid.value ? 1 : 0; + const result = await openCabinetApi(orderId.value, orderGoodsId, { + userid: isInternal === 2 ? qyUserid.value : ab98Userid.value, + isInternal: isInternal, + name: isInternal === 2 ? qyName.value : name.value, + mobile: tel.value, + operationType: 0 + }) if (result.code !== 0) { showFailToast(result.msg || '开启失败,请稍后重试') return diff --git a/src/pinia/stores/wx.ts b/src/pinia/stores/wx.ts index c0cfa07..3e47eec 100644 --- a/src/pinia/stores/wx.ts +++ b/src/pinia/stores/wx.ts @@ -19,6 +19,8 @@ export const useWxStore = defineStore("wx", () => { const corpidLogin = ref(false); // 是否是柜子管理员 const isCabinetAdmin = ref(false); + // 企业微信用户姓名 + const name = ref(""); // 设置 openid const setOpenid = (id: string) => { @@ -57,6 +59,7 @@ export const useWxStore = defineStore("wx", () => { userid.value = res.data.userid; openid.value = res.data.openid; isCabinetAdmin.value = res.data.isCabinetAdmin === 1; + name.value = res.data.name; } } @@ -87,7 +90,7 @@ export const useWxStore = defineStore("wx", () => { } } - return { code, state, openid, corpid, userid, balance, isCabinetAdmin, corpidLogin, + return { code, state, openid, corpid, userid, balance, isCabinetAdmin, corpidLogin, name, setOpenid, setBalance, handleWxCallback, setIsCabinetAdmin } })