feat(biz): 添加生产订单管理功能
This commit is contained in:
parent
70b9038a1e
commit
c6adab5443
1
mes-ui/mes-ui-admin-vue3/.gitignore
vendored
1
mes-ui/mes-ui-admin-vue3/.gitignore
vendored
@ -59,3 +59,4 @@ env/
|
||||
.venv/
|
||||
/pytest.ini
|
||||
/pnpm-lock.yaml
|
||||
/requirements-test.txt
|
||||
|
||||
@ -1,72 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
export interface StockOutVO {
|
||||
id: number
|
||||
stockOutNo: string
|
||||
stockOutDate: string
|
||||
warehouseId: number
|
||||
warehouseName: string
|
||||
storeAreaId: number
|
||||
storeAreaName: string
|
||||
customerId: number
|
||||
customerName: string
|
||||
contact: string
|
||||
contactPhone: string
|
||||
deliveryAddress: string
|
||||
deliveryMethod: string
|
||||
transportNo: string
|
||||
carrier: string
|
||||
stockOutType: string
|
||||
stockOutStatus: number
|
||||
billStatus: number
|
||||
totalQty: number
|
||||
totalAmount: number
|
||||
remark: string
|
||||
items?: StockOutItemVO[]
|
||||
}
|
||||
|
||||
export interface StockOutItemVO {
|
||||
id?: number
|
||||
materialId?: number
|
||||
materialCode?: string
|
||||
materialName?: string
|
||||
spec?: string
|
||||
unit?: string
|
||||
stockQty?: number
|
||||
outQty?: number
|
||||
price?: number
|
||||
amount?: number
|
||||
remark?: string
|
||||
}
|
||||
|
||||
export const getStockOutPage = async (params) => {
|
||||
return await request.get({ url: `/biz/stock-out/page`, params })
|
||||
}
|
||||
|
||||
export const getStockOut = async (id: number) => {
|
||||
return await request.get({ url: `/biz/stock-out/get?id=` + id })
|
||||
}
|
||||
|
||||
export const createStockOut = async (data: StockOutVO) => {
|
||||
return await request.post({ url: `/biz/stock-out/create`, data })
|
||||
}
|
||||
|
||||
export const updateStockOut = async (data: StockOutVO) => {
|
||||
return await request.put({ url: `/biz/stock-out/update`, data })
|
||||
}
|
||||
|
||||
export const deleteStockOut = async (id: number) => {
|
||||
return await request.delete({ url: `/biz/stock-out/delete?id=` + id })
|
||||
}
|
||||
|
||||
export const exportStockOut = async (params) => {
|
||||
return await request.download({ url: `/biz/stock-out/export-excel`, params })
|
||||
}
|
||||
|
||||
export const submitStockOut = async (id: number) => {
|
||||
return await request.put({ url: `/biz/stock-out/submit?id=` + id })
|
||||
}
|
||||
|
||||
export const auditStockOut = async (id: number) => {
|
||||
return await request.put({ url: `/biz/stock-out/audit?id=` + id })
|
||||
}
|
||||
204
mes-ui/mes-ui-admin-vue3/src/types/auto-components.d.ts
vendored
Normal file
204
mes-ui/mes-ui-admin-vue3/src/types/auto-components.d.ts
vendored
Normal file
@ -0,0 +1,204 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
// @ts-nocheck
|
||||
// Generated by unplugin-vue-components
|
||||
// Read more: https://github.com/vuejs/core/pull/3399
|
||||
export {}
|
||||
|
||||
declare module 'vue' {
|
||||
export interface GlobalComponents {
|
||||
__init__: typeof import('./../../tests/pages/__init__.py')['default']
|
||||
'__init__.cpython314': typeof import('./../../tests/pages/__pycache__/__init__.cpython-314.pyc')['default']
|
||||
'.gitignore': typeof import('./../../.pytest_cache/.gitignore')['default']
|
||||
AddForm: typeof import('./../../screenshots/add-form.png')['default']
|
||||
AddFormFilled: typeof import('./../../screenshots/add-form-filled.png')['default']
|
||||
AfterSave: typeof import('./../../screenshots/after-save.png')['default']
|
||||
AppLinkInput: typeof import('./../components/AppLinkInput/index.vue')['default']
|
||||
AppLinkSelectDialog: typeof import('./../components/AppLinkInput/AppLinkSelectDialog.vue')['default']
|
||||
Backtop: typeof import('./../components/Backtop/src/Backtop.vue')['default']
|
||||
Base: typeof import('./../../tests/pages/base.py')['default']
|
||||
'Base.cpython314': typeof import('./../../tests/pages/__pycache__/base.cpython-314.pyc')['default']
|
||||
CACHEDIR: typeof import('./../../.pytest_cache/CACHEDIR.TAG')['default']
|
||||
CardTitle: typeof import('./../components/Card/src/CardTitle.vue')['default']
|
||||
ColorInput: typeof import('./../components/ColorInput/index.vue')['default']
|
||||
ComponentContainer: typeof import('./../components/DiyEditor/components/ComponentContainer.vue')['default']
|
||||
ComponentContainerProperty: typeof import('./../components/DiyEditor/components/ComponentContainerProperty.vue')['default']
|
||||
ComponentLibrary: typeof import('./../components/DiyEditor/components/ComponentLibrary.vue')['default']
|
||||
Config: typeof import('./../../tests/config.json')['default']
|
||||
ConfigGlobal: typeof import('./../components/ConfigGlobal/src/ConfigGlobal.vue')['default']
|
||||
Conftest: typeof import('./../../tests/conftest.py')['default']
|
||||
'Conftest.cpython314Pytest9.0.3': typeof import('./../../tests/__pycache__/conftest.cpython-314-pytest-9.0.3.pyc')['default']
|
||||
'Conftest.cpython314Pytest9.0.3.pyc': typeof import('./../../tests/__pycache__/conftest.cpython-314-pytest-9.0.3.pyc.38960')['default']
|
||||
ContentDetailWrap: typeof import('./../components/ContentDetailWrap/src/ContentDetailWrap.vue')['default']
|
||||
ContentWrap: typeof import('./../components/ContentWrap/src/ContentWrap.vue')['default']
|
||||
CopperModal: typeof import('./../components/Cropper/src/CopperModal.vue')['default']
|
||||
CountTo: typeof import('./../components/CountTo/src/CountTo.vue')['default']
|
||||
Crontab: typeof import('./../components/Crontab/src/Crontab.vue')['default']
|
||||
Cropper: typeof import('./../components/Cropper/src/Cropper.vue')['default']
|
||||
CropperAvatar: typeof import('./../components/Cropper/src/CropperAvatar.vue')['default']
|
||||
Descriptions: typeof import('./../components/Descriptions/src/Descriptions.vue')['default']
|
||||
DescriptionsItemLabel: typeof import('./../components/Descriptions/src/DescriptionsItemLabel.vue')['default']
|
||||
Dialog: typeof import('./../components/Dialog/src/Dialog.vue')['default']
|
||||
DictTag: typeof import('./../components/DictTag/src/DictTag.vue')['default']
|
||||
DiyEditor: typeof import('./../components/DiyEditor/index.vue')['default']
|
||||
DocAlert: typeof import('./../components/DocAlert/index.vue')['default']
|
||||
Echart: typeof import('./../components/Echart/src/Echart.vue')['default']
|
||||
Editor: typeof import('./../components/Editor/src/Editor.vue')['default']
|
||||
ElAlert: typeof import('element-plus/es')['ElAlert']
|
||||
ElAvatar: typeof import('element-plus/es')['ElAvatar']
|
||||
ElButton: typeof import('element-plus/es')['ElButton']
|
||||
ElCard: typeof import('element-plus/es')['ElCard']
|
||||
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
|
||||
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
|
||||
ElCol: typeof import('element-plus/es')['ElCol']
|
||||
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
|
||||
ElDialog: typeof import('element-plus/es')['ElDialog']
|
||||
ElDivider: typeof import('element-plus/es')['ElDivider']
|
||||
ElDrawer: typeof import('element-plus/es')['ElDrawer']
|
||||
ElDropdown: typeof import('element-plus/es')['ElDropdown']
|
||||
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
|
||||
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
|
||||
ElementBaseInfo: typeof import('./../components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue')['default']
|
||||
ElementForm: typeof import('./../components/bpmnProcessDesigner/package/penal/form/ElementForm.vue')['default']
|
||||
ElementListeners: typeof import('./../components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue')['default']
|
||||
ElementMultiInstance: typeof import('./../components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue')['default']
|
||||
ElementOtherConfig: typeof import('./../components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue')['default']
|
||||
ElementProperties: typeof import('./../components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue')['default']
|
||||
ElementTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/ElementTask.vue')['default']
|
||||
ElForm: typeof import('element-plus/es')['ElForm']
|
||||
ElFormItem: typeof import('element-plus/es')['ElFormItem']
|
||||
ElIcon: typeof import('element-plus/es')['ElIcon']
|
||||
ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
|
||||
ElInput: typeof import('element-plus/es')['ElInput']
|
||||
ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
|
||||
ElLink: typeof import('element-plus/es')['ElLink']
|
||||
ElOption: typeof import('element-plus/es')['ElOption']
|
||||
ElPagination: typeof import('element-plus/es')['ElPagination']
|
||||
ElPopover: typeof import('element-plus/es')['ElPopover']
|
||||
ElRadio: typeof import('element-plus/es')['ElRadio']
|
||||
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
||||
ElRow: typeof import('element-plus/es')['ElRow']
|
||||
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
|
||||
ElSelect: typeof import('element-plus/es')['ElSelect']
|
||||
ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
|
||||
ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
||||
ElTable: typeof import('element-plus/es')['ElTable']
|
||||
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
|
||||
ElTabPane: typeof import('element-plus/es')['ElTabPane']
|
||||
ElTabs: typeof import('element-plus/es')['ElTabs']
|
||||
ElTag: typeof import('element-plus/es')['ElTag']
|
||||
ElTooltip: typeof import('element-plus/es')['ElTooltip']
|
||||
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
|
||||
ElUpload: typeof import('element-plus/es')['ElUpload']
|
||||
Error: typeof import('./../components/Error/src/Error.vue')['default']
|
||||
ErrorScreenshot: typeof import('./../../error-screenshot.png')['default']
|
||||
FlowCondition: typeof import('./../components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue')['default']
|
||||
Form: typeof import('./../components/Form/src/Form.vue')['default']
|
||||
Form_components: typeof import('./../../tests/components/form_components.py')['default']
|
||||
'Form_components.cpython314': typeof import('./../../tests/components/__pycache__/form_components.cpython-314.pyc')['default']
|
||||
Highlight: typeof import('./../components/Highlight/src/Highlight.vue')['default']
|
||||
Icon: typeof import('./../components/Icon/src/Icon.vue')['default']
|
||||
IconSelect: typeof import('./../components/Icon/src/IconSelect.vue')['default']
|
||||
IFrame: typeof import('./../components/IFrame/src/IFrame.vue')['default']
|
||||
ImageViewer: typeof import('./../components/ImageViewer/src/ImageViewer.vue')['default']
|
||||
Infotip: typeof import('./../components/Infotip/src/Infotip.vue')['default']
|
||||
InputPassword: typeof import('./../components/InputPassword/src/InputPassword.vue')['default']
|
||||
InputWithColor: typeof import('./../components/InputWithColor/index.vue')['default']
|
||||
Lastfailed: typeof import('./../../.pytest_cache/v/cache/lastfailed')['default']
|
||||
Login_page: typeof import('./../../tests/pages/login_page.py')['default']
|
||||
'Login_page.cpython314': typeof import('./../../tests/pages/__pycache__/login_page.cpython-314.pyc')['default']
|
||||
'Login_page.cpython314.pyc': typeof import('./../../tests/pages/__pycache__/login_page.cpython-314.pyc.2012673802768')['default']
|
||||
LoginPage: typeof import('./../../login-page.png')['default']
|
||||
MagicCubeEditor: typeof import('./../components/MagicCubeEditor/index.vue')['default']
|
||||
MoneyInput: typeof import('./../views/biz/components/MoneyInput.vue')['default']
|
||||
Nodeids: typeof import('./../../.pytest_cache/v/cache/nodeids')['default']
|
||||
Order_test_data: typeof import('./../../tests/data/order_test_data.json')['default']
|
||||
Pagination: typeof import('./../components/Pagination/index.vue')['default']
|
||||
PlaywrightTest: typeof import('./../../tests/playwright-test.py')['default']
|
||||
ProcessDesigner: typeof import('./../components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue')['default']
|
||||
ProcessPalette: typeof import('./../components/bpmnProcessDesigner/package/palette/ProcessPalette.vue')['default']
|
||||
ProcessViewer: typeof import('./../components/bpmnProcessDesigner/package/designer/ProcessViewer.vue')['default']
|
||||
PropertiesPanel: typeof import('./../components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue')['default']
|
||||
Prostorage: typeof import('./../api/biz/prostorage/index.ts')['default']
|
||||
ProStorageInventorySelectDialog: typeof import('./../views/biz/prostorageinventory/ProStorageInventorySelectDialog.vue')['default']
|
||||
Prostoragelog: typeof import('./../api/biz/prostoragelog/index.ts')['default']
|
||||
Prostoragemat: typeof import('./../api/biz/prostoragemat/index.ts')['default']
|
||||
Pytest: typeof import('./../../pytest.ini')['default']
|
||||
Qrcode: typeof import('./../components/Qrcode/src/Qrcode.vue')['default']
|
||||
README: typeof import('./../../.pytest_cache/README.md')['default']
|
||||
ReceiveTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue')['default']
|
||||
RequirementsTest: typeof import('./../../requirements-test.txt')['default']
|
||||
RouterLink: typeof import('vue-router')['RouterLink']
|
||||
RouterSearch: typeof import('./../components/RouterSearch/index.vue')['default']
|
||||
RouterView: typeof import('vue-router')['RouterView']
|
||||
Sale_order_page: typeof import('./../../tests/pages/sale_order_page.py')['default']
|
||||
'Sale_order_page.cpython314': typeof import('./../../tests/pages/__pycache__/sale_order_page.cpython-314.pyc')['default']
|
||||
'Sale_order_page.cpython314.pyc': typeof import('./../../tests/pages/__pycache__/sale_order_page.cpython-314.pyc.1680447423472')['default']
|
||||
ScriptTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue')['default']
|
||||
Search: typeof import('./../components/Search/src/Search.vue')['default']
|
||||
ShortcutDateRangePicker: typeof import('./../components/ShortcutDateRangePicker/index.vue')['default']
|
||||
SignalAndMessage: typeof import('./../components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue')['default']
|
||||
Sticky: typeof import('./../components/Sticky/src/Sticky.vue')['default']
|
||||
SummaryCard: typeof import('./../components/SummaryCard/index.vue')['default']
|
||||
Table: typeof import('./../components/Table/src/Table.vue')['default']
|
||||
Test_sale_order: typeof import('./../../tests/test_sale_order.py')['default']
|
||||
'Test_sale_order.cpython314Pytest9.0.3': typeof import('./../../tests/__pycache__/test_sale_order.cpython-314-pytest-9.0.3.pyc')['default']
|
||||
'Test_sale_order.cpython314Pytest9.0.3.pyc': typeof import('./../../tests/__pycache__/test_sale_order.cpython-314-pytest-9.0.3.pyc.16136')['default']
|
||||
TestAfterLogin: typeof import('./../../test-after-login.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_basic_150308': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_basic_150308.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_basic_150541': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_basic_150541.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_cancel_150346': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_cancel_150346.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_cancel_150618': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_cancel_150618.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_cancel_151150': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_cancel_151150.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_cancel_151240': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_cancel_151240.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_dialog_opens_151141': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_dialog_opens_151141.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_dialog_opens_151231': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_dialog_opens_151231.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_partial_fill_154225': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_partial_fill_154225.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_partial_fill_154326': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_partial_fill_154326.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_151545': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_151545.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_152057': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_152057.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_152324': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_152324.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_152412': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_152412.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_153127': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_153127.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_153158': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_153158.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_153341': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_153341.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_153433': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_153433.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_153706': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_153706.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_153802': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_success_153802.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_validation_154052': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_validation_154052.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_validation_154215': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_validation_154215.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_validation_154314': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_validation_154314.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_with_all_fields_150342': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_with_all_fields_150342.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_with_all_fields_150615': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderCRUD_test_add_order_with_all_fields_150615.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderDataDriven_test_add_order_parametrized[test_case0]_150350': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderDataDriven_test_add_order_parametrized[test_case0]_150350.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderDataDriven_test_add_order_parametrized[test_case0]_150622': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderDataDriven_test_add_order_parametrized[test_case0]_150622.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderDataDriven_test_add_order_parametrized[test_case1]_150353': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderDataDriven_test_add_order_parametrized[test_case1]_150353.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderDataDriven_test_add_order_parametrized[test_case1]_150625': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderDataDriven_test_add_order_parametrized[test_case1]_150625.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderLogin_test_login_success_145839': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderLogin_test_login_success_145839.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderLogin_test_login_success_145911': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderLogin_test_login_success_145911.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderSearch_test_reset_search_150305': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderSearch_test_reset_search_150305.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderSearch_test_reset_search_150538': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderSearch_test_reset_search_150538.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderSearch_test_search_by_date_range_150232': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderSearch_test_search_by_date_range_150232.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderSearch_test_search_by_date_range_150505': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderSearch_test_search_by_date_range_150505.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderSearch_test_search_by_order_no_150159': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderSearch_test_search_by_order_no_150159.png')['default']
|
||||
'Tests_test_sale_order.py_TestSaleOrderSearch_test_search_by_order_no_150432': typeof import('./../../tests/screenshots/tests_test_sale_order.py_TestSaleOrderSearch_test_search_by_order_no_150432.png')['default']
|
||||
TestScreenshot: typeof import('./../../test-screenshot.png')['default']
|
||||
Tooltip: typeof import('./../components/Tooltip/src/Tooltip.vue')['default']
|
||||
UploadFile: typeof import('./../components/UploadFile/src/UploadFile.vue')['default']
|
||||
UploadFileBatch: typeof import('./../components/UploadFile/src/UploadFileBatch.vue')['default']
|
||||
UploadImg: typeof import('./../components/UploadFile/src/UploadImg.vue')['default']
|
||||
UploadImgs: typeof import('./../components/UploadFile/src/UploadImgs.vue')['default']
|
||||
UserTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue')['default']
|
||||
UserTaskListeners: typeof import('./../components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue')['default']
|
||||
Verify: typeof import('./../components/Verifition/src/Verify.vue')['default']
|
||||
VerifyPoints: typeof import('./../components/Verifition/src/Verify/VerifyPoints.vue')['default']
|
||||
VerifySlide: typeof import('./../components/Verifition/src/Verify/VerifySlide.vue')['default']
|
||||
VerticalButtonGroup: typeof import('./../components/VerticalButtonGroup/index.vue')['default']
|
||||
'Workspace.xml': typeof import('./../../.idea/workspace.xml.tmp')['default']
|
||||
XButton: typeof import('./../components/XButton/src/XButton.vue')['default']
|
||||
XTextButton: typeof import('./../components/XButton/src/XTextButton.vue')['default']
|
||||
}
|
||||
export interface ComponentCustomProperties {
|
||||
vLoading: typeof import('element-plus/es')['ElLoadingDirective']
|
||||
}
|
||||
}
|
||||
81
mes-ui/mes-ui-admin-vue3/src/types/auto-imports.d.ts
vendored
Normal file
81
mes-ui/mes-ui-admin-vue3/src/types/auto-imports.d.ts
vendored
Normal file
@ -0,0 +1,81 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
export {}
|
||||
declare global {
|
||||
const DICT_TYPE: typeof import('@/utils/dict')['DICT_TYPE']
|
||||
const EffectScope: typeof import('vue')['EffectScope']
|
||||
const computed: typeof import('vue')['computed']
|
||||
const createApp: typeof import('vue')['createApp']
|
||||
const customRef: typeof import('vue')['customRef']
|
||||
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
|
||||
const defineComponent: typeof import('vue')['defineComponent']
|
||||
const effectScope: typeof import('vue')['effectScope']
|
||||
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
|
||||
const getCurrentScope: typeof import('vue')['getCurrentScope']
|
||||
const h: typeof import('vue')['h']
|
||||
const inject: typeof import('vue')['inject']
|
||||
const isProxy: typeof import('vue')['isProxy']
|
||||
const isReactive: typeof import('vue')['isReactive']
|
||||
const isReadonly: typeof import('vue')['isReadonly']
|
||||
const isRef: typeof import('vue')['isRef']
|
||||
const markRaw: typeof import('vue')['markRaw']
|
||||
const nextTick: typeof import('vue')['nextTick']
|
||||
const onActivated: typeof import('vue')['onActivated']
|
||||
const onBeforeMount: typeof import('vue')['onBeforeMount']
|
||||
const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
|
||||
const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
|
||||
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
|
||||
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
|
||||
const onDeactivated: typeof import('vue')['onDeactivated']
|
||||
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
|
||||
const onMounted: typeof import('vue')['onMounted']
|
||||
const onRenderTracked: typeof import('vue')['onRenderTracked']
|
||||
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
|
||||
const onScopeDispose: typeof import('vue')['onScopeDispose']
|
||||
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
|
||||
const onUnmounted: typeof import('vue')['onUnmounted']
|
||||
const onUpdated: typeof import('vue')['onUpdated']
|
||||
const onWatcherCleanup: typeof import('vue')['onWatcherCleanup']
|
||||
const provide: typeof import('vue')['provide']
|
||||
const reactive: typeof import('vue')['reactive']
|
||||
const readonly: typeof import('vue')['readonly']
|
||||
const ref: typeof import('vue')['ref']
|
||||
const required: typeof import('@/utils/formRules')['required']
|
||||
const resolveComponent: typeof import('vue')['resolveComponent']
|
||||
const shallowReactive: typeof import('vue')['shallowReactive']
|
||||
const shallowReadonly: typeof import('vue')['shallowReadonly']
|
||||
const shallowRef: typeof import('vue')['shallowRef']
|
||||
const toRaw: typeof import('vue')['toRaw']
|
||||
const toRef: typeof import('vue')['toRef']
|
||||
const toRefs: typeof import('vue')['toRefs']
|
||||
const toValue: typeof import('vue')['toValue']
|
||||
const triggerRef: typeof import('vue')['triggerRef']
|
||||
const unref: typeof import('vue')['unref']
|
||||
const useAttrs: typeof import('vue')['useAttrs']
|
||||
const useCrudSchemas: typeof import('@/hooks/web/useCrudSchemas')['useCrudSchemas']
|
||||
const useCssModule: typeof import('vue')['useCssModule']
|
||||
const useCssVars: typeof import('vue')['useCssVars']
|
||||
const useI18n: typeof import('@/hooks/web/useI18n')['useI18n']
|
||||
const useId: typeof import('vue')['useId']
|
||||
const useLink: typeof import('vue-router')['useLink']
|
||||
const useMessage: typeof import('@/hooks/web/useMessage')['useMessage']
|
||||
const useModel: typeof import('vue')['useModel']
|
||||
const useRoute: typeof import('vue-router')['useRoute']
|
||||
const useRouter: typeof import('vue-router')['useRouter']
|
||||
const useSlots: typeof import('vue')['useSlots']
|
||||
const useTable: typeof import('@/hooks/web/useTable')['useTable']
|
||||
const useTemplateRef: typeof import('vue')['useTemplateRef']
|
||||
const watch: typeof import('vue')['watch']
|
||||
const watchEffect: typeof import('vue')['watchEffect']
|
||||
const watchPostEffect: typeof import('vue')['watchPostEffect']
|
||||
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
|
||||
}
|
||||
// for type re-export
|
||||
declare global {
|
||||
// @ts-ignore
|
||||
export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
|
||||
import('vue')
|
||||
}
|
||||
@ -23,9 +23,9 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="单据日期" prop="ordDate">
|
||||
<el-form-item label="单据日期" prop="deliveryDate">
|
||||
<el-date-picker
|
||||
v-model="formData.ordDate"
|
||||
v-model="formData.deliveryDate"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
format="YYYY-MM-DD"
|
||||
@ -85,10 +85,10 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="发货数量" prop="deliveriedQty">
|
||||
<MoneyInput
|
||||
v-model="formData.deliveriedQty"
|
||||
:decimal-places="0"
|
||||
:allow-negative="false"
|
||||
<MoneyInput
|
||||
v-model="formData.deliveriedQty"
|
||||
:decimal-places="0"
|
||||
:allow-negative="false"
|
||||
:show-prefix="false"
|
||||
/>
|
||||
</el-form-item>
|
||||
@ -254,7 +254,6 @@ const formData = reactive({
|
||||
deliveryDate: getToday(),
|
||||
deliveryStatus: '1',
|
||||
deliveryType: undefined,
|
||||
ordDate: undefined,
|
||||
custId: undefined,
|
||||
custName: undefined,
|
||||
contact: undefined,
|
||||
@ -291,7 +290,7 @@ const totalQty = computed(() => {
|
||||
const getSummary = (param: any) => {
|
||||
const { columns, data } = param
|
||||
const sums: any[] = []
|
||||
|
||||
|
||||
// 确保数据数组有效
|
||||
if (!Array.isArray(data) || data.length === 0) {
|
||||
columns.forEach((column: any, index: number) => {
|
||||
@ -299,13 +298,13 @@ const getSummary = (param: any) => {
|
||||
})
|
||||
return sums
|
||||
}
|
||||
|
||||
|
||||
// 计算发货袋数合计
|
||||
const totalDeliveriedBag = data.reduce((sum: number, item: any) => sum + (parseInt(item.deliveriedBag) || 0), 0)
|
||||
|
||||
|
||||
// 计算发货数量合计
|
||||
const totalDeliveriedQty = data.reduce((sum: number, item: any) => sum + (parseInt(item.deliveriedQty) || 0), 0)
|
||||
|
||||
|
||||
// 使用列索引来匹配(更可靠)
|
||||
// 列顺序:0-序号, 1-仓库, 2-库区, 3-批次号, 4-库存数量, 5-库存袋数, 6-单袋规格, 7-发货袋数, 8-发货数量, 9-备注, 10-操作
|
||||
columns.forEach((column: any, index: number) => {
|
||||
@ -345,15 +344,15 @@ const formRules = reactive({
|
||||
deliveryStatus: [{ required: true, message: '单据状态不能为空', trigger: 'change' }],
|
||||
deliveriedQty: [
|
||||
{ required: true, message: '发货数量不能为空', trigger: 'change' },
|
||||
{
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (value && formData.remaimQty !== undefined && Number(value) > Number(formData.remaimQty)) {
|
||||
callback(new Error(`发货数量不能大于剩余数量(${formData.remaimQty})`))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
trigger: ['change', 'blur']
|
||||
},
|
||||
trigger: ['change', 'blur']
|
||||
}
|
||||
],
|
||||
custName: [{ required: true, message: '客户名称不能为空', trigger: 'change' }],
|
||||
@ -374,22 +373,28 @@ const open = async (type: string, id?: number) => {
|
||||
formType.value = type
|
||||
resetForm()
|
||||
|
||||
// 加载销售订单选项
|
||||
await loadSaleOrderOptions()
|
||||
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
formLoading.value = true
|
||||
try {
|
||||
const data = await SaleDeliveryApi.getSaleDelivery(id)
|
||||
Object.assign(formData, data)
|
||||
// 加载产品列表
|
||||
if (data.items) {
|
||||
// 加载产品列表 - 支持多种字段名
|
||||
if (data.items && data.items.length > 0) {
|
||||
productList.value = data.items
|
||||
} else if (data.detailList && data.detailList.length > 0) {
|
||||
productList.value = data.detailList
|
||||
} else if (data.products && data.products.length > 0) {
|
||||
productList.value = data.products
|
||||
} else {
|
||||
productList.value = []
|
||||
}
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
} else {
|
||||
// 新增时才加载销售订单选项
|
||||
await loadSaleOrderOptions()
|
||||
}
|
||||
}
|
||||
defineExpose({ open })
|
||||
@ -456,18 +461,18 @@ const handleOrderSelect = async (data: any) => {
|
||||
formData.remaimQty = data.remaimQty
|
||||
formData.deliveriedQty = data.remaimQty
|
||||
formData.unit = data.unit
|
||||
|
||||
|
||||
// 将订单日期带入到单据日期
|
||||
if (data.ordDate) {
|
||||
// 确保日期格式为 YYYY-MM-DD 字符串类型
|
||||
const ordDateStr = String(data.ordDate).trim()
|
||||
if (/^\d{4}-\d{2}-\d{2}$/.test(ordDateStr)) {
|
||||
formData.ordDate = ordDateStr
|
||||
formData.deliveryDate = ordDateStr
|
||||
} else {
|
||||
try {
|
||||
const date = new Date(data.ordDate)
|
||||
if (!isNaN(date.getTime())) {
|
||||
formData.ordDate = date.toISOString().split('T')[0]
|
||||
formData.deliveryDate = date.toISOString().split('T')[0]
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('日期转换失败:', e)
|
||||
@ -475,7 +480,7 @@ const handleOrderSelect = async (data: any) => {
|
||||
}
|
||||
} else {
|
||||
// 如果没有订单日期,清空单据日期
|
||||
formData.ordDate = null
|
||||
formData.deliveryDate = null
|
||||
}
|
||||
console.log('formData after set:', formData)
|
||||
|
||||
@ -493,8 +498,8 @@ const handleOrderSelect = async (data: any) => {
|
||||
})
|
||||
}
|
||||
|
||||
// 如果有客户ID,查询客户联系人信息
|
||||
if (data.custId) {
|
||||
// 只有在新增模式下才查询客户联系人信息(编辑模式下已有数据)
|
||||
if (data.custId && formType.value === 'create') {
|
||||
await loadCustomerContact(data.custId)
|
||||
}
|
||||
}
|
||||
@ -520,10 +525,10 @@ const addProductItem = () => {
|
||||
const selectedIds = productList.value
|
||||
.filter(item => item.inventoryId)
|
||||
.map(item => item.inventoryId)
|
||||
|
||||
|
||||
// 设置已选择的ID,以便弹窗打开时自动选中
|
||||
inventorySelectRef.value.setSelectedIds(selectedIds)
|
||||
|
||||
|
||||
// 打开弹窗
|
||||
inventorySelectRef.value.open()
|
||||
}
|
||||
@ -532,11 +537,11 @@ const addProductItem = () => {
|
||||
const handleInventorySelect = (data: any[]) => {
|
||||
// data 是选中的库存记录数组
|
||||
if (!data || data.length === 0) return
|
||||
|
||||
|
||||
// 遍历选中的库存记录,根据 id 判断是否已存在
|
||||
data.forEach(inventory => {
|
||||
const exists = productList.value.find(item => item.inventoryId === inventory.id)
|
||||
|
||||
|
||||
if (!exists) {
|
||||
// 不存在则新增
|
||||
productList.value.push({
|
||||
@ -572,7 +577,7 @@ const emit = defineEmits(['success', 'close'])
|
||||
const validateDeliveryQty = () => {
|
||||
const remaimQty = parseInt(formData.remaimQty) || 0
|
||||
const totalDeliveriedQty = totalQty.value
|
||||
|
||||
|
||||
if (totalDeliveriedQty > remaimQty) {
|
||||
message.warning(`发货总数量(${totalDeliveriedQty})不能超过剩余数量(${remaimQty})`)
|
||||
return false
|
||||
@ -585,7 +590,7 @@ const submitForm = async () => {
|
||||
if (!validateDeliveryQty()) {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
// 校验表单
|
||||
await formRef.value.validate()
|
||||
|
||||
@ -608,7 +613,7 @@ const submitForm = async () => {
|
||||
deliveriedQty: item.deliveriedQty,
|
||||
remark: item.remark,
|
||||
}))
|
||||
|
||||
|
||||
const data = {
|
||||
...formData,
|
||||
detailList,
|
||||
@ -634,7 +639,7 @@ const submitAudit = async () => {
|
||||
if (!validateDeliveryQty()) {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
// 校验表单
|
||||
await formRef.value.validate()
|
||||
|
||||
@ -657,7 +662,7 @@ const submitAudit = async () => {
|
||||
deliveriedQty: item.deliveriedQty,
|
||||
remark: item.remark,
|
||||
}))
|
||||
|
||||
|
||||
const data = {
|
||||
...formData,
|
||||
deliveryStatus: '2', // 已确认
|
||||
@ -704,7 +709,6 @@ const resetForm = () => {
|
||||
ordQty: undefined,
|
||||
remaimQty: undefined,
|
||||
deliveriedQty: undefined,
|
||||
ordDate: null,
|
||||
})
|
||||
|
||||
productList.value = []
|
||||
|
||||
@ -143,15 +143,15 @@
|
||||
</div>
|
||||
|
||||
<!-- 明细表格 -->
|
||||
<div style="flex: 1; min-height: 0;">
|
||||
<div style="flex: 1; min-height: 0;" >
|
||||
<div style="font-weight: bold; margin-bottom: 8px;">出库单明细</div>
|
||||
<el-table v-loading="detailLoading" :data="detailList" :stripe="true" :show-overflow-tooltip="true" border :summary-method="getDetailSummary" show-summary>
|
||||
<el-table v-loading="detailLoading" :data="detailList" :stripe="true" :show-overflow-tooltip="true" border :summary-method="getDetailSummary" show-summary style="width: 50%">
|
||||
<el-table-column label="序号" align="center" type="index" width="60px"/>
|
||||
<el-table-column label="库区" align="center" prop="warehouseArea" width="100px" />
|
||||
<el-table-column label="库位" align="center" prop="warehouseLoc" width="100px" />
|
||||
<el-table-column label="库区" align="center" prop="warehouseArea" width="120px" />
|
||||
<el-table-column label="库位" align="center" prop="warehouseLoc" width="120px" />
|
||||
<el-table-column label="批次号" align="center" prop="batchNo" width="120px" />
|
||||
<el-table-column label="发货数量" align="center" prop="deliveriedQty" width="100px" />
|
||||
<el-table-column label="发货袋数" align="center" prop="deliveriedBag" width="100px" />
|
||||
<el-table-column label="发货数量" align="center" prop="deliveriedQty" width="120px" />
|
||||
<el-table-column label="发货袋数" align="center" prop="deliveriedBag" width="120px" />
|
||||
<el-table-column label="单据规格" align="center" prop="spec" width="120px" />
|
||||
<el-table-column label="单位" align="center" prop="unit" width="80px" />
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
@ -161,7 +161,7 @@
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 表单弹窗:添加/修改 -->
|
||||
<SaleDeliveryForm ref="formRef" @success="getList" @close="handleQuery"/>
|
||||
<SaleDeliveryForm ref="formRef" @success="getList"/>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
||||
Loading…
Reference in New Issue
Block a user