| | |
| | | import useUserInfoStore from "@/stores/userInfo"; |
| | | import {ElMessage} from "element-plus"; |
| | | import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove"; |
| | | import { useI18n } from 'vue-i18n' |
| | | |
| | | //语言获取 |
| | | const { t } = useI18n() |
| | | const router = useRouter() |
| | | const route = useRoute() |
| | | const userStore = useUserInfoStore() |
| | |
| | | columns:[ |
| | | |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 60}, |
| | | {field: 'select',type:'checkbox',title: '选择', width: 80,fixed:"left"}, |
| | | {type: 'seq', title: '自序', width: 80 ,fixed:"left"}, |
| | | {field: 'orderId',width:120, title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'order.batch',width:120, title: '批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'finishedGoodsInventory.quantityAvailable',width:120, title: '库存可发',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'order.quantity',width:120, title: '未发数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'quantity',width:120, title: '总数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'deliveryDetail.quantity',width:120, title: '发货数量',editRender: { name: 'input', attrs: { placeholder: '' } },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: '产品编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'productName',width:120, title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'price',width:120, title: '单价',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'finishedGoodsInventory.storageRegion',width:120, title: '库区',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'deliveryDetail.money',width:120, title: '金额',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'width',width:120, title: '宽',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'height',width:120, title: '高',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'shape',width:120, title: '形状',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'finishedGoodsInventory.actualSignalArea',width:120, title: '单片面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'grossArea',width:120, title: '总面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'computeArea',width:120, title: '结算单片面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'computeGrossArea',width:120, title: '结算总面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'processingNote',width:120, title: '加工要求',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'deliveryDetail.deliveryDetailRemakes',width:120, title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'edgingType',width:120, title: '磨边类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'perimeter',width:120, title: '周长',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {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: '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', attrs: { placeholder: '' } },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: '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: '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}, |
| | | {field: 'computeArea',width:120, title: t('order.computeArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'computeGrossArea',width:120, title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'processingNote',width:120, title: t('order.processingNote'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'deliveryDetail.deliveryDetailRemakes',width:120, title: t('productStock.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'edgingType',width:120, title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | {field: 'perimeter',width:120, title: t('productStock.perimeter'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}, |
| | | |
| | | |
| | | ],//表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {'code': 'add', 'name': '保存',status: 'primary',icon: 'vxe-icon-save'}, |
| | | {'code': 'toExamine', 'name': '审核',status: 'primary'}, |
| | | {'code': 'CounterExamination', 'name': '反审',status: 'primary'} |
| | | {'code': 'add', 'name': t('basicData.save'),status: 'primary',icon: 'vxe-icon-save'}, |
| | | {'code': 'toExamine', 'name': t('basicData.review'),status: 'primary'}, |
| | | {'code': 'CounterExamination', 'name': t('basicData.cancelReview'),status: 'primary'} |
| | | ], |
| | | /*import: false, |
| | | export: true, |
| | |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return `页数:${pageNum}/${pageTotal.value}` |
| | | return t('basicData.total') |
| | | } |
| | | // if (props.tableProp.footList.includes(column.field)) { |
| | | // return sumNum(data, column.field) |
| | |
| | | const selectRecords = $grid.getCheckboxRecords() |
| | | |
| | | if (selectRecords.length === 0) { |
| | | ElMessage.warning("未选中数据") |
| | | ElMessage.warning(t('productStock.unselectedData')) |
| | | return |
| | | } |
| | | const errMap = await $grid.validate(selectRecords) |
| | | if (errMap) { |
| | | ElMessage.warning("数据校验失败") |
| | | ElMessage.warning(t('productStock.dataVerificationFailed')) |
| | | return |
| | | } |
| | | //表头数据校验 |
| | | const project = titleUploadData.value.project |
| | | if(project === null || project === undefined || project === ''){ |
| | | ElMessage.error('输入项目名称!') |
| | | ElMessage.error(t('delivery.pleaseEnterTheAmountOfFunds')) |
| | | return |
| | | } |
| | | const paymentTerms = titleUploadData.value.paymentTerms |
| | | if(paymentTerms === null || paymentTerms === undefined || paymentTerms === ''){ |
| | | ElMessage.error('请选择付款条件!') |
| | | ElMessage.error(t('delivery.pleaseSelectPaymentTerms')) |
| | | return |
| | | } |
| | | const payMethod = titleUploadData.value.payMethod |
| | | if(payMethod === null || payMethod === undefined || payMethod === ''){ |
| | | ElMessage.error('请输入收款方式!') |
| | | ElMessage.error(t('delivery.pleaseEnterThePaymentMethod')) |
| | | return |
| | | } |
| | | |
| | |
| | | console.log(flowData) |
| | | request.post("/Delivery/insertDelivery", flowData.value).then((res) => { |
| | | if(res.code==200){ |
| | | ElMessage.success("发货单提交成功") |
| | | ElMessage.success(t('delivery.deliveryNoteSubmittedSuccessfully')) |
| | | router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}}) |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | |
| | | }) |
| | | request.post("/Delivery/updateDeliveryToExamine", flowData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success("审核成功") |
| | | ElMessage.success(t('basicData.msg.ReviewSuccess')) |
| | | router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}}) |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | |
| | | }) |
| | | request.post("/Delivery/updateDeliveryToExamine", flowData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success("反审成功") |
| | | ElMessage.success(t('basicData.msg.cancelReviewSuccess')) |
| | | router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}}) |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | |
| | | /*数据校验*/ |
| | | const validRules = ref({ |
| | | quantity: [ |
| | | { type: 'number', min: 0, message: '请输入大于等于0的数值' } |
| | | { type: 'number', min: 0, message: t('delivery.pleaseEnterANumericalValueGreaterThanOrEqualTo0') } |
| | | ], |
| | | |
| | | "deliveryDetail.quantity": [{ |
| | | validator (e) { |
| | | if (e.row.deliveryDetail.quantity > e.row.finishedGoodsInventory.quantityAvailable) { |
| | | return new Error('发货数量不能大于库存数') |
| | | return new Error(t('delivery.theShipmentQuantityCannotBeGreaterThanTheInventoryQuantity')) |
| | | }else if (e.row.deliveryDetail.quantity ==="") { |
| | | return new Error('发货数量不能为空或者是0') |
| | | return new Error(t('delivery.theShipmentQuantityCannotBeEmptyOr0')) |
| | | } |
| | | const regex = /^[1-9]\d*$/g |
| | | if ( !regex.test(e.row.deliveryDetail.quantity) ) { |
| | | return new Error('请输入正整数') |
| | | return new Error(t('productStock.pleaseEnterAPositiveInteger')) |
| | | } |
| | | |
| | | } |
| | |
| | | <div class="main-div"> |
| | | <div class="order-primary" style="background-color: white"> |
| | | <el-row> |
| | | <el-col :span="2"><el-text>客户编码:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('customer.customerNumber')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input style="font-size: large;color: #181818" v-model="titleUploadData.customerId" :readonly="true" ></el-input></el-col> |
| | | <el-col :span="2"><el-text>客户名称:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('customer.customerName')}}:</el-text></el-col> |
| | | <el-col :span="5"><el-input v-model="titleUploadData.customerName" :readonly="true"></el-input></el-col> |
| | | <el-col :span="2"><el-text>项目名称:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('customer.customerNumber')}}:</el-text></el-col> |
| | | <el-col :span="5"><el-input v-model="titleUploadData.project" :readonly="true"></el-input></el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"><el-text>付款条件:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('order.project')}}:</el-text></el-col> |
| | | <el-col :span="3"> |
| | | <el-select v-model="titleUploadData.paymentTerms" clearable placeholder="" > |
| | | <el-option |
| | |
| | | /> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="2"><el-text>联系人:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('customer.contacts')}}:</el-text></el-col> |
| | | <el-col :span="5"><el-input v-model="titleUploadData.contacts"/></el-col> |
| | | <el-col :span="2"><el-text>收款日期:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('delivery.paymentDate')}}:</el-text></el-col> |
| | | <el-col :span="5"> |
| | | <el-date-picker |
| | | v-model="titleUploadData.payDate" |
| | | type="date" |
| | | placeholder="选择日期"/> |
| | | :placeholder="$t('delivery.selectDate')"/> |
| | | </el-col> |
| | | |
| | | </el-row> |
| | | <el-row> |
| | | |
| | | <el-col :span="2"><el-text>收款方式:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('delivery.paymentMethod')}}:</el-text></el-col> |
| | | <el-col :span="3"> |
| | | <el-select v-model="titleUploadData.payMethod" clearable placeholder="" > |
| | | <el-option |
| | |
| | | /> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="2"><el-text>联系电话:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('customer.telephone')}}:</el-text></el-col> |
| | | <el-col :span="5"><el-input v-model="titleUploadData.contactNumber"/></el-col> |
| | | <el-col :span="2"><el-text>送货地址:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('customer.address')}}:</el-text></el-col> |
| | | <el-col :span="5"><el-input v-model="titleUploadData.deliveryAddress"/></el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"><el-text>备注:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('basicData.remarks')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.remarks"/></el-col> |
| | | <el-col :span="2"><el-text>报表日期:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('delivery.deliveryReportDate')}}:</el-text></el-col> |
| | | <el-col :span="5"><el-input v-model="titleUploadData.createTime" :readonly="true"></el-input></el-col> |
| | | <el-col :span="2"><el-text>发货报表日期:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('delivery.deliveryDate')}}:</el-text></el-col> |
| | | <el-col :span="5"> |
| | | <el-date-picker |
| | | v-model="titleUploadData.deliveryDate" |
| | | type="date" |
| | | placeholder="选择日期"/> |
| | | :placeholder="$t('delivery.selectDate')"/> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"><el-text>业务员:</el-text></el-col> |
| | | <el-col :span="2"><el-text>{{$t('order.salesman')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.salesman" :readonly="true"/></el-col> |
| | | <el-col :span="2"><el-text>发货员:</el-text></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-row> |
| | | </div> |
| | |
| | | width: 100%; |
| | | height: 70%; |
| | | } |
| | | .vxe-grid { |
| | | /* 禁用浏览器默认选中 */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | </style> |