From cf6a4b874aed82592eea78294715c7c688f9b248 Mon Sep 17 00:00:00 2001
From: songshankun <songshankun@foxmail.com>
Date: 星期五, 03 十一月 2023 14:50:31 +0800
Subject: [PATCH] Merge branch 'dev' into songshankun/add-token

---
 src/views/operate/inventoryAdjustment/index.vue |  376 +++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 273 insertions(+), 103 deletions(-)

diff --git a/src/views/operate/inventoryAdjustment/index.vue b/src/views/operate/inventoryAdjustment/index.vue
index 7d52d43..e97a63b 100644
--- a/src/views/operate/inventoryAdjustment/index.vue
+++ b/src/views/operate/inventoryAdjustment/index.vue
@@ -2,57 +2,93 @@
   <div class="rightContent">
     <div class="top">
       <SearchCommonView
-        :add-title="'鏂板缓'"
-        :placeholder="'璇疯緭鍏ュ崟鍙�'"
+        :add-title="addTitle"
+        :show-discard="showDiscard"
+        :show-apply="false"
+        :placeholder="'璇疯緭鍏ヤ綅缃�/浜у搧'"
         :amount-view="false"
-        @addCommonClick="addBtnClick"
+        @addCommonClick="addProductClick"
         @searchClick="getList"
+        @discardBtnClick="discardBtnClick"
+        @applyBtnClick="applyBtnClick"
       />
     </div>
     <div class="list-view">
       <div class="table">
-        <TableCommonView
-          ref="tableListRef"
-          :table-list="tableList"
-          :show-checkcol="false"
+        <CommonFormTableView
+          ref="tablelistRef"
+          :isinventory="true"
+          :product-table-list="tableList"
+          @inputContent="inputContent"
+          @selLocationClick="selLocationClick"
+          @selProductClick="selProductClick"
           @tableRowClick="tableRowClick"
-        ></TableCommonView>
+        >
+          <template slot="tableButton">
+            <el-table-column label="鎿嶄綔" width="180" align="center">
+              <template slot-scope="scope">
+                <span v-if="scope.row.isEdit" @click.stop="handleHistoryClick(scope.row)" class="yes-cursor">
+                  <i class="el-icon-refresh-left"></i>
+                  <span>鍘嗗彶</span>
+                </span>
+                <!-- <span v-if="scope.row.isSet" @click="handleSetClick(scope)" class="margin_left_5px">
+                  <i class="el-icon-setting"></i>
+                  <span>璁剧疆</span>
+                </span> -->
+                <template v-if="scope.row.status === 3">
+                  <span @click.stop="handleUseClick(scope.row)" class="margin_left_5px">
+                    <i class="el-icon-document"></i>
+                    <span>搴旂敤</span>
+                  </span>
+                  <!-- <span @click="handleCleanupClick(scope)" class="margin_left_5px">
+                    <i class="el-icon-delete"></i>
+                    <span>娓呴櫎</span>
+                  </span> -->
+                </template>
+              </template>
+            </el-table-column>
+          </template>
+        </CommonFormTableView>
       </div>
       <div class="btn-pager">
         <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
       </div>
     </div>
-    <!-- 鏂板缓/缂栬緫 -->
-    <AddDialog
-      v-if="editConfig.visible"
-      @refresh="refresh"
-      :positionList="tableList.tableInfomation"
-      :edit-common-config="editConfig"
-    />
   </div>
 </template>
 
 <script>
+import CommonFormTableView from "@/components/makepager/CommonFormTableView"
 import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
-import { getLocationList } from "@/api/warehouseManage/warehouse"
-import AddDialog from "@/views/warehouseManage/position/AddDialog"
-import { getDataByType } from "@/api/data"
+import {
+  getInventoryAdjustmentList,
+  addInventoryAdjustment,
+  updateInventoryAdjustment,
+  finishInventoryAdjustment
+} from "@/api/operate/inventoryAdjustment"
+import { currentTime } from "@/common/config/index"
 export default {
   name: "InventoryAdjustment",
   props: {},
-  components: { AddDialog },
+  components: { CommonFormTableView },
   mixins: [pageMixin],
   computed: {},
   data() {
     return {
+      addTitle: "鏂板缓",
+      showDiscard: false,
       tableList: {},
+      tableData: [],
       searchOptions: [],
-      editConfig: {
-        visible: false,
-        title: "鏂板缓",
-        infomation: {}
-      },
-      positionTypeList: getDataByType("positionType")
+      countId: 0,
+      isNoProduct: true, // 娣诲姞鏄庣粏琛屾椂鏄惁鏈変骇鍝佹湭閫夋嫨
+      isRowClick: false,
+      locationId: 0,
+      productId: 0,
+      differenceAmount: 0,
+      amount: 0,
+      operationId: 0,
+      adjustAmount: 0
     }
   },
   created() {
@@ -62,73 +98,210 @@
   methods: {
     setTable() {
       this.tableList = {
-        tableInfomation: [],
-        selectBox: true,
-        showcol: this.showcol,
-        allcol: [],
-        tableColumn: this.setTableColumn(this.showcol)
+        tableData: this.tableData,
+        selectBox: false,
+        selectIndex: true,
+        tableColumn: [
+          { label: "浣嶇疆", prop: "locationName", location: true },
+          { label: "浜у搧", prop: "productName", product: true },
+          { label: "鍦ㄥ簱鏁伴噺", prop: "amount" },
+          { label: "璁¢噺鍗曚綅", prop: "unit" },
+          { label: "璁℃暟鐨勬暟閲�", prop: "differenceAmount", inputFloat: true },
+          { label: "宸紓", prop: "adjustAmount" },
+          { label: "鏃ユ湡", prop: "createDate" },
+          { label: "鐢ㄦ埛", prop: "user", user: true }
+        ]
       }
-      let allcol = []
-      for (let i = 0; i < this.tableList.tableColumn.length; i++) {
-        if (!this.tableList.tableColumn[i].default) {
-          const label = this.tableList.tableColumn[i].label
-          allcol.push(label)
-        }
-      }
-      this.tableList.allcol = allcol
-    },
-    setTableColumn(showcol) {
-      console.log(showcol)
-      let tableColumn = [
-        {
-          label: "浣嶇疆",
-          prop: "jointName",
-          isShowColumn: true,
-          default: true
-        },
-        {
-          label: "浣嶇疆绫诲瀷",
-          prop: "type",
-          isShowColumn: true,
-          default: true,
-          conversion: true,
-          getStatus: this.getTypesList
-        }
-      ]
-      return tableColumn
-    },
-    getTypesList(val) {
-      let string = "--"
-      if (val) {
-        for (let i in this.positionTypeList) {
-          if (this.positionTypeList[i].id == val) {
-            return this.positionTypeList[i].name
-          }
-        }
-      }
-      return string
-    },
-    selTableCol(val) {
-      this.showcol = val
-      this.tableList.tableColumn = this.setTableColumn(val)
     },
     // 璇锋眰鏁版嵁
     async getData() {
-      await getLocationList({
-        keyword: this.keyword,
+      await getInventoryAdjustmentList({
         page: this.pagerOptions.currPage,
         pageSize: this.pagerOptions.pageSize
       }).then((res) => {
         if (res.code === 200) {
-          const list = res.data ? res.data : []
-          this.tableList.tableInfomation = list
+          console.log(res)
+          const list = res.data.map((item) => {
+            item.adjustAmount = 0
+            return {
+              ...item,
+              isSet: false,
+              isEdit: true,
+              editable: true,
+              adjustAmount: 0
+            }
+          })
+          this.tableList.tableData = list || []
+          this.tableData = list || []
           this.pagerOptions.totalCount = res.total
         }
       })
     },
-    refresh() {
-      this.pagerOptions.currPage = 1
+    // 鎿嶄綔杈撳叆
+    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
+        })
+        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[i].productName?.length === 0) {
+          this.isNoProduct = false
+          break
+        } else {
+          this.isNoProduct = true
+        }
+      }
+    },
+    // 鍙栨秷
+    discardBtnClick() {
       this.getData()
+      // 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
+          } else {
+            item.isEdit = true
+          }
+        })
+        this.differenceAmount = row.differenceAmount
+        this.amount = row.amount
+        this.productId = row.productId
+        this.operationId = row.operationId
+      }
     },
     // 鎼滅储
     getList(val) {
@@ -136,34 +309,31 @@
       this.pagerOptions.currPage = 1
       this.getData()
     },
-    // 琛岀偣鍑�
-    tableRowClick(row) {
-      console.log(row)
-      this.editConfig.title = "缂栬緫"
-      this.editConfig.infomation = { ...row }
-      this.editConfig.infomation.parentId = Number(this.editConfig.infomation.parentId)
-      this.editConfig.visible = true
+    // 閫夋嫨浣嶇疆鏂规硶
+    selLocationClick(item, prop) {
+      console.log(item, prop)
+      this.locationId = item.value
     },
-    // 鏂板缓
-    addBtnClick() {
-      this.editConfig.infomation = {
-        name: "",
-        parentId: null,
-        type: 3,
-        isScrapLocation: null,
-        isReturnLocation: null,
-        replenishLocation: null,
-        countFrequency: 0,
-        recentlyCount: "",
-        nextCount: "",
-        notes: ""
-      }
-      this.editConfig.visible = true
-      this.editConfig.title = "鏂板缓"
+    // 閫変腑浜у搧鏂规硶
+    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></style>
+<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