Просмотр исходного кода

超节损按员工打印 损耗代号搜索优化

zck 1 год назад
Родитель
Сommit
0625ff23db

+ 105 - 90
src/view/performance/12-orderAccounting/index.vue

@@ -33,15 +33,40 @@
             </el-dialog>
 
             <!-- 员工打印 -->
-            <el-dialog v-model="dialogygdy"  title="员工打印" destroy-on-close style="height: 40%;">
+            <el-dialog v-model="dialogygdy"  title="员工打印" destroy-on-close style="height: 50%;">
 			  <el-date-picker
 			    v-model="ygdy_formData['ygriqi']"
 			    type="month"
 			    placeholder="选择年月"
 			    :default-value="new Date()"
-			    style="width: 500px"
+          @change="onchange_ygdy"
+			    style="width: 200px"
 			  />
               <el-button type="primary" icon="edit" class="bt" @click="onclick_ygdy">按员工打印</el-button>
+              <el-button type="primary" icon="Download" class="bt" @click="exportToExcel">导出到Excel</el-button>
+            <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"
+            id="cjsjetableData"
+            highlight-current-row="true"
+            style="width: 100%;height: 40vh"
+            border tooltip-effect="dark"
+            :data="cjsjetableData"
+            row-key="ID"
+            @row-dblclick="ExcelShow"
+            @selection-change="handleSelectionChange">
+            <!--              <el-table-column type="selection" width="55" />-->
+            <el-table-column align="left" sortable   label="车间" prop="cj"  width="150"/>
+            <el-table-column align="left" sortable  label="员工编号" prop="bh" width="150" />
+            <el-table-column align="left" sortable  label="员工姓名" prop="xm"  width="150"/>
+            <el-table-column align="left" sortable  label="超节损金额" prop="je" width="150" >
+            <template v-slot="{ row }">
+            </template>
+            </el-table-column>
+            </el-table>
+
             </el-dialog>
 
             <!-- 修正工单印件质量考核设置 -->
@@ -264,6 +289,8 @@ import Detail from '@/view/performance/12-orderAccounting/componets/detail.vue'
 import Hjfpfb from './componets/hjfpfb.vue'
 import PrintPage from '@/view/yunyin/shengchanguanli/components/print.vue'
 import { reactive } from 'vue'
+import * as XLSX from 'xlsx'
+import FileSaver from 'file-saver'
 import { exportExcelFile } from '@/utils/excel'
 import { useUserStore } from '@/pinia/modules/user'
 const userStore = useUserStore()
@@ -546,8 +573,56 @@ const exportExcel = () => {
 }
 
 
+//选择月份后显示表格数据
+const cjsjetableData = reactive([]);
+const onchange_ygdy = async () => {
+  // 获取用户选择的日期
+  const selectedDate = new Date(ygdy_formData['ygriqi']);
+  // 手动增加一个月
+  selectedDate.setMonth(selectedDate.getMonth() + 1);
+  // 格式化为 YYYY-MM
+  const formattedDate = selectedDate.toISOString().slice(0, 7);
+  
+  const EmployeeDataCollectdata = await EmployeeDataCollect({ date: formattedDate });
+  console.log(EmployeeDataCollectdata);
+
+  // 清空 cjsjetableData
+  cjsjetableData.splice(0, cjsjetableData.length);
+
+  // 遍历 EmployeeDataCollectdata.data 并将所有数组数据合并到 cjsjetableData
+  if (EmployeeDataCollectdata.data) {
+    for (const key in EmployeeDataCollectdata.data) {
+      if (Array.isArray(EmployeeDataCollectdata.data[key])) {
+        cjsjetableData.push(...EmployeeDataCollectdata.data[key]);
+      }
+    }
+  } else {
+    console.error('EmployeeDataCollectdata.data 为空或未定义');
+  }
 
+  console.log(cjsjetableData);
+};
 
+//导出到Excel
+const exportToExcel = ()=>{
+  const el = document.getElementById('cjsjetableData');
+  // 获取用户选择的日期
+  const selectedDate = new Date(ygdy_formData['ygriqi']);
+  // 手动增加一个月
+  selectedDate.setMonth(selectedDate.getMonth() + 1);
+  // 格式化为 YYYY-MM
+  const formattedDate = selectedDate.toISOString().slice(0, 7);
+  // 文件名
+  const filename = `员工超节损金额_${formattedDate}.xlsx`;
+  const wb = XLSX.utils.table_to_book(el, { raw: true });
+  const wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' });
+  try {
+    FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), filename);
+  } catch (e) {
+    console.log(e);
+  }
+  return wbout;
+}
 
 // 员工打印
 // false是弹窗默认关闭 
@@ -566,105 +641,45 @@ const jsondatas = {"panels":[{"index":0,"name":1,"paperType":"A4","height":210,"
 
 
 const onclick_ygdy = async () => {
-	// 获取用户选择的日期
-	const selectedDate = new Date(ygdy_formData['ygriqi']);
-	// 手动增加一个月
-	selectedDate.setMonth(selectedDate.getMonth() + 1);
-	// 格式化为 YYYY-MM
-	const formattedDate = selectedDate.toISOString().slice(0, 7);
+    // 获取用户选择的日期
+    const selectedDate = new Date(ygdy_formData['ygriqi']);
+    // 手动增加一个月
+    selectedDate.setMonth(selectedDate.getMonth() + 1);
+    // 格式化为 YYYY-MM
+    const formattedDate = selectedDate.toISOString().slice(0, 7);
     // 引入打印初始化
     hiprint.init();
     const hiprintTemplate = new hiprint.PrintTemplate({ template: jsondatas });
 
     // 获取数据
-	// console.log(formattedDate);
     const res = await EmployeeDataCollect({ date: formattedDate });
-	console.log(res)
+    console.log(res);
     const { data } = res;
-	
 
     // 将数据转换为目标格式
     const dataSource = { 'table': [] };
 
-    // 处理“车间”的数据
-    let osycj = true;
-    for (const [key, value] of Object.entries(data['凹丝印车间'])) {
-        // const [cj,bh,xm,je] = key.split('(');
-        console.log(key)
-        console.log(value)
-        // bzsm = bzsm.substring(0,bzsm.length - 1)
-        dataSource.table.push({
-            'szbm': value.cj,
-            'ygbh': value.bh,
-            'ygxm': value.xm,
-            'cjsje': value.je
-        });
-        osycj = false;
-    }
-
-        // 处理“车间”的数据
-        let yhcj = true;
-    for (const [key, value] of Object.entries(data['印后车间'])) {
-        // const [cj,bh,xm,je] = key.split('(');
-        console.log(key)
-        console.log(value)
-        // bzsm = bzsm.substring(0,bzsm.length - 1)
-        dataSource.table.push({
-            'szbm': value.cj,
-            'ygbh': value.bh,
-            'ygxm': value.xm,
-            'cjsje': value.je
-        });
-        yhcj = false;
-    }
-
-                // 处理“车间”的数据
-                let jianyancj = true;
-    for (const [key, value] of Object.entries(data['检验车间'])) {
-        // const [cj,bh,xm,je] = key.split('(');
-        console.log(key)
-        console.log(value)
-        // bzsm = bzsm.substring(0,bzsm.length - 1)
-        dataSource.table.push({
-            'szbm': value.cj,
-            'ygbh': value.bh,
-            'ygxm': value.xm,
-            'cjsje': value.je
-        });
-        jianyancj = false;
-    }
-
-                // 处理“车间”的数据
-      let tmcj = true;
-    for (const [key, value] of Object.entries(data['烫模车间'])) {
-        // const [cj,bh,xm,je] = key.split('(');
-        console.log(key)
-        console.log(value)
-        // bzsm = bzsm.substring(0,bzsm.length - 1)
-        dataSource.table.push({
-            'szbm': value.cj,
-            'ygbh': value.bh,
-            'ygxm': value.xm,
-            'cjsje': value.je
-        });
-        tmcj = false;
-    }
-
-        // 处理“车间”的数据
-        let jycj = true;
-    for (const [key, value] of Object.entries(data['胶印车间'])) {
-        // const [cj,bh,xm,je] = key.split('(');
-        console.log(key)
-        console.log(value)
-        // bzsm = bzsm.substring(0,bzsm.length - 1)
-        dataSource.table.push({
-            'szbm': value.cj,
-            'ygbh': value.bh,
-            'ygxm': value.xm,
-            'cjsje': value.je
-        });
-        jycj = false;
-    }
+    // 定义需要处理的车间列表
+    const workshops = ['凹丝印车间', '印后车间', '检验车间', '烫模车间', '胶印车间'];
+
+    // 遍历车间列表,处理每个车间的数据
+    workshops.forEach(workshop => {
+        if (data[workshop] && Array.isArray(data[workshop])) {
+            data[workshop].forEach(value => {
+                dataSource.table.push({
+                    'szbm': value.cj,
+                    'ygbh': value.bh,
+                    'ygxm': value.xm,
+                    'cjsje': value.je
+                });
+            });
+        } else {
+            console.warn(`车间 "${workshop}" 数据不存在或格式不正确,已跳过`);
+        }
+    });
+
+    console.log(dataSource); // 打印处理后的数据
+    // 这里可以继续使用 hiprintTemplate 打印数据
 
 
 

+ 9 - 2
src/view/yunyin/chanpinziliao/chanpinziliao.vue

@@ -2923,11 +2923,17 @@ const addcpyj_onclick = () => {
 //     searchModel.value = true
 //   }
 // }
+
 //印件代号刷新按钮
 const cpsearchHandle = async (v) => {
   const response = await getProductYjList({search:v});
-  getProductYjListdata.value = handleTreeData(response.data)
+  if (response.data && response.data.length === 0) {
+    ElMessage({type: 'warning',message: '未查询到搜索条件'})
+  }else{
+    getProductYjListdata.value = handleTreeData(response.data)
+  }
 }
+
 //印件代号 点击树状图获取点击的数据
 const selectNode = (v) => {
 	console.log(type2.value)
@@ -3115,8 +3121,9 @@ const add_dyjcloseDialog = () => {
 
 const add_yinjian_ent = (event,id1,id2,id3) => {
   if (id2 === '印件代号' && event.key==='Tab' || event.key==='Enter') {
-    _getProductYjList(add_yjzlformdata['yjdh']);
+    // _getProductYjList(add_yjzlformdata['yjdh']);
     searchModel.value = true
+    cpyjdh_keyword.value = ''
   }
   if (event.keyCode === 13 ||  event.keyCode === 40) { // Enter 或向下箭头
     if(id3!=''){