feat: 添加商品审批流程相关功能
- 新增审批处理路由和页面 - 商品模型添加belongType字段区分审批类型 - 订单提交支持审批支付类型 - 根据商品类型自动选择支付方式 - 审批支付添加领用说明字段 - 优化余额获取逻辑
This commit is contained in:
parent
cbe79d1d6d
commit
089f78c836
|
@ -8,7 +8,8 @@ export type Goods = {
|
|||
coverImg: string,
|
||||
goodsDetail: string,
|
||||
usageInstruction: string,
|
||||
cellId: number
|
||||
cellId: number,
|
||||
belongType: number
|
||||
}
|
||||
|
||||
export type category = {
|
||||
|
@ -25,7 +26,7 @@ export interface SubmitOrderRequestData {
|
|||
/** 企业ID */
|
||||
corpid: string;
|
||||
/** 支付类型 wechat:微信 balance:余额 */
|
||||
paymentType: 'wechat' | 'balance';
|
||||
paymentType: 'wechat' | 'balance' | "approval";
|
||||
/** 联系电话 */
|
||||
mobile: string;
|
||||
/** 用户姓名 */
|
||||
|
@ -34,6 +35,7 @@ export interface SubmitOrderRequestData {
|
|||
qyUserid: string;
|
||||
/** 是否内部订单 0否 1汇邦云用户 2企业微信用户 */
|
||||
isInternal: number;
|
||||
applyRemark: string;
|
||||
/** 订单商品明细列表 */
|
||||
goodsList: Array<{
|
||||
goodsId: number
|
||||
|
|
|
@ -67,7 +67,6 @@ const wxStore = useWxStore();
|
|||
// 搜索参数
|
||||
const searchParams = reactive<SearchApiReturnApprovalQuery>({
|
||||
corpid: wxStore.corpid,
|
||||
approvalType: 0,
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
})
|
||||
|
@ -102,9 +101,13 @@ const handleCellClick = (approvalId: number) => {
|
|||
const approvalStore = useApprovalStore()
|
||||
const currentItem = list.value.find(item => item.approvalId === approvalId)
|
||||
if (currentItem) {
|
||||
approvalStore.setCurrentApproval(currentItem)
|
||||
approvalStore.setCurrentApproval(currentItem);
|
||||
}
|
||||
if (currentItem?.approvalType == 1) {
|
||||
router.push(`/approval/handleApply/${approvalId}`);
|
||||
} else {
|
||||
router.push(`/approval/handle/${approvalId}`);
|
||||
}
|
||||
router.push(`/approval/handle/${approvalId}`)
|
||||
}
|
||||
|
||||
// 状态标签类型
|
||||
|
|
|
@ -19,18 +19,37 @@ const { openid, balance, corpidLogin, userid: qyUserid, name: qyName } = storeTo
|
|||
const ab98UserStore = useAb98UserStore()
|
||||
const { tel, userid: ab98Userid, name } = storeToRefs(ab98UserStore)
|
||||
|
||||
const selectedPayment = ref<'wechat' | 'balance'>('wechat')
|
||||
const contact = ref("")
|
||||
const remark = ref("")
|
||||
const selectedPayment = ref<'wechat' | 'balance' | 'approval'>('wechat');
|
||||
const contact = ref("");
|
||||
const applyRemark = ref("");
|
||||
const submitting = ref(false);
|
||||
|
||||
const isApproval = computed(() => {
|
||||
return cartItems.value.some(item => item.product.belongType == 1);
|
||||
});
|
||||
|
||||
watch(corpidLogin, (newValue) => {
|
||||
if (newValue) {
|
||||
selectedPayment.value = 'balance';
|
||||
if (isApproval.value) {
|
||||
selectedPayment.value = 'approval';
|
||||
} else {
|
||||
selectedPayment.value = 'wechat';
|
||||
if (newValue) {
|
||||
selectedPayment.value = 'balance';
|
||||
} else {
|
||||
selectedPayment.value = 'wechat';
|
||||
}
|
||||
}
|
||||
}, { immediate: true });
|
||||
watch(isApproval, (newValue) => {
|
||||
if (newValue) {
|
||||
selectedPayment.value = 'approval';
|
||||
} else {
|
||||
if (corpidLogin.value) {
|
||||
selectedPayment.value = 'balance';
|
||||
} else {
|
||||
selectedPayment.value = 'wechat';
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
function callWxJsApi(paymentInfo: WxJsApiPreCreateResponse) {
|
||||
return new Promise((resolve, reject) => {
|
||||
|
@ -111,11 +130,12 @@ async function handleSubmit() {
|
|||
paymentType: selectedPayment.value,
|
||||
mobile: tel.value,
|
||||
name: isInternal === 2 ? qyName.value : name.value,
|
||||
applyRemark: applyRemark.value,
|
||||
qyUserid: isInternal === 2 ? qyUserid.value : ab98Userid.value,
|
||||
isInternal: isInternal
|
||||
}
|
||||
|
||||
const { code, data } = await submitOrderApi(requestData)
|
||||
const { code, data } = await submitOrderApi(requestData);
|
||||
|
||||
if (code !== 0) {
|
||||
throw new Error("订单提交失败")
|
||||
|
@ -125,7 +145,7 @@ async function handleSubmit() {
|
|||
if (data.paymentInfo) {
|
||||
await callWxJsApi(data.paymentInfo);
|
||||
}
|
||||
} else {
|
||||
} else if (selectedPayment.value === 'balance') {
|
||||
// 余额支付成功处理
|
||||
wxStore.setBalance(data.newBalance || 0);
|
||||
try {
|
||||
|
@ -135,6 +155,14 @@ async function handleSubmit() {
|
|||
})
|
||||
} catch (error) {
|
||||
}
|
||||
} else if (selectedPayment.value === 'approval') {
|
||||
// 审批支付成功处理
|
||||
try {
|
||||
await showConfirmDialog({
|
||||
title: "提交领用申请成功",
|
||||
message: `请等待管理员审批`
|
||||
})
|
||||
} catch (error) { }
|
||||
}
|
||||
|
||||
router.push({
|
||||
|
@ -193,7 +221,11 @@ async function handleSubmit() {
|
|||
</van-cell>
|
||||
</van-cell-group>
|
||||
|
||||
<van-cell-group class="contact-form">
|
||||
<van-cell-group v-if="isApproval">
|
||||
<van-field v-model="applyRemark" label="领用说明" type="textarea" rows="2" autosize />
|
||||
</van-cell-group>
|
||||
|
||||
<van-cell-group v-if="!isApproval" class="contact-form">
|
||||
<van-cell v-if="!corpidLogin" :class="['payment-option', { selected: selectedPayment === 'wechat' }]"
|
||||
@click="selectedPayment = 'wechat'">
|
||||
<van-icon name="wechat" class="method-icon" />
|
||||
|
|
|
@ -11,6 +11,7 @@ export interface Product {
|
|||
label: number // 商品标签
|
||||
cellId: number // 商品所在的格子ID
|
||||
usageInstruction: string // 商品使用说明
|
||||
belongType: number // 商品所属类型 0: 智借还 1: 固资通
|
||||
}
|
||||
|
||||
export const useProductStore = defineStore("product", () => {
|
||||
|
@ -50,7 +51,8 @@ export const useProductStore = defineStore("product", () => {
|
|||
image: g.coverImg,
|
||||
label: g.categoryId,
|
||||
cellId: g.cellId,
|
||||
usageInstruction: g.usageInstruction || ""
|
||||
usageInstruction: g.usageInstruction || "",
|
||||
belongType: g.belongType
|
||||
}))
|
||||
} catch (error) {
|
||||
console.error("获取商品数据失败:", error)
|
||||
|
|
|
@ -107,19 +107,20 @@ export const useWxStore = defineStore("wx", () => {
|
|||
if(corpid.value) {
|
||||
balanceRes = await getBalanceByQyUserid(corpid.value, userid.value);
|
||||
} else {
|
||||
balanceRes = await getBalanceApi(openid.value)
|
||||
corpid.value = "wpZ1ZrEgAA2QTxIRcB4cMtY7hQbTcPAw";
|
||||
// balanceRes = await getBalanceApi(openid.value)
|
||||
}
|
||||
console.log('获取余额成功:', balanceRes)
|
||||
if (balanceRes && balanceRes.code == 0) {
|
||||
balance.value = balanceRes.data.balance;
|
||||
useBalance.value = balanceRes.data.useBalance;
|
||||
balanceLimit.value = balanceRes.data.balanceLimit;
|
||||
if (!userid.value) {
|
||||
/* if (!userid.value) {
|
||||
userid.value = balanceRes.data.userid;
|
||||
}
|
||||
if (!corpid.value) {
|
||||
corpid.value = balanceRes.data.corpid;
|
||||
}
|
||||
} */
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
|
|
|
@ -39,6 +39,11 @@ export const routes: RouteRecordRaw[] = [
|
|||
component: () => import('@/pages/approval/handle.vue'),
|
||||
meta: { requiresAuth: true }
|
||||
},
|
||||
{
|
||||
path: '/approval/handleApply/:approvalId',
|
||||
component: () => import('@/pages/approval/handleApply.vue'),
|
||||
meta: { requiresAuth: true }
|
||||
},
|
||||
{
|
||||
path: '/order-success',
|
||||
name: 'OrderSuccess',
|
||||
|
|
Loading…
Reference in New Issue