zck 8 сар өмнө
parent
commit
ee7b30a970

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

@@ -772,6 +772,15 @@ export const FabricDetaildel = (data) => {
   })
 }
 
+// 入库、出库、退还日期左侧菜单
+export const fetchMonthlyFabricRecords = (params) => {
+  return service({
+    url: '/mes_server/work_order/fetchMonthlyFabricRecords',
+    method: 'get',
+    params
+  })
+}
+
 //出库订单信息数据查询
 export const OutOrderSearch = (params) => {
   return service({
@@ -928,3 +937,48 @@ export const updateMachineDeviceTypes = (data) => {
   })
 }
 
+//查询获取问题分类
+export const getProblemCategories = (params) => {
+  return service({
+    url: '/mes_server/Facility/getProblemCategories',
+    method: 'get',
+    params
+  })
+}
+
+//添加问题分类接口
+export const addProblemCategory = (data) => {
+  return service({
+    url: '/mes_server/Facility/addProblemCategory',
+    method: 'post',
+    data
+  })
+}
+
+//删除问题分类接口
+export const deleteProblemCategory = (data) => {
+  return service({
+    url: '/mes_server/Facility/deleteProblemCategory',
+    method: 'post',
+    data
+  })
+}
+
+//更新问题分类接口
+export const updateProblemCategory = (data) => {
+  return service({
+    url: '/mes_server/Facility/updateProblemCategory',
+    method: 'post',
+    data
+  })
+}
+
+//产品BOM资料
+export const Apibomlistarr = (params) => {
+  return service({
+    url: '/mes_server/Facility/Apibomlistarr',
+    method: 'get',
+    params
+  })
+}
+

+ 104 - 9
src/view/inventory/ruku.vue

@@ -8,8 +8,14 @@
 			  <el-button type="primary" @click="Reporting_onSubmit" style="height: 50px;font-size: 20px;margin-left: 20px;">面料入库</el-button>
 			  <!-- <el-button type="danger"  @click="deldetail_delclick" style="width: 80px;height: 50px;"	v-if="del_details=== true" :disabled="details_Selection === '' "  class="bt"   >删除</el-button> -->
 		</el-row>
+		
       <layout>
-		  
+		<layout-sider :resize-directions="['right']" :width="200" style="margin-right: 10px;">
+				<div class="JKWTree-tree" style="height: 70vh;">
+					<h3>日期</h3>
+					<el-tree :data="treeData" class="treecolor" highlight-current="true" @node-click="handleNodeClick"  />
+				</div>
+			</layout-sider>
         <layout-content >
           <div class="gva-table-box">
 			<el-tabs v-model="activeName" @tab-click="handleClick">
@@ -144,9 +150,15 @@
 		    <!-- <el-descriptions-item label="计划用料">{{ mianliaotabData.计划用料 }}</el-descriptions-item> -->
 		    <!-- <el-descriptions-item label="计划门幅">{{ mianliaotabData.计划门幅 }}</el-descriptions-item> -->
 			<!-- <el-descriptions-item label="单位">{{ mianliaotabData.单位 }}</el-descriptions-item> -->
-			<el-descriptions-item label="单位">{{ mianliaotabData.单位 }}</el-descriptions-item>
-		    <el-descriptions-item label="库存数量">{{ mianliaotabData.库存数量 }}</el-descriptions-item>
 			<el-descriptions-item label="累计入库数量">{{ mianliaotabData.入仓总数量 }}</el-descriptions-item>
+		    <el-descriptions-item label="库存数量">{{ mianliaotabData.库存数量 }}</el-descriptions-item>
+			<el-descriptions-item label="单位" >
+				<el-radio-group v-model="mianliaotabData.单位" >
+					<el-radio label="米" border >米</el-radio>
+					<el-radio label="码" border >码</el-radio>
+					<el-radio label="公斤" border >公斤</el-radio>
+				</el-radio-group>
+			</el-descriptions-item>
 		    <!-- <el-descriptions-item label="领用数量">{{ mianliaotabData.领用数量 }}</el-descriptions-item> -->
 		  </el-descriptions>
 		  
@@ -154,10 +166,10 @@
 			<el-descriptions-item label="定额用料">{{ mianliaotabData.定额用料 }}</el-descriptions-item>
 			<el-descriptions-item label="定额门幅">{{ mianliaotabData.定额门幅 }}</el-descriptions-item>
 			<el-descriptions-item label="实际门幅">
-			  <el-input v-model="mianliaotabData.实际门幅" placeholder="" style="margin: 0; width: 100px;"/>
+			  <el-input v-model="mianliaotabData.实际门幅" placeholder=""  class="green-bg-item" style="margin: 0; width: 100px; "/>
 			</el-descriptions-item>
-			<el-descriptions-item label="入库数量">
-			  <el-input v-model="mianliaotabData.入库数量" id='rksl' placeholder="" style="margin: 0; width: 100px;"/>
+			<el-descriptions-item label="入库数量" >
+			  <el-input v-model="mianliaotabData.入库数量" id='rksl' placeholder=""  class="green-bg-item" style="margin: 0; width: 100px;"/>
 			</el-descriptions-item>
 		</el-descriptions>
 		
@@ -169,7 +181,13 @@
 		<el-divider><span class="print-title" style="font-size: 18px;">面料入库单</span></el-divider>
 		<el-descriptions class="margin-top" :column="3"  :size="size" border>
 			<el-descriptions-item label="入库单号">{{danhao}}</el-descriptions-item>
-			<el-descriptions-item label="入库日期">{{riqi}}</el-descriptions-item>
+			<el-descriptions-item label="入库日期" >
+				<el-date-picker class="green-bg-item"
+					v-model="riqi"
+					type="date"
+					placeholder="选择日期">
+    			</el-date-picker>
+			</el-descriptions-item>
 			<el-descriptions-item label="入库人员">{{chukuren}}</el-descriptions-item>
 		</el-descriptions>
 		<br>
@@ -199,7 +217,7 @@
 				<el-table-column  align="left" label="关联订单" prop="关联订单" width="300"/>
 				<el-table-column fixed="right" label="操作" width="120">
 				    <template #default="{ row, $index }">
-				      <el-button @click="deleteRow($index)" type="text" size="small">
+				      <el-button @click="deleteRow($index)" type="danger" size="small">
 				        移除
 				      </el-button>
 				    </template>
@@ -272,7 +290,7 @@ import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
 import {ref, reactive} from 'vue'
 import {getInputDetail,
 inputStash,
-InputOrderSearch,outReport,FabricDetail,gitReceiptNumber,FabricDetaillist,FabricDetaildel,ReceiptList,ReceiptDetail} from '@/api/mes/job'
+InputOrderSearch,outReport,FabricDetail,gitReceiptNumber,FabricDetaillist,FabricDetaildel,ReceiptList,ReceiptDetail,fetchMonthlyFabricRecords} from '@/api/mes/job'
 import { ElMessage, ElMessageBox,ElUpload, ElButton } from 'element-plus';
 import { useUserStore } from '@/pinia/modules/user'
 // import { get } from 'scriptjs';
@@ -314,6 +332,75 @@ const restableData = reactive([])//表格
 const _orderid = ref('')//订单子编号
 const _kh = ref('')//生产款号
 
+
+// 侧边栏数据请求
+
+const treeData = reactive([]);
+const getTreeData = async () => {
+  try {
+    const response = await fetchMonthlyFabricRecords();
+    
+    if (response.code === 0 && response.data.入库) {
+      // 1. 只处理入库数据
+      const transformedData = Object.entries(response.data.入库).map(([month, dates]) => ({
+        label: month,  // "2025-03"
+        children: dates.map(date => ({
+          label: date,  // "2025-03-31"
+          params: {
+            date,  // 已经是正确格式,无需再转换
+            month  // 添加月份信息便于后续使用
+          }
+        }))
+      }));
+
+      // 2. 更简洁的数组更新方式
+      Object.assign(treeData, transformedData);
+    } else if (!response.data.入库) {
+      console.warn('接口中没有入库数据');
+      treeData.length = 0;  // 清空数据
+    }
+  } catch (error) {
+    console.error('获取数据失败:', error);
+    // 可以在这里添加错误提示
+    ElMessage.error('获取入库数据失败');
+  }
+};
+
+getTreeData();
+
+
+const nodedata = ref('')
+const handleNodeClick = async (node, check) => {
+	nodedata.value = node.label
+	console.log(nodedata.value);
+	restableData.splice(0, restableData.length);//清空表格
+	
+	// 取消所有节点的颜色
+	const allNodes = document.querySelectorAll('.treecolor .el-tree-node');
+		allNodes.forEach(node => {
+		node.querySelector('.el-tree-node__label').style.color = '';
+	});
+	// 获取点击的节点 给当前点击的节点改变颜色【红色】
+	const clickedNodeId = node['$treeNodeId'];
+	const clickedNode = document.querySelector(`.treecolor .el-tree-node[data-key="${clickedNodeId}"]`);
+	if (clickedNode) {
+		clickedNode.querySelector('.el-tree-node__label').style.color = 'red';
+	}
+	
+	//订单信息数据查询【接口】
+	const ReceiptList_res = await ReceiptList({mouth:nodedata.value,search:'',page:1,limit:50});
+	if (ReceiptList_res && ReceiptList_res.data && Array.isArray(ReceiptList_res.data.table)) {
+    const filteredData = ReceiptList_res.data.table.filter(item => item.单号类型 === '入库');
+    // 更新数据
+	recordtableData.splice(0, recordtableData.length);
+    recordtableData.splice(0, 0, ...filteredData);
+  } else {
+    console.error("数据获取失败");
+  }
+}
+
+
+
 //input实时调用
 const handleInput = async ()=>{
 	restableData.splice(0, restableData.length);//清空表格
@@ -887,6 +974,7 @@ const handleSizeChange = (val) => {
 :deep(.el-table__body tr.current-row) > td {
   background: #ff80ff !important;
 }
+
 </style>
 <style scoped>
 :deep(.el-table td .cell) {
@@ -931,4 +1019,11 @@ const handleSizeChange = (val) => {
   overflow: hidden !important;
   text-overflow: ellipsis !important;
 }
+
+:deep(.green-bg-item >.el-input__wrapper) {
+  background-color: #80fa80 !important; /* 浅绿色背景 */
+  padding: 8px 12px !important;
+  border-radius: 4px !important;
+}
+
 </style>

+ 94 - 6
src/view/inventory/tuihuan.vue

@@ -9,7 +9,12 @@
                 <!-- <el-button type="danger"  @click="deldetail_delclick" style="width: 80px;height: 50px;"	v-if="del_details=== true" :disabled="details_Selection === '' "  class="bt"   >删除</el-button> -->
           </el-row>
         <layout>
-            
+          <layout-sider :resize-directions="['right']" :width="200" style="margin-right: 10px;">
+				<div class="JKWTree-tree" style="height: 70vh;">
+					<h3>面料库存</h3>
+					<el-tree :data="treeData" class="treecolor" highlight-current="true" @node-click="handleNodeClick"  />
+				</div>
+			</layout-sider>
           <layout-content >
             <div class="gva-table-box">
               <el-tabs v-model="activeName" @tab-click="handleClick">
@@ -145,9 +150,15 @@
               <!-- <el-descriptions-item label="计划用料">{{ mianliaotabData.计划用料 }}</el-descriptions-item> -->
               <!-- <el-descriptions-item label="计划门幅">{{ mianliaotabData.计划门幅 }}</el-descriptions-item> -->
               <!-- <el-descriptions-item label="单位">{{ mianliaotabData.单位 }}</el-descriptions-item> -->
-              <el-descriptions-item label="单位">{{ mianliaotabData.单位 }}</el-descriptions-item>
-              <el-descriptions-item label="库存数量">{{ mianliaotabData.库存数量 }}</el-descriptions-item>
               <el-descriptions-item label="累计退还数量">{{ mianliaotabData.入仓总数量 }}</el-descriptions-item>
+              <el-descriptions-item label="库存数量">{{ mianliaotabData.库存数量 }}</el-descriptions-item>
+              <el-descriptions-item label="单位" >
+                <el-radio-group v-model="mianliaotabData.单位" >
+                  <el-radio label="米" border >米</el-radio>
+                  <el-radio label="码" border >码</el-radio>
+                  <el-radio label="公斤" border >公斤</el-radio>
+                </el-radio-group>
+              </el-descriptions-item>
               <!-- <el-descriptions-item label="领用数量">{{ mianliaotabData.领用数量 }}</el-descriptions-item> -->
             </el-descriptions>
             
@@ -159,7 +170,7 @@
                 <el-input v-model="mianliaotabData.实际门幅" placeholder="" style="margin: 0; width: 100px;"/>
               </el-descriptions-item> -->
               <el-descriptions-item label="退还数量">
-                <el-input v-model="mianliaotabData.退还数量" id='rksl' placeholder="" style="margin: 0; width: 100px;"/>
+                <el-input v-model="mianliaotabData.退还数量" id='rksl' placeholder="" class="green-bg-item" style="margin: 0; width: 100px;"/>
               </el-descriptions-item>
           </el-descriptions>
           <el-descriptions class="margin-top" :column="2" :size="size" border>
@@ -177,7 +188,13 @@
           <el-divider><span class="print-title" style="font-size: 18px;">面料退还单</span></el-divider>
           <el-descriptions class="margin-top" :column="3"  :size="size" border>
               <el-descriptions-item label="退还单号">{{danhao}}</el-descriptions-item>
-              <el-descriptions-item label="退还日期">{{riqi}}</el-descriptions-item>
+              <el-descriptions-item label="退还日期" >
+                <el-date-picker class="green-bg-item"
+                  v-model="riqi"
+                  type="date"
+                  placeholder="选择日期">
+                </el-date-picker>
+              </el-descriptions-item>
               <el-descriptions-item label="退还人员">{{chukuren}}</el-descriptions-item>
           </el-descriptions>
           <br>
@@ -281,7 +298,7 @@
   import {ref, reactive} from 'vue'
   import {getInputDetail,
   TuihuoReport,
-  OutOrderSearch,outReport,FabricDetail,gitReceiptNumber,FabricDetaillist,FabricDetaildel,ReceiptList,ReceiptDetail} from '@/api/mes/job'
+  OutOrderSearch,outReport,FabricDetail,gitReceiptNumber,FabricDetaillist,FabricDetaildel,ReceiptList,ReceiptDetail,fetchMonthlyFabricRecords} from '@/api/mes/job'
   import { ElMessage, ElMessageBox,ElUpload, ElButton } from 'element-plus';
   import { useUserStore } from '@/pinia/modules/user'
   // import { get } from 'scriptjs';
@@ -324,6 +341,72 @@
   const _kh = ref('')//生产款号
   const radio1 = ref('退面料')
 
+// 侧边栏数据请求
+
+const treeData = reactive([]);
+const getTreeData = async () => {
+  try {
+    const response = await fetchMonthlyFabricRecords();
+    
+    if (response.code === 0 && response.data.退还) {
+      // 1. 只处理退还数据
+      const transformedData = Object.entries(response.data.退还).map(([month, dates]) => ({
+        label: month,  // "2025-03"
+        children: dates.map(date => ({
+          label: date,  // "2025-03-31"
+          params: {
+            date,  // 已经是正确格式,无需再转换
+            month  // 添加月份信息便于后续使用
+          }
+        }))
+      }));
+
+      // 2. 更简洁的数组更新方式
+      Object.assign(treeData, transformedData);
+    } else if (!response.data.退还) {
+      console.warn('接口中没有退还数据');
+      treeData.length = 0;  // 清空数据
+    }
+  } catch (error) {
+    console.error('获取数据失败:', error);
+    // 可以在这里添加错误提示
+    ElMessage.error('获取退还数据失败');
+  }
+};
+
+getTreeData();
+
+
+const nodedata = ref('')
+const handleNodeClick = async (node, check) => {
+	nodedata.value = node.label
+	console.log(nodedata.value);
+	restableData.splice(0, restableData.length);//清空表格
+	
+	// 取消所有节点的颜色
+	const allNodes = document.querySelectorAll('.treecolor .el-tree-node');
+		allNodes.forEach(node => {
+		node.querySelector('.el-tree-node__label').style.color = '';
+	});
+	// 获取点击的节点 给当前点击的节点改变颜色【红色】
+	const clickedNodeId = node['$treeNodeId'];
+	const clickedNode = document.querySelector(`.treecolor .el-tree-node[data-key="${clickedNodeId}"]`);
+	if (clickedNode) {
+		clickedNode.querySelector('.el-tree-node__label').style.color = 'red';
+	}
+	
+	//订单信息数据查询【接口】
+	const ReceiptList_res = await ReceiptList({mouth:nodedata.value,search:'',page:1,limit:50});
+	if (ReceiptList_res && ReceiptList_res.data && Array.isArray(ReceiptList_res.data.table)) {
+    const filteredData = ReceiptList_res.data.table.filter(item => item.单号类型 === '退还');
+    // 更新数据
+	recordtableData.splice(0, recordtableData.length);
+    recordtableData.splice(0, 0, ...filteredData);
+  } else {
+    console.error("数据获取失败");
+  }
+}
+  
   //input实时调用
   const handleInput = async ()=>{
       restableData.splice(0, restableData.length);//清空表格
@@ -969,5 +1052,10 @@ const dj_Dialog = () => {
     overflow: hidden !important;
     text-overflow: ellipsis !important;
   }
+  :deep(.green-bg-item >.el-input__wrapper) {
+  background-color: #80fa80 !important; /* 浅绿色背景 */
+  padding: 8px 12px !important;
+  border-radius: 4px !important;
+}
   </style>
   

+ 363 - 5
src/view/material/bomproduct.vue

@@ -1,8 +1,366 @@
 <template>
-</template>
+    <div>
+      <layout>
+        <!-- <layout-header>
+          <div class="gva-table-box" style="margin-left: 20px;width: 97%;">
+            <el-form-item>
+              <el-button type="primary" icon="plus"  @click="addonclick" >新增问题分类</el-button>
+            </el-form-item>
+          </div>
+        </layout-header> -->
+  
+        <layout>
+  
+          <!-- 右侧区域 -->
+          <layout-content >
+          <el-main>
+            <div class="gva-table-box">
+              <!-- 表格数据 -->
+              <el-table ref="multipleTable" style="width: 100%;height: 76vh" tooltip-effect="dark"
+                        :row-style="{ height: '30px' }"  :header-cell-style="{ padding: '0px' }"
+                        :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
+                        :data="tableData"  border row-key="ID"
+                        size="small"
+                        highlight-current-row="true" @row-dblclick="updateCompanyFunc"
+                        @row-click="tableRowClick" :show-overflow-tooltip="true"
+                        @selection-change="handleSelectionChange">
+               <el-table-column   align="center" label="工单编号" prop="BOM_工单编号"  width="100" />
+               <el-table-column   align="center" label="物料编码" prop="BOM_物料编码"  width="100" />
+               <el-table-column   align="center" label="物料分类" prop="物料分类"  width="110" />
+               <el-table-column   align="center" label="物料名称" prop="BOM_物料名称"  width="160" />
+               <el-table-column   align="center" label="计划用料" prop="BOM_计划用量"  width="100" />
+               <el-table-column   align="center" label="计划门幅" prop="BOM_计划门幅"  width="100" />
+               <el-table-column   align="center" label="定额用料" prop="BOM_标准用量"  width="100" />
+               <el-table-column   align="center" label="定额门幅" prop="BOM_定额门幅"  width="100" />
+               <!-- <el-table-column   align="center" label="实际门幅" prop="BOM_实际门幅"  width="110" /> -->
+               <el-table-column   align="center" label="实际用料" prop="BOM_实际用量"  width="100" />
+               <el-table-column   align="center" label="库存总量" prop="BOM_库存总量"  width="100" />
+               <el-table-column   align="center" label="面料结余" prop="BOM_面料结余"  width="100" />
+               <el-table-column   align="center" label="退还数量" prop="BOM_退还数量"  width="100" />
+               <el-table-column   align="center" label="投料单位" prop="BOM_投料单位"  width="100" />
+               <el-table-column   align="center" label="备注" prop="BOM_desc"  width="160" />
+               <el-table-column   align="center" label="建档人员" prop="Sys_ID"  width="160" />
+               <el-table-column   align="center" label="建档日期" prop="Sys_rq"  width="160" />
 
-<script>
-</script>
 
-<style>
-</style>
+                <!-- <el-table-column fixed="right" label="操作" width="200">
+              <template #default="{ row, $index }">
+                <!-<el-button @click="Class_change(row,$index)" type="primary" size="small" 
+                  style="font-size: 16px;padding: 0px;width: 90px;height: 25px;">
+                  更改状态
+                </el-button> --
+                <el-button @click="record_deleteRow(row,$index)" type="danger" size="small" 
+				                 style="font-size: 16px;padding: 0px;width: 60px;background-color: red;">
+				        删除
+				      </el-button>
+              </template>
+              </el-table-column> -->
+              </el-table>
+  
+					<!-- 分页 -->
+					<div class="gva-pagination">
+						<el-pagination
+							@size-change="handleSizeChange"
+							@current-change="handleCurrentChange"
+							:current-page="page"
+							:page-sizes="[10, 30, 50, 100]"
+							:page-size="pageSize"
+							layout="total, sizes, prev, pager, next, jumper"
+							:total="total">
+						</el-pagination>
+					</div>
+            </div>
+			
+            <el-dialog v-model="add_QuestiondialogFormVisible" :before-close="add_QuestioncloseDialog"
+            style="width: 40%; max-height: 80%; overflow-y: auto; margin-top: 4%;"
+            :title="'新增问题信息'" destroy-on-close>
+			
+            <el-form label-width="100px" :model="add_Questionformdata">
+              <el-row :gutter="24" class="form-row">
+                <el-col :span="20">
+                  <el-form-item label="问题类型" class="mab" prop="keyOrder" id ='MAC地址' label-width='110'>
+                    <el-input v-model="add_Questionformdata.问题类型"/>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="20">
+                  <el-form-item label="归属" class="mab" prop="keyOrder" id ='MAC地址' label-width='110'>
+                  <el-radio-group v-model="add_Questionformdata.归属" >
+                    <el-radio label="次片" border >次片</el-radio>
+                    <el-radio label="返工" border >返工</el-radio>
+                  </el-radio-group>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+        
+        
+            </el-form>
+        
+            <template #footer>
+              <div class="dialog-footer" style="display: flex; justify-content: flex-end; padding: 10px;">
+                <el-button type="primary" @click="add_QuestioncloseDialog">取消</el-button>
+                <el-button type="primary" @click="add_QuestionenterDialog">确定</el-button>
+              </div>
+            </template>
+            
+          </el-dialog>
+            
+          </el-main>
+        </layout-content>
+        </layout>
+      </layout>
+  
+    </div>
+  </template>
+  <script setup>
+  // 全量引入格式化工具 请按需保留
+  import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
+  import { getProblemCategories,deleteProblemCategory,addProblemCategory,Apibomlistarr } from '@/api/mes/job'
+  import {ref, reactive} from 'vue'
+  import { useUserStore } from '@/pinia/modules/user'
+  import {ElMessage,ElMessageBox} from "element-plus";
+  defineOptions({name: 'Company'})
+  //获取登录用户信息
+    const userStore = useUserStore()
+    const _username = ref('')
+    _username.value = userStore.userInfo.userName + '/' + userStore.userInfo.nickName
+
+  // 分页相关的响应式变量
+  const page = ref(1)
+  const total = ref(0)
+  const pageSize = ref(50)
+  // 分页
+  const handleCurrentChange = (val) => {
+	page.value = val;
+	_gettabledata();
+  };
+  
+  // 修改页面容量 点击多少条/页
+  const handleSizeChange = (val) => {
+	pageSize.value = val;
+	_gettabledata();
+  };
+
+  // =========== 获取表格数据 ===========
+  const tableData = ref([])
+  const _gettabledata = async () => {
+    // 调用接口获取数据
+    const res = await Apibomlistarr({page:page.value,limit:pageSize.value})
+    console.log(res)
+    if (res.code === 0) {
+      tableData.value = res.data.list;
+      total.value = res.data.total;
+    }
+  }
+  _gettabledata();
+
+  const add_QuestiondialogFormVisible = ref(false)
+  const add_Questionformdata = reactive({
+  问题类型: '',
+  归属: '',
+});
+
+  // 新增
+  const addonclick = () => {
+    add_QuestiondialogFormVisible.value = true;
+  }
+
+  const add_QuestionenterDialog =  async  () => {
+	//必填
+	if(add_Questionformdata['问题类型'] === ''||add_Questionformdata['归属'] === ''){
+		ElMessage({type: 'warning',message: '请将信息填写完整'})
+		return false;
+	}
+
+    const add_Questionparams = {
+      问题类型: add_Questionformdata.问题类型,
+      classification: add_Questionformdata.归属,
+      sys_id: userStore.userInfo.nickName,
+    }
+    console.log(add_Questionparams)
+	const res = await addProblemCategory(add_Questionparams)
+	if (res.code === 0) {
+		ElMessage.success('新增成功')
+		add_QuestioncloseDialog()
+		_gettabledata()
+	}
+}  
+
+  //新增颜色资料取消
+  const add_QuestioncloseDialog = () => {
+    add_QuestiondialogFormVisible.value = false
+}
+  
+
+  // 更改状态
+  const Status_change = async (row, index) => {
+    console.log(row.UniqId,index) 
+    const newStatus = row.status === '1' ? '0' : '1';
+    // 调用接口获取数据
+    const res = await updateQuestionDeviceTypes({UniqId:row.UniqId,status:newStatus})
+    if (res.code === 0) {
+      ElMessage.success('更改状态成功')
+      _gettabledata();
+    }
+  }
+
+  const record_deleteRow = async (row, index) => {
+    console.log(row.id);
+
+    // 使用 ElMessageBox 提示确认删除
+    ElMessageBox.confirm('确定删除此行数据吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+    }).then(async () => {
+        // 确认删除,检查UNIQID是否为空
+        if (row.id === '' || row.id === null || row.id === undefined) {
+            // 删除当前行数据
+            resbomtableData.value.splice(index, 1);
+            ElMessage({
+                type: 'success',
+                message: '删除成功'
+            });
+        } else {
+            // 调用接口删除
+			        const Bomdel_del = await deleteProblemCategory({ id:row.id});
+            if (Bomdel_del.code === 0) {
+                ElMessage({
+                    type: 'success',
+                    message: '删除成功'
+                });
+            } else {
+                ElMessage({
+                    type: 'error',
+                    message: '删除失败'
+                });
+            }
+            _gettabledata();
+        }
+    }).catch(() => {
+        // 取消删除
+        ElMessage({
+            type: 'info',
+            message: '已取消删除'
+        }); 
+    });
+}
+
+
+
+  
+
+  
+  
+  
+  </script>
+  
+  <style scoped>
+  .form-container {
+    display: flex;
+    flex-wrap: wrap;
+  }
+  
+  .form-column {
+    /*flex: 1;*/
+    margin-right: 15px; /* 调整列之间的间距 */
+  }
+  
+  /* 左侧输入框宽度调整 */
+  .form-column .el-form-item .el-input {
+    width: 150px; /* 调整左侧输入框的宽度 */
+  }
+  
+  :deep(.hui-plan-usage-lows  div) {
+    color: #8c939d !important;
+  }
+  :deep(.lan-plan-usage-lows  div) {
+    color: blue !important;
+    font-weight: bold;
+  }
+ 
+  /* 媒体查询,根据需要调整断点 */
+  @media screen and (max-width: 768px) {
+    .form-column {
+      flex: 1 0 100%; /* 在小屏幕下变成单列布局 */
+      margin-right: 0;
+    }
+  }
+  /*:deep(.el-table td .cell) {*/
+  /*  line-height: 30px !important;*/
+  /*}*/
+  .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;
+  }
+  /* 图片上传 */
+  .upload-box {
+    width: 200px;
+    height: 200px;
+    border: 2px dashed #e2e2e2;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    position: relative;
+    cursor: pointer;
+  }
+  .uploaded-image {
+    width: 100%;
+    height: 100%;
+    object-fit: cover;
+  }
+  .upload-icon {
+    font-size: 40px;
+    color: #c0c4cc;
+  }
+  .file-input {
+    display: none;
+  }
+  .el-table .warning-row {
+    background: oldlace;
+  }
+  
+  /* 选中某行时的背景色 */
+  :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;
+  }
+  .mab{
+    margin-bottom: 5px;
+  }
+  </style>
+  

+ 342 - 0
src/view/performance/QualityAssessment/QuestionClassification.vue

@@ -0,0 +1,342 @@
+<template>
+    <div>
+      <layout>
+        <layout-header>
+          <div class="gva-table-box" style="margin-left: 20px;width: 97%;">
+            <el-form-item>
+              <el-button type="primary" icon="plus"  @click="addonclick" >新增问题分类</el-button>
+            </el-form-item>
+          </div>
+        </layout-header>
+  
+        <layout>
+  
+          <!-- 右侧区域 -->
+          <layout-content >
+          <el-main>
+            <div class="gva-table-box">
+              <!-- 表格数据 -->
+              <el-table ref="multipleTable" style="width: 100%;height: 76vh" tooltip-effect="dark"
+                        :row-style="{ height: '30px' }"  :header-cell-style="{ padding: '0px' }"
+                        :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
+                        :data="tableData"  border row-key="ID"
+                        size="small"
+                        highlight-current-row="true" @row-dblclick="updateCompanyFunc"
+                        @row-click="tableRowClick" :show-overflow-tooltip="true"
+                        @selection-change="handleSelectionChange">
+               <el-table-column  sortable align="center" label="问题类型" prop="问题类型"  width="220" />
+               <!-- <el-table-column  sortable align="center" label="建档日期" prop="Sys_rq"  width="130" /> -->
+               <!-- <el-table-column  sortable align="center" label="删除日期" prop="mod_rq"  width="130" />
+               <el-table-column  sortable align="center" label="更新日期" prop="update_time"  width="130" /> -->
+               <el-table-column  sortable align="center" label="归属" prop="classification"  width="130" />
+               <!-- <el-table-column prop="status" label="状态" align="center" width="130" sortable>
+                    <template #default="{ row }">
+                        <el-tag :type="row.status === '1' ? 'success' : 'danger'">
+                            {{ row.status === '1' ? '正常' : '异常' }}
+                        </el-tag>
+                    </template>
+                </el-table-column> -->
+                <el-table-column fixed="right" label="操作" width="200">
+              <template #default="{ row, $index }">
+                <!-- <el-button @click="Class_change(row,$index)" type="primary" size="small" 
+                  style="font-size: 16px;padding: 0px;width: 90px;height: 25px;">
+                  更改状态
+                </el-button> -->
+                <el-button @click="record_deleteRow(row,$index)" type="danger" size="small" 
+				                 style="font-size: 16px;padding: 0px;width: 60px;background-color: red;">
+				        删除
+				      </el-button>
+              </template>
+              </el-table-column>
+              </el-table>
+  
+              <!-- 分页 -->
+              <div class="gva-pagination">
+                <el-pagination layout="total" :current-page="page" :page-size="pageSize"
+                 :total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
+              </div>
+            </div>
+			
+            <el-dialog v-model="add_QuestiondialogFormVisible" :before-close="add_QuestioncloseDialog"
+            style="width: 40%; max-height: 80%; overflow-y: auto; margin-top: 4%;"
+            :title="'新增问题信息'" destroy-on-close>
+			
+            <el-form label-width="100px" :model="add_Questionformdata">
+              <el-row :gutter="24" class="form-row">
+                <el-col :span="20">
+                  <el-form-item label="问题类型" class="mab" prop="keyOrder" id ='MAC地址' label-width='110'>
+                    <el-input v-model="add_Questionformdata.问题类型"/>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="20">
+                  <el-form-item label="归属" class="mab" prop="keyOrder" id ='MAC地址' label-width='110'>
+                  <el-radio-group v-model="add_Questionformdata.归属" >
+                    <el-radio label="次片" border >次片</el-radio>
+                    <el-radio label="返工" border >返工</el-radio>
+                  </el-radio-group>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+        
+        
+            </el-form>
+        
+            <template #footer>
+              <div class="dialog-footer" style="display: flex; justify-content: flex-end; padding: 10px;">
+                <el-button type="primary" @click="add_QuestioncloseDialog">取消</el-button>
+                <el-button type="primary" @click="add_QuestionenterDialog">确定</el-button>
+              </div>
+            </template>
+            
+          </el-dialog>
+            
+          </el-main>
+        </layout-content>
+        </layout>
+      </layout>
+  
+    </div>
+  </template>
+  <script setup>
+  // 全量引入格式化工具 请按需保留
+  import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
+  import { getProblemCategories,deleteProblemCategory,addProblemCategory } from '@/api/mes/job'
+  import {ref, reactive} from 'vue'
+  import { useUserStore } from '@/pinia/modules/user'
+  import {ElMessage,ElMessageBox} from "element-plus";
+  defineOptions({name: 'Company'})
+  //获取登录用户信息
+    const userStore = useUserStore()
+    const _username = ref('')
+    _username.value = userStore.userInfo.userName + '/' + userStore.userInfo.nickName
+  // =========== 获取表格数据 ===========
+  const tableData = ref([])
+  const _gettabledata = async () => {
+    // 调用接口获取数据
+    const res = await getProblemCategories()
+    console.log(res)
+    if (res.code === 0) {
+      tableData.value = res.data.data;
+    }
+  }
+  _gettabledata();
+
+  const add_QuestiondialogFormVisible = ref(false)
+  const add_Questionformdata = reactive({
+  问题类型: '',
+  归属: '',
+});
+
+  // 新增
+  const addonclick = () => {
+    add_QuestiondialogFormVisible.value = true;
+  }
+
+  const add_QuestionenterDialog =  async  () => {
+	//必填
+	if(add_Questionformdata['问题类型'] === ''||add_Questionformdata['归属'] === ''){
+		ElMessage({type: 'warning',message: '请将信息填写完整'})
+		return false;
+	}
+
+    const add_Questionparams = {
+      问题类型: add_Questionformdata.问题类型,
+      classification: add_Questionformdata.归属,
+      sys_id: userStore.userInfo.nickName,
+    }
+    console.log(add_Questionparams)
+	const res = await addProblemCategory(add_Questionparams)
+	if (res.code === 0) {
+		ElMessage.success('新增成功')
+		add_QuestioncloseDialog()
+		_gettabledata()
+	}
+}  
+
+  //新增颜色资料取消
+  const add_QuestioncloseDialog = () => {
+    add_QuestiondialogFormVisible.value = false
+}
+  
+
+  // 更改状态
+  const Status_change = async (row, index) => {
+    console.log(row.UniqId,index) 
+    const newStatus = row.status === '1' ? '0' : '1';
+    // 调用接口获取数据
+    const res = await updateQuestionDeviceTypes({UniqId:row.UniqId,status:newStatus})
+    if (res.code === 0) {
+      ElMessage.success('更改状态成功')
+      _gettabledata();
+    }
+  }
+
+  const record_deleteRow = async (row, index) => {
+    console.log(row.id);
+
+    // 使用 ElMessageBox 提示确认删除
+    ElMessageBox.confirm('确定删除此行数据吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+    }).then(async () => {
+        // 确认删除,检查UNIQID是否为空
+        if (row.id === '' || row.id === null || row.id === undefined) {
+            // 删除当前行数据
+            resbomtableData.value.splice(index, 1);
+            ElMessage({
+                type: 'success',
+                message: '删除成功'
+            });
+        } else {
+            // 调用接口删除
+			        const Bomdel_del = await deleteProblemCategory({ id:row.id});
+            if (Bomdel_del.code === 0) {
+                ElMessage({
+                    type: 'success',
+                    message: '删除成功'
+                });
+            } else {
+                ElMessage({
+                    type: 'error',
+                    message: '删除失败'
+                });
+            }
+            _gettabledata();
+        }
+    }).catch(() => {
+        // 取消删除
+        ElMessage({
+            type: 'info',
+            message: '已取消删除'
+        }); 
+    });
+}
+
+  // 分页相关的响应式变量
+  const page = ref(1)
+  const total = ref(0)
+  const pageSize = ref(10)
+  // 分页
+  const handleCurrentChange = (val) => {
+    page.value = val;
+    _getStaffList();
+  };
+
+  
+
+  
+  
+  
+  </script>
+  
+  <style scoped>
+  .form-container {
+    display: flex;
+    flex-wrap: wrap;
+  }
+  
+  .form-column {
+    /*flex: 1;*/
+    margin-right: 15px; /* 调整列之间的间距 */
+  }
+  
+  /* 左侧输入框宽度调整 */
+  .form-column .el-form-item .el-input {
+    width: 150px; /* 调整左侧输入框的宽度 */
+  }
+  
+  :deep(.hui-plan-usage-lows  div) {
+    color: #8c939d !important;
+  }
+  :deep(.lan-plan-usage-lows  div) {
+    color: blue !important;
+    font-weight: bold;
+  }
+ 
+  /* 媒体查询,根据需要调整断点 */
+  @media screen and (max-width: 768px) {
+    .form-column {
+      flex: 1 0 100%; /* 在小屏幕下变成单列布局 */
+      margin-right: 0;
+    }
+  }
+  /*:deep(.el-table td .cell) {*/
+  /*  line-height: 30px !important;*/
+  /*}*/
+  .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;
+  }
+  /* 图片上传 */
+  .upload-box {
+    width: 200px;
+    height: 200px;
+    border: 2px dashed #e2e2e2;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    position: relative;
+    cursor: pointer;
+  }
+  .uploaded-image {
+    width: 100%;
+    height: 100%;
+    object-fit: cover;
+  }
+  .upload-icon {
+    font-size: 40px;
+    color: #c0c4cc;
+  }
+  .file-input {
+    display: none;
+  }
+  .el-table .warning-row {
+    background: oldlace;
+  }
+  
+  /* 选中某行时的背景色 */
+  :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;
+  }
+  .mab{
+    margin-bottom: 5px;
+  }
+  </style>
+  

+ 2 - 2
src/view/performance/QualityAssessment/SemiFinishedRework.vue

@@ -82,7 +82,7 @@ style="width: 90%; height: 90%; margin-top: 3%;"
   <el-table
     :data="SecondarytabeleData"
     border
-    style="width: 100%; margin-bottom: 20px;"
+    style="width: 100%; height: 63vh; margin-bottom: 20px;"
     :row-style="{ height: '40px' }"
     :header-cell-style="{ padding: '0px' }"
     :cell-style="{ padding: '0px' }"
@@ -527,7 +527,7 @@ try {
     // 更新下拉框选项
     row.colorOptions = colorremark.map(item => ({ value: item, label: item })); // 颜色选项
     row.sizeOptions = size.map(item => ({ value: item, label: item })); // 尺码选项
-    row.issueOptions = fetchCategory.map(item => ({ value: item, label: item })); // 返工问题选项
+    row.issueOptions = fetchCategory.返工.map(item => ({ value: item, label: item })); // 返工问题选项
     row.materialOptions = FabricData.map(item => ({ value: item, label: item }));
     row.groupOptions = GROUP_OPTIONS;// 报工小组选项
     // 保存面料统计数据

+ 2 - 2
src/view/performance/QualityAssessment/cropdefective.vue

@@ -82,7 +82,7 @@
     <el-table
       :data="SecondarytabeleData"
       border
-      style="width: 100%; margin-bottom: 20px;"
+      style="width: 100%; height: 63vh;margin-bottom: 20px;"
       :row-style="{ height: '40px' }"
       :header-cell-style="{ padding: '0px' }"
       :cell-style="{ padding: '0px' }"
@@ -502,7 +502,7 @@ const getGxMcsubmit = async (event, index) => {
       row.ks = list.款式;
       // 更新下拉框选项
       row.colorOptions = colorremark.map(item => ({ value: item, label: item })); // 颜色选项
-      row.issueOptions = fetchCategory.map(item => ({ value: item, label: item })); // 次片问题选项
+      row.issueOptions = fetchCategory.次片.map(item => ({ value: item, label: item })); // 次片问题选项
       row.materialOptions = FabricData.map(item => ({ value: item, label: item }));
       row.groupOptions = GROUP_OPTIONS;// 报工小组选项
       // 保存面料统计数据

+ 96 - 7
src/view/performance/chukubaogong.vue

@@ -9,7 +9,12 @@
 				<!-- <el-button type="danger"  @click="deldetail_delclick" style="width: 80px;height: 50px;"	v-if="del_details=== true" :disabled="details_Selection === '' "  class="bt"   >删除</el-button> -->
 		  </el-row>
 		<layout>
-			
+			<layout-sider :resize-directions="['right']" :width="200" style="margin-right: 10px;">
+				<div class="JKWTree-tree" style="height: 70vh;">
+					<h3>面料库存</h3>
+					<el-tree :data="treeData" class="treecolor" highlight-current="true" @node-click="handleNodeClick"  />
+				</div>
+			</layout-sider>
 		  <layout-content >
 			<div class="gva-table-box">
 			  <el-tabs v-model="activeName" @tab-click="handleClick">
@@ -144,9 +149,15 @@
 			  <!-- <el-descriptions-item label="计划用料">{{ mianliaotabData.计划用料 }}</el-descriptions-item> -->
 			  <!-- <el-descriptions-item label="计划门幅">{{ mianliaotabData.计划门幅 }}</el-descriptions-item> -->
 			  <!-- <el-descriptions-item label="单位">{{ mianliaotabData.单位 }}</el-descriptions-item> -->
-			  <el-descriptions-item label="单位">{{ mianliaotabData.单位 }}</el-descriptions-item>
-			  <el-descriptions-item label="库存数量">{{ mianliaotabData.库存数量 }}</el-descriptions-item>
 			  <el-descriptions-item label="累计出库数量">{{ mianliaotabData.入仓总数量 }}</el-descriptions-item>
+			  <el-descriptions-item label="库存数量">{{ mianliaotabData.库存数量 }}</el-descriptions-item>
+			  <el-descriptions-item label="单位" >
+				<el-radio-group v-model="mianliaotabData.单位" >
+					<el-radio label="米" border >米</el-radio>
+					<el-radio label="码" border >码</el-radio>
+					<el-radio label="公斤" border >公斤</el-radio>
+				</el-radio-group>
+			</el-descriptions-item>
 			  <!-- <el-descriptions-item label="领用数量">{{ mianliaotabData.领用数量 }}</el-descriptions-item> -->
 			</el-descriptions>
 			
@@ -158,7 +169,7 @@
 				<el-input v-model="mianliaotabData.实际门幅" placeholder="" style="margin: 0; width: 100px;"/>
 			  </el-descriptions-item> -->
 			  <el-descriptions-item label="出库数量">
-				<el-input v-model="mianliaotabData.出库数量" id='rksl' placeholder="" style="margin: 0; width: 100px;"/>
+				<el-input v-model="mianliaotabData.出库数量" id='rksl' placeholder="" class="green-bg-item" style="margin: 0; width: 100px;"/>
 			  </el-descriptions-item>
 		  </el-descriptions>
 		  
@@ -170,7 +181,13 @@
 		  <el-divider><span class="print-title" style="font-size: 18px;">面料出库单</span></el-divider>
 		  <el-descriptions class="margin-top" :column="3"  :size="size" border>
 			  <el-descriptions-item label="出库单号">{{danhao}}</el-descriptions-item>
-			  <el-descriptions-item label="出库日期">{{riqi}}</el-descriptions-item>
+			  <el-descriptions-item label="出库日期" >
+				<el-date-picker class="green-bg-item"
+					v-model="riqi"
+					type="date"
+					placeholder="选择日期">
+    			</el-date-picker>
+			</el-descriptions-item>
 			  <el-descriptions-item label="出库人员">{{chukuren}}</el-descriptions-item>
 		  </el-descriptions>
 		  <br>
@@ -273,7 +290,7 @@
   import {ref, reactive} from 'vue'
   import {getInputDetail,
   inputStash,
-  OutOrderSearch,outReport,FabricDetail,gitReceiptNumber,FabricDetaillist,FabricDetaildel,ReceiptList,ReceiptDetail} from '@/api/mes/job'
+  OutOrderSearch,outReport,FabricDetail,gitReceiptNumber,FabricDetaillist,FabricDetaildel,ReceiptList,ReceiptDetail,fetchMonthlyFabricRecords} from '@/api/mes/job'
   import { ElMessage, ElMessageBox,ElUpload, ElButton } from 'element-plus';
   import { useUserStore } from '@/pinia/modules/user'
   // import { get } from 'scriptjs';
@@ -315,6 +332,74 @@
   const _orderid = ref('')//订单子编号
   const _kh = ref('')//生产款号
   
+
+  // 侧边栏数据请求
+
+const treeData = reactive([]);
+const getTreeData = async () => {
+  try {
+    const response = await fetchMonthlyFabricRecords();
+    
+    if (response.code === 0 && response.data.出库) {
+      // 1. 只处理出库数据
+      const transformedData = Object.entries(response.data.出库).map(([month, dates]) => ({
+        label: month,  // "2025-03"
+        children: dates.map(date => ({
+          label: date,  // "2025-03-31"
+          params: {
+            date,  // 已经是正确格式,无需再转换
+            month  // 添加月份信息便于后续使用
+          }
+        }))
+      }));
+
+      // 2. 更简洁的数组更新方式
+      Object.assign(treeData, transformedData);
+    } else if (!response.data.出库) {
+      console.warn('接口中没有出库数据');
+      treeData.length = 0;  // 清空数据
+    }
+  } catch (error) {
+    console.error('获取数据失败:', error);
+    // 可以在这里添加错误提示
+    ElMessage.error('获取出库数据失败');
+  }
+};
+
+getTreeData();
+
+
+const nodedata = ref('')
+const handleNodeClick = async (node, check) => {
+	nodedata.value = node.label
+	console.log(nodedata.value);
+	restableData.splice(0, restableData.length);//清空表格
+	
+	// 取消所有节点的颜色
+	const allNodes = document.querySelectorAll('.treecolor .el-tree-node');
+		allNodes.forEach(node => {
+		node.querySelector('.el-tree-node__label').style.color = '';
+	});
+	// 获取点击的节点 给当前点击的节点改变颜色【红色】
+	const clickedNodeId = node['$treeNodeId'];
+	const clickedNode = document.querySelector(`.treecolor .el-tree-node[data-key="${clickedNodeId}"]`);
+	if (clickedNode) {
+		clickedNode.querySelector('.el-tree-node__label').style.color = 'red';
+	}
+	
+	//订单信息数据查询【接口】
+	const ReceiptList_res = await ReceiptList({mouth:nodedata.value,search:'',page:1,limit:50});
+	if (ReceiptList_res && ReceiptList_res.data && Array.isArray(ReceiptList_res.data.table)) {
+    const filteredData = ReceiptList_res.data.table.filter(item => item.单号类型 === '出库');
+    // 更新数据
+	recordtableData.splice(0, recordtableData.length);
+    recordtableData.splice(0, 0, ...filteredData);
+  } else {
+    console.error("数据获取失败");
+  }
+}
+
+
   //input实时调用
   const handleInput = async ()=>{
 	  restableData.splice(0, restableData.length);//清空表格
@@ -466,7 +551,6 @@
     console.error('mianliaotabData 为空,无法添加到 danjutableData');
     return;
   }
-
   // 检查出库数量是否为空或无效
   if (
     mianliaotabData.value.出库数量 === '' ||
@@ -939,5 +1023,10 @@
 	overflow: hidden !important;
 	text-overflow: ellipsis !important;
   }
+  :deep(.green-bg-item >.el-input__wrapper) {
+  background-color: #80fa80 !important; /* 浅绿色背景 */
+  padding: 8px 12px !important;
+  border-radius: 4px !important;
+}
   </style>
   

+ 6 - 24
src/view/yunyin/shengchanguanli/gongdanziliao.vue

@@ -678,7 +678,7 @@
 		</el-dialog>
 		
 		<!-- 批量修改BOM资料弹窗 -->
-		<el-dialog v-model="res_bomdialogFormVisible" :before-close="res_bomcloseDialog" title="批量新增/更新BOM数据" width="63%" top="1%" destroy-on-close>
+		<el-dialog v-model="res_bomdialogFormVisible" :before-close="res_bomcloseDialog" title="批量新增/更新BOM数据" width="70%" top="1%" destroy-on-close>
 		  
 		   <el-descriptions class="margin-top" :column="4"  :size="size" border>
 			<el-descriptions-item label="订单编号">{{ ddhformData['ddh'] }}</el-descriptions-item>
@@ -1463,35 +1463,18 @@ const handleNodeClick = async (node) => {
 
 // 删除
 const deleteItem = async (row) => {
-	console.log(row)
-	console.log(_username.value.split('/')[0])
-	if(row.sys_id.split('/'[1])===_username.value.split('/')[1]||_username.value.split('/')[1] === '超级管理员'){
-		ElMessageBox.confirm('确定删除此行数据吗?', '提示', {
-	    confirmButtonText: '确定',
-	    cancelButtonText: '取消',
-	    type: 'warning'
-	}).then(async () => {
-	    const delfujian_del = await delfujian({UniqId:row['UniqId']});
+	console.log(_username.value.split('/')[1])
+	console.log(row.sys_id.split('/')[1])
+
+const delfujian_del = await delfujian({UniqId:row['UniqId'],登录用户:_username.value.split('/')[1],建档用户:row.sys_id.split('/')[1]});
 		if(delfujian_del.code === 0){
 			ElMessage({type: 'success',message: '删除成功'})
 		}else{
 			ElMessage({type: 'error',message: '删除失败'})
 		}
 		tableRowClick (row)
-	}).catch(() => {
-	    // 取消删除
-	    ElMessage({
-	        type: 'info',
-	        message: '已取消删除'
-	    });
-	});
-}else{
-	return ElMessage({type: 'error',message: '无法删除其他用户附件'})
-}
-
 }
 
-
 const showPdf = async (row) => {
 	luckyexcelPageRef.value.open(row)
 };
@@ -2670,13 +2653,12 @@ const res_bomenterDialog = async () => {
 		BOM_desc: item.备注 !== null ? item.备注 : "",
 		BOM_计划门幅: item.计划门幅 !== null ? item.计划门幅 : "",
 		BOM_定额门幅: item.定额门幅 !== null ? item.定额门幅 : "",
-		BOM_投料单位: "",
+		BOM_投料单位: "",
 		Sys_ID: userStore.userInfo.nickName,
 		Sys_rq: currentDate
 	  }
 	});
 	console.log(formattedData);
-
 	const add_FabricEditdata = await FabricEdit(formattedData);
 	if (add_FabricEditdata.code === 0) {
 		res_bomdialogFormVisible.value = false;