From 6685c2e8cb9aaa7c68864bd20a4ba3ad09efb7e4 Mon Sep 17 00:00:00 2001
From: llj <132905093+newwwwwwtree@users.noreply.github.com>
Date: 星期二, 02 十二月 2025 14:12:34 +0800
Subject: [PATCH] Merge branch 'master' of http://101.37.171.70:10101/r/MES-WEB-VUEUI

---
 src/views/component/PackStockDetail/index.vue         |  335 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/views/KCGL/MoveStockBill/Kf_MoveStockBillList.vue |   22 +++
 2 files changed, 356 insertions(+), 1 deletions(-)

diff --git a/src/views/KCGL/MoveStockBill/Kf_MoveStockBillList.vue b/src/views/KCGL/MoveStockBill/Kf_MoveStockBillList.vue
index 9daa2b3..c8c32ca 100644
--- a/src/views/KCGL/MoveStockBill/Kf_MoveStockBillList.vue
+++ b/src/views/KCGL/MoveStockBill/Kf_MoveStockBillList.vue
@@ -141,6 +141,9 @@
       <el-col :span="1.5">
         <el-button type="primary" icon="el-icon-printer" size="mini" :disabled="single" @click="get_BarCodeDetail">鏉$爜鏄庣粏</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button type="primary" icon="el-icon-printer" size="mini" :disabled="single" @click="get_PackStockDetail">鍖呰瀹瑰櫒鍑哄叆搴撴槑缁�</el-button>
+      </el-col>
     </el-row>
     <div class="tableBox" v-loading="loading">
       <el-table :data="tableData" ref="tableData" max-height="710" :summary-method="getSummaries"
@@ -186,6 +189,8 @@
       </el-dialog>
       <!-- 鏉$爜鏄庣粏 -->
       <BarCodeDetail :visible.sync="barCodeDetailShow" ref="barcodeDetail"/>
+      <!-- 鍖呰瀹瑰櫒鍑哄叆搴撴槑缁� -->
+      <PackStockDetail :visible.sync="packStockDetailShow" ref="packStockDetail"/>
     </div>
   </div>
 </template>
@@ -196,11 +201,12 @@
 import RowSettings from '@/views/component/rowSettings'                   //鍒楄缃粍浠�
 import PrintList from '@/views/component/printList'                       //鎵撳嵃缁勪欢
 import BarCodeDetail from '@/views/component/BarCodeDetail'               //鏉$爜鏄庣粏缁勪欢
+import PackStockDetail from '@/views/component/PackStockDetail'               //鏉$爜鏄庣粏缁勪欢
 import Edit from '@/views/KCGL/MoveStockBill/Kf_MoveStockBillEdit.vue'    //缂栬緫椤甸潰缁勪欢
 
 export default {
   name: 'Kf_MoveStockBillList',
-  components: { RowSettings, Edit, PrintList,BarCodeDetail },
+  components: { RowSettings, Edit, PrintList,BarCodeDetail,PackStockDetail },
   data() {
     return {
       baseURL: process.env.VUE_APP_BASE_API,                //鍚庣鎺ュ彛鍓嶇紑(鍚庣鏈嶅姟鍣╥p鍦板潃)
@@ -252,6 +258,7 @@
       openRowHide: false,                                   //鍒楄缃粍浠舵樉绀烘爣璁�
       rowHideShow: false,                                   //鍒楄缃粍浠跺鍣ㄦ樉绀烘爣璁�
       barCodeDetailShow: false,                             //鏉$爜鏄庣粏缁勪欢瀹瑰櫒鏄剧ず鏍囪
+      packStockDetailShow:false,                            //鍖呰瀹瑰櫒鍑哄叆搴撴槑缁嗗鍣ㄦ樉绀烘爣璁�
       
       
       
@@ -834,6 +841,19 @@
 		},
     //#endregion
 
+    //#region 鍖呰瀹瑰櫒鍑哄叆搴撴槑缁�
+    get_PackStockDetail() {
+      // if (this.selectedRow.length !== 1) {
+      //   this.$message.warning('璇烽�夋嫨涓�琛屾暟鎹煡鐪嬫潯鐮佹槑缁嗭紒')
+      //   return
+      // }
+      this.packStockDetailShow = true
+      this.$nextTick(() => {
+        this.$refs.packStockDetail.open(this.rowForm)
+      })
+		},
+    //#endregion
+
     //#region 閫�鍑�
     close() {
       // this.reset()
diff --git a/src/views/component/PackStockDetail/index.vue b/src/views/component/PackStockDetail/index.vue
new file mode 100644
index 0000000..2509806
--- /dev/null
+++ b/src/views/component/PackStockDetail/index.vue
@@ -0,0 +1,335 @@
+<template>
+  <div class="barcode-detail">
+    <el-dialog
+      :visible.sync="dialogVisible"
+      title="鍖呰瀹瑰櫒鍑哄叆搴撹褰曡〃"
+      width="90%"
+      top="5vh"
+      :close-on-click-modal="false"
+      @closed="handleClosed"
+    >
+      <el-card>
+        <div class="dialog-content">
+          <el-form :model="formData" label-width="100px" class="form-container">
+            <el-row :gutter="20">
+              <el-col :span="8">
+                <el-form-item label="鍗曟嵁鍐呯爜">
+                  <el-input v-model="formData.HInterID" disabled />
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鍗曟嵁鍙�">
+                  <el-input v-model="formData.HBillNo" disabled />
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="鍗曟嵁绫诲瀷">
+                  <el-input v-model="formData.HBillType" disabled />
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+
+          <div class="table-toolbar">
+            <el-button size="mini" @click="handleColumnSetting">
+              <i class="el-icon-setting"></i> 鍒楄缃�
+            </el-button>
+          </div>
+
+          <el-table
+            ref="mainTable"
+            :data="tableData"
+            border
+            stripe
+            style="width: 100%"
+            :loading="loading"
+            @selection-change="handleSelectionChange"
+            show-summary
+            :summary-method="getSummaries"
+          >
+            <el-table-column type="selection" width="55" fixed="left" />
+            <el-table-column
+              v-for="column in tableColumns"
+              :key="column.field"
+              :prop="column.field"
+              :label="column.title"
+              :width="column.width"
+              :align="column.align"
+              :fixed="column.fixed"
+              :sortable="column.sortable"
+              :show-overflow-tooltip="true"
+            >
+              <template v-if="column.editable" #default="scope">
+                <el-input
+                  v-model="scope.row[column.field]"
+                  size="mini"
+                />
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+      </el-card>
+    </el-dialog>
+
+    <el-dialog
+      :visible.sync="columnDialogVisible"
+      title="闅愯棌鍒楄缃�"
+      width="50%"
+    >
+      <div class="column-setting">
+        <el-checkbox-group v-model="selectedColumns">
+          <el-checkbox
+            v-for="column in allColumns"
+            :key="column.field"
+            :label="column.field"
+          >
+            {{ column.title }}
+          </el-checkbox>
+        </el-checkbox-group>
+      </div>
+      <div slot="footer">
+        <el-button @click="columnDialogVisible = false">鍙栨秷</el-button>
+        <el-button type="primary" @click="applyColumnSettings">纭畾</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import axios from 'axios'
+
+export default {
+  name: 'BarCodeDetail',
+  data() {
+    return {
+      formData: {                                   //鐢ㄤ簬鏌ヨ鐨勫弬鏁�
+        HInterID: '',
+        HBillNo: '',
+        HBillType: ''
+      },
+      loading: false,                               //椤甸潰鍔犺浇鍔ㄧ敾鏄剧ず鏍囪
+      dialogVisible: false,                         //鍖呰瀹瑰櫒鍑哄叆搴撴槑缁嗘暟鎹樉绀烘爣璁�
+      columnDialogVisible: false,                   //鍒楄缃寜閽樉绀烘爣璁�
+      
+      tableData: [],                                //琛ㄦ牸鏁版嵁
+      tableColumns: [],                             //琛ㄦ牸鍒楁暟鎹�
+      allColumns: [],                               
+      selectedColumns: [],
+      selectedRows: [],
+      baseURL: process.env.VUE_APP_BASE_URL || "http://47.96.97.237/API/"
+    }
+  },
+  methods: {
+    //#region 椤甸潰鍒濆鍖�
+    open(record) {
+      if (!record) {
+        this.$message.warning('璇烽�夋嫨瑕佹煡鐪嬫潯鐮佹槑缁嗙殑鍗曟嵁')
+        return
+      }
+
+      const hmainid = record.hmainid || record.HInterID
+      const billNo = record.鍗曟嵁鍙� || record.HBillNo
+      
+    
+      let billTypeDesc = ''
+      switch (record.鍗曟嵁绫诲瀷 || '') {
+        case '1201': billTypeDesc = '澶栬喘鍏ュ簱鍗�'; break
+        case '1202': billTypeDesc = '浜у搧鍏ュ簱鍗�'; break
+        case '1203': billTypeDesc = '鍏跺畠鍏ュ簱鍗�'; break
+        case '1204': billTypeDesc = '鐢熶骇棰嗘枡'; break
+        case '1205': billTypeDesc = '閿�鍞嚭搴�'; break
+        case '1206': billTypeDesc = '鍏跺畠鍑哄簱鍗�'; break
+        case '1207': billTypeDesc = '鐩存帴璋冩嫧鍗�'; break
+        case '1210': billTypeDesc = '濮斿鍔犲伐鍏ュ簱鍗�'; break
+        case '1211': billTypeDesc = '濮斿鍔犲伐鍑哄簱鍗�'; break
+        default: billTypeDesc = record.鍗曟嵁绫诲瀷 || ''
+      }
+
+      this.formData = {
+        HInterID: hmainid,
+        HBillNo: billNo,
+        HBillType: billTypeDesc
+      }
+
+      this.dialogVisible = true
+      this.$nextTick(() => {
+        this.loadData(hmainid, record.鍗曟嵁绫诲瀷 || '', billNo)
+      })
+    },
+    //#endregion
+
+    //#region 鏌ヨ鏁版嵁
+    async loadData(HInterID, HBillType, HBillNo) {
+      this.loading = true
+      try {
+        const sWhere = " and hmainid = " +  `${HInterID}` ;
+        
+        const url = `${this.baseURL}/Kf_ICStockInOutBill/Kf_PackStockDetailQuery`
+        const params = { sWhere }
+        
+        const response = await axios.get(url, { params })
+        const data = response.data
+
+        if (data && data.list) {
+          this.generateTableColumns(data.list)
+          this.tableData = data.data || []
+          this.applyColumnSettingsFromStorage()
+        } else {
+          this.$message.error('鑾峰彇鍖呰瀹瑰櫒鍑哄叆搴撴槑缁嗘暟鎹け璐�')
+        }
+      } catch (error) {
+        console.error('鍔犺浇鍖呰瀹瑰櫒鍑哄叆搴撴槑缁嗗け璐�:', error)
+        this.$message.error('鍔犺浇鍖呰瀹瑰櫒鍑哄叆搴撴槑缁嗗け璐�')
+      } finally {
+        this.loading = false
+      }
+    },
+    //#endregion
+
+    //#region 鏍规嵁琛ㄦ牸鍒楁暟鎹繘琛岃繘涓�姝ュ鐞�
+    generateTableColumns(columnList) {
+      const columns = []
+      const allColumns = []
+
+      
+      columns.push({
+        type: 'selection',
+        width: 55,
+        fixed: 'left'
+      })
+
+      columnList.forEach((item, index) => {
+        const colName = item.ColmCols
+        let columnConfig = {
+          field: colName,
+          title: colName,
+          width: 200,
+          align: 'center',
+          sortable: true
+        }
+
+   
+        switch (colName) {
+          case 'HItemID':
+            columnConfig.hide = true
+            break
+          case '鏁伴噺':
+            columnConfig.total = true
+            break
+        }
+
+        columns.push(columnConfig)
+        allColumns.push({ ...columnConfig })
+      })
+
+      this.tableColumns = columns
+      this.allColumns = allColumns
+      this.selectedColumns = allColumns.map(col => col.field)
+    },
+    //#endregion
+
+    //#region 鑾峰彇閫変腑琛屾暟鎹�
+    handleSelectionChange(selection) {
+      this.selectedRows = selection
+    },
+    //#endregion
+
+    //#region 鍒楄缃�
+    handleColumnSetting() {
+      this.columnDialogVisible = true
+    },
+
+    applyColumnSettings() {
+      this.tableColumns = [
+        this.tableColumns[0], 
+        ...this.allColumns.filter(col => this.selectedColumns.includes(col.field))
+      ]
+      this.columnDialogVisible = false
+      
+  
+      this.saveColumnSettings()
+    },
+
+    applyColumnSettingsFromStorage() {
+
+    },
+
+
+    saveColumnSettings() {
+   
+    },
+
+    //#endregion
+
+    //#region 鍚堣琛岃绠�
+    getSummaries(param) {
+      const { columns, data } = param
+      const sums = []
+      
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = '鍚堣'
+          return
+        }
+        
+        const values = data.map(item => Number(item[column.property]))
+        if (!values.every(value => isNaN(value))) {
+          sums[index] = values.reduce((prev, curr) => {
+            const value = Number(curr)
+            if (!isNaN(value)) {
+              return prev + curr
+            } else {
+              return prev
+            }
+          }, 0)
+        } else {
+          sums[index] = ''
+        }
+      })
+
+      return sums
+    },
+    //#endregion
+
+    //#region 椤甸潰鍏抽棴鏂规硶
+    handleClosed() {
+      this.tableData = []
+      this.tableColumns = []
+      this.selectedRows = []
+    }
+    //#endregion
+  }
+}
+</script>
+
+<style scoped>
+.barcode-detail {
+  font-family: "Microsoft YaHei", sans-serif;
+}
+
+.form-container {
+  margin-bottom: 16px;
+}
+
+.table-toolbar {
+  margin-bottom: 12px;
+}
+
+.column-setting {
+  max-height: 400px;
+  overflow-y: auto;
+}
+
+.column-setting .el-checkbox {
+  display: block;
+  margin-bottom: 8px;
+}
+
+:deep(.el-dialog__body) {
+  padding: 10px 20px;
+}
+
+:deep(.el-card__body) {
+  padding: 12px;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.1