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