|
|
@@ -1,153 +1,76 @@
|
|
|
<template>
|
|
|
- <div>
|
|
|
- <el-form ref="form" :model="form" :rules="rules" label-width="130px">
|
|
|
- <headerTitle title="发货信息"></headerTitle>
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item
|
|
|
- label="委外发货单编码:"
|
|
|
- prop="code"
|
|
|
- style="margin-bottom: 22px"
|
|
|
- >
|
|
|
- {{ form.code }}
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item
|
|
|
- label="采购订单编码:"
|
|
|
- prop="orderNo"
|
|
|
- style="margin-bottom: 22px"
|
|
|
- >
|
|
|
- {{ form.orderNo }}
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item
|
|
|
- label="外协单位:"
|
|
|
- prop="contactName"
|
|
|
- style="margin-bottom: 22px"
|
|
|
- >
|
|
|
- {{ form.supplierName }}
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item
|
|
|
- label="外协单位联系人:"
|
|
|
- prop="linkName"
|
|
|
- style="margin-bottom: 22px"
|
|
|
- >
|
|
|
- {{ form.linkName }}
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item
|
|
|
- label="计价方式:"
|
|
|
- style="margin-bottom: 22px">
|
|
|
- {{ form.pricingWay == 1 ? '按数量计费' : '按重量计费' }}
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item
|
|
|
- label="外协单位电话:"
|
|
|
- prop="linkPhone"
|
|
|
- style="margin-bottom: 22px"
|
|
|
- >
|
|
|
- {{ form.linkPhone }}
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="车辆号:" prop="carNo" style="margin-bottom: 22px">
|
|
|
- {{ form.carNo }}
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item
|
|
|
- label="送货单号:"
|
|
|
- prop="sendNoteNo"
|
|
|
- style="margin-bottom: 22px"
|
|
|
- >
|
|
|
- {{ form.sendNoteNo }}
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item
|
|
|
- label="订单类型:"
|
|
|
- prop="sourceTypeName"
|
|
|
- style="margin-bottom: 22px"
|
|
|
- >
|
|
|
- {{ form.sourceTypeName }}
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item prop="files" label="附件:">
|
|
|
- <div v-if="form.files && form.files?.length">
|
|
|
- <el-link
|
|
|
- v-for="link in form.files"
|
|
|
- :key="link.id"
|
|
|
- type="primary"
|
|
|
- :underline="false"
|
|
|
- @click="downloadFile(link)">
|
|
|
- {{ link.name }}
|
|
|
- </el-link>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
-
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form>
|
|
|
-
|
|
|
- <headerTitle title="产品清单"></headerTitle>
|
|
|
- <ele-pro-table
|
|
|
- ref="table"
|
|
|
- :needPage="false"
|
|
|
- :columns="competAnalysisListcolumns"
|
|
|
- :toolkit="[]"
|
|
|
- :datasource="detailData.productList"
|
|
|
- row-key="id"
|
|
|
- >
|
|
|
- <!-- <template v-slot:toolbar>
|
|
|
- <div class="headbox">
|
|
|
- <span class="amount">总计:{{detailData.totalAmount}}元</span>
|
|
|
- <span class="amount">应付金额:{{detailData.payAmount}}元</span>
|
|
|
- </div>
|
|
|
- </template> -->
|
|
|
- <template v-slot:technicalDrawings="{ row }">
|
|
|
- <div v-if="row.technicalDrawings && row.technicalDrawings?.length">
|
|
|
- <el-link
|
|
|
- v-for="link in row.technicalDrawings"
|
|
|
- :key="link.id"
|
|
|
- type="primary"
|
|
|
- :underline="false"
|
|
|
- @click="downloadFile(link)"
|
|
|
- >
|
|
|
- {{ link.name }}
|
|
|
- </el-link
|
|
|
- >
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </ele-pro-table>
|
|
|
- </div>
|
|
|
+ <div>
|
|
|
+
|
|
|
+ <headerTitle title="委外单"></headerTitle>
|
|
|
+ <ele-pro-table ref="table" :needPage="false" :columns="columns" :toolkit="[]" :datasource="list"
|
|
|
+ row-key="id">
|
|
|
+
|
|
|
+
|
|
|
+ <template v-slot:type="{ row }">
|
|
|
+ <div v-if="row.type == 1">采购委外</div>
|
|
|
+ <div v-if="row.type == 2">直接发货委外</div>
|
|
|
+ <div v-if="row.type == 3">无采购委外</div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ <template v-slot:status="{ row }">
|
|
|
+ <el-tag>{{ row.status == 1 ? '已发布' : '未发布' }}</el-tag>
|
|
|
+ </template>
|
|
|
+
|
|
|
+
|
|
|
+ <template v-slot:technicalDrawings="{ row }">
|
|
|
+
|
|
|
+ <div v-if="row.technicalDrawings && row.technicalDrawings?.length">
|
|
|
+ <el-link v-for="link in row.technicalDrawings" :key="link.id" type="primary" :underline="false"
|
|
|
+ @click="downloadFile(link)">
|
|
|
+ {{ link.name }}</el-link>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </template>
|
|
|
+
|
|
|
+
|
|
|
+ <template v-slot:files="{ row }">
|
|
|
+ <div v-if="row.files && row.files?.length">
|
|
|
+ <el-link v-for="link in row.files" :key="link.id" type="primary" :underline="false" @click="downloadFile(link)">
|
|
|
+ {{ link.name }}</el-link>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </template>
|
|
|
+
|
|
|
+
|
|
|
+ <template v-slot:action="{ row }">
|
|
|
+
|
|
|
+
|
|
|
+ <el-link type="primary" :underline="false" @click="handleDetails(row)">
|
|
|
+ 详情
|
|
|
+ </el-link>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ </template>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ </ele-pro-table>
|
|
|
+
|
|
|
+ <detail ref="detailsRef"></detail>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import {getFile} from '@/api/system/file';
|
|
|
+import { getFile } from '@/api/system/file';
|
|
|
import {
|
|
|
- getPurchaseOutSourceSendDetailAPI,
|
|
|
-} from '@/api/bpm/components/purchasingManage/outSourceSend';
|
|
|
-
|
|
|
+ applyOutsource,
|
|
|
+} from '@/api/bpm/components/purchasingManage/outSourceSendCk';
|
|
|
+import Detail from './components/details.vue';
|
|
|
|
|
|
export default {
|
|
|
+ components: {
|
|
|
+ Detail
|
|
|
+ },
|
|
|
props: {
|
|
|
businessId: {
|
|
|
default: ''
|
|
|
@@ -156,216 +79,173 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
detailId: '',
|
|
|
- form: {},
|
|
|
- detailData: {},
|
|
|
- competAnalysisListcolumns: [
|
|
|
+
|
|
|
+ list: [],
|
|
|
+
|
|
|
+ };
|
|
|
+ },
|
|
|
+
|
|
|
+ computed: {
|
|
|
+ // 表格列配置
|
|
|
+ columns() {
|
|
|
+ return [
|
|
|
{
|
|
|
- width: 45,
|
|
|
- type: 'index',
|
|
|
columnKey: 'index',
|
|
|
+ label: '序号',
|
|
|
+ type: 'index',
|
|
|
+ width: 55,
|
|
|
align: 'center',
|
|
|
+ showOverflowTooltip: true,
|
|
|
fixed: 'left'
|
|
|
},
|
|
|
+
|
|
|
+
|
|
|
{
|
|
|
- minWidth: 140,
|
|
|
- prop: 'productName',
|
|
|
- label: '名称',
|
|
|
- slot: 'productName',
|
|
|
- align: "center"
|
|
|
- },
|
|
|
- {
|
|
|
- minWidth: 120,
|
|
|
- prop: 'productCode',
|
|
|
- label: '编码',
|
|
|
- slot: 'productCode',
|
|
|
- align: "center"
|
|
|
- },
|
|
|
- {
|
|
|
- minWidth: 100,
|
|
|
- prop: 'productCategoryName',
|
|
|
- label: '类型',
|
|
|
- slot: 'productCategoryName',
|
|
|
- align: "center"
|
|
|
- },
|
|
|
- {
|
|
|
- width: 160,
|
|
|
- prop: 'productBrand',
|
|
|
- label: '牌号',
|
|
|
- slot: 'productBrand',
|
|
|
- align: "center"
|
|
|
- },
|
|
|
- {
|
|
|
- width: 120,
|
|
|
- prop: 'modelType',
|
|
|
- label: '型号',
|
|
|
- slot: 'modelType',
|
|
|
- align: "center"
|
|
|
+ prop: 'code',
|
|
|
+ label: '委外单编码',
|
|
|
+ align: 'center'
|
|
|
},
|
|
|
{
|
|
|
- width: 120,
|
|
|
- prop: 'specification',
|
|
|
- label: '规格',
|
|
|
- slot: 'specification',
|
|
|
- align: "center"
|
|
|
+ prop: 'name',
|
|
|
+ label: '委外单名称',
|
|
|
+ align: 'center'
|
|
|
},
|
|
|
+
|
|
|
+
|
|
|
{
|
|
|
- width: 200,
|
|
|
- prop: 'customerMark',
|
|
|
- label: '客户代号',
|
|
|
- slot: 'customerMark',
|
|
|
- align: "center"
|
|
|
+ prop: 'workOrderCode',
|
|
|
+ label: '工单编码',
|
|
|
+ align: 'center'
|
|
|
},
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
{
|
|
|
- width: 200,
|
|
|
- prop: 'warehouseName',
|
|
|
- label: '仓库名称',
|
|
|
- slot: 'warehouseName',
|
|
|
- align: "center"
|
|
|
+ prop: 'taskName',
|
|
|
+ label: '工序',
|
|
|
+ align: 'center'
|
|
|
},
|
|
|
|
|
|
+
|
|
|
{
|
|
|
- width: 120,
|
|
|
prop: 'totalCount',
|
|
|
- label: '发货数量',
|
|
|
- slot: 'totalCount',
|
|
|
- align: "center"
|
|
|
- },
|
|
|
- {
|
|
|
- width: 120,
|
|
|
- prop: 'measuringUnit',
|
|
|
- label: '计量单位',
|
|
|
- slot: 'measuringUnit',
|
|
|
- align: "center"
|
|
|
- },
|
|
|
- {
|
|
|
- width: 120,
|
|
|
- prop: 'singleWeight',
|
|
|
- label: '单重',
|
|
|
- slot: 'singleWeight',
|
|
|
- align: "center"
|
|
|
- },
|
|
|
- {
|
|
|
- width: 100,
|
|
|
- prop: 'sendTotalWeight',
|
|
|
- label: '发货总重',
|
|
|
- slot: 'sendTotalWeight',
|
|
|
- align: "center"
|
|
|
+ label: '委外数量',
|
|
|
+ align: 'center'
|
|
|
},
|
|
|
+
|
|
|
{
|
|
|
- width: 100,
|
|
|
- prop: 'weightUnit',
|
|
|
- label: '重量单位',
|
|
|
- slot: 'weightUnit',
|
|
|
- align: "center"
|
|
|
+ prop: 'totalWeight',
|
|
|
+ label: '委外重量',
|
|
|
+ align: 'center'
|
|
|
},
|
|
|
+
|
|
|
{
|
|
|
- width: 160,
|
|
|
- prop: 'singlePrice',
|
|
|
- label: '单价',
|
|
|
- slot: 'singlePrice',
|
|
|
- align: "center"
|
|
|
+ slot: 'type',
|
|
|
+ label: '委外类型',
|
|
|
+ align: 'center'
|
|
|
},
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
{
|
|
|
- width: 100,
|
|
|
- prop: 'discountSinglePrice',
|
|
|
- label: '折让单价',
|
|
|
- slot: 'discountSinglePrice',
|
|
|
- align: "center"
|
|
|
+ prop: 'remark',
|
|
|
+ label: '备注',
|
|
|
+ align: 'center'
|
|
|
},
|
|
|
|
|
|
{
|
|
|
- width: 120,
|
|
|
- prop: 'totalPrice',
|
|
|
- label: '合计',
|
|
|
- slot: 'totalPrice',
|
|
|
- formatter: (_row, _column, cellValue) => {
|
|
|
- return _row.totalPrice + '元';
|
|
|
- },
|
|
|
- align: "center"
|
|
|
+ slot: 'requireDeliveryTime',
|
|
|
+ label: '预计到货日期',
|
|
|
+ align: 'center',
|
|
|
+ minWidth: 70
|
|
|
},
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
{
|
|
|
- width: 100,
|
|
|
- prop: 'discountTotalPrice',
|
|
|
- label: '折让合计',
|
|
|
- slot: 'discountTotalPrice',
|
|
|
- align: "center"
|
|
|
+ prop: 'produceRoutingName',
|
|
|
+ label: '工艺路线',
|
|
|
+ align: 'center',
|
|
|
},
|
|
|
+
|
|
|
{
|
|
|
- width: 120,
|
|
|
- prop: 'deliveryDays',
|
|
|
- label: '交期(天)',
|
|
|
- slot: 'deliveryDays',
|
|
|
- align: "center"
|
|
|
+ prop: 'warehouseName',
|
|
|
+ label: '仓库',
|
|
|
+ align: 'center',
|
|
|
},
|
|
|
+
|
|
|
+
|
|
|
{
|
|
|
- width: 200,
|
|
|
- prop: 'guaranteePeriod',
|
|
|
- label: '质保期',
|
|
|
- slot: 'guaranteePeriod',
|
|
|
- formatter: (_row, _column, cellValue) => {
|
|
|
- return (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName;
|
|
|
- },
|
|
|
- align: "center"
|
|
|
+ prop: 'createTime',
|
|
|
+ label: '创建时间',
|
|
|
+ align: 'center',
|
|
|
+ minWidth: 70
|
|
|
},
|
|
|
- // {
|
|
|
- // width: 120,
|
|
|
- // prop: 'guaranteePeriodUnitCode',
|
|
|
- // label: '',
|
|
|
- // slot: 'guaranteePeriodUnitCode'
|
|
|
- // },
|
|
|
+
|
|
|
{
|
|
|
- width: 120,
|
|
|
- prop: 'technicalAnswerName',
|
|
|
- label: '技术答疑人',
|
|
|
- slot: 'technicalAnswerName',
|
|
|
- align: "center"
|
|
|
+ slot: 'status',
|
|
|
+ label: '状态',
|
|
|
+ align: 'center'
|
|
|
},
|
|
|
+
|
|
|
+
|
|
|
{
|
|
|
- width: 220,
|
|
|
- prop: 'technicalParams',
|
|
|
- label: '技术参数',
|
|
|
- slot: 'technicalParams',
|
|
|
- align: "center"
|
|
|
+ label: '图片附件',
|
|
|
+ slot: 'technicalDrawings',
|
|
|
+ action: 'technicalDrawings',
|
|
|
+ minWidth: 100,
|
|
|
},
|
|
|
+
|
|
|
{
|
|
|
- width: 240,
|
|
|
- prop: 'technicalDrawings',
|
|
|
- label: '技术图纸',
|
|
|
- slot: 'technicalDrawings',
|
|
|
- formatter: (_row, _column, cellValue) => {
|
|
|
- return (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName;
|
|
|
- },
|
|
|
- align: "center"
|
|
|
+ label: '附件',
|
|
|
+ slot: 'files',
|
|
|
+ action: 'files',
|
|
|
+ minWidth: 100,
|
|
|
},
|
|
|
+
|
|
|
+
|
|
|
{
|
|
|
- width: 220,
|
|
|
- prop: 'remark',
|
|
|
- label: '备注',
|
|
|
- slot: 'remark',
|
|
|
- align: "center"
|
|
|
+ columnKey: 'action',
|
|
|
+ label: '操作',
|
|
|
+ width: 140,
|
|
|
+ align: 'center',
|
|
|
+ resizable: false,
|
|
|
+ fixed: 'right',
|
|
|
+ slot: 'action',
|
|
|
+ showOverflowTooltip: true
|
|
|
}
|
|
|
- ]
|
|
|
- };
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ ];
|
|
|
+ },
|
|
|
+
|
|
|
+ clientEnvironmentId() {
|
|
|
+ return this.$store.state.user.info.clientEnvironmentId;
|
|
|
+ },
|
|
|
},
|
|
|
created() {
|
|
|
this.getDetailData(this.businessId);
|
|
|
},
|
|
|
methods: {
|
|
|
downloadFile(file) {
|
|
|
- getFile({objectName: file.storePath}, file.name);
|
|
|
+ getFile({ objectName: file.storePath }, file.name);
|
|
|
},
|
|
|
async getDetailData(id) {
|
|
|
this.loading = true;
|
|
|
- const data = await getPurchaseOutSourceSendDetailAPI(id);
|
|
|
+ const data = await applyOutsource(id);
|
|
|
this.loading = false;
|
|
|
if (data) {
|
|
|
- this.form = data;
|
|
|
- this.detailData = data;
|
|
|
+ this.list = [ data ];
|
|
|
}
|
|
|
},
|
|
|
- getTableValue(){
|
|
|
- return Promise.resolve(this.form)
|
|
|
- }
|
|
|
+
|
|
|
+
|
|
|
+ handleDetails(row) {
|
|
|
+ this.$refs.detailsRef.open(row)
|
|
|
+ },
|
|
|
+
|
|
|
}
|
|
|
};
|
|
|
</script>
|