| | |
| | | <template> |
| | | <div class="sales-details"> |
| | | <div v-if="isDetail" class="detail-top"> |
| | | <DetailListCommonBtn :query-class-options="queryClassOptions" /> |
| | | <DetailListCommonBtn /> |
| | | </div> |
| | | |
| | | <div v-else class="filter"> |
| | | <div class="filter-card"> |
| | | <CommonSearch |
| | | :show-add="false" |
| | | :show-download="false" |
| | | :amount-view="false" |
| | | :show-action-btn="false" |
| | | placeholder="请输入订单编号" |
| | | @searchClick="onFilterSearch" |
| | | > |
| | | <CommonSearch :show-add="false" :show-download="false" :amount-view="false" :show-action-btn="false" |
| | | placeholder="请输入订单编号" @searchClick="onFilterSearch"> |
| | | <template slot="leftButton"> |
| | | <el-button size="small" type="primary" @click="addBtnClick">新建</el-button> |
| | | <!-- <el-button size="small" @click="delClick">删除</el-button> --> |
| | |
| | | </div> |
| | | |
| | | <div class="body"> |
| | | <div class="body-card"> |
| | | <!-- <div class="body-card"> --> |
| | | <div class="content-top"> |
| | | <div class="list-view"> |
| | | <TableCommonView |
| | | ref="tableListRef" |
| | | :show-summary="showSummary" |
| | | :table-list="tableList" |
| | | @selClientClick="selClientClick" |
| | | @selCommonClick="selCommonClick" |
| | | @getSelectArray="getSelectArray" |
| | | @selTableCol="selTableCol" |
| | | > |
| | | <TableCommonView ref="tableListRef" :show-summary="showSummary" :table-list="tableList" |
| | | @selClientClick="selClientClick" @selCommonClick="selCommonClick" @getSelectArray="getSelectArray" |
| | | @selTableCol="selTableCol" @tableRowClick="tableRowClick" :selectClassRow="selectRow"> |
| | | <template slot="tableButton"> |
| | | <el-table-column label="操作" width="90"> |
| | | <el-table-column label="操作" width="180"> |
| | | <template slot-scope="scope"> |
| | | <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button> |
| | | <el-button @click="delClick(scope.row.id)" type="text" size="small">删除</el-button> |
| | | <el-button @click.stop="handleClick(scope.row, '查看')" type="text" size="small">查看</el-button> |
| | | <template v-if="scope.row.status === 1"> |
| | | <el-button @click.stop="handleClick(scope.row, '编辑')" type="text" size="small">编辑</el-button> |
| | | <el-button @click.stop="submitClick(scope.row)" type="text" size="small">确认提交</el-button> |
| | | <!-- <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"> |
| | | <el-button @click.stop="shipmentsClick(scope.row)" type="text" size="small">发货</el-button> |
| | | </template> |
| | | <template v-if="scope.row.status === 3"> |
| | | <el-button @click.stop="confirmClick(scope.row)" type="text" size="small">发货完成</el-button> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </TableCommonView> |
| | | </div> |
| | | |
| | | <div class="btn-pager"> |
| | | <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> |
| | | </div> |
| | | </div> |
| | | <div class="content-bottom"> |
| | | <div class="bottom-tabs" :class="!isDetail ? 'bgcGrey' : 'bgcWhite'"> |
| | | <div class="tab-pane" @click="getTab(0)" :style="{ |
| | | background: TabsIndex == 0 ? '#2a78fb' : '#F1F3F8', |
| | | color: TabsIndex == 0 ? '#fff' : '#666' |
| | | }"> |
| | | 产品信息 |
| | | </div> |
| | | <div class="tab-pane" @click="getTab(1)" :style="{ |
| | | background: TabsIndex == 1 ? '#2a78fb' : '#F1F3F8', |
| | | color: TabsIndex == 1 ? '#fff' : '#666' |
| | | }"> |
| | | 发货信息 |
| | | </div> |
| | | <div class="tab-pane" @click="getTab(2)" :style="{ |
| | | background: TabsIndex == 2 ? '#2a78fb' : '#F1F3F8', |
| | | color: TabsIndex == 2 ? '#fff' : '#666' |
| | | }"> |
| | | 制造信息 |
| | | </div> |
| | | <div class="tab-pane" @click="getTab(3)" :style="{ |
| | | background: TabsIndex == 3 ? '#2a78fb' : '#F1F3F8', |
| | | color: TabsIndex == 3 ? '#fff' : '#666' |
| | | }"> |
| | | 采购信息 |
| | | </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"> |
| | | <!-- <template slot="tableButton"> |
| | | <el-table-column label="操作" width="160" fixed="right"> |
| | | <template slot-scope="scope"> |
| | | <el-button @click="viewClick(scope.row)" type="text" size="small">查看</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> --> |
| | | </TableCommonView> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 确认提交-选择项目 --> |
| | | <el-dialog title="请选择项目" :visible.sync="projectListShow" width="400px" :before-close="handleClose"> |
| | | <el-form label-width="100px" class="demo-ruleForm" ref="form" :rules="rules" :model="projects"> |
| | | <el-form-item label="选择项目" prop="projectId"> |
| | | <el-select v-model="projects.projectId" placeholder="请选择" size="mini" style="width: 100%"> |
| | | <el-option v-for="item in projectList" :key="item.projectId" :label="item.projectName" |
| | | :value="item.projectId"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer dialog_btn"> |
| | | <el-button @click="projectListShow = false">取 消</el-button> |
| | | <el-button type="primary" @click="affirmCommitBtn">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 新建/编辑 --> |
| | | <AddSalesDetailsDialog |
| | | v-if="editConfig.visible" |
| | | :edit-common-config="editConfig" |
| | | @addCollectionPlanClick="addCollectionPlanClick" |
| | | /> |
| | | <AddSalesDetailsDialog v-if="editConfig.visible" :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 { getSalesDetailsList, getDelSalesDetails } from "@/api/sales/salesDetails" |
| | | import ShipmentsDialog from "@/views/sales/salesDetails/shipmentsDialog" |
| | | import { |
| | | getSalesDetailsList, |
| | | getDelSalesDetails, |
| | | getProductInventoryInfo, |
| | | getProductOrderInfo, |
| | | updateStatus, |
| | | getProjectList, |
| | | sendSalesDetailsToOtherSystem, |
| | | confirmOutputOver |
| | | } from "@/api/sales/salesDetails" |
| | | import pageMixin from "@/components/makepager/pager/mixin/pageMixin" |
| | | import DetailSpecification from "@/views/sales/salesDetails/DetailSpecification" |
| | | import AddCollectionPlan from "@/views/other/payment/collectionPlan/AddCollectionPlan" |
| | | |
| | | import { getDataByType } from "@/api/data" |
| | | export default { |
| | | name: "SalesDetails", |
| | | props: { |
| | |
| | | mixins: [pageMixin], |
| | | components: { |
| | | AddSalesDetailsDialog, |
| | | ShipmentsDialog, |
| | | DetailSpecification, |
| | | DetailClientManage: () => import("@/views/client/client/DetailClientManage"), |
| | | AddCollectionPlan |
| | |
| | | } |
| | | }, |
| | | data() { |
| | | // 产品信息 |
| | | const productColumn = [ |
| | | { label: "产品编号", prop: "productId", default: true }, |
| | | { label: "产品名称", prop: "productName" }, |
| | | { label: "产品规格", prop: "specs" }, |
| | | { label: "单位", prop: "unit" }, |
| | | { label: "订单数量", prop: "amount" }, |
| | | { |
| | | label: "已完成数量", |
| | | prop: "finishAmount", |
| | | isClass: true, |
| | | getClassName: this.getAmountClassName, |
| | | }, |
| | | { |
| | | label: "已发货数量", prop: "deliveryAmount", |
| | | isClass: true, |
| | | getClassName: this.getAmountClassName, |
| | | }, |
| | | { |
| | | label: "采购数量", |
| | | isClass: true, |
| | | getClassName: this.getFinishAmountClassName, |
| | | prop: "purchaseAmount", |
| | | }, |
| | | { |
| | | label: "生产数量", prop: "makeAmount", |
| | | isClass: true, |
| | | getClassName: this.getFinishAmountClassName, |
| | | }, |
| | | { |
| | | label: "委外数量", prop: "outsourcingAmount", |
| | | isClass: true, |
| | | getClassName: this.getFinishAmountClassName, |
| | | }, |
| | | { 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: "carrier" }, |
| | | { label: "运单号", prop: "waybill" }, |
| | | { label: "创建时间", prop: "warehouse" }, |
| | | { label: "状态", prop: "status", isCallMethod: true, getCallMethod: this.getStatusFive }, |
| | | ] |
| | | // 制造信息 |
| | | const makeColumn = [ |
| | | { label: "生产订单", prop: "orderId", default: true }, |
| | | { label: "产品编号", prop: "productId" }, |
| | | { label: "产品名称", prop: "productName" }, |
| | | { label: "产品规格", prop: "specs" }, |
| | | { label: "产品单位", prop: "unit" }, |
| | | { label: "订单数量", prop: "amount" }, |
| | | { label: "完成数量", prop: "finishAmount" }, |
| | | { label: "工单编号", prop: "workOrderId" }, |
| | | { label: "工单状态", prop: "workOrderStatus" }, |
| | | { label: "计划开始时间", prop: "startTime",min:130 }, |
| | | { label: "计划结束时间", prop: "endTime",min:130 } |
| | | ] |
| | | // 采购信息 |
| | | const purchaseColumn = [ |
| | | { |
| | | label: "采购单号", |
| | | prop: "purchaseNumber", |
| | | 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: "status", |
| | | isCallMethod: true, |
| | | getCallMethod: this.getpurchaseStatus |
| | | } |
| | | ] |
| | | // 委外 |
| | | const outsourceColumn = [ |
| | | { |
| | | label: "委外订单", |
| | | prop: "outsourcingId", |
| | | }, |
| | | { |
| | | label: "产品编号", |
| | | prop: "productId", |
| | | }, |
| | | { |
| | | label: "产品名称", |
| | | prop: "productName", |
| | | }, |
| | | { |
| | | label: "产品规格", |
| | | prop: "specs", |
| | | }, |
| | | { |
| | | label: "产品单位", |
| | | prop: "unit", |
| | | }, |
| | | { |
| | | label: "委外数量", |
| | | prop: "amount", |
| | | }, |
| | | { |
| | | label: "完成数量", |
| | | prop: "finishAmount", |
| | | }, |
| | | { |
| | | label: "订单状态", |
| | | prop: "outsourcingStatus", |
| | | }, |
| | | { |
| | | label: "委外供应商", |
| | | prop: "supplierName", |
| | | }, |
| | | { |
| | | label: "签约日期", |
| | | prop: "startTime", |
| | | }, |
| | | { |
| | | label: "交付日期", |
| | | prop: "endTime", |
| | | }, |
| | | ] |
| | | return { |
| | | tableList: {}, |
| | | queryClassOptions: [ |
| | | { value: "1", label: "全部" }, |
| | | { value: "2", label: "已发货" }, |
| | | { value: "3", label: "待采购" }, |
| | | { value: "4", label: "本月交付" }, |
| | | { value: "5", label: "已作废" } |
| | | ], |
| | | searchOptions: [], |
| | | operatesList: [ |
| | | { id: "1", name: "共享" }, |
| | | { id: "2", name: "批量编辑" }, |
| | | { id: "3", name: "导出" }, |
| | | { id: "4", name: "下载全部附件" }, |
| | | { id: "5", name: "更改创建人" }, |
| | | { id: "6", name: "树结构设置" }, |
| | | { id: "7", name: "审批设置" }, |
| | | { id: "8", name: "恢复预设列宽" } |
| | | ], |
| | | editConfig: { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: {} |
| | | }, |
| | | editShipmentsConfig: { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: { |
| | | saleDetailID: null, |
| | | saleDetailNumber: null, |
| | | |
| | | } |
| | | }, |
| | | showSummary: { |
| | | show: false, |
| | | sumProp: [ |
| | | "receiveTotalAmount", |
| | | "total", |
| | | "amountTotal", |
| | | "amountReceivable", |
| | | "invoicedAmount", |
| | | "uninvoicedAmount", |
| | |
| | | }, |
| | | tableColumn: [ |
| | | { label: "订单编号", prop: "number", isCommonClick: true, default: true }, |
| | | { label: "客户名称", prop: "client_name", isClientClick: true }, |
| | | { label: "签约日期", prop: "signTime", width: 150 }, |
| | | { label: "销售负责人", prop: "member_name" }, |
| | | // { label: "出库状态", prop: "outboundStatus" }, |
| | | { label: "已收总额", prop: "receiveTotalAmount", price: true }, |
| | | { label: "合计", prop: "total", price: true }, |
| | | { label: "应收余额", prop: "amountReceivable", price: true }, |
| | | { label: "已开票金额", prop: "invoicedAmount", price: true }, |
| | | { label: "未开票金额", prop: "uninvoicedAmount", price: true }, |
| | | { label: "产品名称", prop: "productName", isProductName: true }, |
| | | { label: "数量", prop: "productNumber", isProductAmount: true }, |
| | | { label: "销售单价", prop: "taxUnitPrice", isProductPrice: true }, |
| | | { label: "价税合计", prop: "priceTax", isProductTotal: true } |
| | | { label: "签约日期", prop: "signTime" }, |
| | | { label: "交付日期", prop: "deliveryDate" }, |
| | | // { label: "订单来源", prop: "source" }, |
| | | { label: "合计", prop: "amountTotal", price: true }, |
| | | { label: "状态", prop: "status", isCallMethod: true, getCallMethod: this.getStatus } |
| | | ], |
| | | showCol: [ |
| | | "订单编号", |
| | | "客户名称", |
| | | "签约日期", |
| | | "销售负责人", |
| | | "已收总额", |
| | | "合计", |
| | | "应收余额", |
| | | "已开票金额", |
| | | "未开票金额", |
| | | showCol: ["订单编号", "销售负责人", "签约日期", "交付日期", "订单来源", "合计", "状态"], |
| | | tableBottomColumn: [], |
| | | showBottomCol: [], |
| | | TabsIndex: "0", |
| | | productTableList: {}, |
| | | productColumn: productColumn, |
| | | showProductCol: ["产品编号", "产品名称", "产品规格", "单位", "订单数量", "已完成数量", "已发货数量", "采购数量", "生产数量", "委外数量", "销售单价", "成本单价", "毛利", "毛利率(%)", "价税合计"], |
| | | inventoryColumn: inventoryColumn, |
| | | showInventoryCol: [ |
| | | "出库单", |
| | | "仓库", |
| | | "产品编号", |
| | | "产品名称", |
| | | "数量", |
| | | "销售单价", |
| | | "价税合计" |
| | | ] |
| | | "产品规格", |
| | | "产品单位", |
| | | "发货数量", |
| | | "订单数量", |
| | | "承运商", |
| | | "运单号", |
| | | "创建时间", |
| | | "状态" |
| | | ], |
| | | makeColumn: makeColumn, |
| | | showMakeCol: ["生产订单", "产品编号", "产品名称", "产品规格", "产品单位", "订单数量", "完成数量", "工单编号", "工单状态", "计划开始时间", "计划结束时间"], |
| | | // 采购 |
| | | purchaseColumn: purchaseColumn, |
| | | outsourceColumn: outsourceColumn, |
| | | showPurchaseCol: ["采购单号", "产品编号", "产品名称", "产品规格", "产品单位", "计划采购量", "完成采购量", "采购单名称", "供应商名称", "状态"], |
| | | showOutsourceCol: ["委外订单", "产品编号", "产品名称", "产品规格", "产品单位", "委外数量", "完成数量", "订单状态", "委外供应商", "签约日期", "交付日期"], |
| | | selectRow: {}, |
| | | projectList: [], |
| | | projectListShow: false, |
| | | projects: { |
| | | projectId: "" |
| | | }, |
| | | thatRow: {}, |
| | | rules: { |
| | | projectId: [{ required: true, message: "请选择项目", trigger: "change" }] |
| | | }, |
| | | purchaseStatusList: getDataByType("purchaseStatus"), |
| | | loading: false, |
| | | isRequest: true, //请求 |
| | | productDataBottom: {}, |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | this.keywordType = this.addConfig.keywordType |
| | | } |
| | | this.getData() |
| | | this.getProjectList() |
| | | }, |
| | | methods: { |
| | | getFinishAmountClassName(val, row) { |
| | | let parts = val.split("/"); |
| | | let numerator = parseInt(parts[0], 10); // 分子 |
| | | let denominator = parseInt(parts[1], 10); // 分母 |
| | | let classname = ""; |
| | | if (numerator / denominator === 0 || numerator === 0) { |
| | | classname = "error"; |
| | | } else if (numerator / denominator === 1) { |
| | | classname = "success"; |
| | | } else if ((numerator / denominator) > 0 && (numerator / denominator) < 1) { |
| | | classname = "warning-radio"; |
| | | } |
| | | console.log(classname, numerator, denominator, "看下") |
| | | return classname; |
| | | }, |
| | | getAmountClassName(val) { |
| | | console.log(val, "val11") |
| | | let classname = ""; |
| | | if (val === 0) { |
| | | classname = "error"; |
| | | } |
| | | return classname; |
| | | }, |
| | | getpurchaseStatus(val) { |
| | | if (val) { |
| | | for (let i in this.purchaseStatusList) { |
| | | if (this.purchaseStatusList[i].id == val) { |
| | | return this.purchaseStatusList[i].name |
| | | } |
| | | } |
| | | } else { |
| | | return "--" |
| | | } |
| | | }, |
| | | setTable() { |
| | | // top 明细单列表 |
| | | this.tableList = { |
| | | selectIndex: true, |
| | | tableInfomation: [], |
| | | allcol: [], |
| | | showcol: this.showCol, |
| | | tableColumn: this.setColumnVisible(this.showCol) |
| | | tableColumn: this.setColumnVisible(this.showCol, this.tableColumn) |
| | | } |
| | | this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label) |
| | | this.setTableList(this.tableList) |
| | | |
| | | // bottom 产品信息/库存信息/制造信息列表 |
| | | this.tableBottomColumn = this.productColumn |
| | | this.showBottomCol = this.showProductCol |
| | | this.setBottomList() |
| | | }, |
| | | // bom 列表 |
| | | setBottomList() { |
| | | this.productTableList = { |
| | | selectIndex: true, |
| | | tableInfomation: [], |
| | | allcol: [], |
| | | showcol: this.showBottomCol, |
| | | tableColumn: this.setColumnVisible(this.showBottomCol, this.tableBottomColumn) |
| | | } |
| | | this.setTableList(this.productTableList) |
| | | }, |
| | | setTableList(tableList) { |
| | | tableList.allcol = tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label) |
| | | this.searchOptions = [] |
| | | for (let i = 0; i < this.tableList.tableColumn.length; i++) { |
| | | const label = this.tableList.tableColumn[i].label |
| | | const value = this.tableList.tableColumn[i].prop |
| | | for (let i = 0; i < tableList.tableColumn.length; i++) { |
| | | const label = tableList.tableColumn[i].label |
| | | const value = tableList.tableColumn[i].prop |
| | | this.searchOptions.push({ value: value, label: label }) |
| | | } |
| | | }, |
| | | setColumnVisible(showCol) { |
| | | return this.tableColumn.map((ele) => { |
| | | setColumnVisible(showCol, tableColumn) { |
| | | return tableColumn.map((ele) => { |
| | | return { |
| | | ...ele, |
| | | isShowColumn: showCol.includes(ele.label) |
| | | } |
| | | }) |
| | | }, |
| | | // top 明细单 |
| | | selTableCol(val) { |
| | | this.showcol = val |
| | | this.tableList.tableColumn = this.setColumnVisible(val) |
| | | this.tableList.tableColumn = this.setColumnVisible(val, this.tableColumn) |
| | | }, |
| | | // bottom 产品信息 |
| | | selBottomTableCol(val) { |
| | | this.showcol = val |
| | | this.productTableList.tableColumn = this.setColumnVisible(val, this.tableBottomColumn) |
| | | }, |
| | | // 请求数据 |
| | | async getData() { |
| | | this.loading = true |
| | | let params = {} |
| | | if (this.addConfig.id) { |
| | | console.log(this.addConfig) |
| | | if (this.addConfig.keywordType === "客户名称") { |
| | | params = { |
| | | number: this.addConfig.keyword, |
| | | clientId: this.addConfig.client_id, |
| | | page: this.pagerOptions.currPage, |
| | | pageSize: this.pagerOptions.pageSize |
| | | } |
| | | } else if (this.addConfig.keywordType === "销售机会") { |
| | | params = { |
| | | saleChanceId: this.addConfig.sale_chance_id, |
| | | page: this.pagerOptions.currPage, |
| | | pageSize: this.pagerOptions.pageSize |
| | | } |
| | | } else if (this.addConfig.keywordType === "销售子单") { |
| | | params = { |
| | | number: this.addConfig.subbill_name, |
| | | page: this.pagerOptions.currPage, |
| | | pageSize: this.pagerOptions.pageSize |
| | | } |
| | |
| | | pageSize: this.pagerOptions.pageSize |
| | | } |
| | | } |
| | | this.loading = true |
| | | await getSalesDetailsList(params) |
| | | .then((res) => { |
| | | console.log(res) |
| | | if (res.code === 200) { |
| | | if (res.data.list && res.data.list.length > 0) { |
| | | const list = res.data.list.map((item) => { |
| | | return { |
| | | ...item, |
| | | client_name: item.client.name, |
| | | member_name: item.Member.username |
| | | member_name: item.Member.username, |
| | | source: "" |
| | | } |
| | | }) |
| | | this.tableList.tableInfomation = list || [] |
| | | this.pagerOptions.totalCount = res.data.count |
| | | if (res.data.count > 0) { |
| | | this.selectRow = this.tableList.tableInfomation.length > 0 ? this.tableList.tableInfomation[0] : {} |
| | | this.tableRowClick(this.selectRow) |
| | | } |
| | | } else { |
| | | this.tableList.tableInfomation = [] |
| | | } |
| | |
| | | this.tableList.tableInfomation = [] |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | // 获取产品/库存信息 |
| | | async getProductInventoryInfo(number) { |
| | | if (number) { |
| | | await getProductInventoryInfo(number) |
| | | .then((res) => { |
| | | console.log(res, "resss") |
| | | if (this.TabsIndex == 1) { |
| | | this.productTableList.tableInfomation = res.data?.length > 0 ? res.data : [] |
| | | } |
| | | }) |
| | | .catch(() => { |
| | | this.productTableList.tableInfomation = [] |
| | | }) |
| | | } |
| | | }, |
| | | // 获取制造信息 |
| | | async getProductOrderInfo(number) { |
| | | console.log(number,this.TabsIndex,"number") |
| | | if (number) { |
| | | if (this.TabsIndex == 0) { |
| | | // 产品信息列表 |
| | | this.tableBottomColumn = this.productColumn // 表头 |
| | | this.showBottomCol = this.showProductCol // 动态表头 |
| | | this.setBottomList() |
| | | } else if (this.TabsIndex == 1) { |
| | | // 发货信息列表 |
| | | this.tableBottomColumn = this.inventoryColumn |
| | | this.showBottomCol = this.showInventoryCol |
| | | this.setBottomList() |
| | | } else if (this.TabsIndex == 2) { |
| | | // 制造信息列表 |
| | | this.tableBottomColumn = this.makeColumn |
| | | this.showBottomCol = this.showMakeCol |
| | | this.setBottomList() |
| | | |
| | | } else if (this.TabsIndex == 3) { |
| | | // 采购信息列表 |
| | | this.tableBottomColumn = this.purchaseColumn |
| | | this.showBottomCol = this.showPurchaseCol |
| | | this.setBottomList() |
| | | } else if (this.TabsIndex == 4) { |
| | | // 委外信息列表 |
| | | this.tableBottomColumn = this.outsourceColumn |
| | | this.showBottomCol = this.showOutsourceCol |
| | | this.setBottomList() |
| | | } |
| | | |
| | | if (this.TabsIndex != 1 && this.isRequest == false) { |
| | | this.isRequest = true; |
| | | this.getListValue(this.productDataBottom) |
| | | return true; |
| | | } |
| | | this.loading = true |
| | | if (this.TabsIndex == 1 && this.selectRow.status == 1) { |
| | | this.productTableList.tableInfomation = [] |
| | | } |
| | | this.getProductInventoryInfo(number) |
| | | |
| | | |
| | | await getProductOrderInfo(number) |
| | | .then((res) => { |
| | | this.productDataBottom = res; |
| | | this.getListValue(this.productDataBottom) |
| | | }) |
| | | .catch(() => { |
| | | this.productTableList.tableInfomation = [] |
| | | }) |
| | | this.loading = false |
| | | } |
| | | this.$forceUpdate() |
| | | }, |
| | | getListValue(res) { |
| | | if (this.TabsIndex == 0) { |
| | | if (res && res.data) { |
| | | res.data.productInfo.map((item => { |
| | | let string1 = "--"; |
| | | let number1 = item.purchaseFinishAmount; |
| | | let val1 = item.purchaseAmount |
| | | if ((val1 && val1 != 0) || (number1 && number1 != 0)) { |
| | | let a1 = val1 || val1 == 0 ? val1 : "--"; |
| | | let b1 = number1 || number1 == 0 ? number1 : "--"; |
| | | string1 = b1 + "/" + a1; |
| | | } |
| | | item.purchaseAmount = string1 |
| | | let string2 = "--"; |
| | | let number2 = item.makeFinishAmount; |
| | | let val2 = item.makeAmount |
| | | if ((val2 && val2 != 0) || (number2 && number2 != 0)) { |
| | | let a2 = val2 || val2 == 0 ? val2 : "--"; |
| | | let b2 = number2 || number2 == 0 ? number2 : "--"; |
| | | string2 = b2 + "/" + a2; |
| | | } |
| | | item.makeAmount = string2 |
| | | let string3 = "--"; |
| | | let number3 = item.outsourcingFinishAmount; |
| | | let val3 = item.outsourcingAmount |
| | | if ((val3 && val3 != 0) || (number3 && number3 != 0)) { |
| | | let a3 = val3 || val3 == 0 ? val3 : "--"; |
| | | let b3 = number3 || number3 == 0 ? number3 : "--"; |
| | | string3 = b3 + "/" + a3; |
| | | } |
| | | item.outsourcingAmount = string3 |
| | | })) |
| | | } |
| | | this.productTableList.tableInfomation = res.data && res.data.productInfo ? res.data.productInfo : [] |
| | | } 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 : [] |
| | | } |
| | | }, |
| | | // 搜索 |
| | | onFilterSearch(searchText) { |
| | |
| | | console.log(this.addConfig) |
| | | this.editConfig.infomation = { |
| | | ...this.addConfig, |
| | | signTime: new Date().toLocaleDateString(), |
| | | currency: "人民币", |
| | | client_name: Object.keys(this.addConfig).length === 0 ? "" : this.addConfig.client_name |
| | | sale_chance_name: "", |
| | | subbill_name: "", |
| | | client_name: this.addConfig?.client_name ?? "", |
| | | quotation_number: "" |
| | | } |
| | | }, |
| | | // 编辑 |
| | | handleClick(row) { |
| | | console.log(row) |
| | | // 查看 编辑 |
| | | handleClick(row, title) { |
| | | let params = JSON.parse(JSON.stringify(row)) |
| | | this.editConfig.title = title |
| | | this.editConfig.infomation = { |
| | | ...params, |
| | | currency: "人民币", |
| | | sale_chance_name: params.saleChance.name, |
| | | deliverType: params.deliverType === 0 ? "" : params.deliverType, |
| | | quotation_number: params.quotation.number |
| | | } |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "编辑" |
| | | this.editConfig.infomation = { ...row, sale_chance_name: "", currency: "人民币" } |
| | | }, |
| | | // 确认提交 |
| | | async submitClick(row) { |
| | | this.thatRow = row |
| | | if (row.projectId == "") { |
| | | this.projectListShow = true |
| | | } else { |
| | | let params = { |
| | | ...row, |
| | | status: 2 |
| | | } |
| | | await sendSalesDetailsToOtherSystem(params).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$message.success("成功推送至aps系统") |
| | | this.getData() |
| | | this.thatRow.status = 2 |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | // 发货 |
| | | shipmentsClick(row) { |
| | | this.editShipmentsConfig.visible = true |
| | | this.editShipmentsConfig.infomation.saleDetailID = row.id |
| | | this.editShipmentsConfig.infomation.deliverType = row.deliverType ? row.deliverType : 1 |
| | | this.editShipmentsConfig.infomation.saleDetailNumber = row.number |
| | | this.editShipmentsConfig.infomation.projectId = row.projectId |
| | | }, |
| | | // 确认发货完成 |
| | | async confirmClick(row) { |
| | | this.selectRow = row |
| | | await getProductInventoryInfo(this.selectRow.number) |
| | | .then((res) => { |
| | | console.log(res, "resss") |
| | | if (res.data) { |
| | | this.productTableList.tableInfomation = res.data?.length > 0 ? res.data : [] |
| | | } |
| | | this.loading = false |
| | | }) |
| | | .catch(() => { |
| | | this.productTableList.tableInfomation = [] |
| | | this.loading = false |
| | | }) |
| | | |
| | | this.updateStatus(row.id, 4) |
| | | // await confirmOutputOver({saleDetailNumber:row.number}).then((res)=>{ |
| | | // if(res&&res.code===200){ |
| | | // this.$message.success("确认发货完成") |
| | | // this.getData() |
| | | // } |
| | | // }) |
| | | }, |
| | | // 关闭 |
| | | closeClick(row) { |
| | | this.updateStatus(row.id, 6) |
| | | }, |
| | | // 修改状态 |
| | | async updateStatus(id, status) { |
| | | await updateStatus({ |
| | | id: id, |
| | | status: status |
| | | }).then((res) => { |
| | | console.log(res) |
| | | if (res.code == 200) { |
| | | this.$message.success("关闭成功") |
| | | this.getData() |
| | | } |
| | | }) |
| | | }, |
| | | // 删除 |
| | | delClick(rowID) { |
| | |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => {}) |
| | | .catch(() => { }) |
| | | // } else { |
| | | // this.$message.warning("请至少选择一条记录") |
| | | // } |
| | |
| | | }, |
| | | // 联系人详情 |
| | | selCommonClick(row) { |
| | | console.log(row) |
| | | this.specificationDetail.visible = true |
| | | this.specificationDetail.infomation = { ...row } |
| | | this.specificationDetail.visible = true |
| | | }, |
| | | addCollectionPlanClick(row) { |
| | | this.addCollectionConfig.visible = true |
| | | this.addCollectionConfig.title = "新建" |
| | | this.addCollectionConfig.sourceType = 1 |
| | | this.addCollectionConfig.infomation = { ...row } |
| | | } |
| | | }, |
| | | //获取当前选中资源的id |
| | | getTab(tab) { |
| | | this.TabsIndex = tab |
| | | if (this.TabsIndex == 1) { |
| | | this.isRequest = true; |
| | | } else { |
| | | this.isRequest = false; |
| | | } |
| | | this.getProductOrderInfo(this.selectRow.number) |
| | | }, |
| | | // 状态 |
| | | getStatus(val) { |
| | | return val === 1 ? "待确认" : val === 2 ? "待分解" : val === 3 ? "备货中" : val === 4 ? "待出库" : val === 5 ? "出库完成" : val === 6 ? "已关闭" : "--" |
| | | }, |
| | | // top 行点击 |
| | | tableRowClick(row) { |
| | | this.selectRow = row |
| | | this.getProductOrderInfo(this.selectRow.number) |
| | | }, |
| | | // 获取项目列表 |
| | | async getProjectList() { |
| | | await getProjectList({ |
| | | page: 1, |
| | | pageSize: 100 |
| | | }).then((res) => { |
| | | this.projectList = res.data ? res.data : [] |
| | | }) |
| | | }, |
| | | handleClose(done) { |
| | | done() |
| | | }, |
| | | |
| | | saveParams() { |
| | | let params = { |
| | | address: this.thatRow.address || "", |
| | | addressee: this.thatRow.addressee || "", |
| | | clientId: this.thatRow.clientId || 0, |
| | | conditions: this.thatRow.conditions || "", |
| | | deliveryDate: this.thatRow.deliveryDate || "", |
| | | memberId: this.thatRow.memberId || 0, |
| | | number: this.thatRow.number || "", |
| | | phone: this.thatRow.phone || "", |
| | | products: this.thatRow.products, |
| | | remark: this.thatRow.remark || "", |
| | | saleChanceId: this.thatRow.saleChanceId || 0, |
| | | saleType: this.thatRow.saleType || 0, |
| | | signTime: this.thatRow.signTime || "", |
| | | wechatOrderStatus: this.thatRow.wechatOrderStatus || 0, |
| | | logisticCompany: this.thatRow.logisticCompany || "", |
| | | logisticCost: this.thatRow.logisticCost || 0, |
| | | logisticNumber: this.thatRow.logisticNumber || "", |
| | | quotationId: this.thatRow.quotationId, |
| | | deliverType: this.thatRow.deliverType || 0, |
| | | status: this.thatRow.deliverType, |
| | | projectId: this.projects.projectId || 0 |
| | | } |
| | | return params |
| | | }, |
| | | // 确认提交 |
| | | affirmCommitBtn() { |
| | | let params = this.saveParams() |
| | | this.$refs["form"].validate((valid) => { |
| | | if (valid) { |
| | | console.log() |
| | | this.projectListShow = false |
| | | console.log(params, "选择项目后的params") |
| | | params.status = 2 |
| | | sendSalesDetailsToOtherSystem(params).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$message.success("成功推送至aps系统") |
| | | this.getData() |
| | | this.thatRow.status = 2 |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | getStatusFive(val) { |
| | | if (val) { |
| | | return val == 0 ? '就绪' : '完成' |
| | | } else { |
| | | return "--"; |
| | | } |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | |
| | | .el-table .el-table__cell { |
| | | padding: 0; |
| | | } |
| | | |
| | | .el-table__footer-wrapper tbody td.el-table__cell { |
| | | height: 48px; |
| | | } |
| | |
| | | .sales-details { |
| | | height: 100%; |
| | | overflow: hidden; |
| | | |
| | | .filter { |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 12px 20px 0 20px; |
| | | |
| | | &-card { |
| | | height: 80px; |
| | | display: flex; |
| | |
| | | background-color: #fff; |
| | | } |
| | | } |
| | | |
| | | .body { |
| | | box-sizing: border-box; |
| | | padding: 10px 20px; |
| | | border-radius: 12px; |
| | | height: calc(100% - 92px); |
| | | .body-card { |
| | | height: calc(100% - 70px); |
| | | |
| | | .content-top { |
| | | background-color: #fff; |
| | | border-radius: 12px; |
| | | height: 100%; |
| | | overflow: hidden; |
| | | min-height: 70px; |
| | | height: 48%; |
| | | position: relative; |
| | | |
| | | .list-view { |
| | | height: calc(100% - 60px); |
| | | } |
| | | } |
| | | .list-view { |
| | | height: calc(100% - 60px); |
| | | overflow: hidden; |
| | | |
| | | .content-bottom { |
| | | .bottom-tabs { |
| | | height: 40px; |
| | | line-height: 40px; |
| | | background: #e6ecf2; |
| | | display: flex; |
| | | |
| | | .tab-pane { |
| | | width: 100px; |
| | | margin-right: 20px; |
| | | font-size: 14px !important; |
| | | text-align: center; |
| | | cursor: pointer; |
| | | background: #2a78fb; |
| | | border-top-left-radius: 20px; |
| | | border-top-right-radius: 20px; |
| | | } |
| | | } |
| | | |
| | | .lable-view { |
| | | background: #e6ecf2; |
| | | height: 40px; |
| | | line-height: 40px; |
| | | |
| | | .name { |
| | | border-left: 4px solid #2a78fb; |
| | | padding-left: 10px; |
| | | } |
| | | } |
| | | |
| | | background-color: #fff; |
| | | border-radius: 12px; |
| | | min-height: 70px; |
| | | height: calc(52% - 60px); |
| | | margin-top: 10px; |
| | | |
| | | // padding: 10px 20px; |
| | | .list-view { |
| | | height: calc(100% - 10px); |
| | | } |
| | | } |
| | | |
| | | .btn-pager { |
| | | display: flex; |
| | | margin-top: 10px; |
| | | |
| | | .page { |
| | | margin-left: auto; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .bgcGrey { |
| | | background: #e6ecf2; |
| | | } |
| | | |
| | | .bgcWhite { |
| | | background: #fff !important; |
| | | } |
| | | |
| | | .el-form-item { |
| | | width: 80%; |
| | | margin: 20px auto; |
| | | } |
| | | |
| | | ::v-deep .el-dialog__footer { |
| | | text-align: right !important; |
| | | |
| | | .el-button { |
| | | margin-right: 10px; |
| | | } |
| | | } |
| | | </style> |