| | |
| | | import OrderOtherMoney from "@/components/sd/order/OrderOtherMoney.vue"; |
| | | import footSum from "@/hook/footSum"; |
| | | import {changeFilterEvent,filterChanged} from "@/hook" |
| | | import companyInfo from "@/stores/sd/companyInfo"; |
| | | import {multiply} from "@/utils/decimal"; |
| | | |
| | | //语言获取 |
| | | const { t } = useI18n() |
| | |
| | | const userStore = useUserInfoStore() |
| | | const username = userStore.user.userName |
| | | const userid = userStore.user.userId |
| | | const company = companyInfo() |
| | | let produceList = ref([]) |
| | | let cellArea = ref() |
| | | let otherMoneyVisible = ref(false) |
| | |
| | | |
| | | // 定义表头上传数据 |
| | | let titleUploadData = ref({ |
| | | deliveryId:'', |
| | | deliveryState:'', |
| | | stockState:'', |
| | | paymentTerms:'', |
| | |
| | | deliveryDate:'', |
| | | salesmanId:'', |
| | | salesman:'', |
| | | freight:'', |
| | | freightPrice:'', |
| | | freightQuantity:'', |
| | | creatorId:userStore.user.userid, |
| | | creator:userStore.user.userName |
| | | }) |
| | |
| | | remarks:'', |
| | | createTime:'', |
| | | deliveryDate:'', |
| | | creator:'' |
| | | creator:'', |
| | | freight:'', |
| | | freightPrice:'', |
| | | freightQuantity:'', |
| | | }, |
| | | finishedGoodsInventory:{ |
| | | quantityAvailable:'', |
| | |
| | | }, |
| | | |
| | | }) |
| | | const initOrder = async ()=> { |
| | | //页面第一次加载 |
| | | request.get(`/basicData/BasicDataByType/delivery`).then((res) => { |
| | | await request.get(`/basicData/BasicDataByType/delivery`).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | titleSelectJson.value=deepClone(res.data) |
| | | //其他金额 |
| | | otherMoney.value = titleSelectJson.value.deliveryOtherMoney[0] |
| | | //let columns = [] |
| | | otherMoney.value.forEach(item => { |
| | | let column = {field: `otherColumns.${item.column}`,width:50, title: item.alias,editRender: { name: 'input'}} |
| | | //columns.push(column) |
| | | gridOptions.columns.push(column) |
| | | }) |
| | | const today = new Date |
| | | today.setTime(today.getTime() + (15 * 24 * 60 * 60 * 1000)) |
| | | titleUploadData.value.deliveryDate = today.getFullYear() + |
| | | '-' + ("0" + (today.getMonth() + 1)).slice(-2) |
| | | + '-' + ("0" + today.getDate()).slice(-2) |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | if (res.code == 200) { |
| | | titleSelectJson.value = deepClone(res.data) |
| | | //其他金额 |
| | | otherMoney.value = titleSelectJson.value.deliveryOtherMoney[0] |
| | | //let columns = [] |
| | | otherMoney.value.forEach(item => { |
| | | let column = {field: `otherColumns.${item.column}`, width: 50, title: item.alias, editRender: {name: 'input'}} |
| | | //columns.push(column) |
| | | gridOptions.columns.push(column) |
| | | }) |
| | | const today = new Date |
| | | today.setTime(today.getTime() + (15 * 24 * 60 * 60 * 1000)) |
| | | titleUploadData.value.deliveryDate = today.getFullYear() + |
| | | '-' + ("0" + (today.getMonth() + 1)).slice(-2) |
| | | + '-' + ("0" + today.getDate()).slice(-2) |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | |
| | | } |
| | | |
| | | const xGrid = ref(); |
| | | const number = ref(); |
| | | |
| | | onMounted(()=>{ |
| | | onMounted( async()=>{ |
| | | await initOrder() |
| | | //启用表格拖动选中 |
| | | addListener(xGrid.value,gridOptions,cellArea.value) |
| | | //发货新增 |
| | |
| | | titleUploadData.value=deepClone(res.data.title) |
| | | titleUploadData.value.paymentTerms = titleSelectJson.value.paymentTerms[0].basicName |
| | | titleUploadData.value.payMethod = titleSelectJson.value.payMethod[0].basicName |
| | | titleUploadData.value.deliveryId="" |
| | | const today = new Date |
| | | today.setTime(today.getTime() + (15 * 24 * 60 * 60 * 1000)) |
| | | today.setTime(today.getTime() ) |
| | | titleUploadData.value.deliveryDate=today.getFullYear() + |
| | | '-' + ("0" + (today.getMonth() + 1)).slice(-2) |
| | | + '-' + ("0" + today.getDate()).slice(-2) |
| | |
| | | if(res.code==200){ |
| | | pageTotal.value=res.data.total |
| | | titleUploadData.value=deepClone(res.data.delivery) |
| | | |
| | | titleUploadData.value.deliveryId=str |
| | | |
| | | //根据审核状态显示审核按钮或者是反审按钮 |
| | | |
| | |
| | | item.otherColumns = JSON.parse(item.otherColumns) |
| | | }) |
| | | otherMoney.value =res.data.orderOtherMoneyList |
| | | |
| | | titleUploadData.value.creator=userStore.user.userName |
| | | titleUploadData.value.creatorId=userStore.user.userId |
| | | |
| | | xGrid.value.reloadData(orderDetails) |
| | | xGrid.value.loadData(produceList) |
| | |
| | | options: [ |
| | | [ |
| | | { code: 'copyChecked', name: t('basicData.selectSame'), prefixIcon: 'vxe-icon-copy', visible: true, disabled: false }, |
| | | { code: 'otherMoney', name: t('basicData.otherAmounts'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false } |
| | | //{ code: 'otherMoney', name: t('basicData.otherAmounts'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false } |
| | | ] |
| | | ] |
| | | } |
| | |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | checkboxConfig:{checkAll:true}, |
| | | mouseConfig:{selected: true},//鼠标选中 |
| | | keyboardConfig:{isArrow: true, isDel: true, isEnter: true, isTab: true, isEdit: true, isChecked: true}, |
| | | editConfig: { |
| | |
| | | {field: 'select',type:'checkbox',title: t('basicData.check'), width: 80,fixed:"left"}, |
| | | {type: 'seq', title: t('basicData.Number'), width: 80 ,fixed:"left"}, |
| | | {field: 'orderId',width:120, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'order.batch',width:120, title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'productName',width:120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'width',width:120, title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'height',width:120, title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'deliveryDetail.quantity',width:120, title: t('delivery.deliveryQuantity'),editRender: { name: 'input' },filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'finishedGoodsInventory.quantityAvailable',width:120, title: t('delivery.availableStock'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'order.quantity',width:120, title: t('delivery.unpaidQuantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'quantity',width:120, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'deliveryDetail.quantity',width:120, title: t('delivery.deliveryQuantity'),editRender: { name: 'input' },filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | //{field: 'buildingNumber',width:120, title: '楼号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'productId',width:120, title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'productName',width:120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'price',width:120, title: t('order.price'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'price',width:120, title: t('order.price'),editRender: { name: 'input' },filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'finishedGoodsInventory.storageRegion',width:120, title: t('productStock.inventoryArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'deliveryDetail.money',width:120, title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'width',width:120, title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'height',width:120, title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'order.batch',width:120, title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'shape',width:120, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'finishedGoodsInventory.actualSignalArea',width:120, title: t('productStock.singlePieceArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'grossArea',width:120, title: t('productStock.totalArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | |
| | | ElMessage.error(t('delivery.pleaseEnterThePaymentMethod')) |
| | | return |
| | | } |
| | | |
| | | |
| | | const freightPrice = titleUploadData.value.freightPrice |
| | | if(freightPrice=== null || freightPrice === undefined || freightPrice === ''){ |
| | | titleUploadData.value.freightPrice=0 |
| | | } |
| | | const freightQuantity = titleUploadData.value.freightQuantity |
| | | if(freightQuantity=== null || freightQuantity === undefined || freightQuantity === ''){ |
| | | titleUploadData.value.freightQuantity=0 |
| | | } |
| | | |
| | | |
| | | let flowData = ref({ |
| | | delivery: selectRecords, |
| | | title: titleUploadData.value, |
| | | deliveryId: route.query.deliveryID, |
| | | otherMoney:otherMoney.value |
| | | otherMoney:otherMoney.value, |
| | | deliveryIdType:company.deliveryIdType |
| | | |
| | | }) |
| | | request.post("/Delivery/insertDelivery", flowData.value).then((res) => { |
| | | if(res.code==200 && res.data===true){ |
| | | if(res.code==200 && res.data==="true"){ |
| | | ElMessage.success(t('delivery.deliveryNoteSubmittedSuccessfully')) |
| | | router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}}) |
| | | //router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}}) |
| | | if(titleUploadData.value.deliveryId.trim()===""){ |
| | | router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}}) |
| | | }else{ |
| | | router.push({path:'/main/delivery/createDelivery',query:{ |
| | | deliveryID:titleUploadData.value.deliveryId, |
| | | random:Math.random()}}) |
| | | } |
| | | }else if(res.data==="false1"){ |
| | | ElMessage.warning(t('delivery.pleaseMsg1')) |
| | | }else if(res.data==="false2"){ |
| | | ElMessage.warning("订单存在已发货请刷新界面") |
| | | }else if(res.data==="false3"){ |
| | | ElMessage.warning("数据不存在") |
| | | }else{ |
| | | ElMessage.warning(t('basicData.msg.saveFail')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | |
| | | request.post("/Delivery/updateDeliveryToExamine", flowData.value).then((res) => { |
| | | if (res.code == 200 && res.data===true) { |
| | | ElMessage.success(t('basicData.msg.ReviewSuccess')) |
| | | router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}}) |
| | | //router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}}) |
| | | router.push({path:'/main/delivery/createDelivery',query:{ |
| | | deliveryID:titleUploadData.value.deliveryId, |
| | | random:Math.random()}}) |
| | | } else { |
| | | ElMessage.warning(t('basicData.msg.reviewFail')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | |
| | | request.post("/Delivery/updateDeliveryToExamine", flowData.value).then((res) => { |
| | | if (res.code == 200 && res.data===true) { |
| | | ElMessage.success(t('basicData.msg.cancelReviewSuccess')) |
| | | router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}}) |
| | | //router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}}) |
| | | router.push({path:'/main/delivery/createDelivery',query:{ |
| | | deliveryID:titleUploadData.value.deliveryId, |
| | | random:Math.random()}}) |
| | | } else { |
| | | ElMessage.warning(t('basicData.msg.reviewFail')) |
| | | router.push("/login") |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | |
| | | } |
| | | dataList.forEach((item,index) =>{ |
| | | if(index>=result.start && index<=result.end){ |
| | | //取消选中 |
| | | if(parseInt(firstVal)<=0){ |
| | | xGrid.value.setCheckboxRow(item, false); |
| | | } |
| | | if(result.cell.indexOf('.')>-1){ |
| | | const columnArr = result.cell.split('.') |
| | | item[columnArr[0]][columnArr[1]] = firstVal |
| | |
| | | return new Error(t('delivery.theShipmentQuantityCannotBeGreaterThanTheInventoryQuantity')) |
| | | }else if (e.row.deliveryDetail.quantity ==="") { |
| | | return new Error(t('delivery.theShipmentQuantityCannotBeEmptyOr0')) |
| | | } |
| | | } |
| | | const regex = /^[1-9]\d*$/g |
| | | if ( !regex.test(e.row.deliveryDetail.quantity) ) { |
| | | return new Error(t('productStock.pleaseEnterAPositiveInteger')) |
| | |
| | | ], |
| | | |
| | | }) |
| | | |
| | | const editClosedEvent = ({ row, column }) => { |
| | | |
| | | if (['deliveryDetail.quantity'].includes(column.property)) { |
| | | if(parseInt(row.deliveryDetail.quantity)===0){ |
| | | xGrid.value.setCheckboxRow(row, false); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | </script> |
| | |
| | | <el-col :span="3"><el-input v-model="titleUploadData.salesman" :readonly="true"/></el-col> |
| | | <el-col :span="2"><el-text>{{$t('delivery.shipper')}}:</el-text></el-col> |
| | | <el-col :span="5"><el-input v-model="titleUploadData.creator" :readonly="true"/></el-col> |
| | | <el-col :span="1"><el-text>{{$t('delivery.freightPrice')}}:</el-text></el-col> |
| | | <el-col :span="1"><el-input v-model="titleUploadData.freightPrice" /></el-col> |
| | | <el-col :span="1"><el-text>{{$t('delivery.freightQuantity')}}:</el-text></el-col> |
| | | <el-col :span="1"><el-input v-model="titleUploadData.freightQuantity" /></el-col> |
| | | <el-col :span="1"><el-text>{{$t('delivery.freight')}}:</el-text></el-col> |
| | | <el-col :span="2"><el-input v-model="titleUploadData.freight" :readonly="true"/></el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="order-detail"> |
| | |
| | | v-bind="gridOptions" |
| | | v-on="gridEvents" |
| | | :edit-rules="validRules" |
| | | @edit-closed="editClosedEvent" |
| | | |
| | | > |
| | | <template #num1_filter="{ column, $panel }"> |