| | |
| | | <script setup> |
| | | import {Search} from "@element-plus/icons-vue" |
| | | import {useRouter} from "vue-router" |
| | | import {reactive, ref} from "vue"; |
| | | import {onMounted, reactive, ref} from "vue"; |
| | | import request from "@/utils/request" |
| | | import deepClone from "@/utils/deepClone" |
| | | import VXETable from "vxe-table"; |
| | |
| | | const userid = userStore.user.userId |
| | | let produceList = ref([]) |
| | | |
| | | |
| | | const props = defineProps({ |
| | | customerId: null, |
| | | project: null, |
| | | excludeOrderIds: null |
| | | }) |
| | | |
| | | const emit = defineEmits(['selectOrders']) |
| | | |
| | | const getTableRow = (row,type) =>{ |
| | | switch (type) { |
| | | case 'edit' :{ |
| | |
| | | break |
| | | } |
| | | case 'delete':{ |
| | | alert('我接收到子组件传送的删除信息') |
| | | break |
| | | } |
| | | } |
| | |
| | | //筛选条件,有外键需要先定义明细里面的数据 |
| | | let filterData = ref({ |
| | | |
| | | finishedGoodsInventory:{ |
| | | quantityAvailable:'', |
| | | |
| | | }, |
| | | |
| | | }) |
| | | let selectDate = ref(["",""]) |
| | | |
| | |
| | | }) |
| | | |
| | | |
| | | //第一次调用 |
| | | request.post(`/delivery/getSelectOrderInventory/1/${total.pageSize}/${orderInfo.selectOrderListDate}`,filterData.value).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | total.dataTotal = res.data.total.total*1 |
| | | total.pageTotal= res.data.total.pageTotal |
| | | orderInfo.selectOrderListDate = res.data.selectDate |
| | | pageNum.value=1 |
| | | produceList = deepClone(res.data.data) |
| | | xGrid.value.loadData(produceList) |
| | | gridOptions.loading=false |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | // 第一次调用,修改为带筛选条件 |
| | | const fetchOrders = async () => { |
| | | |
| | | await request.post(`/delivery/getSelectOrderInventory/${pageNum.value}/${total.pageSize}/${orderInfo.selectOrderListDate}`, filterData.value).then((res) => { |
| | | if(res.code==200){ |
| | | total.dataTotal = res.data.total.total*1 |
| | | total.pageTotal= res.data.total.pageTotal |
| | | orderInfo.selectOrderListDate = res.data.selectDate |
| | | produceList = deepClone(res.data.data) |
| | | xGrid.value.loadData(produceList) |
| | | gridOptions.loading=false |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | onMounted(async () => { |
| | | if (props.customerId !== undefined) { |
| | | filterData.value.customerId = props.customerId |
| | | filterData.value.project = props.project |
| | | filterData.value.excludeOrderIds = props.excludeOrderIds |
| | | gridOptions.toolbarConfig.buttons[0].visible = false |
| | | |
| | | await fetchOrders() |
| | | } else { |
| | | gridOptions.toolbarConfig.buttons[1].visible = false |
| | | filterData.value = orderInfo.searchOrderFilter.data |
| | | await fetchOrders() |
| | | orderInfo.searchOrderFilter.list.forEach(item => { |
| | | xGrid.value.getColumnByField(item.field).filters = item.column.filters |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | |
| | | }) |
| | | |
| | | const changeFilterEvent = (event, option, $panel,) => { |
| | | // 手动触发筛选 |
| | |
| | | }else{ |
| | | filterData.value[column.property] = value |
| | | } |
| | | |
| | | if(props.customerId!==undefined){ |
| | | filterData.value.customerId = props.customerId |
| | | filterData.value.project = props.project |
| | | filterData.value.excludeOrderIds = props.excludeOrderIds |
| | | gridOptions.toolbarConfig.buttons[0].visible = false |
| | | }else{ |
| | | gridOptions.toolbarConfig.buttons[1].visible = false |
| | | } |
| | | |
| | | request.post(`/delivery/getSelectOrderInventory/1/${total.pageSize}/${orderInfo.selectOrderListDate}`,filterData.value).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | |
| | | pageNum.value=1 |
| | | produceList = deepClone(res.data.data) |
| | | xGrid.value.loadData(produceList) |
| | | |
| | | //不是弹窗界面 |
| | | if(props.customerId===undefined){ |
| | | orderInfo.searchOrderFilter.list = xGrid.value.getCheckedFilters() |
| | | orderInfo.searchOrderFilter.data = filterData.value |
| | | } |
| | | |
| | | gridOptions.loading=false |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | |
| | | |
| | | const changeDate = ()=>{ |
| | | pageNum.value=1 |
| | | selectOrderList() |
| | | fetchOrders() |
| | | } |
| | | |
| | | //页脚跳转 |
| | |
| | | total.pageTotal = pageSize |
| | | pageNum.value=currentPage |
| | | |
| | | selectOrderList() |
| | | fetchOrders() |
| | | } |
| | | |
| | | |
| | |
| | | {field: 'customerId',width:120, title: t('customer.customerNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'customerName',width:120, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'quantity',width:120, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'finishedGoodsInventory.quantityAvailable',width:120, title: t('delivery.availableStock'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'finishedGoodsInventory.quantityAvailable',width:120, title: t('delivery.availableStock'), sortable: true}, |
| | | {field: 'project',width:120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'batch',width:120, title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'money',width:120, title: t('order.money'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | |
| | | ],//表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {'code': 'add', 'name': t('delivery.delivery'),status: 'primary',icon: 'vxe-icon-add'} |
| | | {'code': 'add', 'name': t('delivery.delivery'),status: 'primary',icon: 'vxe-icon-add'}, |
| | | {'code': 'update', 'name': t('delivery.delivery'),status: 'primary',icon: 'vxe-icon-add'} |
| | | ], |
| | | /*import: false, |
| | | export: true, |
| | |
| | | router.push({path: '/main/delivery/createDelivery', query: { orderId: order_id }}) |
| | | break |
| | | } |
| | | case 'update': { |
| | | const selectRecords = $grid.getCheckboxRecords() |
| | | if (selectRecords.length === 0) { |
| | | ElMessage.warning(t('productStock.unselectedData')) |
| | | return |
| | | } |
| | | |
| | | // 验证所选订单是否符合条件(虽然已筛选,但二次验证更安全) |
| | | const customerIdArray = selectRecords.map(item => item.customerId) |
| | | const projectArray = selectRecords.map(item => item.project?.trim() || '') |
| | | |
| | | if(!isAllEqual(customerIdArray)){ |
| | | ElMessage.warning(t('delivery.pleaseSelectTheSameCustomerOrder')) |
| | | return |
| | | } |
| | | if(!isAllEqual(projectArray)){ |
| | | ElMessage.warning(t('delivery.pleaseSelectTheSameCustomerProject')) |
| | | return |
| | | } |
| | | |
| | | const simpleOrders = selectRecords.map(order => ({ |
| | | orderId: order.orderId, |
| | | customerId: order.customerId, |
| | | project: order.project, |
| | | // 可补充其他需要的主订单字段 |
| | | })); |
| | | |
| | | // 通过事件返回给父组件 |
| | | emit('select-orders', simpleOrders); |
| | | break |
| | | } |
| | | } |
| | | } |
| | | } |