|
@@ -33,15 +33,40 @@
|
|
|
</el-dialog>
|
|
</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
|
|
<el-date-picker
|
|
|
v-model="ygdy_formData['ygriqi']"
|
|
v-model="ygdy_formData['ygriqi']"
|
|
|
type="month"
|
|
type="month"
|
|
|
placeholder="选择年月"
|
|
placeholder="选择年月"
|
|
|
:default-value="new Date()"
|
|
: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="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>
|
|
</el-dialog>
|
|
|
|
|
|
|
|
<!-- 修正工单印件质量考核设置 -->
|
|
<!-- 修正工单印件质量考核设置 -->
|
|
@@ -264,6 +289,8 @@ import Detail from '@/view/performance/12-orderAccounting/componets/detail.vue'
|
|
|
import Hjfpfb from './componets/hjfpfb.vue'
|
|
import Hjfpfb from './componets/hjfpfb.vue'
|
|
|
import PrintPage from '@/view/yunyin/shengchanguanli/components/print.vue'
|
|
import PrintPage from '@/view/yunyin/shengchanguanli/components/print.vue'
|
|
|
import { reactive } from 'vue'
|
|
import { reactive } from 'vue'
|
|
|
|
|
+import * as XLSX from 'xlsx'
|
|
|
|
|
+import FileSaver from 'file-saver'
|
|
|
import { exportExcelFile } from '@/utils/excel'
|
|
import { exportExcelFile } from '@/utils/excel'
|
|
|
import { useUserStore } from '@/pinia/modules/user'
|
|
import { useUserStore } from '@/pinia/modules/user'
|
|
|
const userStore = useUserStore()
|
|
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是弹窗默认关闭
|
|
// false是弹窗默认关闭
|
|
@@ -566,105 +641,45 @@ const jsondatas = {"panels":[{"index":0,"name":1,"paperType":"A4","height":210,"
|
|
|
|
|
|
|
|
|
|
|
|
|
const onclick_ygdy = async () => {
|
|
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();
|
|
hiprint.init();
|
|
|
const hiprintTemplate = new hiprint.PrintTemplate({ template: jsondatas });
|
|
const hiprintTemplate = new hiprint.PrintTemplate({ template: jsondatas });
|
|
|
|
|
|
|
|
// 获取数据
|
|
// 获取数据
|
|
|
- // console.log(formattedDate);
|
|
|
|
|
const res = await EmployeeDataCollect({ date: formattedDate });
|
|
const res = await EmployeeDataCollect({ date: formattedDate });
|
|
|
- console.log(res)
|
|
|
|
|
|
|
+ console.log(res);
|
|
|
const { data } = res;
|
|
const { data } = res;
|
|
|
-
|
|
|
|
|
|
|
|
|
|
// 将数据转换为目标格式
|
|
// 将数据转换为目标格式
|
|
|
const dataSource = { 'table': [] };
|
|
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 打印数据
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|