From 88524aed702cb4a9cff3d1aafd1fa748b1ac10cb Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期六, 28 十月 2023 14:57:09 +0800
Subject: [PATCH] 新增重订货规则页面
---
src/router/product/index.js | 9 +
src/views/productManage/reorderRules/index.vue | 337 ++++++++++++++++++++++++++++++++++++++++++++++++
src/components/makepager/CommonFormTableView.vue | 65 ++++++++-
src/components/layout/components/appsidebar/index.vue | 1
4 files changed, 403 insertions(+), 9 deletions(-)
diff --git a/src/components/layout/components/appsidebar/index.vue b/src/components/layout/components/appsidebar/index.vue
index ea8aeef..e9cd1e9 100644
--- a/src/components/layout/components/appsidebar/index.vue
+++ b/src/components/layout/components/appsidebar/index.vue
@@ -30,6 +30,7 @@
</template>
<el-menu-item index="/productManage/product">浜у搧</el-menu-item>
<el-menu-item index="/productManage/productCategory">浜у搧绫诲埆</el-menu-item>
+ <el-menu-item index="/productManage/reorderRules">閲嶈璐ц鍒�</el-menu-item>
</el-submenu>
<el-submenu index="3">
<template slot="title">
diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue
index 0e99386..a10671d 100644
--- a/src/components/makepager/CommonFormTableView.vue
+++ b/src/components/makepager/CommonFormTableView.vue
@@ -130,18 +130,16 @@
style="width: 63%"
@change="selCommonClick"
>
- <el-option v-for="item in selOptions" :key="item.id" :label="item.name" :value="item"> </el-option>
+ <el-option v-for="(item, index) in selOptions" :key="index" :label="item.name" :value="item">
+ </el-option>
</el-select>
</div>
</el-form-item>
<!-- 浣嶇疆 -->
<el-form-item v-else-if="item.location" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
<div class="custom-name">
- <span v-if="scope.row.isEdit || scope.row.editable">{{
- scope.row[item.prop]?.label ?? scope.row[item.prop]
- }}</span>
<el-select
- v-else
+ v-if="!scope.row.isEdit && scope.row.isOrder"
v-model="scope.row[item.prop]"
placeholder="璇烽�夋嫨"
size="mini"
@@ -160,6 +158,9 @@
>
</el-option>
</el-select>
+ <span v-else-if="scope.row.isEdit || scope.row.editable">{{
+ scope.row[item.prop]?.label ?? scope.row[item.prop]
+ }}</span>
</div>
</el-form-item>
<!-- 浜у搧 -->
@@ -179,8 +180,8 @@
"
>
<el-option
- v-for="item in productNameOptions"
- :key="item.id"
+ v-for="(item, index) in productNameOptions"
+ :key="index"
:label="item.name"
:value="{
value: item.id,
@@ -212,12 +213,38 @@
</el-select> -->
</div>
</el-form-item>
+ <!-- 璺嚎 -->
+ <el-form-item v-else-if="item.route" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
+ <div class="custom-name">
+ <span v-if="scope.row.isEdit">{{ scope.row[item.prop]?.label ?? scope.row[item.prop] }}</span>
+ <el-select
+ v-else
+ v-model="scope.row[item.prop]"
+ placeholder="璇烽�夋嫨"
+ size="mini"
+ style="width: 80%"
+ @change="
+ (val) => {
+ selRoteClick(val, item.prop)
+ }
+ "
+ >
+ <el-option
+ v-for="(item, index) in selRouteOptions"
+ :key="index"
+ :label="item.name"
+ :value="{ value: item.id, label: item.name }"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ </el-form-item>
<!-- 鍏徃 -->
<el-form-item v-else-if="item.company" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
<div class="custom-name">
<span v-if="scope.row.isEdit">{{ scope.row[item.prop] }}</span>
<el-select v-else v-model="scope.row[item.prop]" placeholder="璇烽�夋嫨" size="mini" style="width: 80%">
- <el-option v-for="item in companyOptions" :key="item.id" :label="item.name" :value="item">
+ <el-option v-for="(item, index) in companyOptions" :key="index" :label="item.name" :value="item">
</el-option>
</el-select>
</div>
@@ -304,7 +331,8 @@
{ id: 2, name: "鎵�" }
],
selLocationOptions: [], // 浣嶇疆
- companyOptions: [] // 鍏徃
+ companyOptions: [], // 鍏徃
+ selRouteOptions: [] // 璺嚎
}
},
created() {
@@ -436,6 +464,25 @@
}
this.$emit("selLocationClick", item, prop)
},
+ // 閫夋嫨璺嚎
+ selRoteClick(item, prop) {
+ console.log(item, prop)
+ console.log(this.tableList.tableData)
+ // if (this.isinventory) {
+ // getRuleList({
+ // locationId: item.value,
+ // productId: ""
+ // }).then((res) => {
+ // console.log(res)
+ // if (res.code === 200) {
+ // const list = res.data ? res.data : []
+ // // this.selLocationOptions = list.locationList
+ // this.productNameOptions = list.productList
+ // }
+ // })
+ // }
+ // this.$emit("selLocationClick", item, prop)
+ },
// 閫夋嫨鍗曚綅/鐢ㄦ埛
selCommonClick(item) {
console.log(item)
diff --git a/src/router/product/index.js b/src/router/product/index.js
index 2a5e8ce..6fbf969 100644
--- a/src/router/product/index.js
+++ b/src/router/product/index.js
@@ -5,6 +5,7 @@
const productCategory = (resolve) => require(["@/views/productManage/productCategory/index"], resolve) // 浜у搧绫诲埆
const productList = (resolve) => require(["@/views/productManage/productCategory/ProductList"], resolve) // 浜у搧绫诲埆-浜у搧
const overviewList = (resolve) => require(["@/views/overview/OverviewListView"], resolve) // 姒傝堪-浜у搧鍒楄〃
+const reorderRules = (resolve) => require(["@/views/productManage/reorderRules/index"], resolve) // 閲嶈璐ц鍒�
const appconfig = [
{
@@ -46,6 +47,14 @@
meta: {
title: "閲囪喘鍏ュ簱"
}
+ },
+ {
+ path: "/productManage/reorderRules",
+ name: "reorderRules",
+ component: reorderRules,
+ meta: {
+ title: "閲嶈璐ц鍒�"
+ }
}
]
diff --git a/src/views/productManage/reorderRules/index.vue b/src/views/productManage/reorderRules/index.vue
new file mode 100644
index 0000000..a56a44c
--- /dev/null
+++ b/src/views/productManage/reorderRules/index.vue
@@ -0,0 +1,337 @@
+<template>
+ <div class="rightContent">
+ <div class="top">
+ <SearchCommonView
+ :add-title="addTitle"
+ :show-discard="showDiscard"
+ :show-apply="false"
+ :placeholder="'璇疯緭鍏ヤ綅缃�/浜у搧'"
+ :amount-view="false"
+ @addCommonClick="addProductClick"
+ @searchClick="getList"
+ @discardBtnClick="discardBtnClick"
+ @applyBtnClick="applyBtnClick"
+ />
+ </div>
+ <div class="list-view">
+ <div class="table">
+ <CommonFormTableView
+ ref="tablelistRef"
+ :isinventory="true"
+ :product-table-list="tableList"
+ @inputContent="inputContent"
+ @selLocationClick="selLocationClick"
+ @selProductClick="selProductClick"
+ @tableRowClick="tableRowClick"
+ >
+ <template slot="tableButton">
+ <el-table-column label="鎿嶄綔" width="180" align="center">
+ <template slot-scope="scope">
+ <span
+ v-if="scope.row.isEdit && scope.row.isView"
+ @click.stop="handleOrderOnceClick(scope.row)"
+ class="yes-cursor"
+ >
+ <i class="el-icon-truck"></i>
+ <span>璁㈣喘涓�娆�</span>
+ </span>
+ </template>
+ </el-table-column>
+ </template>
+ </CommonFormTableView>
+ </div>
+ <div class="btn-pager">
+ <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import CommonFormTableView from "@/components/makepager/CommonFormTableView"
+import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
+import {
+ getInventoryAdjustmentList,
+ addInventoryAdjustment,
+ updateInventoryAdjustment,
+ finishInventoryAdjustment
+} from "@/api/operate/inventoryAdjustment"
+import { currentTime } from "@/common/config/index"
+export default {
+ name: "ReorderRules",
+ props: {},
+ components: { CommonFormTableView },
+ mixins: [pageMixin],
+ computed: {},
+ data() {
+ return {
+ addTitle: "鏂板缓",
+ showDiscard: false,
+ tableList: {},
+ tableData: [],
+ searchOptions: [],
+ countId: 0,
+ isNoProduct: true, // 娣诲姞鏄庣粏琛屾椂鏄惁鏈変骇鍝佹湭閫夋嫨
+ isRowClick: false,
+ locationId: 0,
+ productId: 0,
+ differenceAmount: 0,
+ amount: 0,
+ operationId: 0,
+ adjustAmount: 0
+ }
+ },
+ created() {
+ this.setTable()
+ this.getData()
+ },
+ methods: {
+ setTable() {
+ this.tableList = {
+ tableData: this.tableData,
+ selectBox: false,
+ selectIndex: true,
+ tableColumn: [
+ { label: "浜у搧", prop: "productName", product: true },
+ { label: "浣嶇疆", prop: "locationName", location: true },
+ { label: "鍦ㄥ簱鏁伴噺", prop: "amount" },
+ { label: "棰勬祴", prop: "forecastAmount" },
+ { label: "棣栭�夎矾绾�", prop: "route", route: true },
+ { label: "鏈�灏忔暟閲�", prop: "minAmount", inputFloat: true },
+ { label: "鏈�澶ф暟閲�", prop: "maxAmount", inputFloat: true },
+ { label: "璁㈣喘", prop: "orderAmount", inputFloat: true },
+ { label: "璁¢噺鍗曚綅", prop: "unit" }
+ ]
+ }
+ },
+ // 璇锋眰鏁版嵁
+ async getData() {
+ await getInventoryAdjustmentList({
+ page: this.pagerOptions.currPage,
+ pageSize: this.pagerOptions.pageSize
+ }).then((res) => {
+ if (res.code === 200) {
+ console.log(res)
+ const list = res.data.map((item) => {
+ item.adjustAmount = 0
+ let forecastAmount = 500
+ let maxAmount = 600
+ return {
+ ...item,
+ isSet: false,
+ isEdit: true,
+ editable: true,
+ isOrder: true,
+ forecastAmount: forecastAmount,
+ maxAmount: maxAmount,
+ adjustAmount: 0,
+ isView: maxAmount - forecastAmount > 0 ? true : false
+ }
+ })
+ this.tableList.tableData = list || []
+ this.tableData = list || []
+ this.pagerOptions.totalCount = res.total
+ }
+ })
+ },
+ // 鎿嶄綔杈撳叆
+ inputContent(val, prop, row) {
+ console.log(val, prop, row)
+ console.log(val - row.amount, "缁撴灉")
+ this.adjustAmount = val - row.amount
+ this.tableList.tableData[row.index].adjustAmount = this.adjustAmount
+ // this.differenceAmount = val
+ this.differenceAmount = val
+ },
+ // 鏂板
+ addProductClick() {
+ console.log(this.tableData)
+ console.log(this.addTitle)
+ this.isSel()
+ if (this.isNoProduct && this.addTitle === "鏂板缓") {
+ this.$refs.tablelistRef.getRuleList()
+ this.addTitle = "淇濆瓨"
+ this.showDiscard = true
+ this.isRowClick = false
+ this.operationId = 0
+ this.currentRowId = 0
+ this.countId++
+ this.tableData.unshift({
+ countId: this.countId,
+ amount: 0,
+ adjustAmount: 0,
+ productId: "",
+ differenceAmount: 0,
+ locationId: 0,
+ createDate: this.currentTime(),
+ isSet: true,
+ isEdit: false,
+ editable: false,
+ isOrder: true
+ })
+ this.locationId = 0
+ this.subLocationId = 0
+ this.productCategoryId = 0
+ this.productId = 0
+ } else {
+ this.addTitle = "鏂板缓"
+ this.showDiscard = false
+ let requestUrl = this.currentRowId === 0 ? addInventoryAdjustment : updateInventoryAdjustment
+
+ requestUrl({
+ amount: this.amount,
+ // adjustAmount: this.adjustAmount,
+ differenceAmount: this.differenceAmount,
+ locationId: this.locationId,
+ operationId: this.operationId,
+ productId: this.productId
+ })
+ .then((res) => {
+ console.log(res)
+ if (res.code === 200) {
+ let tipStr = this.currentRowId === 0 ? "娣诲姞鎴愬姛" : "淇敼鎴愬姛"
+ this.$message.success(tipStr)
+ this.getData()
+ }
+ })
+ .catch((err) => {
+ console.log(err)
+ this.getData()
+ })
+ // }
+ }
+ },
+ // 鏄惁閫夋嫨浜у搧
+ isSel() {
+ for (let i = 0; i < this.tableData.length; i++) {
+ if (this.tableData && this.tableData[i].productName.length === 0) {
+ this.isNoProduct = false
+ break
+ } else {
+ this.isNoProduct = true
+ }
+ }
+ },
+ // 鍙栨秷
+ discardBtnClick() {
+ this.tableList.tableData.forEach((item) => {
+ item.differenceAmount = 0
+ item.adjustAmount = 0
+ })
+ this.tableList
+ if (this.isRowClick) {
+ this.tableData.map((item) => {
+ item.isEdit = true
+ })
+ } else {
+ this.tableData.splice(0, 1)
+ }
+ this.addTitle = "鏂板缓"
+ this.showDiscard = false
+ },
+ // 搴旂敤鍏ㄩ儴
+ applyBtnClick() {
+ console.log("搴旂敤鍏ㄩ儴")
+ },
+ // 鍘嗗彶
+ handleHistoryClick(row) {
+ this.isSel()
+ console.log(row)
+ if (this.isNoProduct) {
+ console.log("鍘嗗彶")
+ this.$router.push({
+ name: "inventoryAdjustmentHistory",
+ params: { locationId: row.locationId, productId: row.productId, baseOperationType: row.baseOperationType }
+ })
+ }
+ },
+ // 璁剧疆
+ handleSetClick(scope) {
+ this.isSel()
+ if (this.isNoProduct) {
+ scope.row.isSet = !scope.row.isSet
+ }
+ },
+ // 搴旂敤
+ handleUseClick(row) {
+ // scope.row.isSet = !scope.row.isSet
+ finishInventoryAdjustment({
+ locationProductAmountId: row.locationProductAmountId,
+ operationId: row.operationId,
+ productId: row.productId
+ }).then((res) => {
+ console.log(res)
+ if (res.code === 200) {
+ this.$message.success("搴旂敤鎴愬姛")
+ this.getData()
+ }
+ })
+ },
+ // 娓呴櫎
+ handleCleanupClick(scope) {
+ scope.row.isSet = !scope.row.isSet
+ },
+ // 琛岀偣鍑�
+ tableRowClick(row, rowIndex) {
+ this.locationId = row.locationId
+ this.rowIndex = rowIndex
+ this.isSel()
+ if (!this.isNoProduct && this.currentRowId === 0) {
+ this.$message.error("璇峰畬鎴愬綋鍓嶆柊寤烘垨鍙栨秷鏂板缓")
+ } else {
+ this.currentRowId = row.id
+ this.addTitle = "淇濆瓨"
+ this.showDiscard = true
+ this.isRowClick = true
+ if (!this.isNoProduct) {
+ this.tableData.splice(this.tableData.length - 1, 1)
+ }
+ this.tableData.map((item, index) => {
+ if (index === rowIndex) {
+ item.isEdit = false
+ item.editable = true
+ item.isOrder = true
+ } else {
+ item.isEdit = true
+ }
+ })
+ this.differenceAmount = row.differenceAmount
+ this.amount = row.amount
+ this.productId = row.productId
+ this.operationId = row.operationId
+ }
+ },
+ // 鎼滅储
+ getList(val) {
+ this.keyword = val
+ this.pagerOptions.currPage = 1
+ this.getData()
+ },
+ // 閫夋嫨浣嶇疆鏂规硶
+ selLocationClick(item, prop) {
+ console.log(item, prop)
+ this.locationId = item.value
+ },
+ // 閫変腑浜у搧鏂规硶
+ selProductClick(item) {
+ console.log(item)
+ this.productId = item.value
+ },
+ // 鑾峰彇褰撳墠鏃堕棿
+ currentTime() {
+ return currentTime()
+ }
+ }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+::v-deep {
+ .el-table {
+ border-top-left-radius: 12px;
+ border-top-right-radius: 12px;
+ overflow: auto;
+ }
+}
+</style>
--
Gitblit v1.8.0