liuhairui 9 місяців тому
батько
коміт
0496493483

+ 41 - 0
src/api/mes/job.js

@@ -696,3 +696,44 @@ export const fabricList = (params) => {
     params
   })
 }
+
+// 单条面料信息获取接口
+export const oneFabricDetail = (params) => {
+  return service({
+    url: '/mes_server/work_order/oneFabricDetail',
+    method: 'get',
+    params
+  })
+}
+// 出库单详情
+export const ReceiptDetail = (params) => {
+  return service({
+    url: '/mes_server/work_order/ReceiptDetail',
+    method: 'get',
+    params
+  })
+}
+// 出库单左侧菜单
+export const getReceiptTab = (params) => {
+  return service({
+    url: '/mes_server/work_order/getReceiptTab',
+    method: 'get',
+    params
+  })
+}
+// 出库单列表
+export const ReceiptList = (params) => {
+  return service({
+    url: '/mes_server/work_order/ReceiptList',
+    method: 'get',
+    params
+  })
+}
+// 出库单号、入库单号获取
+export const gitReceiptNumber = (params) => {
+  return service({
+    url: '/mes_server/work_order/gitReceiptNumber',
+    method: 'get',
+    params
+  })
+}

+ 244 - 0
src/view/inventory/fabricsummary.vue

@@ -0,0 +1,244 @@
+<template>
+  <div>
+    <layout>
+		<h1 style="margin: 0%;margin-bottom: 6px;">面料库存汇总</h1>
+		<el-row :gutter="24" style="margin-bottom: 6px;">
+			  <el-input v-model="add_searchInfo" placeholder="请扫描订单编号或输入生产款号模糊查询"  @input="handleInput"
+				@keyup.enter="add_onSubmit" id="searchInput"  style="width: 340px;height: 50px;margin-left: 10px;">
+			  </el-input>
+			  <!-- <el-button type="primary" @click="Reporting_onSubmit" style="height: 50px;font-size: 20px;">查询</el-button> -->
+			  <!-- <el-button type="primary" icon="reading" @click="details_onSubmit" style="height: 50px;font-size: 20px;">出库退还记录</el-button> -->
+		</el-row>
+      <layout>
+		  
+        <layout-content >
+          <div class="gva-table-box">
+           <el-table ref="multipleTable" style="width: 100%;height: 64vh" tooltip-effect="dark"
+                      :row-style="{ height: '40px' }"  :header-cell-style="{ padding: '0px' }"
+                      :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
+                      :data="restableData"  border row-key="ID" size="small"  
+					  :cell-class-name="tableDataCellClass"
+                      highlight-current-row="true"  @row-dblclick="updateCompanyFunc"
+                      @row-click="tableRowClick" :show-overflow-tooltip="true"
+                      @selection-change="handleSelectionChange">
+			        <!-- <el-table-column type="selection" width="80" /> -->
+              <el-table-column  align="left" label="订单编号" prop="订单编号" width="105" />
+			  <el-table-column  align="left" label="客户编号" prop="客户编号" width="80"/>
+              <el-table-column  align="left" label="生产款号" prop="生产款号" width="170"/>
+              <el-table-column  align="left" label="款式" 	 prop="款式" 	width="170"/>
+			  <el-table-column  align="left" label="物料名称" prop="物料名称" width="160"/>
+              <el-table-column  align="left" label="库存总量" prop="库存总量" width="100"/>
+			  <el-table-column  align="left" label="面料结余" prop="面料结余" width="100"/>
+			  <el-table-column  align="left" label="投料单位" prop="投料单位" width="100"/>
+            </el-table>
+            <div class="dialog-footer" style="text-align: left;margin-right: 60px;">
+			</div>
+          </div>
+      </layout-content>
+      </layout>
+    </layout>
+  </div>
+
+  
+</template>
+<script>
+//点击按钮显示下方表格
+export default {
+  data() {
+    return {
+      currentTable: '', // 当前展示的表格
+      activeName: 'first',
+      _ddhval:'',
+	  add_gddialogFormVisible: true,
+    };
+  },
+  methods: {
+    
+  }
+};
+</script>
+<script setup>
+// 全量引入格式化工具 请按需保留
+import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
+import {ref, reactive} from 'vue'
+import {getSpotList,getSpotTab,orderSearch,outReport,orderBomList,FabricDetail,fabricList} from '@/api/mes/job'
+import {ElMessage} from "element-plus";
+// import { get } from 'scriptjs';
+defineOptions({name: 'Company'})
+import { useUserStore } from '@/pinia/modules/user'
+//获取用户登录信息
+const userStore = useUserStore()
+const _username = ref('')
+_username.value = userStore.userInfo.userName + '/' + userStore.userInfo.nickName
+console.log('获取用户名称',_username.value)
+//全局调用获取当前日期
+const today = new Date();
+const year = today.getFullYear();
+const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要补零
+const day = String(today.getDate()).padStart(2, '0');
+const hours = String(today.getHours()).padStart(2, '0');
+const minutes = String(today.getMinutes()).padStart(2, '0');
+const seconds = String(today.getSeconds()).padStart(2, '0');
+const currentDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+const currentDates = `${year}-${month}-${day}`;
+//自动聚焦光标input
+const getMachineMacdata = async () => {
+	setTimeout(() => {
+		const inputElement = document.getElementById('searchInput');
+		if (inputElement) {
+			inputElement.focus();		
+		}
+	}, 100); // 延迟100毫秒
+}
+getMachineMacdata();
+
+//全局调用参数
+const add_searchInfo = ref('')//搜索
+const restableData = reactive([])//表格
+const _orderid = ref('')//订单子编号
+
+const handleInput = async ()=>{
+	add_onSubmit()
+}
+
+//查询按钮
+const add_onSubmit = async ()=>{
+	restableData.splice(0, restableData.length);//清空表格
+	//订单信息数据查询【接口】
+	const fabricListdata = await fabricList({order:add_searchInfo.value});
+	restableData.splice(0,fabricListdata.length,...fabricListdata.data);
+};
+
+//表格行点击
+const tableRowClick = async (row)=>{
+	console.log(row)
+}
+
+const resbomtableData = ref([]);
+
+
+
+// =========== 分页 ===========
+// 分页相关的响应式变量
+const page = ref(1)
+const total = ref(0)
+const pageSize = ref(10)
+// 分页
+const handleCurrentChange = (val) => {
+  page.value = val;
+  _getStaffList();
+};
+
+// 修改页面容量 点击多少条/页
+const handleSizeChange = (val) => {
+  page.value = 10;//默认显示
+  pageSize.value = val;
+  _getStaffList();
+};
+</script>
+<style scoped>
+/* 根据出库状态文字颜色 */
+:deep(.status-plan-usage-low div) {
+  color: #8c939d  !important;
+}
+:deep(.statusy-plan-usage-low div) {
+  color: blue !important;
+}
+.form-container {
+  display: flex;
+  flex-wrap: wrap;
+}
+.form-column {
+  /*flex: 1;*/
+  margin-right: 15px; /* 调整列之间的间距 */
+}
+/* 左侧输入框宽度调整 */
+.form-column .el-form-item .el-input {
+  width: 150px; /* 调整左侧输入框的宽度 */
+}
+/* 媒体查询,根据需要调整断点 */
+@media screen and (max-width: 768px) {
+  .form-column {
+    flex: 1 0 100%; /* 在小屏幕下变成单列布局 */
+    margin-right: 0;
+  }
+}
+.JKWTree-container {
+  display: flex;
+}
+.JKWTree-tree {
+  /*width: 300px;*/
+  background-color: #fff;
+  padding: 10px;
+  margin-right: 20px;
+}
+.JKWTree-tree h3 {
+  font-size: 15px;
+  font-weight: 700;
+  margin: 10px 0;
+}
+.JKWTree-content {
+  flex: 1;
+}
+/* 表格复选框大小调整 */
+:deep(.el-checkbox.el-checkbox--small .el-checkbox__inner) {
+    width: 45px; /* 复选框宽度 */
+    height: 23px; /* 复选框高度 */
+}
+/*bom参数背景*/
+:deep(.el-table__body .background-plan-usage-low div div div) {
+  background: #80FA80 !important;
+}
+/* 选中某行时的背景色 */
+:deep(.el-table__body tr.current-row) > td {
+  background: #ff80ff !important;
+}
+:deep(.el-checkbox.el-checkbox--small.is-checked .el-checkbox__inner::after) {
+    transform: scale(1.2) rotate(45deg); /* 调整选中后的对勾大小 */
+    top: 5%; /* 调整对勾位置 */
+    left: 40%; /* 调整对勾位置 */
+    width: 5px; /* 调整对勾宽度 */
+    height: 9px; /* 调整对勾高度 */
+}
+/* 选中某行时的背景色 */
+:deep(.el-table__body tr.current-row) > td {
+  background: #ff80ff !important;
+}
+</style>
+<style scoped>
+:deep(.el-table td .cell) {
+  line-height: 20px !important;
+}
+:deep(.el-tabs__header){
+  margin-bottom: 0;
+}
+.search{
+  margin-left: 0px !important;
+  margin-right: 10px !important;
+}
+.bt{
+  margin-left: 2px !important;
+  padding: 3px !important;
+  font-size: 12px;
+}
+.el-tabs__header{
+  margin: 0px !important;
+}
+.gva-table-box{
+  padding: 0px !important;
+	margin-left: 5px !important;
+}
+.mab{
+  margin-bottom: 5px;
+}
+/* 搜索样式 */
+::v-deep .el-input__wrapper #searchInput {  
+  font-size: 16px; 
+}  
+::v-deep(.el-descriptions__table tbody tr .is-bordered-label){
+	width: 60px;
+}
+::v-deep(.el-descriptions__table tbody tr .el-descriptions__content){
+	width: 120px;
+}
+</style>

+ 333 - 0
src/view/inventory/pickinglist.vue

@@ -0,0 +1,333 @@
+<template>
+  <div>
+	  <layout>
+	    <layout-header>
+<!-- 	      <div class="">
+	      <el-input v-model="add_searchInfo" placeholder="请输入入库或出库单号模糊查询"  @input="handleInput"
+	      		@keyup.enter="add_onSubmit" id="searchInput"  style="width: 340px;height: 50px;margin-left: 10px;">
+	      	  </el-input>
+	      	  <el-button type="primary" @click="Reporting_onSubmit" icon="view" style="height: 50px;font-size: 20px;">查看记录</el-button> 
+	      	   <el-button type="primary" icon="reading" @click="details_onSubmit" style="height: 50px;font-size: 20px;">出库退还记录</el-button>
+	      </div> -->
+	    </layout-header>
+	    <layout>
+		  
+		  <!-- 左侧树形结构 -->
+		  <layout-sider :resize-directions="['right']" :width="190" style="margin: 0px;">
+		    <div class="JKWTree-tree" style="height: 200px">
+		      <h3>领用单记录</h3>
+		      <el-tree :data="treeData" class="treecolor" @node-click="handleNodeClick"></el-tree>
+		    </div>
+		  </layout-sider>
+		  
+        <layout-content >
+			<el-main>
+			  <div class="gva-table-box">
+			   <el-table ref="multipleTable" style="width: 100%;height: 36vh" tooltip-effect="dark"
+						  :row-style="{ height: '20px' }"
+						  :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
+						  :header-cell-style="{ padding: '0px' }"
+						  :data="restableData"  border row-key="ID" size="small"  
+						  :cell-class-name="tableDataCellClass"
+						  highlight-current-row="true"  @row-dblclick="updateCompanyFunc"
+						  @row-click="tableRowClick" :show-overflow-tooltip="true"
+						  @selection-change="handleSelectionChange">
+						<!-- <el-table-column type="selection" width="80" /> -->
+				  <el-table-column  align="left" label="订单编号" prop="订单编号" width="160" />
+				  <el-table-column  align="left" label="出库单" 	 prop="出库单" 	width="160"/>
+				  <el-table-column  align="left" label="款号" prop="款号" width="100"/>
+				  <el-table-column  align="left" label="物料名称" prop="物料名称" width="160"/>
+				  <el-table-column  align="left" label="领料人员" prop="领料人员" width="160"/>
+				  <el-table-column  align="left" label="操作机台" 	 prop="操作机台" 	width="160"/>
+				  <el-table-column  align="left" label="日期" prop="日期:" width="160"/>
+				</el-table>
+			  </div>
+		  
+		  <el-tabs v-model="activeName" @tab-click="handleClick">
+			<el-tab-pane label="出库单详情"  @click="showTable('出库单详情')"  name="first">
+			  <el-table ref="multipleTable"
+						:row-style="{ height: '20px' }"
+						:cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
+						:header-cell-style="{ padding: '0px' }"
+						:show-overflow-tooltip="true"
+						highlight-current-row="true"
+						@row-click="listtableclick"
+						@row-dblclick="ysupdateCompanyFunc"
+						@selection-change="selectionChange($event, '出库单详情')"
+						style="width: 100%;height: 40vh" border show-summary
+						:summary-method="getSummaries" tooltip-effect="dark" :data="listtableData" row-key="ID" >
+					<!-- <el-table-column type="selection" width="30" /> -->
+					<el-table-column  align="left" label="订单编号" prop="订单编号" width="160" />
+					<el-table-column  align="left" label="款号" prop="款号" width="100"/>
+					<el-table-column  align="left" label="出库单" 	 prop="出库单" 	width="160"/>
+					<el-table-column  align="left" label="物料名称" prop="物料名称" width="160"/>
+					<el-table-column  align="left" label="数量" prop="数量" width="160"/>
+					<el-table-column  align="left" label="领料人员" prop="领料人员" width="160"/>
+					<el-table-column  align="left" label="操作机台" 	 prop="操作机台" 	width="160"/>
+					<el-table-column  align="left" label="日期" prop="日期:" width="160"/>
+			  </el-table>
+			</el-tab-pane>
+		  </el-tabs>
+		  
+		  </el-main>
+      </layout-content>
+      </layout>
+    </layout>
+  </div>
+  
+  
+</template>
+<script>
+//点击按钮显示下方表格
+export default {
+  data() {
+    return {
+      currentTable: '', // 当前展示的表格
+      activeName: 'first',
+      _ddhval:'',
+	  add_gddialogFormVisible: true,
+    };
+  },
+  methods: {
+    
+  }
+};
+</script>
+<script setup>
+// 全量引入格式化工具 请按需保留
+import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
+import {ref, reactive} from 'vue'
+import {getSpotList,getSpotTab,orderSearch,outReport,orderBomList,FabricDetail,getReceiptTab,
+ReceiptList,
+ReceiptDetail
+} from '@/api/mes/job'
+import {ElMessage} from "element-plus";
+// import { get } from 'scriptjs';
+defineOptions({name: 'Company'})
+import { useUserStore } from '@/pinia/modules/user'
+//获取用户登录信息
+const userStore = useUserStore()
+const _username = ref('')
+_username.value = userStore.userInfo.userName + '/' + userStore.userInfo.nickName
+console.log('获取用户名称',_username.value)
+//全局调用获取当前日期
+const today = new Date();
+const year = today.getFullYear();
+const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要补零
+const day = String(today.getDate()).padStart(2, '0');
+const hours = String(today.getHours()).padStart(2, '0');
+const minutes = String(today.getMinutes()).padStart(2, '0');
+const seconds = String(today.getSeconds()).padStart(2, '0');
+const currentDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+const currentDates = `${year}-${month}-${day}`;
+//自动聚焦光标input
+const getMachineMacdata = async () => {
+	setTimeout(() => {
+		const inputElement = document.getElementById('searchInput');
+		if (inputElement) {
+			inputElement.focus();		
+		}
+	}, 100); // 延迟100毫秒
+}
+getMachineMacdata();
+
+// =========== 左侧树侧形结构 =========== 
+const treeData = ref([]); 
+const defaultProps = {  
+  children: 'children',  
+  label: 'label'  
+};  
+
+const getReceiptTabs = async () => {
+  try {
+    // 调用接口获取数据
+    const response = await getReceiptTab();
+    console.log(response);  // 查看接口返回的数据
+
+    // 将接口返回的数据格式化为树形结构
+    const formattedData = response.data.map(item => ({
+      label: item.month,  // 显示月份
+      children: []        // 如果需要,可以添加子节点,或者根据需求添加
+    }));
+
+    // 将格式化后的数据赋值给treeData
+    treeData.value = formattedData;
+  } catch (error) {
+    console.error(error);
+  }
+};
+getReceiptTabs();
+
+const restableData = reactive([])
+//点击左侧树形获取编号
+const handleNodeClick = async (node) => {
+	 restableData.splice(0, restableData.length);//清空表格
+	 // 获取点击的节点的月份
+	  const month = node.label; 
+	  const response = await ReceiptList({mouth:month});
+	  console.log(response)
+	  restableData.splice(0,response.length,...response.data);
+}
+
+
+const listtableData = reactive([])
+//表格行点击
+const tableRowClick = async (row)=>{
+	console.log(row['出库单'])
+	const response = await ReceiptDetail({receipt:row['出库单']});
+	console.log(response)
+	listtableData.splice(0,response.length,...response.data);
+}
+
+const getSummaries = (param) => {  
+    const { columns, data } = param;  
+    const sums = {};  
+	//选择你希望合计的列
+    const summableLabels = ["数量"];
+    columns.forEach((column, index) => {  
+        if (index === 0) {  
+            sums[index] = '总数量合计';  
+            return;  
+        }  
+        if (summableLabels.includes(column.label)) {  
+            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 + value; 
+                    }  
+                    return prev;  
+                }, 0);  
+            } else {  
+                 sums[index] = 'N/A';  
+            }  
+        }  
+    });  
+    return sums;  
+};  
+
+// =========== 分页 ===========
+// 分页相关的响应式变量
+const page = ref(1)
+const total = ref(0)
+const pageSize = ref(10)
+// 分页
+const handleCurrentChange = (val) => {
+  page.value = val;
+  _getStaffList();
+};
+
+// 修改页面容量 点击多少条/页
+const handleSizeChange = (val) => {
+  page.value = 10;//默认显示
+  pageSize.value = val;
+  _getStaffList();
+};
+</script>
+<style scoped>
+/* 根据出库状态文字颜色 */
+:deep(.status-plan-usage-low div) {
+  color: #8c939d  !important;
+}
+:deep(.statusy-plan-usage-low div) {
+  color: blue !important;
+}
+.form-container {
+  display: flex;
+  flex-wrap: wrap;
+}
+.form-column {
+  /*flex: 1;*/
+  margin-right: 15px; /* 调整列之间的间距 */
+}
+/* 左侧输入框宽度调整 */
+.form-column .el-form-item .el-input {
+  width: 150px; /* 调整左侧输入框的宽度 */
+}
+/* 媒体查询,根据需要调整断点 */
+@media screen and (max-width: 768px) {
+  .form-column {
+    flex: 1 0 100%; /* 在小屏幕下变成单列布局 */
+    margin-right: 0;
+  }
+}
+.JKWTree-container {
+  display: flex;
+}
+.JKWTree-tree {
+  /*width: 300px;*/
+  background-color: #fff;
+  padding: 10px;
+  margin-right: 20px;
+}
+.JKWTree-tree h3 {
+  font-size: 15px;
+  font-weight: 700;
+  margin: 10px 0;
+}
+.JKWTree-content {
+  flex: 1;
+}
+/* 表格复选框大小调整 */
+:deep(.el-checkbox.el-checkbox--small .el-checkbox__inner) {
+    width: 45px; /* 复选框宽度 */
+    height: 23px; /* 复选框高度 */
+}
+/*bom参数背景*/
+:deep(.el-table__body .background-plan-usage-low div div div) {
+  background: #80FA80 !important;
+}
+/* 选中某行时的背景色 */
+:deep(.el-table__body tr.current-row) > td {
+  background: #ff80ff !important;
+}
+:deep(.el-checkbox.el-checkbox--small.is-checked .el-checkbox__inner::after) {
+    transform: scale(1.2) rotate(45deg); /* 调整选中后的对勾大小 */
+    top: 5%; /* 调整对勾位置 */
+    left: 40%; /* 调整对勾位置 */
+    width: 5px; /* 调整对勾宽度 */
+    height: 9px; /* 调整对勾高度 */
+}
+/* 选中某行时的背景色 */
+:deep(.el-table__body tr.current-row) > td {
+  background: #ff80ff !important;
+}
+</style>
+<style scoped>
+:deep(.el-table td .cell) {
+  line-height: 20px !important;
+}
+:deep(.el-tabs__header){
+  margin-bottom: 0;
+}
+.search{
+  margin-left: 0px !important;
+  margin-right: 10px !important;
+}
+.bt{
+  margin-left: 2px !important;
+  padding: 3px !important;
+  font-size: 12px;
+}
+.el-tabs__header{
+  margin: 0px !important;
+}
+.gva-table-box{
+  padding: 0px !important;
+	margin-left: 5px !important;
+}
+.mab{
+  margin-bottom: 5px;
+}
+/* 搜索样式 */
+::v-deep .el-input__wrapper #searchInput {  
+  font-size: 16px; 
+}  
+::v-deep(.el-descriptions__table tbody tr .is-bordered-label){
+	width: 60px;
+}
+::v-deep(.el-descriptions__table tbody tr .el-descriptions__content){
+	width: 120px;
+}
+</style>

+ 690 - 0
src/view/inventory/ruku.vue

@@ -0,0 +1,690 @@
+<template>
+  <div>
+    <layout>
+		<h1 style="margin: 0%;margin-bottom: 6px;">入库</h1>
+		<el-row :gutter="24" style="margin-bottom: 6px;">
+			  <el-input v-model="add_searchInfo" placeholder="请扫描订单编号或输入生产款号模糊查询"  @input="handleInput"
+				@keyup.enter="add_onSubmit" id="searchInput"  style="width: 340px;height: 50px;margin-left: 10px;">
+			  </el-input>
+			  <el-button type="primary" @click="Reporting_onSubmit" style="height: 50px;font-size: 20px;">选择入库</el-button>
+			  <el-button type="primary" icon="reading" @click="details_onSubmit" style="height: 50px;font-size: 20px;">入库记录</el-button>
+		</el-row>
+      <layout>
+		  
+        <layout-content >
+          <div class="gva-table-box">
+           <el-table ref="multipleTable" style="width: 100%;height: 64vh" tooltip-effect="dark"
+                      :row-style="{ height: '40px' }"  :header-cell-style="{ padding: '0px' }"
+                      :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
+                      :data="restableData"  border row-key="ID" size="small"  
+					  :cell-class-name="tableDataCellClass"
+                      highlight-current-row="true"  @row-dblclick="updateCompanyFunc"
+                      @row-click="tableRowClick" :show-overflow-tooltip="true"
+                      @selection-change="handleSelectionChange">
+			        <!-- <el-table-column type="selection" width="80" /> -->
+              <el-table-column  align="left" label="订单编号" prop="订单编号" width="105" />
+			  <el-table-column  align="left" label="客户编号" prop="客户编号" width="80"/>
+              <el-table-column  align="left" label="生产款号" prop="生产款号" width="170"/>
+              <el-table-column  align="left" label="款式" 	 prop="款式" 	width="170"/>
+			  <el-table-column  align="left" label="接单日期" prop="接单日期" width="160"/>
+              <el-table-column  align="left" label="创建人员" prop="创建人员" width="160"/>
+			  <el-table-column  align="left" label="创建时间" prop="创建时间" width="160"/>
+            </el-table>
+            <div class="dialog-footer" style="text-align: left;margin-right: 60px;">
+			</div>
+          </div>
+      </layout-content>
+      </layout>
+    </layout>
+  </div>
+  
+  <el-dialog v-model="res_bomdialogFormVisible" :before-close="res_bomcloseDialog"  width="100%" style="height: 100%;margin: 0%;padding: 0px 10px 0px 10px;"  destroy-on-close>
+	<div class="dialog-footer" style="margin: 0px;">
+		<el-input v-model="add_lysearchInfo" placeholder="请扫描订单编号进行操作"
+			@keyup.enter="add_lyonSubmit" id="ly_searchInput" style="width: 340px;height: 50px;margin-left: 10px;">
+		</el-input>
+		<el-button type="primary" @click="res_bomcloseDialog"  style="width: 100px;height: 50px;margin-left: 10px;">关 闭</el-button>
+		<el-button type="primary" @click="print_lingyong" style="width: 100px;height: 50px;">增加至入库页</el-button>
+		<!-- <el-button type="primary" @click="del_lingyong"  style="width: 100px;height: 50px;">删除面料领用</el-button> -->
+	</div>
+	
+	<el-divider style="margin: 10px 0px 20px;" ><span style="font-size: 18px;color:red;font-weight: bold;margin-left: 20px;">绿色部分填写入库数量</span></el-divider>
+	<el-descriptions class="margin-top" :column="4"  :size="size" border>
+		<el-descriptions-item label="订单编号" class="ddh">{{ ddhformData['ddh'] }}</el-descriptions-item>
+		<el-descriptions-item label="客户">{{ ddhformData['kh'] }}</el-descriptions-item>
+		<el-descriptions-item label="生产款号">{{ ddhformData['sckh'] }}</el-descriptions-item>
+		<el-descriptions-item label="款式">{{ ddhformData['ks'] }}</el-descriptions-item>
+	</el-descriptions>
+  	<div>
+  		<el-table ref="paichengRef" :show-overflow-tooltip="true" highlight-current-row="true"
+				  :row-style="{ height: '0px' }"  :header-cell-style="{ padding: '0px' }"
+				  :cell-style="{ padding: '0px' }" :header-row-style="{ height: '0px' }"
+  		          style="width: 100%;height: 22vh" border tooltip-effect="dark"
+  		          :data="resbomtableData" row-key="ID" :cell-class-name="scfjfpxsCellClass">
+  		  <template v-for="(item, idx) in resbom_tableColumns">
+  		    <el-table-column #default="{ row, column, $index }" align="left" :label="item.label" :width="item.width" >
+  		      <div v-if="['领用'].includes(item.prop)">
+  		        <el-input v-model="row[item.prop]" :clearable="false" style='height: 30px;'
+  		                  :id="`input${idx}${$index}`" @keyup="resbom_handleKeyDown($event, idx, $index, item.prop)"/>
+  		      </div>
+  		      <div v-else>{{ row[item.prop] }}</div>
+  		    </el-table-column>
+  		  </template>
+  		</el-table>
+  	</div>
+	
+	    <div class="print-container">
+			<el-button type="primary" @click="res_bomenterDialog"  style="width: 100px;height: 50px;">一键入库</el-button>
+	      <el-divider>
+	        <span class="print-title" style="font-size: 18px;">面料入库页</span>
+	      </el-divider>
+	      <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
+	        <p style="font-size: 18px;margin-right: 20px;">领用单号: 
+	          <el-input v-model="danhao" style="width: 200px;" disabled/>
+	        </p>
+	      			<p style="font-size: 18px;margin-right: 20px;">领用日期:
+	      			  <el-input v-model="riqi" style="width: 200px;" disabled/>
+	      			</p>
+	      </div>
+	      <div style="margin-top: 5px;">
+	        <el-table ref="paichengRef1" :show-overflow-tooltip="true" highlight-current-row="true"
+	                  :row-style="{ height: '30px' }"   :header-cell-style="{ padding: '0px' }"
+	                  :cell-style="{ padding: '0px' }"  :header-row-style="{ height: '10px' }"
+	                  style="width: 100%; height: 40vh"  border 
+	                  tooltip-effect="dark"  :data="FabriccollartableData" 
+	                  row-key="ID" :cell-class-name="scfjfpxsCellClass"
+	                  @selection-change="FabriccollarhandleSelectionChange">
+			  <!-- <el-table-column type="selection" width="45" /> -->
+	          <template v-for="(item, idx) in Fabriccollar_tableColumns">
+	            <el-table-column #default="{ row, column, $index }" align="left"  :label="item.label" :width="item.width">
+	              <div v-if="[''].includes(item.prop)">
+	                <el-input v-model="row[item.prop]" :clearable="false" 
+	                          :id="`input${idx}${$index}`" 
+	                          @keyup="resbom_handleKeyDown($event, idx, $index, item.prop)"/>
+	              </div>
+	              <div v-else>{{ row[item.prop] }}</div>
+	            </el-table-column>
+	          </template>
+	        </el-table>
+	      </div>
+		  <br>
+		  <div style="display: flex; justify-content: space-around; align-items: center; margin-bottom: 10px;">
+		    <p style="font-size: 18px;">出库人: 
+		  			<el-input v-model="chukuren" style="width: 200px;" disabled/>
+		  			</p>
+		    <p style="font-size: 18px;">领用人: 
+		      <el-input v-model="linguser" style="width: 200px;" />
+		    </p>
+		  </div>
+	    </div>
+  </el-dialog>
+  
+  <!--详情记录 -->
+  <el-dialog v-model="pickingaddvisible" :before-close="()=> pickingaddvisible = false" style="width: 70%; margin: 5% auto; height: 79%;" :title="'出库退还记录'" destroy-on-close>
+	   <div class="dialog-footer" style="bottom: 10px; right: 10px; width: 100%;">
+		 <el-button  type="primary" @click="ckth_closeDialog" style="width: 80px;height: 40px;">关 闭</el-button>
+	   </div>
+	   <br>
+		<div>
+			<el-tabs v-model="activeName" @tab-click="handleClick">
+              <el-tab-pane label="出库记录"  @click="showTable('出库记录')"  name="first">
+                <el-table ref="multipleTable"
+                          :row-style="{ height: '30px' }"
+                          :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
+                          :header-cell-style="{ padding: '0px' }"
+                          :show-overflow-tooltip="true"
+                          highlight-current-row="true"
+						  @row-click="tableclick"
+                          @row-dblclick="ysupdateCompanyFunc"
+                          style="width: 100%;height: 36vh" border
+                          :summary-method="getSummaries" tooltip-effect="dark" :data="cktableData" row-key="ID" >
+                  <el-table-column align="left" sortable label="订单编号" prop="订单编号"  width="140"/>
+				  <el-table-column align="left" sortable label="款号" prop="款号"  width="180"/>
+				  <el-table-column align="left" sortable label="数量" prop="数量"  width="105"/>
+                  <el-table-column align="left" sortable label="出库时间" prop="出库时间"  width="160"/>
+                  <el-table-column align="left" sortable label="上报机台" prop="上报机台"  width="160"/>
+                </el-table>
+              </el-tab-pane>
+			  
+			  <el-tab-pane label="入库记录"  @click="showTable('入库记录')"  name="second">
+			    <el-table ref="multipleTable"
+			              :row-style="{ height: '30px' }"
+			              :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
+			              :header-cell-style="{ padding: '0px' }"
+			              :show-overflow-tooltip="true"
+			              highlight-current-row="true"
+						  @row-click="rukutableclick"
+			              @row-dblclick="rukuupdateCompanyFunc"
+			              style="width: 100%;height: 36vh" border
+			              :summary-method="getSummaries" tooltip-effect="dark" :data="rukutableData" row-key="ID" >
+			      <el-table-column align="left" sortable label="订单编号" prop="订单编号"  width="140"/>
+				  <el-table-column align="left" sortable label="款号" prop="款号"  width="180"/>
+				  <el-table-column align="left" sortable label="数量" prop="数量"  width="105"/>
+			      <el-table-column align="left" sortable label="出库时间" prop="出库时间"  width="160"/>
+			      <el-table-column align="left" sortable label="上报机台" prop="上报机台"  width="160"/>
+			    </el-table>
+			  </el-tab-pane>
+
+              <el-tab-pane label="退还记录" @click="showTable('退还记录')" name="third">
+                <el-table ref="multipleTable"
+                          :row-style="{ height: '30px' }"
+                          :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
+                          :header-cell-style="{ padding: '0px' }"
+                          highlight-current-row="true"
+                          :show-overflow-tooltip="true"
+                          :cell-class-name="gysatusCellClass"
+                          @row-dblclick="gdgyupdateCompanyFunc"
+                          @row-click="clickybupdate2"
+                          :row-class-name="rowClassStyle2"
+                          style="width: 100%;height: 36vh" border tooltip-effect="dark" :data="thtableData" row-key="ID">
+				  <el-table-column align="left" sortable label="订单编号" prop="订单编号"  width="140"/>
+				  <el-table-column align="left" sortable label="款号" prop="款号"  width="180"/>
+				  <el-table-column align="left" sortable label="数量" prop="数量"  width="105"/>
+                  <el-table-column align="left" sortable label="出库时间" prop="出库时间"  width="160"/>
+                  <el-table-column align="left" sortable label="上报机台" prop="上报机台"  width="160"/>
+                </el-table>
+              </el-tab-pane>
+		   </el-tabs>
+		</div>
+  </el-dialog>
+  
+</template>
+<script>
+//点击按钮显示下方表格
+export default {
+  data() {
+    return {
+      currentTable: '', // 当前展示的表格
+      activeName: 'second',
+      _ddhval:'',
+	  add_gddialogFormVisible: true,
+    };
+  },
+  methods: {
+    
+  }
+};
+</script>
+<script setup>
+// 全量引入格式化工具 请按需保留
+import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
+import {ref, reactive} from 'vue'
+import {getSpotList,getSpotTab,orderSearch,outReport,orderBomList,FabricDetail,
+gitReceiptNumber
+} from '@/api/mes/job'
+import {ElMessage} from "element-plus";
+// import { get } from 'scriptjs';
+defineOptions({name: 'Company'})
+import { useUserStore } from '@/pinia/modules/user'
+//获取用户登录信息
+const userStore = useUserStore()
+const _username = ref('')
+_username.value = userStore.userInfo.userName + '/' + userStore.userInfo.nickName
+console.log('获取用户名称',_username.value)
+//全局调用获取当前日期
+const today = new Date();
+const year = today.getFullYear();
+const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要补零
+const day = String(today.getDate()).padStart(2, '0');
+const hours = String(today.getHours()).padStart(2, '0');
+const minutes = String(today.getMinutes()).padStart(2, '0');
+const seconds = String(today.getSeconds()).padStart(2, '0');
+const currentDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+const currentDates = `${year}-${month}-${day}`;
+//自动聚焦光标input
+const getMachineMacdata = async () => {
+	setTimeout(() => {
+		const inputElement = document.getElementById('searchInput');
+		if (inputElement) {
+			inputElement.focus();		
+		}
+	}, 100); // 延迟100毫秒
+}
+getMachineMacdata();
+
+//全局调用参数
+const danhao = ref('')
+const riqi = ref('')
+const linguser = ref('')
+const chukuren = ref('')
+const add_searchInfo = ref('')//搜索
+const add_lysearchInfo = ref('')//搜索
+const restableData = reactive([])//表格
+const _orderid = ref('')//订单子编号
+const _kh = ref('')//生产款号
+
+const handleInput = async ()=>{
+	add_onSubmit()
+}
+
+//查询按钮
+const add_onSubmit = async ()=>{
+	restableData.splice(0, restableData.length);//清空表格
+	//订单信息数据查询【接口】
+	const orderSearchdata = await orderSearch({search:add_searchInfo.value});
+	if(orderSearchdata.data.length === 1){
+		res_bomdialogFormVisible.value = true
+		_orderid.value = orderSearchdata.data[0]['订单编号']
+		add_searchInfo.value = orderSearchdata.data[0]['订单编号']
+		ddhformData.ddh = orderSearchdata.data[0]['订单编号']
+		ddhformData.kh = orderSearchdata.data[0]['客户编号']
+		ddhformData.sckh = orderSearchdata.data[0]['生产款号']
+		ddhformData.ks = orderSearchdata.data[0]['款式']
+		add_lysearchInfo.value = add_searchInfo.value
+		
+		const gitReceiptNumberdata = await gitReceiptNumber({number:'入库'});
+		console.log(gitReceiptNumberdata)
+		danhao.value = gitReceiptNumberdata.data
+		chukuren.value = userStore.userInfo.nickName
+		riqi.value = currentDates
+		Reporting_onSubmit()
+	}else{
+		restableData.splice(0,orderSearchdata.length,...orderSearchdata.data);
+	}
+};
+
+
+
+//表格行点击
+const tableRowClick = async (row)=>{
+	console.log(row)
+	add_searchInfo.value = row.订单编号
+	_orderid.value = row.订单编号
+	_kh.value = row.生产款号
+	ddhformData.ddh = row['订单编号']
+	ddhformData.kh = row['客户编号']
+	ddhformData.sckh = row['生产款号']
+	ddhformData.ks = row['款式']
+}
+
+//查询
+const add_lyonSubmit = async ()=>{
+	const orderSearchdata = await orderSearch({search:add_lysearchInfo.value});
+	if(orderSearchdata.data.length === 1){
+		add_lysearchInfo.value = orderSearchdata.data[0]['订单编号']
+		ddhformData.ddh = orderSearchdata.data[0]['订单编号']
+		ddhformData.kh = orderSearchdata.data[0]['客户编号']
+		ddhformData.sckh = orderSearchdata.data[0]['生产款号']
+		ddhformData.ks = orderSearchdata.data[0]['款式']
+	}
+	try {
+    const orderBomListdata = await orderBomList({order:add_lysearchInfo.value});
+	resbomtableData.value = orderBomListdata.data;
+    const formattedData = orderBomListdata.data.map(item=>{
+      item.物料名称 = item.物料名称;
+      item.计划用料 = item.计划用料;
+	  item.定额用料 = item.定额用料;
+	  item.裁床实际用料 = item.裁床实际用料;
+	  item.裁床领用面料 = item.裁床领用面料;
+	  item.裁床退回仓库面料 = item.裁床退回仓库面料;
+	  item.备注 = item.备注;
+	  item.UNIQID = item.UNIQID;
+	  item.领用 = '';
+      return item
+    });
+	add_lysearchInfo.value = ''
+  } catch (error) {
+    console.error(error);
+  }
+};
+
+const res_bomdialogFormVisible = ref(false)
+const resbomtableData = ref([]);
+const FabriccollartableData = ref([]);
+const ddhformData = reactive({
+  ddh: '',
+  kh:'',
+  sckh:'',
+  ks:'',
+});
+const resbom_tableColumns = ref(
+    [
+		// { label: '订单编号', prop: '订单编号', width: '90' },
+		// { label: '客户', prop: '客户编号', width: '70' },
+		// { label: '生产款号', prop: '生产款号', width: '100' },
+		// { label: '款式', prop: '款式', width: '100' },
+		{ label: '物料名称', prop: '物料名称', width: '160' },
+		{ label: '计划用料', prop: '计划用料', width: '105' },
+		{ label: '定额用料', prop: '定额用料', width: '110' },
+		{ label: '门封', prop: '门封', width: '100' },
+		{ label: '裁床实际用料', prop: '裁床实际用料', width: '115' },
+		{ label: '裁床领用面料', prop: '裁床领用面料', width: '115' },
+		{ label: '裁床退回仓库面料', prop: '裁床退回仓库面料', width: '150' },
+		{ label: '入库总量', prop: '入库总量', width: '90' },
+		{ label: '面料结余', prop: '面料结余', width: '90' },
+		{ label: '入库', prop: '领用', width: '110' },
+		// { label: '备注', prop: '备注', width: '120' },
+		{ label: '投料单位', prop: '投料单位', width: '90' },
+		// { label: 'UNIQID', prop: 'UNIQID', width: '80' },
+    ]
+)
+
+const Fabriccollar_tableColumns = ref(
+    [
+		{ label: '订单编号', prop: '订单编号', width: '90' },
+		{ label: '客户', prop: '客户编号', width: '70' },
+		{ label: '生产款号', prop: '生产款号', width: '100' },
+		{ label: '款式', prop: '款式', width: '100' },
+		{ label: '物料名称', prop: '物料名称', width: '160' },
+		{ label: '计划用料', prop: '计划用料', width: '105' },
+		{ label: '定额用料', prop: '定额用料', width: '110' },
+		{ label: '门封', prop: '门封', width: '100' },
+		{ label: '裁床实际用料', prop: '裁床实际用料', width: '115' },
+		{ label: '裁床领用面料', prop: '裁床领用面料', width: '115' },
+		{ label: '裁床退回仓库面料', prop: '裁床退回仓库面料', width: '150' },
+		{ label: '入库总量', prop: '入库总量', width: '90' },
+		{ label: '面料结余', prop: '面料结余', width: '90' },
+		{ label: '入库', prop: '领用', width: '110'},
+		// { label: '备注', prop: '备注', width: '120' },
+		{ label: '投料单位', prop: '投料单位', width: '90' },
+		// { label: 'UNIQID', prop: 'UNIQID', width: '80' },
+    ]
+)
+//查询
+const Reporting_onSubmit = async ()=>{
+	if(_orderid.value === '' || _orderid.value === null){
+		ElMessage({type: 'warning',message: '请扫描订单后,再操作此功能'})
+	}else{
+		add_lysearchInfo.value = add_searchInfo.value
+		res_bomdialogFormVisible.value = true
+		FabriccollartableData.value = []; 
+		// const orderBomListlsit = await orderBomList({order:_orderid.value});
+		// console.log(orderBomListlsit)
+		_TestCoefficient();
+	}
+}
+//bom数据获取
+const _TestCoefficient = async ()=>{
+  try {
+    const orderBomListdata = await orderBomList({order:_orderid.value});
+	console.log(orderBomListdata)
+	resbomtableData.value = orderBomListdata.data;
+    const formattedData = orderBomListdata.data.map(item=>{
+      item.物料名称 = item.物料名称;
+      item.计划用料 = item.计划用料;
+	  item.定额用料 = item.定额用料;
+	  item.裁床实际用料 = item.裁床实际用料;
+	  item.裁床领用面料 = item.裁床领用面料;
+	  item.裁床退回仓库面料 = item.裁床退回仓库面料;
+	  item.备注 = item.备注;
+	  item.UNIQID = item.UNIQID;
+	  item.领用 = '';
+      return item
+    });
+  } catch (error) {
+    console.error(error);
+  }
+}
+const resbom_handleKeyDown = (event, x, y, prop) => {
+  const currentElement = document.getElementById(`input${x}${y}`);
+  if (currentElement === null && currentElement === undefined) return
+  let move = 0
+  switch (event.keyCode) {
+    case 13: // Enter
+    case 40: // 向下箭头
+      if (y < resbomtableData.value.length )
+        document.getElementById(`input${x}${y + 1}`).focus();
+      break;
+    case 38: // 向上箭头
+      if ( y > 0) {
+        document.getElementById(`input${x}${y - 1}`).focus();
+      }
+      break;
+    case 39: // 向左箭头
+      if (x >= 0 && x <=6) {
+        move = x + 1
+      }
+      document.getElementById(`input${move}${y}`).focus();
+      break;
+    case 37: // 向右箭头
+      if (x = 0  && x <=6) {
+        move = x - 1
+      }
+      document.getElementById(`input${move}${y}`).focus();
+      break;
+    default:
+      break;
+  }
+}
+const scfjfpxsCellClass = ({row, column, rowIndex, columnIndex}) =>{
+  if (column.label === '入库') {
+    return 'background-plan-usage-low';
+  }
+}
+
+// 确定
+const res_bomenterDialog = async() => {
+	if(FabriccollartableData.value.length === 0){
+		ElMessage({ type: 'warning',message: '请先添加领用信息'})
+		return
+	}
+	const rawValueArray = FabriccollartableData._rawValue;
+	const formattedData = rawValueArray.map(item => {
+	  return {
+	    order_id: ddhformData.ddh,
+	    款号: ddhformData.kh,
+	    物料名称: item.物料名称 !== null ? item.物料名称 : "",
+	    number: item.领用 !== null ? item.领用 : "",
+	    rq: currentDate,
+	    name: "入库",
+		sys_id: _username.value,
+		U8UID:linguser.value
+		
+	  }
+	});
+	console.log(formattedData);
+	
+	const add_outReport = await outReport(formattedData);
+	if (add_outReport.code === 0) {
+		res_bomdialogFormVisible.value = false;
+		ElMessage({type: 'success',message: '入库成功'})
+	} else {
+		ElMessage({ type: 'error',message: '入库失败'})
+	}
+}
+
+// 取消
+const res_bomcloseDialog = () => {
+	res_bomdialogFormVisible.value = false;
+}
+
+// 增加至入库页
+const print_lingyong = async () => {
+	if(add_lysearchInfo.value === ''){
+		setTimeout(() => {
+			  const inputElement = document.getElementById('ly_searchInput');
+			  if (inputElement) {
+				  inputElement.focus();		
+			  }
+		 }, 100);//100毫秒
+		return;
+	}
+	setTimeout(() => {
+		  const inputElement = document.getElementById('ly_searchInput');
+		  if (inputElement) {
+			  inputElement.focus();		
+		  }
+	 }, 100);//100毫秒
+	const filteredData = resbomtableData.value.filter(item => item.领用 && item.领用.trim() !== "");
+  // 将过滤后的数据添加到 FabriccollartableData
+  FabriccollartableData.value.push(...filteredData);
+  add_lyonSubmit()
+}
+
+// //删除
+// const del_lingyong = async () => {
+//   if (!lySelection.value) {
+//     console.log('没有选中任何行');
+//     return;
+//   }
+ 
+//   const idsToDelete = lySelection.value.split(',').map(Number); // 确保转换为数字
+//   console.log('要删除的ID:', idsToDelete);
+//   console.log('当前数据:', FabriccollartableData.value);
+ 
+//   FabriccollartableData.value = FabriccollartableData.value.filter(
+//     item => !idsToDelete.includes(item.UNIQID)
+//   );
+ 
+//   console.log('删除后的数据:', FabriccollartableData.value);
+//   lySelection.value = '';
+// };
+
+// const lySelection = ref('')
+// const FabriccollarhandleSelectionChange = (selection) => {
+//   const ids = selection.map(item => item.UNIQID); // 提取每行的 UniqId
+//   lySelection.value = ids.join(','); // 将 UniqId 数组转换为逗号分隔的字符串
+//   console.log(lySelection.value)
+// };
+
+//=============出库退还记录==================
+const cktableData = reactive([])
+const thtableData = reactive([])
+const rukutableData = reactive([])
+
+const pickingaddvisible = ref(false)//弹窗
+// const detailData = reactive({})
+const add_prinkformData = reactive({});
+//详情记录
+const details_onSubmit = async ()=>{
+	pickingaddvisible.value = true
+	const FabricDetaillist = await FabricDetail({order:_orderid.value});
+	const ruku_FabricDetaillist = await FabricDetail({order:_orderid.value,search:'入库'});
+	console.log(FabricDetaillist)
+	console.log(ruku_FabricDetaillist)
+	rukutableData.splice(0,ruku_FabricDetaillist.length,...ruku_FabricDetaillist.data['入库记录']);
+	cktableData.splice(0,FabricDetaillist.length,...FabricDetaillist.data['出库记录']);
+	thtableData.splice(0,FabricDetaillist.length,...FabricDetaillist.data['退还记录']);
+}
+//领料取消
+const ckth_closeDialog = async ()=>{
+	pickingaddvisible.value = false
+	//自动聚焦光标input
+	getMachineMacdata();
+}
+
+
+// =========== 分页 ===========
+// 分页相关的响应式变量
+const page = ref(1)
+const total = ref(0)
+const pageSize = ref(10)
+// 分页
+const handleCurrentChange = (val) => {
+  page.value = val;
+  _getStaffList();
+};
+
+// 修改页面容量 点击多少条/页
+const handleSizeChange = (val) => {
+  page.value = 10;//默认显示
+  pageSize.value = val;
+  _getStaffList();
+};
+</script>
+<style scoped>
+/* 根据出库状态文字颜色 */
+:deep(.status-plan-usage-low div) {
+  color: #8c939d  !important;
+}
+:deep(.statusy-plan-usage-low div) {
+  color: blue !important;
+}
+.form-container {
+  display: flex;
+  flex-wrap: wrap;
+}
+.form-column {
+  /*flex: 1;*/
+  margin-right: 15px; /* 调整列之间的间距 */
+}
+/* 左侧输入框宽度调整 */
+.form-column .el-form-item .el-input {
+  width: 150px; /* 调整左侧输入框的宽度 */
+}
+/* 媒体查询,根据需要调整断点 */
+@media screen and (max-width: 768px) {
+  .form-column {
+    flex: 1 0 100%; /* 在小屏幕下变成单列布局 */
+    margin-right: 0;
+  }
+}
+.JKWTree-container {
+  display: flex;
+}
+.JKWTree-tree {
+  /*width: 300px;*/
+  background-color: #fff;
+  padding: 10px;
+  margin-right: 20px;
+}
+.JKWTree-tree h3 {
+  font-size: 15px;
+  font-weight: 700;
+  margin: 10px 0;
+}
+.JKWTree-content {
+  flex: 1;
+}
+/* 表格复选框大小调整 */
+:deep(.el-checkbox.el-checkbox--small .el-checkbox__inner) {
+    width: 45px; /* 复选框宽度 */
+    height: 23px; /* 复选框高度 */
+}
+/*bom参数背景*/
+:deep(.el-table__body .background-plan-usage-low div div div) {
+  background: #80FA80 !important;
+}
+/* 选中某行时的背景色 */
+:deep(.el-table__body tr.current-row) > td {
+  background: #ff80ff !important;
+}
+:deep(.el-checkbox.el-checkbox--small.is-checked .el-checkbox__inner::after) {
+    transform: scale(1.2) rotate(45deg); /* 调整选中后的对勾大小 */
+    top: 5%; /* 调整对勾位置 */
+    left: 40%; /* 调整对勾位置 */
+    width: 5px; /* 调整对勾宽度 */
+    height: 9px; /* 调整对勾高度 */
+}
+/* 选中某行时的背景色 */
+:deep(.el-table__body tr.current-row) > td {
+  background: #ff80ff !important;
+}
+</style>
+<style scoped>
+:deep(.el-table td .cell) {
+  line-height: 20px !important;
+}
+:deep(.el-tabs__header){
+  margin-bottom: 0;
+}
+.search{
+  margin-left: 0px !important;
+  margin-right: 10px !important;
+}
+.bt{
+  margin-left: 2px !important;
+  padding: 3px !important;
+  font-size: 12px;
+}
+.el-tabs__header{
+  margin: 0px !important;
+}
+.gva-table-box{
+  padding: 0px !important;
+	margin-left: 5px !important;
+}
+.mab{
+  margin-bottom: 5px;
+}
+/* 搜索样式 */
+::v-deep .el-input__wrapper #searchInput {  
+  font-size: 16px; 
+}  
+::v-deep(.el-descriptions__table tbody tr .is-bordered-label){
+	width: 60px;
+}
+::v-deep(.el-descriptions__table tbody tr .el-descriptions__content){
+	width: 120px;
+}
+</style>

+ 150 - 99
src/view/performance/chukubaogong.vue

@@ -1,18 +1,14 @@
 <template>
   <div>
     <layout>
-        <div class="gva-table-box">
-			<h1 style="margin: 0%;margin-bottom: 6px;">出库领用</h1>
-			<el-row :gutter="24" style="margin-bottom: 6px;">
-				  <el-input v-model="add_searchInfo" placeholder="请扫描订单号或输入生产款号进行出库领料"
-				  			  @keyup.enter="add_onSubmit"
-								  id="searchInput" 
-				  			  style="width: 340px;height: 50px;margin-left: 10px;">
-				  			  </el-input>
-				  <el-button type="primary" @click="Reporting_onSubmit" style="height: 50px;font-size: 20px;">选择领用</el-button>
-				  <el-button type="primary" icon="reading" @click="details_onSubmit" style="height: 50px;font-size: 20px;">出库退还记录</el-button>
-			</el-row>
-		</div>
+		<h1 style="margin: 0%;margin-bottom: 6px;">出库领用</h1>
+		<el-row :gutter="24" style="margin-bottom: 6px;">
+			  <el-input v-model="add_searchInfo" placeholder="请扫描订单编号或输入生产款号模糊查询"  @input="handleInput"
+				@keyup.enter="add_onSubmit" id="searchInput"  style="width: 340px;height: 50px;margin-left: 10px;">
+			  </el-input>
+			  <el-button type="primary" @click="Reporting_onSubmit" style="height: 50px;font-size: 20px;">选择领用</el-button>
+			  <el-button type="primary" icon="reading" @click="details_onSubmit" style="height: 50px;font-size: 20px;">出库退还记录</el-button>
+		</el-row>
       <layout>
 		  
         <layout-content >
@@ -26,13 +22,13 @@
                       @row-click="tableRowClick" :show-overflow-tooltip="true"
                       @selection-change="handleSelectionChange">
 			        <!-- <el-table-column type="selection" width="80" /> -->
-              <el-table-column    align="left" label="订单编号" prop="订单编号" width="105" />
-			  <el-table-column    align="left" label="客户编号" prop="客户编号" width="80"/>
-              <el-table-column    align="left" label="生产款号" prop="生产款号" width="170"/>
-              <el-table-column    align="left" label="款式" prop="款式" width="170"/>
-			  <el-table-column    align="left" label="接单日期" prop="接单日期" width="160"/>
-              <el-table-column    align="left" label="创建人员" prop="创建人员" width="160"/>
-			  <el-table-column    align="left" label="创建时间" prop="创建时间" width="160"/>
+              <el-table-column  align="left" label="订单编号" prop="订单编号" width="105" />
+			  <el-table-column  align="left" label="客户编号" prop="客户编号" width="80"/>
+              <el-table-column  align="left" label="生产款号" prop="生产款号" width="170"/>
+              <el-table-column  align="left" label="款式" 	 prop="款式" 	width="170"/>
+			  <el-table-column  align="left" label="接单日期" prop="接单日期" width="160"/>
+              <el-table-column  align="left" label="创建人员" prop="创建人员" width="160"/>
+			  <el-table-column  align="left" label="创建时间" prop="创建时间" width="160"/>
             </el-table>
             <div class="dialog-footer" style="text-align: left;margin-right: 60px;">
 			</div>
@@ -42,34 +38,29 @@
     </layout>
   </div>
   
-  <el-dialog v-model="res_bomdialogFormVisible" :before-close="res_bomcloseDialog"  width="100%" style="height: 100%;margin: 0%;"  destroy-on-close>
+  <el-dialog v-model="res_bomdialogFormVisible" :before-close="res_bomcloseDialog"  width="100%" style="height: 100%;margin: 0%;padding: 0px 10px 0px 10px;"  destroy-on-close>
 	<div class="dialog-footer" style="margin: 0px;">
-		<el-input v-model="add_lysearchInfo" placeholder="请扫描订单号或输入生产款号进行出库领料"
-			@keyup.enter="add_lyonSubmit" id="searchInput" 
-			style="width: 340px;height: 50px;margin-left: 10px;">
+		<el-input v-model="add_lysearchInfo" placeholder="请扫描订单编号进行操作"
+			@keyup.enter="add_lyonSubmit" id="ly_searchInput" style="width: 340px;height: 50px;margin-left: 10px;">
 		</el-input>
 		<el-button type="primary" @click="res_bomcloseDialog"  style="width: 100px;height: 50px;margin-left: 10px;">关 闭</el-button>
-		
-		<el-button type="primary" @click="print_lingyong"  style="width: 100px;height: 50px;">增加至领用页</el-button>
+		<el-button type="primary" @click="print_lingyong" style="width: 100px;height: 50px;">增加至领用页</el-button>
 		<!-- <el-button type="primary" @click="del_lingyong"  style="width: 100px;height: 50px;">删除面料领用</el-button> -->
 	</div>
 	
-	<el-divider><span style="font-size: 18px;color:red;font-weight: bold;margin-left: 20px;">绿色部分可进行填写</span></el-divider>
+	<el-divider style="margin: 10px 0px 20px;" ><span style="font-size: 18px;color:red;font-weight: bold;margin-left: 20px;">绿色部分填写领用数量</span></el-divider>
 	<el-descriptions class="margin-top" :column="4"  :size="size" border>
 		<el-descriptions-item label="订单编号" class="ddh">{{ ddhformData['ddh'] }}</el-descriptions-item>
 		<el-descriptions-item label="客户">{{ ddhformData['kh'] }}</el-descriptions-item>
 		<el-descriptions-item label="生产款号">{{ ddhformData['sckh'] }}</el-descriptions-item>
 		<el-descriptions-item label="款式">{{ ddhformData['ks'] }}</el-descriptions-item>
 	</el-descriptions>
-  	<div style="margin-top: 5px;">
-  		<el-table ref="paichengRef"
-  		          :show-overflow-tooltip="true"
-  				  highlight-current-row="true"
+  	<div>
+  		<el-table ref="paichengRef" :show-overflow-tooltip="true" highlight-current-row="true"
 				  :row-style="{ height: '0px' }"  :header-cell-style="{ padding: '0px' }"
 				  :cell-style="{ padding: '0px' }" :header-row-style="{ height: '0px' }"
   		          style="width: 100%;height: 22vh" border tooltip-effect="dark"
-  		          :data="resbomtableData" row-key="ID"
-  		          :cell-class-name="scfjfpxsCellClass">
+  		          :data="resbomtableData" row-key="ID" :cell-class-name="scfjfpxsCellClass">
   		  <template v-for="(item, idx) in resbom_tableColumns">
   		    <el-table-column #default="{ row, column, $index }" align="left" :label="item.label" :width="item.width" >
   		      <div v-if="['领用'].includes(item.prop)">
@@ -87,30 +78,27 @@
 	      <el-divider>
 	        <span class="print-title" style="font-size: 18px;">面料领用页</span>
 	      </el-divider>
-	      <div style="display: flex; justify-content: space-between; margin-bottom: 10px;">
-	        <p style="font-size: 18px;">单号: LY2502240001</p>
-	        <p style="font-size: 18px;">领用日期: 2025-02-24</p>
-	      </div>
+		  <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
+		    <p style="font-size: 18px;margin-right: 20px;">领用单号: 
+		      <el-input v-model="danhao" style="width: 200px;" disabled/>
+		    </p>
+			<p style="font-size: 18px;margin-right: 20px;">领用日期:
+			  <el-input v-model="riqi" style="width: 200px;" disabled/>
+			</p>
+		  </div>
 	      <div style="margin-top: 5px;">
-	        <el-table ref="paichengRef1"
-	                  :show-overflow-tooltip="true"
-	                  highlight-current-row="true"
-	                  :row-style="{ height: '30px' }"  
-	                  :header-cell-style="{ padding: '0px' }"
-	                  :cell-style="{ padding: '0px' }" 
-	                  :header-row-style="{ height: '10px' }"
-	                  style="width: 100%; height: 40vh" 
-	                  border 
-	                  tooltip-effect="dark"
-	                  :data="FabriccollartableData" 
-	                  row-key="ID"
-	                  :cell-class-name="scfjfpxsCellClass"
+	        <el-table ref="paichengRef1" :show-overflow-tooltip="true" highlight-current-row="true"
+	                  :row-style="{ height: '30px' }"   :header-cell-style="{ padding: '0px' }"
+	                  :cell-style="{ padding: '0px' }"  :header-row-style="{ height: '10px' }"
+	                  style="width: 100%; height: 40vh"  border 
+	                  tooltip-effect="dark"  :data="FabriccollartableData" 
+	                  row-key="ID" :cell-class-name="scfjfpxsCellClass"
 	                  @selection-change="FabriccollarhandleSelectionChange">
 			  <!-- <el-table-column type="selection" width="45" /> -->
 	          <template v-for="(item, idx) in Fabriccollar_tableColumns">
-	            <el-table-column #default="{ row, column, $index }" align="left" :label="item.label" :width="item.width">
+	            <el-table-column #default="{ row, column, $index }" align="left"  :label="item.label" :width="item.width">
 	              <div v-if="[''].includes(item.prop)">
-	                <el-input v-model="row[item.prop]" :clearable="false"
+	                <el-input v-model="row[item.prop]" :clearable="false" 
 	                          :id="`input${idx}${$index}`" 
 	                          @keyup="resbom_handleKeyDown($event, idx, $index, item.prop)"/>
 	              </div>
@@ -119,12 +107,19 @@
 	          </template>
 	        </el-table>
 	      </div>
+		  <br>
+		  <div style="display: flex; justify-content: space-around; align-items: center; margin-bottom: 10px;">
+		    <p style="font-size: 18px;">出库人: 
+			<el-input v-model="chukuren" style="width: 200px;" disabled/>
+			</p>
+		    <p style="font-size: 18px;">领用人: 
+		      <el-input v-model="linguser" style="width: 200px;" />
+		    </p>
+		  </div>
 	    </div>
   </el-dialog>
   
-  
-  
-  <!-- 出库退还记录 -->
+  <!--详情记录 -->
   <el-dialog v-model="pickingaddvisible" :before-close="()=> pickingaddvisible = false" style="width: 70%; margin: 5% auto; height: 79%;" :title="'出库退还记录'" destroy-on-close>
 	   <div class="dialog-footer" style="bottom: 10px; right: 10px; width: 100%;">
 		 <el-button  type="primary" @click="ckth_closeDialog" style="width: 80px;height: 40px;">关 闭</el-button>
@@ -148,11 +143,29 @@
 				  <el-table-column align="left" sortable label="数量" prop="数量"  width="105"/>
                   <el-table-column align="left" sortable label="出库时间" prop="出库时间"  width="160"/>
                   <el-table-column align="left" sortable label="上报机台" prop="上报机台"  width="160"/>
-				  
                 </el-table>
               </el-tab-pane>
+			  
+			  <el-tab-pane label="入库记录"  @click="showTable('入库记录')"  name="second">
+			    <el-table ref="multipleTable"
+			              :row-style="{ height: '30px' }"
+			              :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
+			              :header-cell-style="{ padding: '0px' }"
+			              :show-overflow-tooltip="true"
+			              highlight-current-row="true"
+						  @row-click="rukutableclick"
+			              @row-dblclick="rukuupdateCompanyFunc"
+			              style="width: 100%;height: 36vh" border
+			              :summary-method="getSummaries" tooltip-effect="dark" :data="rukutableData" row-key="ID" >
+			      <el-table-column align="left" sortable label="订单编号" prop="订单编号"  width="140"/>
+				  <el-table-column align="left" sortable label="款号" prop="款号"  width="180"/>
+				  <el-table-column align="left" sortable label="数量" prop="数量"  width="105"/>
+			      <el-table-column align="left" sortable label="出库时间" prop="出库时间"  width="160"/>
+			      <el-table-column align="left" sortable label="上报机台" prop="上报机台"  width="160"/>
+			    </el-table>
+			  </el-tab-pane>
 
-              <el-tab-pane label="退还记录" @click="showTable('退还记录')" name="second">
+              <el-tab-pane label="退还记录" @click="showTable('退还记录')" name="third">
                 <el-table ref="multipleTable"
                           :row-style="{ height: '30px' }"
                           :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
@@ -196,7 +209,9 @@ export default {
 // 全量引入格式化工具 请按需保留
 import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
 import {ref, reactive} from 'vue'
-import {getSpotList,getSpotTab,orderSearch,outReport,orderBomList,FabricDetail} from '@/api/mes/job'
+import {getSpotList,getSpotTab,orderSearch,outReport,orderBomList,FabricDetail,
+gitReceiptNumber
+} from '@/api/mes/job'
 import {ElMessage} from "element-plus";
 // import { get } from 'scriptjs';
 defineOptions({name: 'Company'})
@@ -228,12 +243,20 @@ const getMachineMacdata = async () => {
 getMachineMacdata();
 
 //全局调用参数
+const danhao = ref('')
+const riqi = ref('')
+const linguser = ref('')
+const chukuren = ref('')
 const add_searchInfo = ref('')//搜索
 const add_lysearchInfo = ref('')//搜索
 const restableData = reactive([])//表格
 const _orderid = ref('')//订单子编号
 const _kh = ref('')//生产款号
 
+const handleInput = async ()=>{
+	add_onSubmit()
+}
+
 //查询按钮
 const add_onSubmit = async ()=>{
 	restableData.splice(0, restableData.length);//清空表格
@@ -248,27 +271,33 @@ const add_onSubmit = async ()=>{
 		ddhformData.sckh = orderSearchdata.data[0]['生产款号']
 		ddhformData.ks = orderSearchdata.data[0]['款式']
 		add_lysearchInfo.value = add_searchInfo.value
+		
+		const gitReceiptNumberdata = await gitReceiptNumber({number:'出库'});
+		console.log(gitReceiptNumberdata)
+		danhao.value = gitReceiptNumberdata.data
+		chukuren.value = userStore.userInfo.nickName
+		riqi.value = currentDates
 		Reporting_onSubmit()
 	}else{
 		restableData.splice(0,orderSearchdata.length,...orderSearchdata.data);
 	}
 };
 
+
+
 //表格行点击
 const tableRowClick = async (row)=>{
 	console.log(row)
 	add_searchInfo.value = row.订单编号
 	_orderid.value = row.订单编号
 	_kh.value = row.生产款号
-	
 	ddhformData.ddh = row['订单编号']
 	ddhformData.kh = row['客户编号']
 	ddhformData.sckh = row['生产款号']
 	ddhformData.ks = row['款式']
 }
 
-
-//出库查询
+//查询
 const add_lyonSubmit = async ()=>{
 	const orderSearchdata = await orderSearch({search:add_lysearchInfo.value});
 	if(orderSearchdata.data.length === 1){
@@ -293,12 +322,12 @@ const add_lyonSubmit = async ()=>{
 	  item.领用 = '';
       return item
     });
+	add_lysearchInfo.value = ''
   } catch (error) {
     console.error(error);
   }
 };
 
-//===========报工==========
 const res_bomdialogFormVisible = ref(false)
 const resbomtableData = ref([]);
 const FabriccollartableData = ref([]);
@@ -317,7 +346,7 @@ const resbom_tableColumns = ref(
 		{ label: '物料名称', prop: '物料名称', width: '160' },
 		{ label: '计划用料', prop: '计划用料', width: '105' },
 		{ label: '定额用料', prop: '定额用料', width: '110' },
-		{ label: '门封', prop: '门封', width: '110' },
+		{ label: '门封', prop: '门封', width: '100' },
 		{ label: '裁床实际用料', prop: '裁床实际用料', width: '115' },
 		{ label: '裁床领用面料', prop: '裁床领用面料', width: '115' },
 		{ label: '裁床退回仓库面料', prop: '裁床退回仓库面料', width: '150' },
@@ -333,25 +362,25 @@ const resbom_tableColumns = ref(
 const Fabriccollar_tableColumns = ref(
     [
 		{ label: '订单编号', prop: '订单编号', width: '90' },
-		{ label: '客户', prop: '客户编号', width: '90' },
+		{ label: '客户', prop: '客户编号', width: '70' },
 		{ label: '生产款号', prop: '生产款号', width: '100' },
 		{ label: '款式', prop: '款式', width: '100' },
 		{ label: '物料名称', prop: '物料名称', width: '160' },
 		{ label: '计划用料', prop: '计划用料', width: '105' },
 		{ label: '定额用料', prop: '定额用料', width: '110' },
-		{ label: '门封', prop: '门封', width: '110' },
+		{ label: '门封', prop: '门封', width: '100' },
 		{ label: '裁床实际用料', prop: '裁床实际用料', width: '115' },
 		{ label: '裁床领用面料', prop: '裁床领用面料', width: '115' },
 		{ label: '裁床退回仓库面料', prop: '裁床退回仓库面料', width: '150' },
 		{ label: '入库总量', prop: '入库总量', width: '90' },
 		{ label: '面料结余', prop: '面料结余', width: '90' },
-		{ label: '本次领用', prop: '领用', width: '110' },
+		{ label: '本次领用', prop: '领用', width: '110'},
 		// { label: '备注', prop: '备注', width: '120' },
 		{ label: '投料单位', prop: '投料单位', width: '90' },
 		// { label: 'UNIQID', prop: 'UNIQID', width: '80' },
     ]
 )
-//报工按钮
+//查询
 const Reporting_onSubmit = async ()=>{
 	if(_orderid.value === '' || _orderid.value === null){
 		ElMessage({type: 'warning',message: '请扫描订单后,再操作此功能'})
@@ -386,37 +415,37 @@ const _TestCoefficient = async ()=>{
     console.error(error);
   }
 }
-// const resbom_handleKeyDown = (event, x, y, prop) => {
-//   const currentElement = document.getElementById(`input${x}${y}`);
-//   if (currentElement === null && currentElement === undefined) return
-//   let move = 0
-//   switch (event.keyCode) {
-//     case 13: // Enter
-//     case 40: // 向下箭头
-//       if (y < resbomtableData.value.length )
-//         document.getElementById(`input${x}${y + 1}`).focus();
-//       break;
-//     case 38: // 向上箭头
-//       if ( y > 0) {
-//         document.getElementById(`input${x}${y - 1}`).focus();
-//       }
-//       break;
-//     case 39: // 向左箭头
-//       if (x >= 0 && x <=6) {
-//         move = x + 1
-//       }
-//       document.getElementById(`input${move}${y}`).focus();
-//       break;
-//     case 37: // 向右箭头
-//       if (x = 0  && x <=6) {
-//         move = x - 1
-//       }
-//       document.getElementById(`input${move}${y}`).focus();
-//       break;
-//     default:
-//       break;
-//   }
-// }
+const resbom_handleKeyDown = (event, x, y, prop) => {
+  const currentElement = document.getElementById(`input${x}${y}`);
+  if (currentElement === null && currentElement === undefined) return
+  let move = 0
+  switch (event.keyCode) {
+    case 13: // Enter
+    case 40: // 向下箭头
+      if (y < resbomtableData.value.length )
+        document.getElementById(`input${x}${y + 1}`).focus();
+      break;
+    case 38: // 向上箭头
+      if ( y > 0) {
+        document.getElementById(`input${x}${y - 1}`).focus();
+      }
+      break;
+    case 39: // 向左箭头
+      if (x >= 0 && x <=6) {
+        move = x + 1
+      }
+      document.getElementById(`input${move}${y}`).focus();
+      break;
+    case 37: // 向右箭头
+      if (x = 0  && x <=6) {
+        move = x - 1
+      }
+      document.getElementById(`input${move}${y}`).focus();
+      break;
+    default:
+      break;
+  }
+}
 const scfjfpxsCellClass = ({row, column, rowIndex, columnIndex}) =>{
   if (column.label === '本次领用') {
     return 'background-plan-usage-low';
@@ -438,7 +467,9 @@ const res_bomenterDialog = async() => {
 	    number: item.领用 !== null ? item.领用 : "",
 	    rq: currentDate,
 	    name: "出库",
-		sys_id: _username.value
+		sys_id: _username.value,
+		// receipt_number:
+		recipient:linguser.value
 	  }
 	});
 	console.log(formattedData);
@@ -459,6 +490,21 @@ const res_bomcloseDialog = () => {
 
 // 增加至领用页
 const print_lingyong = async () => {
+	if(add_lysearchInfo.value === ''){
+		setTimeout(() => {
+			  const inputElement = document.getElementById('ly_searchInput');
+			  if (inputElement) {
+				  inputElement.focus();		
+			  }
+		 }, 100);//100毫秒
+		return;
+	}
+	setTimeout(() => {
+		  const inputElement = document.getElementById('ly_searchInput');
+		  if (inputElement) {
+			  inputElement.focus();		
+		  }
+	 }, 100);//100毫秒
 	const filteredData = resbomtableData.value.filter(item => item.领用 && item.领用.trim() !== "");
   // 将过滤后的数据添加到 FabriccollartableData
   FabriccollartableData.value.push(...filteredData);
@@ -494,14 +540,19 @@ const print_lingyong = async () => {
 //=============出库退还记录==================
 const cktableData = reactive([])
 const thtableData = reactive([])
+const rukutableData = reactive([])
+
 const pickingaddvisible = ref(false)//弹窗
 // const detailData = reactive({})
 const add_prinkformData = reactive({});
-//详情按钮
+//详情记录
 const details_onSubmit = async ()=>{
 	pickingaddvisible.value = true
 	const FabricDetaillist = await FabricDetail({order:_orderid.value});
+	const ruku_FabricDetaillist = await FabricDetail({order:_orderid.value,search:'入库'});
 	console.log(FabricDetaillist)
+	console.log(ruku_FabricDetaillist)
+	rukutableData.splice(0,ruku_FabricDetaillist.length,...ruku_FabricDetaillist.data['入库记录']);
 	cktableData.splice(0,FabricDetaillist.length,...FabricDetaillist.data['出库记录']);
 	thtableData.splice(0,FabricDetaillist.length,...FabricDetaillist.data['退还记录']);
 }