From ee71c2a66079c43fbaf9b23d2d2f73427d4dd76c Mon Sep 17 00:00:00 2001 From: yangfeng <wanwan926_4@163.com> Date: 星期二, 12 三月 2024 14:24:49 +0800 Subject: [PATCH] 采购订单公共组件修改和收货信息状态、收货状态必填、添加产品改为多选 --- src/views/purchaseManage/purchase/index.vue | 258 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 242 insertions(+), 16 deletions(-) diff --git a/src/views/purchaseManage/purchase/index.vue b/src/views/purchaseManage/purchase/index.vue index 2c70931..48c106e 100644 --- a/src/views/purchaseManage/purchase/index.vue +++ b/src/views/purchaseManage/purchase/index.vue @@ -16,13 +16,15 @@ </div> <div class="body"> - <div class="body-card"> + <div class="content-top"> <div class="list-view"> <TableCommonView ref="tableListRef" :table-list="tableList" @selCommonClick="selCommonClick" @selTableCol="selTableCol" + @tableRowClick="tableRowClick" + :selectClassRow="selectRow" > <template slot="tableButton"> <el-table-column label="鐘舵��" width="120"> @@ -72,6 +74,41 @@ <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> </div> </div> + <div class="content-bottom"> + <div class="bottom-tabs"> + <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> + <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> <!-- 鏂板缓/缂栬緫閿�鍞嚎绱� --> @@ -85,7 +122,13 @@ <script> import pageMixin from "@/components/makepager/pager/mixin/pageMixin" -import { getPurchaseList, getPurchaseInfo, submitPurchase, deletePurchase } from "@/api/purchaseManage/purchase" +import { + getPurchaseList, + getPurchaseInfo, + submitPurchase, + deletePurchase, + getOperationInfo +} from "@/api/purchaseManage/purchase" import DetailSupplier from "@/views/purchaseManage/purchase/DetailSupplier" import AddPurchase from "@/views/purchaseManage/purchase/components/AddPurchase" import { getSupplierList } from "@/api/supplierManage/supplier" @@ -97,6 +140,30 @@ mixins: [pageMixin], computed: {}, data() { + // 浜у搧淇℃伅 + const productColumn = [ + { label: "浜у搧缂栧彿", prop: "number", default: true }, + { label: "浜у搧鍚嶇О", prop: "name" }, + { label: "瑙勬牸", prop: "specifications" }, + { label: "鍨嬪彿", prop: "modelNumber" }, + { label: "閲囪喘鏁伴噺", prop: "amount" }, + { label: "宸插彂璐ф暟閲�", prop: "sendAmount" }, + { label: "宸插叆搴撴暟閲�", prop: "overAmount" }, + { label: "鍗曚綅", prop: "unit" }, + { label: "閲囪喘鍗曚环", prop: "purchasePrice", price: true }, + { label: "浠风◣鍚堣", prop: "total", price: true } + ] + // 鏀惰揣淇℃伅 + const recriveColumn = [ + { label: "鍏ュ簱鍗曞彿", prop: "operationNumber", default: true }, + { label: "鏀惰揣浠撳簱", prop: "warehouseName" }, + { label: "浜у搧鍚嶇О", prop: "name" }, + { label: "浜у搧缂栫爜", prop: "number" }, + { label: "鏁伴噺", prop: "amount" }, + { label: "鍏ュ簱鏃堕棿", prop: "overTime" }, + { label: "鏀惰揣浜�", prop: "principal" }, + { label: "鐘舵��", prop: "status", isCallMethod: true, getCallMethod: this.getpurchaseStatus } + ] return { purchaseStatusList: getDataByType("purchaseStatus"), tableLoading: false, @@ -127,7 +194,30 @@ { label: "缁忓姙浜�", prop: "handledBy", min: 130 }, { label: "鍒跺崟浜�", prop: "creator", min: 130 } ], - showCol: ["閲囪喘鍗曞彿", "閲囪喘鍗曞悕绉�", "鍗曟嵁绫诲瀷", "渚涘簲鍟嗗悕绉�", "閲囪喘鏁伴噺", "鏀惰揣浠撳簱", "缁忓姙浜�", "鍒跺崟浜�"] + showCol: ["閲囪喘鍗曞彿", "閲囪喘鍗曞悕绉�", "鍗曟嵁绫诲瀷", "渚涘簲鍟嗗悕绉�", "閲囪喘鏁伴噺", "鏀惰揣浠撳簱", "缁忓姙浜�", "鍒跺崟浜�"], + tableBottomColumn: [], + showBottomCol: [], + TabsIndex: "0", + productTableList: {}, + // 浜у搧淇℃伅 + productColumn: productColumn, + showProductCol: [ + "浜у搧缂栧彿", + "浜у搧鍚嶇О", + "瑙勬牸", + "鍨嬪彿", + "閲囪喘鏁伴噺", + "宸插彂璐ф暟閲�", + "宸插叆搴撴暟閲�", + "鍗曚綅", + "閲囪喘鍗曚环", + "浠风◣鍚堣" + ], + // 鏀惰揣淇℃伅 + recriveColumn: recriveColumn, + showReceiveCol: ["鍏ュ簱鍗曞彿", "鏀惰揣浠撳簱", "浜у搧鍚嶇О", "浜у搧缂栫爜", "鏁伴噺", "鍏ュ簱鏃堕棿", "鏀惰揣浜�", "鐘舵��"], + loading: false, + selectRow: {} } }, created() { @@ -169,8 +259,8 @@ return "--" } }, - setColumnVisible(showCol) { - return this.tableColumn.map((ele) => { + setColumnVisible(showCol, tableColumn) { + return tableColumn.map((ele) => { return { ...ele, isShowColumn: showCol.includes(ele.label) @@ -183,9 +273,13 @@ selectIndex: true, showcol: this.showCol, allcol: [], - 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) + // bottom 浜у搧淇℃伅/鏀惰揣淇℃伅 + this.tableBottomColumn = this.productColumn + this.showBottomCol = this.showProductCol + this.setBottomList() }, selTableCol(val) { this.showcol = val @@ -206,6 +300,10 @@ }) this.tableList.tableInfomation = list || [] this.pagerOptions.totalCount = res.data.total + if (res.data.total > 0) { + this.selectRow = this.tableList.tableInfomation.length > 0 ? this.tableList.tableInfomation[0] : {} + this.tableRowClick(this.selectRow) + } } }) .catch((err) => { @@ -265,7 +363,7 @@ this.editConfig.detailEnter = false this.editConfig.isDisabled = false this.tableLoading = true - getPurchaseInfo({ id: row.id }).then((res) => { + getPurchaseInfo({ id: Number(row.id) }).then((res) => { if (res.code == 200) { this.tableLoading = false this.editConfig.visible = true @@ -303,7 +401,7 @@ if (!row.supplierName) { this.btnEdit(row) } else { - submitPurchase({ id: row.ID, status: 2 }).then((response) => { + submitPurchase({ id: Number(row.id), status: 2 }).then((response) => { if (response.code === 200) { this.$message.success("鎻愪氦鎴愬姛") this.getData() @@ -326,7 +424,7 @@ type: "warning" }).then( () => { - submitPurchase({ id: row.ID, status: 5 }).then((response) => { + submitPurchase({ id: Number(row.id), status: 5 }).then((response) => { if (response.code === 200) { this.$message.success("宸插彇娑�") this.getData() @@ -348,7 +446,7 @@ type: "warning" }) .then(() => { - deletePurchase({ id: row.ID }).then((response) => { + deletePurchase({ id: Number(row.id) }).then((response) => { if (response.code === 200) { this.$message.success("鍒犻櫎鎴愬姛") this.getData() @@ -406,6 +504,98 @@ setTimeout(() => { this.tableLoading = false }, 3000) + }, + // top 琛岀偣鍑� + tableRowClick(row) { + this.selectRow = row + if (row.status == 1 && this.TabsIndex == 0) { + getPurchaseInfo({ id: row.id }).then((res) => { + if (res.code == 200) { + this.productTableList.tableInfomation = res.data.productList + } else { + this.$message.error(res.msg ? res.msg + "," : "" + "鑾峰彇淇℃伅澶辫触锛�") + } + }) + } else if (this.TabsIndex == 1 && row.status == 1) { + this.productTableList.tableInfomation = [] + } else { + getOperationInfo({ id: row.id }).then((res) => { + if (res.code == 200) { + this.productTableList.tableInfomation = res.data + } else { + this.$message.error(res.msg ? res.msg + "," : "" + "鑾峰彇淇℃伅澶辫触锛�") + } + }) + } + }, + // 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 < tableList.tableColumn.length; i++) { + const label = tableList.tableColumn[i].label + const value = tableList.tableColumn[i].prop + this.searchOptions.push({ value: value, label: label }) + } + }, + // bottom 浜у搧淇℃伅 + selBottomTableCol(val) { + this.showcol = val + this.productTableList.tableColumn = this.setColumnVisible(val, this.tableBottomColumn) + }, + //鑾峰彇褰撳墠閫変腑璧勬簮鐨刬d + getTab(tab) { + this.TabsIndex = tab + if (this.TabsIndex == 0) { + // 浜у搧淇℃伅鍒楄〃 + this.tableBottomColumn = this.productColumn + this.showBottomCol = this.showProductCol + this.setBottomList() + this.getProductInventoryInfo(this.selectRow) + } else if (this.TabsIndex == 1) { + // 鏀惰揣淇℃伅鍒楄〃 + this.tableBottomColumn = this.recriveColumn + this.showBottomCol = this.showReceiveCol + this.setBottomList() + this.getProductInventoryInfo(this.selectRow) + } + }, + // 鐘舵�� + getStatus(val) { + return val === 1 ? "寰呯‘璁�" : val === 2 ? "寰呭嚭搴�" : val === 3 ? "鍑哄簱瀹屾垚" : val === 4 ? "宸插叧闂�" : "--" + }, + // 鑾峰彇浜у搧/鏀惰揣淇℃伅 + async getProductInventoryInfo(row) { + console.log(row) + if (this.TabsIndex == 0 && row.status == 1) { + getPurchaseInfo({ id: row.id }).then((res) => { + if (res.code == 200) { + this.productTableList.tableInfomation = res.data.productList + } else { + this.$message.error(res.msg ? res.msg + "," : "" + "鑾峰彇淇℃伅澶辫触锛�") + } + }) + } else if (this.TabsIndex == 1 && row.status == 1) { + this.productTableList.tableInfomation = [] + } else { + getOperationInfo({ id: row.id }).then((res) => { + if (res.code == 200) { + this.productTableList.tableInfomation = res.data + } else { + this.$message.error(res.msg ? res.msg + "," : "" + "鑾峰彇淇℃伅澶辫触锛�") + } + }) + } } } } @@ -438,15 +628,51 @@ padding: 10px 20px; border-radius: 12px; height: calc(100% - 92px); - &-card { + .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; -- Gitblit v1.8.0