From 333999fe21a25d113fd19e3297a1f49307b99544 Mon Sep 17 00:00:00 2001 From: Timi Date: Thu, 3 Sep 2026 14:27:40 +0800 Subject: [PATCH] add product --- src/api/FulfillmentAPI.ts | 31 + src/api/PackageAPI.ts | 167 +---- src/api/ProductAPI.ts | 106 ++++ src/api/SalesOrderAPI.ts | 64 ++ src/api/StoreAPI.ts | 8 + src/assets/styles/global.less | 4 + src/components/CustomerSelector.vue | 2 +- src/components/NavBarActionMenu.vue | 1 + src/components/ProductSelector.vue | 166 +++++ src/layout/MainLayout.vue | 13 +- src/pages/event/EventRecordEdit.vue | 11 +- src/pages/event/EventRecordList.vue | 2 +- .../event/component/PackagePurchaseForm.vue | 15 +- .../component/usePackagePurchaseRecord.ts | 34 +- .../fulfillment/OrderFulfillmentCreate.vue | 167 +++++ .../fulfillment/OrderFulfillmentDetail.vue | 176 ++++++ .../fulfillment/OrderFulfillmentList.vue | 110 ++++ src/pages/package/CustomerPackageDelivery.vue | 242 ------- src/pages/package/CustomerPackageDetail.vue | 521 +++------------ src/pages/package/CustomerPackageList.vue | 45 +- src/pages/package/CustomerPackagePayment.vue | 237 ------- src/pages/package/CustomerPackageRefund.vue | 173 ----- src/pages/package/FundRecordDetail.vue | 86 ++- src/pages/package/FundRecordList.vue | 48 +- src/pages/package/FundRecordRevoke.vue | 37 +- src/pages/package/PackageConfigDetail.vue | 48 +- src/pages/package/PackageConfigEdit.vue | 57 +- src/pages/package/PackageConfigList.vue | 4 +- src/pages/package/PackageDeliveryDetail.vue | 208 ------ src/pages/package/PackageDeliveryList.vue | 157 ----- src/pages/package/PackageDeliveryRevoke.vue | 152 ----- src/pages/product/ProductCategoryList.vue | 418 ++++++++++++ src/pages/product/ProductCategoryRank.vue | 189 ++++++ src/pages/product/ProductDetail.vue | 269 ++++++++ src/pages/product/ProductEdit.vue | 539 ++++++++++++++++ src/pages/product/ProductList.vue | 359 +++++++++++ src/pages/product/ProductStockDetail.vue | 268 ++++++++ src/pages/product/ProductStockList.vue | 198 ++++++ .../product/ProductStockOperationDialog.vue | 185 ++++++ src/pages/salesOrder/SalesOrderCancel.vue | 53 ++ src/pages/salesOrder/SalesOrderCreate.vue | 596 ++++++++++++++++++ src/pages/salesOrder/SalesOrderDetail.vue | 117 ++++ src/pages/salesOrder/SalesOrderList.vue | 133 ++++ src/pages/salesOrder/SalesOrderNoRefund.vue | 55 ++ src/pages/salesOrder/SalesOrderPayment.vue | 86 +++ src/pages/salesOrder/SalesOrderRefund.vue | 91 +++ .../components/SalesOrderFinancePanel.vue | 48 ++ src/pages/store/StoreEdit.vue | 87 ++- src/pages/tabs/ProductTab.vue | 64 +- src/router/index.ts | 8 +- src/router/routes/fulfillmentRoutes.ts | 14 + src/router/routes/packageRoutes.ts | 115 +--- src/router/routes/productRoutes.ts | 73 +++ src/router/routes/salesOrderRoutes.ts | 22 + src/types/Fulfillment.ts | 91 +++ src/types/Package.ts | 179 +----- src/types/Product.ts | 147 +++++ src/types/SalesOrder.ts | 167 +++++ src/types/Store.ts | 1 + src/utils/package.ts | 40 +- src/utils/permission.ts | 50 +- src/utils/product.ts | 85 +++ src/utils/salesOrder.ts | 33 + 63 files changed, 5662 insertions(+), 2210 deletions(-) create mode 100644 src/api/FulfillmentAPI.ts create mode 100644 src/api/ProductAPI.ts create mode 100644 src/api/SalesOrderAPI.ts create mode 100644 src/components/ProductSelector.vue create mode 100644 src/pages/fulfillment/OrderFulfillmentCreate.vue create mode 100644 src/pages/fulfillment/OrderFulfillmentDetail.vue create mode 100644 src/pages/fulfillment/OrderFulfillmentList.vue delete mode 100644 src/pages/package/CustomerPackageDelivery.vue delete mode 100644 src/pages/package/CustomerPackagePayment.vue delete mode 100644 src/pages/package/CustomerPackageRefund.vue delete mode 100644 src/pages/package/PackageDeliveryDetail.vue delete mode 100644 src/pages/package/PackageDeliveryList.vue delete mode 100644 src/pages/package/PackageDeliveryRevoke.vue create mode 100644 src/pages/product/ProductCategoryList.vue create mode 100644 src/pages/product/ProductCategoryRank.vue create mode 100644 src/pages/product/ProductDetail.vue create mode 100644 src/pages/product/ProductEdit.vue create mode 100644 src/pages/product/ProductList.vue create mode 100644 src/pages/product/ProductStockDetail.vue create mode 100644 src/pages/product/ProductStockList.vue create mode 100644 src/pages/product/ProductStockOperationDialog.vue create mode 100644 src/pages/salesOrder/SalesOrderCancel.vue create mode 100644 src/pages/salesOrder/SalesOrderCreate.vue create mode 100644 src/pages/salesOrder/SalesOrderDetail.vue create mode 100644 src/pages/salesOrder/SalesOrderList.vue create mode 100644 src/pages/salesOrder/SalesOrderNoRefund.vue create mode 100644 src/pages/salesOrder/SalesOrderPayment.vue create mode 100644 src/pages/salesOrder/SalesOrderRefund.vue create mode 100644 src/pages/salesOrder/components/SalesOrderFinancePanel.vue create mode 100644 src/router/routes/fulfillmentRoutes.ts create mode 100644 src/router/routes/productRoutes.ts create mode 100644 src/router/routes/salesOrderRoutes.ts create mode 100644 src/types/Fulfillment.ts create mode 100644 src/types/Product.ts create mode 100644 src/types/SalesOrder.ts create mode 100644 src/utils/product.ts create mode 100644 src/utils/salesOrder.ts diff --git a/src/api/FulfillmentAPI.ts b/src/api/FulfillmentAPI.ts new file mode 100644 index 0000000..5f30de2 --- /dev/null +++ b/src/api/FulfillmentAPI.ts @@ -0,0 +1,31 @@ +import { axios } from "timi-web-api"; +import { withCurrentStoreId } from "@/utils/store"; +import type { FulfillmentActionRequest, FulfillmentPage, FulfillmentPageResult, FulfillmentPrepareStockRequest, FulfillmentRevokeRequest, OrderFulfillment, OrderFulfillmentCreateRequest } from "@/types/Fulfillment"; + +const URI = "/gao/order/fulfillment"; +async function list(page: FulfillmentPage): Promise> { + return await axios.post(`${URI}/list`, withCurrentStoreId(page)); +} +async function detail(id: string): Promise { + return await axios.post(`${URI}/detail`, undefined, { params: { id } }); +} +async function create(request: OrderFulfillmentCreateRequest): Promise { + return await axios.post(`${URI}/create`, request); +} +async function prepareStock(request: FulfillmentPrepareStockRequest): Promise { + return await axios.post(`${URI}/prepare-stock`, request); +} +async function verify(request: FulfillmentActionRequest): Promise { + return await axios.post(`${URI}/verify`, request); +} +async function reject(request: FulfillmentActionRequest): Promise { + return await axios.post(`${URI}/reject`, request); +} +async function cancel(request: FulfillmentActionRequest): Promise { + return await axios.post(`${URI}/cancel`, request); +} +async function revoke(request: FulfillmentRevokeRequest): Promise { + return await axios.post(`${URI}/revoke`, request); +} + +export default { list, detail, create, prepareStock, verify, reject, cancel, revoke }; diff --git a/src/api/PackageAPI.ts b/src/api/PackageAPI.ts index c052973..0c3b019 100644 --- a/src/api/PackageAPI.ts +++ b/src/api/PackageAPI.ts @@ -1,190 +1,39 @@ import { axios } from "timi-web-api"; -import { getCurrentStoreId } from "@/utils/store"; -import type { - CustomerPackagePage, - DeliveryPage, - FundRecordPage, - GaoCustomerPackage, - GaoFundRecord, - GaoPackageConfig, - GaoPackageDelivery, - PackageConfigPage, - PackagePageResult, - PackagePaymentReceiveRequest, - PackagePurchaseRequest, - PackageDeliveryCreateRequest, - PackageAttachment -} from "@/types/Package"; +import { getCurrentStoreId, withCurrentStoreId } from "@/utils/store"; +import type { CustomerPackagePage, GaoCustomerPackage, GaoPackageConfig, PackageConfigPage, PackagePageResult, PackagePurchaseRequest } from "@/types/Package"; const CONFIG_URI = "/gao/package/config"; const CUSTOMER_PACKAGE_URI = "/gao/customer/package"; -const DELIVERY_URI = "/gao/package/delivery"; -const FUND_URI = "/gao/fund/record"; - -function withStore(request: T): T { - const storeId = request.storeId || getCurrentStoreId(); - return storeId ? { ...request, storeId } : request; -} async function configList(page: PackageConfigPage): Promise> { - return await axios.post(`${CONFIG_URI}/list`, withStore(page)); + return await axios.post(`${CONFIG_URI}/list`, withCurrentStoreId(page)); } - async function configListValid(storeId?: string): Promise { - return await axios.post(`${CONFIG_URI}/list/valid`, undefined, { - params: { storeId: storeId || getCurrentStoreId() } - }); + return await axios.post(`${CONFIG_URI}/list/valid`, undefined, { params: { storeId: storeId || getCurrentStoreId() } }); } - async function configDetail(id: string): Promise { return await axios.post(`${CONFIG_URI}/detail`, undefined, { params: { id } }); } - async function configCreate(config: GaoPackageConfig): Promise { - return await axios.post(`${CONFIG_URI}/create`, withStore(config)); + return await axios.post(`${CONFIG_URI}/create`, withCurrentStoreId(config)); } - async function configUpdate(config: GaoPackageConfig): Promise { - await axios.post(`${CONFIG_URI}/update`, withStore(config)); + await axios.post(`${CONFIG_URI}/update`, withCurrentStoreId(config)); } - async function configRemove(id: string): Promise { await axios.post(`${CONFIG_URI}/delete`, undefined, { params: { id } }); } - async function customerPackageList(page: CustomerPackagePage): Promise> { - return await axios.post(`${CUSTOMER_PACKAGE_URI}/list`, withStore(page)); + return await axios.post(`${CUSTOMER_PACKAGE_URI}/list`, withCurrentStoreId(page)); } - async function customerPackageDetail(id: string): Promise { return await axios.post(`${CUSTOMER_PACKAGE_URI}/detail`, undefined, { params: { id } }); } - async function purchase(request: PackagePurchaseRequest): Promise { return await axios.post(`${CUSTOMER_PACKAGE_URI}/purchase`, request); } - async function cancel(customerPackageId: string, reason: string): Promise { return await axios.post(`${CUSTOMER_PACKAGE_URI}/cancel`, { customerPackageId, reason }); } -async function receivePayment(request: PackagePaymentReceiveRequest): Promise { - return await axios.post(`${CUSTOMER_PACKAGE_URI}/payment/receive`, request); -} - -async function verifyPayment(fundRecordId: string): Promise { - return await axios.post(`${CUSTOMER_PACKAGE_URI}/payment/verify`, undefined, { params: { id: fundRecordId } }); -} - -async function rejectPayment(fundRecordId: string, reason: string): Promise { - return await axios.post(`${CUSTOMER_PACKAGE_URI}/payment/reject`, { fundRecordId, reason }); -} - -async function cancelPayment(fundRecordId: string, reason: string): Promise { - return await axios.post(`${CUSTOMER_PACKAGE_URI}/payment/cancel`, { fundRecordId, reason }); -} - -async function refund(request: { - requestNo: string; - customerPackageId: string; - amount: number; - occurredAt?: number; - reason: string; - attachmentList: PackageAttachment[]; - remark?: string | null; -}): Promise { - return await axios.post(`${CUSTOMER_PACKAGE_URI}/refund`, request); -} - -async function confirmNoRefund(request: { - requestNo: string; - customerPackageId: string; - occurredAt?: number; - reason: string; - remark?: string | null; -}): Promise { - return await axios.post(`${CUSTOMER_PACKAGE_URI}/refund/confirm-none`, request); -} - -async function deliveryList(page: DeliveryPage): Promise> { - return await axios.post(`${DELIVERY_URI}/list`, withStore(page)); -} - -async function deliveryDetail(id: string): Promise { - return await axios.post(`${DELIVERY_URI}/detail`, undefined, { params: { id } }); -} - -async function createDelivery(request: PackageDeliveryCreateRequest): Promise { - return await axios.post(`${DELIVERY_URI}/create`, request); -} - -async function verifyDelivery(id: string): Promise { - return await axios.post(`${DELIVERY_URI}/verify`, undefined, { params: { id } }); -} - -async function rejectDelivery(deliveryId: string, reason: string): Promise { - return await axios.post(`${DELIVERY_URI}/reject`, { deliveryId, reason }); -} - -async function cancelDelivery(deliveryId: string, reason: string): Promise { - return await axios.post(`${DELIVERY_URI}/cancel`, { deliveryId, reason }); -} - -async function revokeDelivery(request: { - requestNo: string; - deliveryId: string; - deliveredAt?: number; - reason: string; - attachmentList: PackageAttachment[]; - remark?: string | null; -}): Promise { - return await axios.post(`${DELIVERY_URI}/revoke`, request); -} - -async function fundRecordList(page: FundRecordPage): Promise> { - return await axios.post(`${FUND_URI}/list`, withStore(page)); -} - -async function fundRecordDetail(id: string): Promise { - return await axios.post(`${FUND_URI}/detail`, undefined, { params: { id } }); -} - -async function revokeFundRecord(request: { - requestNo: string; - fundRecordId: string; - occurredAt?: number; - reason: string; - attachmentList: PackageAttachment[]; - remark?: string | null; -}): Promise { - return await axios.post(`${FUND_URI}/revoke`, request); -} - -export default { - configList, - configListValid, - configDetail, - configCreate, - configUpdate, - configRemove, - customerPackageList, - customerPackageDetail, - purchase, - cancel, - receivePayment, - verifyPayment, - rejectPayment, - cancelPayment, - refund, - confirmNoRefund, - deliveryList, - deliveryDetail, - createDelivery, - verifyDelivery, - rejectDelivery, - cancelDelivery, - revokeDelivery, - fundRecordList, - fundRecordDetail, - revokeFundRecord -}; +export default { configList, configListValid, configDetail, configCreate, configUpdate, configRemove, customerPackageList, customerPackageDetail, purchase, cancel }; diff --git a/src/api/ProductAPI.ts b/src/api/ProductAPI.ts new file mode 100644 index 0000000..4e3c3ac --- /dev/null +++ b/src/api/ProductAPI.ts @@ -0,0 +1,106 @@ +import { axios } from "timi-web-api"; +import type { Product, ProductCategory, ProductCategoryPage, ProductPage, ProductPageResult, ProductStock, ProductStockChangeRequest, ProductStockPage, StockRecord, StockRecordPage } from "@/types/Product"; +import { getCurrentStoreId, withCurrentStoreId } from "@/utils/store"; + +const PRODUCT_URI = "/gao/product"; +const STOCK_URI = "/gao/product/stock"; + +async function categoryList(page: ProductCategoryPage): Promise> { + return await axios.post(`${PRODUCT_URI}/category/list`, withCurrentStoreId(page)); +} + +async function categoryCreate(category: ProductCategory): Promise { + return await axios.post(`${PRODUCT_URI}/category/create`, withCurrentStoreId(category)); +} + +async function categoryUpdate(category: ProductCategory): Promise { + await axios.post(`${PRODUCT_URI}/category/update`, withCurrentStoreId(category)); +} + +async function categorySort(idList: string[]): Promise { + return await axios.post(`${PRODUCT_URI}/category/sort`, idList); +} + +async function categoryDisable(id: string): Promise { + await axios.post(`${PRODUCT_URI}/category/disable`, undefined, { params: { id } }); +} + +async function list(page: ProductPage): Promise> { + return await axios.post(`${PRODUCT_URI}/list`, withCurrentStoreId(page)); +} + +async function detail(id: string): Promise { + return await axios.post(`${PRODUCT_URI}/detail`, undefined, { params: { id } }); +} + +async function create(product: Product): Promise { + return await axios.post(`${PRODUCT_URI}/create`, withCurrentStoreId(product)); +} + +async function update(product: Product): Promise { + await axios.post(`${PRODUCT_URI}/update`, withCurrentStoreId(product)); +} + +async function disable(id: string): Promise { + await axios.post(`${PRODUCT_URI}/disable`, undefined, { params: { id } }); +} + +async function sellableList(page: ProductPage): Promise { + return await axios.post(`${PRODUCT_URI}/sellable/list`, withCurrentStoreId(page)); +} + +async function stockList(page: ProductStockPage): Promise> { + return await axios.post(`${STOCK_URI}/list`, withCurrentStoreId(page)); +} + +async function stockDetail(productId: string, storeId?: string): Promise { + return await axios.post(`${STOCK_URI}/detail`, undefined, { + params: { productId, storeId: storeId || getCurrentStoreId() } + }); +} + +async function initialIn(request: ProductStockChangeRequest): Promise { + return await axios.post(`${STOCK_URI}/initial-in`, withCurrentStoreId(request)); +} + +async function manualIn(request: ProductStockChangeRequest): Promise { + return await axios.post(`${STOCK_URI}/manual-in`, withCurrentStoreId(request)); +} + +async function manualOut(request: ProductStockChangeRequest): Promise { + return await axios.post(`${STOCK_URI}/manual-out`, withCurrentStoreId(request)); +} + +async function stocktakeGain(request: ProductStockChangeRequest): Promise { + return await axios.post(`${STOCK_URI}/stocktake-gain`, withCurrentStoreId(request)); +} + +async function stocktakeLoss(request: ProductStockChangeRequest): Promise { + return await axios.post(`${STOCK_URI}/stocktake-loss`, withCurrentStoreId(request)); +} + +async function recordList(page: StockRecordPage): Promise> { + return await axios.post(`${STOCK_URI}/record/list`, withCurrentStoreId(page)); +} + +export default { + categoryList, + categoryCreate, + categoryUpdate, + categorySort, + categoryDisable, + list, + detail, + create, + update, + disable, + sellableList, + stockList, + stockDetail, + initialIn, + manualIn, + manualOut, + stocktakeGain, + stocktakeLoss, + recordList +}; diff --git a/src/api/SalesOrderAPI.ts b/src/api/SalesOrderAPI.ts new file mode 100644 index 0000000..1d84bb5 --- /dev/null +++ b/src/api/SalesOrderAPI.ts @@ -0,0 +1,64 @@ +import { axios } from "timi-web-api"; +import { withCurrentStoreId } from "@/utils/store"; +import type { + DirectProductOrderCreateRequest, + FundRecord, + FundRecordPage, + OrderPaymentActionRequest, + OrderPaymentNoRefundRequest, + OrderPaymentReceiveRequest, + OrderPaymentRefundRequest, + OrderPaymentRevokeRequest, + SalesOrder, + SalesOrderCancelRequest, + SalesOrderPage, + SalesOrderPageResult +} from "@/types/SalesOrder"; + +const ORDER_URI = "/gao/sales/order"; +const FUND_URI = "/gao/fund/record"; + +async function list(page: SalesOrderPage): Promise> { + return await axios.post(`${ORDER_URI}/list`, withCurrentStoreId(page)); +} +async function detail(id: string): Promise { + return await axios.post(`${ORDER_URI}/detail`, undefined, { params: { id } }); +} +async function createDirectProduct(request: DirectProductOrderCreateRequest): Promise { + return await axios.post(`${ORDER_URI}/direct-product/create`, request); +} +async function cancel(request: SalesOrderCancelRequest): Promise { + return await axios.post(`${ORDER_URI}/cancel`, request); +} +async function receivePayment(request: OrderPaymentReceiveRequest): Promise { + return await axios.post(`${ORDER_URI}/payment/receive`, request); +} +async function verifyPayment(id: string): Promise { + return await axios.post(`${ORDER_URI}/payment/verify`, undefined, { params: { id } }); +} +async function rejectPayment(request: OrderPaymentActionRequest): Promise { + return await axios.post(`${ORDER_URI}/payment/reject`, request); +} +async function cancelPayment(request: OrderPaymentActionRequest): Promise { + return await axios.post(`${ORDER_URI}/payment/cancel`, request); +} +async function refund(request: OrderPaymentRefundRequest): Promise { + return await axios.post(`${ORDER_URI}/refund`, request); +} +async function confirmNoRefund(request: OrderPaymentNoRefundRequest): Promise { + return await axios.post(`${ORDER_URI}/refund/confirm-none`, request); +} +async function revokeFund(request: OrderPaymentRevokeRequest): Promise { + return await axios.post(`${ORDER_URI}/fund/revoke`, request); +} +async function fundRecordList(page: FundRecordPage): Promise> { + return await axios.post(`${FUND_URI}/list`, withCurrentStoreId(page)); +} +async function fundRecordDetail(id: string): Promise { + return await axios.post(`${FUND_URI}/detail`, undefined, { params: { id } }); +} +async function fundRecordRevoke(request: OrderPaymentRevokeRequest): Promise { + return await axios.post(`${FUND_URI}/revoke`, request); +} + +export default { list, detail, createDirectProduct, cancel, receivePayment, verifyPayment, rejectPayment, cancelPayment, refund, confirmNoRefund, revokeFund, fundRecordList, fundRecordDetail, fundRecordRevoke }; diff --git a/src/api/StoreAPI.ts b/src/api/StoreAPI.ts index 7ab3742..cacd0c4 100644 --- a/src/api/StoreAPI.ts +++ b/src/api/StoreAPI.ts @@ -1,5 +1,6 @@ import { axios } from "timi-web-api"; import type { Page, PageResult } from "timi-web-api"; +import type { EventItem } from "@/types/EventItem"; import type { Store, StoreBusinessDay } from "@/types/Store"; const STORE_BASE_URI = "/gao/store"; @@ -15,6 +16,12 @@ async function detail(id: string): Promise { }); } +async function directProductSaleEventList(storeId: string): Promise { + return await axios.post(`${STORE_BASE_URI}/direct-product-sale-event/list`, undefined, { + params: { storeId } + }); +} + async function loginStore(): Promise { return await axios.post(`${STORE_BASE_URI}/user`); } @@ -80,6 +87,7 @@ async function removeBusinessDay(id: string): Promise { export default { list, detail, + directProductSaleEventList, loginStore, create, update, diff --git a/src/assets/styles/global.less b/src/assets/styles/global.less index 5150856..279f9fc 100644 --- a/src/assets/styles/global.less +++ b/src/assets/styles/global.less @@ -59,6 +59,10 @@ html.theme-dark body { line-height: 1.5; } +.empty-cell-title-margin { + --td-spacer-2: .25rem; +} + .t-input--password { letter-spacing: 0; } diff --git a/src/components/CustomerSelector.vue b/src/components/CustomerSelector.vue index ace3375..f3da283 100644 --- a/src/components/CustomerSelector.vue +++ b/src/components/CustomerSelector.vue @@ -239,7 +239,7 @@ onUnmounted(() => { box-shadow: 0 4px 4px rgba(0, 0, 0, .05); .search { - --td-input-vertical-padding: 8px; + --td-input-vertical-padding: 8px 14px; flex: 0; margin: 0 1rem; diff --git a/src/components/NavBarActionMenu.vue b/src/components/NavBarActionMenu.vue index b43df85..e58b016 100644 --- a/src/components/NavBarActionMenu.vue +++ b/src/components/NavBarActionMenu.vue @@ -4,6 +4,7 @@ +
+ + + + + + + + + + diff --git a/src/layout/MainLayout.vue b/src/layout/MainLayout.vue index 7fd4338..16ce98f 100644 --- a/src/layout/MainLayout.vue +++ b/src/layout/MainLayout.vue @@ -12,10 +12,16 @@ theme="tag" :split="false" :z-index="999" + :bordered="false" :disabled="!tabBarStore.isShowing" @change="onChangeTab" > - + @@ -89,10 +77,10 @@ import { type DropdownValue } from "tdesign-mobile-vue"; import { Text, Toolkit } from "timi-web"; import PackageAPI from "@/api/PackageAPI"; import { useNavBarStore } from "@/store/navBarStore"; -import type { CustomerPackageStatus, GaoCustomerPackage, PaymentStatus } from "@/types/Package"; +import type { CustomerPackageStatus, GaoCustomerPackage } from "@/types/Package"; import { getCustomerPhotoURL } from "@/utils/customer"; import { getErrorMessage } from "@/utils/error"; -import { formatPackageAmount, getCustomerPackageStatusText, getPaymentStatusText } from "@/utils/package"; +import { getCustomerPackageStatusText } from "@/utils/package"; import { Message } from "@/utils/message"; import { permissionCodes } from "@/utils/permission"; @@ -102,7 +90,6 @@ const router = useRouter(); const navBarStore = useNavBarStore(); const keyword = ref(""); const status = ref("ALL"); -const paymentStatus = ref("ALL"); const packageList = ref([]); const pageIndex = ref(0); const total = ref(0); @@ -115,12 +102,6 @@ const statusOptions = [ { label: "已履约", value: "FULFILLED" }, { label: "已取消", value: "CANCELLED" } ]; -const paymentOptions = [ - { label: "全部收款", value: "ALL" }, - { label: "未收款", value: "UNPAID" }, - { label: "部分收款", value: "PARTIALLY_PAID" }, - { label: "已收款", value: "PAID" } -]; const loadStateText = computed(() => loading.value ? "正在加载" : noMore.value ? "已经到底了" : "上拉加载更多"); async function loadMore(): Promise { @@ -133,8 +114,7 @@ async function loadMore(): Promise { index: pageIndex.value, size: 15, keyword: keyword.value || undefined, - status: status.value === "ALL" ? undefined : status.value as CustomerPackageStatus, - paymentStatus: paymentStatus.value === "ALL" ? undefined : paymentStatus.value as PaymentStatus + status: status.value === "ALL" ? undefined : status.value as CustomerPackageStatus }); const list = result.list || []; packageList.value = packageList.value.concat(list); @@ -165,13 +145,6 @@ async function selectStatus(value: DropdownValue): Promise { await reload(); } -async function selectPaymentStatus(value: DropdownValue): Promise { - if (Array.isArray(value)) { - return; - } - paymentStatus.value = String(value); - await reload(); -} const reloadByKeyword = Toolkit.debounce(async () => { try { @@ -223,16 +196,16 @@ onUnmounted(() => { display: flex; padding: .75rem 1rem; position: sticky; - background: #F5F5F8; + background: var(--td-bg-color-page); box-shadow: var(--td-shadow-1); flex-direction: column; .search-input { - --td-input-vertical-padding: 8px; + --td-input-vertical-padding: 8px 14px; border: 1px solid rgba(148, 163, 184, .28); z-index: 1; - background: #f8fbff; + background: var(--td-bg-color-container); border-radius: 1rem; } @@ -243,7 +216,7 @@ onUnmounted(() => { overflow: hidden; margin-top: -1.5rem; padding-top: .8rem; - background: #fff; + background: var(--td-bg-color-container); border: 1px solid rgba(148, 163, 184, .18); border-radius: 0 0 1rem 1rem; @@ -264,7 +237,7 @@ onUnmounted(() => { } .list { - margin-top: 1rem; + margin-top: .75rem; .item { padding: 10px; diff --git a/src/pages/package/CustomerPackagePayment.vue b/src/pages/package/CustomerPackagePayment.vue deleted file mode 100644 index 35ffd09..0000000 --- a/src/pages/package/CustomerPackagePayment.vue +++ /dev/null @@ -1,237 +0,0 @@ - - - - - diff --git a/src/pages/package/CustomerPackageRefund.vue b/src/pages/package/CustomerPackageRefund.vue deleted file mode 100644 index b7e8b5d..0000000 --- a/src/pages/package/CustomerPackageRefund.vue +++ /dev/null @@ -1,173 +0,0 @@ - - - - - diff --git a/src/pages/package/FundRecordDetail.vue b/src/pages/package/FundRecordDetail.vue index ebeeb1c..2a4cba6 100644 --- a/src/pages/package/FundRecordDetail.vue +++ b/src/pages/package/FundRecordDetail.vue @@ -1,11 +1,19 @@