销售明细单添加发货,添加采购信息和委外信息,调整列表字段
|  |  |  | 
|---|
|  |  |  | data | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 产品入库信息 | 
|---|
|  |  |  | export function getDeliveryPrepareInfo(data) { | 
|---|
|  |  |  | return request({ | 
|---|
|  |  |  | url: "/api/salesDetails/getDeliveryPrepareInfo", | 
|---|
|  |  |  | method: "post", | 
|---|
|  |  |  | data | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 确认发货 | 
|---|
|  |  |  | export function confirmOutput(data) { | 
|---|
|  |  |  | return request({ | 
|---|
|  |  |  | url: "/api/salesDetails/confirmOutput", | 
|---|
|  |  |  | method: "post", | 
|---|
|  |  |  | data | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | </span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | <el-form-item | 
|---|
|  |  |  | v-else-if="item.inputFloat" | 
|---|
|  |  |  | label=" " | 
|---|
|  |  |  | :prop="'tableData.' + scope.$index + '.' + item.prop" | 
|---|
|  |  |  | :rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-input-number | 
|---|
|  |  |  | v-model="scope.row[item.prop]" | 
|---|
|  |  |  | placeholder="" | 
|---|
|  |  |  | :min="0" | 
|---|
|  |  |  | :precision="2" | 
|---|
|  |  |  | :disabled="!isOperate" | 
|---|
|  |  |  | :controls="false" | 
|---|
|  |  |  | size="mini" | 
|---|
|  |  |  | style="width: 100%; margin-right: 5px" | 
|---|
|  |  |  | @change=" | 
|---|
|  |  |  | (val) => { | 
|---|
|  |  |  | commonInputChange(val, item.prop, scope.row, scope) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " | 
|---|
|  |  |  | ></el-input-number> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item | 
|---|
|  |  |  | v-else-if="item.inputNumber && selectBox" | 
|---|
|  |  |  | label=" " | 
|---|
|  |  |  | :prop="'tableData.' + scope.$index + '.' + item.prop" | 
|---|
|  |  |  | 
|---|
|  |  |  | <!-- <el-button @click="delClick(scope.row.id)" type="text" size="small">删除</el-button> --> | 
|---|
|  |  |  | <el-button @click.stop="closeClick(scope.row)" type="text" size="small">关闭</el-button> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | <template v-if="scope.row.status === 3||scope.row.status === 4"> | 
|---|
|  |  |  | <el-button @click.stop="shipmentsClick(scope.row)" type="text" size="small">发货</el-button> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | 
|---|
|  |  |  | > | 
|---|
|  |  |  | 采购信息 | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div | 
|---|
|  |  |  | class="tab-pane" | 
|---|
|  |  |  | @click="getTab(4)" | 
|---|
|  |  |  | :style="{ | 
|---|
|  |  |  | background: TabsIndex == 4 ? '#2a78fb' : '#F1F3F8', | 
|---|
|  |  |  | color: TabsIndex == 4 ? '#fff' : '#666' | 
|---|
|  |  |  | }" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | 委外信息 | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="list-view"> | 
|---|
|  |  |  | <TableCommonView :loading="loading" :table-list="productTableList" @selTableCol="selBottomTableCol"> | 
|---|
|  |  |  | 
|---|
|  |  |  | :edit-common-config="editConfig" | 
|---|
|  |  |  | @addCollectionPlanClick="addCollectionPlanClick" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <!-- 发货 --> | 
|---|
|  |  |  | <ShipmentsDialog | 
|---|
|  |  |  | v-if="editShipmentsConfig.visible" | 
|---|
|  |  |  | :edit-common-config="editShipmentsConfig" | 
|---|
|  |  |  | @addCollectionPlanClick="addCollectionPlanClick" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <!-- 销售明细详情 --> | 
|---|
|  |  |  | <DetailSpecification v-if="specificationDetail.visible" :specification-detail="specificationDetail" /> | 
|---|
|  |  |  | <!-- 客户详情 --> | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import AddSalesDetailsDialog from "@/views/sales/salesDetails/AddSalesDetailsDialog" | 
|---|
|  |  |  | import ShipmentsDialog from "@/views/sales/salesDetails/shipmentsDialog" | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | getSalesDetailsList, | 
|---|
|  |  |  | getDelSalesDetails, | 
|---|
|  |  |  | 
|---|
|  |  |  | mixins: [pageMixin], | 
|---|
|  |  |  | components: { | 
|---|
|  |  |  | AddSalesDetailsDialog, | 
|---|
|  |  |  | ShipmentsDialog, | 
|---|
|  |  |  | DetailSpecification, | 
|---|
|  |  |  | DetailClientManage: () => import("@/views/client/client/DetailClientManage"), | 
|---|
|  |  |  | AddCollectionPlan | 
|---|
|  |  |  | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | // 产品信息 | 
|---|
|  |  |  | const productColumn = [ | 
|---|
|  |  |  | { label: "产品编号", prop: "number", default: true }, | 
|---|
|  |  |  | { label: "产品名称", prop: "name" }, | 
|---|
|  |  |  | { label: "数量", prop: "amount" }, | 
|---|
|  |  |  | { label: "产品编号", prop: "productId", default: true }, | 
|---|
|  |  |  | { label: "产品名称", prop: "productName" }, | 
|---|
|  |  |  | { label: "产品规格", prop: "specs" }, | 
|---|
|  |  |  | { label: "单位", prop: "unit" }, | 
|---|
|  |  |  | { label: "订单数量", prop: "amount" }, | 
|---|
|  |  |  | { label: "已完成数量", prop: "finishAmount" }, | 
|---|
|  |  |  | { label: "已发货数量", prop: "deliveryAmount" }, | 
|---|
|  |  |  | { label: "采购数量", prop: "purchaseAmount" }, | 
|---|
|  |  |  | { label: "生产数量", prop: "makeAmount" }, | 
|---|
|  |  |  | { label: "委外数量", prop: "outsourcingAmount" }, | 
|---|
|  |  |  | { label: "销售单价", prop: "price", price: true }, | 
|---|
|  |  |  | { label: "成本单价", prop: "cost" }, | 
|---|
|  |  |  | { label: "毛利", prop: "profit" }, | 
|---|
|  |  |  | { label: "毛利率(%)", prop: "margin" }, | 
|---|
|  |  |  | { label: "价税合计", prop: "total", price: true } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | // 库存信息 | 
|---|
|  |  |  | // 发货信息 | 
|---|
|  |  |  | const inventoryColumn = [ | 
|---|
|  |  |  | { label: "出库单", prop: "invoice" }, | 
|---|
|  |  |  | { label: "仓库", prop: "warehouse" }, | 
|---|
|  |  |  | { label: "产品编号", prop: "number", default: true }, | 
|---|
|  |  |  | { label: "产品名称", prop: "name" }, | 
|---|
|  |  |  | { label: "产品规格", prop: "specs" }, | 
|---|
|  |  |  | { label: "产品单位", prop: "unit" }, | 
|---|
|  |  |  | { label: "发货数量", prop: "amount" }, | 
|---|
|  |  |  | { label: "订单数量", prop: "orderAmount" }, | 
|---|
|  |  |  | { label: "发货单", prop: "invoice" }, | 
|---|
|  |  |  | { label: "承运商", prop: "carrier" }, | 
|---|
|  |  |  | { label: "运单号", prop: "waybill" }, | 
|---|
|  |  |  | { label: "仓库", prop: "warehouse" }, | 
|---|
|  |  |  | { label: "在库数量", prop: "amount" }, | 
|---|
|  |  |  | { label: "可用库存", prop: "availableNumber" }, | 
|---|
|  |  |  | { label: "单位", prop: "unit" } | 
|---|
|  |  |  | { label: "创建时间", prop: "warehouse" }, | 
|---|
|  |  |  | { label: "状态", prop: "status" }, | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | // 制造信息 | 
|---|
|  |  |  | const makeColumn = [ | 
|---|
|  |  |  | { label: "生产订单", prop: "orderId", default: true }, | 
|---|
|  |  |  | { label: "产品编号", prop: "productId" }, | 
|---|
|  |  |  | { label: "产品名称", prop: "productName" }, | 
|---|
|  |  |  | { label: "订单状态", prop: "orderStatus" }, | 
|---|
|  |  |  | { label: "产品规格", prop: "specs" }, | 
|---|
|  |  |  | { label: "产品单位", prop: "unit" }, | 
|---|
|  |  |  | { label: "订单数量", prop: "amount" }, | 
|---|
|  |  |  | { label: "完成数量", prop: "finishAmount" }, | 
|---|
|  |  |  | { label: "工单编号", prop: "workOrderId" }, | 
|---|
|  |  |  | { label: "工单状态", prop: "workOrderStatus" }, | 
|---|
|  |  |  | { label: "计划开始时间", prop: "startTime" }, | 
|---|
|  |  |  | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "产品编号", | 
|---|
|  |  |  | prop: "productId", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "产品名称", | 
|---|
|  |  |  | prop: "productName", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "产品规格", | 
|---|
|  |  |  | prop: "specs", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "产品单位", | 
|---|
|  |  |  | prop: "unit", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "计划采购量", | 
|---|
|  |  |  | prop: "amount", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "完成采购量", | 
|---|
|  |  |  | prop: "finishAmount", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "采购单名称", | 
|---|
|  |  |  | prop: "purchaseName" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | label: "供应商名称", | 
|---|
|  |  |  | prop: "supplierName" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "采购数量", | 
|---|
|  |  |  | prop: "amount" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // { | 
|---|
|  |  |  | //   label: "采购数量", | 
|---|
|  |  |  | //   prop: "amount" | 
|---|
|  |  |  | // }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "状态", | 
|---|
|  |  |  | prop: "status", | 
|---|
|  |  |  | isCallMethod: true, | 
|---|
|  |  |  | getCallMethod: this.getpurchaseStatus | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | // 委外 | 
|---|
|  |  |  | const outsourceColumn = [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "委外订单", | 
|---|
|  |  |  | prop: "outsourcingId", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "产品编号", | 
|---|
|  |  |  | prop: "productId", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "产品名称", | 
|---|
|  |  |  | prop: "productName", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "产品规格", | 
|---|
|  |  |  | prop: "specs", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "产品单位", | 
|---|
|  |  |  | prop: "unit", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "委外数量", | 
|---|
|  |  |  | prop: "amount", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "完成数量", | 
|---|
|  |  |  | prop: "finishAmount", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "订单状态", | 
|---|
|  |  |  | prop: "status", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "委外供应商", | 
|---|
|  |  |  | prop: "supplierName", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "签约日期", | 
|---|
|  |  |  | prop: "startTime", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | label: "交付日期", | 
|---|
|  |  |  | prop: "endTime", | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | tableList: {}, | 
|---|
|  |  |  | 
|---|
|  |  |  | visible: false, | 
|---|
|  |  |  | title: "新建", | 
|---|
|  |  |  | infomation: {} | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | editShipmentsConfig:{ | 
|---|
|  |  |  | visible: false, | 
|---|
|  |  |  | title: "新建", | 
|---|
|  |  |  | infomation: { | 
|---|
|  |  |  | saleDetailID:null, | 
|---|
|  |  |  | saleDetailNumber:null, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | showSummary: { | 
|---|
|  |  |  | show: false, | 
|---|
|  |  |  | 
|---|
|  |  |  | TabsIndex: "0", | 
|---|
|  |  |  | productTableList: {}, | 
|---|
|  |  |  | productColumn: productColumn, | 
|---|
|  |  |  | showProductCol: ["产品编号", "产品名称", "数量", "单位", "销售单价", "成本单价", "毛利", "毛利率(%)", "价税合计"], | 
|---|
|  |  |  | showProductCol: ["产品编号", "产品名称","产品规格", "单位", "订单数量", "已完成数量", "已发货数量", "采购数量", "生产数量", "委外数量","销售单价","成本单价","毛利","毛利率","价税合计"], | 
|---|
|  |  |  | inventoryColumn: inventoryColumn, | 
|---|
|  |  |  | showInventoryCol: [ | 
|---|
|  |  |  | "出库单", | 
|---|
|  |  |  | "仓库", | 
|---|
|  |  |  | "产品编号", | 
|---|
|  |  |  | "产品名称", | 
|---|
|  |  |  | "产品规格", | 
|---|
|  |  |  | "产品单位", | 
|---|
|  |  |  | "发货数量", | 
|---|
|  |  |  | "订单数量", | 
|---|
|  |  |  | "发货单", | 
|---|
|  |  |  | "承运商", | 
|---|
|  |  |  | "运单号", | 
|---|
|  |  |  | "仓库", | 
|---|
|  |  |  | "在库数量", | 
|---|
|  |  |  | "可用库存", | 
|---|
|  |  |  | "单位" | 
|---|
|  |  |  | "创建时间", | 
|---|
|  |  |  | "状态" | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | makeColumn: makeColumn, | 
|---|
|  |  |  | showMakeCol: ["生产订单", "产品名称", "订单状态", "工单编号", "工单状态", "计划开始时间", "计划结束时间"], | 
|---|
|  |  |  | // 采购 | 
|---|
|  |  |  | purchaseColumn: purchaseColumn, | 
|---|
|  |  |  | showPurchaseCol: ["采购单号", "采购单名称", "供应商名称", "采购数量", "状态"], | 
|---|
|  |  |  | outsourceColumn:outsourceColumn, | 
|---|
|  |  |  | showPurchaseCol: ["采购单号", "产品编号", "产品名称", "产品规格", "产品单位","计划采购量","完成采购量","采购单名称","供应商名称","状态"], | 
|---|
|  |  |  | showOutsourceCol:["委外订单", "产品编号", "产品名称", "产品规格", "产品单位","委外数量","完成数量","订单状态","委外供应商","签约日期","交付日期"], | 
|---|
|  |  |  | selectRow: {}, | 
|---|
|  |  |  | projectList: [], | 
|---|
|  |  |  | projectListShow: false, | 
|---|
|  |  |  | 
|---|
|  |  |  | // 获取产品/库存信息 | 
|---|
|  |  |  | async getProductInventoryInfo(row) { | 
|---|
|  |  |  | if (this.TabsIndex == 0 || row.status == 1) { | 
|---|
|  |  |  | this.productTableList.tableInfomation = row.products || [] | 
|---|
|  |  |  | this.getProductOrderInfo(row) | 
|---|
|  |  |  | // row.products.map((item)=>{ | 
|---|
|  |  |  | //   item.purchaseAmount=item.purchaseFinishAmount+"/"+item.purchaseAmount | 
|---|
|  |  |  | //   item.makeAmount=item.makeFinishAmount+"/"+item.makeAmount | 
|---|
|  |  |  | //   item.outsourcingAmount=item.outsourcingFinishAmount+"/"+item.outsourcingAmount | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // }) | 
|---|
|  |  |  | // this.productTableList.tableInfomation = row.products || [] | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | if (row.number) { | 
|---|
|  |  |  | this.loading = true | 
|---|
|  |  |  | 
|---|
|  |  |  | this.loading = true | 
|---|
|  |  |  | await getProductOrderInfo(number) | 
|---|
|  |  |  | .then((res) => { | 
|---|
|  |  |  | if (this.TabsIndex == 3) { | 
|---|
|  |  |  | this.productTableList.tableInfomation = res.data && res.data.purchaseInfo ? res.data.purchaseInfo : [] | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | if (this.TabsIndex == 0) { | 
|---|
|  |  |  | if(res&&res.data){ | 
|---|
|  |  |  | res.data.productInfo.map((item=>{ | 
|---|
|  |  |  | item.purchaseAmount=item.purchaseFinishAmount+"/"+item.purchaseAmount | 
|---|
|  |  |  | item.makeAmount=item.makeFinishAmount+"/"+item.makeAmount | 
|---|
|  |  |  | item.outsourcingAmount=item.outsourcingFinishAmount+"/"+item.outsourcingAmount | 
|---|
|  |  |  | })) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.productTableList.tableInfomation = res.data && res.data.productInfo ? res.data.productInfo : [] | 
|---|
|  |  |  | } else if (this.TabsIndex == 1) { | 
|---|
|  |  |  | this.productTableList.tableInfomation = res.data ? res.data : [] | 
|---|
|  |  |  | } else if (this.TabsIndex == 2) { | 
|---|
|  |  |  | this.productTableList.tableInfomation = res.data && res.data.makeInfo ? res.data.makeInfo : [] | 
|---|
|  |  |  | } else if (this.TabsIndex == 3) { | 
|---|
|  |  |  | this.productTableList.tableInfomation = res.data && res.data.purchaseInfo ? res.data.purchaseInfo : [] | 
|---|
|  |  |  | } else if(this.TabsIndex == 4) { | 
|---|
|  |  |  | this.productTableList.tableInfomation = res.data && res.data.outsourcingInfo ? res.data.outsourcingInfo : [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.loading = false | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 发货 | 
|---|
|  |  |  | shipmentsClick(row){ | 
|---|
|  |  |  | this.editShipmentsConfig.visible=true | 
|---|
|  |  |  | this.editShipmentsConfig.infomation.saleDetailID=row.id | 
|---|
|  |  |  | this.editShipmentsConfig.infomation.saleDetailNumber=row.number | 
|---|
|  |  |  | this.editShipmentsConfig.infomation.projectId=row.projectId | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 关闭 | 
|---|
|  |  |  | closeClick(row) { | 
|---|
|  |  |  | 
|---|
|  |  |  | this.TabsIndex = tab | 
|---|
|  |  |  | if (this.TabsIndex == 0) { | 
|---|
|  |  |  | // 产品信息列表 | 
|---|
|  |  |  | this.tableBottomColumn = this.productColumn | 
|---|
|  |  |  | this.showBottomCol = this.showProductCol | 
|---|
|  |  |  | this.tableBottomColumn = this.productColumn // 表头 | 
|---|
|  |  |  | this.showBottomCol = this.showProductCol  // 动态表头 | 
|---|
|  |  |  | this.setBottomList() | 
|---|
|  |  |  | this.getProductInventoryInfo(this.selectRow) | 
|---|
|  |  |  | this.getProductInventoryInfo(this.selectRow.number) | 
|---|
|  |  |  | } else if (this.TabsIndex == 1) { | 
|---|
|  |  |  | // 库存信息列表 | 
|---|
|  |  |  | // 发货信息列表 | 
|---|
|  |  |  | this.tableBottomColumn = this.inventoryColumn | 
|---|
|  |  |  | this.showBottomCol = this.showInventoryCol | 
|---|
|  |  |  | this.setBottomList() | 
|---|
|  |  |  | 
|---|
|  |  |  | this.showBottomCol = this.showPurchaseCol | 
|---|
|  |  |  | this.setBottomList() | 
|---|
|  |  |  | this.getProductOrderInfo(this.selectRow.number) | 
|---|
|  |  |  | }if (this.TabsIndex == 4) { | 
|---|
|  |  |  | // 委外信息列表 | 
|---|
|  |  |  | this.tableBottomColumn = this.outsourceColumn | 
|---|
|  |  |  | this.showBottomCol = this.showOutsourceCol | 
|---|
|  |  |  | this.setBottomList() | 
|---|
|  |  |  | this.getProductOrderInfo(this.selectRow.number) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 状态 | 
|---|
|  |  |  | getStatus(val) { | 
|---|
|  |  |  | return val === 1 ? "待确认" : val === 2 ? "待出库" : val === 3 ? "出库完成" : val === 4 ? "已关闭" : "--" | 
|---|
|  |  |  | return val === 1 ? "待确认" : val === 2 ? "待出库" : val === 3 ? "备货中" : val === 4 ? "待出库" : val === 5 ? "出库完成" : val=== 6 ? "已关闭": "--" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // top 行点击 | 
|---|
|  |  |  | tableRowClick(row) { | 
|---|
|  |  |  | this.selectRow = row | 
|---|
|  |  |  | if (this.TabsIndex == 0) { | 
|---|
|  |  |  | this.getProductInventoryInfo(this.selectRow) | 
|---|
|  |  |  | this.getProductInventoryInfo(this.selectRow.number) | 
|---|
|  |  |  | } else if (this.TabsIndex == 1) { | 
|---|
|  |  |  | if (this.selectRow.status == 1) { | 
|---|
|  |  |  | this.productTableList.tableInfomation = [] | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <div class="add-sales-details"> | 
|---|
|  |  |  | <el-dialog | 
|---|
|  |  |  | :title="'发货单'" | 
|---|
|  |  |  | :visible.sync="editConfig.visible" | 
|---|
|  |  |  | :width="dialogWidth" | 
|---|
|  |  |  | :before-close="handleClose" | 
|---|
|  |  |  | append-to-body | 
|---|
|  |  |  | custom-class="iframe-dialog" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-form | 
|---|
|  |  |  | ref="form" | 
|---|
|  |  |  | :model="editConfig.infomation" | 
|---|
|  |  |  | :rules="rules" | 
|---|
|  |  |  | label-position="right" | 
|---|
|  |  |  | label-width="10%" | 
|---|
|  |  |  | size="mini" | 
|---|
|  |  |  | style="height: 60vh; overflow-x: hidden" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <!-- 信息 --> | 
|---|
|  |  |  | <div class="basic-info"> | 
|---|
|  |  |  | <!-- 交付信息 --> | 
|---|
|  |  |  | <div class="basic-info-view"> | 
|---|
|  |  |  | <el-row> | 
|---|
|  |  |  | <el-col :span="24"> | 
|---|
|  |  |  | <el-form-item width="50%" label="交付类型" prop="addressee"> | 
|---|
|  |  |  | <el-radio-group v-model="shipmentsType" @change="handleRadioChange"> | 
|---|
|  |  |  | <el-radio :label="1">一次发货</el-radio> | 
|---|
|  |  |  | <el-radio :label="2">多次发货</el-radio> | 
|---|
|  |  |  | </el-radio-group> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="24"> | 
|---|
|  |  |  | <el-form-item label="关联项目" prop="projectId"> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="editConfig.infomation.projectId" | 
|---|
|  |  |  | placeholder="请选择" | 
|---|
|  |  |  | size="mini" | 
|---|
|  |  |  | :disabled="true" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="item in projectList" | 
|---|
|  |  |  | :key="item.projectId" | 
|---|
|  |  |  | :label="item.projectName" | 
|---|
|  |  |  | :value="item.projectId" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <!-- <el-col :span="24"> | 
|---|
|  |  |  | <el-form-item  label="发货仓库" prop="addressee"> | 
|---|
|  |  |  | <el-select  v-model="value" placeholder="请选择"> | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="item in options" | 
|---|
|  |  |  | :key="item.value" | 
|---|
|  |  |  | :label="item.label" | 
|---|
|  |  |  | :value="item.value"> | 
|---|
|  |  |  | </el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> --> | 
|---|
|  |  |  | </el-row> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="product-view"> | 
|---|
|  |  |  | <CommonFormTableView | 
|---|
|  |  |  | ref="commonFormTableView" | 
|---|
|  |  |  | :detail-enter="isView ? true : false" | 
|---|
|  |  |  | :selectBox="false" | 
|---|
|  |  |  | :addTypeIdMultiple="true" | 
|---|
|  |  |  | pageName="quotation" | 
|---|
|  |  |  | :detailEnter="true" | 
|---|
|  |  |  | :isOperate=" | 
|---|
|  |  |  | (autoCodeHeadersObj.Bjd == 'yes' && editConfig.infomation.quotation_number) || | 
|---|
|  |  |  | autoCodeHeadersObj.Bjd != 'yes' | 
|---|
|  |  |  | ? true | 
|---|
|  |  |  | : false | 
|---|
|  |  |  | " | 
|---|
|  |  |  | :quotationNumber="autoCodeHeadersObj.Bjd == 'yes' ? editConfig.infomation.quotation_number : ''" | 
|---|
|  |  |  | :product-table-list="productTableList" | 
|---|
|  |  |  | @inputContent="inputContent" | 
|---|
|  |  |  | @addProductClick="addProductClick" | 
|---|
|  |  |  | @getSelectArray="getSelectArray" | 
|---|
|  |  |  | @emptyProductClick="emptyProductClick" | 
|---|
|  |  |  | @clearupProduct="clearupProduct" | 
|---|
|  |  |  | ></CommonFormTableView> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <p class="tips" v-if="completely"><i class="el-icon-warning-outline">当前仓库能满足发货需求,直接发货吧</i></p> | 
|---|
|  |  |  | <p class="tips" v-if="satisfyPartly"><i class="el-icon-warning-outline"></i>当前仓库只能部分满足发货需求,是否确认发货</p> | 
|---|
|  |  |  | <p class="tips" v-if="dissatisfy"><i class="el-icon-warning-outline"></i>当前仓库库存不足,不能完成一次发货,请选择其他仓库吧</p> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-form> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <div slot="footer" class="dialog-footer"> | 
|---|
|  |  |  | <el-button type="primary" size="small" :disabled="dissatisfy" @click="saveClick('form')">确定发货</el-button> | 
|---|
|  |  |  | <el-button size="small" @click="editConfig.visible = false">取消</el-button> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-dialog> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import CommonFormTableView from "@/components/makepager/CommonFormTableView" | 
|---|
|  |  |  | import { getAllData } from "@/api/client/client" | 
|---|
|  |  |  | import { getProjectList,getDeliveryPrepareInfo,confirmOutput } from "@/api/sales/salesDetails" | 
|---|
|  |  |  | import codeMixin from "@/components/makepager/mixin/codeMixin" | 
|---|
|  |  |  | import { getSaleChanceList } from "@/api/sales/salesOpportunity" | 
|---|
|  |  |  | import { getDataByType } from "@/api/data" | 
|---|
|  |  |  | import { mapActions } from "vuex" | 
|---|
|  |  |  | import { getQuotationList } from "@/api/sales/quotation" | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | name: "ShipmentsDialog", | 
|---|
|  |  |  | mixins: [codeMixin], | 
|---|
|  |  |  | props: { | 
|---|
|  |  |  | editCommonConfig: { | 
|---|
|  |  |  | type: Object, | 
|---|
|  |  |  | default: () => { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | visible: false, | 
|---|
|  |  |  | title: "新建", | 
|---|
|  |  |  | infomation: {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | components: { CommonFormTableView }, | 
|---|
|  |  |  | computed: { | 
|---|
|  |  |  | clientList() { | 
|---|
|  |  |  | return this.$store.state.getClientName.clientList | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | dialogWidth: "60%", | 
|---|
|  |  |  | editConfig: this.editCommonConfig, | 
|---|
|  |  |  | rules: { | 
|---|
|  |  |  | client_name: [{ required: true, message: "请选择客户名称", trigger: "change" }], | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | memberOptions: [], | 
|---|
|  |  |  | selSourceOrderOptions: [], | 
|---|
|  |  |  | wechatOrderStatusOptions: [], // 微信订单状态 | 
|---|
|  |  |  | currencyOptions: [{ id: 1, name: "人民币" }], // 币种 | 
|---|
|  |  |  | approvalWorkflowOptions: [], // 审批流程 | 
|---|
|  |  |  | productTableList: {}, | 
|---|
|  |  |  | showSummary: { | 
|---|
|  |  |  | show: true, | 
|---|
|  |  |  | total: true, | 
|---|
|  |  |  | sumProp: ["Amount", "total"], | 
|---|
|  |  |  | mergeNumber: 7 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | editSelectClientConfig: { | 
|---|
|  |  |  | editVisible: false, | 
|---|
|  |  |  | title: "", | 
|---|
|  |  |  | infomation: {} | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | editSelectChanceConfig: { | 
|---|
|  |  |  | editVisible: false, | 
|---|
|  |  |  | title: "", | 
|---|
|  |  |  | infomation: {}, | 
|---|
|  |  |  | search_map: {} | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | editSelCommonConfig: { | 
|---|
|  |  |  | editVisible: false, | 
|---|
|  |  |  | title: "", | 
|---|
|  |  |  | infomation: {} | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | clientId: this.editCommonConfig.infomation.client_id, | 
|---|
|  |  |  | saleChanceId: this.editCommonConfig.infomation.sale_chance_id, | 
|---|
|  |  |  | subbillId: this.editCommonConfig.infomation.subbillId, | 
|---|
|  |  |  | productId: 1, | 
|---|
|  |  |  | isNoProduct: true, | 
|---|
|  |  |  | addCollectionConfig: { | 
|---|
|  |  |  | visible: false, | 
|---|
|  |  |  | title: "新建", | 
|---|
|  |  |  | infomation: {} | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | amountTotal: 0, | 
|---|
|  |  |  | isNameChanceEdit: false, | 
|---|
|  |  |  | isAddQuatation: true, | 
|---|
|  |  |  | // 交付类型 | 
|---|
|  |  |  | deliveryTypeList: getDataByType("deliveryType"), | 
|---|
|  |  |  | projectList: [], | 
|---|
|  |  |  | quotationList: [], | 
|---|
|  |  |  | quotationId: this.editCommonConfig.infomation.quotationId, | 
|---|
|  |  |  | tableData: [], | 
|---|
|  |  |  | isView: this.editCommonConfig.title === "查看", | 
|---|
|  |  |  | thatMember: {}, | 
|---|
|  |  |  | pickerOptions: { | 
|---|
|  |  |  | disabledDate(time) { | 
|---|
|  |  |  | return time.getTime() < Date.now() - 8.64e7 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | pickerOptionsBefore: { | 
|---|
|  |  |  | disabledDate(time) { | 
|---|
|  |  |  | return time.getTime() > Date.now() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | shipmentsType:1, | 
|---|
|  |  |  | options: [{ | 
|---|
|  |  |  | value: '1', | 
|---|
|  |  |  | label: '仓库1--库存不足的情况' | 
|---|
|  |  |  | }, { | 
|---|
|  |  |  | value: '2', | 
|---|
|  |  |  | label: '仓库1--库存充足的情况' | 
|---|
|  |  |  | }], | 
|---|
|  |  |  | value:"", | 
|---|
|  |  |  | dissatisfy:false, // 一次发货-不足 | 
|---|
|  |  |  | completely:false, // 多次发货,充足 | 
|---|
|  |  |  | satisfyPartly:false, //多次发货,部分满足 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | mounted(){ | 
|---|
|  |  |  | this.getSaleChanceList() | 
|---|
|  |  |  | this.getQuotation() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | created() { | 
|---|
|  |  |  | this.$store.dispatch("geClient") | 
|---|
|  |  |  | this.setTableForm() | 
|---|
|  |  |  | this.getCommonData() | 
|---|
|  |  |  | this.formInfo() | 
|---|
|  |  |  | this.getUseSystemSet({ modeType: "xsmx" }) | 
|---|
|  |  |  | this.getProjectList() | 
|---|
|  |  |  | this.getDeliveryPrepareInfo({ | 
|---|
|  |  |  | saleDetailID: this.editCommonConfig.infomation.saleDetailID, | 
|---|
|  |  |  | saleDetailNumber: this.editCommonConfig.infomation.saleDetailNumber | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | watch: { | 
|---|
|  |  |  | "editClientManageConfig.visible"(val) { | 
|---|
|  |  |  | if (val) { | 
|---|
|  |  |  | this.formInfo() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | ...mapActions(["getChanceFilter", "getSubunitFliter"]), | 
|---|
|  |  |  | formInfo() { | 
|---|
|  |  |  | this.objCode.type = "销售明细编码" | 
|---|
|  |  |  | this.objCode.codeStandID = "" | 
|---|
|  |  |  | if (this.editConfig.infomation.codeStandID) { | 
|---|
|  |  |  | this.objCode.codeStandID = this.editConfig.infomation.codeStandID | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.getRCodeStandardList() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | getCommonData() { | 
|---|
|  |  |  | getAllData() | 
|---|
|  |  |  | .then((res) => { | 
|---|
|  |  |  | this.memberOptions = res.data.member | 
|---|
|  |  |  | if (this.editConfig.title === "新建") { | 
|---|
|  |  |  | let username = document.cookie.replace(/(?:(?:^|.*;\s*)username\s*=\s*([^;]*).*$)|^.*$/, "$1") | 
|---|
|  |  |  | this.memberOptions.map((item) => { | 
|---|
|  |  |  | if (item.username == username) { | 
|---|
|  |  |  | this.$set(this.editConfig.infomation, "memberId", item.id) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch((err) => { | 
|---|
|  |  |  | console.log(err) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | dataProcess() { | 
|---|
|  |  |  | this.saleChancelist.map((item) => { | 
|---|
|  |  |  | if (this.saleChanceId === item.id) { | 
|---|
|  |  |  | this.editConfig.infomation.sale_chance_name = item.name | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 保存 | 
|---|
|  |  |  | saveClick(formName) { | 
|---|
|  |  |  | this.$refs[formName].validate((valid) => { | 
|---|
|  |  |  | if (valid) { | 
|---|
|  |  |  | const params = this.saveParams() | 
|---|
|  |  |  | confirmOutput(params).then((res)=>{ | 
|---|
|  |  |  | console.log(res,"res") | 
|---|
|  |  |  | if(res&&res.code===200){ | 
|---|
|  |  |  | this.$message.success("发货成功!") | 
|---|
|  |  |  | this.$parent.getData() | 
|---|
|  |  |  | this.editConfig.visible=false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | saveParams() { | 
|---|
|  |  |  | let params = { | 
|---|
|  |  |  | products:[], | 
|---|
|  |  |  | saleDetailNumber:this.editCommonConfig.infomation.saleDetailNumber | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.productTableList.tableData.map((item)=>{ | 
|---|
|  |  |  | let obj={ | 
|---|
|  |  |  | number:item.number, | 
|---|
|  |  |  | outputAmount:item.outputAmount||'' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | params.products.push(obj) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | return params | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | handleClose() { | 
|---|
|  |  |  | this.editConfig.visible = false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 获取报价单 | 
|---|
|  |  |  | getQuotation(id, value) { | 
|---|
|  |  |  | let params={ | 
|---|
|  |  |  | page: 0, | 
|---|
|  |  |  | pageSize: 0, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(id){ | 
|---|
|  |  |  | params.search_map={ | 
|---|
|  |  |  | sale_chance_id: id | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | getQuotationList(params).then((res) => { | 
|---|
|  |  |  | if (res.code == 200) { | 
|---|
|  |  |  | console.log(res) | 
|---|
|  |  |  | this.quotationList = res.data.list | 
|---|
|  |  |  | this.count = res.data.count | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 选择客户相关方法 | 
|---|
|  |  |  | querySearchAsync(queryString, cb, value) { | 
|---|
|  |  |  | var restaurants = [] | 
|---|
|  |  |  | if (value === "client") { | 
|---|
|  |  |  | restaurants = this.clientList | 
|---|
|  |  |  | console.log(restaurants, "客户单") | 
|---|
|  |  |  | } else if (value === "chance") { | 
|---|
|  |  |  | restaurants = this.saleChancelist | 
|---|
|  |  |  | } else if (value === "subbill") { | 
|---|
|  |  |  | restaurants = this.subOrderList | 
|---|
|  |  |  | } else if (value === "quotation") { | 
|---|
|  |  |  | restaurants = this.quotationList | 
|---|
|  |  |  | } | 
|---|
|  |  |  | var results = queryString ? restaurants.filter(this.createStateFilter(queryString, value)) : restaurants | 
|---|
|  |  |  | cb(results) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | createStateFilter(queryString, value) { | 
|---|
|  |  |  | return (state) => { | 
|---|
|  |  |  | if (value === "subbill" || value === "quotation") { | 
|---|
|  |  |  | return state.number.toLowerCase().indexOf(queryString.toLowerCase()) === 0 | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 销售机会列表 | 
|---|
|  |  |  | async getSaleChanceList(item) { | 
|---|
|  |  |  | let params={} | 
|---|
|  |  |  | if(item){ | 
|---|
|  |  |  | params={ | 
|---|
|  |  |  | page: 0, | 
|---|
|  |  |  | pageSize: 0, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | params.search_map={ | 
|---|
|  |  |  | client_id: item.id | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | params={ | 
|---|
|  |  |  | page: 0, | 
|---|
|  |  |  | pageSize: 0, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | await getSaleChanceList(params).then((res) => { | 
|---|
|  |  |  | console.log(res) | 
|---|
|  |  |  | this.saleChancelist = res.data.list | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | selClientClick(value) { | 
|---|
|  |  |  | if (value === "client") { | 
|---|
|  |  |  | this.editSelectClientConfig.editVisible = true | 
|---|
|  |  |  | } else if (value === "chance") { | 
|---|
|  |  |  | if (this.clientId) { | 
|---|
|  |  |  | this.editSelectChanceConfig.clientId = this.clientId | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.editSelectChanceConfig.editVisible = true | 
|---|
|  |  |  | } else if (value === "subbill") { | 
|---|
|  |  |  | this.editSelCommonConfig.title = "销售子单" | 
|---|
|  |  |  | this.editSelCommonConfig.editVisible = true | 
|---|
|  |  |  | this.editSelCommonConfig.clientId = this.clientId | 
|---|
|  |  |  | } else if (value === "quotation") { | 
|---|
|  |  |  | this.editSelCommonConfig.title = "报价单" | 
|---|
|  |  |  | if (this.saleChanceId && this.clientId) { | 
|---|
|  |  |  | this.editSelCommonConfig.clientId = this.clientId | 
|---|
|  |  |  | // 正向选择客户 销售机会  报价单 | 
|---|
|  |  |  | this.editSelCommonConfig.isRequest = false | 
|---|
|  |  |  | this.editSelCommonConfig.count = this.count | 
|---|
|  |  |  | this.editSelCommonConfig.tableInfomation = [...this.quotationList] | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | // 反向选择 | 
|---|
|  |  |  | this.editSelCommonConfig.isRequest = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.editSelCommonConfig.editVisible = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | setTableForm() { | 
|---|
|  |  |  | if (this.editConfig.title === "新建" || this.editConfig.infomation.products.length === 0) { | 
|---|
|  |  |  | this.tableData = [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | productId: this.productId, | 
|---|
|  |  |  | id: 0, | 
|---|
|  |  |  | amount: 0, | 
|---|
|  |  |  | desc: "", | 
|---|
|  |  |  | name: "", | 
|---|
|  |  |  | number: "", | 
|---|
|  |  |  | price: 0, | 
|---|
|  |  |  | cost: "", | 
|---|
|  |  |  | profit: "", | 
|---|
|  |  |  | margin: "", | 
|---|
|  |  |  | total: 0, | 
|---|
|  |  |  | unit: "" | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.tableData = this.editConfig.infomation.products | 
|---|
|  |  |  | this.tableData.map((item, index) => { | 
|---|
|  |  |  | item.productId = index + 1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.getQuotation(this.editConfig.infomation.saleChanceId, "全部产品") | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.productTableList = { | 
|---|
|  |  |  | tableData: this.tableData, | 
|---|
|  |  |  | isReturn: true, | 
|---|
|  |  |  | tableColumn: [ | 
|---|
|  |  |  | { label: "产品编号", prop: "number" }, | 
|---|
|  |  |  | { label: "产品名称", prop: "name",   min: 110 }, | 
|---|
|  |  |  | { label: "订单数量", prop: "specs" }, | 
|---|
|  |  |  | { label: "订单完成数量", prop: "type" }, | 
|---|
|  |  |  | // { label: "可用库存", prop: "unit" }, | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 产品列表输入 | 
|---|
|  |  |  | inputContent(val, prop, row) { | 
|---|
|  |  |  | // this.productId = row.productId | 
|---|
|  |  |  | this.tableData.map((item) => { | 
|---|
|  |  |  | if (item.number === row.number) { | 
|---|
|  |  |  | item[prop] = val | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 产品新增 | 
|---|
|  |  |  | addProductClick() { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 新增方式修改 | 
|---|
|  |  |  | getSelectArray(val, index) { | 
|---|
|  |  |  | if (this.tableData.length == 1 && this.tableData[0].number.length == 0) { | 
|---|
|  |  |  | this.tableData = [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (index < this.tableData.length) { | 
|---|
|  |  |  | this.tableData.splice(index, 1) | 
|---|
|  |  |  | val.map((item, ind) => { | 
|---|
|  |  |  | this.tableData.splice(index + ind, 0, item) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.tableData = this.tableData.concat(val) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.productTableList.tableData = this.tableData | 
|---|
|  |  |  | this.showSummary.show = true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | //  产品清空 | 
|---|
|  |  |  | emptyProductClick() { | 
|---|
|  |  |  | this.productId = 1 | 
|---|
|  |  |  | this.tableData = [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | productId: this.productId, | 
|---|
|  |  |  | id: 0, | 
|---|
|  |  |  | amount: 0, | 
|---|
|  |  |  | desc: "", | 
|---|
|  |  |  | name: "", | 
|---|
|  |  |  | number: "", | 
|---|
|  |  |  | price: 0, | 
|---|
|  |  |  | cost: "", | 
|---|
|  |  |  | profit: "", | 
|---|
|  |  |  | margin: "", | 
|---|
|  |  |  | total: 0, | 
|---|
|  |  |  | unit: "" | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | this.productTableList.tableData = this.tableData | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | clearupProduct(data) { | 
|---|
|  |  |  | this.tableData = data | 
|---|
|  |  |  | this.productTableList.tableData = this.tableData | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 获取项目列表 | 
|---|
|  |  |  | async getProjectList() { | 
|---|
|  |  |  | await getProjectList({ | 
|---|
|  |  |  | page: 1, | 
|---|
|  |  |  | pageSize: 100 | 
|---|
|  |  |  | }).then((res) => { | 
|---|
|  |  |  | this.projectList = res.data | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 销售负责人自定义校验规则 | 
|---|
|  |  |  | validateMemberId(rule, value, callback) { | 
|---|
|  |  |  | if (this.editConfig.infomation?.memberId > 0) { | 
|---|
|  |  |  | callback() | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | callback(new Error("请选择销售负责人")) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 选择发货方式 | 
|---|
|  |  |  | handleRadioChange(value) { | 
|---|
|  |  |  | if(value===1){ | 
|---|
|  |  |  | this.completely=false | 
|---|
|  |  |  | this.satisfyPartly=false | 
|---|
|  |  |  | this.productTableList.tableColumn=[ | 
|---|
|  |  |  | { label: "产品编号", prop: "number" }, | 
|---|
|  |  |  | { label: "产品名称", prop: "name",   min: 110 }, | 
|---|
|  |  |  | { label: "订单数量", prop: "orderAmount" }, | 
|---|
|  |  |  | { label: "订单完成数量", prop: "finishAmount" }, | 
|---|
|  |  |  | { label: "可用库存", prop: "availableAmount" }, | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | this.dissatisfy=false | 
|---|
|  |  |  | let portion=0 | 
|---|
|  |  |  | this.productTableList.tableData.map((item)=>{ | 
|---|
|  |  |  | if(item.availableAmount-item.leftAmount<0){ | 
|---|
|  |  |  | this.dissatisfy=true | 
|---|
|  |  |  | return this.dissatisfy | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | portion++ | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | if(portion===this.productTableList.tableData.length){ | 
|---|
|  |  |  | this.dissatisfy=false | 
|---|
|  |  |  | this.completely=false | 
|---|
|  |  |  | this.completely=true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else if(value===2){ | 
|---|
|  |  |  | this.dissatisfy=false | 
|---|
|  |  |  | this.productTableList.tableColumn= [ | 
|---|
|  |  |  | { label: "产品编号", prop: "number" }, | 
|---|
|  |  |  | { label: "产品名称", prop: "name",  min: 110 }, | 
|---|
|  |  |  | { label: "订单数量", prop: "orderAmount" }, | 
|---|
|  |  |  | { label: "订单完成数量", prop: "finishAmount" }, | 
|---|
|  |  |  | { label: "可用库存", prop: "availableAmount" }, | 
|---|
|  |  |  | { label: "未发货数量", prop: "leftAmount",  }, | 
|---|
|  |  |  | { label: "本次发货数量", prop: "outputAmount", inputFloat: true,isRequird: true  }, | 
|---|
|  |  |  | { label: "剩余发货数量", prop: "availableAmount",}, | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | let portion=0 | 
|---|
|  |  |  | this.productTableList.tableData.map((item)=>{ | 
|---|
|  |  |  | if(item.availableAmount-item.leftAmount>=0){ | 
|---|
|  |  |  | portion++ | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | if(0<portion<this.productTableList.tableData.length){ | 
|---|
|  |  |  | this.satisfyPartly=true | 
|---|
|  |  |  | }else if(portion===this.productTableList.tableData.length){ | 
|---|
|  |  |  | this.completely=true | 
|---|
|  |  |  | this.dissatisfy=fasle | 
|---|
|  |  |  | }else if(portion===0){ | 
|---|
|  |  |  | this.dissatisfy=true | 
|---|
|  |  |  | this.completely=false | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 产品入库信息 | 
|---|
|  |  |  | async getDeliveryPrepareInfo(params){ | 
|---|
|  |  |  | await getDeliveryPrepareInfo(params).then((res)=>{ | 
|---|
|  |  |  | if(res&&res.code===200){ | 
|---|
|  |  |  | this.productTableList.tableData=res.data||[] | 
|---|
|  |  |  | if(this.shipmentsType===1){ | 
|---|
|  |  |  | this.productTableList.tableData.map((item)=>{ | 
|---|
|  |  |  | if(item.availableAmount-item.leftAmount<0){ | 
|---|
|  |  |  | this.dissatisfy=true | 
|---|
|  |  |  | return this.dissatisfy | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- Add "scoped" attribute to limit CSS to this component only --> | 
|---|
|  |  |  | <style lang="scss" scoped> | 
|---|
|  |  |  | ::v-deep { | 
|---|
|  |  |  | .iframe-dialog .el-dialog__body { | 
|---|
|  |  |  | .el-form { | 
|---|
|  |  |  | .el-form-item { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .basic-info { | 
|---|
|  |  |  | .basic-info-title { | 
|---|
|  |  |  | background-color: #f4f8fe; | 
|---|
|  |  |  | padding-left: 10px; | 
|---|
|  |  |  | font-size: 15px; | 
|---|
|  |  |  | font-weight: bold; | 
|---|
|  |  |  | color: #666; | 
|---|
|  |  |  | height: 42px; | 
|---|
|  |  |  | line-height: 42px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .basic-info-view { | 
|---|
|  |  |  | margin-top: 10px; | 
|---|
|  |  |  | padding-right: 40px; | 
|---|
|  |  |  | .custom-name, | 
|---|
|  |  |  | .common-select { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | .common-select-sel { | 
|---|
|  |  |  | width: 270px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .common-select-btn { | 
|---|
|  |  |  | margin-left: 5px; | 
|---|
|  |  |  | font-size: 16px; | 
|---|
|  |  |  | cursor: pointer; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .annex-view { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | color: #6166d3; | 
|---|
|  |  |  | .setFormat { | 
|---|
|  |  |  | margin-left: 10px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .tips{ | 
|---|
|  |  |  | font-size: 16px; | 
|---|
|  |  |  | color: #FF9C49; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | margin-left: 20px; | 
|---|
|  |  |  | i{ | 
|---|
|  |  |  | font-size: 24px; | 
|---|
|  |  |  | margin-right: 10px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .unflod-collapse { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | height: 30px; | 
|---|
|  |  |  | justify-content: center; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | color: #6166d3; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .dialog-footer { | 
|---|
|  |  |  | background-color: #f5f5f5; | 
|---|
|  |  |  | height: 55px; | 
|---|
|  |  |  | line-height: 55px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .el-input__inner { | 
|---|
|  |  |  | text-align: left; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|