This commit is contained in:
TianyangZhang 2025-11-04 13:40:04 +08:00
commit 041b1108ec
10 changed files with 479 additions and 147 deletions

View File

@ -45,6 +45,14 @@
</el-button> </el-button>
<el-button v-if="!hideRefresh" @click="reload" icon="el-icon-refresh-right" circle style="margin-left: 15px"> <el-button v-if="!hideRefresh" @click="reload" icon="el-icon-refresh-right" circle style="margin-left: 15px">
</el-button> </el-button>
<el-popover v-if="!hideExport" placement="top" trigger="click" :hide-after="0">
<template #reference>
<el-button icon="el-icon-download" circle style="margin-left: 15px"></el-button>
</template>
<div><el-button type="primary" size="small" @click="exportExcel(0)">1导出本页数据</el-button></div>
<div style="margin-top: 2px;" v-if="hExportCols"><el-button type="primary" size="small" @click="exportExcel(1)">2导出本页数据</el-button></div>
<div style="margin-top: 2px;" v-if="hExportCols"><el-button type="primary" size="small" @click="exportExcel(2)">3导出全部数据</el-button></div>
</el-popover>
<el-popover v-if="column" placement="top" title="列设置" :width="500" trigger="click" :hide-after="0" <el-popover v-if="column" placement="top" title="列设置" :width="500" trigger="click" :hide-after="0"
@show="customColumnShow = true" @after-leave="customColumnShow = false"> @show="customColumnShow = true" @after-leave="customColumnShow = false">
@ -82,7 +90,7 @@
import config from "@/config/table"; import config from "@/config/table";
import columnSetting from "./columnSetting"; import columnSetting from "./columnSetting";
import { genTree } from "@/utils/verificate"; import { genTree } from "@/utils/verificate";
import { domToExcel, dataToExcel } from "@/utils/exportExcel";
export default { export default {
name: "scTable", name: "scTable",
components: { components: {
@ -115,6 +123,9 @@ export default {
hideDo: { type: Boolean, default: false }, hideDo: { type: Boolean, default: false },
hideRefresh: { type: Boolean, default: false }, hideRefresh: { type: Boolean, default: false },
hideSetting: { type: Boolean, default: false }, hideSetting: { type: Boolean, default: false },
hideExport: { type: Boolean, default: false },
hExportCols: { type: Array, default: null },
hExportName: { type: String, default: null },
paginationLayout: { type: String, default: config.paginationLayout }, paginationLayout: { type: String, default: config.paginationLayout },
}, },
watch: { watch: {
@ -299,6 +310,46 @@ export default {
this.getData(); this.getData();
this.$emit("resetQuery"); this.$emit("resetQuery");
}, },
//
exportExcel(type=0) {
if (type === 0) {
try {
domToExcel(this.$refs.scTable.$el, "表格数据");
} catch (error) {
console.error('导出失败:', error);
this.$message.error("导出失败");
}
}
else if (type === 1) {
dataToExcel(this.hExportCols, this.tableData, this.hExportName?this.hExportName:'表格数据')
}else if (type === 2) {
const extractHeaderKeys = (columns) =>{
const keys = columns.map(item => {
// key
return item.key.split('.')[0];
});
//
return [...new Set(keys)].join(',');
}
var c = Object.assign({}, this.query, this.tableParams, {[this.orderStr]: this.order}, {page: 0},
{query: "{" + extractHeaderKeys(this.hExportCols) + "}"}
)
let ElLoading = this.$loading({
lock: true,
text: '数据请求中,请稍后...',
background: 'rgba(0, 0, 0, 0)',
})
this.apiObj.req(c).then(res=>{
ElLoading.close();
dataToExcel(this.hExportCols, res, this.hExportName?this.hExportName:'表格数据')
}).catch(err=>{
ElLoading.close();
console.log(err)
this.$message.error("导出失败");
})
}
},
// //
columnSettingChange(userColumn) { columnSettingChange(userColumn) {
this.userColumn = userColumn; this.userColumn = userColumn;

View File

@ -1,4 +1,11 @@
import * as XLSX from 'xlsx'; import * as XLSX from 'xlsx';
export const domToExcel = (dom, name="data") => {
const worksheet = XLSX.utils.table_to_sheet(dom);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet);
XLSX.writeFile(workbook, `${name}.xlsx`);
}
/** /**
* eg: .columns = [ * eg: .columns = [
* { header: 'Id', key: 'id', wpx: 10 }, * { header: 'Id', key: 'id', wpx: 10 },
@ -10,35 +17,83 @@ import * as XLSX from 'xlsx';
* @param data 数据 * @param data 数据
* @param name 文件名 * @param name 文件名
*/ */
export const generateExcel = (columns = [], data = [], name = '') => { export const dataToExcel = (columns = [], data = [], name = 'data') => {
const headers = columns.map((item) => item.header); const headers = columns.map((item) => item.header);
const otherConfigs = columns.map(({ key, header, ...item }) => item);
const dataList = data.map((item) => { const dataList = data.map((item) => {
let obj = {}; let obj = {};
columns.forEach((col) => { columns.forEach(col => {
obj[col.header] = item[col.key]; obj[col.header] = getNestedValue(item, col.key) ?? '';
}); });
return obj; return obj;
}); });
const workbook = XLSX.utils.book_new(); const workbook = XLSX.utils.book_new();
workbook.SheetNames.push(name); // workbook.SheetNames.push(name);
const worksheet = XLSX.utils.json_to_sheet(dataList, { const worksheet = XLSX.utils.json_to_sheet(dataList, {
header: headers, header: headers,
}); });
worksheet['!cols'] = otherConfigs; // 自动计算列宽
workbook.Sheets[name] = worksheet; worksheet['!cols'] = calculateColumnWidths(columns, dataList);
// 生成Blob数据 // const otherConfigs = columns.map(({ key, header, ...item }) => item);
const excelData = XLSX.write(workbook, { type: 'array', bookType: 'xlsx' }); // worksheet['!cols'] = otherConfigs;
const blobData = new Blob([excelData], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); XLSX.utils.book_append_sheet(workbook, worksheet);
// 创建Blob URL XLSX.writeFile(workbook, `${name}.xlsx`);
const blobUrl = URL.createObjectURL(blobData); // workbook.Sheets[name] = worksheet;
// 创建一个隐藏的<a>标签并设置href属性为Blob URL // // 生成Blob数据
const link = document.createElement('a'); // const excelData = XLSX.write(workbook, { type: 'array', bookType: 'xlsx' });
link.href = blobUrl; // const blobData = new Blob([excelData], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
link.target = '_blank'; // // 创建Blob URL
link.download = `${name}.xlsx`; // const blobUrl = URL.createObjectURL(blobData);
// 触发点击操作,开始下载文件 // // 创建一个隐藏的<a>标签并设置href属性为Blob URL
link.click(); // const link = document.createElement('a');
// 释放Blob URL // link.href = blobUrl;
URL.revokeObjectURL(blobUrl); // link.target = '_blank';
// link.download = `${name}.xlsx`;
// // 触发点击操作,开始下载文件
// link.click();
// // 释放Blob URL
// URL.revokeObjectURL(blobUrl);
};
const getNestedValue = (obj, path, defaultValue = '') => {
if (!obj || !path) return defaultValue;
const keys = path.split('.');
let result = obj;
for (const key of keys) {
if (result === null || result === undefined) {
return defaultValue;
}
result = result[key];
}
return result !== undefined ? result : defaultValue;
};
const calculateColumnWidths = (columns, dataList) => {
// 确保 dataList 有数据
if (!dataList || dataList.length === 0) {
return columns.map(col => ({ wch: 15 })); // 返回默认宽度
}
return columns.map(col => {
// 固定宽度优先
if (col.wpx) return { wpx: col.wpx };
if (col.wch) return { wch: col.wch };
if (col.width) return { wch: col.width };
const header = col.header || '';
let maxWidth = header.length;
// 遍历数据计算最大宽度
for (let i = 0; i < Math.min(dataList.length, 100); i++) {
const item = dataList[i];
// 确保使用正确的键名
const value = item[header] !== undefined ? String(item[header]) : '';
if (value.length > maxWidth) {
maxWidth = value.length;
}
}
return { wch: Math.min(Math.max(maxWidth + 2, 8), 50) };
});
}; };

View File

@ -6,9 +6,10 @@
</el-header> </el-header>
<el-main> <el-main>
<!-- 减薄 --> <!-- 减薄 -->
<el-row style="height: 30%" :gutter="10"> <el-row style="height: 60%" :gutter="10">
<el-col :span="12" style="height: 100%">
<!-- 设备状态 --> <!-- 设备状态 -->
<el-col :span="10" style="height: 100%"> <el-col style="height: 50%">
<div class="box"> <div class="box">
<div class="boxtitle"> <div class="boxtitle">
<div class="boxlabel"> <div class="boxlabel">
@ -36,23 +37,8 @@
</div> </div>
</div> </div>
</el-col> </el-col>
<!-- 任务列表 -->
<el-col :span="14" style="height: 100%">
<div class="box">
<div class="boxtitle">
<div class="boxlabel">减薄任务列表</div>
</div>
<div style="height: 2px"></div>
<div class="boxmain" id="scrollContainer">
<dv-scroll-board :config="configDataTask" style="width:98%;margin:auto" />
</div>
</div>
</el-col>
</el-row>
<div style="height: 0.3%"></div>
<el-row style="height: 30%" :gutter="10">
<!-- 库存 --> <!-- 库存 -->
<el-col :span="10" style="height: 100%"> <el-col style="height: 50%">
<div class="box"> <div class="box">
<div class="boxtitle"> <div class="boxtitle">
<div class="boxlabel"> <div class="boxlabel">
@ -65,41 +51,8 @@
</div> </div>
</div> </div>
</el-col> </el-col>
<!-- 交接 -->
<el-col :span="14" style="height: 100%">
<div class="box">
<div class="boxtitle">
<div class="boxlabel">减薄交接</div>
</div>
<div style="height: 2px"></div>
<div class="boxmain" id="scrollContainer">
<dv-scroll-board :config="configDataHandover" style="width:98%;margin:auto" />
</div>
</div>
</el-col> </el-col>
</el-row> <el-col :span="12" style="height: 100%">
<!-- 生产统计 分析 -->
<div style="height: 0.3%"></div>
<el-row style="height: 39%" :gutter="10">
<!-- 折线图 日加工数日合格数日合格率近七天数据 -->
<el-col :xs="8" :md="8" style="height: 100%;">
<div class="box">
<div class="boxtitle">
<div class="boxlabel">合格数统计</div>
</div>
<div class="boxmain boxmainbottom" id="chart1"></div>
</div>
</el-col>
<!-- 饼状图 各不合格品 原因占比 -->
<el-col :xs="8" :md="8" style="height: 100%;">
<div class="box">
<div class="boxtitle">
<div class="boxlabel">不合格占比统计</div>
</div>
<div class="boxmain boxmainbottom" id="chart2"></div>
</div>
</el-col>
<el-col :xs="8" :md="8" style="height: 100%;">
<div class="box"> <div class="box">
<div class="boxtitle"> <div class="boxtitle">
<div class="boxlabel">生产数统计</div> <div class="boxlabel">生产数统计</div>
@ -118,7 +71,30 @@
<span class="totalStaticItem totalStaticItemNum">{{ sctj.rhgs }}</span> <span class="totalStaticItem totalStaticItemNum">{{ sctj.rhgs }}</span>
<span class="totalStaticItem totalStaticItemNum">{{ sctj.rbhgs }}</span> <span class="totalStaticItem totalStaticItemNum">{{ sctj.rbhgs }}</span>
</div> </div>
<dv-scroll-board :config="configDatas" class="boxmain boxmainbottom" style="width:98%;margin:auto" /> <dv-scroll-board :config="configDatas" class="boxmain boxmainTopRight" style="width:98%;margin:auto" />
</div>
</el-col>
</el-row>
<div style="height: 0.3%"></div>
<!-- 生产统计 分析 -->
<div style="height: 0.3%"></div>
<el-row style="height: 39%" :gutter="10">
<!-- 折线图 日加工数日合格数日合格率近七天数据 -->
<el-col :span="12" style="height: 100%;">
<div class="box">
<div class="boxtitle">
<div class="boxlabel">合格数统计</div>
</div>
<div class="boxmain boxmainbottom" id="chart1"></div>
</div>
</el-col>
<!-- 饼状图 各不合格品 原因占比 -->
<el-col :span="12" style="height: 100%;">
<div class="box">
<div class="boxtitle">
<div class="boxlabel">不合格占比统计</div>
</div>
<div class="boxmain boxmainbottom" id="chart2"></div>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -264,7 +240,6 @@ export default {
wyx:0, wyx:0,
gz:0, gz:0,
}, },
sctj:{ sctj:{
rtcs:0, rtcs:0,
rjgs:0, rjgs:0,
@ -277,7 +252,7 @@ export default {
chartInterval2: null, chartInterval2: null,
// //
configDataInm:{ configDataInm:{
header:['物料名称','批次号','数量','生产中数量'], header:['物料名称','批次号','数量','生产中'],
headerBGC:'#0a3f44', headerBGC:'#0a3f44',
headerHeight:40, headerHeight:40,
align:'center', align:'center',
@ -312,6 +287,7 @@ export default {
headerHeight:40, headerHeight:40,
data:[] data:[]
}, },
page:1,
currentTime: "", currentTime: "",
currentDay: "", currentDay: "",
today: "", today: "",
@ -323,6 +299,8 @@ export default {
}, },
mounted() { mounted() {
let that = this; let that = this;
that.page = 1;
that.configDataInm.data = [];
//table //table
this.tableHeight = document.getElementById("scrollContainer").clientHeight; this.tableHeight = document.getElementById("scrollContainer").clientHeight;
this.showTime(); this.showTime();
@ -340,7 +318,6 @@ export default {
let dayitem = Number(dates[2]); let dayitem = Number(dates[2]);
that.daysList.push(dayitem); that.daysList.push(dayitem);
}) })
console.log('that.daysList',that.daysList);
that.today = new Date().toISOString().split('T')[0] that.today = new Date().toISOString().split('T')[0]
// console.log('new Date', new Date().toISOString().split('T')) // console.log('new Date', new Date().toISOString().split('T'))
this.xAxisData = xAxisData; this.xAxisData = xAxisData;
@ -359,13 +336,14 @@ export default {
// //
that.getEqState(item.id); that.getEqState(item.id);
// //
this.getMaterials(item.id); // this.getMaterials(item.id);
// //
this.getHandover(item.id); // this.getHandover(item.id);
}) })
}) })
this.getMaterials(that.page);
// //
this.getMtask(); // this.getMtask();
/// ///
this.getProductLine(); this.getProductLine();
this.getCountnotok(); this.getCountnotok();
@ -618,19 +596,22 @@ export default {
}); });
}, },
// //
getMaterials() { getMaterials(page) {
let that = this; let that = this;
that.$API.wpm.wmaterial.list.req({ page: 0,mgroup__name__in:'减薄A,减薄B' }).then((res) => { that.$API.wpm.wmaterial.list.req({ page: page,page_size:500,mgroup__name__in:'减薄A,减薄B' }).then((res) => {
that.configDataInm.data = []; if(res.results.length>0){
if(res.length>0){ res.results.forEach((item) => {
res.forEach((item) => {
let arr = []; let arr = [];
arr[0] = item.material_name; arr[0] = item.material_name;
arr[1] = item.batch; arr[1] = item.batch;
arr[2] = item.count; arr[2] = item.count;
arr[2] = item.count_working; arr[3] = item.count_working;
that.configDataInm.data.push(arr); that.configDataInm.data.push(arr);
}) })
if(res.count>that.configDataInm.data.length){
that.page++;
that.getMaterials(that.page);
}
} }
}) })
}, },
@ -730,6 +711,9 @@ export default {
.boxmain.boxmainbottom{ .boxmain.boxmainbottom{
height: calc(100% - 38px); height: calc(100% - 38px);
} }
.boxmain.boxmainTopRight{
height: calc(100% - 120px);
}
.lineDiv { .lineDiv {
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;

View File

@ -41,6 +41,8 @@
row-key="id" row-key="id"
stripe stripe
:params="params" :params="params"
:hExportCols = "hExportCols"
:hExportName="'仓库成品库存'"
> >
<el-table-column type="index" width="50" /> <el-table-column type="index" width="50" />
<el-table-column label="批次" prop="batch"> <el-table-column label="批次" prop="batch">
@ -101,6 +103,8 @@
row-key="id" row-key="id"
:params="paramsWm" :params="paramsWm"
stripe stripe
:hExportCols = "hExportCols2"
:hExportName="'车间成品库存'"
> >
<el-table-column label="批次" prop="batch"> <el-table-column label="批次" prop="batch">
</el-table-column> </el-table-column>
@ -180,6 +184,58 @@ export default {
apiObjPrint:this.$API.cm.labelmat.fromMb, apiObjPrint:this.$API.cm.labelmat.fromMb,
wmId:'', wmId:'',
showBatch: "", showBatch: "",
hExportCols:[{
header: "批次",
key: "batch"
}, {
header: "物料名",
key: "material_.name"
}, {
header: "规格",
key: "material_.specification"
}, {
header: "型号",
key: "material_.model"
}, {
header: "已完成工序",
key: "material_.process_name"
}, {
header: "所在仓库",
key: "warehouse_name"
}, {
header: "存量",
key: "count"
}, {
header: "更新时间",
key: "update_time"
}
],
hExportCols2:[{
header: "批次",
key: "batch"
}, {
header: "物料名",
key: "material_.name"
}, {
header: "规格",
key: "material_.specification"
}, {
header: "型号",
key: "material_.model"
}, {
header: "已完成工序",
key: "material_.process_name"
}, {
header: "所在车间",
key: "belong_dept_name"
}, {
header: "存量",
key: "count"
}, {
header: "更新时间",
key: "update_time"
}
]
}; };
}, },
mounted() { mounted() {

View File

@ -124,6 +124,7 @@
row-key="id" row-key="id"
hideDo hideDo
stripe stripe
hidePagination
> >
<el-table-column label="排序" prop="sort" width="50"> <el-table-column label="排序" prop="sort" width="50">
</el-table-column> </el-table-column>
@ -150,7 +151,7 @@
label="操作" label="操作"
fixed="right" fixed="right"
align="center" align="center"
width="200" width="140"
> >
<template #default="scope"> <template #default="scope">
<el-button <el-button

View File

@ -0,0 +1,181 @@
<template>
<el-container>
<el-header>
<div class="left-panel"></div>
<div class="right-panel">
<el-select v-model="query.mgroup_name" placeholder="工段" clearable style="width: 150px">
<el-option v-for="item in mgroups" :key="item.id" :label="item.name" :value="item.name"></el-option>
</el-select>
<el-date-picker
v-model="query.start_date"
type="date"
value-format="YYYY-MM-DD"
placeholder="开始时间"
style="width: 150px"
/>
<el-date-picker
v-model="query.end_date"
type="date"
value-format="YYYY-MM-DD"
placeholder="结束时间"
style="margin-left: 2px; width: 150px"
/>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
></el-button>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
:data="tableData"
id="exportDiv"
stripe
>
<el-table-column type="index" width="50" fixed="left"/>
<el-table-column label="工段">{{ query.mgroup_name }}
</el-table-column>
<el-table-column label="员工" prop="员工">
</el-table-column>
<el-table-column label="总数">
<template #default="scope">
<span v-if="scope.row.总生产数">{{ scope.row.总生产数 }}</span>
<span v-if="scope.row.总切片数">{{ scope.row.总切片数 }}</span>
</template>
</el-table-column>
<el-table-column label="剪切">
<template #default="scope">
<span v-if="scope.row.剪切合格">{{((scope.row.剪切合格/scope.row.总切片数)*100).toFixed(2) }}%</span>
</template>
</el-table-column>
<el-table-column label="剪切加功率">
<template #default="scope">
<span v-if="scope.row['剪切¢18.3mm不合格']">{{ (((scope.row.总切片数-scope.row['剪切18.3mm不合格'])/scope.row.总切片数)*100).toFixed(2) }}%</span>
<span v-else>100%</span>
</template>
</el-table-column>
<el-table-column label="暗点">
<template #default="scope">
<span v-if="scope.row.暗点合格">{{((scope.row.暗点合格/scope.row.总切片数)*100).toFixed(2) }}%</span>
<span v-else>0%</span>
</template>
</el-table-column>
<el-table-column label="长点率">
<template #default="scope">
<span v-if="scope.row.暗点不合格">{{((scope.row.暗点不合格/scope.row.总切片数)*100).toFixed(2) }}%</span>
<span v-else>0%</span>
</template>
</el-table-column>
<el-table-column label="加功率">
<template #default="scope">
<span v-if="scope.row.可加工数">{{((scope.row.可加工数/scope.row.总切片数)*100).toFixed(2) }}%</span>
</template>
</el-table-column>
<el-table-column label="不合格数">
<template #default="scope">
<span v-if="scope.row.不合格数">{{((scope.row.不合格数/scope.row.总切片数)*100).toFixed(2) }}%</span>
</template>
</el-table-column>
<el-table-column label="合格率" prop="合格率">
<template #default="scope">
<span v-if="scope.row['剪切¢18.3mm可加工']">{{ scope.row['剪切18.3mm不合格']?scope.row.总切片数 - scope.row['剪切18.3mm可加工']- scope.row['剪切18.3mm不合格']+scope.row.暗点合格:scope.row.总切片数 - scope.row['剪切18.3mm可加工']+scope.row.暗点合格}}</span>
<span v-else>{{ scope.row['剪切18.3mm不合格']?scope.row.总切片数 - scope.row['剪切18.3mm不合格']+scope.row.暗点合格:scope.row.总切片数}}</span>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
</template>
<script>
import { genTree } from "@/utils/verificate";
export default {
name: "workerTimes",
data() {
return {
query:{
end_date:'',
mgroup_name:'',
start_date:'',
},
mgroups: [],
tableData:[],
};
},
mounted() {
let that = this;
let date = new Date();
that.query.start_date = that.query.end_date = that.$TOOL.dateFormat2(date);
that.getData();
this.deptMgroup();
},
methods: {
deptMgroup() {
this.$API.mtm.mgroup.list.req({ page: 0 }).then(res => {
this.mgroups = res;
});
},
getData(){
let that = this;
let params = {};
params.query = that.query;
that.$API.bi.dataset.exec.req('prodect_defect', params).then((res) => {
let data = res.data2.ds0;
data.forEach(item=>{
if(item.缺陷分布!==null){
let defect = JSON.parse(item.缺陷分布);
for(let key in defect){
item[key]=defect[key];
}
}
item.不合格数 = 0;
item.可加工数 = 0;
if(item['剪切¢18.3mm不合格']){
if(item['剪切¢18.3mm可加工']){
item.剪切合格 = item.总切片数 - item['剪切¢18.3mm可加工']- item['剪切¢18.3mm不合格'];
}else{
item.剪切合格 = item.总切片数 - item['剪切¢18.3mm不合格'];
}
if(item.暗点不合格){
item.不合格数 = item['剪切¢18.3mm不合格'] + item.暗点不合格;
item.可加工数 = item.总切片数 - item['剪切¢18.3mm不合格'] - item.暗点不合格;
}else{
item.不合格数 = item['剪切¢18.3mm不合格'];
item.可加工数 = item.总切片数 - item['剪切¢18.3mm不合格'];
}
}else{
if(item['剪切¢18.3mm可加工']){
item.剪切合格 = item.总切片数 - item['剪切¢18.3mm可加工'];
}else{
item.剪切合格 = item.总切片数;
}
if(item.暗点不合格){
item.不合格数 = item.暗点不合格;
item.可加工数 = item.总切片数 - item.暗点不合格;
}else{
item.不合格数 = 0;
item.可加工数 = item.总切片数;
}
}
})
console.log('data',data)
that.tableData = data;
});
},
deptChange(){
this.getData();
},
handleQuery(){
let that = this;
console.log('that.query',that.query)
that.getData();
},
},
};
</script>
<style scoped>
</style>

View File

@ -296,7 +296,7 @@ export default {
}else if(index==9){ }else if(index==9){
values = data.map((item) =>!item.data[propert]&&!item.data['毛坯检测_缺陷项_剪切¢18.3mm可加工']?1:0); values = data.map((item) =>!item.data[propert]&&!item.data['毛坯检测_缺陷项_剪切¢18.3mm可加工']?1:0);
}else if(index==13){ }else if(index==13){
values = data.map((item) =>!item.data[propert]&&!item.data['毛坯检测_检测项_暗点不合格']?1:0); values = data.map((item) =>!item.data[propert]&&!item.data['毛坯检测_缺陷项_暗点不合格']?1:0);
}else{ }else{
values = data.map((item) =>item.data[propert]&&item.data[propert]!==undefined?Number(item.data[propert]):0); values = data.map((item) =>item.data[propert]&&item.data[propert]!==undefined?Number(item.data[propert]):0);
} }

View File

@ -78,10 +78,10 @@
v-else v-else
ref="tables11" ref="tables11"
:data="tableData11" :data="tableData11"
id="exportDiv11" id="exportDiv1"
stripe stripe
hideDo hideDo
:pageSize="500" hidePagination
:summary-method="getSummaries2" :summary-method="getSummaries2"
show-summary show-summary
> >
@ -241,7 +241,7 @@ export default {
mioTypeEnum, mioTypeEnum,
apiObj: this.$API.mtm.material.list, apiObj: this.$API.mtm.material.list,
materialType: "", materialType: "",
params: { is_hidden: false, type: 10, count__gte: 1 }, params: { is_hidden: false, type: 10, count__gte: 1,page:0 },
query: { query: {
material: "", material: "",
mio_type: mioTypeEnum.values[0].key, mio_type: mioTypeEnum.values[0].key,
@ -370,9 +370,9 @@ export default {
that.params.name = that.material_name; that.params.name = that.material_name;
} }
this.$API.mtm.material.list.req(that.params).then((res) => { this.$API.mtm.material.list.req(that.params).then((res) => {
that.tableData11 = res.results; that.tableData11 = res;
if(res.results.length>0){ if(res.length>0){
res.results.forEach((ite) =>{ res.forEach((ite) =>{
if (nameList.indexOf(ite.name) > -1) {} else { if (nameList.indexOf(ite.name) > -1) {} else {
nameList.push(ite.name); nameList.push(ite.name);
let obj = {}; let obj = {};

View File

@ -532,7 +532,7 @@
</el-container> </el-container>
</template> </template>
<script> <script>
import { generateExcel } from "@/utils/exportExcel.js"; import { dataToExcel } from "@/utils/exportExcel.js";
import saveDialog from "./worktask_form.vue"; import saveDialog from "./worktask_form.vue";
import handoverDialog from "./handover_form.vue"; import handoverDialog from "./handover_form.vue";
import GanttComponent from "@/components/GanttComponent.vue"; import GanttComponent from "@/components/GanttComponent.vue";
@ -880,7 +880,7 @@ export default {
// handleQuery() { // handleQuery() {
// // this.$refs.table.queryData(this.query) // // this.$refs.table.queryData(this.query)
// debugger; // debugger;
// generateExcel(this.columns, this.flogsData, '') // dataToExcel(this.columns, this.flogsData, '')
// }, // },
resetQuery() { resetQuery() {
this.query = {}; this.query = {};

View File

@ -38,7 +38,7 @@
<el-table-column prop="mlogb__batch" label="物料批次" fixed min-width="80px"></el-table-column> <el-table-column prop="mlogb__batch" label="物料批次" fixed min-width="80px"></el-table-column>
<el-table-column prop="number" label="物料编号" fixed min-width="80px"> <el-table-column prop="number" label="物料编号" fixed min-width="80px">
<template #default="scope"> <template #default="scope">
<el-input v-if="route_code=='paiban'&&scope.row.isEdit" v-model="scope.row.number" placeholder="物料编号"></el-input> <el-input v-if="(route_code=='paiban'||route_code=='paiyicibang')&&scope.row.isEdit" v-model="scope.row.number" placeholder="物料编号"></el-input>
<span v-else>{{ scope.row.number }}</span> <span v-else>{{ scope.row.number }}</span>
<span v-if="scope.row.wpr_number_out!==null&&scope.row.wpr_number_out!==undefined">{{ scope.row.wpr_number_out }}</span> <span v-if="scope.row.wpr_number_out!==null&&scope.row.wpr_number_out!==undefined">{{ scope.row.wpr_number_out }}</span>
</template> </template>
@ -990,18 +990,22 @@ export default {
that.$refs.dialogForm.validate((valid) => { that.$refs.dialogForm.validate((valid) => {
if (valid) { if (valid) {
that.selectWpr.forEach(item => { that.selectWpr.forEach(item => {
item.ftest.ftestdefects.forEach(defect => { item.ftest.ftestdefects = [];
let defectindex = that.setForm.defectids.indexOf(defect.defect); if(that.defectlists.length>0){
if(defectindex > -1){ that.defectlists.forEach((item1) => {
defect.has = that.defectlists[defectindex].value; let obj = {};
} obj.defect = item1.defect;
obj.has = item1.value;
item.ftest.ftestdefects.push(obj);
}) })
item.ftest.ftestitems.forEach(testitem => {
let testitemindex = that.setForm.testitemids.indexOf(testitem.testitem);
if( testitemindex > -1){
testitem.test_val_json = that.testitemlists[testitemindex].value;
} }
})
// item.ftest.ftestdefects.forEach(defect => {
// let defectindex = that.setForm.defectids.indexOf(defect.defect);
// if(defectindex > -1){
// defect.has = that.defectlists[defectindex].value;
// }
// })
}); });
that.$API.wpm.mlogbw.update.req("bulk",that.selectWpr).then((res) => { that.$API.wpm.mlogbw.update.req("bulk",that.selectWpr).then((res) => {
that.setVisible = false; that.setVisible = false;