|
|
@@ -0,0 +1,504 @@
|
|
|
+<template>
|
|
|
+ <div :loading="loading" style="margin-top: 10px;">
|
|
|
+ <el-form
|
|
|
+ ref="form"
|
|
|
+ :model="form"
|
|
|
+ :rules="rules"
|
|
|
+ class="el-form-box"
|
|
|
+ label-width="140px"
|
|
|
+ >
|
|
|
+ <headerTitle title="收货确认单信息"></headerTitle>
|
|
|
+ <el-row :gutter="12">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="收货确认单编码" prop="receiveConfirmNo">
|
|
|
+ <el-input
|
|
|
+ v-model="form.receiveConfirmNo"
|
|
|
+ :disabled="true"
|
|
|
+ placeholder=" "
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="收货单" prop="receiveCode">
|
|
|
+ <el-input
|
|
|
+ clearable
|
|
|
+ v-model="form.receiveCode"
|
|
|
+ :disabled="title == '详情'"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item prop="repliedFiles" label="回执附件">
|
|
|
+ <fileMain
|
|
|
+ v-model="form.repliedFiles"
|
|
|
+ :type="title == '详情' ? 'view' : 'add'"
|
|
|
+ ></fileMain>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <headerTitle title="收货信息"></headerTitle>
|
|
|
+
|
|
|
+ <el-row :gutter="12">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="收货单编码:" prop="receiveCode">
|
|
|
+ <el-input v-model="form.receiveCode" disabled></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item prop="orderNo" label="订单编码:">
|
|
|
+ <el-input v-model="form.orderNo" disabled></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <!-- <el-col :span="12">
|
|
|
+ <el-form-item prop="outsourceSendCode" label="委外发货单编码:">
|
|
|
+ <el-input v-model="form.outsourceSendCode" disabled></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col> -->
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="供应商名称:" prop="supplierName">
|
|
|
+ <el-input v-model="form.supplierName" disabled></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="供应商联系人:" prop="linkName">
|
|
|
+ <el-input v-model="form.linkName" disabled></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="供应商电话:" prop="linkPhone">
|
|
|
+ <el-input v-model="form.linkPhone" disabled></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="车牌号:" prop="carNo">
|
|
|
+ <el-input v-model="form.carNo" disabled></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item prop="receiveDate" label="收货日期:">
|
|
|
+ <el-input v-model="form.receiveDate" disabled></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="附件:" prop="receiveFiles">
|
|
|
+ <fileMain v-model="form.receiveFiles" type="view"></fileMain>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ <headerTitle title="物品清单"></headerTitle>
|
|
|
+ <ele-pro-table
|
|
|
+ ref="table"
|
|
|
+ :needPage="false"
|
|
|
+ :columns="columns"
|
|
|
+ :datasource="form.productList"
|
|
|
+ row-key="id"
|
|
|
+ max-height="500px"
|
|
|
+ :toolbar="false"
|
|
|
+ >
|
|
|
+ <template v-slot:technicalDrawings="{ row }">
|
|
|
+ <fileMain v-model="row.technicalDrawings" type="view"></fileMain>
|
|
|
+ </template>
|
|
|
+ <template v-slot:isException="scope">
|
|
|
+ <el-select
|
|
|
+ v-model="scope.row.isException"
|
|
|
+ :disabled="title == '详情'"
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in options"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-slot:totalCount="scope">
|
|
|
+ <el-input
|
|
|
+ :disabled="title == '详情'"
|
|
|
+ v-model="scope.row.confirmCount"
|
|
|
+ @input="totalCountChange(scope.row, scope.$index)"
|
|
|
+ type="number"
|
|
|
+ placeholder="请输入"
|
|
|
+ ></el-input>
|
|
|
+ </template>
|
|
|
+ <template v-slot:remark="scope">
|
|
|
+ <el-input
|
|
|
+ :disabled="title == '详情'"
|
|
|
+ v-model="scope.row.remark"
|
|
|
+ placeholder="请输入"
|
|
|
+ ></el-input>
|
|
|
+ </template>
|
|
|
+ </ele-pro-table>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import dictMixins from '@/mixins/dictMixins';
|
|
|
+ import { levelList } from '@/enum/dict.js';
|
|
|
+ import { getReceiveConfirmDetail } from '@/api/bpm/components/purchasingManage/invoiceConfirm';
|
|
|
+
|
|
|
+ let formDef = {
|
|
|
+ receiveCode: '',
|
|
|
+ repliedFiles: '',
|
|
|
+ supplierName: '',
|
|
|
+ linkName: '',
|
|
|
+ linkPhone: '',
|
|
|
+ carNo: '',
|
|
|
+ receiveDate: '',
|
|
|
+ receiveFiles: '',
|
|
|
+ receiveNo: '',
|
|
|
+ productList: []
|
|
|
+ };
|
|
|
+ export default {
|
|
|
+ mixins: [dictMixins],
|
|
|
+ components: {},
|
|
|
+ props: {
|
|
|
+ businessId: {
|
|
|
+ default: ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ title: '',
|
|
|
+ form: {
|
|
|
+ ...formDef
|
|
|
+ },
|
|
|
+
|
|
|
+ options: [
|
|
|
+ { value: 0, label: '无异常' },
|
|
|
+ { value: 1, label: '有异常' }
|
|
|
+ ],
|
|
|
+ rules: {
|
|
|
+ sendNo: [
|
|
|
+ { required: true, message: '请选择发货单', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ repliedFiles: [
|
|
|
+ { required: true, message: '请上传回执附件', trigger: 'change' }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+
|
|
|
+ // 提交状态
|
|
|
+ loading: false
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.requestDict('产地');
|
|
|
+ this.requestDict('生产类型');
|
|
|
+ this.getSendSaleOrderDetail(this.businessId);
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ columns() {
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ width: 45,
|
|
|
+ type: 'index',
|
|
|
+ columnKey: 'index',
|
|
|
+ align: 'center',
|
|
|
+ fixed: 'left'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 200,
|
|
|
+ prop: 'productName',
|
|
|
+ label: '名称',
|
|
|
+ slot: 'productName',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'productCode',
|
|
|
+ label: '编码',
|
|
|
+ slot: 'productCode',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 200,
|
|
|
+ prop: 'productCategoryName',
|
|
|
+ label: '类型',
|
|
|
+ slot: 'productCategoryName',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ minWidth: 150,
|
|
|
+ prop: 'taskName',
|
|
|
+ label: '工序',
|
|
|
+ slot: 'taskName',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 110,
|
|
|
+ prop: 'batchNo',
|
|
|
+ label: '批次号',
|
|
|
+ slot: 'batchNo',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 160,
|
|
|
+ prop: 'productBrand',
|
|
|
+ label: '牌号',
|
|
|
+ slot: 'productBrand',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'modelType',
|
|
|
+ label: '型号',
|
|
|
+ slot: 'modelType',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'supplierMark',
|
|
|
+ label: '供应商代号',
|
|
|
+ slot: 'supplierMark',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'specification',
|
|
|
+ label: '规格',
|
|
|
+ slot: 'specification',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 200,
|
|
|
+ prop: 'warehouseName',
|
|
|
+ label: '仓库名称',
|
|
|
+ slot: 'warehouseName',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ width: 80,
|
|
|
+ prop: 'totalCount',
|
|
|
+ label: '收货数量',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 150,
|
|
|
+ prop: 'confirmCount',
|
|
|
+ label: '确认数量',
|
|
|
+ slot: 'totalCount',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ width: 80,
|
|
|
+ prop: 'measuringUnit',
|
|
|
+ label: '计量单位',
|
|
|
+ slot: 'measuringUnit',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ // {
|
|
|
+ // width: 120,
|
|
|
+ // prop: 'singleWeight',
|
|
|
+ // label: '单重',
|
|
|
+ // slot: 'singleWeight',
|
|
|
+ // align: 'center'
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // width: 200,
|
|
|
+ // prop: 'sendTotalWeight',
|
|
|
+ // label: '发货总重',
|
|
|
+ // slot: 'sendTotalWeight',
|
|
|
+ // align: 'center',
|
|
|
+ // headerSlot: 'headerTotalCount'
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // width: 100,
|
|
|
+ // prop: 'receiveTotalWeight',
|
|
|
+ // label: '收货总重',
|
|
|
+ // slot: 'receiveTotalWeight',
|
|
|
+ // align: 'center'
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // width: 100,
|
|
|
+ // prop: 'increaseTotalWeight',
|
|
|
+ // label: '增重重量',
|
|
|
+ // slot: 'increaseTotalWeight',
|
|
|
+ // align: 'center'
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // width: 100,
|
|
|
+ // prop: 'weightUnit',
|
|
|
+ // label: '重量单位',
|
|
|
+ // slot: 'weightUnit',
|
|
|
+ // align: 'center'
|
|
|
+ // },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'packingSpecification',
|
|
|
+ align: 'center',
|
|
|
+ label: '包装规格',
|
|
|
+ showOverflowTooltip: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ minWidth: 120,
|
|
|
+ prop: 'goodsLevel',
|
|
|
+ label: '物品级别',
|
|
|
+ formatter: (_row, _column, cellValue) => {
|
|
|
+ return levelList.find((item) => item.value == _row.goodsLevel)
|
|
|
+ ?.label;
|
|
|
+ },
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 160,
|
|
|
+ prop: 'singlePrice',
|
|
|
+ label: '单价',
|
|
|
+ slot: 'singlePrice',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 150,
|
|
|
+ prop: 'notaxSinglePrice',
|
|
|
+ label: '不含税单价',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 160,
|
|
|
+ prop: 'discountSinglePrice',
|
|
|
+ label: '折后单价',
|
|
|
+ slot: 'discountSinglePrice',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ prop: 'totalPrice',
|
|
|
+ label: '合计',
|
|
|
+ slot: 'totalPrice',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 160,
|
|
|
+ prop: 'discountTotalPrice',
|
|
|
+ label: '折后合计',
|
|
|
+ slot: 'discountTotalPrice',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'provenance',
|
|
|
+ label: '产地',
|
|
|
+ slot: 'provenance',
|
|
|
+ align: 'center',
|
|
|
+ minWidth: 200,
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ formatter: (row, column) => {
|
|
|
+ return row.provenance && row.provenance.length
|
|
|
+ ? row.provenance
|
|
|
+ .map((item) => this.getDictValue('产地', item))
|
|
|
+ .join(',')
|
|
|
+ : '';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'productionDate',
|
|
|
+ label: '生产日期',
|
|
|
+ slot: 'productionDate',
|
|
|
+ align: 'center',
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ minWidth: 200
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 160,
|
|
|
+ prop: 'deliveryDeadline',
|
|
|
+ label: '交期截止日期',
|
|
|
+ slot: 'deliveryDeadline',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 200,
|
|
|
+ prop: 'guaranteePeriod',
|
|
|
+ label: '有效期',
|
|
|
+ slot: 'guaranteePeriod',
|
|
|
+ align: 'center',
|
|
|
+ formatter: (_row, _column, cellValue) => {
|
|
|
+ return (
|
|
|
+ (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName
|
|
|
+ );
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 160,
|
|
|
+ prop: 'guaranteePeriodDeadline',
|
|
|
+ label: '有效期截止日期',
|
|
|
+ slot: 'guaranteePeriodDeadline',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 130,
|
|
|
+ prop: 'technicalAnswerName',
|
|
|
+ label: '技术答疑人',
|
|
|
+ slot: 'technicalAnswerName',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 220,
|
|
|
+ prop: 'technicalParams',
|
|
|
+ label: '技术参数',
|
|
|
+ slot: 'technicalParams',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 240,
|
|
|
+ prop: 'technicalDrawings',
|
|
|
+ label: '技术图纸',
|
|
|
+ slot: 'technicalDrawings',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 220,
|
|
|
+ prop: 'remark',
|
|
|
+ label: '备注',
|
|
|
+ slot: 'remark',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 120,
|
|
|
+ slot: 'isException',
|
|
|
+ prop: 'isException',
|
|
|
+ label: '收货状态',
|
|
|
+ align: 'center',
|
|
|
+ fixed: 'right'
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ methods: {
|
|
|
+ // //发货单确认详情
|
|
|
+ async getSendSaleOrderDetail(id) {
|
|
|
+ this.title = '详情';
|
|
|
+ this.loading = true;
|
|
|
+ const data = await getReceiveConfirmDetail(this.businessId);
|
|
|
+ this.loading = false;
|
|
|
+ if (data) {
|
|
|
+ this.form = data;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+</script>
|
|
|
+<style scoped lang="scss">
|
|
|
+ .TotalAmount {
|
|
|
+ font-size: 16px;
|
|
|
+ padding-right: 30px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .headbox {
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-start;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ .amount {
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: bold;
|
|
|
+ margin-right: 20px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+</style>
|