From c356ebfc46d6f98afb6eebc252db2db6718e25f2 Mon Sep 17 00:00:00 2001
From: zuozhengqing <a13193816592@163.com>
Date: 星期六, 28 十月 2023 15:58:18 +0800
Subject: [PATCH] Merge branch 'dev' of http://192.168.5.5:10010/r/web/WMS into dev

---
 src/views/overview/OverviewListView.vue               |   13 +
 .env.development                                      |    8 +
 src/router/product/index.js                           |    9 +
 src/views/productManage/reorderRules/index.vue        |  337 ++++++++++++++++++++++++++++++++++++++++++
 .env.preview                                          |   12 +
 package.json                                          |    4 
 .env                                                  |   18 ++
 src/components/makepager/CommonFormTableView.vue      |   65 +++++++-
 src/components/layout/components/appsidebar/index.vue |    1 
 9 files changed, 452 insertions(+), 15 deletions(-)

diff --git a/.env b/.env
new file mode 100644
index 0000000..ac3d107
--- /dev/null
+++ b/.env
@@ -0,0 +1,18 @@
+# 鎵�鏈夌幆澧冮粯璁�
+
+# 椤甸潰 title 鍓嶇紑
+VUE_APP_TITLE=Basic
+NODE_ENV=development
+VUE_APP_BATH_PATH='http://192.168.20.119:9085'
+# 缃戠粶璇锋眰鍏敤鍦板潃
+VUE_APP_API=/api/
+
+# 浠撳簱鍦板潃
+VUE_APP_REPO=""
+
+# 鍥介檯鍖栭厤缃�
+VUE_APP_I18N_LOCALE=zh-chs
+VUE_APP_I18N_FALLBACK_LOCALE=en
+
+# element 棰滆壊
+VUE_APP_ELEMENT_COLOR=#2A78FB
diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..31096e8
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,8 @@
+# 寮�鍙戠幆澧�
+# 鎸囧畾鏋勫缓妯″紡
+NODE_ENV=development
+
+# 椤甸潰 title 鍓嶇紑
+VUE_APP_TITLE=Basic
+VUE_APP_BATH_PATH='http://192.168.20.119:9085'
+
diff --git a/.env.preview b/.env.preview
new file mode 100644
index 0000000..20424db
--- /dev/null
+++ b/.env.preview
@@ -0,0 +1,12 @@
+# 鏋勫缓棰勮椤甸潰
+
+# 鎸囧畾鏋勫缓妯″紡
+NODE_ENV=production
+
+# 鏍囪褰撳墠鏋勫缓鏂瑰紡
+VUE_APP_BUILD_MODE=PREVIEW
+VUE_APP_BATH_PATH='http://www.fai365.com:9083
+VUE_APP_SCOURCE_LINK=TRUE
+
+# 閮ㄧ讲璺緞
+VUE_APP_PUBLIC_PATH=/
diff --git a/package.json b/package.json
index c408a92..451674e 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,9 @@
   "scripts": {
     "serve": "vue-cli-service serve",
     "build": "vue-cli-service build",
-    "lint": "vue-cli-service lint"
+    "lint": "vue-cli-service lint",
+    "build:preview": "NODE_OPTIONS=--max_old_space_size=4096 vue-cli-service build --mode preview",
+    "test:unit": "vue-cli-service test:unit"
   },
   "dependencies": {
     "axios": "^1.4.0",
diff --git a/src/components/layout/components/appsidebar/index.vue b/src/components/layout/components/appsidebar/index.vue
index 796b29b..7ed14e4 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 93c4b3c..9d3349d 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,
@@ -238,12 +239,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>
@@ -332,7 +359,8 @@
         { id: 2, name: "鎵�" }
       ],
       selLocationOptions: [], // 浣嶇疆
-      companyOptions: [] // 鍏徃
+      companyOptions: [], // 鍏徃
+      selRouteOptions: [] // 璺嚎
     }
   },
   created() {
@@ -488,6 +516,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/overview/OverviewListView.vue b/src/views/overview/OverviewListView.vue
index 5ba0d19..1da054c 100644
--- a/src/views/overview/OverviewListView.vue
+++ b/src/views/overview/OverviewListView.vue
@@ -40,7 +40,7 @@
       v-if="editConfig.visible"
       :work-type="workType"
       :edit-common-config="editConfig"
-      :add-name="this.$route.params.name"
+      :add-name="addName"
       :display-edit="displayEdit"
     />
   </div>
@@ -78,7 +78,8 @@
       params: {},
       displayEdit: false,
       formLabel: "",
-      toLabel: ""
+      toLabel: "",
+      addName: ""
     }
   },
   created() {
@@ -259,14 +260,16 @@
       console.log(row)
       this.editConfig.visible = true
       this.editConfig.title = val
-      this.editConfig.operationTypeId = this.$route.params.id
+      this.editConfig.operationTypeId = this.params.id
       this.editConfig.infomation = { ...row }
     },
     // 鏂板缓
     addBtnClick() {
       this.editConfig.title = "鏂板缓"
-      this.editConfig.operationTypeId = this.$route.params.id
-      this.editConfig.code=this.$route.params.code
+      this.addName = this.params.name
+      console.log(this.params, "ss鍒锋柊")
+      this.editConfig.operationTypeId = this.params.id
+      this.editConfig.code = this.params.code
       this.editConfig.infomation = {}
       this.editConfig.visible = true
     },
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