新增生成支付订单功能

在采购订单详情页面添加生成支付订单的功能,包括选择用户、门店和支付方式的设置。新增相关API接口和前端实现逻辑。同时,优化了订单导出功能,调整了部分UI显示。
This commit is contained in:
mkm 2024-10-10 17:28:58 +08:00
parent 6fb98ad209
commit e305a1d96f
4 changed files with 123 additions and 25 deletions

View File

@ -52,3 +52,12 @@ export function apiPurchaseOrderExport(params: any) {
params
})
}
/**
*
*/
export function apiPurchaseOrderGenerateOrder(params: any) {
return request.post({
url: '/beforehand_order/beforehandorder/generateOrder',
params
})
}

View File

@ -17,6 +17,7 @@
</div>
<!-- <el-button @click="xlsx(formData.id, 1)"> 打印订单 </el-button> -->
<el-button @click="xlsx2(formData.id)"> 打印商品标签 </el-button>
<el-button @click="generateOrderClick"> 生成商品订单 </el-button>
</div>
<el-button type="primary" @click="dialogShop = true"> 追加 </el-button>
@ -262,6 +263,64 @@
</div>
</template>
</el-dialog>
<el-dialog v-model="generateOrderShow" title="生成支付订单设置" width="600">
<el-form :model="generateOrderData" label-width="90px">
<el-form-item label="用户">
<el-select
v-model="generateOrderData.user_id"
filterable
remote
reserve-keyword
placeholder="输入用户名称搜索"
remote-show-suffix
:remote-method="remoteMethodUser"
:loading="userloading"
style="width: 240px"
>
<el-option
v-for="item in userList"
:key="item.id"
:label="`${item.real_name}|${item.mobile} (ID:${item.id})`"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="门店" prop="store_id">
<el-select
v-model="generateOrderData.store_id"
placeholder="请选择门店"
size="large"
style="width: 240px"
>
<el-option
v-for="item in storeList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="支付方式" prop="pay_type">
<el-select
v-model="generateOrderData.pay_type"
placeholder="请选择支付方式"
size="large"
style="width: 240px"
>
<el-option label="微信小程序支付" value="7" />
<el-option label="采购款支付" value="18" />
<el-option label="余额支付" value="3" />
<el-option label="现金支付" value="17" />
</el-select>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="generateOrderShow = false">取消</el-button>
<el-button type="primary" @click="generateOrderAdd"> 确认 </el-button>
</div>
</template>
</el-dialog>
</template>
<script lang="ts" setup name="storeOrderDETAILS">
@ -278,7 +337,7 @@ import {
apiBeforehandOrderCartInfoProcurementStatus
} from '@/api/beforehand_order_cart_info'
import { apiWarehouseOrderRentryExport, apiWarehouseOrderExport } from '@/api/warehouse_order'
import { apiPurchaseOrderExport } from '@/api/beforehand_order'
import { apiPurchaseOrderExport, apiPurchaseOrderGenerateOrder } from '@/api/beforehand_order'
import type { PropType } from 'vue'
import { usePaging } from '@/hooks/usePaging'
import { useRoute } from 'vue-router'
@ -288,11 +347,14 @@ import { apiDeliveryServiceLists } from '@/api/delivery_service'
import goodsOffer from './component/goodsOffer.vue'
import warehousing from './component/warehousing.vue'
import outbound from './component/outbound.vue'
import { apiUserLists } from '@/api/user'
import { apiSystemStoreLists } from '@/api/system_store'
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
//
const showEdit = ref(false)
const dialogBuyer = ref(false)
const generateOrderShow = ref(false)
const goodsOfferRef = ref(null)
const warehousingRef = ref(null)
@ -332,7 +394,14 @@ const formData = ref({
supplier_name: '',
warehouse_name: '',
system_store: '',
financial_pm: ''
financial_pm: '',
order_sn: ''
})
const generateOrderData = ref({
id: '',
user_id: '',
pay_type: '',
store_id: ''
})
const purchase_product_offer = ref({
order_id: '',
@ -382,6 +451,7 @@ const getDetail = async (row: Record<string, any>) => {
formData.value = { ...row }
queryParams.bhoid = row.id
warehouse_id.value = row.warehouse_id
generateOrderData.value.id = row.id
if (row.financial_pm == 0) {
is_warehouse.value = 1
} else {
@ -391,24 +461,6 @@ const getDetail = async (row: Record<string, any>) => {
// setFormData(data)
getLists()
}
const xlsx = (id, type) => {
if (formData.value.financial_pm == 1) {
apiWarehouseOrderRentryExport({
id: id
}).then((res) => {
window.open(res.url, '_blank')
ElMessage.success('导出成功')
})
} else {
apiWarehouseOrderExport({
id: id,
type: type
}).then((res) => {
window.open(res.url, '_blank')
ElMessage.success('导出成功')
})
}
}
const xlsx2 = (id) => {
apiPurchaseOrderExport({
id: id
@ -485,7 +537,36 @@ const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: apiBeforehandOrderCartInfoLists,
params: queryParams
})
const userloading = ref(false)
const userList = ref([])
const remoteMethodUser = (e = '') => {
userloading.value = true
apiUserLists({
nickname: e,
page_size: 10
})
.then((res) => {
userList.value = res.lists
setTimeout(() => {
userloading.value = false
}, 300)
})
.catch((err) => {
setTimeout(() => {
userloading.value = false
}, 300)
})
}
const storeList = ref([])
const generateOrderClick = () => {
generateOrderShow.value = true
apiSystemStoreLists({ page_no: 1, page_size: 100 }).then((res) => {
storeList.value = res.lists
})
}
const generateOrderAdd = () => {
apiPurchaseOrderGenerateOrder(generateOrderData.value).then((res) => {})
}
defineExpose({
open,
setFormData,

View File

@ -48,9 +48,13 @@
<el-table-column label="id" prop="id" show-overflow-tooltip width="55" />
<el-table-column label="操作时间" prop="create_time" show-overflow-tooltip />
<el-table-column label="单号" prop="order_id" show-overflow-tooltip />
<el-table-column label="状态" prop="financial_pm_name" show-overflow-tooltip />
<el-table-column
label="订单类型"
prop="order_type_name"
show-overflow-tooltip
/>
<!-- <el-table-column label="状态" prop="financial_pm_name" show-overflow-tooltip /> -->
<el-table-column label="填写人员" prop="admin_name" show-overflow-tooltip />
<!-- <el-table-column label="批次" prop="batch" show-overflow-tooltip /> -->
<el-table-column label="总价格" prop="total_price" show-overflow-tooltip />
<el-table-column label="备注" prop="mark" show-overflow-tooltip />

View File

@ -117,7 +117,7 @@ const router = useRouter()
const handleSubmit = async () => {
const product_arr = productList.value.map((item: any) => {
return {
product_id: item.id,
product_id: item.product_id,
cart_num: item.cart_num
}
})
@ -125,6 +125,10 @@ const handleSubmit = async () => {
order_id: props.order_id,
product_arr,
refund_price: formData.total_price
}).then((res) => {})
}).then((res) => {
setTimeout(() => {
location.reload()
}, 2000)
})
}
</script>