From fbdb1d15b6cf692d27598806eee6be6f16e1f36d Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期五, 22 九月 2023 17:54:55 +0800
Subject: [PATCH] 产品出入库明细接口联调、调拨列表接口联调、出入库搜索功能增加

---
 src/views/operate/allot/index.vue                    |  178 +++++++++++++++--------------
 src/views/overview/AddOverviewDialog.vue             |   11 +
 src/views/overview/OverviewListView.vue              |   18 +-
 src/views/productManage/product/index.vue            |   25 +++
 src/views/reportForm/inboundOutboundDetail/index.vue |   69 ++++++----
 src/api/product/product.js                           |    8 +
 src/router/index.js                                  |    7 -
 src/api/overview/overview.js                         |   17 ++
 src/views/productManage/product/AddProductDialog.vue |    8 +
 9 files changed, 200 insertions(+), 141 deletions(-)

diff --git a/src/api/overview/overview.js b/src/api/overview/overview.js
index 5809158..51b6e6a 100644
--- a/src/api/overview/overview.js
+++ b/src/api/overview/overview.js
@@ -33,9 +33,11 @@
 }
 
 // 鏌ヨ鍏ュ簱/鍑哄簱鍒楄〃
-export const getOperation = async (data) => {
-  return await axios.get(`/api-wms/v1/operation/operation`, {
-    params: data
+export function getOperation(data) {
+  return request({
+    url: "/api-wms/v1/operation/list",
+    method: "post",
+    data
   })
 }
 // 娣诲姞鍏ュ簱/鍑哄簱
@@ -79,3 +81,12 @@
     data
   })
 }
+
+// 鑾峰彇鍏ㄩ儴璋冩嫧鍒楄〃
+export function getAllList(data) {
+  return request({
+    url: "/api-wms/v1/operation/listAll",
+    method: "post",
+    data
+  })
+}
diff --git a/src/api/product/product.js b/src/api/product/product.js
index 9d105aa..7af33ac 100644
--- a/src/api/product/product.js
+++ b/src/api/product/product.js
@@ -39,3 +39,11 @@
     params: data
   })
 }
+// 浜у搧鍘嗗彶鍑哄叆搴撲俊鎭�
+export function getProductOperatonList(data) {
+  return request({
+    url: "/api-wms/v1/product/listOperaton",
+    method: "post",
+    data
+  })
+}
diff --git a/src/router/index.js b/src/router/index.js
index e37ce73..acd90c0 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -97,12 +97,7 @@
 const router = createRouter()
 
 router.afterEach((to, from, next) => {
-  if (
-    (to.path === "/overview/overviewList" ||
-      to.path === "/reportForm/inOutboundDetail" ||
-      to.path === "/productManage/productList") &&
-    to.params.name
-  ) {
+  if ((to.path === "/overview/overviewList" || to.path === "/productManage/productList") && to.params.name) {
     console.log(from, next)
     to.meta.title = to.params.name
     document.title = to.meta.title
diff --git a/src/views/operate/allot/index.vue b/src/views/operate/allot/index.vue
index 042e54b..53dc714 100644
--- a/src/views/operate/allot/index.vue
+++ b/src/views/operate/allot/index.vue
@@ -3,7 +3,7 @@
     <div class="top">
       <SearchCommonView
         :add-title="'鏂板缓'"
-        :placeholder="'璇疯緭鍏ュ崟鍙�'"
+        :placeholder="'璇疯緭鍏ュ崟鍙�/鏉ユ簮鍗曟嵁'"
         :amount-view="false"
         @addCommonClick="addBtnClick"
         @searchClick="getList"
@@ -29,7 +29,7 @@
 
 <script>
 import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
-import { getProductList } from "@/api/product/product"
+import { getAllList } from "@/api/overview/overview"
 // import DetailProduct from "@/views/productManage/product/DetailProduct"
 import AddOverviewDialog from "@/views/overview/AddOverviewDialog"
 
@@ -53,7 +53,8 @@
         visible: false,
         title: "鏂板缓",
         infomation: {}
-      }
+      },
+      keyword: ""
     }
   },
   created() {
@@ -82,121 +83,123 @@
       let tableColumn = [
         {
           label: "鍗曞彿",
-          prop: "id",
+          prop: "number",
           isShowColumn: true,
           default: true
         },
         {
           label: "浠�",
-          prop: "deviceName",
+          prop: "from",
           isShowColumn: showcol.includes("浠�"),
           default: false
         },
         {
           label: "鑷�",
-          prop: "id",
+          prop: "to",
           isShowColumn: showcol.includes("鑷�"),
           default: false
         },
         {
           label: "鑱旂郴浜�",
-          prop: "deviceId",
+          prop: "companyName",
           isShowColumn: showcol.includes("鑱旂郴浜�"),
           default: false
         },
         {
           label: "璐熻矗浜�",
-          prop: "shopName",
+          prop: "contacterName",
           isShowColumn: showcol.includes("璐熻矗浜�"),
           default: false
         },
         {
           label: "鏃ユ湡",
-          prop: "preTime",
+          prop: "operationDate",
           isShowColumn: showcol.includes("鏃ユ湡"),
           default: false,
           date: true
         },
-        {
-          label: "浜у搧鍙敤鎬�",
-          prop: "status",
-          isShowColumn: showcol.includes("浜у搧鍙敤鎬�"),
-          width: 100,
-          default: false
-        },
-        {
-          label: "鎴鏃ユ湡",
-          prop: "faultTime",
-          isShowColumn: showcol.includes("鎴鏃ユ湡"),
-          default: false
-        },
-        {
-          label: "瀹為檯鏃ユ湡",
-          prop: "shopName",
-          isShowColumn: showcol.includes("瀹為檯鏃ユ湡"),
-          default: false
-        },
+        // {
+        //   label: "浜у搧鍙敤鎬�",
+        //   prop: "status",
+        //   isShowColumn: showcol.includes("浜у搧鍙敤鎬�"),
+        //   width: 100,
+        //   default: false
+        // },
+        // {
+        //   label: "鎴鏃ユ湡",
+        //   prop: "faultTime",
+        //   isShowColumn: showcol.includes("鎴鏃ユ湡"),
+        //   default: false
+        // },
+        // {
+        //   label: "瀹為檯鏃ユ湡",
+        //   prop: "shopName",
+        //   isShowColumn: showcol.includes("瀹為檯鏃ユ湡"),
+        //   default: false
+        // },
         {
           label: "鏉ユ簮鍗曟嵁",
-          prop: "faultLevel",
+          prop: "sourceNumber",
           isShowColumn: showcol.includes("鏉ユ簮鍗曟嵁"),
           default: false
         },
+        // {
+        //   label: "娆犲崟",
+        //   prop: "status",
+        //   isShowColumn: showcol.includes("娆犲崟"),
+        //   default: false
+        // },
+        // {
+        //   label: "杩借釜鍙傝��",
+        //   prop: "status",
+        //   isShowColumn: showcol.includes("杩借釜鍙傝��"),
+        //   default: false
+        // },
+        // {
+        //   label: "鎵胯繍鍟�",
+        //   prop: "status",
+        //   isShowColumn: showcol.includes("鎵胯繍鍟�"),
+        //   default: false
+        // },
+        // {
+        //   label: "鐩殑鍦�",
+        //   prop: "status",
+        //   isShowColumn: showcol.includes("鐩殑鍦�"),
+        //   default: false
+        // },
+        // {
+        //   label: "閲嶉噺",
+        //   prop: "status",
+        //   isShowColumn: showcol.includes("閲嶉噺"),
+        //   default: false
+        // },
+        // {
+        //   label: "鐗╂祦閲嶉噺",
+        //   prop: "status",
+        //   isShowColumn: showcol.includes("鐗╂祦閲嶉噺"),
+        //   default: false
+        // },
         {
-          label: "娆犲崟",
-          prop: "status",
-          isShowColumn: showcol.includes("娆犲崟"),
-          default: false
-        },
-        {
-          label: "杩借釜鍙傝��",
-          prop: "status",
-          isShowColumn: showcol.includes("杩借釜鍙傝��"),
-          default: false
-        },
-        {
-          label: "鎵胯繍鍟�",
-          prop: "status",
-          isShowColumn: showcol.includes("鎵胯繍鍟�"),
-          default: false
-        },
-        {
-          label: "鐩殑鍦�",
-          prop: "status",
-          isShowColumn: showcol.includes("鐩殑鍦�"),
-          default: false
-        },
-        {
-          label: "閲嶉噺",
-          prop: "status",
-          isShowColumn: showcol.includes("閲嶉噺"),
-          default: false
-        },
-        {
-          label: "鐗╂祦閲嶉噺",
-          prop: "status",
-          isShowColumn: showcol.includes("鐗╂祦閲嶉噺"),
-          default: false
-        },
-        {
-          label: "鎿嶄綔绫诲瀷",
-          prop: "faultTime",
+          label: "鍏ュ簱绫诲瀷",
+          prop: "operationTypeName",
           isShowColumn: showcol.includes("鎿嶄綔绫诲瀷"),
           default: false
         },
-        {
-          label: "鍏徃",
-          prop: "faultTime",
-          isShowColumn: showcol.includes("鍏徃"),
-          default: false
-        },
+        // {
+        //   label: "鍏徃",
+        //   prop: "faultTime",
+        //   isShowColumn: showcol.includes("鍏徃"),
+        //   default: false
+        // },
         {
           label: "鐘舵��",
           prop: "status",
           width: 120,
           isShowColumn: showcol.includes("鐘舵��"),
           default: false,
-          status: true
+          status: true,
+          isCallMethod: true,
+          getCallMethod: this.getStatus
         }
       ]
       return tableColumn
@@ -206,29 +209,32 @@
       this.tableList.tableColumn = this.setTableColumn(val)
     },
     // 璇锋眰鏁版嵁
-    async getData(val, content) {
-      await getProductList({
-        [val]: content,
+    async getData() {
+      await getAllList({
+        number: this.keyword,
         page: this.pagerOptions.currPage,
-        pageSize: this.pagerOptions.pageSize
+        pageSize: this.pagerOptions.pageSize,
+        sourceNumber: this.keyword
       }).then((res) => {
-        if (res.data.code === 200) {
-          const list = res.data.data.list.map((item) => {
+        if (res.code === 200) {
+          const list = res.data.map((item) => {
             return {
               ...item,
-              supplierNumber: item.supplier.number,
-              status: "灏辩华",
-              preTime: "2023-09-04 11:20:00"
+              from: item.fromLocation.name,
+              to: item.toLocation.name
             }
           })
           this.tableList.tableInfomation = list || []
-          this.pagerOptions.totalCount = res.data.data.total
+          this.pagerOptions.totalCount = res.total
         }
       })
     },
     // 鎼滅储
     getList(val) {
       console.log(val)
+      this.keyword = val
+      this.pagerOptions.currPage = 1
+      this.getData()
     },
     // 琛岀偣鍑�
     tableRowClick(row) {
@@ -241,6 +247,10 @@
     addBtnClick() {
       this.editConfig.visible = true
       this.editConfig.title = "鏂板缓"
+    },
+    // 鐘舵��
+    getStatus(val) {
+      return val === 1 ? "鑽夌" : val === 3 ? "灏辩华" : "瀹屾垚"
     }
   }
 }
diff --git a/src/views/overview/AddOverviewDialog.vue b/src/views/overview/AddOverviewDialog.vue
index 94908bd..b984d55 100644
--- a/src/views/overview/AddOverviewDialog.vue
+++ b/src/views/overview/AddOverviewDialog.vue
@@ -8,7 +8,7 @@
     >
       <!-- 澶� -->
       <div slot="title" class="dialog-header">
-        <span>{{ editCommonConfig.title + addName }}</span>
+        <span>{{ editCommonConfig.title === "鏌ョ湅" ? editCommonConfig.title : editCommonConfig.title + addName }}</span>
         <div class="header_btns">
           <span class="btn">
             <i class="el-icon-printer"></i>
@@ -321,7 +321,7 @@
       detailId: 0,
       isNoDetail: false, // 娣诲姞璇︽儏鏄庣粏琛屾椂鏄惁鏈�夋嫨
       tableColumn: [],
-      receiptType: this.addName, // 鍏ュ簱绫诲瀷
+      receiptType: "", // 鍏ュ簱绫诲瀷
       companyObj: {},
       contacterObj: {},
       isValidateClick: false // 楠岃瘉鏄惁鏄剧ず
@@ -333,6 +333,7 @@
     this.setDetailTableForm()
     this.getCompanyList()
     this.getLocationList()
+    this.receiptType = this.editConfig.title === "鏌ョ湅" ? this.editConfig.infomation.operationTypeName : this.addName
   },
   methods: {
     // 鑾峰彇鍏徃鍒楄〃
@@ -443,9 +444,9 @@
       let contacterName = ""
       if (this.editConfig.title === "鏂板缓") {
         companyID = Object.keys(this.companyObj).length === 0 ? 0 : this.companyObj.value
-        companyName = Object.keys(this.companyObj).length === 0 ? 0 : this.companyObj.label
+        companyName = Object.keys(this.companyObj).length === 0 ? "" : this.companyObj.label
         contacterID = Object.keys(this.contacterObj).length === 0 ? 0 : this.contacterObj.value
-        contacterName = Object.keys(this.contacterObj).length === 0 ? 0 : this.contacterObj.label
+        contacterName = Object.keys(this.contacterObj).length === 0 ? "" : this.contacterObj.label
       } else {
         companyID = Object.keys(this.companyObj).length === 0 ? data.companyID : this.companyObj.value
         companyName = Object.keys(this.companyObj).length === 0 ? data.companyName : this.companyObj.label
@@ -668,7 +669,7 @@
 ::v-deep {
   .el-dialog__headerbtn {
     position: absolute;
-    top: 18px;
+    top: 15px;
   }
   .el-button {
     &:hover {
diff --git a/src/views/overview/OverviewListView.vue b/src/views/overview/OverviewListView.vue
index b5a8f1e..555dab7 100644
--- a/src/views/overview/OverviewListView.vue
+++ b/src/views/overview/OverviewListView.vue
@@ -3,7 +3,7 @@
     <div class="top">
       <SearchCommonView
         :add-title="'鏂板缓'"
-        :placeholder="'璇疯緭鍏ュ崟鍙�'"
+        :placeholder="'璇疯緭鍏ュ崟鍙�/鏉ユ簮鍗曟嵁'"
         :amount-view="false"
         @addCommonClick="addBtnClick"
         @searchClick="getList"
@@ -59,7 +59,8 @@
         title: "鏂板缓",
         infomation: {}
       },
-      workType: this.$route.params.workType
+      workType: this.$route.params.workType,
+      keyword: ""
     }
   },
   created() {
@@ -180,13 +181,15 @@
     // 璇锋眰鏁版嵁
     async getData() {
       await getOperation({
+        number: this.keyword,
         operationTypeId: this.$route.params.id,
         page: this.pagerOptions.currPage,
-        pageSize: this.pagerOptions.pageSize
+        pageSize: this.pagerOptions.pageSize,
+        sourceNumber: this.keyword
       }).then((res) => {
-        console.log(res.data.data)
-        if (res.data.code === 200) {
-          const list = res.data.data.map((item) => {
+        console.log(res.data)
+        if (res.code === 200) {
+          const list = res.data.map((item) => {
             return {
               ...item,
               from: item.fromLocation.name,
@@ -194,13 +197,14 @@
             }
           })
           this.tableList.tableInfomation = list || []
-          this.pagerOptions.totalCount = res.data.total
+          this.pagerOptions.totalCount = res.total
         }
       })
     },
     // 鎼滅储
     getList(val) {
       console.log(val)
+      this.keyword = val
       this.pagerOptions.currPage = 1
       this.getData()
     },
diff --git a/src/views/productManage/product/AddProductDialog.vue b/src/views/productManage/product/AddProductDialog.vue
index 56214dd..b939663 100644
--- a/src/views/productManage/product/AddProductDialog.vue
+++ b/src/views/productManage/product/AddProductDialog.vue
@@ -538,7 +538,7 @@
       showButton: true,
       activeName: "first",
       productTableList: {},
-      tableData: [{ name: "ssss" }],
+      tableData: [],
       isNoProduct: false, // 娣诲姞鏄庣粏琛屾椂鏄惁鏈変骇鍝佹湭閫夋嫨
       showEdit: false, // 鏄惁鏄剧ず缂栬緫鎸夐挳
       isDelClick: false, // 鍒犻櫎鎸夐挳鏄惁鍙偣鍑�
@@ -748,7 +748,11 @@
     // 杩涘嚭鐐瑰嚮
     inOutBoundClick() {
       if (this.editConfig.title !== "鏂板缓") {
-        this.$router.push({ path: "/reportForm/inOutboundDetail", query: { name: "浜у搧鍚嶇О/鍑哄叆搴撴槑缁�" } })
+        console.log(this.editConfig.infomation)
+        this.$router.push({
+          name: "inOutboundDetail",
+          params: { name: this.editConfig.infomation.name, id: this.editConfig.infomation.id }
+        })
       }
     },
     // 鍙攢鍞�/鍙噰璐�
diff --git a/src/views/productManage/product/index.vue b/src/views/productManage/product/index.vue
index 7120876..92938f3 100644
--- a/src/views/productManage/product/index.vue
+++ b/src/views/productManage/product/index.vue
@@ -31,7 +31,12 @@
       <div v-if="isIconIndex === '1'" class="product-view">
         <div class="product-box" v-for="item in tableList.tableInfomation" :key="item.id" @click="tableRowClick(item)">
           <div class="left">
-            <el-image style="width: 60px; height: 80px" :src="url"></el-image>
+            <!-- <el-image style="width: 60px; height: 80px" :src="url"></el-image> -->
+            <el-image class="img-view">
+              <div slot="error" class="image-slot">
+                <i class="el-icon-picture-outline"></i>
+              </div>
+            </el-image>
           </div>
           <div class="right">
             <div class="label">
@@ -100,7 +105,8 @@
       },
       isIconIndex: "1", // 1 鍥炬爣 2 鍒楄〃
       url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
-      pageSizes: [15, 30]
+      pageSizes: [15, 30],
+      keyWord: ""
     }
   },
   created() {
@@ -212,9 +218,9 @@
       this.tableList.tableColumn = this.setTableColumn(val)
     },
     // 璇锋眰鏁版嵁
-    async getData(val) {
+    async getData() {
       await getProductList({
-        keyWord: val,
+        keyWord: this.keyWord,
         page: this.pagerOptions.currPage,
         pageSize: this.pagerOptions.pageSize
       }).then((res) => {
@@ -232,8 +238,9 @@
     // 鎼滅储
     searchClick(val) {
       console.log(val)
+      this.keyWord = val
       this.pagerOptions.currPage = 1
-      this.getData(val)
+      this.getData()
     },
     // 鏂板缓
     addBtnClick() {
@@ -318,6 +325,14 @@
     .left {
       width: 60px;
       text-align: center;
+      .img-view {
+        width: 60px;
+        height: 80px;
+        line-height: 80px;
+        border: 1px solid #dee2e6;
+        font-size: 22px;
+        color: #b8babb;
+      }
     }
     .right {
       flex: 1;
diff --git a/src/views/reportForm/inboundOutboundDetail/index.vue b/src/views/reportForm/inboundOutboundDetail/index.vue
index 8ac2cc1..d65260c 100644
--- a/src/views/reportForm/inboundOutboundDetail/index.vue
+++ b/src/views/reportForm/inboundOutboundDetail/index.vue
@@ -21,18 +21,20 @@
         <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
       </div>
     </div>
+    <!-- 缂栬緫 -->
+    <AddOverviewDialog v-if="editConfig.visible" :edit-common-config="editConfig" :add-name="this.$route.params.name" />
   </div>
 </template>
 
 <script>
 import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
-import { getProductList } from "@/api/product/product"
-// import DetailProduct from "@/views/productManage/product/DetailProduct"
+import { getProductOperatonList } from "@/api/product/product"
+import AddOverviewDialog from "@/views/overview/AddOverviewDialog"
 
 export default {
   name: "InboundOutboundDetail",
   props: {},
-  components: {},
+  components: { AddOverviewDialog },
   mixins: [pageMixin],
   computed: {},
   data() {
@@ -49,7 +51,9 @@
         visible: false,
         title: "鏂板缓",
         infomation: {}
-      }
+      },
+      productId: this.$route.params.id,
+      productName: this.$route.params.name
     }
   },
   created() {
@@ -78,43 +82,44 @@
       let tableColumn = [
         {
           label: "鏃ユ湡",
-          prop: "id",
+          prop: "operationDate",
           isShowColumn: true,
-          default: true
+          default: true,
+          date: true
         },
         {
-          label: "鍙傝��",
-          prop: "id",
+          label: "鍗曞彿",
+          prop: "number",
           isShowColumn: true,
           default: true
         },
         {
           label: "浜у搧",
-          prop: "id",
+          prop: "productName",
           isShowColumn: true,
           default: true
         },
         {
           label: "浠�",
-          prop: "deviceName",
+          prop: "from",
           isShowColumn: true,
           default: true
         },
         {
           label: "鑷�",
-          prop: "id",
+          prop: "to",
           isShowColumn: true,
           default: true
         },
         {
-          label: "鍏徃",
-          prop: "shopName",
-          isShowColumn: showcol.includes("鍏徃"),
-          default: false
+          label: "鏁伴噺",
+          prop: "amount",
+          isShowColumn: true,
+          default: true
         },
         {
-          label: "鏁伴噺",
-          prop: "deviceId",
+          label: "鍗曚綅",
+          prop: "unit",
           isShowColumn: true,
           default: true
         },
@@ -124,11 +129,13 @@
           width: 120,
           isShowColumn: showcol.includes("鐘舵��"),
           default: false,
-          status: true
+          status: true,
+          isCallMethod: true,
+          getCallMethod: this.getStatus
         },
         {
           label: "瀹屾垚鑰�",
-          prop: "preTime",
+          prop: "admin",
           isShowColumn: showcol.includes("瀹屾垚鑰�"),
           default: false
         }
@@ -140,23 +147,23 @@
       this.tableList.tableColumn = this.setTableColumn(val)
     },
     // 璇锋眰鏁版嵁
-    async getData(val, content) {
-      await getProductList({
-        [val]: content,
+    async getData() {
+      await getProductOperatonList({
+        productId: this.productId,
         page: this.pagerOptions.currPage,
         pageSize: this.pagerOptions.pageSize
       }).then((res) => {
-        if (res.data.code === 200) {
-          const list = res.data.data.list.map((item) => {
+        if (res.code === 200) {
+          const list = res.data.map((item) => {
             return {
               ...item,
-              supplierNumber: item.supplier.number,
-              status: "灏辩华",
-              preTime: "2023-09-04 11:20:00"
+              from: item.fromLocation.name,
+              to: item.toLocation.name,
+              productName: this.productName
             }
           })
           this.tableList.tableInfomation = list || []
-          this.pagerOptions.totalCount = res.data.data.total
+          this.pagerOptions.totalCount = res.total
         }
       })
     },
@@ -168,13 +175,17 @@
     tableRowClick(row) {
       console.log(row)
       this.editConfig.visible = true
-      this.editConfig.title = "缂栬緫"
+      this.editConfig.title = "鏌ョ湅"
       this.editConfig.infomation = { ...row }
     },
     // 鏂板缓
     addBtnClick() {
       this.editConfig.visible = true
       this.editConfig.title = "鏂板缓"
+    },
+    // 鐘舵��
+    getStatus(val) {
+      return val === 1 ? "鑽夌" : val === 3 ? "灏辩华" : "瀹屾垚"
     }
   }
 }

--
Gitblit v1.8.0