init
This commit is contained in:
parent
57f41b1b99
commit
7d0642f970
@ -1,28 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function apiAccountsReceivableLists(params: any) {
|
||||
return request.get({ url: '/accounts_receivable/accountsreceivable/lists', params })
|
||||
}
|
||||
|
||||
export function apiAccountsReceivableAdd(params: any) {
|
||||
return request.post({ url: '/accounts_receivable/accountsreceivable/add', params })
|
||||
}
|
||||
|
||||
export function apiAccountsReceivableEdit(params: any) {
|
||||
return request.post({ url: '/accounts_receivable/accountsreceivable/edit', params })
|
||||
}
|
||||
|
||||
export function apiAccountsReceivableDelete(params: any) {
|
||||
return request.post({ url: '/accounts_receivable/accountsreceivable/delete', params })
|
||||
}
|
||||
|
||||
export function apiAccountsReceivableDetail(params: any) {
|
||||
return request.get({ url: '/accounts_receivable/accountsreceivable/detail', params })
|
||||
}
|
||||
export function apiAccountsReceivableRecord(params: any) {
|
||||
return request.get({ url: '/accounts_receivable/accountsreceivable/record', params })
|
||||
}
|
||||
export function apiAccountsReceivableStatistics(params: any) {
|
||||
return request.get({ url: '/accounts_receivable/accountsreceivable/statistics', params })
|
||||
}
|
||||
|
@ -1,31 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 活动专区列表
|
||||
export function apiActivityZoneLists(params: any) {
|
||||
return request.get({ url: '/activityzone/lists', params })
|
||||
}
|
||||
|
||||
// 添加活动专区
|
||||
export function apiActivityZoneAdd(params: any) {
|
||||
return request.post({ url: '/activityzone/add', params })
|
||||
}
|
||||
|
||||
// 编辑活动专区
|
||||
export function apiActivityZoneEdit(params: any) {
|
||||
return request.post({ url: '/activityzone/edit', params })
|
||||
}
|
||||
|
||||
// 删除活动专区
|
||||
export function apiActivityZoneDelete(params: any) {
|
||||
return request.post({ url: '/activityzone/delete', params })
|
||||
}
|
||||
|
||||
// 活动专区详情
|
||||
export function apiActivityZoneDetail(params: any) {
|
||||
return request.get({ url: '/activityzone/detail', params })
|
||||
}
|
||||
|
||||
// 活动专区详情
|
||||
export function apiActivityZoneExport(params: any) {
|
||||
return request.get({ url: '/activityzone/export', params })
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 活动专区列表
|
||||
export function apiActivityZoneFormLists(params: any) {
|
||||
return request.get({ url: '/activityzoneform/lists', params })
|
||||
}
|
||||
|
||||
// 添加活动专区
|
||||
export function apiActivityZoneFormAdd(params: any) {
|
||||
return request.post({ url: '/activityzoneform/add', params })
|
||||
}
|
||||
|
||||
// 编辑活动专区
|
||||
export function apiActivityZoneFormEdit(params: any) {
|
||||
return request.post({ url: '/activityzoneform/edit', params })
|
||||
}
|
||||
|
||||
// 删除活动专区
|
||||
export function apiActivityZoneFormDelete(params: any) {
|
||||
return request.post({ url: '/activityzoneform/delete', params })
|
||||
}
|
||||
|
||||
// 活动专区详情
|
||||
export function apiActivityZoneFormDetail(params: any) {
|
||||
return request.get({ url: '/activityzoneform/detail', params })
|
||||
}
|
||||
|
||||
// 活动专区详情
|
||||
export function apiActivityZoneFormExport(params: any) {
|
||||
return request.get({ url: '/activityzoneform/export', params })
|
||||
}
|
@ -1,131 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 预订单表列表
|
||||
export function apiBeforehandOrderLists(params: any) {
|
||||
return request.get({ url: '/beforehand_order/beforehandorder/lists', params })
|
||||
}
|
||||
export function apiBeforehandOrderStatisticsCount(params: any) {
|
||||
return request.get({ url: '/beforehand_order/beforehandorder/statistics_count', params })
|
||||
}
|
||||
|
||||
// 添加预订单表
|
||||
export function apiBeforehandOrderAdd(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/add', params })
|
||||
}
|
||||
|
||||
// 编辑预订单表
|
||||
export function apiBeforehandOrderEdit(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/edit', params })
|
||||
}
|
||||
// 一键出库
|
||||
export function apiBeforehandOrderCreateOutboundOrder(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/createOutboundOrder', params })
|
||||
}
|
||||
|
||||
// 一键复制预订单
|
||||
export function apiBeforehandOrderCopy(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/copy', params })
|
||||
}
|
||||
|
||||
// 一键复制预订单
|
||||
export function apiBeforehandOrderTransfer(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/transfer', params })
|
||||
}
|
||||
|
||||
// 删除预订单表
|
||||
export function apiBeforehandOrderDelete(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/delete', params })
|
||||
}
|
||||
|
||||
//结算预订单
|
||||
export function apiBeforehandOrderSettle(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/settle', params })
|
||||
}
|
||||
|
||||
//确认预订单
|
||||
export function apiBeforehandOrderConfirm(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/confirm', params })
|
||||
}
|
||||
|
||||
|
||||
// 预订单表详情
|
||||
export function apiBeforehandOrderDetail(params: any) {
|
||||
return request.get({ url: '/beforehand_order/beforehandorder/detail', params })
|
||||
}
|
||||
|
||||
// 入库列表
|
||||
export function apiBeforehandOrderWarehousingLists(params: any) {
|
||||
return request.get({ url: '/beforehand_order/beforehandorder/warehousing_lists', params })
|
||||
}
|
||||
// 出库列表
|
||||
export function apiBeforehandOrderOutboundLists(params: any) {
|
||||
return request.get({ url: '/beforehand_order/beforehandorder/outbound_lists', params })
|
||||
}
|
||||
// 订单转预订单
|
||||
export function apiPurchaseOrderTransferAdvanceOrder(params: any) {
|
||||
return request.post({
|
||||
url: '/beforehand_order/beforehandorder/orderTransferAdvanceOrder',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
// 打印出库标签
|
||||
export function apiPurchaseOrderExport(params: any) {
|
||||
return request.post({
|
||||
url: '/beforehand_order/beforehandorder/export',
|
||||
params
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 生成支付订单
|
||||
*/
|
||||
export function apiPurchaseOrderGenerateOrder(params: any) {
|
||||
return request.post({
|
||||
url: '/beforehand_order/beforehandorder/generateOrder',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
//导出清单
|
||||
export function apiPurchaseOrderExportOrderList(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/export_order_list', params })
|
||||
}
|
||||
//导出分单
|
||||
export function apiPurchaseOrderOrderAllocation(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/order_allocation', params })
|
||||
}
|
||||
//采购信息
|
||||
export function apiPurchaseOrderOrderInfo(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/order_info', params })
|
||||
}
|
||||
//导出出库
|
||||
export function apiPurchaseOrderOrderOutbound(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/order_outbound', params })
|
||||
}
|
||||
//导出出库
|
||||
export function apiPurchaseOrderOrderOutbound3(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/order_outbound3', params })
|
||||
}
|
||||
//导出退库
|
||||
export function apiPurchaseOrderStockReturn(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/stock_return', params })
|
||||
}
|
||||
//导出退供应商
|
||||
export function apiPurchaseOrderReturnSupplier(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/return_supplier', params })
|
||||
}
|
||||
|
||||
// 预订单日志列表
|
||||
export function apiBeforehandOrderLogLists(params: any) {
|
||||
return request.get({ url: '/beforehand_order/beforehandorder/logList', params })
|
||||
}
|
||||
|
||||
//保存预订单日志
|
||||
export function apiBeforehandOrderLogSave(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/saveLog', params })
|
||||
}
|
||||
|
||||
//确认预订单日志
|
||||
export function apiBeforehandOrderLogConfirm(params: any) {
|
||||
return request.post({ url: '/beforehand_order/beforehandorder/confirmLog', params })
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 预订单购物详情表列表
|
||||
export function apiBeforehandOrderCartInfoLists(params: any) {
|
||||
return request.get({ url: '/beforehand_order_cart_info/beforehandordercartinfo/lists', params })
|
||||
}
|
||||
|
||||
// 添加预订单购物详情表
|
||||
export function apiBeforehandOrderCartInfoAdd(params: any) {
|
||||
return request.post({ url: '/beforehand_order_cart_info/beforehandordercartinfo/add', params })
|
||||
}
|
||||
|
||||
// 编辑预订单购物详情表
|
||||
export function apiBeforehandOrderCartInfoEdit(params: any) {
|
||||
return request.post({ url: '/beforehand_order_cart_info/beforehandordercartinfo/edit', params })
|
||||
}
|
||||
export function apiBeforehandOrderCartInfoAppendAdd(params: any) {
|
||||
return request.post({
|
||||
url: '/beforehand_order_cart_info/beforehandordercartinfo/append_add',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
// 删除预订单购物详情表
|
||||
export function apiBeforehandOrderCartInfoDelete(params: any) {
|
||||
return request.post({
|
||||
url: '/beforehand_order_cart_info/beforehandordercartinfo/delete',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 编辑预订单购物详情无需采购
|
||||
export function apiBeforehandOrderCartInfoProcurementStatus(params: any) {
|
||||
return request.post({
|
||||
url: '/beforehand_order_cart_info/beforehandordercartinfo/procurement_status',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 一键入库
|
||||
export function apiBeforehandOrderCartInfoOneClickStorage(params: any) {
|
||||
return request.post({
|
||||
url: '/beforehand_order_cart_info/beforehandordercartinfo/one_click_storage',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
// 预订单购物详情表详情
|
||||
export function apiBeforehandOrderCartInfoDetail(params: any) {
|
||||
return request.get({
|
||||
url: '/beforehand_order_cart_info/beforehandordercartinfo/detail',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
// 预订单购物详情表详情
|
||||
export function apiBeforehandOrderCartInfoFix(params: any) {
|
||||
return request.get({
|
||||
url: '/beforehand_order_cart_info/beforehandordercartinfo/fix',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
// 同步商品价格
|
||||
export function apiBeforehandOrderCartInfoSyncPrice(params: any) {
|
||||
return request.get({ url: '/beforehand_order_cart_info/beforehandordercartinfo/syncPrice', params })
|
||||
}
|
||||
|
||||
// 设置门店出货
|
||||
export function apiBeforehandOrderCartInfoSetStoreSale(params: any) {
|
||||
return request.post({ url: '/beforehand_order_cart_info/beforehandordercartinfo/setStoreSale', params })
|
||||
}
|
||||
|
||||
// 单个商品入库
|
||||
export function apiBeforehandOrderCartInfoPutInStorage(params: any) {
|
||||
return request.post({ url: '/beforehand_order_cart_info/beforehandordercartinfo/putInStorage', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 数据变更记录列表
|
||||
export function apiChangeLogLists(params: any) {
|
||||
return request.get({ url: '/changelog/lists', params })
|
||||
}
|
||||
|
||||
// 添加数据变更记录
|
||||
export function apiChangeLogAdd(params: any) {
|
||||
return request.post({ url: '/changelog/add', params })
|
||||
}
|
||||
|
||||
// 编辑数据变更记录
|
||||
export function apiChangeLogEdit(params: any) {
|
||||
return request.post({ url: '/changelog/edit', params })
|
||||
}
|
||||
|
||||
// 删除数据变更记录
|
||||
export function apiChangeLogDelete(params: any) {
|
||||
return request.post({ url: '/changelog/delete', params })
|
||||
}
|
||||
|
||||
// 数据变更记录详情
|
||||
export function apiChangeLogDetail(params: any) {
|
||||
return request.get({ url: '/changelog/detail', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 配送员表列表
|
||||
export function apiDeliveryServiceLists(params: any) {
|
||||
return request.get({ url: '/delivery_service/deliveryservice/lists', params })
|
||||
}
|
||||
|
||||
// 添加配送员表
|
||||
export function apiDeliveryServiceAdd(params: any) {
|
||||
return request.post({ url: '/delivery_service/deliveryservice/add', params })
|
||||
}
|
||||
|
||||
// 编辑配送员表
|
||||
export function apiDeliveryServiceEdit(params: any) {
|
||||
return request.post({ url: '/delivery_service/deliveryservice/edit', params })
|
||||
}
|
||||
|
||||
// 删除配送员表
|
||||
export function apiDeliveryServiceDelete(params: any) {
|
||||
return request.post({ url: '/delivery_service/deliveryservice/delete', params })
|
||||
}
|
||||
|
||||
// 配送员表详情
|
||||
export function apiDeliveryServiceDetail(params: any) {
|
||||
return request.get({ url: '/delivery_service/deliveryservice/detail', params })
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 财务转账表列表
|
||||
export function apiFinancialTransfersLists(params: any) {
|
||||
return request.get({ url: '/financial_transfers/financialtransfers/lists', params })
|
||||
}
|
||||
|
||||
// 发送
|
||||
export function apiFinancialTransfersSend(params: any) {
|
||||
return request.post({ url: '/financial_transfers/FinancialTransfers/send_transfers', params })
|
||||
}
|
||||
|
||||
export function apiFinancialTransfersConfirm(params: any) {
|
||||
return request.post({ url: '/financial_transfers/FinancialTransfers/success_send', params })
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 门店盘存列表
|
||||
export function apiInventoryStoreLists(params: any) {
|
||||
return request.get({ url: '/inventory_store/inventorystore/lists', params })
|
||||
}
|
||||
|
||||
// 添加门店盘存
|
||||
export function apiInventoryStoreAdd(params: any) {
|
||||
return request.post({ url: '/inventory_store/inventorystore/add', params })
|
||||
}
|
||||
|
||||
// 编辑门店盘存
|
||||
export function apiInventoryStoreEdit(params: any) {
|
||||
return request.post({ url: '/inventory_store/inventorystore/edit', params })
|
||||
}
|
||||
|
||||
// 删除门店盘存
|
||||
export function apiInventoryStoreDelete(params: any) {
|
||||
return request.post({ url: '/inventory_store/inventorystore/delete', params })
|
||||
}
|
||||
|
||||
// 门店盘存详情
|
||||
export function apiInventoryStoreDetail(params: any) {
|
||||
return request.get({ url: '/inventory_store/inventorystore/detail', params })
|
||||
}
|
||||
|
||||
export function apiInventoryStoreEnterNums(params: any) {
|
||||
return request.post({ url: '/inventory_store/inventorystore/enter_nums', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 商品调拨列表
|
||||
export function apiInventoryTransferLists(params: any) {
|
||||
return request.get({ url: '/inventory_transfer/inventorytransfer/lists', params })
|
||||
}
|
||||
|
||||
// 添加商品调拨
|
||||
export function apiInventoryTransferAdd(params: any) {
|
||||
return request.post({ url: '/inventory_transfer/inventorytransfer/add', params })
|
||||
}
|
||||
|
||||
// 编辑商品调拨
|
||||
export function apiInventoryTransferEdit(params: any) {
|
||||
return request.post({ url: '/inventory_transfer/inventorytransfer/edit', params })
|
||||
}
|
||||
|
||||
// 删除商品调拨
|
||||
export function apiInventoryTransferDelete(params: any) {
|
||||
return request.post({ url: '/inventory_transfer/inventorytransfer/delete', params })
|
||||
}
|
||||
|
||||
// 商品调拨详情
|
||||
export function apiInventoryTransferDetail(params: any) {
|
||||
return request.get({ url: '/inventory_transfer/inventorytransfer/detail', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 商品调拨订单列表
|
||||
export function apiInventoryTransferOrderLists(params: any) {
|
||||
return request.get({ url: '/inventory_transfer_order/inventorytransferorder/lists', params })
|
||||
}
|
||||
|
||||
// 添加商品调拨订单
|
||||
export function apiInventoryTransferOrderAdd(params: any) {
|
||||
return request.post({ url: '/inventory_transfer_order/inventorytransferorder/add', params })
|
||||
}
|
||||
|
||||
// 编辑商品调拨订单
|
||||
export function apiInventoryTransferOrderEdit(params: any) {
|
||||
return request.post({ url: '/inventory_transfer_order/inventorytransferorder/edit', params })
|
||||
}
|
||||
|
||||
// 删除商品调拨订单
|
||||
export function apiInventoryTransferOrderDelete(params: any) {
|
||||
return request.post({ url: '/inventory_transfer_order/inventorytransferorder/delete', params })
|
||||
}
|
||||
|
||||
// 商品调拨订单详情
|
||||
export function apiInventoryTransferOrderDetail(params: any) {
|
||||
return request.get({ url: '/inventory_transfer_order/inventorytransferorder/detail', params })
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 仓库盘存列表
|
||||
export function apiInventoryWarehouseLists(params: any) {
|
||||
return request.get({ url: '/inventory_warehouse/inventorywarehouse/lists', params })
|
||||
}
|
||||
|
||||
// 添加仓库盘存
|
||||
export function apiInventoryWarehouseAdd(params: any) {
|
||||
return request.post({ url: '/inventory_warehouse/inventorywarehouse/add', params })
|
||||
}
|
||||
|
||||
// 编辑仓库盘存
|
||||
export function apiInventoryWarehouseEdit(params: any) {
|
||||
return request.post({ url: '/inventory_warehouse/inventorywarehouse/edit', params })
|
||||
}
|
||||
|
||||
// 删除仓库盘存
|
||||
export function apiInventoryWarehouseDelete(params: any) {
|
||||
return request.post({ url: '/inventory_warehouse/inventorywarehouse/delete', params })
|
||||
}
|
||||
|
||||
// 仓库盘存详情
|
||||
export function apiInventoryWarehouseDetail(params: any) {
|
||||
return request.get({ url: '/inventory_warehouse/inventorywarehouse/detail', params })
|
||||
}
|
||||
export function apiInventoryWarehouseEnterNums(params: any) {
|
||||
return request.post({ url: '/inventory_warehouse/inventorywarehouse/enter_nums', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 标签列表
|
||||
export function apiLabelLists(params: any) {
|
||||
return request.get({ url: '/setting/label/lists', params })
|
||||
}
|
||||
|
||||
// 添加标签
|
||||
export function apiLabelAdd(params: any) {
|
||||
return request.post({ url: '/setting/label/add', params })
|
||||
}
|
||||
|
||||
// 编辑标签
|
||||
export function apiLabelEdit(params: any) {
|
||||
return request.post({ url: '/setting/label/edit', params })
|
||||
}
|
||||
|
||||
// 删除标签
|
||||
export function apiLabelDelete(params: any) {
|
||||
return request.post({ url: '/setting/label/delete', params })
|
||||
}
|
||||
|
||||
// 标签详情
|
||||
export function apiLabelDetail(params: any) {
|
||||
return request.get({ url: '/setting/label/detail', params })
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 省
|
||||
export function apiProvince() {
|
||||
return request.get({ url: '/config/province' })
|
||||
}
|
||||
|
||||
// 市
|
||||
export function apiCity(params: any) {
|
||||
return request.get({ url: '/config/city', params })
|
||||
}
|
||||
|
||||
// 区
|
||||
export function apiArea(params: any) {
|
||||
return request.get({ url: '/config/area', params })
|
||||
}
|
||||
|
||||
// 街道
|
||||
export function apiStreet(params: any) {
|
||||
return request.get({ url: '/config/street', params })
|
||||
}
|
||||
|
@ -1,37 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 采购订单列表
|
||||
export function apiPurchaseOrderLists(params: any) {
|
||||
return request.get({ url: '/purchase_order/purchaseorder/lists', params })
|
||||
}
|
||||
// 采购订单详情列表
|
||||
export function apiPurchaseOrderInfoLists(params: any) {
|
||||
return request.get({ url: '/purchase_order/purchaseorder/info_lists', params })
|
||||
}
|
||||
// 采购订单详情列表
|
||||
export function apiPurchaseStoreOrderLists(params: any) {
|
||||
return request.get({ url: '/purchase_order/purchaseorder/order_lists', params })
|
||||
}
|
||||
|
||||
// 添加采购订单
|
||||
export function apiPurchaseOrderAdd(params: any) {
|
||||
return request.post({ url: '/purchase_order/purchaseorder/add', params })
|
||||
}
|
||||
// 添加采购订单平台
|
||||
export function apiPurchaseOrderPlatform(params: any) {
|
||||
return request.post({ url: '/purchase_order/purchaseorder/platform', params })
|
||||
}
|
||||
// 编辑采购订单
|
||||
export function apiPurchaseOrderEdit(params: any) {
|
||||
return request.post({ url: '/purchase_order/purchaseorder/edit', params })
|
||||
}
|
||||
|
||||
// 删除采购订单
|
||||
export function apiPurchaseOrderDelete(params: any) {
|
||||
return request.post({ url: '/purchase_order/purchaseorder/delete', params })
|
||||
}
|
||||
|
||||
// 采购订单详情
|
||||
export function apiPurchaseOrderDetail(params: any) {
|
||||
return request.get({ url: '/purchase_order/purchaseorder/detail', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 采购订单详情表列表
|
||||
export function apiPurchaseOrderInfoLists(params: any) {
|
||||
return request.get({ url: '/purchase_order_info/purchaseorderinfo/lists', params })
|
||||
}
|
||||
|
||||
// 添加采购订单详情表
|
||||
export function apiPurchaseOrderInfoAdd(params: any) {
|
||||
return request.post({ url: '/purchase_order_info/purchaseorderinfo/add', params })
|
||||
}
|
||||
|
||||
// 编辑采购订单详情表
|
||||
export function apiPurchaseOrderInfoEdit(params: any) {
|
||||
return request.post({ url: '/purchase_order_info/purchaseorderinfo/edit', params })
|
||||
}
|
||||
|
||||
// 删除采购订单详情表
|
||||
export function apiPurchaseOrderInfoDelete(params: any) {
|
||||
return request.post({ url: '/purchase_order_info/purchaseorderinfo/delete', params })
|
||||
}
|
||||
|
||||
// 采购订单详情表详情
|
||||
export function apiPurchaseOrderInfoDetail(params: any) {
|
||||
return request.get({ url: '/purchase_order_info/purchaseorderinfo/detail', params })
|
||||
}
|
@ -1,65 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 采购供应链商品列表
|
||||
export function apiPurchaseProductOfferLists(params: any) {
|
||||
return request.get({ url: '/purchase_product_offer/purchaseproductoffer/lists', params })
|
||||
}
|
||||
|
||||
// 添加采购供应链商品
|
||||
export function apiPurchaseProductOfferAdd(params: any) {
|
||||
return request.post({ url: '/purchase_product_offer/purchaseproductoffer/add', params })
|
||||
}
|
||||
|
||||
// 编辑采购供应链商品
|
||||
export function apiPurchaseProductOfferEdit(params: any) {
|
||||
return request.post({ url: '/purchase_product_offer/purchaseproductoffer/edit', params })
|
||||
}
|
||||
|
||||
// 删除采购供应链商品
|
||||
export function apiPurchaseProductOfferDelete(params: any) {
|
||||
return request.post({ url: '/purchase_product_offer/purchaseproductoffer/delete', params })
|
||||
}
|
||||
/**
|
||||
* 一键往期采购
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function apiPurchaseProductOfferAddPurchasesOneClick(params: any) {
|
||||
return request.post({
|
||||
url: '/purchase_product_offer/purchaseproductoffer/add_purchases_one_click',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 设置采购信息
|
||||
export function apiPurchaseProductOfferSetProcureInfo(params: any) {
|
||||
return request.post({
|
||||
url: '/purchase_product_offer/purchaseproductoffer/setProcureInfo',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 设置批量采购信息
|
||||
|
||||
export function apiPurchaseProductOfferSetBatchProcureInfo(params: any) {
|
||||
return request.post({
|
||||
url: '/purchase_product_offer/purchaseproductoffer/setBatchProcureInfo',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 仓库验收信息设置
|
||||
export function apiPurchaseProductOffersetStoreroomInfo(params: any) {
|
||||
return request.post({
|
||||
url: '/purchase_product_offer/purchaseproductoffer/setStoreroomInfo',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 仓库验收信息设置
|
||||
export function apiPurchaseProductOffersetStoreroomInfoTwo(params: any) {
|
||||
return request.post({
|
||||
url: '/purchase_product_offer/purchaseproductoffer/setStoreroomInfoTwo',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 采购供应链商品详情
|
||||
export function apiPurchaseProductOfferDetail(params: any) {
|
||||
return request.get({ url: '/purchase_product_offer/purchaseproductoffer/detail', params })
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 门店商品辅助表列表
|
||||
export function apiStoreBranchProductLists(params: any) {
|
||||
return request.get({ url: '/store_branch_product/storebranchproduct/lists', params })
|
||||
}
|
||||
|
||||
// 添加门店商品辅助表
|
||||
export function apiStoreBranchProductAdd(params: any) {
|
||||
return request.post({ url: '/store_branch_product/storebranchproduct/add', params })
|
||||
}
|
||||
|
||||
// 编辑门店商品辅助表
|
||||
export function apiStoreBranchProductEdit(params: any) {
|
||||
return request.post({ url: '/store_branch_product/storebranchproduct/edit', params })
|
||||
}
|
||||
|
||||
// 编辑门店商品
|
||||
export function apiStoreBranchProductUpdate(params: any) {
|
||||
return request.post({ url: '/store_branch_product/storebranchproduct/update', params })
|
||||
}
|
||||
|
||||
// 删除门店商品辅助表
|
||||
export function apiStoreBranchProductDelete(params: any) {
|
||||
return request.post({ url: '/store_branch_product/storebranchproduct/delete', params })
|
||||
}
|
||||
export function apiStoreBranchProductEditStock(params: any) {
|
||||
return request.post({
|
||||
url: '/store_branch_product/storebranchproduct/edit_stock',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
// 门店商品辅助表详情
|
||||
export function apiStoreBranchProductDetail(params: any) {
|
||||
return request.get({ url: '/store_branch_product/storebranchproduct/detail', params })
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 门店商品属性值辅助表列表
|
||||
export function apiStoreBranchProductAttrValueLists(params: any) {
|
||||
return request.get({
|
||||
url: '/store_branch_product_attr_value/storebranchproductattrvalue/lists',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
// 添加门店商品属性值辅助表
|
||||
export function apiStoreBranchProductAttrValueAdd(params: any) {
|
||||
return request.post({
|
||||
url: '/store_branch_product_attr_value/storebranchproductattrvalue/add',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
// 编辑门店商品属性值辅助表
|
||||
export function apiStoreBranchProductAttrValueEdit(params: any) {
|
||||
return request.post({
|
||||
url: '/store_branch_product_attr_value/storebranchproductattrvalue/edit',
|
||||
params
|
||||
})
|
||||
}
|
||||
//更新状态
|
||||
export function apiStoreBranchProductAttrValueStatus(params: any) {
|
||||
return request.post({
|
||||
url: '/store_branch_product_attr_value/storebranchproductattrvalue/status',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
// 删除门店商品属性值辅助表
|
||||
export function apiStoreBranchProductAttrValueDelete(params: any) {
|
||||
return request.post({
|
||||
url: '/store_branch_product_attr_value/storebranchproductattrvalue/delete',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
// 门店商品属性值辅助表详情
|
||||
export function apiStoreBranchProductAttrValueDetail(params: any) {
|
||||
return request.get({
|
||||
url: '/store_branch_product_attr_value/storebranchproductattrvalue/detail',
|
||||
params
|
||||
})
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 门店现金流水列表
|
||||
export function apiStoreCashFinanceFlowLists(params: any) {
|
||||
return request.get({ url: '/store_cash_finance_flow/storecashfinanceflow/lists', params })
|
||||
}
|
||||
|
||||
// 添加门店现金流水
|
||||
export function apiStoreCashFinanceFlowAdd(params: any) {
|
||||
return request.post({ url: '/store_cash_finance_flow/storecashfinanceflow/add', params })
|
||||
}
|
||||
|
||||
// 编辑门店现金流水
|
||||
export function apiStoreCashFinanceFlowEdit(params: any) {
|
||||
return request.post({ url: '/store_cash_finance_flow/storecashfinanceflow/edit', params })
|
||||
}
|
||||
|
||||
// 删除门店现金流水
|
||||
export function apiStoreCashFinanceFlowDelete(params: any) {
|
||||
return request.post({ url: '/store_cash_finance_flow/storecashfinanceflow/delete', params })
|
||||
}
|
||||
|
||||
// 门店现金流水详情
|
||||
export function apiStoreCashFinanceFlowDetail(params: any) {
|
||||
return request.get({ url: '/store_cash_finance_flow/storecashfinanceflow/detail', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 商品分类表列表
|
||||
export function apiStoreCategoryLists(params: any) {
|
||||
return request.get({ url: '/store_category/storecategory/lists', params })
|
||||
}
|
||||
|
||||
// 添加商品分类表
|
||||
export function apiStoreCategoryAdd(params: any) {
|
||||
return request.post({ url: '/store_category/storecategory/add', params })
|
||||
}
|
||||
|
||||
// 编辑商品分类表
|
||||
export function apiStoreCategoryEdit(params: any) {
|
||||
return request.post({ url: '/store_category/storecategory/edit', params })
|
||||
}
|
||||
|
||||
// 删除商品分类表
|
||||
export function apiStoreCategoryDelete(params: any) {
|
||||
return request.post({ url: '/store_category/storecategory/delete', params })
|
||||
}
|
||||
|
||||
// 商品分类表详情
|
||||
export function apiStoreCategoryDetail(params: any) {
|
||||
return request.get({ url: '/store_category/storecategory/detail', params })
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 门店提现表列表
|
||||
export function apiStoreExtractLists(params: any) {
|
||||
return request.get({ url: '/store_extract/storeextract/lists', params })
|
||||
}
|
||||
|
||||
// 添加门店提现表
|
||||
export function apiStoreExtractAdd(params: any) {
|
||||
return request.post({ url: '/store_extract/storeextract/add', params })
|
||||
}
|
||||
|
||||
// 确认提现
|
||||
export function apiStoreExtractEnter(params: any) {
|
||||
return request.post({ url: '/store_extract/storeextract/enter', params })
|
||||
}
|
||||
|
||||
// 编辑门店提现表
|
||||
export function apiStoreExtractEdit(params: any) {
|
||||
return request.post({ url: '/store_extract/storeextract/edit', params })
|
||||
}
|
||||
|
||||
// 删除门店提现表
|
||||
export function apiStoreExtractDelete(params: any) {
|
||||
return request.post({ url: '/store_extract/storeextract/delete', params })
|
||||
}
|
||||
|
||||
// 门店提现表详情
|
||||
export function apiStoreExtractDetail(params: any) {
|
||||
return request.get({ url: '/store_extract/storeextract/detail', params })
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 门店财务-日账单
|
||||
export function apiDayBillLists(params: any) {
|
||||
return request.get({ url: '/store_finance_flow/StoreFinanceFlow/day_bill_lists', params })
|
||||
}
|
||||
|
||||
// 门店财务-周账单
|
||||
export function apiWeekBillLists(params: any) {
|
||||
return request.get({ url: '/store_finance_flow/StoreFinanceFlow/week_bill_lists', params })
|
||||
}
|
||||
|
||||
// 门店财务-月账单
|
||||
export function apiMonthBillLists(params: any) {
|
||||
return request.get({ url: '/store_finance_flow/StoreFinanceFlow/month_bill_lists', params })
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 门店资金流水表列表
|
||||
export function apiStoreFinanceFlowLists(params: any) {
|
||||
return request.get({ url: '/store_finance_flow/storefinanceflow/lists', params })
|
||||
}
|
||||
|
||||
// 添加门店资金流水表
|
||||
export function apiStoreFinanceFlowAdd(params: any) {
|
||||
return request.post({ url: '/store_finance_flow/storefinanceflow/add', params })
|
||||
}
|
||||
|
||||
// 编辑门店资金流水表
|
||||
export function apiStoreFinanceFlowEdit(params: any) {
|
||||
return request.post({ url: '/store_finance_flow/storefinanceflow/edit', params })
|
||||
}
|
||||
|
||||
// 删除门店资金流水表
|
||||
export function apiStoreFinanceFlowDelete(params: any) {
|
||||
return request.post({ url: '/store_finance_flow/storefinanceflow/delete', params })
|
||||
}
|
||||
|
||||
// 门店资金流水表详情
|
||||
export function apiStoreFinanceFlowDetail(params: any) {
|
||||
return request.get({ url: '/store_finance_flow/storefinanceflow/detail', params })
|
||||
}
|
||||
// 导出
|
||||
export function apiStoreFinanceFlowExport(params: any) {
|
||||
return request.post({ url: '/store_finance_flow/storefinanceflow/export', params })
|
||||
}
|
@ -1,94 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 订单表列表
|
||||
export function apiStoreOrderLists(params: any) {
|
||||
return request.get({ url: '/store_order/storeorder/lists', params })
|
||||
}
|
||||
|
||||
// 添加订单表
|
||||
export function apiStoreOrderAdd(params: any) {
|
||||
return request.post({ url: '/store_order/storeorder/add', params })
|
||||
}
|
||||
|
||||
// 编辑订单表
|
||||
export function apiStoreOrderEdit(params: any) {
|
||||
return request.post({ url: '/store_order/storeorder/edit', params })
|
||||
}
|
||||
|
||||
// 删除订单表
|
||||
export function apiStoreOrderDelete(params: any) {
|
||||
return request.post({ url: '/store_order/storeorder/delete', params })
|
||||
}
|
||||
|
||||
// 订单表详情
|
||||
export function apiStoreOrderDetail(params: any) {
|
||||
return request.get({ url: '/store_order/storeorder/detail', params })
|
||||
}
|
||||
|
||||
// 订单商品详情
|
||||
export function apiStoreOrderCartInfo(params: any) {
|
||||
return request.get({ url: '/store_order_cart_info/StoreOrderCartInfo/lists', params })
|
||||
}
|
||||
// 订单商品详情
|
||||
export function apiStoreOrderCartInfoTwo(params: any) {
|
||||
return request.get({ url: '/store_order_cart_info/StoreOrderCartInfo/listsTwo', params })
|
||||
}
|
||||
|
||||
export function apiStoreOrderTitle() {
|
||||
return request.get({ url: '/store_order/storeOrder/title' })
|
||||
}
|
||||
|
||||
// 退款订单列表
|
||||
export function apiStoreRefundOrderLists(params: any) {
|
||||
return request.get({ url: '/store_order/StoreOrder/refund_order', params })
|
||||
}
|
||||
|
||||
// 退款订单详情
|
||||
export function apiStoreRefundOrderDetail(params: any) {
|
||||
return request.get({ url: '/store_order/storeRefundOrder/detail', params })
|
||||
}
|
||||
|
||||
// 订单退款
|
||||
export function apiStoreOrderRefund(params: any) {
|
||||
return request.post({ url: '/store_order/storeOrder/refund', params })
|
||||
}
|
||||
// 订单核销
|
||||
export function apiStoreOrderWriteoffOrder(params: any) {
|
||||
return request.post({ url: '/store_order/storeOrder/writeoff_order', params })
|
||||
}
|
||||
// 设置配送员
|
||||
export function apiStoreOrderSetDelivery(params: any) {
|
||||
return request.post({ url: '/store_order/storeorder/set_delivery', params })
|
||||
}
|
||||
// 导出配送表格
|
||||
export function apiStoreOrderExport(params: any) {
|
||||
return request.post({ url: '/store_order/storeorder/export', params })
|
||||
}
|
||||
// 导出标签
|
||||
export function apiStoreOrderExportTags(params: any) {
|
||||
return request.post({ url: '/store_order/storeorder/export_tags', params })
|
||||
}
|
||||
// 导出配送表格2
|
||||
export function apiStoreOrderInfoExport(params: any) {
|
||||
return request.post({ url: '/store_order_cart_info/storeordercartinfo/export', params })
|
||||
}
|
||||
// 生成出库表单
|
||||
export function createOutboundOrder(params: any) {
|
||||
return request.post({ url: '/store_order/storeorder/createOutboundOrder', params })
|
||||
}
|
||||
|
||||
// 编辑订单商品
|
||||
export function apiStoreOrderCartInfoEdit(params: any) {
|
||||
return request.post({ url: '/store_order_cart_info/StoreOrderCartInfo/edit', params })
|
||||
}
|
||||
// 添加订单商品
|
||||
export function apiStoreOrderCartInfoAdd(params: any) {
|
||||
return request.post({ url: '/store_order_cart_info/StoreOrderCartInfo/add', params })
|
||||
}
|
||||
// 删除订单商品
|
||||
export function apiStoreOrderCartInfoDel(params: any) {
|
||||
return request.post({ url: '/store_order_cart_info/StoreOrderCartInfo/del', params })
|
||||
}
|
||||
export function apiStoreOrderSetSystemStore(params: any) {
|
||||
return request.post({ url: '/store_order/storeorder/setSystemStore', params })
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 商品表列表
|
||||
export function apiStoreProductLists(params: any) {
|
||||
return request.get({ url: '/store_product/storeproduct/lists', params })
|
||||
}
|
||||
|
||||
// 添加商品表
|
||||
export function apiStoreProductAdd(params: any) {
|
||||
return request.post({ url: '/store_product/storeproduct/add', params })
|
||||
}
|
||||
|
||||
// 编辑商品表
|
||||
export function apiStoreProductEdit(params: any) {
|
||||
return request.post({ url: '/store_product/storeproduct/edit', params })
|
||||
}
|
||||
// 商品状态
|
||||
export function apiStoreProductStatus(params: any) {
|
||||
return request.post({ url: '/store_product/storeproduct/status', params })
|
||||
}
|
||||
|
||||
// 删除商品表
|
||||
export function apiStoreProductDelete(params: any) {
|
||||
return request.post({ url: '/store_product/storeproduct/delete', params })
|
||||
}
|
||||
|
||||
// 商品表详情
|
||||
export function apiStoreProductDetail(params: any) {
|
||||
return request.get({ url: '/store_product/storeproduct/detail', params })
|
||||
}
|
||||
|
||||
// 复制商品到门店
|
||||
export function apiStoreProductImport(params: any) {
|
||||
return request.post({ url: '/store_product/storeproduct/import', params })
|
||||
}
|
||||
// 复制商品到门店
|
||||
export function apiStoreProductCopy(params: any) {
|
||||
return request.post({ url: '/store_product/storeproduct/copy', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 商品属性值表列表
|
||||
export function apiStoreProductAttrValueLists(params: any) {
|
||||
return request.get({ url: '/store_product_attr_value/storeproductattrvalue/lists', params })
|
||||
}
|
||||
|
||||
// 添加商品属性值表
|
||||
export function apiStoreProductAttrValueAdd(params: any) {
|
||||
return request.post({ url: '/store_product_attr_value/storeproductattrvalue/add', params })
|
||||
}
|
||||
|
||||
// 编辑商品属性值表
|
||||
export function apiStoreProductAttrValueEdit(params: any) {
|
||||
return request.post({ url: '/store_product_attr_value/storeproductattrvalue/edit', params })
|
||||
}
|
||||
|
||||
// 删除商品属性值表
|
||||
export function apiStoreProductAttrValueDelete(params: any) {
|
||||
return request.post({ url: '/store_product_attr_value/storeproductattrvalue/delete', params })
|
||||
}
|
||||
|
||||
// 商品属性值表详情
|
||||
export function apiStoreProductAttrValueDetail(params: any) {
|
||||
return request.get({ url: '/store_product_attr_value/storeproductattrvalue/detail', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 分组报价列表
|
||||
export function apiStoreProductGroupPriceLists(params: any) {
|
||||
return request.get({ url: '/store_product_group_price/storeproductgroupprice/lists', params })
|
||||
}
|
||||
|
||||
// 添加分组报价
|
||||
export function apiStoreProductGroupPriceAdd(params: any) {
|
||||
return request.post({ url: '/store_product_group_price/storeproductgroupprice/add', params })
|
||||
}
|
||||
|
||||
// 编辑分组报价
|
||||
export function apiStoreProductGroupPriceEdit(params: any) {
|
||||
return request.post({ url: '/store_product_group_price/storeproductgroupprice/edit', params })
|
||||
}
|
||||
|
||||
// 删除分组报价
|
||||
export function apiStoreProductGroupPriceDelete(params: any) {
|
||||
return request.post({ url: '/store_product_group_price/storeproductgroupprice/delete', params })
|
||||
}
|
||||
|
||||
// 分组报价详情
|
||||
export function apiStoreProductGroupPriceDetail(params: any) {
|
||||
return request.get({ url: '/store_product_group_price/storeproductgroupprice/detail', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 商品缺库存表列表
|
||||
export function apiStoreProductLowStockLists(params: any) {
|
||||
return request.get({ url: '/store_product_low_stock/storeproductlowstock/lists', params })
|
||||
}
|
||||
|
||||
// 添加商品缺库存表
|
||||
export function apiStoreProductLowStockAdd(params: any) {
|
||||
return request.post({ url: '/store_product_low_stock/storeproductlowstock/add', params })
|
||||
}
|
||||
|
||||
// 编辑商品缺库存表
|
||||
export function apiStoreProductLowStockEdit(params: any) {
|
||||
return request.post({ url: '/store_product_low_stock/storeproductlowstock/edit', params })
|
||||
}
|
||||
|
||||
// 删除商品缺库存表
|
||||
export function apiStoreProductLowStockDelete(params: any) {
|
||||
return request.post({ url: '/store_product_low_stock/storeproductlowstock/delete', params })
|
||||
}
|
||||
|
||||
// 商品缺库存表详情
|
||||
export function apiStoreProductLowStockDetail(params: any) {
|
||||
return request.get({ url: '/store_product_low_stock/storeproductlowstock/detail', params })
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 商品价格更改列表
|
||||
export function apiStoreProductPriceLists(params: any) {
|
||||
return request.get({ url: '/store_product_price/storeproductprice/lists', params })
|
||||
}
|
||||
|
||||
// 添加商品价格更改
|
||||
export function apiStoreProductPriceAdd(params: any) {
|
||||
return request.post({ url: '/store_product_price/storeproductprice/add', params })
|
||||
}
|
||||
|
||||
// 编辑商品价格更改
|
||||
export function apiStoreProductPriceEdit(params: any) {
|
||||
return request.post({ url: '/store_product_price/storeproductprice/edit', params })
|
||||
}
|
||||
|
||||
// 删除商品价格更改
|
||||
export function apiStoreProductPriceDelete(params: any) {
|
||||
return request.post({ url: '/store_product_price/storeproductprice/delete', params })
|
||||
}
|
||||
// 确认改价
|
||||
export function apiStoreProductPriceEnterPrice(params: any) {
|
||||
return request.post({ url: '/store_product_price/storeproductprice/enterPrice', params })
|
||||
}
|
||||
|
||||
// 商品价格更改详情
|
||||
export function apiStoreProductPriceDetail(params: any) {
|
||||
return request.get({ url: '/store_product_price/storeproductprice/detail', params })
|
||||
}
|
||||
|
||||
export function apiStoreProductPriceExport(params: any) {
|
||||
return request.post({ url: '/store_product_price/storeproductprice/export', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 分组报价列表
|
||||
export function apiStoreProductPriceListLists(params: any) {
|
||||
return request.get({ url: '/store_product_price_list/storeproductpricelist/lists', params })
|
||||
}
|
||||
|
||||
// 添加分组报价
|
||||
export function apiStoreProductPriceListAdd(params: any) {
|
||||
return request.post({ url: '/store_product_price_list/storeproductpricelist/add', params })
|
||||
}
|
||||
|
||||
// 编辑分组报价
|
||||
export function apiStoreProductPriceListEdit(params: any) {
|
||||
return request.post({ url: '/store_product_price_list/storeproductpricelist/edit', params })
|
||||
}
|
||||
|
||||
// 删除分组报价
|
||||
export function apiStoreProductPriceListDelete(params: any) {
|
||||
return request.post({ url: '/store_product_price_list/storeproductpricelist/delete', params })
|
||||
}
|
||||
|
||||
// 分组报价详情
|
||||
export function apiStoreProductPriceListDetail(params: any) {
|
||||
return request.get({ url: '/store_product_price_list/storeproductpricelist/detail', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 计量单位列表
|
||||
export function apiStoreProductUnitLists(params: any) {
|
||||
return request.get({ url: '/store_product_unit/storeproductunit/lists', params })
|
||||
}
|
||||
|
||||
// 添加计量单位
|
||||
export function apiStoreProductUnitAdd(params: any) {
|
||||
return request.post({ url: '/store_product_unit/storeproductunit/add', params })
|
||||
}
|
||||
|
||||
// 编辑计量单位
|
||||
export function apiStoreProductUnitEdit(params: any) {
|
||||
return request.post({ url: '/store_product_unit/storeproductunit/edit', params })
|
||||
}
|
||||
|
||||
// 删除计量单位
|
||||
export function apiStoreProductUnitDelete(params: any) {
|
||||
return request.post({ url: '/store_product_unit/storeproductunit/delete', params })
|
||||
}
|
||||
|
||||
// 计量单位详情
|
||||
export function apiStoreProductUnitDetail(params: any) {
|
||||
return request.get({ url: '/store_product_unit/storeproductunit/detail', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 供应商户表列表
|
||||
export function apiSupplierLists(params: any) {
|
||||
return request.get({ url: '/supplier/supplier/lists', params })
|
||||
}
|
||||
|
||||
// 添加供应商户表
|
||||
export function apiSupplierAdd(params: any) {
|
||||
return request.post({ url: '/supplier/supplier/add', params })
|
||||
}
|
||||
|
||||
// 编辑供应商户表
|
||||
export function apiSupplierEdit(params: any) {
|
||||
return request.post({ url: '/supplier/supplier/edit', params })
|
||||
}
|
||||
|
||||
// 删除供应商户表
|
||||
export function apiSupplierDelete(params: any) {
|
||||
return request.post({ url: '/supplier/supplier/delete', params })
|
||||
}
|
||||
|
||||
// 供应商户表详情
|
||||
export function apiSupplierDetail(params: any) {
|
||||
return request.get({ url: '/supplier/supplier/detail', params })
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 门店列表列表
|
||||
export function apiSystemStoreLists(params: any) {
|
||||
return request.get({ url: '/system_store/systemstore/lists', params })
|
||||
}
|
||||
|
||||
// 添加门店列表
|
||||
export function apiSystemStoreAdd(params: any) {
|
||||
return request.post({ url: '/system_store/systemstore/add', params })
|
||||
}
|
||||
|
||||
// 编辑门店列表
|
||||
export function apiSystemStoreEdit(params: any) {
|
||||
return request.post({ url: '/system_store/systemstore/edit', params })
|
||||
}
|
||||
|
||||
// 删除门店列表
|
||||
export function apiSystemStoreDelete(params: any) {
|
||||
return request.post({ url: '/system_store/systemstore/delete', params })
|
||||
}
|
||||
|
||||
// 门店列表详情
|
||||
export function apiSystemStoreDetail(params: any) {
|
||||
return request.get({ url: '/system_store/systemstore/detail', params })
|
||||
}
|
||||
|
||||
// 根据商品来源获取门店
|
||||
export function apiSourceProductStoreLists(params: any) {
|
||||
return request.get({ url: '/system_store/systemstore/source_product_store_lists', params })
|
||||
}
|
||||
|
||||
// 根据商品编辑门店库存
|
||||
export function apiStoreBranchProductEdit(params: any) {
|
||||
return request.post({ url: '/store_branch_product/StoreBranchProduct/edit', params })
|
||||
}
|
||||
|
||||
// 根据商品编辑门店库存
|
||||
export function apiStoreBranchProductEditPrice(params: any) {
|
||||
return request.post({ url: '/store_branch_product/StoreBranchProduct/edit_price', params })
|
||||
}
|
||||
|
||||
// 运营概况-头部统计
|
||||
export function apiSystemStoreStatisticsHeader(params: any) {
|
||||
return request.get({ url: '/system_store/SystemStoreStatistics/header', params })
|
||||
}
|
||||
|
||||
// 运营概况-营业趋势
|
||||
export function apiSystemStoreStatisticsOperate(params: any) {
|
||||
return request.get({ url: '/system_store/SystemStoreStatistics/operate', params })
|
||||
}
|
||||
|
||||
// 运营概况-交易/类型数据
|
||||
export function apiSystemStoreStatisticsOrderChart(params: any) {
|
||||
return request.get({ url: '/system_store/SystemStoreStatistics/orderChart', params })
|
||||
}
|
||||
|
||||
// 运营概况-门店业绩
|
||||
export function apiSystemStoreStatisticsStore(params: any) {
|
||||
return request.get({ url: '/system_store/SystemStoreStatistics/store', params })
|
||||
}
|
||||
|
||||
// 门店交易统计
|
||||
export function apiWorkbenchStoreIndex(params: any) {
|
||||
return request.get({ url: '/workbench/store_index', params })
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 门店入库操作列表
|
||||
export function apiSystemStoreStorageLists(params: any) {
|
||||
return request.get({ url: '/system_store_storage/systemstorestorage/lists', params })
|
||||
}
|
||||
|
||||
// 添加门店入库操作
|
||||
export function apiSystemStoreStorageAdd(params: any) {
|
||||
return request.post({ url: '/system_store_storage/systemstorestorage/add', params })
|
||||
}
|
||||
|
||||
// 编辑门店入库操作
|
||||
export function apiSystemStoreStorageEdit(params: any) {
|
||||
return request.post({ url: '/system_store_storage/systemstorestorage/edit', params })
|
||||
}
|
||||
|
||||
// 删除门店入库操作
|
||||
export function apiSystemStoreStorageDelete(params: any) {
|
||||
return request.post({ url: '/system_store_storage/systemstorestorage/delete', params })
|
||||
}
|
||||
|
||||
// 门店入库操作详情
|
||||
export function apiSystemStoreStorageDetail(params: any) {
|
||||
return request.get({ url: '/system_store_storage/systemstorestorage/detail', params })
|
||||
}
|
||||
|
||||
// 门店一键确认入库
|
||||
export function apiSystemStoreStorageBatchConfirm(params: any) {
|
||||
return request.post({ url: '/system_store_storage/systemstorestorage/batchConfirm', params })
|
||||
}
|
||||
|
||||
export function apiSystemStoreStorageRollback(params: any) {
|
||||
return request.post({ url: '/system_store_storage/systemstorestorage/rollback', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 用户账单表列表
|
||||
export function apiUserBillLists(params: any) {
|
||||
return request.get({ url: '/user_bill/userbill/lists', params })
|
||||
}
|
||||
|
||||
// 添加用户账单表
|
||||
export function apiUserBillAdd(params: any) {
|
||||
return request.post({ url: '/user_bill/userbill/add', params })
|
||||
}
|
||||
|
||||
// 编辑用户账单表
|
||||
export function apiUserBillEdit(params: any) {
|
||||
return request.post({ url: '/user_bill/userbill/edit', params })
|
||||
}
|
||||
|
||||
// 删除用户账单表
|
||||
export function apiUserBillDelete(params: any) {
|
||||
return request.post({ url: '/user_bill/userbill/delete', params })
|
||||
}
|
||||
|
||||
// 用户账单表详情
|
||||
export function apiUserBillDetail(params: any) {
|
||||
return request.get({ url: '/user_bill/userbill/detail', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 用户标签表列表
|
||||
export function apiUserLabelLists(params: any) {
|
||||
return request.get({ url: '/user_label/userlabel/lists', params })
|
||||
}
|
||||
|
||||
// 添加用户标签表
|
||||
export function apiUserLabelAdd(params: any) {
|
||||
return request.post({ url: '/user_label/userlabel/add', params })
|
||||
}
|
||||
|
||||
// 编辑用户标签表
|
||||
export function apiUserLabelEdit(params: any) {
|
||||
return request.post({ url: '/user_label/userlabel/edit', params })
|
||||
}
|
||||
|
||||
// 删除用户标签表
|
||||
export function apiUserLabelDelete(params: any) {
|
||||
return request.post({ url: '/user_label/userlabel/delete', params })
|
||||
}
|
||||
|
||||
// 用户标签表详情
|
||||
export function apiUserLabelDetail(params: any) {
|
||||
return request.get({ url: '/user_label/userlabel/detail', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 用户商品储存列表
|
||||
export function apiUserProductStorageLists(params: any) {
|
||||
return request.get({ url: '/user_product_storage/userproductstorage/lists', params })
|
||||
}
|
||||
|
||||
// 添加用户商品储存
|
||||
export function apiUserProductStorageAdd(params: any) {
|
||||
return request.post({ url: '/user_product_storage/userproductstorage/add', params })
|
||||
}
|
||||
|
||||
// 编辑用户商品储存
|
||||
export function apiUserProductStorageEdit(params: any) {
|
||||
return request.post({ url: '/user_product_storage/userproductstorage/edit', params })
|
||||
}
|
||||
|
||||
// 删除用户商品储存
|
||||
export function apiUserProductStorageDelete(params: any) {
|
||||
return request.post({ url: '/user_product_storage/userproductstorage/delete', params })
|
||||
}
|
||||
|
||||
// 用户商品储存详情
|
||||
export function apiUserProductStorageDetail(params: any) {
|
||||
return request.get({ url: '/user_product_storage/userproductstorage/detail', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 用户商品储存操作日志列表
|
||||
export function apiUserProductStorageLogLists(params: any) {
|
||||
return request.get({ url: '/user_product_storage_log/userproductstoragelog/lists', params })
|
||||
}
|
||||
|
||||
// 添加用户商品储存操作日志
|
||||
export function apiUserProductStorageLogAdd(params: any) {
|
||||
return request.post({ url: '/user_product_storage_log/userproductstoragelog/add', params })
|
||||
}
|
||||
|
||||
// 编辑用户商品储存操作日志
|
||||
export function apiUserProductStorageLogEdit(params: any) {
|
||||
return request.post({ url: '/user_product_storage_log/userproductstoragelog/edit', params })
|
||||
}
|
||||
|
||||
// 删除用户商品储存操作日志
|
||||
export function apiUserProductStorageLogDelete(params: any) {
|
||||
return request.post({ url: '/user_product_storage_log/userproductstoragelog/delete', params })
|
||||
}
|
||||
|
||||
// 用户商品储存操作日志详情
|
||||
export function apiUserProductStorageLogDetail(params: any) {
|
||||
return request.get({ url: '/user_product_storage_log/userproductstoragelog/detail', params })
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 用户充值表列表
|
||||
export function apiUserRechargeLists(params: any) {
|
||||
return request.get({ url: '/user_recharge/userrecharge/lists', params })
|
||||
}
|
||||
|
||||
// 添加用户充值表
|
||||
export function apiUserRechargeAdd(params: any) {
|
||||
return request.post({ url: '/user_recharge/userrecharge/add', params })
|
||||
}
|
||||
|
||||
// 编辑用户充值表
|
||||
export function apiUserRechargeEdit(params: any) {
|
||||
return request.post({ url: '/user_recharge/userrecharge/edit', params })
|
||||
}
|
||||
|
||||
// 删除用户充值表
|
||||
export function apiUserRechargeDelete(params: any) {
|
||||
return request.post({ url: '/user_recharge/userrecharge/delete', params })
|
||||
}
|
||||
|
||||
// 用户充值表详情
|
||||
export function apiUserRechargeDetail(params: any) {
|
||||
return request.get({ url: '/user_recharge/userrecharge/detail', params })
|
||||
}
|
||||
|
||||
// 充值订单退款
|
||||
export function apiUserRechargeRefund(params: any) {
|
||||
return request.post({ url: '/user_recharge/userrecharge/refund', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 会员类型列表
|
||||
export function apiUserShipLists(params: any) {
|
||||
return request.get({ url: '/user_ship/usership/lists', params })
|
||||
}
|
||||
|
||||
// 添加会员类型
|
||||
export function apiUserShipAdd(params: any) {
|
||||
return request.post({ url: '/user_ship/usership/add', params })
|
||||
}
|
||||
|
||||
// 编辑会员类型
|
||||
export function apiUserShipEdit(params: any) {
|
||||
return request.post({ url: '/user_ship/usership/edit', params })
|
||||
}
|
||||
|
||||
// 删除会员类型
|
||||
export function apiUserShipDelete(params: any) {
|
||||
return request.post({ url: '/user_ship/usership/delete', params })
|
||||
}
|
||||
|
||||
// 会员类型详情
|
||||
export function apiUserShipDetail(params: any) {
|
||||
return request.get({ url: '/user_ship/usership/detail', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 仓库信息列表
|
||||
export function apiWarehouseLists(params: any) {
|
||||
return request.get({ url: '/warehouse/warehouse/lists', params })
|
||||
}
|
||||
|
||||
// 添加仓库信息
|
||||
export function apiWarehouseAdd(params: any) {
|
||||
return request.post({ url: '/warehouse/warehouse/add', params })
|
||||
}
|
||||
|
||||
// 编辑仓库信息
|
||||
export function apiWarehouseEdit(params: any) {
|
||||
return request.post({ url: '/warehouse/warehouse/edit', params })
|
||||
}
|
||||
|
||||
// 删除仓库信息
|
||||
export function apiWarehouseDelete(params: any) {
|
||||
return request.post({ url: '/warehouse/warehouse/delete', params })
|
||||
}
|
||||
|
||||
// 仓库信息详情
|
||||
export function apiWarehouseDetail(params: any) {
|
||||
return request.get({ url: '/warehouse/warehouse/detail', params })
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 商品仓储订单列表
|
||||
export function apiWarehouseOrderLists(params: any) {
|
||||
return request.get({ url: '/warehouse_order/warehouseorder/lists', params })
|
||||
}
|
||||
|
||||
// 添加商品仓储订单
|
||||
export function apiWarehouseOrderAdd(params: any) {
|
||||
return request.post({ url: '/warehouse_order/warehouseorder/add', params })
|
||||
}
|
||||
|
||||
// 添加出库单
|
||||
export function apiWarehouseOrderOutbound(params: any) {
|
||||
return request.post({ url: '/warehouse_order/warehouseorder/outbound', params })
|
||||
}
|
||||
// 编辑商品仓储订单
|
||||
export function apiWarehouseOrderEdit(params: any) {
|
||||
return request.post({ url: '/warehouse_order/warehouseorder/edit', params })
|
||||
}
|
||||
|
||||
// 删除商品仓储订单
|
||||
export function apiWarehouseOrderDelete(params: any) {
|
||||
return request.post({ url: '/warehouse_order/warehouseorder/delete', params })
|
||||
}
|
||||
|
||||
// 商品仓储订单详情
|
||||
export function apiWarehouseOrderDetail(params: any) {
|
||||
return request.get({ url: '/warehouse_order/warehouseorder/detail', params })
|
||||
}
|
||||
// 导出商品仓储入库订单
|
||||
export function apiWarehouseOrderRentryExport(params: any) {
|
||||
return request.post({ url: '/warehouse_order/warehouseorder/rentry_export', params })
|
||||
}
|
||||
// 导出商品仓储出库订单
|
||||
export function apiWarehouseOrderExport(params: any) {
|
||||
return request.post({ url: '/warehouse_order/warehouseorder/export', params })
|
||||
}
|
||||
// 编辑商品仓储订单
|
||||
export function apiWarehouseOrderUpdateEdit(params: any) {
|
||||
return request.post({ url: '/warehouse_order/warehouseorder/update_edit', params })
|
||||
}
|
||||
// 导出商品标签
|
||||
export function apiWarehouseOrderExportTags(params: any) {
|
||||
return request.post({ url: '/warehouse_order/warehouseorder/export_tags', params })
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 商品仓储信息列表
|
||||
export function apiWarehouseProductLists(params: any) {
|
||||
return request.get({ url: '/warehouse_product/warehouseproduct/lists', params })
|
||||
}
|
||||
|
||||
// 添加商品仓储信息
|
||||
export function apiWarehouseProductAdd(params: any) {
|
||||
return request.post({ url: '/warehouse_product/warehouseproduct/add', params })
|
||||
}
|
||||
|
||||
// 编辑商品仓储信息
|
||||
export function apiWarehouseProductEdit(params: any) {
|
||||
return request.post({ url: '/warehouse_product/warehouseproduct/edit', params })
|
||||
}
|
||||
|
||||
// 删除商品仓储信息
|
||||
export function apiWarehouseProductDelete(params: any) {
|
||||
return request.post({ url: '/warehouse_product/warehouseproduct/delete', params })
|
||||
}
|
||||
|
||||
// 商品仓储信息详情
|
||||
export function apiWarehouseProductDetail(params: any) {
|
||||
return request.get({ url: '/warehouse_product/warehouseproduct/detail', params })
|
||||
}
|
||||
// 商品仓储信息确认
|
||||
export function apiWarehouseProductEnter(params: any) {
|
||||
return request.post({ url: '/warehouse_product/warehouseproduct/enter', params })
|
||||
}
|
||||
//商品结算
|
||||
export function apiWarehouseProductSettlement(params: any) {
|
||||
return request.post({ url: '/warehouse_product/warehouseproduct/settlement', params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置出入库
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function apiWarehouseProductSetNums(params: any) {
|
||||
return request.post({ url: '/warehouse_product/warehouseproduct/set_nums', params })
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 仓库商品退货处理列表
|
||||
export function apiWarehouseProductReturnLists(params: any) {
|
||||
return request.get({ url: '/warehouse_product_return/warehouseproductreturn/lists', params })
|
||||
}
|
||||
|
||||
// 添加仓库商品退货处理
|
||||
export function apiWarehouseProductReturnAdd(params: any) {
|
||||
return request.post({ url: '/warehouse_product_return/warehouseproductreturn/add', params })
|
||||
}
|
||||
|
||||
// 编辑仓库商品退货处理
|
||||
export function apiWarehouseProductReturnEdit(params: any) {
|
||||
return request.post({ url: '/warehouse_product_return/warehouseproductreturn/edit', params })
|
||||
}
|
||||
|
||||
// 删除仓库商品退货处理
|
||||
export function apiWarehouseProductReturnDelete(params: any) {
|
||||
return request.post({ url: '/warehouse_product_return/warehouseproductreturn/delete', params })
|
||||
}
|
||||
|
||||
// 仓库商品退货处理详情
|
||||
export function apiWarehouseProductReturnDetail(params: any) {
|
||||
return request.get({ url: '/warehouse_product_return/warehouseproductreturn/detail', params })
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 仓库商品存储列表
|
||||
export function apiWarehouseProductStoregeLists(params: any) {
|
||||
return request.get({ url: '/warehouse_product_storege/warehouseproductstorege/lists', params })
|
||||
}
|
||||
|
||||
// 添加仓库商品存储
|
||||
export function apiWarehouseProductStoregeAdd(params: any) {
|
||||
return request.post({ url: '/warehouse_product_storege/warehouseproductstorege/add', params })
|
||||
}
|
||||
|
||||
// 编辑仓库商品存储
|
||||
export function apiWarehouseProductStoregeEdit(params: any) {
|
||||
return request.post({ url: '/warehouse_product_storege/warehouseproductstorege/edit', params })
|
||||
}
|
||||
|
||||
// 删除仓库商品存储
|
||||
export function apiWarehouseProductStoregeDelete(params: any) {
|
||||
return request.post({
|
||||
url: '/warehouse_product_storege/warehouseproductstorege/delete',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
// 仓库商品存储详情
|
||||
export function apiWarehouseProductStoregeDetail(params: any) {
|
||||
return request.get({ url: '/warehouse_product_storege/warehouseproductstorege/detail', params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否强制校验
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function apiWarehouseProductStoregeVerify(params: any) {
|
||||
return request.post({
|
||||
url: '/warehouse_product_storege/warehouseproductstorege/verify',
|
||||
params
|
||||
})
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 微信支付查询
|
||||
export function apiWechatQuery(params: any) {
|
||||
return request.get({ url: '/index/wechatQuery', params })
|
||||
}
|
@ -19,60 +19,3 @@ export function apiGetProductRanking(params: any) {
|
||||
export function apiGetUserBasic(params: any) {
|
||||
return request.get({ url: '/workbench/get_user_basic', params })
|
||||
}
|
||||
|
||||
// 用户趋势
|
||||
export function apiGetUserTrend(params: any) {
|
||||
return request.get({ url: '/workbench/get_user_trend', params })
|
||||
}
|
||||
|
||||
// 交易趋势
|
||||
export function apiGetBottomTrade(params: any) {
|
||||
return request.get({ url: '/workbench/bottom_trade', params })
|
||||
}
|
||||
|
||||
// 当日订单金额
|
||||
export function apiGetTopTrade(params: any) {
|
||||
return request.get({ url: '/workbench/top_trade', params })
|
||||
}
|
||||
// 实时订单商品合计统计
|
||||
export function product_order(params: any) {
|
||||
return request.get({ url: '/workbench/product_order', params })
|
||||
}
|
||||
// 实时订单商品合计统计
|
||||
export function product_month_order(params: any) {
|
||||
return request.get({ url: '/workbench/product_month_order', params })
|
||||
}
|
||||
// 实时订单商品合计统计
|
||||
export function store_order_cart_info_curve(params: any) {
|
||||
return request.get({ url: '/store_order_cart_info/StoreOrderCartInfo/curve', params })
|
||||
}
|
||||
|
||||
// 仓库头部统计
|
||||
export function total_warehouse(params: any) {
|
||||
return request.get({ url: '/workbench/total_warehouse', params })
|
||||
}
|
||||
// 仓库列表统计
|
||||
export function warehouse_list(params: any) {
|
||||
return request.get({ url: '/workbench/warehouse_list', params })
|
||||
}
|
||||
// 门店和仓库列表统计
|
||||
export function total_warehouse_list(params: any) {
|
||||
return request.get({ url: '/workbench/total_warehouse_list', params })
|
||||
}
|
||||
// 已结算 未结算列表统计
|
||||
export function total_warehouse_product_list(params: any) {
|
||||
return request.get({ url: '/workbench/total_warehouse_product_list', params })
|
||||
}
|
||||
// 负库存列表统计
|
||||
export function negative_inventory(params: any) {
|
||||
return request.get({ url: '/workbench/negative_inventory', params })
|
||||
}
|
||||
|
||||
// 负库存列表统计
|
||||
export function update_negative_zero(params: any) {
|
||||
return request.get({ url: '/workbench/update_negative_zero', params })
|
||||
}
|
||||
// 负库存列表统计
|
||||
export function stock_product_price(params: any) {
|
||||
return request.get({ url: '/workbench/stock_product_price', params })
|
||||
}
|
||||
|
@ -1,80 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="商品名称" prop="store_name">
|
||||
<el-input class="w-[200px]" v-model="queryParams.store_name" @keydown.enter="productList" clearable
|
||||
placeholder="请输入商品名称" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="mt-4" v-loading="pager.loading">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange" :height="300">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="商品ID" prop="id" show-overflow-tooltip />
|
||||
<el-table-column label="商品图片" prop="image" min-width="80">
|
||||
<template #default="{ row }">
|
||||
<el-image style="width: 50px; height: 50px" :src="row.image" :preview-teleported="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品名称" prop="store_name" min-width="200" show-overflow-tooltip />
|
||||
<el-table-column label="分类" prop="cate_name" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column label="单位" prop="unit_name" min-width="80" show-overflow-tooltip />
|
||||
<el-table-column label="商品价格" prop="price" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column label="仓库库存" prop="stock" min-width="100" show-overflow-tooltip />
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
<el-button class="w-full mt-4" type="primary" @click="bindStore">添加商品</el-button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="systemStoreLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { apiStoreProductLists } from '@/api/store_product'
|
||||
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { defineProps } from 'vue';
|
||||
|
||||
const props = defineProps({
|
||||
activityZoneFormId: Number
|
||||
});
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
store_name: '',
|
||||
is_warehouse: 1,
|
||||
activity_zone_form_id: props.activityZoneFormId
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
const datas = ref()
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val : any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
const productList = (e) => {
|
||||
getLists()
|
||||
e.preventDefault();
|
||||
}
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiStoreProductLists,
|
||||
params: queryParams
|
||||
})
|
||||
getLists()
|
||||
|
||||
const emits = defineEmits(['onBindStore'])
|
||||
// 绑定用户
|
||||
const bindStore = () => {
|
||||
const list = pager.lists.filter((item) => selectData.value.includes(item.id))
|
||||
if (!list.length) return ElMessage.error('请先选择商品')
|
||||
emits('onBindStore', list, queryParams.activity_zone_form_id)
|
||||
}
|
||||
</script>
|
@ -1,111 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="商品名称" prop="store_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.store_name" clearable placeholder="请输入商品名称" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['activity_zone/add']" type="primary" @click="showProductModal()">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="ID" prop="id" show-overflow-tooltip />
|
||||
<el-table-column label="商品ID" prop="product_id" show-overflow-tooltip />
|
||||
<el-table-column label="商品" prop="store_name" show-overflow-tooltip />
|
||||
<el-table-column label="单位" prop="unit_name" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['activity_zone/delete']" type="danger" link
|
||||
@click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<el-dialog v-model="showProduct" title="选择商品" width="70%">
|
||||
<productPop :activityZoneFormId="queryParams.form_id" @onBindStore="onBindProduct"></productPop>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="activityZoneLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiActivityZoneLists, apiActivityZoneDelete, apiActivityZoneAdd } from '@/api/activity_zone'
|
||||
import feedback from '@/utils/feedback'
|
||||
import productPop from './component/productPop.vue'
|
||||
|
||||
const showProduct = ref(false) // 选择商品列表是否显示
|
||||
|
||||
const route = useRoute()
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
form_id: route.query.id,
|
||||
store_name: '',
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val : any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 选择商品
|
||||
const onBindProduct = async(e: any[], formId: any) => {
|
||||
let data = {
|
||||
form_id: formId,
|
||||
product_ids: []
|
||||
}
|
||||
e.forEach((item: any) => {
|
||||
if (!data.product_ids.find((t: any) => t.id == item.id)) {
|
||||
data.product_ids.push(item.id)
|
||||
}
|
||||
})
|
||||
await apiActivityZoneAdd(data)
|
||||
showProduct.value = false
|
||||
getLists()
|
||||
}
|
||||
|
||||
const showProductModal = () => {
|
||||
showProduct.value = true
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('activity_zone')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiActivityZoneLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id : number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiActivityZoneDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
@ -1,164 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="类型" prop="type">
|
||||
<el-select v-model="formData.type" placeholder="请选择类型">
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option v-for="(item, index) in dictData.activity_zone" :key="index" :label="item.remark"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="表单标题" prop="title">
|
||||
<el-input v-model="formData.title" clearable placeholder="请输入表单标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="商品分类" prop="cate_ids">
|
||||
<el-cascader class="w-[500px]" v-model="formData.cate_ids" filterable clearable
|
||||
:before-filter="beforeFilter" :props="props" placeholder="请选择商品分类" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input :rows="3" type="textarea" v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="categoryEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import { apiStoreCategoryLists } from '@/api/store_category'
|
||||
import { apiActivityZoneFormAdd, apiActivityZoneFormEdit } from '@/api/activity_zone_form'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑表单' : '新增表单'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
type: '',
|
||||
title: '',
|
||||
cate_ids: [],
|
||||
remark: '',
|
||||
})
|
||||
|
||||
let resolves
|
||||
let nodes
|
||||
const flag = ref(false)
|
||||
let name
|
||||
const beforeFilter = (value) => {
|
||||
name = value
|
||||
flag.value = true
|
||||
props.lazyLoad(nodes, resolves)
|
||||
return false
|
||||
}
|
||||
const props = {
|
||||
value: 'id',
|
||||
label: 'name',
|
||||
lazy: true,
|
||||
multiple: true,
|
||||
lazyLoad(node, resolve) {
|
||||
if (!resolves) resolves = resolve
|
||||
if (!nodes) nodes = node
|
||||
const pid = node.value || 0
|
||||
let data = {}
|
||||
if (flag.value) {
|
||||
data = { name: name }
|
||||
if (!name) {
|
||||
data = {
|
||||
pid: pid,
|
||||
page_size: 10000
|
||||
}
|
||||
}
|
||||
} else {
|
||||
data = {
|
||||
pid: pid,
|
||||
page_size: 10000
|
||||
}
|
||||
}
|
||||
apiStoreCategoryLists({
|
||||
...data
|
||||
}).then((res) => {
|
||||
resolve(
|
||||
res.lists.map((item : any) => {
|
||||
item.leaf = item.is_children == 0
|
||||
flag.value = false
|
||||
return item
|
||||
})
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
type: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入表单类型',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
title: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入表单名称',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
cate_ids: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入商品分类',
|
||||
trigger: ['blur']
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data : Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData }
|
||||
mode.value == 'edit' ? await apiActivityZoneFormEdit(data) : await apiActivityZoneFormAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData
|
||||
})
|
||||
</script>
|
@ -1,142 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item class="w-[180px]" label="类型" prop="type">
|
||||
<el-select v-model="queryParams.type" clearable placeholder="请选择类型">
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option v-for="(item, index) in dictData.activity_zone" :key="index" :label="item.remark"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="表单名称" prop="title">
|
||||
<el-input class="w-[280px]" v-model="queryParams.title" clearable placeholder="请输入表单名称" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['activity_zone/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column label="ID" prop="id" show-overflow-tooltip />
|
||||
<el-table-column label="类型" prop="type">
|
||||
<template #default="{ row }">
|
||||
<div v-for="(item, index) in dictData.activity_zone">
|
||||
<div v-if="item.value == row.type">{{item.remark}}</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="标题" prop="title" show-overflow-tooltip />
|
||||
<el-table-column label="商品分类" prop="cate_names" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="操作" width="180" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<router-link :to="{
|
||||
path: 'activity_zone_details',
|
||||
query: {
|
||||
id: row.id
|
||||
}
|
||||
}">
|
||||
商品列表
|
||||
</router-link>
|
||||
<el-button v-perms="['activity_zone/export']" type="primary" link
|
||||
@click="handleExport(row)">
|
||||
导出
|
||||
</el-button>
|
||||
<el-button v-perms="['activity_zone/delete']" type="danger" link
|
||||
@click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="activityZoneLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiActivityZoneFormLists, apiActivityZoneFormDelete, apiActivityZoneFormAdd, apiActivityZoneFormExport } from '@/api/activity_zone_form'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import productPop from './component/productPop.vue'
|
||||
import EditPopup from './edit.vue'
|
||||
|
||||
const showProduct = ref(false) // 选择商品列表是否显示
|
||||
const showRemark = ref(false)
|
||||
const showEdit = ref(false)
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
type: '',
|
||||
title: '',
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val : any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('activity_zone')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiActivityZoneFormLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
const handleEdit = async (data : any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id : number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiActivityZoneFormDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
const handleExport = (row : any) => {
|
||||
showRemark.value = false
|
||||
apiActivityZoneFormExport({
|
||||
id: row.id
|
||||
}).then((res) => {
|
||||
window.open(res.url, '_blank')
|
||||
ElMessage.success('导出成功')
|
||||
})
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
@ -1,110 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
title="详情"
|
||||
:async="true"
|
||||
width="550px"
|
||||
:cancelButtonText="false"
|
||||
:confirmButtonText="false"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px">
|
||||
<el-form-item label="模型" prop="model">
|
||||
<el-input v-model="formData.model" clearable placeholder="请输入模型" :readonly="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="关联id" prop="link_id">
|
||||
<el-input v-model="formData.link_id" clearable placeholder="请输入关联id" :readonly="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="数量" prop="nums">
|
||||
<el-input v-model="formData.nums" clearable placeholder="请输入数量" :readonly="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="类型" prop="pm">
|
||||
<el-select class="flex-1" v-model="formData.pm" clearable placeholder="请选择类型" :disabled="true">
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.business_status"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="parseInt(item.value)"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="请求" prop="url">
|
||||
<el-input v-model="formData.url" clearable placeholder="请输入请求" :readonly="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="mark">
|
||||
<el-input v-model="formData.mark" clearable placeholder="请输入备注" :readonly="true"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="changeLogDETAILS">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiChangeLogAdd, apiChangeLogEdit, apiChangeLogDetail } from '@/api/change_log'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
model: '',
|
||||
link_id: '',
|
||||
nums: '',
|
||||
pm: '',
|
||||
url: '',
|
||||
mark: '',
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiChangeLogDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,132 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="模型" prop="model">
|
||||
<el-input v-model="formData.model" clearable placeholder="请输入模型" :readonly="false"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="关联id" prop="link_id">
|
||||
<el-input v-model="formData.link_id" clearable placeholder="请输入关联id" :readonly="false"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="数量" prop="nums">
|
||||
<el-input v-model="formData.nums" clearable placeholder="请输入数量" :readonly="false"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="类型" prop="pm">
|
||||
<el-select class="flex-1" v-model="formData.pm" clearable placeholder="请选择类型" :disabled="false">
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.business_status"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="parseInt(item.value)"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="请求" prop="url">
|
||||
<el-input v-model="formData.url" clearable placeholder="请输入请求" :readonly="false"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="mark">
|
||||
<el-input v-model="formData.mark" clearable placeholder="请输入备注" :readonly="false"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="changeLogEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiChangeLogAdd, apiChangeLogEdit, apiChangeLogDetail } from '@/api/change_log'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑数据变更记录' : '新增数据变更记录'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
model: '',
|
||||
link_id: '',
|
||||
nums: '',
|
||||
pm: '',
|
||||
url: '',
|
||||
mark: '',
|
||||
})
|
||||
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiChangeLogDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiChangeLogEdit(data)
|
||||
: await apiChangeLogAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,149 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="模型" prop="model">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.model"
|
||||
clearable
|
||||
placeholder="请输入模型"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="关联id" prop="link_id">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.link_id"
|
||||
clearable
|
||||
placeholder="请输入关联id"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item class="w-[180px]" label="类型" prop="pm">
|
||||
<el-select v-model="queryParams.pm" clearable placeholder="请选择类型">
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option label="其他" value="0"></el-option>
|
||||
<el-option label="增加" value="1"></el-option>
|
||||
<el-option label="减少" value="-1"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="请求" prop="url">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.url"
|
||||
clearable
|
||||
placeholder="请输入请求"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column label="ID" prop="id" show-overflow-tooltip width="100" />
|
||||
<el-table-column
|
||||
label="人员"
|
||||
prop="admin_name"
|
||||
show-overflow-tooltip
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column label="模型" prop="model" show-overflow-tooltip width="240" />
|
||||
<el-table-column
|
||||
label="关联id"
|
||||
prop="link_id"
|
||||
show-overflow-tooltip
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column label="数量" prop="nums" show-overflow-tooltip width="80" />
|
||||
<el-table-column label="类型" prop="pm" width="80">
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.pm === 1">增加</span>
|
||||
<span v-if="row.pm === -1">减少</span>
|
||||
<span v-if="row.pm === 0">其他</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="请求" prop="url" show-overflow-tooltip width="300" />
|
||||
<el-table-column label="备注" prop="mark" show-overflow-tooltip />
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup
|
||||
v-if="showEdit"
|
||||
ref="editRef"
|
||||
:dict-data="dictData"
|
||||
@success="getLists"
|
||||
@close="showEdit = false"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="changeLogLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiChangeLogLists, apiChangeLogDelete } from '@/api/change_log'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
model: '',
|
||||
link_id: '',
|
||||
nums: '',
|
||||
pm: '',
|
||||
url: '',
|
||||
mark: ''
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('business_status')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiChangeLogLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiChangeLogDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
@ -1,103 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
title="详情"
|
||||
:async="true"
|
||||
width="550px"
|
||||
:cancelButtonText="false"
|
||||
:confirmButtonText="false"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px">
|
||||
<el-form-item label="配送员uid" prop="uid">
|
||||
<el-input v-model="formData.uid" clearable placeholder="请输入配送员uid" :readonly="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="配送员名称" prop="nickname">
|
||||
<el-input v-model="formData.nickname" clearable placeholder="请输入配送员名称" :readonly="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号码" prop="phone">
|
||||
<el-input v-model="formData.phone" clearable placeholder="请输入手机号码" :readonly="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-radio-group v-model="formData.status" placeholder="请选择状态" :disabled="true">
|
||||
<el-radio
|
||||
v-for="(item, index) in dictData.show_status"
|
||||
:key="index"
|
||||
:label="parseInt(item.value)"
|
||||
>
|
||||
{{ item.name }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="deliveryServiceDETAILS">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiDeliveryServiceAdd, apiDeliveryServiceEdit, apiDeliveryServiceDetail } from '@/api/delivery_service'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
uid: '',
|
||||
nickname: '',
|
||||
phone: '',
|
||||
status: '',
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiDeliveryServiceDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,139 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="配送员uid" prop="uid">
|
||||
<el-input v-model="formData.uid" clearable placeholder="请输入配送员uid" :readonly="false"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="配送员名称" prop="nickname">
|
||||
<el-input v-model="formData.nickname" clearable placeholder="请输入配送员名称" :readonly="false"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号码" prop="phone">
|
||||
<el-input v-model="formData.phone" clearable placeholder="请输入手机号码" :readonly="false"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-radio-group v-model="formData.status" placeholder="请选择状态" :disabled="false">
|
||||
<el-radio
|
||||
v-for="(item, index) in dictData.show_status"
|
||||
:key="index"
|
||||
:label="parseInt(item.value)"
|
||||
>
|
||||
{{ item.name }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="deliveryServiceEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiDeliveryServiceAdd, apiDeliveryServiceEdit, apiDeliveryServiceDetail } from '@/api/delivery_service'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑配送员表' : '新增配送员表'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
uid: '',
|
||||
nickname: '',
|
||||
phone: '',
|
||||
status: '',
|
||||
})
|
||||
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
uid: [{
|
||||
required: true,
|
||||
message: '请输入配送员uid',
|
||||
trigger: ['blur']
|
||||
}],
|
||||
nickname: [{
|
||||
required: true,
|
||||
message: '请输入配送员名称',
|
||||
trigger: ['blur']
|
||||
}],
|
||||
phone: [{
|
||||
required: true,
|
||||
message: '请输入手机号码',
|
||||
trigger: ['blur']
|
||||
}]
|
||||
})
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiDeliveryServiceDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiDeliveryServiceEdit(data)
|
||||
: await apiDeliveryServiceAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,154 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form
|
||||
class="mb-[-16px]"
|
||||
:model="queryParams"
|
||||
inline
|
||||
>
|
||||
<el-form-item label="配送员uid" prop="uid">
|
||||
<el-input class="w-[280px]" v-model="queryParams.uid" clearable placeholder="请输入配送员uid" />
|
||||
</el-form-item>
|
||||
<el-form-item label="配送员名称" prop="nickname">
|
||||
<el-input class="w-[280px]" v-model="queryParams.nickname" clearable placeholder="请输入配送员名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号码" prop="phone">
|
||||
<el-input class="w-[280px]" v-model="queryParams.phone" clearable placeholder="请输入手机号码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select
|
||||
v-model="queryParams.status" clearable placeholder="请选择状态">
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.show_status"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['delivery_service.delivery_service/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['delivery_service.delivery_service/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="id" prop="id" show-overflow-tooltip />
|
||||
<el-table-column label="配送员uid" prop="uid" show-overflow-tooltip />
|
||||
<el-table-column label="配送员名称" prop="nickname" show-overflow-tooltip />
|
||||
<el-table-column label="手机号码" prop="phone" show-overflow-tooltip />
|
||||
<el-table-column label="状态" prop="status">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.show_status" :value="row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['delivery_service.delivery_service/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['delivery_service.delivery_service/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="deliveryServiceLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiDeliveryServiceLists, apiDeliveryServiceDelete } from '@/api/delivery_service'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
uid: '',
|
||||
nickname: '',
|
||||
phone: '',
|
||||
status: ''
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('show_status')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiDeliveryServiceLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiDeliveryServiceDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
||||
|
@ -1,95 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" label-width="80px">
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="随便搜">
|
||||
<el-select class="flex-1" v-model="queryParams.status" clearable placeholder="请选择商品状态">
|
||||
<el-option label="销售中" :value="0" />
|
||||
<el-option label="仓库中" :value="0" />
|
||||
<el-option label="已售罄" :value="0" />
|
||||
<el-option label="库存预警" :value="0" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="随便搜" prop="nature">
|
||||
<el-input v-model="queryParams.status" clearable placeholder="请输入商品名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column label="入账门店" prop="progress" show-overflow-tooltip />
|
||||
<el-table-column label="入账时间" prop="progress" show-overflow-tooltip />
|
||||
<el-table-column label="应入帐金额" prop="progress" show-overflow-tooltip />
|
||||
<el-table-column label="已入账金额" prop="progress" show-overflow-tooltip />
|
||||
<el-table-column label="未入账金额" prop="progress" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="170" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button type="primary" link @click="handleEdit(row)">
|
||||
起码子
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<!-- <detailPopup ref="editRef" /> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="manageProjectLists">
|
||||
import { ref, reactive } from "vue"
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
// import { apiGoodsListLists, apiStatus, apiGoodsTypeLists } from '@/api/goodsList'
|
||||
// import detailPopup from './detail.vue'
|
||||
|
||||
// const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
// const showDetail = ref(false)
|
||||
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
status: ""
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
// fetchFun: apiGoodsListLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 详情
|
||||
const handleEdit = async (data: any) => {
|
||||
// editRef.value?.open()
|
||||
}
|
||||
|
||||
// getLists()
|
||||
</script>
|
@ -1,232 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="门店" prop="store_id">
|
||||
<!-- <el-input class="w-[280px]" v-model="queryParams.store_name" clearable placeholder="请输入门店id" /> -->
|
||||
<el-select
|
||||
v-model="queryParams.store_id"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="输入门店名称搜索"
|
||||
remote-show-suffix
|
||||
:remote-method="remoteMethod"
|
||||
:loading="storeloading"
|
||||
style="width: 240px"
|
||||
@change="resetPage"
|
||||
>
|
||||
<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="uid">
|
||||
<!-- <el-input class="w-[280px]" v-model="queryParams.uid" clearable placeholder="请输入用户id" /> -->
|
||||
<el-select
|
||||
v-model="queryParams.user_id"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="输入用户名称搜索"
|
||||
remote-show-suffix
|
||||
:remote-method="remoteMethodUser"
|
||||
:loading="userloading"
|
||||
style="width: 240px"
|
||||
@change="resetPage"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in userList"
|
||||
:key="item.id"
|
||||
:label="`${item.nickname} (ID:${item.id})`"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="时间" prop="create_time">
|
||||
<el-date-picker
|
||||
v-model="startEndTime"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
unlink-panels
|
||||
:shortcuts="shortcuts"
|
||||
@change="resetPage"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<!-- <el-button v-perms="['store_finance_flow.store_finance_flow/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['store_finance_flow.store_finance_flow/delete']" :disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button> -->
|
||||
<div>
|
||||
<el-table
|
||||
:data="pager.lists"
|
||||
@selection-change="handleSelectionChange"
|
||||
row-key="id"
|
||||
:tree-props="{ children: 'list' }"
|
||||
>
|
||||
<el-table-column label="ID" prop="id" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
label="交易单号"
|
||||
prop="order_sn"
|
||||
min-width="120"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="交易时间"
|
||||
prop="create_time"
|
||||
min-width="120"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="金额"
|
||||
prop="number"
|
||||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.number > 0" class="text-success">{{ row.number }}</span>
|
||||
<span v-else class="text-danger">{{ row.number }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="门店名称" prop="store_name" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
label="用户"
|
||||
prop="nickname"
|
||||
min-width="80"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="收益/扣除"
|
||||
prop="financial_type_name"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="支付方式" prop="pay_type_name" show-overflow-tooltip />
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup
|
||||
v-if="showEdit"
|
||||
ref="editRef"
|
||||
:dict-data="dictData"
|
||||
@success="getLists"
|
||||
@close="showEdit = false"
|
||||
/>
|
||||
<details-popup ref="detailsRef" :dict-data="dictData" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeFinanceFlowLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiStoreFinanceFlowLists, apiStoreFinanceFlowDelete } from '@/api/store_finance_flow'
|
||||
import { apiSystemStoreLists } from '@/api/system_store'
|
||||
import { apiUserLists } from '@/api/user'
|
||||
import shortcuts from '@/utils/shortcuts'
|
||||
import moment from 'moment'
|
||||
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
store_name: '',
|
||||
store_id: '',
|
||||
user_id: '',
|
||||
create_time: '',
|
||||
financial_type: 3,
|
||||
financial_pm: 1,
|
||||
start_time: '',
|
||||
end_time: ''
|
||||
})
|
||||
const startEndTime = ref([])
|
||||
|
||||
watch(
|
||||
() => startEndTime.value,
|
||||
(n, o) => {
|
||||
queryParams.start_time = moment(n[0]).format('YYYY-MM-DD') + ' 00:00:00'
|
||||
queryParams.end_time = moment(n[1]).format('YYYY-MM-DD') + ' 23:59:59'
|
||||
},
|
||||
{ deep: true }
|
||||
)
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiStoreFinanceFlowLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
getLists()
|
||||
|
||||
const storeloading = ref(false)
|
||||
const storeList = ref([])
|
||||
const remoteMethod = (e = '') => {
|
||||
storeloading.value = true
|
||||
apiSystemStoreLists({
|
||||
name: e,
|
||||
page_size: 50
|
||||
})
|
||||
.then((res) => {
|
||||
storeList.value = res.lists
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
.catch((err) => {
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
|
||||
const userloading = ref(false)
|
||||
const userList = ref([])
|
||||
const remoteMethodUser = (e = '') => {
|
||||
userloading.value = true
|
||||
apiUserLists({
|
||||
nickname: e,
|
||||
page_size: 50
|
||||
})
|
||||
.then((res) => {
|
||||
userList.value = res.lists
|
||||
setTimeout(() => {
|
||||
userloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
.catch((err) => {
|
||||
setTimeout(() => {
|
||||
userloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
</script>
|
@ -1,91 +0,0 @@
|
||||
<template>
|
||||
<el-drawer v-model="showDialog" title="还款明细" :size="1200">
|
||||
<el-table :data="pager.lists">
|
||||
<el-table-column label="ID" prop="id" show-overflow-tooltip />
|
||||
<el-table-column label="门店" prop="store_name" show-overflow-tooltip />
|
||||
<el-table-column label="用户昵称" prop="nickname" show-overflow-tooltip />
|
||||
<el-table-column label="应收金额" prop="total_debt" show-overflow-tooltip />
|
||||
<el-table-column label="实收金额" prop="pay_debt" show-overflow-tooltip />
|
||||
<el-table-column label="剩余欠款" prop="surplus_debt" show-overflow-tooltip />
|
||||
<el-table-column label="收款人" prop="recipient" show-overflow-tooltip />
|
||||
<el-table-column label="支付方式" prop="pay_type_name" show-overflow-tooltip />
|
||||
<el-table-column label="收款证明" prop="file" min-width="80">
|
||||
<template #default="{ row }">
|
||||
<el-image
|
||||
style="width: 50px; height: 50px"
|
||||
:src="row.file"
|
||||
:preview-teleported="true"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="mark" show-overflow-tooltip />
|
||||
<el-table-column label="还款时间" prop="create_time" show-overflow-tooltip />
|
||||
</el-table>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeOrderDETAILS">
|
||||
import { ElMessage, type FormInstance } from 'element-plus'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { apiAccountsReceivableRecord } from '@/api/accounts_receivable'
|
||||
import moment from 'moment'
|
||||
import type { PropType } from 'vue'
|
||||
import feedback from '@/utils/feedback'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const showDialog = ref(false)
|
||||
const mode = ref('add')
|
||||
|
||||
// 表单数据
|
||||
const formData = ref({
|
||||
accounts_receivable_id: ''
|
||||
})
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
formData.value = { ...data }
|
||||
queryParams.accounts_receivable_id = data.id
|
||||
getLists()
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
formData.value.accounts_receivable_id = row.order_id
|
||||
// const data = await apiStoreOrderDetail({
|
||||
// id: row.id
|
||||
// })
|
||||
// setFormData(data)
|
||||
}
|
||||
|
||||
const queryParams = reactive({
|
||||
accounts_receivable_id: ''
|
||||
})
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiAccountsReceivableRecord,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
const open = () => {
|
||||
showDialog.value = true
|
||||
}
|
||||
|
||||
const close = () => {
|
||||
showDialog.value = false
|
||||
emit('close')
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,130 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" title="账单还款" :async="true" width="650px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="用户:" prop="nickname">
|
||||
{{formData.nickname}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="门店:" prop="store_name">
|
||||
{{formData.store_name}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="应收金额:" prop="surplus_debt">
|
||||
{{formData.surplus_debt}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="收款人:" prop="recipient">
|
||||
<el-input v-model="formData.recipient" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="收款方式:" prop="pay_type">
|
||||
<el-select v-model="formData.pay_type" placeholder="请选择付款方式">
|
||||
<el-option label="现金" :value="1" />
|
||||
<el-option label="微信支付" :value="2" />
|
||||
<el-option label="支付宝支付" :value="3" />
|
||||
<el-option label="对公账号" :value="4" />
|
||||
<el-option label="其他" :value="5" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="实收金额:" prop="pay_debt">
|
||||
<el-input v-model="formData.pay_debt" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="图片凭证:" prop="file">
|
||||
<material-picker v-model="formData.file" :limit="1" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注:" prop="mark">
|
||||
<el-input v-model="formData.mark" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeFinanceFlowEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiAccountsReceivableEdit } from '@/api/accounts_receivable'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
accounts_receivable_id: 0,
|
||||
nickname: '',
|
||||
store_name: '',
|
||||
surplus_debt: '',
|
||||
pay_type: '',
|
||||
file: '',
|
||||
recipient: '',
|
||||
pay_debt: '',
|
||||
mark: '',
|
||||
})
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data : Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
formData.accounts_receivable_id = data.id
|
||||
formData.pay_debt = data.surplus_debt
|
||||
}
|
||||
}
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
await apiAccountsReceivableEdit(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData
|
||||
})
|
||||
</script>
|
@ -1,208 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card shadow="never" class="!border-none mb-4">
|
||||
<div class="mb-6 flex justify-between items-center">
|
||||
<span class="text-2xl">商品概况</span>
|
||||
</div>
|
||||
<div class="flex flex-wrap">
|
||||
<div class="w-1/5 flex mb-6" v-for="(item, index) in statisticsData.list" :key="index">
|
||||
<div>
|
||||
<div class="text-info">{{ item.store_name }}</div>
|
||||
<div class="">欠款:{{ item.surplus_debt }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-pagination background layout="prev, pager, next" :total="statisticsData.count" @change="changePage" v-if="statisticsData.count > 10"
|
||||
style="margin-right: 56px; margin-bottom: 11px; float: right" />
|
||||
</el-card>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="门店" prop="store_id">
|
||||
<!-- <el-input class="w-[280px]" v-model="queryParams.store_name" clearable placeholder="请输入门店id" /> -->
|
||||
<el-select v-model="queryParams.store_id" filterable remote reserve-keyword placeholder="输入门店名称搜索"
|
||||
remote-show-suffix :remote-method="remoteMethod" :loading="storeloading" style="width: 240px"
|
||||
@change="resetPage">
|
||||
<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="uid">
|
||||
<!-- <el-input class="w-[280px]" v-model="queryParams.uid" clearable placeholder="请输入用户id" /> -->
|
||||
<el-select v-model="queryParams.user_id" filterable remote reserve-keyword placeholder="输入用户名称搜索"
|
||||
remote-show-suffix :remote-method="remoteMethodUser" :loading="userloading" style="width: 240px"
|
||||
@change="resetPage">
|
||||
<el-option v-for="item in userList" :key="item.id" :label="`${item.nickname} (ID:${item.id})`"
|
||||
:value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="订单号" prop="order_sn">
|
||||
<el-input class="w-[280px]" v-model="queryParams.order_sn" clearable placeholder="请输入订单号" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<div>
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange" row-key="id"
|
||||
:tree-props="{ children: 'list' }">
|
||||
<el-table-column label="ID" prop="id" show-overflow-tooltip />
|
||||
<el-table-column label="门店" prop="store_name" show-overflow-tooltip />
|
||||
<el-table-column label="订单号" prop="order_sn" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column label="用户昵称" prop="nickname" show-overflow-tooltip />
|
||||
<el-table-column label="手机号" prop="phone" show-overflow-tooltip />
|
||||
<el-table-column label="账期期限" prop="deadline" show-overflow-tooltip />
|
||||
<el-table-column label="总欠款" prop="total_debt" show-overflow-tooltip />
|
||||
<el-table-column label="剩余欠款" prop="surplus_debt" show-overflow-tooltip />
|
||||
<el-table-column label="欠款天数" prop="debt_day" show-overflow-tooltip />
|
||||
<el-table-column label="操作" fixed="right" width="180">
|
||||
<template #default="{ row }">
|
||||
<el-button v-if="row.surplus_debt > 0" link type="danger" @click="handleEdit(row)">
|
||||
还款
|
||||
</el-button>
|
||||
<el-button link type="primary" @click="handleDetail(row)">
|
||||
还款记录
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
<details-popup ref="detailsRef" :dict-data="dictData" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeFinanceFlowLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiAccountsReceivableLists, apiAccountsReceivableEdit, apiAccountsReceivableDetail, apiAccountsReceivableStatistics } from '@/api/accounts_receivable'
|
||||
import { apiSystemStoreLists } from '@/api/system_store'
|
||||
import { apiUserLists } from '@/api/user'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailsPopup from './details.vue'
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
const detailsRef = shallowRef<InstanceType<typeof DetailsPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
store_name: '',
|
||||
store_id: '',
|
||||
user_id: '',
|
||||
create_time: '',
|
||||
financial_type: 1,
|
||||
financial_pm: 1,
|
||||
order_sn: ''
|
||||
})
|
||||
|
||||
const topQueryParams = reactive({
|
||||
page_no: '',
|
||||
page_size: '',
|
||||
})
|
||||
|
||||
const changePage = (e) => {
|
||||
topQueryParams.page_no = e
|
||||
getStatistics()
|
||||
}
|
||||
const statisticsData = ref({})
|
||||
const getStatistics = () => {
|
||||
apiAccountsReceivableStatistics(topQueryParams).then(res => {
|
||||
statisticsData.value = res
|
||||
})
|
||||
}
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val : any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiAccountsReceivableLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
const handleEdit = async (data : any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
const handleDetail = async (data : any) => {
|
||||
detailsRef.value?.open()
|
||||
detailsRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
const handleRepayment = async (data : any) => {
|
||||
detailsRef.value?.open()
|
||||
detailsRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
getStatistics()
|
||||
getLists()
|
||||
|
||||
const storeloading = ref(false)
|
||||
const storeList = ref([])
|
||||
const remoteMethod = (e = '') => {
|
||||
storeloading.value = true
|
||||
apiSystemStoreLists({
|
||||
name: e,
|
||||
page_size: 50
|
||||
})
|
||||
.then((res) => {
|
||||
storeList.value = res.lists
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
.catch((err) => {
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
|
||||
const userloading = ref(false)
|
||||
const userList = ref([])
|
||||
const remoteMethodUser = (e = '') => {
|
||||
userloading.value = true
|
||||
apiUserLists({
|
||||
nickname: e,
|
||||
page_size: 50
|
||||
})
|
||||
.then((res) => {
|
||||
userList.value = res.lists
|
||||
setTimeout(() => {
|
||||
userloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
.catch((err) => {
|
||||
setTimeout(() => {
|
||||
userloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
</script>
|
@ -1,95 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
title="详情"
|
||||
:async="true"
|
||||
width="550px"
|
||||
:cancelButtonText="false"
|
||||
:confirmButtonText="false"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px">
|
||||
<el-form-item label="门店" prop="store_name">
|
||||
<el-input v-model="formData.store_name" readonly />
|
||||
</el-form-item>
|
||||
<el-form-item label="应收金额" prop="receivable">
|
||||
<el-input v-model="formData.receivable" readonly />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" readonly />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-switch v-model="formData.status" active-text="已转账" inactive-text="未转账" :active-value="1" :inactive-value="0" size="large" inline-prompt></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item label="凭证" prop="file">
|
||||
<material-picker v-model="formData.file" :limit="1" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeCashFinanceFlowDETAILS">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiStoreCashFinanceFlowAdd, apiStoreCashFinanceFlowEdit, apiStoreCashFinanceFlowDetail } from '@/api/store_cash_finance_flow'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiStoreCashFinanceFlowDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,130 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="门店" prop="store_name">
|
||||
<el-input v-model="formData.store_name" readonly />
|
||||
</el-form-item>
|
||||
<el-form-item label="应收金额" prop="receivable">
|
||||
<el-input v-model="formData.receivable" readonly />
|
||||
</el-form-item>
|
||||
<el-form-item label="实收金额" prop="receipts">
|
||||
<el-input v-model="formData.receipts" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" readonly />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-switch
|
||||
v-model="formData.status"
|
||||
active-text="已转账"
|
||||
inactive-text="未转账"
|
||||
:active-value="1"
|
||||
:inactive-value="0"
|
||||
size="large"
|
||||
inline-prompt
|
||||
></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item label="凭证" prop="file">
|
||||
<material-picker v-model="formData.file" :limit="1" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeCashFinanceFlowEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import {
|
||||
apiStoreCashFinanceFlowAdd,
|
||||
apiStoreCashFinanceFlowEdit,
|
||||
apiStoreCashFinanceFlowDetail
|
||||
} from '@/api/store_cash_finance_flow'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑门店现金流水' : '新增门店现金流水'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
store_id: '',
|
||||
cash_price: '',
|
||||
receivable: '',
|
||||
receipts: '',
|
||||
admin_id: '',
|
||||
file: '',
|
||||
remark: '',
|
||||
status: '',
|
||||
store_name: ''
|
||||
})
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({})
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiStoreCashFinanceFlowDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData }
|
||||
mode.value == 'edit'
|
||||
? await apiStoreCashFinanceFlowEdit(data)
|
||||
: await apiStoreCashFinanceFlowAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,253 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="门店" prop="store_id">
|
||||
<!-- <el-input class="w-[280px]" v-model="queryParams.store_name" clearable placeholder="请输入门店id" /> -->
|
||||
<el-select
|
||||
v-model="queryParams.store_id"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="输入门店名称搜索"
|
||||
remote-show-suffix
|
||||
:remote-method="remoteMethod"
|
||||
:loading="storeloading"
|
||||
style="width: 240px"
|
||||
@change="resetPage"
|
||||
>
|
||||
<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="cash_price">
|
||||
<el-input v-model="queryParams.cash_price" />
|
||||
</el-form-item>
|
||||
<el-form-item label="时间范围" prop="create_time">
|
||||
<el-date-picker
|
||||
v-model="startEndTime"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
unlink-panels
|
||||
:shortcuts="shortcuts"
|
||||
@change="changeStartEndTime"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select
|
||||
v-model="queryParams.status"
|
||||
placeholder="请选择状态"
|
||||
size="large"
|
||||
style="width: 240px"
|
||||
>
|
||||
<el-option label="待处理" value="0" />
|
||||
<el-option label="已完成" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
<export-data
|
||||
class="ml-2.5"
|
||||
:fetch-fun="apiStoreCashFinanceFlowLists"
|
||||
:params="queryParams"
|
||||
:page-size="pager.size"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<div>
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column label="ID" prop="id" show-overflow-tooltip />
|
||||
<el-table-column label="门店" prop="store_name" show-overflow-tooltip />
|
||||
<el-table-column label="时间" prop="create_time" show-overflow-tooltip />
|
||||
<el-table-column label="交易金额" prop="cash_price" show-overflow-tooltip />
|
||||
<el-table-column label="应收金额" prop="receivable" show-overflow-tooltip />
|
||||
<el-table-column label="实收金额" prop="receipts" show-overflow-tooltip />
|
||||
<el-table-column label="操作人员" prop="admin_id" show-overflow-tooltip />
|
||||
<el-table-column label="图片" prop="file">
|
||||
<template #default="{ row }">
|
||||
<el-image
|
||||
v-if="row.file && row.file != 0"
|
||||
style="width: 50px; height: 50px"
|
||||
:src="row.file"
|
||||
:preview-teleported="true"
|
||||
/>
|
||||
<span v-else>待上传</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="remark" />
|
||||
<el-table-column label="状态" prop="status">
|
||||
<template #default="{ row }">
|
||||
<el-tag v-if="row.status == 0" type="danger">待处理</el-tag>
|
||||
<el-tag v-else type="success">已确认</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['store_cash_finance_flow.store_cash_finance_flow/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
v-if="row.status == 0"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup
|
||||
v-if="showEdit"
|
||||
ref="editRef"
|
||||
:dict-data="dictData"
|
||||
@success="getLists"
|
||||
@close="showEdit = false"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeCashFinanceFlowLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import {
|
||||
apiStoreCashFinanceFlowLists,
|
||||
apiStoreCashFinanceFlowDelete
|
||||
} from '@/api/store_cash_finance_flow'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import { apiSystemStoreLists } from '@/api/system_store'
|
||||
import moment from 'moment'
|
||||
|
||||
const shortcuts = [
|
||||
{
|
||||
text: '近一周',
|
||||
value: () => {
|
||||
const end = new Date()
|
||||
const start = new Date()
|
||||
start.setDate(start.getDate() - 7)
|
||||
return [start, end]
|
||||
}
|
||||
},
|
||||
{
|
||||
text: '近一月',
|
||||
value: () => {
|
||||
const end = new Date()
|
||||
const start = new Date()
|
||||
start.setMonth(start.getMonth() - 1)
|
||||
return [start, end]
|
||||
}
|
||||
},
|
||||
{
|
||||
text: '近三月',
|
||||
value: () => {
|
||||
const end = new Date()
|
||||
const start = new Date()
|
||||
start.setMonth(start.getMonth() - 3)
|
||||
return [start, end]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
|
||||
const startEndTime = ref([new Date(), new Date()])
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
store_id: '',
|
||||
status: '',
|
||||
cash_price: '',
|
||||
start_time: moment(startEndTime.value[0]).format('YYYY-MM-DD') + ' 00:00:00',
|
||||
end_time: moment(startEndTime.value[1]).format('YYYY-MM-DD') + ' 23:59:59'
|
||||
})
|
||||
|
||||
const changeStartEndTime = () => {
|
||||
if (startEndTime.value == null || startEndTime.value == '') {
|
||||
queryParams.start_time = ''
|
||||
queryParams.end_time = ''
|
||||
} else {
|
||||
queryParams.start_time = moment(startEndTime.value[0]).format('YYYY-MM-DD') + ' 00:00:00'
|
||||
queryParams.end_time = moment(startEndTime.value[1]).format('YYYY-MM-DD') + ' 23:59:59'
|
||||
}
|
||||
getLists()
|
||||
}
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiStoreCashFinanceFlowLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiStoreCashFinanceFlowDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
onMounted(() => {
|
||||
getLists()
|
||||
})
|
||||
|
||||
const storeloading = ref(false)
|
||||
const storeList = ref([])
|
||||
const remoteMethod = (e = '') => {
|
||||
storeloading.value = true
|
||||
apiSystemStoreLists({
|
||||
name: e,
|
||||
page_size: 50
|
||||
})
|
||||
.then((res) => {
|
||||
storeList.value = res.lists
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
.catch((err) => {
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
</script>
|
@ -1,81 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
title="详情"
|
||||
:async="true"
|
||||
width="550px"
|
||||
:cancelButtonText="false"
|
||||
:confirmButtonText="false"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px">
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeExtractDETAILS">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiStoreExtractAdd, apiStoreExtractEdit, apiStoreExtractDetail } from '@/api/store_extract'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiStoreExtractDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,103 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeExtractEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiStoreExtractAdd, apiStoreExtractEdit, apiStoreExtractDetail } from '@/api/store_extract'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑门店提现表' : '新增门店提现表'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiStoreExtractDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiStoreExtractEdit(data)
|
||||
: await apiStoreExtractAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,171 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="门店" prop="store_id">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.store_id"
|
||||
clearable
|
||||
placeholder="请输入门店"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="收款方式" prop="extract_type">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.extract_type"
|
||||
clearable
|
||||
placeholder="请输入收款方式"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="审核状态" prop="status">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.status"
|
||||
clearable
|
||||
placeholder="请输入审核状态"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="转账状态" prop="pay_status">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.pay_status"
|
||||
clearable
|
||||
placeholder="请输入转账状态"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="创建时间" prop="create_time">
|
||||
<el-input class="w-[280px]" v-model="queryParams.create_time" clearable placeholder="请输入创建时间" />
|
||||
</el-form-item> -->
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
<export-data
|
||||
class="ml-2.5"
|
||||
:fetch-fun="apiStoreExtractLists"
|
||||
:params="queryParams"
|
||||
:page-size="pager.size"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="id" prop="id" show-overflow-tooltip />
|
||||
<el-table-column label="名称" prop="nickname" show-overflow-tooltip />
|
||||
<!-- <el-table-column label="收款方式" prop="extract_type" show-overflow-tooltip /> -->
|
||||
<el-table-column label="提现金额" prop="extract_price" show-overflow-tooltip />
|
||||
<el-table-column label="openid" prop="openid" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="mark" show-overflow-tooltip />
|
||||
<el-table-column label="审核状态" prop="status_name" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
label="转账状态"
|
||||
prop="pay_status_name"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="管理员" prop="admin_id" show-overflow-tooltip />
|
||||
<el-table-column label="创建时间" prop="create_time" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-if="row.pay_status == 0"
|
||||
v-perms="['store_extract.store_extract/enter']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEnter(row.id)"
|
||||
>
|
||||
确认
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup
|
||||
v-if="showEdit"
|
||||
ref="editRef"
|
||||
:dict-data="dictData"
|
||||
@success="getLists"
|
||||
@close="showEdit = false"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeExtractLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import {
|
||||
apiStoreExtractLists,
|
||||
apiStoreExtractDelete,
|
||||
apiStoreExtractEnter
|
||||
} from '@/api/store_extract'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
store_id: '',
|
||||
extract_type: '',
|
||||
status: '',
|
||||
pay_status: '',
|
||||
create_time: ''
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiStoreExtractLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
// 确认
|
||||
const handleEnter = (id: any) => {
|
||||
apiStoreExtractEnter({ id: id }).then(() => {
|
||||
getLists()
|
||||
})
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiStoreExtractDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
onMounted(() => {
|
||||
getLists()
|
||||
})
|
||||
</script>
|
@ -1,146 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<div>
|
||||
<el-table :data="pager.lists" v-loading="pager.loading">
|
||||
<el-table-column label="标题" prop="name" show-overflow-tooltip />
|
||||
<el-table-column label="日期" prop="date" show-overflow-tooltip />
|
||||
<el-table-column label="收入金额" prop="income" show-overflow-tooltip />
|
||||
<el-table-column label="支出金额" prop="expenditure" show-overflow-tooltip />
|
||||
<el-table-column label="门店应入账金额" prop="enter" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['store_cash_finance_flow.store_cash_finance_flow/edit']" type="primary"
|
||||
link @click="openDetail(row)">
|
||||
详情
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
<el-dialog v-model="showDetail" title="订单详情" width="70%">
|
||||
<runWaterPop ref="runRef"></runWaterPop>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="billTable">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { apiDayBillLists, apiWeekBillLists, apiMonthBillLists } from '@/api/store_finance_bill'
|
||||
import moment from 'moment';
|
||||
|
||||
let apiFun = apiDayBillLists;
|
||||
|
||||
const props = defineProps({
|
||||
queryParams: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
default: 'day'
|
||||
}
|
||||
})
|
||||
|
||||
if (props.type == 'day') apiFun = apiDayBillLists;
|
||||
if (props.type == 'week') apiFun = apiWeekBillLists;
|
||||
if (props.type == 'month') apiFun = apiMonthBillLists;
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiFun,
|
||||
params: props.queryParams
|
||||
})
|
||||
|
||||
defineExpose({
|
||||
getLists
|
||||
})
|
||||
|
||||
const extractWeekNumber = (str:any)=> {
|
||||
// 使用正则表达式匹配"第xxxx-xx周"中的xx,即周数
|
||||
const weekRegex = /第\d{4}-([0-9]{1,2})周/;
|
||||
const match = str.match(weekRegex);
|
||||
|
||||
if (match) {
|
||||
// 返回匹配到的周数
|
||||
return parseInt(match[1], 10);
|
||||
} else {
|
||||
// 如果没有匹配到,返回null或其他默认值
|
||||
return null;
|
||||
}
|
||||
}
|
||||
const extractYear = (str: any) => {
|
||||
// 使用正则表达式匹配"第xxxx-xx周"中的xxxx,即年份
|
||||
const yearRegex = /第(\d{4})-\d{1,2}周/;
|
||||
const match = str.match(yearRegex);
|
||||
|
||||
if (match) {
|
||||
// 返回匹配到的年份
|
||||
return parseInt(match[1], 10);
|
||||
} else {
|
||||
// 如果没有匹配到,返回null或其他默认值
|
||||
return moment(new Date()).format('YYYY');
|
||||
}
|
||||
}
|
||||
const convertToYYYYMMDD = (dateString:any) => {
|
||||
// 分割输入字符串获取年和月
|
||||
const year = dateString.split('年')[0];
|
||||
const month = dateString.split('年')[1].split('月')[0];
|
||||
|
||||
// 创建Date对象,注意JavaScript的月份是从0开始的,所以需要减1
|
||||
const date = new Date(year, month - 1, 1);
|
||||
|
||||
// 格式化日期为yyyy-mm-dd
|
||||
const formattedDate = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;
|
||||
|
||||
return formattedDate;
|
||||
}
|
||||
|
||||
|
||||
const runRef = ref(null);
|
||||
const showDetail = ref(null);
|
||||
const openDetail = async (row: any) => {
|
||||
showDetail.value = true;
|
||||
await nextTick();
|
||||
if(props.type == 'day'){
|
||||
runRef.value?.init({
|
||||
start_time: moment(row.date).format('YYYY-MM-DD') + ' 00:00:00',
|
||||
end_time: moment(row.date).format('YYYY-MM-DD') + ' 23:59:59',
|
||||
});
|
||||
}else if(props.type == 'week'){
|
||||
let t = extractWeekNumber(row.date);
|
||||
if(t){
|
||||
let year:any = extractYear(row.date);
|
||||
// 初始化日期为该年第1周的星期一(这里假设1月1日是星期四,因为2024年1月1日是星期二,但我们需要调整到最近的星期一)
|
||||
let now = new Date(year, 0, 1 - (new Date(year, 0, 1).getDay() || 7) + 1); // 这里确保了得到的是当周的星期一
|
||||
now.setDate(now.getDate() + (t - 1) * 7); // 从第1周的周一到第23周的周一需要增加(23-1)*7天
|
||||
let end = new Date(now);
|
||||
end.setDate(end.getDate() + 6)
|
||||
runRef.value?.init({
|
||||
start_time: moment(now).format('YYYY-MM-DD') + ' 00:00:00',
|
||||
end_time: moment(end).format('YYYY-MM-DD') + ' 23:59:59',
|
||||
});
|
||||
}else runRef.value?.init({});
|
||||
} else {
|
||||
let sdate = convertToYYYYMMDD(row.date); //获取当前月
|
||||
let edate = new Date(sdate);
|
||||
edate.setMonth(edate.getMonth()+1); //当前月份+1
|
||||
edate.setDate(edate.getDate()-1); //当前日期-1即可获得上月最后一天
|
||||
runRef.value?.init({
|
||||
start_time: moment(sdate).format('YYYY-MM-DD') + ' 00:00:00',
|
||||
end_time: moment(edate).format('YYYY-MM-DD') + ' 23:59:59',
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getLists()
|
||||
})
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
|
@ -1,81 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
title="详情"
|
||||
:async="true"
|
||||
width="550px"
|
||||
:cancelButtonText="false"
|
||||
:confirmButtonText="false"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px">
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeCashFinanceFlowDETAILS">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiStoreCashFinanceFlowAdd, apiStoreCashFinanceFlowEdit, apiStoreCashFinanceFlowDetail } from '@/api/store_cash_finance_flow'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiStoreCashFinanceFlowDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,103 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeCashFinanceFlowEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiStoreCashFinanceFlowAdd, apiStoreCashFinanceFlowEdit, apiStoreCashFinanceFlowDetail } from '@/api/store_cash_finance_flow'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑门店现金流水' : '新增门店现金流水'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiStoreCashFinanceFlowDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiStoreCashFinanceFlowEdit(data)
|
||||
: await apiStoreCashFinanceFlowAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,112 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="门店" prop="store_id">
|
||||
<!-- <el-input class="w-[280px]" v-model="queryParams.store_name" clearable placeholder="请输入门店id" /> -->
|
||||
<el-select v-model="queryParams.store_id" filterable remote reserve-keyword placeholder="输入门店名称搜索"
|
||||
remote-show-suffix :remote-method="remoteMethod" :loading="storeloading" style="width: 240px" @change="handleClick({ paneName: activeName })">
|
||||
<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="create_time">
|
||||
<el-date-picker v-model="startEndTime" type="daterange" range-separator="至" start-placeholder="开始日期"
|
||||
end-placeholder="结束日期" unlink-panels :shortcuts="shortcuts" @change="handleClick({ paneName: activeName })" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleClick({ paneName: activeName })">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" shadow="never">
|
||||
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
|
||||
<el-tab-pane label="日订单" name="first">
|
||||
<billTable ref="billTableRef1" :queryParams="queryParams" type="day"></billTable>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="周订单" name="second">
|
||||
<billTable ref="billTableRef2" :queryParams="queryParams" type="week"></billTable>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="月订单" name="three">
|
||||
<billTable ref="billTableRef3" :queryParams="queryParams" type="month"></billTable>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeCashFinanceFlowLists">
|
||||
import { watch } from 'vue';
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import { apiSystemStoreLists } from '@/api/system_store'
|
||||
import billTable from "./components/billTable.vue";
|
||||
import shortcuts from "@/utils/shortcuts";
|
||||
import moment from 'moment';
|
||||
|
||||
const startEndTime = ref([]);
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
store_id: '',
|
||||
start_time: '',
|
||||
end_time: ''
|
||||
})
|
||||
|
||||
watch(() => startEndTime.value, (n, o) => {
|
||||
queryParams.start_time = moment(n[0]).format('YYYY-MM-DD') + ' 00:00:00';
|
||||
queryParams.end_time = moment(n[1]).format('YYYY-MM-DD') + ' 23:59:59';
|
||||
}, { deep: true })
|
||||
|
||||
const storeloading = ref(false);
|
||||
const storeList = ref([]);
|
||||
const remoteMethod = (e: string = '') => {
|
||||
storeloading.value = true;
|
||||
apiSystemStoreLists({
|
||||
name: e,
|
||||
page_size: 50
|
||||
}).then(res => {
|
||||
storeList.value = res.lists;
|
||||
setTimeout(() => {
|
||||
storeloading.value = false;
|
||||
}, 300)
|
||||
}).catch(err => {
|
||||
setTimeout(() => {
|
||||
storeloading.value = false;
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
|
||||
const billTableRef1 = ref(null);
|
||||
const billTableRef2 = ref(null);
|
||||
const billTableRef3 = ref(null);
|
||||
|
||||
const activeName = ref('first');
|
||||
const handleClick = (tab: any) => {
|
||||
if (tab.paneName == "first") {
|
||||
billTableRef1.value.getLists();
|
||||
} else if (tab.paneName == "second") {
|
||||
billTableRef2.value.getLists();
|
||||
} else if (tab.paneName == "three") {
|
||||
billTableRef3.value.getLists();
|
||||
}
|
||||
};
|
||||
|
||||
const resetParams = () => {
|
||||
queryParams.store_id = '';
|
||||
queryParams.create_time = '';
|
||||
handleClick({
|
||||
paneName: activeName.value
|
||||
})
|
||||
}
|
||||
|
||||
nextTick(() => {
|
||||
handleClick({
|
||||
paneName: activeName.value
|
||||
})
|
||||
})
|
||||
|
||||
</script>
|
@ -1,88 +0,0 @@
|
||||
<template>
|
||||
<el-drawer v-model="showDialog" title="资金走向" :size="1000">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange" >
|
||||
<el-table-column label="ID" prop="id" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column label="交易单号" prop="order_sn" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column label="交易时间" prop="create_time" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column label="金额" prop="number" min-width="100" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.number > 0" class="text-success">{{ row.number }}</span>
|
||||
<span v-else class="text-danger">{{ row.number }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="门店名称" prop="store_name" show-overflow-tooltip /> -->
|
||||
<!-- <el-table-column label="用户" prop="nickname" min-width="80" show-overflow-tooltip /> -->
|
||||
<el-table-column label="收益/扣除" prop="financial_type_name" show-overflow-tooltip />
|
||||
<!-- <el-table-column label="支付方式" prop="pay_type_name" show-overflow-tooltip /> -->
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
|
||||
</el-table>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeOrderDETAILS">
|
||||
import { ElMessage, type FormInstance } from 'element-plus'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { apiStoreFinanceFlowLists } from '@/api/store_finance_flow'
|
||||
import moment from 'moment'
|
||||
import type { PropType } from 'vue'
|
||||
import feedback from '@/utils/feedback'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const showDialog = ref(false)
|
||||
const mode = ref('add')
|
||||
|
||||
// 表单数据
|
||||
const formData = ref({
|
||||
order_id: ''
|
||||
})
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
formData.value = { ...data };
|
||||
queryParams.order_id = data.order_id;
|
||||
getLists();
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
formData.value.order_id = row.order_id;
|
||||
// const data = await apiStoreOrderDetail({
|
||||
// id: row.id
|
||||
// })
|
||||
// setFormData(data)
|
||||
}
|
||||
|
||||
const queryParams = reactive({
|
||||
order_id: ''
|
||||
})
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiStoreFinanceFlowLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
const open = ()=>{
|
||||
showDialog.value = true
|
||||
}
|
||||
|
||||
const close = () => {
|
||||
showDialog.value = false
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,103 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeFinanceFlowEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiStoreFinanceFlowAdd, apiStoreFinanceFlowEdit, apiStoreFinanceFlowDetail } from '@/api/store_finance_flow'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑门店资金流水表' : '新增门店资金流水表'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiStoreFinanceFlowDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiStoreFinanceFlowEdit(data)
|
||||
: await apiStoreFinanceFlowAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,246 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="门店" prop="store_id">
|
||||
<!-- <el-input class="w-[280px]" v-model="queryParams.store_name" clearable placeholder="请输入门店id" /> -->
|
||||
<el-select v-model="queryParams.store_id" filterable remote reserve-keyword placeholder="输入门店名称搜索"
|
||||
remote-show-suffix :remote-method="remoteMethod" :loading="storeloading" style="width: 240px"
|
||||
@change="resetPage">
|
||||
<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="uid">
|
||||
<!-- <el-input class="w-[280px]" v-model="queryParams.uid" clearable placeholder="请输入用户id" /> -->
|
||||
<el-select v-model="queryParams.user_id" filterable remote reserve-keyword placeholder="输入用户名称搜索"
|
||||
remote-show-suffix :remote-method="remoteMethodUser" :loading="userloading" style="width: 240px"
|
||||
@change="resetPage">
|
||||
<el-option v-for="item in userList" :key="item.id" :label="`${item.nickname} (ID:${item.id})`"
|
||||
:value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="订单号" prop="order_sn">
|
||||
<el-input class="w-[280px]" v-model="queryParams.order_sn" clearable placeholder="请输入订单号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="日期" prop="timeScope">
|
||||
<el-date-picker v-model="queryParams.timeScope" type="daterange" range-separator="至"
|
||||
start-placeholder="开始日期" end-placeholder="结束日期" unlink-panels :shortcuts="shortcuts"
|
||||
@change="changeStartEndTime" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="xlsx(3)">导出手续费</el-button>
|
||||
<el-button @click="xlsx(11)">导出其他收益</el-button>
|
||||
<el-button @click="xlsx(16)">导出损耗</el-button>
|
||||
<el-button @click="xlsx(12)">导出佣金</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<div>
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange" row-key="id"
|
||||
:tree-props="{ children: 'list' }">
|
||||
<el-table-column label="ID" prop="id" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column label="交易单号" prop="order_sn" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column label="交易时间" prop="create_time" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column label="金额" prop="number" min-width="100" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.number > 0" class="text-success">{{ row.number }}</span>
|
||||
<span v-else class="text-danger">{{ row.number }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="门店名称" prop="store_name" show-overflow-tooltip />
|
||||
<el-table-column label="用户" prop="nickname" min-width="80" show-overflow-tooltip />
|
||||
<el-table-column label="收益/扣除" prop="financial_type_name" show-overflow-tooltip />
|
||||
<el-table-column label="支付方式" prop="pay_type_name" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
<el-table-column label="操作" fixed="right" width="100">
|
||||
<template #default="{ row }">
|
||||
<el-button link type="primary" @click="handleDetail(row)">
|
||||
资金走向
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
<details-popup ref="detailsRef" :dict-data="dictData" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeFinanceFlowLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiStoreFinanceFlowLists, apiStoreFinanceFlowDelete, apiStoreFinanceFlowExport } from '@/api/store_finance_flow'
|
||||
import { apiSystemStoreLists } from '@/api/system_store'
|
||||
import { apiUserLists } from '@/api/user'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailsPopup from './details.vue'
|
||||
import moment from 'moment'
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
const detailsRef = shallowRef<InstanceType<typeof DetailsPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
store_name: '',
|
||||
store_id: '',
|
||||
user_id: '',
|
||||
create_time: '',
|
||||
financial_type: 1,
|
||||
financial_pm: 1,
|
||||
order_sn: '',
|
||||
timeScope: [],
|
||||
start_time: '',
|
||||
end_time: '',
|
||||
})
|
||||
const shortcuts = [
|
||||
{
|
||||
text: '近一周',
|
||||
value: () => {
|
||||
const end = new Date()
|
||||
const start = new Date()
|
||||
start.setDate(start.getDate() - 7)
|
||||
return [start, end]
|
||||
}
|
||||
},
|
||||
{
|
||||
text: '近一月',
|
||||
value: () => {
|
||||
const end = new Date()
|
||||
const start = new Date()
|
||||
start.setMonth(start.getMonth() - 1)
|
||||
return [start, end]
|
||||
}
|
||||
},
|
||||
{
|
||||
text: '近三月',
|
||||
value: () => {
|
||||
const end = new Date()
|
||||
const start = new Date()
|
||||
start.setMonth(start.getMonth() - 3)
|
||||
return [start, end]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val : any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiStoreFinanceFlowLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data : any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
const handleDetail = async (data : any) => {
|
||||
detailsRef.value?.open()
|
||||
detailsRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id : number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiStoreFinanceFlowDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
const changeStartEndTime = () => {
|
||||
if (queryParams.timeScope[0] && queryParams.timeScope[1]) {
|
||||
queryParams.start_time = moment(queryParams.timeScope[0]).format('YYYY-MM-DD') + ' 00:00:00'
|
||||
queryParams.end_time = moment(queryParams.timeScope[1]).format('YYYY-MM-DD') + ' 23:59:59'
|
||||
} else {
|
||||
queryParams.start_time = ''
|
||||
queryParams.end_time = ''
|
||||
}
|
||||
getLists()
|
||||
}
|
||||
|
||||
const xlsx = (type) => {
|
||||
apiStoreFinanceFlowExport({
|
||||
type: type,
|
||||
...queryParams
|
||||
}).then((res) => {
|
||||
window.open(res.url, '_blank')
|
||||
ElMessage.success('导出成功')
|
||||
})
|
||||
}
|
||||
|
||||
getLists()
|
||||
|
||||
const storeloading = ref(false)
|
||||
const storeList = ref([])
|
||||
const remoteMethod = (e = '') => {
|
||||
storeloading.value = true
|
||||
apiSystemStoreLists({
|
||||
name: e,
|
||||
page_size: 50
|
||||
})
|
||||
.then((res) => {
|
||||
storeList.value = res.lists
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
.catch((err) => {
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
|
||||
const userloading = ref(false)
|
||||
const userList = ref([])
|
||||
const remoteMethodUser = (e = '') => {
|
||||
userloading.value = true
|
||||
apiUserLists({
|
||||
nickname: e,
|
||||
page_size: 50
|
||||
})
|
||||
.then((res) => {
|
||||
userList.value = res.lists
|
||||
setTimeout(() => {
|
||||
userloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
.catch((err) => {
|
||||
setTimeout(() => {
|
||||
userloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
</script>
|
@ -1,81 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
title="详情"
|
||||
:async="true"
|
||||
width="550px"
|
||||
:cancelButtonText="false"
|
||||
:confirmButtonText="false"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px">
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="userBillDETAILS">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiUserBillAdd, apiUserBillEdit, apiUserBillDetail } from '@/api/user_bill'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiUserBillDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,103 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="userBillEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiUserBillAdd, apiUserBillEdit, apiUserBillDetail } from '@/api/user_bill'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑用户账单表' : '新增用户账单表'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiUserBillDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiUserBillEdit(data)
|
||||
: await apiUserBillAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,136 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form
|
||||
class="mb-[-16px]"
|
||||
:model="queryParams"
|
||||
inline
|
||||
>
|
||||
<el-form-item label="用户uid" prop="uid">
|
||||
<el-input class="w-[280px]" v-model="queryParams.uid" clearable placeholder="请输入用户uid" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="明细类型" prop="type">
|
||||
<el-input class="w-[280px]" v-model="queryParams.type" clearable placeholder="请输入明细类型" />
|
||||
</el-form-item> -->
|
||||
<!-- <el-form-item label="创建时间" prop="create_time">
|
||||
<el-input class="w-[280px]" v-model="queryParams.create_time" clearable placeholder="请输入创建时间" />
|
||||
</el-form-item> -->
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<!-- <el-button v-perms="['user_bill.user_bill/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['user_bill.user_bill/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
删除
|
||||
</el-button> -->
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="明细类型" prop="type" show-overflow-tooltip />
|
||||
<el-table-column label="明细数字" prop="number" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="mark" show-overflow-tooltip />
|
||||
<el-table-column label="创建时间" prop="create_time" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['user_bill.user_bill/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['user_bill.user_bill/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="userBillLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiUserBillLists, apiUserBillDelete } from '@/api/user_bill'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
uid: '',
|
||||
type: '',
|
||||
create_time: ''
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiUserBillLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiUserBillDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
||||
|
@ -1,81 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
title="详情"
|
||||
:async="true"
|
||||
width="550px"
|
||||
:cancelButtonText="false"
|
||||
:confirmButtonText="false"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px">
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="userRechargeDETAILS">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiUserRechargeAdd, apiUserRechargeEdit, apiUserRechargeDetail } from '@/api/user_recharge'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiUserRechargeDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,103 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="userRechargeEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiUserRechargeAdd, apiUserRechargeEdit, apiUserRechargeDetail } from '@/api/user_recharge'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑用户充值表' : '新增用户充值表'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiUserRechargeDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiUserRechargeEdit(data)
|
||||
: await apiUserRechargeAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,187 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="是否支付" prop="paid">
|
||||
<!-- <el-input class="w-[280px]" v-model="queryParams.paid" clearable placeholder="请输入是否充值" /> -->
|
||||
<el-select
|
||||
v-model="queryParams.paid"
|
||||
class="w-[280px]"
|
||||
clearable
|
||||
placeholder="请选择是否支付"
|
||||
@change="resetPage"
|
||||
>
|
||||
<el-option label="已支付" value="1"></el-option>
|
||||
<el-option label="未支付" value="0"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="create_time">
|
||||
<el-date-picker
|
||||
v-model="startEndTime"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
unlink-panels
|
||||
@change="changeStartEndTime"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
<export-data
|
||||
class="ml-2.5"
|
||||
:fetch-fun="apiUserRechargeLists"
|
||||
:params="queryParams"
|
||||
:page-size="pager.size"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<div>
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column label="ID" prop="id" show-overflow-tooltip />
|
||||
<el-table-column label="用户昵称" prop="nickname" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
label="订单号"
|
||||
prop="order_id"
|
||||
min-width="200"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="消费金额" prop="price" show-overflow-tooltip />
|
||||
<el-table-column label="消费类型" prop="recharge_type" show-overflow-tooltip />
|
||||
<el-table-column label="是否支付" prop="paid" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<el-tag type="info" v-if="row.status == -1">{{ row.paid_name }}</el-tag>
|
||||
<el-tag :type="row.paid ? 'success' : 'danger'" v-else>
|
||||
{{ row.paid_name }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="支付时间"
|
||||
prop="pay_time"
|
||||
min-width="180"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="操作" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
type="warning"
|
||||
link
|
||||
@click="refund(row)"
|
||||
v-if="row.paid == 1 && row.status != -1"
|
||||
v-perms="['user_recharge.user_recharge/refund']"
|
||||
>退款</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup
|
||||
v-if="showEdit"
|
||||
ref="editRef"
|
||||
:dict-data="dictData"
|
||||
@success="getLists"
|
||||
@close="showEdit = false"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="userRechargeLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import {
|
||||
apiUserRechargeLists,
|
||||
apiUserRechargeDelete,
|
||||
apiUserRechargeRefund
|
||||
} from '@/api/user_recharge'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import moment from 'moment'
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
const startEndTime = ref([new Date(), new Date()])
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
paid: '',
|
||||
pay_time: '',
|
||||
start_time: '',
|
||||
end_time: ''
|
||||
})
|
||||
|
||||
const changeStartEndTime = () => {
|
||||
if (startEndTime.value[0] && startEndTime.value[1]) {
|
||||
queryParams.start_time = moment(startEndTime.value[0]).format('YYYY-MM-DD')
|
||||
queryParams.end_time = moment(startEndTime.value[1]).format('YYYY-MM-DD')
|
||||
} else {
|
||||
queryParams.start_time = ''
|
||||
queryParams.end_time = ''
|
||||
}
|
||||
getLists()
|
||||
}
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiUserRechargeLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiUserRechargeDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
const refund = async (row: any) => {
|
||||
await feedback.confirm('确定要退款吗?')
|
||||
apiUserRechargeRefund({
|
||||
id: row.id
|
||||
})
|
||||
.then((res) => {
|
||||
ElMessage.success('操作成功,退款有一定延迟,请稍后查看')
|
||||
getLists()
|
||||
})
|
||||
.catch((err) => {
|
||||
ElMessage.error('退款失败')
|
||||
getLists()
|
||||
})
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
@ -1,164 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- <el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="金额" prop="money">
|
||||
<el-input class="w-[280px]" v-model="queryParams.money" clearable placeholder="请输入金额" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card> -->
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<div>
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange" :row-class-name="tableRowClassName">
|
||||
<el-table-column label="ID" prop="id" min-width="55"/>
|
||||
<el-table-column label="店铺ID" prop="store_id" show-overflow-tooltip />
|
||||
<el-table-column label="时间" prop="create_time" show-overflow-tooltip />
|
||||
<el-table-column label="收款方" prop="store_name" show-overflow-tooltip />
|
||||
<el-table-column label="结算金额" prop="money" show-overflow-tooltip />
|
||||
<el-table-column label="结算方式" prop="extract_type" show-overflow-tooltip />
|
||||
<el-table-column label="确认时间" prop="initiation_time" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
{{ timeFormat(row.initiation_time, 'yyyy-mm-dd') }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<div class="flex" v-if="row.receivable">
|
||||
<el-button link type="primary" @click="handleDelete(row.id)" v-if="row.status == 0">
|
||||
发送
|
||||
</el-button>
|
||||
<el-button link type="primary" @click="handleClick(row)" v-if="row.status == 2">
|
||||
确认
|
||||
</el-button>
|
||||
</div>
|
||||
<div v-else></div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<el-dialog v-model="showDialog" title="确认结算" width="680px">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="姓名"> {{ rowDate.store_realName }} </el-descriptions-item>
|
||||
<el-descriptions-item label="银行卡号"> {{ rowDate.store_bank_code }} </el-descriptions-item>
|
||||
<el-descriptions-item label="银行名称"> {{ rowDate.store_bank }} </el-descriptions-item>
|
||||
<el-descriptions-item label="开户地址"> {{ rowDate.store_bank_address }} </el-descriptions-item>
|
||||
<el-descriptions-item label="操作">
|
||||
<el-radio-group v-model="form.status">
|
||||
<el-radio label="1">通过</el-radio>
|
||||
<el-radio label="0">不通过</el-radio>
|
||||
</el-radio-group>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="附件">
|
||||
<material-picker v-model="form.transfer_picture" />
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="备注">
|
||||
<el-input class="w-[280px]" v-model="form.fail_msg" clearable placeholder="请输入备注" type="textarea" />
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-form class="mt-4">
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleConfirm">确定</el-button>
|
||||
<el-button @click="showDialog = false">取消</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="financialTransfersLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiFinancialTransfersLists, apiFinancialTransfersSend, apiFinancialTransfersConfirm } from '@/api/financial_transfers'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
store_id: '',
|
||||
admin_id: '',
|
||||
uid: '',
|
||||
status: '',
|
||||
initiation_time: '',
|
||||
confirmation_time: '',
|
||||
mark: '',
|
||||
money: '',
|
||||
remark_time: ''
|
||||
})
|
||||
|
||||
const tableRowClassName = ({
|
||||
row,
|
||||
rowIndex,
|
||||
}) => {
|
||||
console.log(row.receivable);
|
||||
|
||||
if (!row.receivable) {
|
||||
return 'warning-row'
|
||||
}
|
||||
return ''
|
||||
}
|
||||
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiFinancialTransfersLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要发送吗?')
|
||||
await apiFinancialTransfersSend({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
const showDialog = ref(false)
|
||||
const rowDate = ref('')
|
||||
|
||||
const handleClick = (row: any) => {
|
||||
rowDate.value = row
|
||||
showDialog.value = true
|
||||
}
|
||||
|
||||
const form = reactive({
|
||||
id: "",
|
||||
transfer_picture: "",
|
||||
status: "",
|
||||
fail_msg: ""
|
||||
})
|
||||
|
||||
// 删除
|
||||
const handleConfirm = async (id: number | any[]) => {
|
||||
form.id = rowDate.value.id
|
||||
await apiFinancialTransfersConfirm({ ...form })
|
||||
getLists()
|
||||
showDialog.value = false
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.el-table .warning-row {
|
||||
--el-table-tr-bg-color: var(--el-color-danger-light-9);
|
||||
}
|
||||
</style>
|
@ -1,81 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
title="详情"
|
||||
:async="true"
|
||||
width="550px"
|
||||
:cancelButtonText="false"
|
||||
:confirmButtonText="false"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px">
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="inventoryStoreDETAILS">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiInventoryStoreAdd, apiInventoryStoreEdit, apiInventoryStoreDetail } from '@/api/inventory_store'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiInventoryStoreDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,141 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="数量" prop="nums" v-if="mode == 'edit'">
|
||||
<el-input v-model="formData.nums" clearable placeholder="请输入实际数量" />
|
||||
</el-form-item>
|
||||
<el-form-item label="门店名称" prop="store_id" v-else>
|
||||
<div class="flex items-center mr-4">
|
||||
<el-select
|
||||
v-model="formData.store_id"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="输入门店名称搜索"
|
||||
remote-show-suffix
|
||||
:remote-method="remoteMethod"
|
||||
:loading="storeloading"
|
||||
style="width: 240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in storeList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="inventoryStoreEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import {
|
||||
apiInventoryStoreAdd,
|
||||
apiInventoryStoreEdit,
|
||||
apiInventoryStoreDetail
|
||||
} from '@/api/inventory_store'
|
||||
import { apiSystemStoreLists } from '@/api/system_store'
|
||||
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑门店盘存' : '新增门店盘存'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
store_id: '',
|
||||
nums: 0
|
||||
})
|
||||
const storeloading = ref(false)
|
||||
const storeList = ref([])
|
||||
const remoteMethod = (e = '') => {
|
||||
storeloading.value = true
|
||||
apiSystemStoreLists({
|
||||
name: e,
|
||||
page_size: 50
|
||||
})
|
||||
.then((res) => {
|
||||
storeList.value = res.lists
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
.catch((err) => {
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({})
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiInventoryStoreDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData }
|
||||
mode.value == 'edit' ? await apiInventoryStoreEdit(data) : await apiInventoryStoreAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,271 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="门店名称" prop="store_id">
|
||||
<div class="flex items-center mr-4">
|
||||
<el-select
|
||||
v-model="queryParams.store_id"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="输入门店名称搜索"
|
||||
remote-show-suffix
|
||||
:remote-method="remoteMethod"
|
||||
:loading="storeloading"
|
||||
style="width: 240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in storeList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.status"
|
||||
clearable
|
||||
placeholder="请输入状态"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button
|
||||
v-perms="['inventory_store.inventory_store/add']"
|
||||
type="primary"
|
||||
@click="handleAdd"
|
||||
>
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
生成今日盘库
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['inventory_store.inventory_store/enter']"
|
||||
type="primary"
|
||||
@click="inventoryShow = true"
|
||||
>
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
库存核准
|
||||
</el-button>
|
||||
<!-- <el-button
|
||||
v-perms="['inventory_store.inventory_store/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
删除
|
||||
</el-button> -->
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="商品" prop="product_id" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
{{ row.product_name }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="后台人员" prop="admin_id" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
{{ row.admin_name }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="门店人员" prop="staff_id" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
{{ row.staff_name }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="门店" prop="store_id" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
{{ row.store_name }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="盘库数量" prop="nums" show-overflow-tooltip />
|
||||
<el-table-column label="确认数量" prop="enter_nums" show-overflow-tooltip />
|
||||
<el-table-column label="时间" prop="create_time" show-overflow-tooltip />
|
||||
<el-table-column label="状态" prop="status" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
{{ row.status_name }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['inventory_store.inventory_store/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<!-- <el-button
|
||||
v-perms="['inventory_store.inventory_store/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
删除
|
||||
</el-button> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup
|
||||
v-if="showEdit"
|
||||
ref="editRef"
|
||||
:dict-data="dictData"
|
||||
@success="getLists"
|
||||
@close="showEdit = false"
|
||||
/>
|
||||
<el-dialog v-model="inventoryShow" title="盘库核准" width="600">
|
||||
<el-form :model="EnterNumsForm" label-width="90px">
|
||||
<el-form-item label="门店名称" prop="store_id">
|
||||
<div class="flex items-center mr-4">
|
||||
<el-select
|
||||
v-model="EnterNumsForm.store_id"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="输入门店名称搜索"
|
||||
remote-show-suffix
|
||||
:remote-method="remoteMethod"
|
||||
:loading="storeloading"
|
||||
style="width: 240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in storeList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="日期" prop="create_time">
|
||||
<el-date-picker
|
||||
v-model="EnterNumsForm.create_time"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="inventoryShow = false">取消</el-button>
|
||||
<el-button type="primary" @click="handleEnterNums"> 确认 </el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="inventoryStoreLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import {
|
||||
apiInventoryStoreLists,
|
||||
apiInventoryStoreDelete,
|
||||
apiInventoryStoreEnterNums
|
||||
} from '@/api/inventory_store'
|
||||
import { apiSystemStoreLists } from '@/api/system_store'
|
||||
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import moment from 'moment'
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
const inventoryShow = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
store_id: '',
|
||||
nums: '',
|
||||
enter_nums: '',
|
||||
status: ''
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiInventoryStoreLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
const EnterNumsForm = reactive({
|
||||
store_id: '',
|
||||
create_time: ''
|
||||
})
|
||||
const handleEnterNums = () => {
|
||||
EnterNumsForm.create_time = moment(EnterNumsForm.create_time).format('YYYY-MM-DD')
|
||||
apiInventoryStoreEnterNums({ ...EnterNumsForm }).then(() => {
|
||||
getLists()
|
||||
})
|
||||
}
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
const storeloading = ref(false)
|
||||
const storeList = ref([])
|
||||
const remoteMethod = (e = '') => {
|
||||
storeloading.value = true
|
||||
apiSystemStoreLists({
|
||||
name: e,
|
||||
page_size: 50
|
||||
})
|
||||
.then((res) => {
|
||||
storeList.value = res.lists
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
.catch((err) => {
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiInventoryStoreDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
@ -1,107 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
title="详情"
|
||||
:async="true"
|
||||
width="550px"
|
||||
:cancelButtonText="false"
|
||||
:confirmButtonText="false"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px">
|
||||
<el-form-item label="商品" prop="product_id">
|
||||
<el-input v-model="formData.product_id" clearable placeholder="请输入商品" :readonly="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="数量" prop="nums">
|
||||
<el-input v-model="formData.nums" clearable placeholder="请输入数量" :readonly="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="更新前" prop="before_nums">
|
||||
<el-input v-model="formData.before_nums" clearable placeholder="请输入更新前" :readonly="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="更新后" prop="after_nums">
|
||||
<el-input v-model="formData.after_nums" clearable placeholder="请输入更新后" :readonly="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="1商户2仓库" prop="type">
|
||||
<el-input v-model="formData.type" clearable placeholder="请输入1商户2仓库" :readonly="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="转出id" prop="one_id">
|
||||
<el-input v-model="formData.one_id" clearable placeholder="请输入转出id" :readonly="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="转入id" prop="two_id">
|
||||
<el-input v-model="formData.two_id" clearable placeholder="请输入转入id" :readonly="true"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="inventoryTransferDETAILS">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiInventoryTransferAdd, apiInventoryTransferEdit, apiInventoryTransferDetail } from '@/api/inventory_transfer'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
product_id: '',
|
||||
nums: '',
|
||||
before_nums: '',
|
||||
after_nums: '',
|
||||
type: '',
|
||||
one_id: '',
|
||||
two_id: '',
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiInventoryTransferDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,277 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="转出类型">
|
||||
<el-radio-group v-model="formData.one_type">
|
||||
<el-radio label="1">门店</el-radio>
|
||||
<el-radio label="2">仓库</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="转出门店" prop="one_id" v-if="formData.one_type == 1">
|
||||
<el-input
|
||||
v-model="formData.one_name"
|
||||
clearable
|
||||
placeholder="请选择转出方"
|
||||
:readonly="false"
|
||||
@click="showStore = true"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="转出仓库" prop="one_id" v-if="formData.one_type == 2">
|
||||
<el-input
|
||||
v-model="formData.one_name"
|
||||
clearable
|
||||
placeholder="请选择转出方"
|
||||
:readonly="false"
|
||||
@click="showWarehouse = true"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="转入类型">
|
||||
<el-radio-group v-model="formData.two_type">
|
||||
<el-radio label="1">门店</el-radio>
|
||||
<el-radio label="2">仓库</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="转入门店" prop="two_id" v-if="formData.two_type == 1">
|
||||
<el-input
|
||||
v-model="formData.two_name"
|
||||
clearable
|
||||
placeholder="请选择转入方"
|
||||
:readonly="false"
|
||||
@click="showStoreTwo = true"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="转入仓库" prop="two_id" v-if="formData.two_type == 2">
|
||||
<el-input
|
||||
v-model="formData.two_name"
|
||||
clearable
|
||||
placeholder="请选择转入方"
|
||||
:readonly="false"
|
||||
@click="showWarehouseTwo = true"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="商品" prop="product_id" v-if="formData.one_id">
|
||||
<el-input
|
||||
v-model="formData.product_name"
|
||||
clearable
|
||||
placeholder="请选择商品"
|
||||
:readonly="false"
|
||||
@click="showProduct = true"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="数量" prop="nums" v-if="formData.one_id">
|
||||
<el-input
|
||||
v-model="formData.nums"
|
||||
clearable
|
||||
placeholder="请输入数量"
|
||||
:readonly="false"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
<el-dialog v-model="showStore" title="选择门店" width="70%">
|
||||
<store-pop @onBindStore="onBindStore"></store-pop>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="showStoreTwo" title="选择门店" width="70%">
|
||||
<store-pop @onBindStore="onBindStoreTwo"></store-pop>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="showProduct" title="选择商品" width="70%">
|
||||
<product-pop
|
||||
@onBindStore="onBindProduct"
|
||||
:is_branch="1"
|
||||
:store_id="store_id"
|
||||
:warehouse_id="warehouse_id"
|
||||
:is_warehouse="is_warehouse"
|
||||
></product-pop>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="showWarehouse" title="选择仓库1" width="70%">
|
||||
<warehouse-pop @onBindWarehouse="onBindWarehouse"></warehouse-pop>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="showWarehouseTwo" title="选择仓库2" width="70%">
|
||||
<warehouse-pop @onBindWarehouse="onBindWarehouseTwo"></warehouse-pop>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="inventoryTransferEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import {
|
||||
apiInventoryTransferAdd,
|
||||
apiInventoryTransferEdit,
|
||||
apiInventoryTransferDetail
|
||||
} from '@/api/inventory_transfer'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const showProduct = ref(false) // 选择商品列表是否显示
|
||||
const showStore = ref(false) // 选择门店列表是否显示
|
||||
const showStoreTwo = ref(false) // 选择门店列表是否显示
|
||||
const showWarehouse = ref(false) // 选择仓库列表是否显示
|
||||
const showWarehouseTwo = ref(false) // 选择仓库列表是否显示
|
||||
const store_id = ref(0) // 门店id
|
||||
const warehouse_id = ref(0) //仓库id
|
||||
const is_warehouse = ref(0) //是否仓库
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑商品调拨' : '新增商品调拨'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
product_id: '',
|
||||
product_name: '',
|
||||
nums: '',
|
||||
before_nums: '',
|
||||
after_nums: '',
|
||||
one_type: '1',
|
||||
two_type: '1',
|
||||
one_id: '',
|
||||
one_name: '',
|
||||
two_id: '',
|
||||
two_name: '',
|
||||
warehouse_name: '',
|
||||
warehouse_name_two: ''
|
||||
})
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
product_id: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入商品',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
nums: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入数量',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
type: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入1商户2仓库',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
one_id: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入转出id',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
two_id: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入转入id',
|
||||
trigger: ['blur']
|
||||
}
|
||||
]
|
||||
})
|
||||
const onBindProduct = (e: any[]) => {
|
||||
formData.product_name = e[0].store_name
|
||||
formData.product_id = e[0].product_id
|
||||
showProduct.value = false
|
||||
}
|
||||
|
||||
// 选择门店
|
||||
const onBindStore = (e: any[]) => {
|
||||
formData.one_id = e[0].id
|
||||
formData.one_name = e[0].name
|
||||
showStore.value = false
|
||||
store_id.value = e[0].id
|
||||
}
|
||||
const onBindStoreTwo = (e: any[]) => {
|
||||
formData.two_id = e[0].id
|
||||
formData.two_name = e[0].name
|
||||
showStoreTwo.value = false
|
||||
}
|
||||
//选择仓库
|
||||
const onBindWarehouse = (e: any[]) => {
|
||||
formData.one_name = e.name
|
||||
formData.one_id = e.id
|
||||
warehouse_id.value = e.id
|
||||
is_warehouse.value = 1
|
||||
showWarehouse.value = false
|
||||
}
|
||||
//选择仓库
|
||||
const onBindWarehouseTwo = (e: any[]) => {
|
||||
formData.two_name = e.name
|
||||
formData.two_id = e.id
|
||||
showWarehouseTwo.value = false
|
||||
}
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
const handleType = (e) => {
|
||||
formData.one_id = 0
|
||||
formData.two_id = 0
|
||||
formData.one_name = ''
|
||||
formData.two_name = ''
|
||||
store_id.value = 0
|
||||
is_warehouse.value = 0
|
||||
warehouse_id.value = 0
|
||||
}
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiInventoryTransferDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData }
|
||||
mode.value == 'edit'
|
||||
? await apiInventoryTransferEdit(data)
|
||||
: await apiInventoryTransferAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,129 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="商品" prop="store_name">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.store_name"
|
||||
clearable
|
||||
placeholder="请输入商品"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['inventory_transfer/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column label="id" prop="id" show-overflow-tooltip />
|
||||
<el-table-column label="商品" prop="store_name" show-overflow-tooltip />
|
||||
<el-table-column label="数量" prop="nums" show-overflow-tooltip />
|
||||
<el-table-column label="转出方" prop="one_name" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
label="转出前数量"
|
||||
prop="one_before_nums"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="转出后数量"
|
||||
prop="one_after_nums"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="转入方" prop="two_name" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
label="转入前数量"
|
||||
prop="two_before_nums"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="转入后数量"
|
||||
prop="two_after_nums"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="类型" prop="type_name" show-overflow-tooltip />
|
||||
<el-table-column label="创建时间" prop="create_time" show-overflow-tooltip />
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup
|
||||
v-if="showEdit"
|
||||
ref="editRef"
|
||||
:dict-data="dictData"
|
||||
@success="getLists"
|
||||
@close="showEdit = false"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="inventoryTransferLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiInventoryTransferLists, apiInventoryTransferDelete } from '@/api/inventory_transfer'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
// import EditPopup from './edit.vue'
|
||||
import EditPopup from './warehousing.vue'
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
store_name: ''
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiInventoryTransferLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiInventoryTransferDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
@ -1,245 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="900px" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<div>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px">
|
||||
<el-form-item label="转出类型">
|
||||
<el-radio-group v-model="formData.one_type">
|
||||
<el-radio label="1">门店</el-radio>
|
||||
<el-radio label="2">仓库</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="转出门店" prop="one_id" v-if="formData.one_type == 1">
|
||||
<el-select v-model="formData.one_id" filterable remote reserve-keyword placeholder="请选择转出方"
|
||||
remote-show-suffix :remote-method="remoteMethodStore" :loading="storeloading"
|
||||
@change="changeStore" style="width: 300px">
|
||||
<el-option v-for="item in storeList" :key="item.id"
|
||||
:label="`${item.name}|${item.phone} (ID:${item.id})`" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="转出仓库" prop="one_id" v-if="formData.one_type == 2">
|
||||
<el-select v-model="formData.one_id" filterable remote reserve-keyword placeholder="请选择转出方"
|
||||
remote-show-suffix :remote-method="remoteMethodWarehouse" :loading="warehouseloading"
|
||||
@change="changeWarehouse" style="width: 300px">
|
||||
<el-option v-for="item in warehouseList" :key="item.id" :label="item.name"
|
||||
:value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="转入类型">
|
||||
<el-radio-group v-model="formData.two_type">
|
||||
<el-radio label="1">门店</el-radio>
|
||||
<el-radio label="2">仓库</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="转入门店" prop="two_id" v-if="formData.two_type == 1">
|
||||
<el-select v-model="formData.two_id" filterable remote reserve-keyword placeholder="请选择转入方"
|
||||
remote-show-suffix :remote-method="remoteMethodStore" :loading="storeloading"
|
||||
style="width: 300px">
|
||||
<el-option v-for="item in storeList" :key="item.id"
|
||||
:label="`${item.name}|${item.phone} (ID:${item.id})`" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="转入仓库" prop="two_id" v-if="formData.two_type == 2">
|
||||
<el-select v-model="formData.two_id" filterable remote reserve-keyword placeholder="请选择转出方"
|
||||
remote-show-suffix :remote-method="remoteMethodWarehouse" :loading="warehouseloading"
|
||||
style="width: 300px">
|
||||
<el-option v-for="item in warehouseList" :key="item.id" :label="item.name"
|
||||
:value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="商品" prop="store_id">
|
||||
<div class="flex-1 w-full">
|
||||
<div class="mb-2">
|
||||
<el-button type="primary" @click="showProduct = true">添加商品</el-button>
|
||||
</div>
|
||||
<el-table :data="productList">
|
||||
<el-table-column label="商品ID" prop="id" show-overflow-tooltip />
|
||||
<el-table-column label="商品图片" prop="image" min-width="80">
|
||||
<template #default="{ row }">
|
||||
<el-image style="width: 50px; height: 50px" :src="row.image"
|
||||
:preview-teleported="true" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品名称" prop="store_name" min-width="200" show-overflow-tooltip />
|
||||
<el-table-column label="单位" prop="unit_name" min-width="80" show-overflow-tooltip />
|
||||
<el-table-column label="数量" min-width="150">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.nums" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button type="danger" link @click="handleDeleteProdut(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<el-dialog v-model="showProduct" title="选择商品" width="70%">
|
||||
<product-pop @onBindStore="onBindProduct" :is_branch="1" :store_id="store_id"
|
||||
:warehouse_id="warehouse_id" :is_warehouse="is_warehouse" :key="productModalKey"></product-pop>
|
||||
</el-dialog>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeProductEdit">
|
||||
import { ElMessage, type FormInstance } from 'element-plus'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
import { onMounted } from 'vue'
|
||||
import { apiWarehouseLists } from '@/api/warehouse'
|
||||
import {
|
||||
apiInventoryTransferAdd,
|
||||
apiInventoryTransferEdit,
|
||||
apiInventoryTransferDetail
|
||||
} from '@/api/inventory_transfer'
|
||||
import { apiSystemStoreLists } from '@/api/system_store'
|
||||
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const store_id = ref(0) // 门店id
|
||||
const warehouse_id = ref(0) //仓库id
|
||||
const is_warehouse = ref(0) //是否仓库
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
product_id: '',
|
||||
product_name: '',
|
||||
nums: '',
|
||||
before_nums: '',
|
||||
after_nums: '',
|
||||
one_type: '1',
|
||||
two_type: '1',
|
||||
one_id: '',
|
||||
one_name: '',
|
||||
two_id: '',
|
||||
two_name: '',
|
||||
warehouse_name: '',
|
||||
warehouse_name_two: ''
|
||||
})
|
||||
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑商品调拨' : '新增商品调拨'
|
||||
})
|
||||
|
||||
const showProduct = ref(false) // 选择商品列表是否显示
|
||||
// 商品列表
|
||||
const productList = ref([])
|
||||
// 删除已有商品
|
||||
const handleDeleteProdut = (id : number) => {
|
||||
productList.value = productList.value.filter((item : any) => item.id !== id)
|
||||
}
|
||||
// 选择商品
|
||||
const onBindProduct = (e : any[]) => {
|
||||
console.log(e);
|
||||
e.forEach((item : any) => {
|
||||
if (!productList.value.find((t : any) => t.id == item.id)) {
|
||||
productList.value.push(item)
|
||||
}
|
||||
})
|
||||
showProduct.value = false
|
||||
}
|
||||
|
||||
const changeStore = (e : any) => {
|
||||
store_id.value = e
|
||||
resetUserId()
|
||||
}
|
||||
|
||||
const changeWarehouse = (e : any) => {
|
||||
warehouse_id.value = e
|
||||
is_warehouse.value = 1
|
||||
resetUserId()
|
||||
}
|
||||
|
||||
const storeloading = ref(false)
|
||||
const storeList = ref([])
|
||||
const remoteMethodStore = (e = '') => {
|
||||
storeloading.value = true
|
||||
apiSystemStoreLists({ name: e }).then((res) => {
|
||||
storeList.value = res.lists
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
|
||||
const warehouseloading = ref(false)
|
||||
const warehouseList = ref([])
|
||||
const remoteMethodWarehouse = (e = '') => {
|
||||
warehouseloading.value = true
|
||||
apiWarehouseLists({ name: e }).then((res) => {
|
||||
warehouseList.value = res.lists
|
||||
setTimeout(() => {
|
||||
warehouseloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
const product_arr = productList.value.map((item : any) => {
|
||||
return {
|
||||
product_id: item.product_id,
|
||||
nums: item.nums,
|
||||
purchase: item.purchases || 0,
|
||||
total_price: item.total_price || 0,
|
||||
manufacture: item.manufacture,
|
||||
expiration_date: item.expiration_date
|
||||
}
|
||||
})
|
||||
const data = { product_arr, ...formData }
|
||||
await formRef.value?.validate()
|
||||
mode.value == 'edit'
|
||||
? await apiInventoryTransferEdit(data)
|
||||
: await apiInventoryTransferAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data : Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const getDetail = async (row : Record<string, any>) => {
|
||||
const data = await apiInventoryTransferDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
const productModalKey = ref(0)
|
||||
const resetUserId = () => {
|
||||
productModalKey.value++
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,59 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<div>
|
||||
<el-table :data="pager.lists" v-loading="pager.loading">
|
||||
<el-table-column
|
||||
label="商品信息"
|
||||
prop="store_name"
|
||||
show-overflow-tooltip
|
||||
width="400"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<div class="flex items-center">
|
||||
<el-image
|
||||
:src="row.image"
|
||||
class="w-16 h-16 mr-2"
|
||||
:preview-teleported="true"
|
||||
></el-image>
|
||||
<div>{{ row.store_name }}</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="sku_name" show-overflow-tooltip />
|
||||
<el-table-column label="数量" prop="cart_num" show-overflow-tooltip />
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end" v-if="pager.lists.length < pager.count">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="orderInfo">
|
||||
import type { PropType } from 'vue'
|
||||
import { apiInventoryTransferOrderLists } from '@/api/inventory_transfer_order'
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
|
||||
const queryParams = reactive({
|
||||
oid: ''
|
||||
})
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiInventoryTransferOrderLists,
|
||||
params: queryParams
|
||||
})
|
||||
const getList = (e: any) => {
|
||||
queryParams.oid = e.oid
|
||||
getLists()
|
||||
}
|
||||
defineExpose({
|
||||
getList,
|
||||
getLists
|
||||
})
|
||||
const route = useRoute()
|
||||
onMounted(() => {
|
||||
queryParams.oid = route.query.id
|
||||
getLists()
|
||||
})
|
||||
</script>
|
@ -1,67 +0,0 @@
|
||||
<template>
|
||||
<el-drawer v-model="showDialog" title="订单详情" :size="1000">
|
||||
<div class="flex items-center justify-between">
|
||||
<div>订单编号:{{ formData.order_id }}</div>
|
||||
<div>创建时间</div>
|
||||
<div>{{ formData.create_time }}</div>
|
||||
</div>
|
||||
<div class="flex items-center justify-between">
|
||||
<div>转出方:{{ formData.one_name }}</div>
|
||||
<div>方式:{{ formData.type_name }}</div>
|
||||
<div>转入方:{{ formData.two_name }}</div>
|
||||
</div>
|
||||
|
||||
<!-- <el-tabs v-model="activeName" class="demo-tabs" type="border-card" @tab-click="handleClick">
|
||||
<el-tab-pane label="订单信息" name="first">
|
||||
<orderInfo :datas="formData" ref="productRef"></orderInfo>
|
||||
</el-tab-pane>
|
||||
</el-tabs> -->
|
||||
<el-table :data="formData.product_list">
|
||||
<el-table-column label="商品" prop="store_name" show-overflow-tooltip />
|
||||
<el-table-column label="数量" prop="nums" show-overflow-tooltip />
|
||||
</el-table>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeOrderDETAILS">
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiInventoryTransferOrderDetail } from '@/api/inventory_transfer_order'
|
||||
import type { PropType } from 'vue'
|
||||
import orderInfo from './components/orderInfo.vue'
|
||||
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const showDialog = ref(false)
|
||||
const productRef = ref(false)
|
||||
const activeName = ref('first')
|
||||
|
||||
// 表单数据
|
||||
const formData = ref({
|
||||
id: ''
|
||||
})
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
formData.value = { ...data }
|
||||
}
|
||||
const handleClick = (tab: any) => {
|
||||
productRef.value?.getList({ oid: formData.value.id })
|
||||
}
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
formData.value.id = row.id
|
||||
const data = await apiInventoryTransferOrderDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
showDialog.value = true
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,335 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="900px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<div>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px">
|
||||
<el-form-item label="转出类型">
|
||||
<el-radio-group v-model="formData.one_type">
|
||||
<el-radio label="1">门店</el-radio>
|
||||
<el-radio label="2">仓库</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="转出门店" prop="one_id" v-if="formData.one_type == 1">
|
||||
<el-select
|
||||
v-model="formData.one_id"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请选择转出方"
|
||||
remote-show-suffix
|
||||
:remote-method="remoteMethodStore"
|
||||
:loading="storeloading"
|
||||
@change="changeStore"
|
||||
style="width: 300px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in storeList"
|
||||
:key="item.id"
|
||||
:label="`${item.name}|${item.phone} (ID:${item.id})`"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="转出仓库" prop="one_id" v-if="formData.one_type == 2">
|
||||
<el-select
|
||||
v-model="formData.one_id"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请选择转出方"
|
||||
remote-show-suffix
|
||||
:remote-method="remoteMethodWarehouse"
|
||||
:loading="warehouseloading"
|
||||
@change="changeWarehouse"
|
||||
style="width: 300px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in warehouseList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="转入类型">
|
||||
<el-radio-group v-model="formData.two_type">
|
||||
<el-radio label="1">门店</el-radio>
|
||||
<el-radio label="2">仓库</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="转入门店" prop="two_id" v-if="formData.two_type == 1">
|
||||
<el-select
|
||||
v-model="formData.two_id"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请选择转入方"
|
||||
remote-show-suffix
|
||||
:remote-method="remoteMethodStore"
|
||||
:loading="storeloading"
|
||||
style="width: 300px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in storeList"
|
||||
:key="item.id"
|
||||
:label="`${item.name}|${item.phone} (ID:${item.id})`"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="转入仓库" prop="two_id" v-if="formData.two_type == 2">
|
||||
<el-select
|
||||
v-model="formData.two_id"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请选择转出方"
|
||||
remote-show-suffix
|
||||
:remote-method="remoteMethodWarehouse"
|
||||
:loading="warehouseloading"
|
||||
style="width: 300px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in warehouseList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="mark">
|
||||
<el-input v-model="formData.mark" type="input" style="width: 480px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="转入类型">
|
||||
<el-radio-group v-model="formData.types">
|
||||
<el-radio label="0">减库存</el-radio>
|
||||
<el-radio label="1">不减库存</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="商品" prop="store_id">
|
||||
<div class="flex-1 w-full">
|
||||
<div class="mb-2">
|
||||
<el-button type="primary" @click="showProduct = true"
|
||||
>添加商品</el-button
|
||||
>
|
||||
</div>
|
||||
<el-table :data="productList">
|
||||
<el-table-column label="商品ID" prop="id" show-overflow-tooltip />
|
||||
<el-table-column label="商品图片" prop="image" min-width="80">
|
||||
<template #default="{ row }">
|
||||
<el-image
|
||||
style="width: 50px; height: 50px"
|
||||
:src="row.image"
|
||||
:preview-teleported="true"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="商品名称"
|
||||
prop="store_name"
|
||||
min-width="200"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="单位"
|
||||
prop="unit_name"
|
||||
min-width="80"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="数量" min-width="150">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.nums" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDeleteProdut(row.id)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<el-dialog v-model="showProduct" title="选择商品" width="70%">
|
||||
<product-pop
|
||||
@onBindStore="onBindProduct"
|
||||
:is_branch="1"
|
||||
:store_id="store_id"
|
||||
:warehouse_id="warehouse_id"
|
||||
:is_warehouse="is_warehouse"
|
||||
:key="productModalKey"
|
||||
></product-pop>
|
||||
</el-dialog>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeProductEdit">
|
||||
import { ElMessage, type FormInstance } from 'element-plus'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
import { onMounted } from 'vue'
|
||||
import { apiWarehouseLists } from '@/api/warehouse'
|
||||
import {
|
||||
apiInventoryTransferOrderAdd,
|
||||
apiInventoryTransferOrderEdit,
|
||||
apiInventoryTransferOrderDetail
|
||||
} from '@/api/inventory_transfer_order'
|
||||
import { apiSystemStoreLists } from '@/api/system_store'
|
||||
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const store_id = ref(0) // 门店id
|
||||
const warehouse_id = ref(0) //仓库id
|
||||
const is_warehouse = ref(0) //是否仓库
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
product_id: '',
|
||||
product_name: '',
|
||||
nums: '',
|
||||
before_nums: '',
|
||||
after_nums: '',
|
||||
one_type: '1',
|
||||
two_type: '1',
|
||||
types: '0',
|
||||
one_id: '',
|
||||
one_name: '',
|
||||
two_id: '',
|
||||
two_name: '',
|
||||
warehouse_name: '',
|
||||
warehouse_name_two: '',
|
||||
mark: ''
|
||||
})
|
||||
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑商品调拨' : '新增商品调拨'
|
||||
})
|
||||
|
||||
const showProduct = ref(false) // 选择商品列表是否显示
|
||||
// 商品列表
|
||||
const productList = ref([])
|
||||
// 删除已有商品
|
||||
const handleDeleteProdut = (id: number) => {
|
||||
productList.value = productList.value.filter((item: any) => item.id !== id)
|
||||
}
|
||||
// 选择商品
|
||||
const onBindProduct = (e: any[]) => {
|
||||
console.log(e)
|
||||
e.forEach((item: any) => {
|
||||
if (!productList.value.find((t: any) => t.id == item.id)) {
|
||||
productList.value.push(item)
|
||||
}
|
||||
})
|
||||
showProduct.value = false
|
||||
}
|
||||
|
||||
const changeStore = (e: any) => {
|
||||
store_id.value = e
|
||||
resetUserId()
|
||||
}
|
||||
|
||||
const changeWarehouse = (e: any) => {
|
||||
warehouse_id.value = e
|
||||
is_warehouse.value = 1
|
||||
resetUserId()
|
||||
}
|
||||
|
||||
const storeloading = ref(false)
|
||||
const storeList = ref([])
|
||||
const remoteMethodStore = (e = '') => {
|
||||
storeloading.value = true
|
||||
apiSystemStoreLists({ name: e }).then((res) => {
|
||||
storeList.value = res.lists
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
|
||||
const warehouseloading = ref(false)
|
||||
const warehouseList = ref([])
|
||||
const remoteMethodWarehouse = (e = '') => {
|
||||
warehouseloading.value = true
|
||||
apiWarehouseLists({ name: e }).then((res) => {
|
||||
warehouseList.value = res.lists
|
||||
setTimeout(() => {
|
||||
warehouseloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
const product_arr = productList.value.map((item: any) => {
|
||||
return {
|
||||
product_id: item.product_id,
|
||||
nums: item.nums,
|
||||
purchase: item.purchases || 0,
|
||||
total_price: item.total_price || 0,
|
||||
manufacture: item.manufacture,
|
||||
expiration_date: item.expiration_date
|
||||
}
|
||||
})
|
||||
const data = { product_arr, ...formData }
|
||||
await formRef.value?.validate()
|
||||
await apiInventoryTransferOrderAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiInventoryTransferOrderDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
const productModalKey = ref(0)
|
||||
const resetUserId = () => {
|
||||
productModalKey.value++
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,147 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="订单" prop="order_id">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.order_id"
|
||||
clearable
|
||||
placeholder="请输入订单"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button
|
||||
v-perms="['inventory_transfer_order.inventory_transfer_order/add']"
|
||||
type="primary"
|
||||
@click="handleAdd"
|
||||
>
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="订单" prop="order_id" show-overflow-tooltip />
|
||||
<el-table-column label="转出方" prop="one_name" show-overflow-tooltip />
|
||||
<el-table-column label="方式" prop="type_name" show-overflow-tooltip />
|
||||
<el-table-column label="转入方" prop="two_name" show-overflow-tooltip />
|
||||
<el-table-column label="是否减库" prop="types_name" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="mark" show-overflow-tooltip />
|
||||
<!-- <el-table-column label="总数量" prop="total_nums" show-overflow-tooltip />
|
||||
<el-table-column label="总金额" prop="total_price" show-overflow-tooltip /> -->
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link @click="handleDetai(row)"
|
||||
>详情</el-button
|
||||
>
|
||||
|
||||
<el-button
|
||||
v-perms="[
|
||||
'inventory_transfer_order.inventory_transfer_order/delete'
|
||||
]"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup
|
||||
v-if="showEdit"
|
||||
ref="editRef"
|
||||
:dict-data="dictData"
|
||||
@success="getLists"
|
||||
@close="showEdit = false"
|
||||
/>
|
||||
<details-popup
|
||||
v-if="showDetails"
|
||||
ref="detailsRef"
|
||||
@success="getLists"
|
||||
@close="showDetails = false"
|
||||
:dictData="dictData"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="inventoryTransferOrderLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import {
|
||||
apiInventoryTransferOrderLists,
|
||||
apiInventoryTransferOrderDelete
|
||||
} from '@/api/inventory_transfer_order'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailsPopup from './details.vue'
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
const detailsRef = shallowRef<InstanceType<typeof DetailsPopup>>()
|
||||
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
const showDetails = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
order_id: '',
|
||||
one_type: '',
|
||||
two_type: '',
|
||||
types: ''
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiInventoryTransferOrderLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
// 详情
|
||||
const handleDetai = async (data: any) => {
|
||||
showDetails.value = true
|
||||
await nextTick()
|
||||
detailsRef.value?.open()
|
||||
detailsRef.value?.getDetail(data)
|
||||
}
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiInventoryTransferOrderDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
@ -1,81 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
title="详情"
|
||||
:async="true"
|
||||
width="550px"
|
||||
:cancelButtonText="false"
|
||||
:confirmButtonText="false"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px">
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="inventoryWarehouseDETAILS">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiInventoryWarehouseAdd, apiInventoryWarehouseEdit, apiInventoryWarehouseDetail } from '@/api/inventory_warehouse'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiInventoryWarehouseDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,99 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="数量" prop="nums" v-if="mode == 'edit'">
|
||||
<el-input v-model="formData.nums" clearable placeholder="请输入实际数量" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="inventoryWarehouseEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import {
|
||||
apiInventoryWarehouseAdd,
|
||||
apiInventoryWarehouseEdit,
|
||||
apiInventoryWarehouseDetail
|
||||
} from '@/api/inventory_warehouse'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
console.log(mode.value)
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑仓库盘存' : '新增仓库盘存'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
nums: ''
|
||||
})
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({})
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiInventoryWarehouseDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData }
|
||||
mode.value == 'edit'
|
||||
? await apiInventoryWarehouseEdit(data)
|
||||
: await apiInventoryWarehouseAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,178 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="仓库名称" prop="warehouse_id">
|
||||
<div class="flex items-center mr-4">
|
||||
<el-select v-model="queryParams.warehouse_id" filterable remote reserve-keyword
|
||||
placeholder="输入仓库名称搜索" remote-show-suffix :remote-method="remoteMethod"
|
||||
:loading="warehouseLoading" style="width: 240px">
|
||||
<el-option v-for="item in warehouseList" :key="item.id" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-input class="w-[280px]" v-model="queryParams.status" clearable placeholder="请输入状态" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['inventory_warehouse.inventory_warehouse/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
生成今日盘库
|
||||
</el-button>
|
||||
<el-button v-perms="['inventory_warehouse.inventory_warehouse/enter']" type="primary"
|
||||
@click="inventoryShow = true">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
库存核准
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="商品" prop="product_id" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
{{ row.product_name }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="后台人员" prop="admin_id" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
{{ row.admin_name }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="盘库数量" prop="nums" show-overflow-tooltip />
|
||||
<el-table-column label="确认数量" prop="enter_nums" show-overflow-tooltip />
|
||||
<el-table-column label="时间" prop="create_time" show-overflow-tooltip />
|
||||
<el-table-column label="状态" prop="status" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
{{ row.status_name }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['inventory_warehouse.inventory_warehouse/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
<el-dialog v-model="inventoryShow" title="盘库核准" width="600">
|
||||
<el-form :model="EnterNumsForm" label-width="90px">
|
||||
<el-form-item label="日期" prop="create_time">
|
||||
<el-date-picker v-model="EnterNumsForm.create_time" type="date" placeholder="选择日期" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="inventoryShow = false">取消</el-button>
|
||||
<el-button type="primary" @click="handleEnterNums"> 确认 </el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="inventoryStoreLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import {
|
||||
apiInventoryWarehouseLists,
|
||||
apiInventoryWarehouseEnterNums
|
||||
} from '@/api/inventory_warehouse'
|
||||
import { apiWarehouseLists } from '@/api/warehouse'
|
||||
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import moment from 'moment'
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
const inventoryShow = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
warehouse_id: '',
|
||||
nums: '',
|
||||
enter_nums: '',
|
||||
status: ''
|
||||
})
|
||||
|
||||
const warehouseLoading = ref(false)
|
||||
const warehouseList = ref([])
|
||||
const remoteMethod = (e = '') => {
|
||||
warehouseLoading.value = true
|
||||
apiWarehouseLists({
|
||||
name: e,
|
||||
page_size: 50
|
||||
})
|
||||
.then((res) => {
|
||||
warehouseList.value = res.lists
|
||||
setTimeout(() => {
|
||||
warehouseLoading.value = false
|
||||
}, 300)
|
||||
})
|
||||
.catch((err) => {
|
||||
setTimeout(() => {
|
||||
warehouseLoading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val : any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiInventoryWarehouseLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
const EnterNumsForm = reactive({
|
||||
create_time: ''
|
||||
})
|
||||
const handleEnterNums = () => {
|
||||
EnterNumsForm.create_time = moment(EnterNumsForm.create_time).format('YYYY-MM-DD')
|
||||
apiInventoryWarehouseEnterNums({ ...EnterNumsForm }).then(() => {
|
||||
getLists()
|
||||
})
|
||||
}
|
||||
// 编辑
|
||||
const handleEdit = async (data : any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
@ -1,109 +0,0 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="标签名字" prop="label_name">
|
||||
<el-input v-model="formData.label_name" clearable placeholder="请输入标签名字" />
|
||||
</el-form-item>
|
||||
<el-form-item label="logo(图片)" prop="logo">
|
||||
<material-picker v-model="formData.logo" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="labelEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiLabelAdd, apiLabelEdit, apiLabelDetail } from '@/api/label'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑标签' : '新增标签'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
label_name: '',
|
||||
logo: '',
|
||||
})
|
||||
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiLabelDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiLabelEdit(data)
|
||||
: await apiLabelAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
@ -1,131 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form
|
||||
class="mb-[-16px]"
|
||||
:model="queryParams"
|
||||
inline
|
||||
>
|
||||
<el-form-item label="标签名字" prop="label_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.label_name" clearable placeholder="请输入标签名字" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['setting.label/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['setting.label/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="标签名字" prop="label_name" show-overflow-tooltip />
|
||||
<el-table-column label="logo(图片)" prop="logo">
|
||||
<template #default="{ row }">
|
||||
<el-image style="width:50px;height:50px;" :src="row.logo" :preview-teleported="true"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['setting.label/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['setting.label/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="labelLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiLabelLists, apiLabelDelete } from '@/api/label'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
label_name: '',
|
||||
logo: ''
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiLabelLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiLabelDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
||||
|
@ -1,808 +0,0 @@
|
||||
<template>
|
||||
<el-card>
|
||||
<div class="mb-4 text-lg font-bold">预定单添加</div>
|
||||
<div>
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
label-width="90px"
|
||||
:inline="true"
|
||||
:rules="formRules"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="用户" prop="nickname">
|
||||
<el-select
|
||||
v-model="formData.uid"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="输入用户名称搜索"
|
||||
remote-show-suffix
|
||||
:remote-method="remoteMethodUser"
|
||||
:loading="userloading"
|
||||
style="width: 220px"
|
||||
@change="resetUserId"
|
||||
>
|
||||
<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-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="姓名" prop="nickname">
|
||||
<el-input v-model="formData.nickname" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="手机号" prop="phone">
|
||||
<el-input v-model="formData.phone" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="地址" prop="address">
|
||||
<el-input v-model="formData.address" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="订单类型" prop="order_type">
|
||||
<el-radio-group
|
||||
v-model="formData.order_type"
|
||||
@change="handleOrderType()"
|
||||
>
|
||||
<el-radio :label="3">一条龙订单</el-radio>
|
||||
<el-radio :label="1">铺货订单</el-radio>
|
||||
<el-radio :label="2">摊贩订单</el-radio>
|
||||
<!-- <el-radio :label="4">线上订单</el-radio> -->
|
||||
<!-- <el-radio :label="5">仓库补货</el-radio> -->
|
||||
<el-radio :label="6">往期补单-出库</el-radio>
|
||||
<el-radio :label="7">采购订单</el-radio>
|
||||
<el-radio :label="9">往期补单-入库</el-radio>
|
||||
<el-radio :label="8">其他订单</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="门店" prop="store_id" style="width: 300px">
|
||||
<el-select
|
||||
v-model="formData.store_id"
|
||||
placeholder="请选择门店"
|
||||
size="large"
|
||||
@change="resetUserId"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in storeList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="是否赊账" prop="is_arrears">
|
||||
<el-switch v-model="formData.is_arrears" :active-value="2" :inactive-value="1" active-text="是"
|
||||
inactive-text="否" inline-prompt />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" v-if="formData.order_type == 7">
|
||||
<el-form-item label="采购人员" prop="buyer_id" style="width: 300px">
|
||||
<el-select v-model="formData.buyer_id" placeholder="请选择采购人员" size="large">
|
||||
<el-option v-for="item in delivery_list" :label="item.nickname" :value="item.uid" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="到货时间" prop="arrival_time">
|
||||
<el-date-picker
|
||||
v-model="formData.arrival_time"
|
||||
type="datetime"
|
||||
:readonly="false"
|
||||
clearable
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
placeholder="请选择到货时间"
|
||||
style="width: 180px"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="桌数" prop="tables">
|
||||
<el-input-number v-model="formData.tables" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="办事天数" prop="days">
|
||||
<el-input-number v-model="formData.days" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="厨师" prop="chef">
|
||||
<el-input v-model="formData.chef" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="电话" prop="chef_phone">
|
||||
<el-input v-model="formData.chef_phone" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注" prop="purpose">
|
||||
<el-input
|
||||
v-model="formData.purpose"
|
||||
type="input"
|
||||
style="width: 480px"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="内部备注" prop="mark">
|
||||
<el-input v-model="formData.mark" type="input" style="width: 480px" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="分单员" prop="splitting_officer">
|
||||
<el-input v-model="formData.splitting_officer" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="跟单员" prop="merchandiser">
|
||||
<el-input v-model="formData.merchandiser" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="仓管员" prop="distribution_personnel">
|
||||
<el-input v-model="formData.distribution_personnel" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="运输员" prop="transporter">
|
||||
<el-input v-model="formData.transporter" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="门店员" prop="system_store_name">
|
||||
<el-input v-model="formData.system_store_name" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="区域经理" prop="regional_manager">
|
||||
<el-input v-model="formData.regional_manager" type="input" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="商品" prop="product_id" class="w-full">
|
||||
<div class="flex-1 w-full">
|
||||
<div class="mb-2">
|
||||
<el-button type="primary" @click="showProductModal()"
|
||||
>添加商品</el-button
|
||||
>
|
||||
</div>
|
||||
<el-table :data="productList">
|
||||
<el-table-column label="商品ID" prop="id" show-overflow-tooltip>
|
||||
<template #default="{ row, $index }">
|
||||
<el-input
|
||||
v-model="row.id"
|
||||
@keydown.enter="enterProduct(row)"
|
||||
:ref="(el) => (labelRefs[$index + 'id'] = el)"
|
||||
@keyup="moveFocus($event, $index, 'id')"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品图片" prop="image" min-width="80">
|
||||
<template #default="{ row }">
|
||||
<el-image
|
||||
style="width: 50px; height: 50px"
|
||||
:src="row.image"
|
||||
:preview-teleported="true"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="商品名称"
|
||||
prop="store_name"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template #default="{ row, $index }">
|
||||
<el-input
|
||||
v-model="row.store_name"
|
||||
@keydown.enter="enterStoreName(row)"
|
||||
:ref="(el) => (labelRefs[$index + 'store_name'] = el)"
|
||||
@keyup="moveFocus($event, $index, 'store_name')"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="单位" min-width="80" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<div>{{ row.unit_name }}-{{ row.status_msg }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="仓库数量"
|
||||
min-width="80"
|
||||
show-overflow-tooltip
|
||||
prop="stock"
|
||||
/>
|
||||
<el-table-column label="数量">
|
||||
<template #default="{ row, $index }">
|
||||
<el-input
|
||||
v-model="row.nums"
|
||||
@change="handleChange(row)"
|
||||
:ref="(el) => (labelRefs[$index + 'nums'] = el)"
|
||||
@keyup="moveFocus($event, $index, 'nums')"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="价格">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.price" disabled />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="总价">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.total_price" disabled />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="型号">
|
||||
<template #default="{ row, $index }">
|
||||
<el-input
|
||||
v-model="row.marques"
|
||||
:ref="(el) => (labelRefs[$index + 'marques'] = el)"
|
||||
@keyup="moveFocus($event, $index, 'marques')" readonly
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="包装">
|
||||
<template #default="{ row, $index }">
|
||||
<el-input
|
||||
v-model="row.package"
|
||||
:ref="(el) => (labelRefs[$index + 'package'] = el)"
|
||||
@keyup="moveFocus($event, $index, 'package')" readonly
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="毛重">
|
||||
<template #default="{ row, $index }">
|
||||
<el-input
|
||||
v-model="row.gross_weight"
|
||||
:ref="(el) => (labelRefs[$index + 'gross_weight'] = el)"
|
||||
@keyup="moveFocus($event, $index, 'gross_weight')"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="净重">
|
||||
<template #default="{ row, $index }">
|
||||
<el-input
|
||||
v-model="row.net_weight"
|
||||
:ref="(el) => (labelRefs[$index + 'net_weight'] = el)"
|
||||
@keyup="moveFocus($event, $index, 'net_weight')"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="规格">
|
||||
<template #default="{ row, $index }">
|
||||
<el-input
|
||||
v-model="row.store_info"
|
||||
:ref="(el) => (labelRefs[$index + 'store_info'] = el)"
|
||||
@keyup="moveFocus($event, $index, 'store_info')"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="售后">
|
||||
<template #default="{ row, $index }">
|
||||
<el-input
|
||||
v-model="row.after_sales"
|
||||
:ref="(el) => (labelRefs[$index + 'after_sales'] = el)"
|
||||
@keyup="moveFocus($event, $index, 'after_sales')"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="损耗">
|
||||
<template #default="{ row, $index }">
|
||||
<el-input
|
||||
v-model="row.loss"
|
||||
:ref="(el) => (labelRefs[$index + 'loss'] = el)"
|
||||
@keyup="moveFocus($event, $index, 'loss')"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="备注">
|
||||
<template #default="{ row, $index }">
|
||||
<el-input
|
||||
v-model="row.mark"
|
||||
:ref="(el) => (labelRefs[$index + 'mark'] = el)"
|
||||
@keyup="moveFocus($event, $index, 'mark')"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDeleteProdut(row.id)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-row>
|
||||
<el-button @click="handleSubmit(formRef)" type="primary" class="w-40 ml-20"
|
||||
>提交</el-button
|
||||
>
|
||||
<el-form-item label="总价" prop="total_price">
|
||||
<div>
|
||||
{{ formData.total_price }}
|
||||
<span class="ml-4">该金额只做前台展示,后台会从新计算</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<el-dialog v-model="showProduct" title="选择商品" width="70%">
|
||||
<product-warehouse-pop
|
||||
:key="productModalKey"
|
||||
:userId="formData.uid"
|
||||
:storeId="formData.store_id"
|
||||
:order_type="formData.order_type"
|
||||
@onBindStore="onBindProduct"
|
||||
></product-warehouse-pop>
|
||||
</el-dialog>
|
||||
</el-card>
|
||||
<el-dialog v-model="dialogProductShow" title="选择商品" width="1200">
|
||||
<el-table :data="dialogProductLists" @current-change="handleCurrentChange" :height="300">
|
||||
<el-table-column label="商品ID" prop="id" show-overflow-tooltip />
|
||||
<el-table-column label="商品图片" prop="image" min-width="80">
|
||||
<template #default="{ row }">
|
||||
<el-image
|
||||
style="width: 50px; height: 50px"
|
||||
:src="row.image"
|
||||
:preview-teleported="true"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="商品名称"
|
||||
prop="store_name"
|
||||
min-width="200"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="分类" prop="cate_name" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column label="单位" prop="unit_name" min-width="80" show-overflow-tooltip />
|
||||
<el-table-column label="商品价格" prop="price" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column label="仓库库存" prop="stock" min-width="100" show-overflow-tooltip />
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="storeProductEdit">
|
||||
import { ElMessage, type FormInstance } from 'element-plus'
|
||||
import type { PropType } from 'vue'
|
||||
import { useRouter, useRoute } from 'vue-router'
|
||||
import { apiBeforehandOrderAdd } from '@/api/beforehand_order'
|
||||
import { apiSystemStoreLists } from '@/api/system_store'
|
||||
import { apiStoreProductDetail, apiStoreProductLists } from '@/api/store_product'
|
||||
import { apiDeliveryServiceLists } from '@/api/delivery_service'
|
||||
import { apiUserLists } from '@/api/user'
|
||||
import feedback from '@/utils/feedback'
|
||||
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
// const formRef = shallowRef<FormInstance>()
|
||||
const formRef = ref<FormInstance>()
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
warehouse_id: '',
|
||||
is_buyer: -1,
|
||||
buyer_id: '',
|
||||
is_arrears: 1,
|
||||
supplier_id: '',
|
||||
code: '',
|
||||
total_price: 0,
|
||||
order_type: 3,
|
||||
store_id: '',
|
||||
arrival_time: '',
|
||||
purpose: '',
|
||||
tables: 0,
|
||||
days: 0,
|
||||
chef: '',
|
||||
chef_phone: '',
|
||||
splitting_officer: '',
|
||||
merchandiser: '何月英',
|
||||
distribution_personnel: '余友',
|
||||
transporter: '',
|
||||
system_store_name: '',
|
||||
regional_manager: '张波',
|
||||
mark: '',
|
||||
uid: '',
|
||||
nickname: '',
|
||||
phone: '',
|
||||
address: ''
|
||||
})
|
||||
const enterProduct = async (e: any) => {
|
||||
const data = await apiStoreProductDetail({ id: e.id, user_id: formData.uid, store_id: formData.store_id })
|
||||
setData(e, data)
|
||||
}
|
||||
|
||||
const setData = (e: any, data: any) => {
|
||||
e.id = data.id
|
||||
e.image = data.image
|
||||
e.marques = data.marques
|
||||
e.store_info = data.store_info
|
||||
e.price = data.price
|
||||
e.purchase = data.purchase
|
||||
e.after_sales = data.after_sales
|
||||
e.loss = data.loss
|
||||
e.unit = data.unit
|
||||
e.store_name = data.store_name
|
||||
e.unit_name = data.unit_name
|
||||
e.status_msg = data.status_msg
|
||||
e.stock = data.stock
|
||||
e.gross_weight = data.gross_weight
|
||||
e.net_weight = data.net_weight
|
||||
e.package = data.package
|
||||
const ids: any[] = []
|
||||
productList.value.forEach((item: any) => {
|
||||
ids.push(item.id)
|
||||
})
|
||||
if (ids.includes(0) == false) {
|
||||
productList.value.push({ id: 0 })
|
||||
}
|
||||
}
|
||||
const showProduct = ref(false) // 选择商品列表是否显示
|
||||
// 商品列表
|
||||
const productList = ref([{ id: 0 }])
|
||||
// 删除已有商品
|
||||
const handleDeleteProdut = (id: number) => {
|
||||
productList.value = productList.value.filter((item: any) => item.id !== id)
|
||||
}
|
||||
// 选择商品
|
||||
const onBindProduct = (e: any[]) => {
|
||||
e.forEach((item: any) => {
|
||||
if (!productList.value.find((t: any) => t.id == item.id)) {
|
||||
productList.value.push(item)
|
||||
}
|
||||
})
|
||||
showProduct.value = false
|
||||
}
|
||||
function handleChange(row) {
|
||||
row.total_price = (row.nums * row.price).toFixed(2)
|
||||
if (row.total_price > 0) {
|
||||
formData.total_price = (
|
||||
parseFloat(formData.total_price) + parseFloat(row.total_price)
|
||||
).toFixed(2)
|
||||
}
|
||||
}
|
||||
|
||||
function handleOrderType(row) {
|
||||
if (formData.order_type == 7 || formData.order_type == 5) {
|
||||
formData.is_buyer = 0
|
||||
} else {
|
||||
formData.is_buyer = -1
|
||||
}
|
||||
if (formData.order_type == 7 && delivery_list.value.length == 0) {
|
||||
getDeliveryList()
|
||||
}
|
||||
}
|
||||
const router = useRouter()
|
||||
// 提交按钮
|
||||
const handleSubmit = async (formEl: FormInstance | undefined) => {
|
||||
const product_arr = productList.value.map((item: any) => {
|
||||
return {
|
||||
product_id: item.id,
|
||||
nums: item.nums,
|
||||
price: item.price || 0,
|
||||
purchase: item.purchase || 0,
|
||||
total_price: item.total_price || 0,
|
||||
marques: item.marques,
|
||||
store_info: item.store_info,
|
||||
after_sales: item.after_sales,
|
||||
loss: item.loss,
|
||||
unit: item.unit,
|
||||
gross_weight: item.gross_weight,
|
||||
net_weight: item.net_weight,
|
||||
package: item.package,
|
||||
mark: item.mark
|
||||
}
|
||||
})
|
||||
await formEl.validate((valid, fields) => {
|
||||
if (valid) {
|
||||
apiBeforehandOrderAdd({
|
||||
product_arr,
|
||||
...formData
|
||||
}).then((res) => {
|
||||
setTimeout(() => {
|
||||
router.push({
|
||||
path: '/order/beforehand_order'
|
||||
})
|
||||
}, 2000)
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
const storeList = ref([])
|
||||
apiSystemStoreLists({ page_no: 1, page_size: 100 }).then((res) => {
|
||||
storeList.value = res.lists
|
||||
})
|
||||
|
||||
const dialogProductLists = ref([])
|
||||
const dialogProductShow = ref(false)
|
||||
const dialogProductData = ref()
|
||||
const enterStoreName = (e: any) => {
|
||||
apiStoreProductLists({
|
||||
store_name: e.store_name,
|
||||
product_type: [0, 6],
|
||||
is_warehouse: 1,
|
||||
order_type: formData.order_type,
|
||||
user_id: formData.uid,
|
||||
store_id: formData.store_id
|
||||
// is_show: 1
|
||||
}).then((res) => {
|
||||
if (res.count == 1) {
|
||||
const data = res.lists[0]
|
||||
setData(e, data)
|
||||
}
|
||||
if (res.count > 1) {
|
||||
dialogProductLists.value = res.lists
|
||||
dialogProductShow.value = true
|
||||
dialogProductData.value = e
|
||||
}
|
||||
})
|
||||
}
|
||||
// 表格选择后回调事件
|
||||
const handleCurrentChange = (val: any[]) => {
|
||||
if (val == null) {
|
||||
return
|
||||
}
|
||||
setData(dialogProductData.value, val)
|
||||
dialogProductShow.value = false
|
||||
dialogProductLists.value = []
|
||||
dialogProductData.value = []
|
||||
}
|
||||
|
||||
const labelRefs = reactive<Record<string, HTMLElement>>({})
|
||||
const moveFocus = (event: any, index: number, key: string) => {
|
||||
const keyField = [
|
||||
'id',
|
||||
'store_name',
|
||||
'nums',
|
||||
// 'price',
|
||||
// 'total_price',
|
||||
'marques',
|
||||
// 'gross_weight',
|
||||
// 'net_weight',
|
||||
// 'store_info',
|
||||
// 'after_sales',
|
||||
// 'loss',
|
||||
'package',
|
||||
'mark'
|
||||
]
|
||||
|
||||
// if (event.keyCode === 13) {
|
||||
// // 回车向右
|
||||
// if (index === productList.value.length - 1 && key === keyField[keyField.length - 1]) {
|
||||
// return
|
||||
// }
|
||||
// labelRefs[index + key].blur()
|
||||
// if (key === keyField[keyField.length - 1]) {
|
||||
// labelRefs[index + 1 + keyField[0]].focus()
|
||||
// } else {
|
||||
// const nextKeyIndex = keyField.findIndex((item) => item === key) + 1
|
||||
// nextTick(() => {
|
||||
// labelRefs[index + keyField[nextKeyIndex]].focus()
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
// 向上 38
|
||||
if (event.keyCode === 38) {
|
||||
if (index === 0) {
|
||||
return // 第一行无法向上
|
||||
}
|
||||
labelRefs[index + key].blur()
|
||||
nextTick(() => {
|
||||
labelRefs[index - 1 + key].focus()
|
||||
})
|
||||
}
|
||||
// 向下 40
|
||||
if (event.keyCode === 40) {
|
||||
if (index === productList.value.length - 1) {
|
||||
return // 最后一行无法向下
|
||||
}
|
||||
labelRefs[index + key].blur()
|
||||
nextTick(() => {
|
||||
labelRefs[index + 1 + key].focus()
|
||||
})
|
||||
}
|
||||
// 向左 37
|
||||
if (event.keyCode === 37) {
|
||||
if (index === 0 && key === keyField[0]) {
|
||||
return
|
||||
}
|
||||
labelRefs[index + key].blur()
|
||||
// 当前行第一个,跳转上一行最后一个
|
||||
if (key === keyField[0]) {
|
||||
labelRefs[index - 1 + keyField[keyField.length - 1]].focus()
|
||||
} else {
|
||||
// 跳转上一个
|
||||
const preKeyIndex = keyField.findIndex((item) => item === key) - 1
|
||||
nextTick(() => {
|
||||
labelRefs[index + keyField[preKeyIndex]].focus()
|
||||
})
|
||||
}
|
||||
}
|
||||
// // 向右 39
|
||||
if (event.keyCode === 39) {
|
||||
if (index === productList.value.length - 1 && key === keyField[keyField.length - 1]) {
|
||||
return
|
||||
}
|
||||
labelRefs[index + key].blur()
|
||||
// 最后一行最后一个,跳转下一行第一个
|
||||
if (key === keyField[keyField.length - 1]) {
|
||||
labelRefs[index + 1 + keyField[0]].focus()
|
||||
} else {
|
||||
// 跳转下一个
|
||||
const nextKeyIndex = keyField.findIndex((item) => item === key) + 1
|
||||
nextTick(() => {
|
||||
labelRefs[index + keyField[nextKeyIndex]].focus()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
uid: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入采购用户',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
store_id: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择门店',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
arrival_time: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择到货时间',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
tables: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入桌数',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
days: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入天数',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
chef: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入厨师',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
chef_phone: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入厨师电话',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
purpose: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入采购目的',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
system_store_name: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入门店联系人',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
splitting_officer: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入分单员',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
merchandiser: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入跟单员',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
distribution_personnel: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入仓管员',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
transporter: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入运输员',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
regional_manager: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入区域经理',
|
||||
trigger: ['blur']
|
||||
}
|
||||
]
|
||||
})
|
||||
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 showProductModal = () => {
|
||||
showProduct.value = true
|
||||
}
|
||||
const productModalKey = ref(0)
|
||||
const resetUserId = (e) => {
|
||||
productModalKey.value++
|
||||
}
|
||||
|
||||
const delivery_list = ref([])
|
||||
const getDeliveryList = () => {
|
||||
apiDeliveryServiceLists({ type: 3 }).then((res) => {
|
||||
delivery_list.value = res.lists
|
||||
})
|
||||
}
|
||||
</script>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user