You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

0 lines
16 KiB

1 month ago
  1. {"ast":null,"code":"import { ref, reactive } from 'vue';\nimport { useRouter } from 'vue-router';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport { getAllOrders, updateOrderStatus } from '@/api/order';\nexport default {\n __name: 'OrderManagement',\n setup(__props, {\n expose: __expose\n }) {\n __expose();\n const router = useRouter();\n const loading = ref(false);\n const updating = ref(false);\n const orderList = ref([]);\n const total = ref(0);\n const currentPage = ref(1);\n const pageSize = ref(10);\n const statusDialogVisible = ref(false);\n const currentOrder = ref(null);\n const searchForm = reactive({\n customerId: ''\n });\n const statusForm = reactive({\n status: ''\n });\n const statusOptions = {\n 0: '',\n 1: '',\n 2: '',\n 3: '',\n 4: ''\n };\n\n // \n const getStatusText = status => {\n return statusOptions[status] || '';\n };\n\n // \n const loadOrders = async () => {\n loading.value = true;\n try {\n const res = await getAllOrders({\n pageNum: currentPage.value,\n pageSize: pageSize.value,\n customerId: searchForm.customerId || undefined\n });\n if (res.code === 200) {\n orderList.value = res.data.records;\n total.value = res.data.total;\n currentPage.value = res.data.current;\n pageSize.value = res.data.size;\n }\n } catch (error) {\n console.error(':', error);\n ElMessage.error(error.message || '');\n } finally {\n loading.value = false;\n }\n };\n\n // \n const viewDetail = orderId => {\n router.push(`/orders/detail/${orderId}`);\n };\n\n // \n const handleUpdateStatus = order => {\n // \n if (order.status === 3 || order.status === 4) {\n return;\n }\n currentOrder.value = order;\n statusForm.status = order.status;\n statusDialogVisible.value = true;\n };\n\n // \n const confirmUpdateStatus = async () => {\n if (!currentOrder.value || statusForm.status === currentOrder.value.status) {\n statusDialogVisible.value = false;\n return;\n }\n try {\n updating.value = true;\n const res = await updateOrderStatus(currentOrder.value.id, statusForm.status);\n if (res.code === 200) {\n ElMessage.success('');\n statusDialogVisible.value = false;\n loadOrders(); // \n }\n } catch (error) {\n console.error(':', error);\n ElMessage.error(error.message || '');\n } finally {\n updating.value = false;\n }\n };\n\n // \n const handleSearch = () => {\n currentPage.value = 1;\n loadOrders();\n };\n\n // \n const handleSizeChange = val => {\n pageSize.value = val;\n loadOrders();\n };\n const handleCurrentChange = val => {\n currentPage.value = val;\n loadOrders();\n };\n\n // \n loadOrders();\n const __returned__ = {\n router,\n loading,\n updating,\n orderList,\n total,\n currentPage,\n pageSize,\n statusDialogVisible,\n currentOrder,\n searchForm,\n statusForm,\n statusOptions,\n getStatusText,\n loadOrders,\n viewDetail,\n handleUpdateStatus,\n confirmUpdateStatus,\n handleSearch,\n handleSizeChange,\n handleCurrentChange,\n ref,\n reactive,\n get useRouter() {\n return useRouter;\n },\n get ElMessage() {\n return ElMessage;\n },\n get ElMessageBox() {\n return ElMessageBox;\n },\n get getAll