From 119efc91fd3374131c31b8c5f8f5f7cb8f6731cf Mon Sep 17 00:00:00 2001
From: zuozhengqing <a13193816592@163.com>
Date: 星期五, 17 十一月 2023 09:34:59 +0800
Subject: [PATCH] 将出入库明细拆分为出库明细和入库明细

---
 src/router/product/index.js                                     |   13 
 src/router/report/index.js                                      |    2 
 src/views/reportForm/inboundOutboundDetail/index.vue            |   55 +-
 src/components/layout/components/appsidebar/index.vue           |    3 
 src/views/reportForm/locationReport/index.vue                   |    6 
 src/router/index.js                                             |    2 
 src/views/reportForm/outboundDetail/index.vue                   |  265 ++++++++++++
 src/views/reportForm/outboundDetail/AddOutboundDetailDialog.vue |  881 +++++++++++++++++++++++++++++++++++++++++
 8 files changed, 1,189 insertions(+), 38 deletions(-)

diff --git a/src/components/layout/components/appsidebar/index.vue b/src/components/layout/components/appsidebar/index.vue
index e28de9b..06522e8 100644
--- a/src/components/layout/components/appsidebar/index.vue
+++ b/src/components/layout/components/appsidebar/index.vue
@@ -61,7 +61,8 @@
           <el-menu-item index="/reportForm/inventoryReport">搴撳瓨鎶ヨ〃</el-menu-item>
           <el-menu-item index="/reportForm/locationReport">浣嶇疆鎶ヨ〃</el-menu-item>
           <!-- <el-menu-item index="/warehouseManage/bussinessType">鏌愭棩搴撳瓨</el-menu-item> -->
-          <el-menu-item index="/reportForm/inboundOutboundDetail">鍑哄叆搴撴槑缁嗘姤琛�</el-menu-item>
+          <el-menu-item index="/reportForm/inboundOutboundDetail">鍏ュ簱鏄庣粏鎶ヨ〃</el-menu-item>
+          <el-menu-item index="/reportForm/outboundDetail">鍑哄簱鏄庣粏鎶ヨ〃</el-menu-item>
         </el-submenu>
       </el-menu>
     </div>
diff --git a/src/router/index.js b/src/router/index.js
index 013fdc1..dffb3c5 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -115,7 +115,7 @@
     to.meta.title = to.params.name
     // document.title = to.meta.title
   } else if (to.name === "inboundOutboundDetail") {
-    to.meta.title = "鍑哄叆搴撴槑缁�"
+    to.meta.title = "鍏ュ簱鏄庣粏鎶ヨ〃"
     // document.title = to.meta.title
   }
 })
diff --git a/src/router/product/index.js b/src/router/product/index.js
index 6fbf969..61dafed 100644
--- a/src/router/product/index.js
+++ b/src/router/product/index.js
@@ -1,7 +1,8 @@
 // const type from '@/router/deployCode'
 
 const product = (resolve) => require(["@/views/productManage/product/index"], resolve) // 浜у搧
-const inboundOutboundDetail = (resolve) => require(["@/views/reportForm/inboundOutboundDetail/index"], resolve) // 鍑哄叆搴撴槑缁�
+const inboundOutboundDetail = (resolve) => require(["@/views/reportForm/inboundOutboundDetail/index"], resolve) // 鍏ュ簱鏄庣粏鎶ヨ〃
+const outboundDetail = (resolve) => require(["@/views/reportForm/outboundDetail/index"], resolve) // 鍏ュ簱鏄庣粏鎶ヨ〃
 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) // 姒傝堪-浜у搧鍒楄〃
@@ -29,7 +30,15 @@
     name: "inboundOutboundDetail",
     component: inboundOutboundDetail,
     meta: {
-      title: "鍑哄叆搴撴槑缁�"
+      title: "鍏ュ簱鏄庣粏鎶ヨ〃"
+    }
+  },
+  {
+    path: "/reportForm/outboundDetail",
+    name: "outboundDetail",
+    component: outboundDetail,
+    meta: {
+      title: "鍑哄簱鏄庣粏鎶ヨ〃"
     }
   },
   {
diff --git a/src/router/report/index.js b/src/router/report/index.js
index 32a54ff..668db2e 100644
--- a/src/router/report/index.js
+++ b/src/router/report/index.js
@@ -26,7 +26,7 @@
     name: "inboundOutboundDetail",
     component: inboundOutboundDetail,
     meta: {
-      title: "鍑哄叆搴撴槑缁�"
+      title: "鍏ュ簱鏄庣粏鎶ヨ〃"
     }
   }
 ]
diff --git a/src/views/reportForm/inboundOutboundDetail/index.vue b/src/views/reportForm/inboundOutboundDetail/index.vue
index c354af5..b7f5122 100644
--- a/src/views/reportForm/inboundOutboundDetail/index.vue
+++ b/src/views/reportForm/inboundOutboundDetail/index.vue
@@ -104,7 +104,7 @@
           prop: "date",
           isShowColumn: true,
           default: true,
-          date: true
+          // date: true
         },
         {
           label: "鍗曞彿",
@@ -115,6 +115,12 @@
         {
           label: "浜у搧",
           prop: "productName",
+          isShowColumn: true,
+          default: true
+        },
+        {
+          label: "浜у搧缂栫爜",
+          prop: "productId",
           isShowColumn: true,
           default: true
         },
@@ -147,6 +153,12 @@
         {
           label: "鍗曚綅",
           prop: "unit",
+          isShowColumn: true,
+          default: true
+        },
+        {
+          label: "閲嶉噺",
+          prop: "weight",
           isShowColumn: true,
           default: true
         },
@@ -196,36 +208,28 @@
           pageSize: this.pagerOptions.pageSize
         }).then((res) => {
           if (res.code === 200) {
+            res.data.map((item)=>{
+                let dateObject = new Date(item.date);  
+                let formattedDateString = dateObject.toISOString().split('T')[0];  
+                item.date=formattedDateString
+            })
             this.tableList.tableInfomation = res.data
             this.pagerOptions.totalCount = res.total
           }
         })
       } else {
-        // await getProductOperatonList({
-        //   productId: this.params.id,
-        //   page: this.pagerOptions.currPage,
-        //   pageSize: this.pagerOptions.pageSize
-        // }).then((res) => {
-        //   if (res.code === 200) {
-        //     const list = res.data.map((item) => {
-        //       return {
-        //         ...item,
-        //         fromLocation: item.fromLocation.name,
-        //         toLocation: item.toLocation.name,
-        //         productName: this.params.name,
-        //         amount: item.details[0].product.amount,
-        //         unit: item.details[0].product.unit
-        //       }
-        //     })
-        //     this.tableList.tableInfomation = list || []
-        //     this.pagerOptions.totalCount = res.total
-        //   }
-        // })
         await getHistory({
+          baseOperationType:1,
+          keyWord:this.params.keyWord,
           page: this.pagerOptions.currPage,
           pageSize: this.pagerOptions.pageSize
         }).then((res) => {
           if (res.code === 200) {
+            res.data.map((item)=>{
+                let dateObject = new Date(item.date);  
+                let formattedDateString = dateObject.toISOString().split('T')[0];  
+                item.date=formattedDateString
+            })
             this.tableList.tableInfomation = res.data?res.data:[]
             this.pagerOptions.totalCount = res.total
           }
@@ -236,15 +240,6 @@
     getList(val) {
       this.params.keyWord=val;
       this.getData()
-      // getHistory({
-      //     page: this.pagerOptions.currPage,
-      //     pageSize: this.pagerOptions.pageSize
-      // }).then((res) => {
-      //   if (res.code === 200) {
-      //     this.tableList.tableInfomation = res.data
-      //     this.pagerOptions.totalCount = res.total
-      //   }
-      // })
     },
     // 琛岀偣鍑�
     tableRowClick(row) {
diff --git a/src/views/reportForm/locationReport/index.vue b/src/views/reportForm/locationReport/index.vue
index 3832e68..4c2bc2a 100644
--- a/src/views/reportForm/locationReport/index.vue
+++ b/src/views/reportForm/locationReport/index.vue
@@ -60,7 +60,7 @@
   data() {
     return {
       tableList: {},
-      showcol: [ "浜у搧绫诲埆", "棰勭暀鏁伴噺", "浠峰��"],
+      showcol: [ "浜у搧绫诲埆",  "浠峰��"],
       // countcol: [
       //   { label: "鍦ㄥ簱鏁伴噺", unit: "" },
       //   { label: "棰勭暀鏁伴噺", unit: "" },
@@ -172,8 +172,8 @@
         {
           label: "棰勭暀鏁伴噺",
           prop: "availableStore",
-          isShowColumn: true,
-          default: true,
+          default: false,
+          isShowColumn: showcol.includes("棰勭暀鏁伴噺"),
           unit: "",
           textAlign:"right"
         },
diff --git a/src/views/reportForm/outboundDetail/AddOutboundDetailDialog.vue b/src/views/reportForm/outboundDetail/AddOutboundDetailDialog.vue
new file mode 100644
index 0000000..2097ac0
--- /dev/null
+++ b/src/views/reportForm/outboundDetail/AddOutboundDetailDialog.vue
@@ -0,0 +1,881 @@
+<template>
+  <div class="add-common">
+    <el-dialog
+      :title="editCommonConfig.title + '閲囪喘鍏ュ簱'"
+      :visible.sync="editConfig.visible"
+      :width="dialogWidth"
+      :before-close="handleClose"
+    >
+      <!-- 澶� -->
+      <div slot="title" class="dialog-header">
+        <span>{{ editCommonConfig.title === "鏌ョ湅" ? editCommonConfig.title : editCommonConfig.title + addName }}</span>
+        <div class="header_btns">
+          <span class="btn">
+            <i class="el-icon-printer"></i>
+            <span>鎵撳嵃</span>
+          </span>
+          <span class="btn" style="margin-left: 15px">
+            <i class="el-icon-s-tools"></i>
+            <span>鍔ㄤ綔</span>
+          </span>
+          <el-button v-if="showEdit" plain size="mini" style="margin-left: 15px" @click="editClick">缂栬緫</el-button>
+        </div>
+      </div>
+      <!-- 鍐呭 -->
+      <el-form
+        ref="form"
+        :model="editConfig.infomation"
+        :rules="rules"
+        label-position="right"
+        label-width="120px"
+        size="mini"
+      >
+        <div>
+          <!-- <div>aaa</div> -->
+          <StatusCommonView
+            :showButton="showButton"
+            :isValidateClick="isValidateClick"
+            :isDelClick="isDelClick"
+            :list="list"
+            :showCancel="showCancel"
+            @delClick="delClick"
+            @validateClick="validateClick"
+            @btnCancel="btnCancel"
+          />
+        </div>
+        <div class="basic-info">
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item prop="companyName">
+                  <span slot="label">{{ workType === 1 ? "渚涘簲鍟�" : workType === 2 ? "瀹㈡埛" : "鑱旂郴浜�" }}</span>
+                  <el-select
+                    v-model="editConfig.infomation.companyName"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 90%"
+                    :disabled="!showFooter"
+                    @change="companyChange"
+                  >
+                    <el-option
+                      v-for="item in companyOptions"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="{ value: item.id, label: item.name }"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <!-- <el-col :span="12">
+                <el-form-item v-if="workType === 3" label="鑱旂郴浜�" prop="contacterName">
+                  <el-select
+                    v-model="editConfig.infomation.contacterName"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 90%"
+                    :disabled="!showFooter"
+                  >
+                    <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item v-if="workType === 2" label="閫佽揣鍦板潃" prop="client_name">
+                  <el-select
+                    v-model="editConfig.infomation.memberId"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 90%"
+                    :disabled="!showFooter"
+                  >
+                    <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col> -->
+              <el-col :span="12">
+                <el-form-item label="鏃ユ湡" prop="operationDate">
+                  <el-date-picker
+                    v-model="editConfig.infomation.operationDate"
+                    value-format="yyyy-MM-dd"
+                    type="date"
+                    placeholder="閫夋嫨鏃ユ湡"
+                    style="width: 90%"
+                    :disabled="!showFooter"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col v-if="showOperationType" :span="12">
+                <el-form-item label="鍏ュ簱绫诲瀷" prop="operationTypeId">
+                  <el-select
+                    v-model="editConfig.infomation.operationTypeId"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 90%"
+                    :disabled="!showFooter"
+                  >
+                    <el-option v-for="item in operationTypeOptions" :key="item.id" :label="item.name" :value="item.id">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col v-else :span="12">
+                <el-form-item label="鍏ュ簱绫诲瀷">
+                  <el-input v-model="receiptType" disabled style="width: 90%"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鏉ユ簮鍗曟嵁" prop="sourceNumber">
+                  <el-input
+                    v-model="editConfig.infomation.sourceNumber"
+                    placeholder="渚嬪:PO0032"
+                    style="width: 90%"
+                    :disabled="!showFooter"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item v-if="workType !== 1" label="婧愪綅缃�" prop="fromLocationId">
+                  <el-select
+                    v-model="editConfig.infomation.fromLocationId"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 90%"
+                    :disabled="!showFooter"
+                  >
+                    <el-option
+                      v-for="item in toLocationOptions"
+                      :key="item.id"
+                      :label="item.jointName"
+                      :value="item.id"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item v-if="workType !== 2" label="浠撳簱浣嶇疆" prop="toLocationId">
+                  <el-select
+                    v-model="editConfig.infomation.toLocationId"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 90%"
+                    :disabled="!showFooter"
+                  >
+                    <el-option
+                      v-for="item in toLocationOptions"
+                      :key="item.id"
+                      :label="item.jointName"
+                      :value="item.id"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="璐熻矗浜�" prop="contacterName">
+                  <el-select
+                    v-model="editConfig.infomation.contacterName"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 90%"
+                    :disabled="!showFooter"
+                    @change="contacterChange"
+                  >
+                    <el-option
+                      v-for="item in memberOptions"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="{ value: item.id, label: item.name }"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <!-- <el-col :span="12">
+                <el-form-item v-if="workType !== 1" label="閫佽揣绛栫暐" prop="client_name">
+                  <el-select
+                    v-model="editConfig.infomation.memberId"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 90%"
+                    :disabled="!showFooter"
+                  >
+                    <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col> -->
+              <el-col :span="24">
+                <el-form-item label="澶囨敞" prop="comment">
+                  <el-input
+                    v-model.trim="editConfig.infomation.comment"
+                    size="mini"
+                    type="textarea"
+                    style="width: 96%"
+                    :autosize="{ minRows: 3 }"
+                    :disabled="!showFooter"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <div class="bottom">
+            <el-tabs v-model="activeName" type="card">
+              <!-- <el-tab-pane v-if="workType !== 1" label="璇︽儏" name="detail"> </el-tab-pane> -->
+              <el-tab-pane label="浜у搧" name="first"> </el-tab-pane>
+              <el-tab-pane label="鍙戣揣淇℃伅" name="two"></el-tab-pane>
+            </el-tabs>
+            <!-- 鎿嶄綔 -->
+            <div v-if="activeName === 'first'">
+              <CommonFormTableView
+                :product-table-list="productTableList"
+                :detail-enter="!showFooter"
+                @inputContent="inputContent"
+                @addProductClick="addProductClick('鎿嶄綔')"
+              >
+                <template v-if="showFooter" slot="tableButton">
+                  <el-table-column label="鎿嶄綔" width="60" fixed="right" align="center">
+                    <template slot-scope="scope">
+                      <div @click="handleDelClick(scope, '鎿嶄綔')">
+                        <i class="el-icon-delete"></i>
+                      </div>
+                    </template>
+                  </el-table-column>
+                </template>
+              </CommonFormTableView>
+            </div>
+            <!-- 鍙戣揣淇℃伅 -->
+            <div v-if="activeName==='two'">
+              <el-form label-position="left" label-width="80px" :model="shipmentsInfo">
+                <el-form-item label="鎵胯繍鍟�"  style="width: 50%;">
+                  <el-select :disabled="!showFooter" v-model="editConfig.infomation.logisticCompanyId" placeholder="璇烽�夋嫨" style="width: 100%;">
+                    <el-option
+                      v-for="item in shipmentsInfo.carrier"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.id">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+                <el-form-item label="杩愬崟鍙�" style="width: 50%;">
+                  <el-input :disabled="!showFooter" v-model="editConfig.infomation.waybillNumber"></el-input>
+                </el-form-item>
+                <el-form-item label="閲嶉噺" style="width: 50%;">
+                  <el-input :disabled="!showFooter" v-model="editConfig.infomation.weight"></el-input>
+                </el-form-item>
+                <el-form-item label="鐗╂祦閲嶉噺" style="width: 50%;">
+                  <el-input :disabled="!showFooter" v-model="editConfig.infomation.logisticWeight"></el-input>
+                </el-form-item>
+              </el-form>
+            </div>
+            <!-- 璇︽儏 -->
+            <!-- <div v-if="activeName === 'detail'">
+              <CommonFormTableView
+                :product-table-list="detailTableList"
+                :detail-enter="!showFooter"
+                @inputContent="inputDetail"
+                @addProductClick="addProductClick('璇︽儏')"
+              >
+                <template v-if="showFooter" slot="tableButton">
+                  <el-table-column label="鎿嶄綔" width="60" fixed="right" align="center">
+                    <template slot-scope="scope">
+                      <div @click="handleDelClick(scope, '璇︽儏')">
+                        <i class="el-icon-delete"></i>
+                      </div>
+                    </template>
+                  </el-table-column>
+                </template>
+              </CommonFormTableView>
+            </div> -->
+          </div>
+        </div>
+      </el-form>
+      <!-- 灏� -->
+      <div slot="footer" class="dialog-footer">
+        <!-- <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆苟鎻愪氦瀹℃壒</el-button> -->
+        <el-button type="primary" size="small" @click="saveClick('form')" :disabled="!showFooter">淇濆瓨</el-button>
+        <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import CommonFormTableView from "@/components/makepager/CommonFormTableView"
+import {
+  getLocationList,
+  addOperation,
+  updateOperation,
+  updateStatus,
+  stateCancel,
+  deleteOperation,
+  getListTransfer,
+  getLogisticCompanyList
+} from "@/api/overview/overview"
+import { getCompanyList } from "@/api/common/other"
+export default {
+  name: "AddOverviewDialog",
+  props: {
+    editCommonConfig: {
+      type: Object,
+      default: () => {
+        return {
+          visible: false,
+          title: "鏂板缓",
+          operationTypeId: 0,
+          infomation: {}
+        }
+      }
+    },
+    workType: {
+      type: Number,
+      default: 1
+    },
+    addName: {
+      type: String,
+      default: "璋冩嫧"
+    },
+    showOperationType: {
+      type: Boolean,
+      default: false
+    }
+  },
+  components: { CommonFormTableView },
+  computed: {},
+  data() {
+    return {
+      dialogWidth: "50%",
+      editConfig: this.editCommonConfig,
+      rules: {
+        sourceNumber: [{ required: true, message: "璇疯緭鍏ユ潵婧愬崟鎹�", trigger: "blur" }],
+        operationDate: [{ required: true, message: "璇烽�夋嫨鏃ユ湡", trigger: "change" }],
+        toLocationId: [{ required: true, message: "璇烽�夋嫨浠撳簱浣嶇疆", trigger: "change" }],
+        fromLocationId: [{ required: true, message: "璇烽�夋嫨婧愪綅缃�", trigger: "change" }],
+        operationTypeId: [{ required: true, message: "璇烽�夋嫨鍏ュ簱绫诲瀷", trigger: "change" }]
+      },
+      companyOptions: [], // 鍏徃
+      memberOptions: [{ id: 1, name: "绠$悊鍛�" }],
+      toLocationOptions: [], //  婧愪綅缃� 浠撳簱浣嶇疆
+      list: [
+        { label: "鑽夌", status: "todo", value: 1 },
+        { label: "姝e湪绛夊緟", status: "todo", value: 2 },
+        { label: "灏辩华", status: "todo", value: 3 },
+        { label: "瀹屾垚", status: "todo", value: 4 },
+        { label: "宸插彇娑�", status: "todo", value: 5 }
+      ],
+      showButton: true,
+      activeName: "first",
+      productTableList: {},
+      tableData: [],
+      countId: 0,
+      isNoProduct: true, // 娣诲姞鏄庣粏琛屾椂鏄惁鏈変骇鍝佹湭閫夋嫨
+      showEdit: false, // 鏄惁鏄剧ず缂栬緫鎸夐挳
+      isDelClick: false, // 鍒犻櫎鎸夐挳鏄惁鍙偣鍑�
+      showFooter: false, // 鏄惁鏄剧ず鍙栨秷淇濆瓨
+      currentState: "todo", // 褰撳墠鐘舵��
+      detailTableList: {},
+      detailTableData: [{ name: "ssss" }],
+      detailId: 0,
+      isNoDetail: false, // 娣诲姞璇︽儏鏄庣粏琛屾椂鏄惁鏈�夋嫨
+      tableColumn: [],
+      receiptType: "", // 鍏ュ簱绫诲瀷
+      companyObj: {},
+      contacterObj: {},
+      isValidateClick: false, // 楠岃瘉鏄惁鏄剧ず
+      operationTypeOptions: [], // 鍏ュ簱绫诲瀷鍒楄〃
+      shipmentsInfo: {
+        carrier:[],
+        waybillNumber:'',
+        weight:0,
+        logisticWeight:0,
+      },
+      showCancel:false, // 鍙栨秷鏄惁鍙互鏄剧ず
+    }
+  },
+  created() {
+    this.setTableForm()
+    this.setBottonView()
+    this.setDetailTableForm()
+    this.getCompanyList()
+    this.getLocationList()
+    this.receiptType = this.editConfig.title === "鏌ョ湅" ? this.editConfig.infomation.operationTypeName : this.addName
+    if (this.showOperationType) {
+      this.getListTransfer()
+    }
+    this.getLogisticCompanyList()
+  },
+  methods: {
+    // 鑾峰彇鍏徃鍒楄〃
+    async getCompanyList() {
+      await getCompanyList().then((res) => {
+        console.log(res)
+        if (res.code === 200) {
+          this.companyOptions = res.data
+        }
+      })
+    },
+    // 鑾峰彇浠撳簱浣嶇疆鍒楄〃
+    async getLocationList() {
+      await getLocationList({
+        keyWord: "",
+        jointName: this.editConfig.code,
+        page: 0,
+        pageSize: 0
+      }).then((res) => {
+        console.log(res)
+        if (res.code === 200) {
+          this.toLocationOptions = res.data
+        }
+      })
+    },
+    // 鑾峰彇浠撳簱绫诲瀷
+    async getListTransfer() {
+      await getListTransfer({
+        keyword: "",
+        page: 0,
+        pageSize: 0
+      }).then((res) => {
+        console.log(res.data)
+        if (res.code === 200) {
+          const list = res.data.map((item) => {
+            return {
+              name: item.name,
+              id: item.id
+            }
+          })
+          this.operationTypeOptions = list || []
+        }
+      })
+    },
+    // 璁剧疆鍒犻櫎/鎵撳嵃/缂栬緫鏄惁鏄剧ず
+    setBottonView() {
+      console.log(this.editConfig.infomation.status)
+      if (this.editConfig.title === "鏂板缓") {
+        this.showButton = false
+        this.showEdit = false
+        this.showFooter = true
+        this.isValidateClick = false
+      } else if (this.editConfig.title === "缂栬緫") {
+        this.showButton = true
+        this.showEdit = false
+        this.isDelClick = true
+        this.showFooter = true
+      } else if (this.editConfig.title === "鏌ョ湅" && this.editConfig.infomation.status !== 4) {
+        this.showButton = true
+        this.showEdit = true
+        this.isDelClick = true
+        this.showFooter = false
+        if (this.editConfig.infomation.status === "瀹屾垚") {
+          this.isValidateClick = false
+        }else if(this.editConfig.infomation.status === 3){
+          this.isValidateClick = true
+          this.showCancel=true
+        }else{
+          this.isValidateClick = true
+
+        }
+      } else if (this.editConfig.infomation.status === 4 || this.editConfig.infomation.status === "瀹屾垚") {
+        this.showButton = true
+        this.showEdit = false
+        this.isDelClick = true
+        this.showFooter = false
+        this.isValidateClick = false
+      } else if (this.editConfig.infomation.status === 5) {
+        this.showButton = true
+        this.showEdit = false
+        this.showFooter = false
+        this.isValidateClick = false
+      } else {
+        // 灏辩华---
+        this.showButton = true
+        this.showEdit = true
+        this.showFooter = false
+        this.isValidateClick = true
+        this.showCancel=true
+      }
+      if (this.editConfig.title === "鏂板缓") {
+        this.list[0].status = "active"
+      } else {
+        this.list.map((item) => {
+          console.log(item, this.editConfig.infomation.status, "鎵撳嵃淇℃伅")
+          if (item.value === this.editConfig.infomation.status || item.label === this.editConfig.infomation.status) {
+            item.status = "active"
+          } else {
+            item.status = "todo"
+          }
+        })
+      }
+    },
+    // 鍏抽棴
+    handleClose() {
+      this.editConfig.visible = false
+    },
+    // 缂栬緫
+    editClick() {
+      this.showEdit = false
+      this.showButton = false
+      this.showFooter = true
+      this.setTableForm()
+    },
+    async getLogisticCompanyList(){
+      await getLogisticCompanyList().then((res) => {
+        if(res.code===200){
+          this.shipmentsInfo.carrier=res.data
+        }
+      })
+    },
+    // 淇濆瓨
+    saveClick(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          for (let i = 0; i < this.tableData.length; i++) {
+            if (this.tableData[i].productName.length === 0) {
+              this.isNoProduct = true
+              break
+            } else {
+              this.isNoProduct = false
+            }
+          }
+          if (this.isNoProduct) {
+            this.$message.error("璇锋坊鍔犳槑缁嗚鎴栭�夋嫨浜у搧涓嶈兘涓虹┖")
+          } else {
+            let requestUrl = this.editConfig.title === "鏂板缓" ? addOperation : updateOperation
+            let params = this.saveParams()
+            requestUrl({
+              ...params
+            }).then((res) => {
+              console.log(res)
+              this.editConfig.visible = false
+              if (res.code === 200) {
+                this.$message.success("娣诲姞鎴愬姛")
+                this.$parent.getData()
+              }
+            })
+          }
+        }
+      })
+    },
+    saveParams() {
+      let data = this.editConfig.infomation
+      let companyID = 0
+      let companyName = ""
+      let contacterID = 0
+      let contacterName = ""
+      if (this.editConfig.title === "鏂板缓") {
+        companyID = Object.keys(this.companyObj).length === 0 ? 0 : this.companyObj.value
+        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 ? "" : 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
+        contacterID = Object.keys(this.contacterObj).length === 0 ? data.contacterID : this.contacterObj.value
+        contacterName = Object.keys(this.contacterObj).length === 0 ? data.contacterName : this.contacterObj.label
+      }
+      let params = {
+        baseOperationType: data.baseOperationType,
+        comment: data.comment || "",
+        companyID: companyID,
+        companyName: companyName,
+        contacterID: contacterID,
+        contacterName: contacterName,
+        details: this.tableData,
+        fromLocationId: data.fromLocationId || 0,
+        id: data.id,
+        number: data.number || "",
+        operationDate: data.operationDate || "",
+        operationTypeId: this.showOperationType ? data.operationTypeId : this.editConfig.operationTypeId,
+        operationTypeName: this.receiptType,
+        sourceNumber: data.sourceNumber || "",
+        status: 3,
+        toLocationId: data.toLocationId || 0,
+        waybillNumber:data.waybillNumber||'',
+        weight:data.weight||0,
+        logisticWeight:data.logisticWeight||0,
+        logisticCompanyId:data.logisticCompanyId,
+      }
+      return params
+    },
+    // 鍒犻櫎
+    async delClick() {
+      await deleteOperation(this.editConfig.infomation.id).then((res) => {
+        console.log(res)
+        this.editConfig.visible = false
+        if (res.code === 200) {
+          this.$message.success("鍒犻櫎鎴愬姛")
+          this.$parent.getData()
+        }
+      })
+    },
+    // 鎿嶄綔鍒楄〃
+    setTableForm() {
+      if (
+        this.editConfig.title !== "鏂板缓" &&
+        this.editConfig.infomation.details &&
+        this.editConfig.infomation.details.length > 0
+      ) {
+        const list = this.editConfig.infomation.details.map((item) => {
+          return {
+            ...item,
+            productName: item.product.name,
+            unit: item.product.unit
+          }
+        })
+        this.tableData = list
+      } else {
+        this.tableData = []
+      }
+      // this.tableData = this.editConfig.title !== "鏂板缓" ? list : []
+      this.productTableList = {
+        tableData: this.tableData,
+        tableColumn: [
+          { label: "浜у搧", prop: "productName", productName: true, isRequird: true },
+          // { label: "璇存槑", prop: "number", input: true },
+          // { label: "鏃ユ湡", prop: "amount", date: true, isRequird: true },
+          // { label: "鎴鏃ユ湡", prop: "price", date: true },
+          { label: "鏁伴噺", prop: "amount", inputFloat: true },
+          { label: "璁¢噺鍗曚綅", prop: "unit" }
+        ]
+      }
+    },
+    // 鎿嶄綔杈撳叆
+    inputContent(val, prop, row) {
+      this.countId = row.countId
+      this.tableData.map((item) => {
+        if (item.countId === row.countId) {
+          item[prop] = val
+        }
+      })
+    },
+    // 鏂板
+    addProductClick(value) {
+      console.log(value)
+      if (value === "鎿嶄綔") {
+        console.log(this.tableData)
+        for (let i = 0; i < this.tableData.length; i++) {
+          if (this.tableData[i].productName.length === 0) {
+            this.isNoProduct = false
+            break
+          } else {
+            this.isNoProduct = true
+          }
+        }
+        if (this.isNoProduct) {
+          this.countId++
+          this.tableData.push({
+            countId: this.countId,
+            productId: "",
+            amount: 0,
+            unit: "",
+            productName: ""
+          })
+        }
+      } else {
+        console.log(this.detailTableData)
+        for (let i = 0; i < this.detailTableData.length; i++) {
+          if (this.detailTableData[i].name.length === 0) {
+            this.isNoDetail = true
+            break
+          } else {
+            this.isNoDetail = false
+          }
+        }
+        if (!this.isNoDetail) {
+          this.detailId++
+          this.detailTableData.push({
+            detailId: this.detailId,
+            id: 0,
+            amount: 0,
+            desc: "",
+            name: "",
+            number: "",
+            price: 0,
+            total: 0
+          })
+        }
+      }
+    },
+    // 鍒犻櫎
+    handleDelClick(scope, value) {
+      console.log(scope)
+      if (value === "鎿嶄綔") {
+        this.tableData.splice(scope.$index, 1)
+      } else {
+        this.detailTableData.splice(scope.$index, 1)
+      }
+    },
+    // 璇︽儏鍒楄〃
+    setDetailTableForm() {
+      this.setTableColumn()
+      this.detailTableList = {
+        tableData: this.detailTableData,
+        tableColumn: this.tableColumn
+      }
+    },
+    setTableColumn() {
+      if (this.workType === "鍐呴儴璋冩嫧") {
+        this.tableColumn = [
+          { label: "浜у搧", prop: "name", productName: true, isRequird: true },
+          { label: "浠�", prop: "number", select: true },
+          { label: "鑷�", prop: "amount", select: true },
+          { label: "瀹屾垚", prop: "total", inputFloat: true },
+          { label: "璁¢噺鍗曚綅", prop: "total", select: true }
+        ]
+      } else {
+        this.tableColumn = [
+          { label: "浜у搧", prop: "name", productName: true, isRequird: true },
+          { label: "浠�", prop: "number", select: true },
+          { label: "瀹屾垚", prop: "total", inputFloat: true },
+          { label: "璁¢噺鍗曚綅", prop: "total", select: true }
+        ]
+      }
+    },
+    // 璇︽儏杈撳叆
+    inputDetail(val, prop, row) {
+      this.detailId = row.detailId
+      this.detailTableData.map((item) => {
+        if (item.detailId === row.detailId) {
+          item[prop] = val
+        }
+      })
+    },
+    // 瀹㈡埛閫夋嫨
+    companyChange(val) {
+      console.log(val)
+      this.companyObj = val
+    },
+    // 璐熻矗浜洪�夋嫨
+    contacterChange(val) {
+      this.contacterObj = val
+    },
+    // 楠岃瘉
+    async validateClick() {
+      await updateStatus(this.editConfig.infomation.id).then((res) => {
+        console.log(res)
+        this.editConfig.visible = false
+        if (res.code === 200) {
+          this.$message.success("楠岃瘉鎴愬姛")
+          this.$parent.getData()
+        }
+      })
+    },
+
+    // 鍙栨秷
+    btnCancel(){
+      this.$confirm('纭畾鍙栨秷鍚楋紵', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        stateCancel(this.editConfig.infomation.id).then((res) => {
+          console.log(res)
+          this.editConfig.visible = false
+          if (res.code === 200) {
+            this.$message.success("鍙栨秷璋冩嫧")
+            this.$parent.getData()
+          }
+        })
+        this.list.map((item) => {
+          if (item.label==="宸插彇娑�") {
+            item.status = "active"
+          } else {
+            item.status = "todo"
+          }
+        })
+      }).catch(() => {         
+      });
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.dialog-header {
+  display: flex;
+  align-items: center;
+  font-size: 14px;
+  color: #333;
+  .header_btns {
+    margin-left: auto;
+    margin-right: 60px;
+    .btn {
+      cursor: no-drop;
+    }
+  }
+}
+.content-status {
+  display: flex;
+}
+.basic-info {
+  height: calc(100% - 80px);
+  overflow: auto;
+  margin: 20px;
+  // border: 1px solid #dcdfe6;
+  // box-shadow: inset 0 0 2px #dee2e6;
+  // -moz-box-shadow: inset 0 0 2px #dee2e6;
+  // -webkit-box-shadow: inset 0 0 2px #dee2e6;
+  // .basic-info-view {
+  //   margin-top: 20px;
+  // }
+}
+.purchase-view {
+  display: flex;
+  .left {
+    width: 50%;
+  }
+  .right {
+    width: 50%;
+  }
+}
+.second-label {
+  margin-left: 20px;
+  border-bottom: 1px solid #d9d9d9;
+  margin-bottom: 10px;
+}
+::v-deep {
+  .el-dialog__headerbtn {
+    position: absolute;
+    top: 15px;
+  }
+  .el-button {
+    &:hover {
+      border: 1px solid #dcdfe6;
+      color: #333;
+    }
+  }
+  .el-tabs--card > .el-tabs__header {
+    border-bottom: none;
+  }
+  // .el-tabs__item.is-active {
+  //   color: #333;
+  //   background: #f1f3f8;
+  // }
+  .el-tabs__item {
+    height: 30px;
+    line-height: 30px;
+    font-size: 13px;
+    background: #f3f3f3;
+  }
+  .el-tabs__header {
+    margin: 0 0 1px;
+  }
+  .bottom{
+    .el-form{
+      // border-top: 1px solid #EBEEF5;
+    }
+    .el-form-item{
+      height: 28px;
+      .el-input {
+        input{
+          height: 28px;
+        }
+      } 
+    }
+  }
+}
+</style>
diff --git a/src/views/reportForm/outboundDetail/index.vue b/src/views/reportForm/outboundDetail/index.vue
new file mode 100644
index 0000000..02183b3
--- /dev/null
+++ b/src/views/reportForm/outboundDetail/index.vue
@@ -0,0 +1,265 @@
+<template>
+  <div class="rightContent">
+    <div class="top">
+      <SearchCommonView
+        :add-title="'鏂板缓'"
+        :showAdd="false"
+        :placeholder="'璇锋牴鎹崟鍙枫�佷骇鍝併�佷笟鍔$被鍨嬭繘琛屾悳绱�'"
+        :amount-view="false"
+        @addCommonClick="addBtnClick"
+        @searchClick="getList"
+      />
+    </div>
+    <div class="list-view">
+      <div class="table">
+        <TableCommonView
+          ref="tableListRef"
+          :table-list="tableList"
+          @selTableCol="selTableCol"
+          @tableRowClick="tableRowClick"
+        ></TableCommonView>
+      </div>
+      <div class="btn-pager">
+        <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 { getHistory } from "@/api/reportForm/inventoryRwport"
+// import { getProductOperatonList } from "@/api/product/product"
+
+import AddOverviewDialog from "@/views/reportForm/outboundDetail/AddOutboundDetailDialog.vue"
+import { getDataByType } from "@/api/data"
+export default {
+  name: "outboundDetail",
+  props: {},
+  components: { AddOverviewDialog },
+  mixins: [pageMixin],
+  computed: {},
+  data() {
+    return {
+      tableList: {},
+      showcol: ["鐘舵��"],
+      searchOptions: [],
+      commonDetail: {
+        visible: false,
+        title: "鏂板缓",
+        infomation: {}
+      },
+      editConfig: {
+        visible: false,
+        title: "鏂板缓",
+        infomation: {}
+      },
+      params: {},
+      baseOperationTypeList:getDataByType("baseOperationTypeTwo"),
+    }
+  },
+  created() {
+    this.setTable()
+    console.log(this.$route.params)
+    var paramsList = sessionStorage.getItem("paramsList")
+    let params = {}
+    if (paramsList) {
+      params = JSON.parse(sessionStorage.getItem("paramsList"))
+    } else {
+      params = this.$route.params
+      sessionStorage.setItem("paramsList", JSON.stringify(params))
+    }
+    this.params = params
+    console.log(this.params,'====111')
+    this.getData()
+  },
+  // 椤甸潰閿�姣佷箣鍓�
+  beforeDestroy() {
+    sessionStorage.removeItem("paramsList")
+  },
+  methods: {
+    setTable() {
+      this.tableList = {
+        tableInfomation: [],
+        selectBox: true,
+        showcol: this.showcol,
+        allcol: [],
+        tableColumn: this.setTableColumn(this.showcol)
+      }
+      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) {
+      let tableColumn = [
+        {
+          label: "鏃ユ湡",
+          prop: "date",
+          isShowColumn: true,
+          default: true,
+          // date: true
+        },
+        {
+          label: "鍗曞彿",
+          prop: "number",
+          isShowColumn: true,
+          default: true
+        },
+        {
+          label: "浜у搧",
+          prop: "productName",
+          isShowColumn: true,
+          default: true
+        },
+        {
+          label: "浜у搧缂栫爜",
+          prop: "productId",
+          isShowColumn: true,
+          default: true
+        },
+        {
+          label: "涓氬姟绫诲瀷",
+          prop: "baseOperationType",
+          isShowColumn: true,
+          default: true,
+          conversion: true,
+          getStatus: this.getBaseOperationTypeList
+        },
+        {
+          label: "浠�",
+          prop: "fromLocation",
+          isShowColumn: true,
+          default: true
+        },
+        {
+          label: "鑷�",
+          prop: "toLocation",
+          isShowColumn: true,
+          default: true
+        },
+        {
+          label: "鏁伴噺",
+          prop: "amount",
+          isShowColumn: true,
+          default: true
+        },
+        {
+          label: "鍗曚綅",
+          prop: "unit",
+          isShowColumn: true,
+          default: true
+        },
+        {
+          label: "閲嶉噺",
+          prop: "weight",
+          isShowColumn: true,
+          default: true
+        },
+        {
+          label: "鐘舵��",
+          prop: "status",
+          width: 120,
+          isShowColumn: showcol.includes("鐘舵��"),
+          default: false,
+          status: true,
+          isCallMethod: true,
+          getCallMethod: this.getStatus
+        },
+        {
+          label: "瀹屾垚鑰�",
+          prop: "contactedName",
+          isShowColumn: showcol.includes("瀹屾垚鑰�"),
+          default: false
+        }
+      ]
+      return tableColumn
+    },
+    selTableCol(val) {
+      this.showcol = val
+      this.tableList.tableColumn = this.setTableColumn(val)
+    },
+    getBaseOperationTypeList(val){
+      let string = "--"
+      if (val) {
+        for (let i in this.baseOperationTypeList) {
+          if (this.baseOperationTypeList[i].id == val) {
+            return this.baseOperationTypeList[i].name
+          }
+        }
+      }
+      return string
+    },
+    // 搴撳瓨鎶ヨ〃璺宠浆璇锋眰鏁版嵁
+    async getData() {
+      if (this.params.name === "鎶ヨ〃") {
+        await getHistory({
+          keyWord:this.params.keyWord,
+          produceId:this.params.produceId,
+          unit:this.params.unit,
+          productName:this.params.productName,
+          page: this.pagerOptions.currPage,
+          pageSize: this.pagerOptions.pageSize
+        }).then((res) => {
+          if (res.code === 200) {
+            res.data.map((item)=>{
+                let dateObject = new Date(item.date);  
+                let formattedDateString = dateObject.toISOString().split('T')[0];  
+                item.date=formattedDateString
+            })
+            this.tableList.tableInfomation = res.data
+            this.pagerOptions.totalCount = res.total
+          }
+        })
+      } else {
+        await getHistory({
+          keyWord:this.params.keyWord,
+          baseOperationType:2,
+          page: this.pagerOptions.currPage,
+          pageSize: this.pagerOptions.pageSize
+        }).then((res) => {
+          if (res.code === 200) {
+            res.data.map((item)=>{
+                let dateObject = new Date(item.date);  
+                let formattedDateString = dateObject.toISOString().split('T')[0];  
+                item.date=formattedDateString
+            })
+            this.tableList.tableInfomation = res.data?res.data:[]
+            this.pagerOptions.totalCount = res.total
+          }
+        })
+      }
+    },
+    // 鎼滅储
+    getList(val) {
+      this.params.keyWord=val;
+      this.getData()
+    },
+    // 琛岀偣鍑�
+    tableRowClick(row) {
+      console.log(row,"鐪嬬湅row")
+      this.editConfig.visible = true
+      this.editConfig.title = "鏌ョ湅"
+      this.editConfig.infomation = { ...row }
+    },
+    // 鏂板缓
+    addBtnClick() {
+      // this.editConfig.visible = true
+      this.editConfig.title = "鏂板缓"
+    },
+    // 鐘舵��
+    getStatus(val) {
+      return val === 1 ? "鑽夌" : val === 3 ? "灏辩华" : "瀹屾垚"
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped></style>

--
Gitblit v1.8.0