This commit is contained in:
zty 2025-09-24 14:32:39 +08:00
commit cfc8529681
47 changed files with 2243 additions and 1126 deletions

View File

@ -13,37 +13,29 @@
"@tinymce/tinymce-vue": "5.0.0",
"animate.css": "^4.1.1",
"axios": "1.3.4",
"babylon": "^6.18.0",
"babylonjs": "^6.46.0",
"babylonjs-gui": "^6.46.0",
"babylonjs-loaders": "^6.46.0",
"cesium": "^1.126.0",
"codemirror": "^5.65.17",
"codemirror-editor-vue3": "^2.7.0",
"compression-webpack-plugin": "^11.1.0",
"copy-webpack-plugin": "^12.0.2",
"core-js": "3.29.0",
"cropperjs": "1.5.13",
"crypto-browserify": "^3.12.0",
"crypto-js": "4.1.1",
"d3": "^7.6.1",
"dagre": "^0.8.5",
"dagre-d3": "^0.6.4",
"dhtmlx-gantt": "^8.0.6",
"echarts": "^5.5.1",
"element-plus": "^2.8.4",
"file-saver": "^2.0.5",
"html2canvas": "^1.4.1",
"json-editor-vue3": "^1.0.6",
"jspdf": "^2.5.1",
"moment": "^2.30.1",
"node-polyfill-webpack-plugin": "^4.0.0",
"nprogress": "0.2.0",
"path": "^0.12.7",
"print-js": "^1.6.0",
"qrcodejs2": "0.0.2",
"sortablejs": "1.15.0",
"three": "^0.155.0",
"tinymce": "6.3.2",
"vue": "3.2.47",
"vue-i18n": "9.2.2",

View File

@ -161,8 +161,12 @@ export default {
.el-calendar > .el-calendar__body {
padding: 0 20px 20px;
}
.asyncColorSwitch .el-switch__label--right.is-active{
color: #67c23a!important; /* 开启状态的文本颜色 */
}
.asyncColorSwitch .el-switch__label--left.is-active{
color: #0052d9!important; /* 关闭状态的文本颜色 */
}
// .el-table thead.is-group th.el-table__cell.colorheader1{
// background-color: rgb(255, 243, 202)!important;
// }

View File

@ -96,4 +96,10 @@ export default {
},
},
},
servertime: {
name: "获取服务器时间",
req: async function () {
return await http.get(`${config.API_URL}/develop/server_time/`);
},
}
};

View File

@ -60,6 +60,14 @@ export default {
return await http.post(this.url, data);
}
},
update: {
name: "更新",
req: async function(id, data){
return await http.put(
`${config.API_URL}/ofm/mroom/${id}/`,data
);
}
},
delete: {
url: `${config.API_URL}/ofm/mroom/delete/`,
name: "批量物理删除",

View File

@ -22,6 +22,11 @@
--el-color-primary-dark-9: #060f19;
--el-border-radius-base: 2px;
}
.el-collapse-item__content {
padding-bottom: 1px;
}
.el-tag {
--el-tag-border-radius: 2px;
}

View File

@ -224,6 +224,20 @@ export const actStateEnum = new EnumFactory({
5: { text: '已关闭', type: 'info' },
})
export const interveneTypeEnum = new EnumFactory({
0: { text: '正常', type: 'primary' },
1: { text: '转交', type: 'primary' },
2: { text: '加签', type: 'info' },
3: { text: '加签处理完成', type: 'primary' },
4: { text: '接单', type: 'success' },
5: { text: '评论', type: 'info' },
6: { text: '删除', type: 'danger' },
7: { text: '强制关闭', type: 'danger' },
8: { text: '强制修改状态', type: 'danger' },
10: { text: '撤回', type: 'danger' },
11: { text: '抄送', type: 'info' },
})
export const mCateEnum = new EnumFactory({
'list': ['主要辅材','办公辅料','设备维护辅料','包装辅材','标识辅材','防护辅材','其他辅材','常规辅材','医护辅材','检测辅材','倒角辅材','减薄辅材','磨抛辅材','多线切辅材','精雕辅材','扫边辅材','黑化辅材']
})

View File

@ -506,6 +506,7 @@ export default {
configData5:{},
scrollNum:0,
scrollInterval:null,
reloadInterval:null,
//
dayArr:[],
visibals0: false,
@ -525,6 +526,7 @@ export default {
lineWidth:0,
pieHeight:0,
lineHeight:0,
timeoutDuration : 86400000,
setIntervals:null,
};
},
@ -544,6 +546,38 @@ export default {
this.timerTime = setInterval(() => {
this.showTime();
}, 1000);
let lastActiveTime = new Date().getTime();
let timer;
//
function resetActiveTime() {
console.log('用户活动');
lastActiveTime = new Date().getTime();
clearTimeout(timer);
timer = setTimeout(checkIdleTime, that.timeoutDuration);
}
//
function checkIdleTime() {
let currentTime = new Date().getTime();
if (currentTime - lastActiveTime > that.timeoutDuration) {
refreshPage();
} else {
resetActiveTime();
}
}
//
function refreshPage() {
window.location.reload(true);
}
//
document.addEventListener('click', resetActiveTime);
document.addEventListener('keypress', resetActiveTime);
document.addEventListener('scroll', resetActiveTime);
document.addEventListener('mousemove', resetActiveTime);
that.reloadInterval = setInterval(() => {
window.location.reload(true);
},86400000)
},
methods: {
//
@ -1026,9 +1060,11 @@ export default {
clearInterval(that.timerTime);
clearInterval(that.scrollInterval);
clearInterval(that.setIntervals);
clearInterval(that.reloadInterval);
that.timerTime = null;
that.scrollInterval = null;
that.setIntervals = null;
that.reloadInterval = null;
},
beforeDestoryed() {
let that = this;
@ -1036,9 +1072,11 @@ export default {
clearInterval(that.timerTime);
clearInterval(that.scrollInterval);
clearInterval(that.setIntervals);
clearInterval(that.reloadInterval);
that.timerTime = null;
that.scrollInterval = null;
that.setIntervals = null;
that.reloadInterval = null;
},
};
</script>

View File

@ -261,21 +261,16 @@
<el-divider/>
<el-col :md="12" :sm="24">
<el-form-item label="所属设备">
<el-select
<xtSelect
:apiObj="apiObjEq"
v-model="form.ep_belong"
placeholder="所属设备"
clearable
filterable
style="width: 100%"
@clear="() => { form.ep_belong=null } "
:label="form.ep_belong_name"
placeholder="所属设备"
>
<el-option
v-for="item in epOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
<el-table-column label="名称" prop="name"></el-table-column>
<el-table-column label="位号" prop="number"></el-table-column>
</xtSelect>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
@ -465,6 +460,7 @@ export default {
mpointOptions: [],
epOptions: [],
materials: [],
apiObjEq:this.$API.em.equipment.list,
};
},
mounted() {

View File

@ -102,7 +102,6 @@
import config from "@/config"
import * as XLSX2 from "xlsx";
import * as XLSX from "xlsx-style";
import { fill } from "lodash";
export default {
name: "clock_record",
components: {},

View File

@ -34,7 +34,10 @@
<span v-if="scope.row.material_&&scope.row.material_.number">{{ scope.row.material_.number }}</span>
</template>
</el-table-column>
<el-table-column label="物料名称" prop="material_name">
<el-table-column label="物料名称">
<template #default="scope">
<span v-if="scope.row.material_&&scope.row.material_.name">{{ scope.row.material_.name }}</span>
</template>
</el-table-column>
<el-table-column label="货位号">
<template #default="scope">

View File

@ -63,8 +63,8 @@
</el-table-column>
<el-table-column width="140">
<template #default="scope">
<el-button type="primary" link v-if="project_code == 'gx'" @click="mbCheck(scope.row)">检验</el-button>
<el-button type="success" link v-if="project_code == 'gx'" @click="mbCheckList(scope.row)">检验记录</el-button>
<!-- <el-button type="primary" link v-if="project_code == 'gx'" @click="mbCheck(scope.row)">检验</el-button>
<el-button type="success" link v-if="project_code == 'gx'" @click="mbCheckList(scope.row)">检验记录</el-button> -->
<el-button type="text" @click="printMaterial(scope.row,'mb')">物料标签</el-button>
</template>
</el-table-column>

View File

@ -38,6 +38,7 @@
<el-input
v-if="form.type == 'pur_in'||form.type == 'other_in'"
v-model="form.batch"
clearable
placeholder="手动输入批次号"
:disabled="inputBatchDisable"
/>
@ -500,6 +501,9 @@ export default {
} else {
this.getBatchOptions();
}
if(that.project_code=='gx'&&that.type == 'pur_in'){
that.form.batch = '无'
}
},
getItem(options, id) {
for (var i = 0; i < options.length; i++) {

View File

@ -70,17 +70,10 @@
min-width="80"
></el-table-column>
<el-table-column
v-if="baseCode!=='bxerp'"
label="班次规则"
prop="shift_rule"
min-width="80"
></el-table-column>
<!-- <el-table-column label="能源监测" prop="need_enm" min-width="80">
<template #default="scope">
<span v-if="scope.row.need_enm"></span>
<span v-else></span>
</template>
</el-table-column> -->
<el-table-column
label="排序"
prop="sort"

View File

@ -320,6 +320,7 @@ const defaultForm = {
};
export default {
props: {
count: { type: Number, default : 0 },
routepack: { type: String, default: "" },
},
emits: ["success", "closed"],
@ -455,8 +456,14 @@ export default {
},
//
open(mode = "add") {
this.mode = mode;
this.visible = true;
let that = this;
that.mode = mode;
that.visible = true;
that.$nextTick(() => {
if(that.count){
that.form.sort = that.count+1;
}
})
return this;
},
//

View File

@ -1,59 +1,36 @@
<template>
<el-drawer
title="查看"
v-model="visible"
:size="'90%'"
destroy-on-close
@closed="$emit('closed')"
:close-on-click-modal="false"
>
<el-container v-loading="loading">
<el-header style="height: 80px;display: block;padding:0">
<el-card shadow="hover">
<el-descriptions :column="3" title="基本信息">
<el-descriptions-item label="工艺名称:">{{
form.name
}}</el-descriptions-item>
<el-descriptions-item label="物料名称:">{{
form.material_name
}}</el-descriptions-item>
</el-descriptions>
</el-card>
</el-header>
<el-main id="degInnerMain">
<el-container>
<el-side style="width: 50%;overflow: scroll;">
<div style="font-weight: 600;color: #303133;font-size: 16px;padding: 10px 0;position: fixed;">工艺路线流程图</div>
<el-tabs
v-if="tabsTitle.length>1"
v-model="activeName"
:tab-position="'left'"
style="flex-direction: row;"
@tab-click="tabshandleClick"
>
<el-tab-pane :label="item" v-for="item in tabsTitle" :key="item"></el-tab-pane>
</el-tabs>
<scDegra
style="margin-top: 50px;"
v-if="limitedWatch"
ref="degraDialogs"
:nodes="nodes"
:edges="edges"
:rankdir="'DL'"
@closeDialog="limitedWatch = false"
>
</scDegra>
</el-side>
<el-main>
<scTable
ref="tables"
:data="tableData"
row-key="id"
hidePagination
hideDo
stripe
border
>
<el-container v-loading="loading">
<el-main class="nopadding" style="padding-right: 1px;">
<el-container>
<el-header style="height: 80px;display: block;padding:0">
<el-card shadow="hover">
<el-descriptions :column="3" title="基本信息">
<el-descriptions-item label="工艺名称:">{{
form.name
}}</el-descriptions-item>
<el-descriptions-item label="物料名称:">{{
form.material_name
}}</el-descriptions-item>
</el-descriptions>
</el-card>
</el-header>
<el-main>
<el-container>
<el-aside style="width: 50%;overflow: scroll;">
<div
style="font-weight: 600;color: #303133;font-size: 16px;padding: 10px 0;position: fixed;">
工艺路线流程图</div>
<el-tabs v-if="tabsTitle.length > 1" v-model="activeName" :tab-position="'left'"
style="flex-direction: row;" @tab-click="tabshandleClick">
<el-tab-pane :label="item" v-for="item in tabsTitle" :key="item"></el-tab-pane>
</el-tabs>
<scDegra style="margin-top: 50px;" v-if="limitedWatch" ref="degraDialogs" :nodes="nodes"
:edges="edges" :rankdir="'DL'" @closeDialog="limitedWatch = false">
</scDegra>
</el-aside>
<el-main class="padding: 1px">
<scTable ref="tables" :data="tableData" row-key="id" hidePagination hideDo stripe border>
<el-table-column label="排序" prop="sort" width="50">
</el-table-column>
<el-table-column label="工序" prop="process_name">
@ -73,25 +50,36 @@
</el-table-column>
<el-table-column label="工时" prop="hour_work">
</el-table-column>
<el-table-column label="批次校验" v-if="project_code!=='bxerp'">
<el-table-column label="批次校验" v-if="project_code !== 'bxerp'">
<template #default="scope">
<el-tag v-if="scope.row.batch_bind" type="success"></el-tag>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
</el-main>
</el-container>
</el-drawer>
</el-main>
</el-container>
</el-main>
</el-container>
</el-main>
<el-aside width="20%" v-if="form.ticket">
<ticketd :ticketId="form.ticket"></ticketd>
</el-aside>
</el-container>
</template>
<script>
import ticketd from '@/views/wf/ticketd.vue'
export default {
emits: ["success", "closed"],
components: { ticketd },
props: {
t_id: { type: String, default: null },
},
data() {
return {
loading: false,
visible: false,
isSaveing: false,
state_: {
10: "创建中",
@ -99,24 +87,29 @@ export default {
40: "进行中",
50: "已完成",
},
tracking_:{
10:"批次",
20:"单个",
tracking_: {
10: "批次",
20: "单个",
},
form: {},
nodes:[],
edges:[],
tabsTitle:['总图'],
tabsData:{},
form: {
ticket: null
},
nodes: [],
edges: [],
tabsTitle: ['总图'],
tabsData: {},
tableData: [],
project_code: "",
activeName:"总图",
limitedWatch:false,
activeName: "总图",
limitedWatch: false,
};
},
mounted() {
this.project_code = this.$TOOL.data.get("BASE_INFO").base.base_code;
this.tableData = [];
if (this.t_id) {
this.getRoutePackDetail(this.t_id);
}
},
methods: {
//
@ -132,13 +125,17 @@ export default {
that.getDEGdatas(data.id);
this.getTabsList(data.id);
},
getDEGdatas(id){
async getRoutePackDetail(id) {
let res = await this.$API.mtm.routepack.item.req(id);
this.setData(res);
},
getDEGdatas(id) {
let that = this;
that.$API.mtm.routepack.dag.req(id).then((res) => {
that.nodes = res.nodes;
that.nodes = res.nodes;
that.edges = res.edges;
that.tabsData['总图'] = res;
if(!that.limitedWatch){
if (!that.limitedWatch) {
that.limitedWatch = true;
that.$nextTick(() => {
that.$refs.degraDialogs.open();
@ -146,17 +143,17 @@ export default {
}
})
},
getTabsList(id){
getTabsList(id) {
let that = this;
that.$API.mtm.routepack.dags.req(id).then((res) => {
let arr = [];
for(let key in res){
for (let key in res) {
arr.push(key);
}
if(arr.length>1){
for(let key in res){
if (arr.length > 1) {
for (let key in res) {
that.tabsTitle.push(res[key].name);
that.tabsData[res[key].name]=res[key];
that.tabsData[res[key].name] = res[key];
}
}
console.log(that.tabsData);
@ -170,11 +167,11 @@ export default {
this.tableData = res;
});
},
tabshandleClick(val){
tabshandleClick(val) {
let that = this;
let label = val.props.label;
that.$nextTick(() => {
that.nodes = that.tabsData[label].nodes;
that.nodes = that.tabsData[label].nodes;
that.edges = that.tabsData[label].edges;
})
},

View File

@ -185,11 +185,17 @@
@closed="saveClose"
>
</save-dialog>
<show-dialog
v-if="dialog.show"
ref="showDialog"
<el-drawer
v-model="dialog.show"
title="查看"
:size="'90%'"
destroy-on-close
@closed="dialog.show = false"
></show-dialog>
:close-on-click-modal="false"
>
<show-dialog ref="showDialog"></show-dialog>
</el-drawer>
</template>
<script>
import saveDialog from "./routepack_form.vue";

View File

@ -93,7 +93,7 @@
<!--工序!-->
<el-main class="nopadding" v-if="active === 1">
<el-container>
<el-side style="width: 50%;overflow: scroll;">
<el-aside style="width: 50%;overflow: scroll;">
<div style="font-weight: 600;color: #303133;font-size: 16px;padding: 10px 0;position: fixed;width: 30px;">工艺路线流程图</div>
<scDegra
style="margin-top: 50px;"
@ -104,7 +104,7 @@
:rankdir="'DL'"
>
</scDegra>
</el-side>
</el-aside>
<el-main style="width: 50%;overflow: scroll;">
<el-container>
<el-header>
@ -177,21 +177,15 @@
</el-main>
<el-footer v-if="active === 1" style="text-align: center">
<el-button @click="handleLastStep" style="margin-right: 4px">上一步</el-button>
<el-button
v-for="item in initForm.transitions"
:key="item.id"
type="primary"
:loading="isSaveing"
:disabled="isSaveing"
@click="submitTicketCreate(item.id)"
style="margin-right: 4px"
>{{ item.name }}</el-button>
<ticketd_b_start :workflow_key="'routepack'" :title="form.name" :t_id="form.id" :ticketId="form.ticket"
@success="$emit('closed')"></ticketd_b_start>
<el-button @click="$emit('closed')" type="warning">退出</el-button>
</el-footer>
</el-container>
<save-dialog
v-if="dialog.save"
ref="saveDialog"
:count = "count"
:routepack="routepack"
@success="handleSaveSuccess"
@closed="dialog.save = false"
@ -200,9 +194,10 @@
</template>
<script>
import saveDialog from "./route_form.vue";
import ticketd_b_start from "@/views/wf/ticketd_b_start.vue";
export default {
name: "routepack_form",
components: { saveDialog },
components: { saveDialog, ticketd_b_start },
data() {
return {
active: 0,
@ -250,7 +245,7 @@ export default {
mounted() {
this.isSaveing = false;
this.project_code = this.$TOOL.data.get("BASE_INFO").base.base_code;
this.getInit();
// this.getInit();
// this.getMaterials();
},
methods: {
@ -296,6 +291,11 @@ export default {
//
handleNextStep() {
let that = this;
// that.routepack = that.form.id;
// that.query.routepack = that.form.id;
// that.apiObj = that.$API.mtm.route.list;
// that.active = 1;
// that.getDEGdatas();
let form = {};
form.name = that.form.name;
form.material = that.form.material;
@ -338,6 +338,9 @@ export default {
})
},
table_add() {
let that = this;
that.count = this.$refs.tables.total;
console.log("count",that.count);
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("add");
@ -374,38 +377,6 @@ export default {
return err;
});
},
//
getInit() {
let that = this;
that.$API.wf.workflow.initkey.req("routepack").then((res) => {
that.initForm = res;
});
},
//,
submitTicketCreate(id) {
let that = this;
let ticket = {};
that.isSaveing = true;
ticket.title = that.form.name;
ticket.workflow = that.initForm.workflow;
ticket.ticket_data = {
t_id: that.routepack,
};
ticket.transition = id;
that.$API.wf.ticket.create
.req(ticket)
.then((res) => {
that.tLoading = false;
that.$message.success("提交成功");
that.$emit("close");
that.visible = false;
})
.catch((e) => {
that.tLoading = false;
});
},
//
handleSaveSuccess() {
console.log("handleSaveSuccess");

View File

@ -93,55 +93,37 @@
type="primary"
:loading="isSaving"
@click="submitHandle()"
> </el-button
>
> </el-button>
</template>
</el-dialog>
</template>
<script>
// import degraDialog from "../wf/degraD3.vue";
export default {
name: "index",
// components: {
// degraDialog
// },
name: "mroom",
data() {
return {
workflowName:"",
workFlowId:'',
apiObj: this.$API.wf.workflow.list,
selection: [],
checkList: [],
fileList: [],
timeRange: [],
lending_type: "",
apiObj: this.$API.ofm.mroom.list,
query: {},
editId: null,
isSaving: false,
limitedVisible: false,
limitedWatch: false,
type: "add",
titleMap: {
add: "新增",
edit: "编辑",
show: "查看",
},
//
addForm: {
seal: [],
seal_other: "",
filename: "",
contents: "",
file_count: "",
is_lending: "",
contacts: "",
lending_date: "",
return_date: "",
actual_return_date: "",
reason: "",
name: "",
location: "",
capacity: "",
},
rules: {
name: [{ required: true, message: "请输入会议室名称", trigger: "blur" }],
location: [{ required: true, message: "请输入地点", trigger: "blur" }],
capacity: [{ required: true, message: "请输入容纳人数", trigger: "blur" }],
},
//
};
},
methods: {
@ -151,15 +133,12 @@ export default {
this.limitedVisible = true;
},
handleCancel() {
this.limitedVisible = false; //
this.lending_type = ""; // lending_type
//
// this.addForm = { lending_type: "", ...... };
},
this.limitedVisible = false;
},
submitHandle() {
let that = this;
this.$refs.addForm.validate((valid) => {
that.$refs.addForm.validate((valid) => {
if (valid) {
that.isSaving = true;
that.submit();
@ -168,16 +147,14 @@ export default {
},
async submit() {
let that = this;
let res = null;
let that = this,res = null;
console.log('that.type',that.type);
console.log('that.addForm',that.addForm);
try {
if (that.type === "add") {
res = await that.$API.ofm.mroom.create.req(that.addForm);
} else {
res = await that.$API.ofm.mroom.update.req(
that.editId,
that.addForm
);
res = await that.$API.ofm.mroom.update.req(that.addForm.id,that.addForm);
}
that.isSaving = false;
that.limitedVisible = false;
@ -186,77 +163,32 @@ export default {
that.isSaving = false;
}
},
fileUPSuccess(res) {
let that = this;
console.log('res',res);
this.test_file = res.path;
},
mroomEidt(row) {
this.type = "edit";
this.editId = row.id;
this.limitedVisible = true;
this.addForm = Object.assign({}, row);
}
let that = this;
that.type = "edit";
that.editId = row.id;
that.limitedVisible = true;
that.addForm = Object.assign({}, row);
},
async mroomDel(row) {
let that = this;
var id = row.id;
var res = await this.$API.ofm.mroom.delete.req(id);
var res = await that.$API.ofm.mroom.delete.req(id);
if (res.err_msg) {
this.$message.error(res.err_msg);
that.$message.error(res.err_msg);
} else {
this.$refs.table.refresh();
this.$message.success("删除成功");
that.$refs.table.refresh();
that.$message.success("删除成功");
}
},
//
handleQuery() {
this.$refs.table.queryData(this.query);
},
};
},
}
</script>
<style scoped>
.treeMain {
height: 280px;
overflow: auto;
border: 1px solid #dcdfe6;
margin-bottom: 10px;
}
::-webkit-scrollbar {
width: 10px;
}
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.2);
background-color: #fefefe;
border-radius: 5px;
}
::-webkit-scrollbar-thumb {
border-radius: 5px;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
background-color: #f5f5f5;
}
.node rect {
stroke: #606266;
fill: #fff;
}
.edgePath path {
stroke: #606266;
fill: #333;
stroke-width: 1.5px;
}
g.conditions > rect {
fill: #00ffd0;
stroke: #000;
}
.el-icon-close {
cursor: pointer;
}
.left-panel-group {
display: flex;

View File

@ -85,6 +85,11 @@
>
</template>
</el-table-column>
<el-table-column
label="耗时(ms)"
prop="response_ms"
min-width="40"
></el-table-column>
<el-table-column
label="操作时间"
prop="requested_at"

View File

@ -352,6 +352,7 @@ export default {
//mlog\handover
params_mlog:{
cbatch:'',
ordering:'create_time',
with_mlogb:'yes',
query: " { id,material_out_name,mlogb_full,count_real,count_ok,is_fix,belong_dept_name,mgroup_name,handle_user_name,handle_date,reminder_interval_list,mstate_json,work_start_time,work_end_time,oinfo_json,submit_time,submit_user_name}"
},
@ -365,6 +366,7 @@ export default {
item_mio__batch:'',
},
query:{
ordering:'-update_time',
batch:'',
// material_start__type:30,
},

View File

@ -28,8 +28,12 @@
id="exportDiv"
stripe
>
<!-- <el-table-column type="index" width="50" fixed="left"/> -->
<el-table-column label="检测日期" fixed="left" prop="batch">
<el-table-column label="单号" prop="batch" align="center" fixed="left">
</el-table-column>
<el-table-column label="检测日期" fixed="left" prop="batch" width="90">
<template #default="scope">
{{ scope.row.data.毛坯检测_日期 }}
</template>
</el-table-column>
<el-table-column label="版型" prop="number" fixed="left">
<template #default="scope">
@ -165,8 +169,6 @@
</el-table-column>
<el-table-column label="外形偏(0.5mm)" align="center" class-name="colorheader1">
</el-table-column>
<el-table-column label="单号" prop="batch" align="center" class-name="colorheader2">
</el-table-column>
<el-table-column label="备注" align="center" class-name="colorheader3">
<template #default="scope">
<span>{{ scope.row.data.毛坯检测_缺陷_备注 }}</span>
@ -187,12 +189,8 @@ export default {
querys:[[{field:"data__has_key",compare:"",value:"毛坯检测_日期"}]],
},
query:{
name__contains:'',
batch__contains:'',
last_time__gte:'',
last_time__lte:'',
batch__contains:''
},
// apiObj: this.$API.wpm.wpr.query,
apiObj: this.$API.wpm.batchstquery,
options:[],
tableData:[],
@ -201,43 +199,17 @@ export default {
methods: {
handleQuery(){
let that = this;
let querys = [[{field:"wm",value:0,compare:"isnull"},{field:"data__has_key",compare:"",value:"毛坯检测_批次号"}]];
let obj = {},obj1 = {},obj2 = {},obj3 = {};
obj.field = 'data__毛坯检测_批次号';
let querys = [[{field:"data__has_key",compare:"",value:"毛坯检测_日期"}]];
let obj = {};
obj.field = 'batch';
obj.value = that.query.batch__contains;
obj.compare = '';
obj1.field = 'last_time';
obj1.value = that.query.last_time__gte;
obj1.compare = 'gte';
obj2.field = 'last_time';
obj2.value = that.query.last_time__lte;
obj2.compare = 'lte';
obj3.field = 'data__毛坯检测_物料名';
obj3.value = that.query.name__contains;
obj3.compare = '';
if(that.query.batch__contains!==''&&that.query.batch__contains!==null){
querys[0].push(obj);
}
if(that.query.last_time__gte!==''&&that.query.last_time__gte!==null){
querys[0].push(obj1);
}
if(that.query.last_time__lte!==''&&that.query.last_time__lte!==null){
querys[0].push(obj2);
}
if(that.query.name__contains!==''&&that.query.name__contains!==null){
querys[0].push(obj3);
}
that.params.querys = querys;
this.$refs.table.queryData(that.params);
},
getCountQt(data,type){
let count_qt = 0,count = 0;
}
},
};
</script>

View File

@ -37,31 +37,41 @@
</el-table-column>
<el-table-column label="扭转数" fixed="left">
<template #default="scope">
{{ scope.row.data.检测_count_use }}
{{ scope.row.data.检测_count_use }}
</template>
</el-table-column>
<el-table-column label="扭后内质" align="center" class-name="colorheader1">
<el-table-column label="合格" class-name="colorheader1">
<el-table-column label="数量" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢2mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢2mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span v-if="scope.row.data.扭后检测_含缺陷_暗点不合格&&scope.row.data.扭后检测_含缺陷_暗点重">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_暗点不合格 - scope.row.data.扭后检测_含缺陷_暗点重 }}</span>
<span v-else>
<span v-if="scope.row.data.扭后检测_含缺陷_暗点重">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_暗点重 }}</span>
<span v-else-if="scope.row.data.扭后检测_含缺陷_暗点不合格">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_暗点不合格 }}</span>
<span v-else>{{ scope.row.data.扭后检测_count_use }}</span>
</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢2mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢2mm不合格_比例']:100 }}%</span>
<span v-if="scope.row.data.扭后检测_含缺陷_暗点不合格&&scope.row.data.扭后检测_含缺陷_暗点重">{{100- scope.row.data.扭后检测_含缺陷_暗点不合格_比例 - scope.row.data.扭后检测_含缺陷_暗点重_比例 }}%</span>
<span v-else>
<span v-if="scope.row.data.扭后检测_含缺陷_暗点重">{{ 100 - scope.row.data.扭后检测_含缺陷_暗点重_比例 }}%</span>
<span v-else-if="scope.row.data.扭后检测_含缺陷_暗点不合格">{{100- scope.row.data.扭后检测_含缺陷_暗点不合格_比例 }}%</span>
<span v-else>100%</span>
</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="可加工" class-name="colorheader1">
<el-table-column label="数量" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢2mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢2mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span>{{ scope.row.data.扭后检测_含缺陷_暗点不合格?scope.row.data.扭后检测_含缺陷_暗点不合格:0 }}</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢2mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢2mm不合格_比例']:100 }}%</span>
<span>{{ scope.row.data.扭后检测_含缺陷_暗点不合格?scope.row.data.扭后检测_含缺陷_暗点不合格_比例:0 }}%</span>
</template>
</el-table-column>
</el-table-column>
@ -70,36 +80,46 @@
<el-table-column label="无" class-name="colorheader2">
<el-table-column label="数量" class-name="colorheader2">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span v-if="scope.row.data.扭后检测_含缺陷_黑网轻&&scope.row.data.扭后检测_含缺陷_黑网重">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_黑网轻 - scope.row.data.扭后检测_含缺陷_黑网重 }}</span>
<span v-else>
<span v-if="scope.row.data.扭后检测_含缺陷_黑网轻">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_黑网轻 }}</span>
<span v-else-if="scope.row.data.扭后检测_含缺陷_黑网重">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_黑网重 }}</span>
<span v-else>{{ scope.row.data.扭后检测_count_use }}</span>
</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader2">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span v-if="scope.row.data.扭后检测_含缺陷_黑网轻&&scope.row.data.扭后检测_含缺陷_黑网重">{{100- scope.row.data.扭后检测_含缺陷_黑网重_比例 - scope.row.data.扭后检测_含缺陷_黑网轻_比例 }}%</span>
<span v-else>
<span v-if="scope.row.data.扭后检测_含缺陷_黑网轻">{{ 100 - scope.row.data.扭后检测_含缺陷_黑网轻_比例 }}%</span>
<span v-else-if="scope.row.data.扭后检测_含缺陷_黑网重">{{100- scope.row.data.扭后检测_含缺陷_黑网重_比例 }}%</span>
<span v-else>100%</span>
</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="轻" class-name="colorheader2">
<el-table-column label="数量" class-name="colorheader2">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span>{{ scope.row.data.扭后检测_含缺陷_黑网轻?scope.row.data.扭后检测_含缺陷_黑网轻:0 }}</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader2">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span>{{ scope.row.data.扭后检测_含缺陷_黑网轻_比例?scope.row.data.扭后检测_含缺陷_黑网轻_比例:0 }}%</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="重" class-name="colorheader2">
<el-table-column label="数量" class-name="colorheader2">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span>{{ scope.row.data.扭后检测_含缺陷_黑网重?scope.row.data.扭后检测_含缺陷_黑网重:0 }}</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader2">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span>{{ scope.row.data.扭后检测_含缺陷_黑网重_比例?scope.row.data.扭后检测_含缺陷_黑网重_比例:0 }}%</span>
</template>
</el-table-column>
</el-table-column>
@ -108,36 +128,46 @@
<el-table-column label="无" class-name="colorheader3">
<el-table-column label="数量" class-name="colorheader3">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span v-if="scope.row.data.扭后检测_含缺陷_白网轻&&scope.row.data.扭后检测_含缺陷_白网重">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_白网轻 - scope.row.data.扭后检测_含缺陷_白网重 }}</span>
<span v-else>
<span v-if="scope.row.data.扭后检测_含缺陷_白网轻">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_白网轻 }}</span>
<span v-else-if="scope.row.data.扭后检测_含缺陷_白网重">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_白网重 }}</span>
<span v-else>{{ scope.row.data.扭后检测_count_use }}</span>
</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader3">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span v-if="scope.row.data.扭后检测_含缺陷_白网轻&&scope.row.data.扭后检测_含缺陷_白网重">{{100- scope.row.data.扭后检测_含缺陷_白网重_比例 - scope.row.data.扭后检测_含缺陷_白网轻_比例 }}%</span>
<span v-else>
<span v-if="scope.row.data.扭后检测_含缺陷_白网轻">{{ 100 - scope.row.data.扭后检测_含缺陷_白网轻_比例 }}%</span>
<span v-else-if="scope.row.data.扭后检测_含缺陷_白网重">{{100- scope.row.data.扭后检测_含缺陷_白网重_比例 }}%</span>
<span v-else>100%</span>
</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="轻" class-name="colorheader3">
<el-table-column label="数量" class-name="colorheader3">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span>{{ scope.row.data.扭后检测_含缺陷_白网轻?scope.row.data.扭后检测_含缺陷_白网轻:0 }}</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader3">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span>{{ scope.row.data.扭后检测_含缺陷_白网轻_比例?scope.row.data.扭后检测_含缺陷_白网轻_比例:0 }}%</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="重" class-name="colorheader3">
<el-table-column label="数量" class-name="colorheader3">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span>{{ scope.row.data.扭后检测_含缺陷_白网重?scope.row.data.扭后检测_含缺陷_白网重:0 }}</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader3">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span>{{ scope.row.data.扭后检测_含缺陷_白网重_比例?scope.row.data.扭后检测_含缺陷_白网重_比例:0 }}%</span>
</template>
</el-table-column>
</el-table-column>
@ -146,36 +176,46 @@
<el-table-column label="无" class-name="colorheader4">
<el-table-column label="数量" class-name="colorheader4">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span v-if="scope.row.data.扭后检测_含缺陷_小网轻&&scope.row.data.扭后检测_含缺陷_小网重">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_小网轻 - scope.row.data.扭后检测_含缺陷_小网重 }}</span>
<span v-else>
<span v-if="scope.row.data.扭后检测_含缺陷_小网轻">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_小网轻 }}</span>
<span v-else-if="scope.row.data.扭后检测_含缺陷_小网重">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_小网重 }}</span>
<span v-else>{{ scope.row.data.扭后检测_count_use }}</span>
</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader4">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span v-if="scope.row.data.扭后检测_含缺陷_小网轻&&scope.row.data.扭后检测_含缺陷_小网重">{{100- scope.row.data.扭后检测_含缺陷_小网重_比例 - scope.row.data.扭后检测_含缺陷_小网轻_比例 }}%</span>
<span v-else>
<span v-if="scope.row.data.扭后检测_含缺陷_小网轻">{{ 100 - scope.row.data.扭后检测_含缺陷_小网轻_比例 }}%</span>
<span v-else-if="scope.row.data.扭后检测_含缺陷_小网重">{{100- scope.row.data.扭后检测_含缺陷_小网重_比例 }}%</span>
<span v-else>100%</span>
</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="轻" class-name="colorheader4">
<el-table-column label="数量" class-name="colorheader4">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span>{{ scope.row.data.扭后检测_含缺陷_小网轻?scope.row.data.扭后检测_含缺陷_小网轻:0 }}</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader4">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span>{{ scope.row.data.扭后检测_含缺陷_小网轻_比例?scope.row.data.扭后检测_含缺陷_小网轻_比例:0 }}%</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="重" class-name="colorheader4">
<el-table-column label="数量" class-name="colorheader4">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span>{{ scope.row.data.扭后检测_含缺陷_小网重?scope.row.data.扭后检测_含缺陷_小网重:0 }}</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader4">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span>{{ scope.row.data.扭后检测_含缺陷_小网重_比例?scope.row.data.扭后检测_含缺陷_小网重_比例:0 }}%</span>
</template>
</el-table-column>
</el-table-column>
@ -183,42 +223,42 @@
<el-table-column label="分辨率" align="center" class-name="colorheader5">
<el-table-column label="测试数量" class-name="colorheader5">
<template #default="scope">
<span>{{ scope.row.data.转检测_count_ok }} </span>
<span>{{ scope.row.data.后检测_count_use }} </span>
</template>
</el-table-column>
<el-table-column label="国内" class-name="colorheader5">
<el-table-column label="数量" class-name="colorheader5">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span>{{ scope.row.data.扭后检测_含缺陷_分辨率?scope.row.data.扭后检测_含缺陷_分辨率:0}}</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader5">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span>{{ scope.row.data.扭后检测_含缺陷_分辨率?scope.row.data.扭后检测_含缺陷_分辨率_比例:0}}%</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="出口" class-name="colorheader5">
<el-table-column label="数量" class-name="colorheader5">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span>{{ scope.row.data.扭后检测_含缺陷_分辨率?scope.row.data.扭后检测_含缺陷_分辨率:0}}</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader5">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span>{{ scope.row.data.扭后检测_含缺陷_分辨率?scope.row.data.扭后检测_含缺陷_分辨率_比例:0}}%</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="不合格" class-name="colorheader5">
<el-table-column label="数量" class-name="colorheader5">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span>{{ scope.row.data.扭后检测_含缺陷_分辨率?scope.row.data.扭后检测_含缺陷_分辨率:0}}</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader5">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span>{{ scope.row.data.扭后检测_含缺陷_分辨率?scope.row.data.扭后检测_含缺陷_分辨率_比例:0}}%</span>
</template>
</el-table-column>
</el-table-column>
@ -226,24 +266,24 @@
<el-table-column label="加工数" align="center" class-name="colorheader6">
<el-table-column label="数量" class-name="colorheader6">
<template #default="scope">
<span>{{ scope.row.data.检测_count_ok }} </span>
<span>{{ scope.row.data.检测_count_ok }} </span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader6">
<template #default="scope">
<span>{{ scope.row.data.检测_合格率 }}</span>
<span>{{ scope.row.data.检测_合格率 }}</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="毛坯扭送" align="center" class-name="colorheader7">
<el-table-column label="数量" class-name="colorheader7">
<template #default="scope">
<span>{{ scope.row.data.检测_count_ok }} </span>
<span>{{ scope.row.data.检测_count_ok }} </span>
</template>
</el-table-column>
<el-table-column label="时间" class-name="colorheader7">
<template #default="scope">
<span>{{ scope.row.data.检测_合格率 }}</span>
<span>{{ scope.row.data.检测_合格率 }}</span>
</template>
</el-table-column>
</el-table-column>
@ -252,73 +292,83 @@
<el-table-column label="完好" class-name="colorheader1">
<el-table-column label="数量" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span v-if="scope.row.data.扭后检测_含缺陷_扭后炸纹&&scope.row.data.扭后检测_含缺陷_扭后炸废">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_扭后炸纹 - scope.row.data.扭后检测_含缺陷_扭后炸废 }}</span>
<span v-else>
<span v-if="scope.row.data.扭后检测_含缺陷_扭后炸纹">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_扭后炸纹 }}</span>
<span v-else-if="scope.row.data.扭后检测_含缺陷_扭后炸废">{{ scope.row.data.扭后检测_count_use - scope.row.data.扭后检测_含缺陷_扭后炸废 }}</span>
<span v-else>{{ scope.row.data.扭后检测_count_use }}</span>
</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span v-if="scope.row.data.扭后检测_含缺陷_扭后炸纹&&scope.row.data.扭后检测_含缺陷_扭后炸废">{{100- scope.row.data.扭后检测_含缺陷_扭后炸纹 - scope.row.data.扭后检测_含缺陷_扭后炸废 }}%</span>
<span v-else>
<span v-if="scope.row.data.扭后检测_含缺陷_扭后炸纹">{{ 100 - scope.row.data.扭后检测_含缺陷_扭后炸纹_比例 }}</span>
<span v-else-if="scope.row.data.扭后检测_含缺陷_扭后炸废">{{100- scope.row.data.扭后检测_含缺陷_扭后炸废_比例 }}%</span>
<span v-else>100%</span>
</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="崩炸" class-name="colorheader1">
<el-table-column label="数量" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span>{{ scope.row.data.扭后检测_含缺陷_扭后炸纹?扭后检测_含缺陷_扭后炸纹:0 }}</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span>{{ scope.row.data.扭后检测_含缺陷_扭后炸纹?scope.row.data.扭后检测_含缺陷_扭后炸纹_比列:0 }}%</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="炸废" class-name="colorheader1">
<el-table-column label="数量" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']?scope.row.data.扭转检测_count_use-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格']:scope.row.data.扭转检测_count_use }}</span>
<span>{{ scope.row.data.扭后检测_含缺陷_扭后炸废?扭后检测_含缺陷_扭后炸废:0 }}</span>
</template>
</el-table-column>
<el-table-column label="比例" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']?100-scope.row.data['扭转检测_缺陷_放大率¢16mm不合格_比例']:100 }}%</span>
<span>{{ scope.row.data.扭后检测_含缺陷_扭后炸废?scope.row.data.扭后检测_含缺陷_扭后炸废_比列:0 }}%</span>
</template>
</el-table-column>
</el-table-column>
</el-table-column>
<el-table-column label="扭转角" class-name="colorheader1">
<!-- <el-table-column label="扭转角" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data.转检测_count_ok }} </span>
<span>{{ scope.row.data.后检测_含缺陷_扭转角不合格 }} </span>
</template>
</el-table-column>
<el-table-column label="改直" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data.检测_合格率 }}</span>
<span>{{ scope.row.data.检测_合格率 }}</span>
</template>
</el-table-column>
<el-table-column label="外圆大" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data.检测_count_ok }} </span>
<span>{{ scope.row.data.检测_count_ok }} </span>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column label="合计" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data.检测_count_ok }} </span>
<span>{{ scope.row.data.检测_count_ok }} </span>
</template>
</el-table-column>
<el-table-column label="合格率" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data.检测_合格率 }}</span>
<span>{{ scope.row.data.检测_合格率 }}</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="外形偏(0.5mm)" align="center" class-name="colorheader2">
</el-table-column>
<!-- <el-table-column label="外形偏(0.5mm)" align="center" class-name="colorheader2">
</el-table-column> -->
<el-table-column label="实验名称备注" prop="batch" align="center" class-name="colorheader3">
</el-table-column>
<el-table-column label="检测设备" align="center" class-name="colorheader4">
<template #default="scope">
<span>{{ scope.row.data.检测_缺陷_备注 }}</span>
<span>{{ scope.row.data.检测_缺陷_备注 }}</span>
</template>
</el-table-column>
</scTable>
@ -332,8 +382,8 @@ export default {
data() {
return {
params: {
ordering:'-data__扭检测_小日期',
querys:[[{field:"data__has_key",compare:"",value:"扭检测_日期"}]],
ordering:'-data__扭检测_小日期',
querys:[[{field:"data__has_key",compare:"",value:"扭检测_日期"}]],
},
query:{
name__contains:'',
@ -341,7 +391,6 @@ export default {
last_time__gte:'',
last_time__lte:'',
},
// apiObj: this.$API.wpm.wpr.query,
apiObj: this.$API.wpm.batchstquery,
options:[],
tableData:[],
@ -350,9 +399,9 @@ export default {
methods: {
handleQuery(){
let that = this;
let querys = [[{field:"wm",value:0,compare:"isnull"},{field:"data__has_key",compare:"",value:"扭检测_批次号"}]];
let querys = [[{field:"wm",value:0,compare:"isnull"},{field:"data__has_key",compare:"",value:"扭检测_批次号"}]];
let obj = {},obj1 = {},obj2 = {},obj3 = {};
obj.field = 'data__扭检测_批次号';
obj.field = 'data__扭检测_批次号';
obj.value = that.query.batch__contains;
obj.compare = '';
@ -364,7 +413,7 @@ export default {
obj2.value = that.query.last_time__lte;
obj2.compare = 'lte';
obj3.field = 'data__扭检测_物料名';
obj3.field = 'data__扭检测_物料名';
obj3.value = that.query.name__contains;
obj3.compare = '';

View File

@ -97,7 +97,12 @@ export default {
},
handleQuery(){
let that = this;
that.getData();
if(that.query.user_name==null||that.query.user_name==''){
that.$message.error('请输入员工姓名');
}else{
that.getData();
}
},
},
};

View File

@ -100,7 +100,6 @@
style="height: 100%;"
:summary-method="getSummaries"
show-summary
>
<el-table-column label="批次号" prop="batch" min-width="240" fixed="left">
<template #default="scope"><span>{{ scope.row.data.批次号 }}</span></template>
@ -109,6 +108,9 @@
<el-table-column label="日期" class-name="colorheader1" width="90">
<template #default="scope"><span>{{ scope.row.data.尺寸检验_日期 }}</span></template>
</el-table-column>
<el-table-column label="班次" class-name="colorheader1" width="60">
<template #default="scope"><span>{{ scope.row.data.尺寸检验_班次 }}</span></template>
</el-table-column>
<el-table-column label="检验人" class-name="colorheader1">
<template #default="scope"><span>{{ scope.row.data.尺寸检验_操作人 }}</span></template>
</el-table-column>
@ -177,6 +179,9 @@
<el-table-column label="日期" class-name="colorheader2" width="90">
<template #default="scope"><span>{{ scope.row.data.外观检验_日期 }}</span></template>
</el-table-column>
<el-table-column label="班次" class-name="colorheader2" width="60">
<template #default="scope"><span>{{ scope.row.data.外观检验_班次 }}</span></template>
</el-table-column>
<el-table-column label="检验人" class-name="colorheader2">
<template #default="scope"><span>{{ scope.row.data.外观检验_操作人 }}</span></template>
</el-table-column>
@ -485,7 +490,7 @@ export default {
}
let propert = '';
//
if(index == 3&&column.label=='检验数'){
if(index == 4&&column.label=='检验数'){
propert = '尺寸检验_count_real';
}else if(column.label=='黑圈内径'){
propert = '尺寸检验_缺陷_黑圈内径';
@ -499,13 +504,13 @@ export default {
propert = '尺寸检验_缺陷_产品外径小';
}else if(column.label=='产品外径大(返修)'){
propert = '尺寸检验_缺陷_产品外径大(返修)';
}else if(index == 14&&column.label=='黑圈缺口'){
}else if(index == 15&&column.label=='黑圈缺口'){
propert = '尺寸检验_缺陷_黑圈缺口';
}else if(column.label=='外径发货片(B)'){
propert = '尺寸检验_缺陷_外径发货片(B)';
}else if(column.label=='前道崩'){
propert = '尺寸检验_缺陷_前道崩';
}else if(index==17&&column.label=='合格数'){
}else if(index==18&&column.label=='合格数'){
propert = '尺寸检验_count_ok_full';
}else if(column.label=='准合格(B)'){
propert = '尺寸检验_缺陷_准合格(B)';
@ -513,83 +518,83 @@ export default {
propert = '尺寸检验_缺陷_圆准(B)';
}else if(column.label=='总合格数'){
propert = '尺寸检验_count_ok';
}else if(index == 25&&column.label=='检验数'){
}else if(index == 27&&column.label=='检验数'){
propert = '外观检验_count_real';
}else if(index==26&&column.label=='合格数'){
}else if(index==28&&column.label=='合格数'){
propert = '外观检验_count_ok_full';
}else if(index==28&&column.label=='划麻(返修)'){
}else if(index==30&&column.label=='划麻(返修)'){
propert = '外观检验_缺陷_划麻(返修)';
}else if(index==30&&column.label=='脏(返修)'){
}else if(index==32&&column.label=='脏(返修)'){
propert = '外观检验_缺陷_脏(返修)';
}else if(index==32&&column.label=='气泡'){
}else if(index==34&&column.label=='气泡'){
propert = '外观检验_缺陷_气泡';
}else if(index==34&&column.label=='浅气泡(B)'){
}else if(index==36&&column.label=='浅气泡(B)'){
propert = '外观检验_缺陷_浅气泡(B)';
}else if(index==35&&column.label=='黑圈变形'){
}else if(index==37&&column.label=='黑圈变形'){
propert = '外观检验_缺陷_黑圈变形';
}else if(index==36&&column.label=='黑圈缺口'){
}else if(index==38&&column.label=='黑圈缺口'){
propert = '外观检验_缺陷_黑圈缺口';
}else if(index==37&&column.label=='重水纹'){
}else if(index==39&&column.label=='重水纹'){
propert = '外观检验_缺陷_重水纹';
}else if(index==38&&column.label=='浅水纹(B)'){
}else if(index==40&&column.label=='浅水纹(B)'){
propert = '外观检验_缺陷_浅水纹(B)';
}else if(index==39&&column.label=='大崩'){
}else if(index==41&&column.label=='大崩'){
propert = '外观检验_缺陷_大崩';
}else if(index==40&&column.label=='小崩边(B)'){
}else if(index==42&&column.label=='小崩边(B)'){
propert = '外观检验_缺陷_小崩边(B)';
}else if(index==42&&column.label=='棕点'){
}else if(index==44&&column.label=='棕点'){
propert = '外观检验_缺陷_棕点';
}else if(index==43&&column.label=='浅划麻(B)'){
}else if(index==45&&column.label=='浅划麻(B)'){
propert = '外观检验_缺陷_浅划麻(B)';
}else if(index==44&&column.label=='双面划麻'){
}else if(index==46&&column.label=='双面划麻'){
propert = '外观检验_缺陷_双面划麻';
}else if(index==45&&column.label=='倒角'){
}else if(index==47&&column.label=='倒角'){
propert = '外观检验_缺陷_倒角';
}else if(index==46&&column.label=='棕圈'){
}else if(index==48&&column.label=='棕圈'){
propert = '外观检验_缺陷_棕圈';
}else if(index==47&&column.label=='蓝圈'){
}else if(index==49&&column.label=='蓝圈'){
propert = '外观检验_缺陷_蓝圈';
}else if(index==48&&column.label=='尺寸小'){
}else if(index==50&&column.label=='尺寸小'){
propert = '外观检验_缺陷_尺寸小';
}else if(index==49&&column.label=='破损'){
}else if(index==51&&column.label=='破损'){
propert = '外观检验_缺陷_破损';
}else if(index==50&&column.label=='发白'){
}else if(index==52&&column.label=='发白'){
propert = '外观检验_缺陷_发白';
}else if(index==51&&column.label=='漏光'){
}else if(index==53&&column.label=='漏光'){
propert = '外观检验_缺陷_漏光';
}else if(index == 54&&column.label=='返修数'){
}else if(index == 56&&column.label=='返修数'){
propert = '外观检验_返修_count_real';
}else if(index==55&&column.label=='合格数'){
}else if(index==57&&column.label=='合格数'){
propert = '外观检验_返修_count_ok_full';
}else if(index==56&&column.label=='黑圈变形'){
}else if(index==58&&column.label=='黑圈变形'){
propert = '外观检验_返修_缺陷_黑圈变形';
}else if(index==57&&column.label=='气泡'){
}else if(index==59&&column.label=='气泡'){
propert = '外观检验_返修_缺陷_气泡';
}else if(index==58&&column.label=='浅气泡(B)'){
}else if(index==60&&column.label=='浅气泡(B)'){
propert = '外观检验_返修_缺陷_浅气泡(B)';
}else if(index==59&&column.label=='浅划麻(B)'){
}else if(index==61&&column.label=='浅划麻(B)'){
propert = '外观检验_返修_缺陷_浅划麻(B)';
}else if(index==60&&column.label=='双面划麻'){
}else if(index==62&&column.label=='双面划麻'){
propert = '外观检验_返修_缺陷_双面划麻';
}else if(index==61&&column.label=='浅水纹(B)'){
}else if(index==63&&column.label=='浅水纹(B)'){
propert = '外观检验_返修_缺陷_浅水纹(B)';
}else if(index==62&&column.label=='重水纹'){
}else if(index==64&&column.label=='重水纹'){
propert = '外观检验_返修_缺陷_重水纹';
}else if(index==63&&column.label=='大崩'){
}else if(index==65&&column.label=='大崩'){
propert = '外观检验_返修_缺陷_大崩';
}else if(index==64&&column.label=='小崩边(B)'){
}else if(index==66&&column.label=='小崩边(B)'){
propert = '外观检验_返修_缺陷_小崩边(B)';
}else if(index==65&&column.label=='倒角'){
}else if(index==67&&column.label=='倒角'){
propert = '外观检验_返修_缺陷_倒角';
}else if(index==66&&column.label=='棕点'){
}else if(index==68&&column.label=='棕点'){
propert = '外观检验_返修_缺陷_棕点';
}else if(index==67&&column.label=='漏光'){
}else if(index==69&&column.label=='漏光'){
propert = '外观检验_返修_缺陷_漏光';
}else if(index==68&&column.label=='黑圈缺口'){
}else if(index==70&&column.label=='黑圈缺口'){
propert = '外观检验_返修_缺陷_黑圈缺口';
}else if(index==69&&column.label=='破损'){
}else if(index==71&&column.label=='破损'){
propert = '外观检验_返修_缺陷_破损';
}else if(index==70&&column.label=='尺寸小'){
}else if(index==72&&column.label=='尺寸小'){
propert = '外观检验_返修_缺陷_尺寸小';
}else if(column.label=='外观总合格数'){
propert = '外观检验_完全总合格数';
@ -611,34 +616,34 @@ export default {
}
}
if(index==5||index==7||index==9||index==11||index==18||index==22){
if(index==6||index==8||index==10||index==12||index==19||index==23){
if(sums[index-1]){
sums[index] = ((sums[index-1]/sums[3])*100).toFixed(4);
sums[index] = ((sums[index-1]/sums[4])*100).toFixed(4);
}
}
if(index==27||index==29||index==31||index==33||index==41){
if(index==29||index==31||index==33||index==35||index==43){
if(sums[index-1]){
sums[index] = ((sums[index-1]/sums[25])*100).toFixed(4);
}
}
if(index==71){
let sum = 0;
if(sums[26]){
sum += sums[26];
}
if(sums[55]){
sum += sums[55];
}
sums[index] = sum;
}
if(index==72){
if(sums[71]&&sums[25]){
sums[index] = ((sums[71]/sums[25])*100).toFixed(2);
sums[index] = ((sums[index-1]/sums[27])*100).toFixed(4);
}
}
if(index==73){
if(sums[72]&&sums[22]){
sums[index] = ((sums[72]*sums[22])/100).toFixed(2);
let sum = 0;
if(sums[28]){
sum += sums[28];
}
if(sums[57]){
sum += sums[57];
}
sums[index] = sum;
}
if(index==74){
if(sums[73]&&sums[27]){
sums[index] = ((sums[73]/sums[27])*100).toFixed(2);
}
}
if(index==75){
if(sums[74]&&sums[23]){
sums[index] = ((sums[74]*sums[23])/100).toFixed(2);
}
}
});

View File

@ -109,6 +109,9 @@
<el-table-column label="日期" class-name="colorheader1" width="90">
<template #default="scope"><span>{{ scope.row.data.尺寸检验_日期 }}</span></template>
</el-table-column>
<el-table-column label="班次" class-name="colorheader1" width="60">
<template #default="scope"><span>{{ scope.row.data.尺寸检验_班次 }}</span></template>
</el-table-column>
<el-table-column label="检验数" class-name="colorheader1">
<template #default="scope"><span>{{ scope.row.data.尺寸检验_count_real }}</span></template>
</el-table-column>
@ -174,6 +177,9 @@
<el-table-column label="日期" class-name="colorheader2" width="90">
<template #default="scope"><span>{{ scope.row.data.外观检验_日期 }}</span></template>
</el-table-column>
<el-table-column label="班次" class-name="colorheader2" width="60">
<template #default="scope"><span>{{ scope.row.data.外观检验_班次 }}</span></template>
</el-table-column>
<el-table-column label="检验数" class-name="colorheader2">
<template #default="scope"><span>{{ scope.row.data.外观检验_count_real }}</span></template>
</el-table-column>
@ -426,7 +432,7 @@ export default {
}
let propert = '';
//
if(index == 2&&column.label=='检验数'){
if(index == 3&&column.label=='检验数'){
propert = '尺寸检验_count_real';
}else if(column.label=='黑圈内径'){
propert = '尺寸检验_缺陷_黑圈内径';
@ -446,7 +452,7 @@ export default {
propert = '尺寸检验_缺陷_外径发货片(B)';
}else if(column.label=='前道崩'){
propert = '尺寸检验_缺陷_前道崩';
}else if(index==16&&column.label=='合格数'){
}else if(index==17&&column.label=='合格数'){
propert = '尺寸检验_count_ok_full';
}else if(column.label=='准合格(B)'){
propert = '尺寸检验_缺陷_准合格(B)';
@ -454,53 +460,53 @@ export default {
propert = '尺寸检验_缺陷_圆准(B)';
}else if(column.label=='总合格数'){
propert = '尺寸检验_count_ok';
}else if(index == 23&&column.label=='检验数'){
}else if(index == 25&&column.label=='检验数'){
propert = '外观检验_count_real';
}else if(index==24&&column.label=='合格数'){
}else if(index==26&&column.label=='合格数'){
propert = '外观检验_count_ok_full';
}else if(index==26&&column.label=='划麻(返修)'){
}else if(index==28&&column.label=='划麻(返修)'){
propert = '外观检验_缺陷_划麻(返修)';
}else if(index==28&&column.label=='脏(返修)'){
}else if(index==30&&column.label=='脏(返修)'){
propert = '外观检验_缺陷_脏(返修)';
}else if(index==30&&column.label=='气泡'){
}else if(index==32&&column.label=='气泡'){
propert = '外观检验_缺陷_气泡';
}else if(index==32&&column.label=='浅气泡(B)'){
}else if(index==34&&column.label=='浅气泡(B)'){
propert = '外观检验_缺陷_浅气泡(B)';
}else if(index==33&&column.label=='黑圈变形'){
}else if(index==35&&column.label=='黑圈变形'){
propert = '外观检验_缺陷_黑圈变形';
}else if(index==34&&column.label=='黑圈缺口'){
}else if(index==36&&column.label=='黑圈缺口'){
propert = '外观检验_缺陷_黑圈缺口';
}else if(index==35&&column.label=='重水纹'){
}else if(index==37&&column.label=='重水纹'){
propert = '外观检验_缺陷_重水纹';
}else if(index==36&&column.label=='浅水纹(B)'){
}else if(index==38&&column.label=='浅水纹(B)'){
propert = '外观检验_缺陷_浅水纹(B)';
}else if(index==37&&column.label=='大崩'){
}else if(index==39&&column.label=='大崩'){
propert = '外观检验_缺陷_大崩';
}else if(index==38&&column.label=='小崩边(B)'){
}else if(index==40&&column.label=='小崩边(B)'){
propert = '外观检验_缺陷_小崩边(B)';
}else if(index==40&&column.label=='棕点'){
}else if(index==42&&column.label=='棕点'){
propert = '外观检验_缺陷_棕点';
}else if(index==41&&column.label=='浅划麻(B)'){
}else if(index==43&&column.label=='浅划麻(B)'){
propert = '外观检验_缺陷_浅划麻(B)';
}else if(index==42&&column.label=='双面划麻'){
}else if(index==44&&column.label=='双面划麻'){
propert = '外观检验_缺陷_双面划麻';
}else if(index==43&&column.label=='倒角'){
}else if(index==45&&column.label=='倒角'){
propert = '外观检验_缺陷_倒角';
}else if(index==44&&column.label=='棕圈'){
}else if(index==46&&column.label=='棕圈'){
propert = '外观检验_缺陷_棕圈';
}else if(index==45&&column.label=='蓝圈'){
}else if(index==47&&column.label=='蓝圈'){
propert = '外观检验_缺陷_蓝圈';
}else if(index==46&&column.label=='尺寸小'){
}else if(index==48&&column.label=='尺寸小'){
propert = '外观检验_缺陷_尺寸小';
}else if(index==47&&column.label=='破损'){
}else if(index==49&&column.label=='破损'){
propert = '外观检验_缺陷_破损';
}else if(index==48&&column.label=='发白'){
}else if(index==50&&column.label=='发白'){
propert = '外观检验_缺陷_发白';
}else if(index==49&&column.label=='漏光'){
}else if(index==51&&column.label=='漏光'){
propert = '外观检验_缺陷_漏光';
}else if(index == 50&&column.label=='返修数'){
}else if(index == 52&&column.label=='返修数'){
propert = '外观检验_返修_count_real';
}else if(index==51&&column.label=='合格数'){
}else if(index==53&&column.label=='合格数'){
propert = '外观检验_返修_count_ok_full';
}else if(column.label=='外观总合格数'){
propert = '外观检验_完全总合格数';
@ -522,38 +528,38 @@ export default {
}
}
if(index==4||index==6||index==8||index==10||index==17||index==21){
if(index==5||index==7||index==9||index==11||index==18||index==22){
if(sums[index-1]){
sums[index] = ((sums[index-1]/sums[2])*100).toFixed(4);
sums[index] = ((sums[index-1]/sums[3])*100).toFixed(4);
}else{
sums[index] = null;
}
}
if(index==25||index==27||index==29||index==31||index==39){
if(index==27||index==29||index==31||index==33||index==41){
if(sums[index-1]){
sums[index] = ((sums[index-1]/sums[23])*100).toFixed(4);
sums[index] = ((sums[index-1]/sums[25])*100).toFixed(4);
}else{
sums[index] = null;
}
}
if(index==52){
let sum = 0;
if(sums[24]){
sum += sums[24];
}
if(sums[51]){
sum += sums[51];
}
sums[index] = sum;
}
if(index==53){
if(sums[52]&&sums[23]){
sums[index] = ((sums[52]/sums[23])*100).toFixed(2);
}
}
if(index==54){
if(sums[53]&&sums[21]){
sums[index] = ((sums[53]*sums[21])/100).toFixed(2);
let sum = 0;
if(sums[25]){
sum += sums[25];
}
if(sums[53]){
sum += sums[53];
}
sums[index] = sum;
}
if(index==55){
if(sums[54]&&sums[25]){
sums[index] = ((sums[54]/sums[25])*100).toFixed(2);
}
}
if(index==56){
if(sums[55]&&sums[22]){
sums[index] = ((sums[55]*sums[22])/100).toFixed(2);
}
}
});

View File

@ -1,4 +1,47 @@
<template>
<el-header>
<div class="left-panel">
<el-select
v-model="query.workflow"
placeholder="审批流"
@change="handleQuery"
clearable
style="margin-left: 2px"
>
<el-option
v-for="item in wfOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
<el-select
v-model="query.script_run_last_result"
placeholder="任务执行状态"
@change="handleQuery"
clearable
style="margin-left: 2px"
>
<el-option
v-for="item in rsOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<el-date-picker
v-model="timeRange"
type="datetimerange"
range-separator="至"
start-placeholder="创建时间始"
end-placeholder="创建时间止"
style="margin-left: 2px"
value-format="YYYY-MM-DD HH:mm:ss"
@change="handleQuery"
clearable
/>
</div>
</el-header>
<el-container>
<el-main class="nopadding">
<scTable
@ -143,10 +186,34 @@ export default {
floeLogs: [],
ticketId: "",
limitedFlowLogs: false,
wfOptions: [],
rsOptions: [
{ value: true, label: "成功" },
{ value: false, label: "失败" },
],
query: {},
timeRange: [],
};
},
mounted() {},
mounted() {
this.getWfOptions();
},
methods: {
getWfOptions() {
this.$API.wf.workflow.list.req({ page: 0 }).then((res) => {
this.wfOptions = res;
});
},
handleQuery() {
if (this.timeRange) {
this.query.start_create = this.timeRange[0];
this.query.end_create = this.timeRange[1];
} else {
this.query.end_create = null;
this.query.start_create = null;
}
this.$refs.table.queryData(this.query);
},
//
handleDetail(row) {
let cateType = row.workflow_.key;

235
src/views/wf/myticket.vue Normal file
View File

@ -0,0 +1,235 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<el-segmented
v-model="tvalue"
:options="Object.keys(toptions)"
size="default"
@change="params.category = toptions[tvalue]; handleQuery()"
></el-segmented>
<el-select
v-model="query.workflow"
placeholder="审批流"
@change="handleQuery"
clearable
style="margin-left: 2px"
>
<el-option
v-for="item in wfOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
<el-select
v-model="query.script_run_last_result"
placeholder="执行状态"
@change="handleQuery"
clearable
style="margin-left: 2px; width:100px"
>
<el-option
v-for="item in rsOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<el-date-picker
v-model="timeRange"
type="datetimerange"
range-separator="至"
start-placeholder="创建时间始"
end-placeholder="创建时间止"
style="margin-left: 2px"
value-format="YYYY-MM-DD HH:mm:ss"
@change="handleQuery"
clearable
/>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
:apiObj="apiObj"
:params="params"
row-key="id"
stripe
highlightCurrentRow
>
<el-table-column
label="流水号"
prop="sn"
width="180"
>
<template #default="scope">
<el-link
@click="handleShow(scope.row)" type="primary"
>{{ scope.row.sn }}</el-link>
</template>
</el-table-column>
<el-table-column
label="工单标题"
prop="title"
min-width="180"
:show-overflow-tooltip="true"
></el-table-column>
<el-table-column label="工作流" prop="title" width="160">
<template #default="scope">
{{ scope.row.workflow_.name }}
</template>
</el-table-column>
<el-table-column label="所在节点" width="160">
<template #default="scope">
{{ scope.row.state_.name }}
</template>
</el-table-column>
<el-table-column label="进行状态" prop="sort" width="120">
<template #default="scope">
<el-tag :type="actStateEnum[scope.row.act_state]?.type">
{{ actStateEnum[scope.row.act_state]?.text }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="可处理人" :show-overflow-tooltip="true" min-width="160">
<template #default="scope">
<span
v-if="
scope.row.participant_type == 2 ||
scope.row.participant_type == 1
"
>
<span
v-for="item in scope.row.participant_"
:key="item.id"
>{{ item.name }}/</span
>
</span>
<span v-else> </span>
</template>
</el-table-column>
<el-table-column
label="创建时间"
prop="create_time"
width="150"
></el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="80">
<template #default="scope">
<el-button
type="danger"
size="small"
@click="reStart(scope.row)"
v-if="scope.row.script_run_last_result == false"
>重试</el-button
>
</template>
</el-table-column>
</scTable>
</el-main>
<el-drawer v-model="drawer" size="90%" :show-close="false">
<template #header="{ close, titleId, titleClass }">
<h4 :id="titleId" :class="titleClass">工单详情</h4>
<el-button type="danger" @click="close">关闭</el-button>
</template>
<component :is="currentComponent" :ticketId="ticketId" :t_id="t_id" @closed="drawer = false"
@success="()=>{drawer = false; $refs.table.refresh()}"></component>
</el-drawer>
</el-container>
</template>
<script>
import { defineAsyncComponent, markRaw } from 'vue'; //
import { actStateEnum, interveneTypeEnum } from "@/utils/enum.js";
export default {
name: "myticket",
data() {
return {
actStateEnum, interveneTypeEnum,
drawer: false,
tvalue: "待办",
toptions: {
"待办": "duty",
"我的": "owner",
"已处理": "worked",
"抄送我": "cc"
},
query: {},
timeRange: [],
list: [],
apiObj: null,
params: { category: "duty" },
act_states: {
0: "草稿中",
1: "进行中",
2: "被退回",
3: "被撤回",
4: "已完成",
5: "已关闭",
},
participant_: {
0: "无处理人",
1: "单人",
2: "多人",
},
rsOptions: [
{ value: true, label: "成功" },
{ value: false, label: "失败" },
],
wfOptions: [],
currentComponent: null,
ticketId: null,
t_id: null,
};
},
mounted() {
let category = this.$route.query.category
if (category) {
this.tvalue = category == "duty" ? "待办" : category == "owner" ? "我的" : category == "worked" ? "已处理" : category == "cc" ? "抄送我" : "待办"
this.params.category = category
this.apiObj = this.$API.wf.ticket.list
} else {
this.tvalue = "待办"
this.params.category = "duty"
this.apiObj = this.$API.wf.ticket.list
}
this.getWfOptions();
},
methods: {
getWfOptions() {
this.$API.wf.workflow.list.req({ page: 0 }).then((res) => {
this.wfOptions = res;
});
},
reStart(row) {
this.$API.wf.ticket.retryScript.req(row.id).then((res) => {
this.$message.success("任务执行下发成功");
row.script_run_last_result = true;
});
},
handleQuery() {
if (this.timeRange) {
this.query.start_create = this.timeRange[0];
this.query.end_create = this.timeRange[1];
} else {
this.query.end_create = null;
this.query.start_create = null;
}
this.$refs.table.queryData(this.query);
},
handleShow(row) {
this.drawer = true;
this.ticketId = row.id;
this.t_id = row.ticket_data.t_id;
const viewPath = row.workflow_.view_path;
// import
this.currentComponent = markRaw(
defineAsyncComponent(() => import(`@/views${viewPath}.vue`))
);
},
},
};
</script>
<style scoped></style>

View File

@ -1,5 +1,48 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<el-select
v-model="query.workflow"
placeholder="审批流"
@change="handleQuery"
clearable
style="margin-left: 2px"
>
<el-option
v-for="item in wfOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
<el-select
v-model="query.script_run_last_result"
placeholder="任务执行状态"
@change="handleQuery"
clearable
style="margin-left: 2px"
>
<el-option
v-for="item in rsOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<el-date-picker
v-model="timeRange"
type="datetimerange"
range-separator="至"
start-placeholder="创建时间始"
end-placeholder="创建时间止"
style="margin-left: 2px"
value-format="YYYY-MM-DD HH:mm:ss"
@change="handleQuery"
clearable
/>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
@ -154,10 +197,34 @@ export default {
handleTitle: "撤回工单",
ticketId: null,
limitedRetreat: false,
wfOptions: [],
rsOptions: [
{ value: true, label: "成功" },
{ value: false, label: "失败" },
],
query: {},
timeRange: [],
};
},
mounted() {},
mounted() {
this.getWfOptions();
},
methods: {
getWfOptions() {
this.$API.wf.workflow.list.req({ page: 0 }).then((res) => {
this.wfOptions = res;
});
},
handleQuery() {
if (this.timeRange) {
this.query.start_create = this.timeRange[0];
this.query.end_create = this.timeRange[1];
} else {
this.query.end_create = null;
this.query.start_create = null;
}
this.$refs.table.queryData(this.query);
},
handleShow(row) {
let cateType = row.workflow_.key;
let projectId = null;

183
src/views/wf/ticketd.vue Normal file
View File

@ -0,0 +1,183 @@
<template>
<el-collapse v-model="activeNames" style="padding-left: 2px; padding-right: 2px;">
<el-collapse-item title="基本信息" name="1">
<el-descriptions :column="1">
<el-descriptions-item>
<span style="color:darkblue;margin-right: 4px;">({{ ticketDetail.sn }})</span>{{ ticketDetail.title
}}
</el-descriptions-item>
<el-descriptions-item label="当前:">
<el-tag type="info" effect="plain">{{ ticketDetail.state_.name }}</el-tag>
<el-tag :type="actStateEnum[ticketDetail.act_state]?.type" effect="plain">
{{ actStateEnum[ticketDetail.act_state]?.text }}
</el-tag>
</el-descriptions-item>
<el-descriptions-item label="可处理人:"
v-if="ticketDetail.participant_type == 2 || ticketDetail.participant_type == 1">
<span v-for="item in ticketDetail.participant_" :key="item.id">{{ item.name }}/</span>
</el-descriptions-item>
</el-descriptions>
</el-collapse-item>
<el-collapse-item title="操作" name="2" v-if="actionShow">
<el-input type="textarea" :rows="2" v-model="handleForm.suggestion" placeholder="处理意见" />
<el-row>
<el-col :xs="24" :md="12" style="padding: 1px">
<el-button :loading="submitLoading" :disabled="submitLoading" v-for="item in transitions"
:key="item.id" size="small" :type="item.attribute_type === 2 ? 'danger' : 'primary'
" @click="handleTransition(item.id)">
{{ item.name }}
</el-button>
</el-col>
<el-col :xs="24" :md="12" style="text-align: right;padding: 1px">
<el-button v-if="ticketDetail.state_.enable_retreat && isOwn" type="danger" size="small"
@click="handleRetreat">撤回</el-button>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="审批历史" name="3">
<div style="padding:1px"><el-timeline>
<el-timeline-item v-for="item in ticketLog" :key="item.id" :timestamp="item.create_time"
:color="getColor(item)">
<div>
<strong>{{ item.state_?.name || "未知状态" }}</strong>
</div>
<div>
<span v-if="item.intervene_type != 0"><el-tag
:type="interveneTypeEnum[item.intervene_type]?.type" effect="plain">
{{ interveneTypeEnum[item.intervene_type]?.text }}
</el-tag></span>
<span v-if="item.transition_"
:style="{ color: item.transition_.attribute_type === 1 ? '#67C23A' : '#F56C6C' }">
{{ item.transition_.name }}
</span>
<span v-if="item.participant_">-{{ item.participant_.name }}</span>
</div>
<div v-if="item.suggestion">
<el-tooltip v-if="item.suggestion.length > 20" class="box-item" effect="dark"
:content="item.suggestion" placement="top">
<span>{{ item.suggestion.slice(0, 20) + "..." }}</span>
</el-tooltip>
<span v-else>
{{ item.suggestion }}
</span>
</div>
</el-timeline-item>
</el-timeline></div>
</el-collapse-item>
</el-collapse>
</template>
<script setup>
import { ref, defineProps, onMounted } from "vue";
import { actStateEnum, interveneTypeEnum } from "@/utils/enum.js";
import API from '@/api';
import TOOL from "@/utils/tool.js";
import { ElMessageBox } from 'element-plus'
const props = defineProps({
ticketId: { type: String, required: true, default: null },
ticket_data: { type: Object, default: null },
});
const currentUser = ref(TOOL.data.get("USER_INFO").id)
const actionShow = ref(false);
const isOwn = ref(false);
const activeNames = ref(['1', '3']);
const ticketDetail = ref({
state_: {}
});
const ticketLog = ref([]);
const handleForm = ref({
suggestion: ""
})
onMounted(() => {
console.log(props)
if (props.ticketId) {
getTicketDetail();
getTicketLog();
}
});
const emit = defineEmits(['success']);
const refreshTicket = async () => {
actionShow.value = false
isOwn.value = false
transitions.value = []
handleForm.value.suggestion = ''
ticketLog.value = []
activeNames.value = ['1', '3'] //
getTicketDetail()
getTicketLog()
emit('success')
}
const getTicketDetail = () => {
API.wf.ticket.ticketItem.req(props.ticketId).then(res => {
ticketDetail.value = res;
if (res.create_by === currentUser.value) {
isOwn.value = true;
actionShow.value = true;
if (!activeNames.value.includes('2')) activeNames.value.push('2')
}
if (res.participant_type == 1 && res.participant === currentUser.value) {
actionShow.value = true;
if (!activeNames.value.includes('2')) activeNames.value.push('2')
getTransitions();
}
if (res.participant_type == 2 && res.participant.includes(currentUser.value)) {
actionShow.value = true;
if (!activeNames.value.includes('2')) activeNames.value.push('2')
getTransitions();
}
});
};
const getTransitions = () => {
API.wf.ticket.ticketTransitions.req(props.ticketId).then(res => {
transitions.value = res;
});
}
const getTicketLog = () => {
API.wf.ticket.ticketFlowlogs.req(props.ticketId).then(res => {
ticketLog.value = res;
})
}
function getColor(item) {
if (item.transition_?.attribute_type === 1) return "#67C23A"; // 绿
if (item.transition_?.attribute_type === 2) return "#F56C6C"; //
return "#909399"; //
}
const handleRetreat = () => {
ElMessageBox.confirm("确认撤回吗?", "温馨提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
API.wf.ticket.ticketRetreat
.req(props.ticketId, handleForm.value)
.then((res) => {
refreshTicket();
});
})
}
const submitLoading = ref(false);
const transitions = ref([]);
const handleTransition = (transitionId) => {
let params = new Object();
params.transition = transitionId;
if (props.ticket_data) {
params.ticket_data = props.ticket_data;
} else {
params.ticket_data = {};
}
params.suggestion = handleForm.value.suggestion;
submitLoading.value = true;
API.wf.ticket.ticketHandle.req(props.ticketId, params).then((res) => {
submitLoading.value = false;
refreshTicket();
}).catch((e) => {
submitLoading.value = false;
});
}
</script>

View File

@ -0,0 +1,98 @@
<template>
<el-button
v-for="item in transitions"
:key="item.id"
type="primary"
:loading="isSaveing"
:disabled="isSaveing"
@click="submit(item.id)"
style="margin-right: 2px"
>{{ item.name }}</el-button>
</template>
<script setup>
import { ref, reactive, onMounted, defineEmits } from 'vue'
import { ElMessage } from 'element-plus'
import API from '@/api';
const props = defineProps({
workflow_key: {type: String, default: null, required: false},
ticketId: {type: String, default: null, required: false},
t_id: {type: String, default: null, required: true},
title: {type: String, default: null, required: false},
submit_b_func: {type: Function, default: null, required: false},
ticket_data: {type: Object, default: null, required: false},
})
const workflow = ref(null);
const transitions = ref([]);
onMounted(async () => {
init()
})
const init = async () => {
if (props.ticketId != null && props.ticketId != undefined) {
API.wf.ticket.ticketTransitions.req(props.ticketId).then(res => {
transitions.value = res;
console.log("res", res)
});
}else if (props.workflow_key !=null && props.workflow_key != undefined) {
let res = await API.wf.workflow.initkey.req(props.workflow_key);
transitions.value = res.transitions;
workflow.value = res.workflow
}else{
ElMessage.error("缺少workflow_key或ticketId");
}
}
const isSaveing = ref(false);
const emit = defineEmits(["success"]);
const submit = async (transition_id) => {
isSaveing.value = true;
if (props.submit_b_func) {
await props.submit_b_func();
}
if (props.ticketId != null && props.ticketId != undefined) {
let params = new Object();
params.transition = transition_id;
if (props.ticket_data) {
params.ticket_data = props.ticket_data;
}else{
params.ticket_data = {};
}
try{
let res = await API.wf.ticket.ticketHandle.req(props.ticketId, params);
isSaveing.value = false;
ElMessage.success("提交成功");
emit("success", props.ticketId)
} catch (e) {
isSaveing.value = false;
return;
}
} else {
let ticket = {};
ticket.title = props.title;
ticket.workflow = workflow.value;
if (props.t_id != null && props.t_id != undefined) {
ticket.ticket_data = {
t_id: props.t_id,
};
} else {
ElMessage.error("缺少t_id");
isSaveing.value = false;
return;
}
ticket.transition = transition_id;
try {
let res = await API.wf.ticket.create.req(ticket);
isSaveing.value = false;
ElMessage.success("提交成功");
emit("success", res.id)
} catch (e) {
isSaveing.value = false;
return;
}
}
}
</script>

View File

@ -0,0 +1,21 @@
<template>
<el-container>
<el-main class="nopadding">
</el-main>
<el-aside width="30%">
<ticketd :ticketId="props.ticketId"></ticketd>
</el-aside>
</el-container>
</template>
<script setup>
import { ref, defineProps, onMounted} from "vue";
import ticketd from './ticketd.vue'
import API from '@/api'
const props = defineProps({
ticketId: { type: String, required: false, default: null }
});
onMounted(() => {
})
</script>

View File

@ -1,5 +1,48 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<el-select
v-model="query.workflow"
placeholder="审批流"
@change="handleQuery"
clearable
style="margin-left: 2px"
>
<el-option
v-for="item in wfOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
<el-select
v-model="query.script_run_last_result"
placeholder="任务执行状态"
@change="handleQuery"
clearable
style="margin-left: 2px"
>
<el-option
v-for="item in rsOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<el-date-picker
v-model="timeRange"
type="datetimerange"
range-separator="至"
start-placeholder="创建时间始"
end-placeholder="创建时间止"
style="margin-left: 2px"
value-format="YYYY-MM-DD HH:mm:ss"
@change="handleQuery"
clearable
/>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
@ -116,10 +159,34 @@ export default {
1: "个人",
2: "多人",
},
wfOptions: [],
rsOptions: [
{ value: true, label: "成功" },
{ value: false, label: "失败" },
],
query: {},
timeRange: [],
};
},
mounted() {},
mounted() {
this.getWfOptions();
},
methods: {
getWfOptions() {
this.$API.wf.workflow.list.req({ page: 0 }).then((res) => {
this.wfOptions = res;
});
},
handleQuery() {
if (this.timeRange) {
this.query.start_create = this.timeRange[0];
this.query.end_create = this.timeRange[1];
} else {
this.query.end_create = null;
this.query.start_create = null;
}
this.$refs.table.queryData(this.query);
},
handleShow(row) {
let cateType = row.workflow_.key;
let projectId = null;

View File

@ -28,18 +28,28 @@
<el-main class="nopadding">
<scTable ref="table" :apiObj="apiObj" row-key="id">
<el-table-column label="#" type="index"></el-table-column>
<el-table-column label="ID" prop="id" min-width="150"></el-table-column>
<el-table-column label="ID" prop="id" width="160"></el-table-column>
<el-table-column
label="工作流名称"
prop="name"
min-width="200"
width="220"
></el-table-column>
<el-table-column
label="标识"
prop="key"
min-width="100"
width="160"
></el-table-column>
<el-table-column
label="流水前缀"
prop="sn_prefix"
width="80">
</el-table-column>
<el-table-column
label="页面路径"
prop="view_path"
min-width="150">
</el-table-column>
<!-- <el-table-column
label="工单查看权限校验"
prop="view_permission_check"
min-width="120"
@ -48,7 +58,7 @@
<span v-if="scope.row.view_permission_check"></span>
<span v-else></span>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column
label="工作流描述"
prop="description"
@ -57,7 +67,7 @@
<el-table-column
label="创建时间"
prop="create_time"
min-width="150"
width="140"
></el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="250">
<template #default="scope">
@ -149,6 +159,9 @@
:props="{ key: 'id', label: 'field_name' }"
/>
</el-form-item>
<el-form-item label="页面地址">
<el-input v-model="addForm.view_path" clearable></el-input>
</el-form-item>
<el-form-item label="标题模板">
<el-input v-model="addForm.title_template" clearable></el-input>
</el-form-item>

View File

@ -72,7 +72,7 @@
<div style="padding-left: 50px">
<div v-if="props.row.new_batch&&props.row.new_batch!= null" style="font-size: 14px;">新批次号{{ props.row.new_batch }}</div>
<template v-for="item in props.row.handoverb" :key="item.id">
<el-descriptions :column="3">
<el-descriptions :column="3" style="margin-top: 10px;">
<el-descriptions-item label="批次">
{{item.batch}}
</el-descriptions-item>
@ -83,9 +83,7 @@
{{item.defect_name}}
</el-descriptions-item>
</el-descriptions>
<!-- {{ item }} -->
<!-- {{ item.handoverbw }} -->
<div v-if="item.handoverbw&&item.handoverbw.length>0">
<div v-if="item.handoverbw&&item.handoverbw.length>0" style="margin-top: -10px;">
板段号:<span v-for="bwItem in item.handoverbw" :key="bwItem.id">{{ bwItem.number }}</span>
</div>
</template>
@ -103,15 +101,6 @@
</template>
</el-table-column>
<el-table-column label="数量" prop="count" min-width="80"></el-table-column>
<!-- <el-table-column label="交接类别" prop="type" width="80">
<template #default="scope">
<el-tag v-if="scope.row.type == 10" type="success">正常</el-tag>
<el-tag v-if="scope.row.type == 20" type="warning">返工</el-tag>
<el-tag v-if="scope.row.type == 30" type="primary">检验</el-tag>
<el-tag v-if="scope.row.type == 40" type="danger">报废</el-tag>
<el-tag v-if="scope.row.type == 60" type="warning">退料</el-tag>
</template>
</el-table-column> -->
<el-table-column label="交接类型" prop="type" min-width="80">
<template #default="scope">
<el-tag v-if="scope.row.type == 10&&scope.row.mtype == 10" type="success">正常</el-tag>
@ -125,11 +114,7 @@
<el-text v-if="scope.row.recive_mgroup == mgroupId" type="success">接收</el-text>
</template>
</el-table-column>
<el-table-column label="交接工段" min-width="80">
<template #default="scope">
<el-text v-if="scope.row.send_mgroup == mgroupId">{{scope.row.send_mgroup_name}}</el-text>
<el-text v-if="scope.row.recive_mgroup == mgroupId">{{scope.row.recive_mgroup_name}}</el-text>
</template>
<el-table-column label="接收工段" min-width="80" prop="recive_mgroup_name">
</el-table-column>
<el-table-column
label="交送人"

View File

@ -1,6 +1,6 @@
<template>
<el-dialog
:title="titleMap[mode]"
:title="titleMap[mode+type]"
v-model="visible"
width="1000px"
:size="1000"
@ -17,8 +17,10 @@
<el-form-item label="交接物料">
<el-button type="primary" @click="addMaterial" v-if="mode!=='show'">手动添加</el-button>
<el-input ref="codeInput"
id="wm_in"
placeholder="扫描交接物料"
v-model="wm_in" clearable
:disabled="imputDisable"
@change="formWminChange(wm_in)"
style="width: 300px;margin-left: 10px;"
></el-input>
@ -189,7 +191,7 @@
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="更改批次">
<el-switch v-model="change_batch"></el-switch>
<el-switch v-model="change_batch" :disabled="type==50"></el-switch>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="type==50">
@ -253,8 +255,14 @@ export default {
loading: false,
mode: "add",
titleMap: {
add: "新增交接记录",
edit: "编辑交接记录",
add10: "新增交接记录",
add20: "新增返工记录",
add40: "新增废品入库",
add50: "新增改版记录",
edit10: "编辑交接记录",
edit20: "编辑返工记录",
edit40: "编辑废品入库",
edit50: "编辑改版记录",
show: "查看交接记录",
},
lists:[],//
@ -344,6 +352,7 @@ export default {
bwVisible:false,
scanVisible:false,
isSaveing: false,
imputDisable:false,
change_batch:false,
setFiltersVisible: false,
};
@ -351,6 +360,9 @@ export default {
mounted() {
let that = this;
that.form.type = that.type;
if(that.type==50){
that.change_batch = true;
}
let materialObj = that.$TOOL.data.get("MATERIAL_OBJECT");
that.materialObj = materialObj;
that.form.handle_date =that.form.send_date =this.$TOOL.dateFormat2(new Date());
@ -381,8 +393,6 @@ export default {
}
}else if(that.type==40){//
that.getMaterialNotok();
}else if(that.type==60){
}
that.getMgroupOptions();
},
@ -586,6 +596,7 @@ export default {
data = that.materialOptions.filter((item) => {
return that.selectItems.indexOf(item.id)>-1;
});
that.form.new_batch = data[0].batch+'g';
let materialId = data[0].material;
if(that.type==50){}else{
let params = {
@ -733,69 +744,74 @@ export default {
let that = this;
that.scanVisible = true;
},
formWminChange(data){
async formWminChange(data){
this.imputDisable = true;
await this.getInputText(data);
this.imputDisable = false;
this.$refs.codeInput.focus();
},
async getInputText(data){
if(data==''){
return;
}
let that = this;
that.wm_in = '';
if(data.indexOf('#')>-1){
let id = data.split('#')[1];
this.$API.cm.labelmat.item.req(id).then((res) => {
let arr = [];
if(that.form.handoverb&&that.form.handoverb.length>0){
that.form.handoverb.forEach((item) => {
if(item.batch == res.batch&&item.state==res.state&&item.defect==res.defect){
arr.push(item);
}
})
}
if(arr.length>0){
that.wm_in = "";
that.$message.error("该批次已存在")
}else{
let hasArr = [];
that.materialOptions.forEach((item) => {
if(item.batch == res.batch){
hasArr.push(item);
let params = {material: item.material,type: that.type};
that.$API.wpm.handover.mgroups.req(params).then((res0) => {
that.mgroupOptions = res0;
if(res0.length==1){
that.form.recive_mgroup = res0[0].id;
that.getUserList2();
}
})
let obj = {};
obj.wm = item.id;
obj.batch = item.batch;
if(item.material_.process_name){
obj.process = item.material_.process_name;
}
obj.count_cando = item.count_canhandover;
obj.count = item.count_canhandover;
obj.state = res.state;
obj.defect = res.defect;
obj.handoverbw = [];
that.$API.wpm.wpr.list.req({wm:item.id,page:0}).then((res) => {
let handoverbw = [];
let list = res;
list.forEach(item1=>{
let obj1 = {};
obj1.wpr = item1.id;
obj1.number = item1.number;
handoverbw.push(obj1);
})
obj.handoverbw = handoverbw;
that.form.handoverb.push(obj);
that.wm_in = "";
})
}
})
if(hasArr.length>0){}else{
that.$message.error("该批次不存在")
let res = await this.$API.cm.labelmat.item.req(id);
let arr = [];
if(that.form.handoverb&&that.form.handoverb.length>0){
that.form.handoverb.forEach((item) => {
if(item.batch == res.batch&&item.state==res.state&&item.defect==res.defect){
arr.push(item);
}
})
}
if(arr.length>0){
that.$message.error("该批次已存在")
}else{
let hasArr = [];
that.materialOptions.forEach((item) => {
if(item.batch == res.batch){
that.form.new_batch = res.batch+'g';
hasArr.push(item);
let params = {material: item.material,type: that.type};
that.$API.wpm.handover.mgroups.req(params).then((res0) => {
that.mgroupOptions = res0;
if(res0.length==1){
that.form.recive_mgroup = res0[0].id;
that.getUserList2();
}
})
let obj = {};
obj.wm = item.id;
obj.batch = item.batch;
if(item.material_.process_name){
obj.process = item.material_.process_name;
}
obj.count_cando = item.count_canhandover;
obj.count = item.count_canhandover;
obj.state = res.state;
obj.defect = res.defect;
obj.handoverbw = [];
that.$API.wpm.wpr.list.req({wm:item.id,page:0}).then((res) => {
let handoverbw = [];
let list = res;
list.forEach(item1=>{
let obj1 = {};
obj1.wpr = item1.id;
obj1.number = item1.number;
handoverbw.push(obj1);
})
obj.handoverbw = handoverbw;
that.form.handoverb.push(obj);
})
}
})
if(hasArr.length>0){}else{
that.$message.error("该批次不存在")
}
})
}
}else{//wprnumber
let arr = [];
arr = that.materialOptions.filter((item) => {
@ -809,9 +825,9 @@ export default {
})
}
if(arr2.length>0){
that.wm_in = "";
that.$message.error("该批次已存在")
}else{
that.form.new_batch = arr[0].batch+'g';
let params = {material: arr[0].material,type: that.type};
that.$API.wpm.handover.mgroups.req(params).then((res0) => {
that.mgroupOptions = res0;
@ -825,80 +841,77 @@ export default {
obj2.count_cando = arr[0].count_canhandover;
obj2.count = arr[0].count_canhandover;
that.form.handoverb.push(obj2);
that.wm_in = "";
}
}else{//
that.$API.wpm.wpr.list.req({number:data,page:0}).then((res) => {
if(res.length>0){
let indexs = 0,arr =[];
if( that.form.handoverb&&that.form.handoverb.length>0){
arr = that.form.handoverb.filter((item,index) => {
let res = await that.$API.wpm.wpr.list.req({number:data,page:0});
if(res.length>0){
let indexs = 0,arr =[];
if( that.form.handoverb&&that.form.handoverb.length>0){
that.form.handoverb.forEach((item,index) => {
if(item.wm == res[0].wm){
indexs = index;
return item.wm == res[0].wm;
arr.push(item);
}
})
}
//handoverb
if(arr.length>0){
//wprwpr
if(that.form.handoverb[indexs].handoverbw&&that.form.handoverb[indexs].handoverbw.length>0){
let arr1 = [];
arr1 = that.form.handoverb[indexs].handoverbw.filter((item1) => {
return item1.wpr == res[0].id;
})
}
//handoverb
if(arr.length>0){
//wprwpr
if(that.form.handoverb[indexs].handoverbw&&that.form.handoverb[indexs].handoverbw.length>0){
let arr1 = [];
arr1 = that.form.handoverb[indexs].handoverbw.filter((item1) => {
return item1.wpr == res[0].id;
})
if(arr1.length>0){
that.wm_in = "";
that.$message.error("该物料已存在");
}else{
let obj1 = {};
obj1.wpr = res[0].id;
obj1.number = res[0].number;
that.form.handoverb[indexs].count+=1;
that.form.handoverb[indexs].handoverbw.push(obj1);
that.wm_in = "";
}
if(arr1.length>0){
that.$message.error("该物料已存在");
}else{
that.form.handoverb[indexs].handoverbw = [];
let obj1 = {};
obj1.wpr = res[0].id;
obj1.number = res[0].number;
that.form.handoverb[indexs].count=1;
that.form.handoverb[indexs].count+=1;
that.form.handoverb[indexs].handoverbw.push(obj1);
that.wm_in = "";
}
}else{//handoverb
that.materialOptions.forEach((item) => {
if(item.id == res[0].wm){
let params = {material: item.material,type: that.type};
that.$API.wpm.handover.mgroups.req(params).then((res1) => {
that.mgroupOptions = res1;
})
let obj2 = {};
obj2.wm = item.id;
obj2.batch = item.batch;
if(item.material_.process_name){
obj2.process = item.material_.process_name;
}
obj2.count_cando = item.count_canhandover;
obj2.handoverbw = [];
obj2.count = 1;
let obj3 = {};
obj3.wpr = res[0].id;
obj3.number = res[0].number;
obj2.handoverbw.push(obj3);
// that.form.handoverb = [];
that.form.handoverb.push(obj2);
}
})
that.wm_in = "";
}else{
that.form.handoverb[indexs].handoverbw = [];
let obj1 = {};
obj1.wpr = res[0].id;
obj1.number = res[0].number;
that.form.handoverb[indexs].count=1;
that.form.handoverb[indexs].handoverbw.push(obj1);
}
}else{
that.wm_in = "";
that.$message.error("该批次不存在")
}else{//handoverb
that.materialOptions.forEach((item) => {
if(item.id == res[0].wm){
that.form.new_batch = item.batch+'g';
let params = {material: item.material,type: that.type};
that.$API.wpm.handover.mgroups.req(params).then((res1) => {
that.mgroupOptions = res1;
})
let obj2 = {};
obj2.wm = item.id;
obj2.batch = item.batch;
if(item.material_.process_name){
obj2.process = item.material_.process_name;
}
obj2.count_cando = item.count_canhandover;
obj2.handoverbw = [];
obj2.count = 1;
let obj3 = {};
obj3.wpr = res[0].id;
obj3.number = res[0].number;
obj2.handoverbw.push(obj3);
that.form.handoverb.push(obj2);
}
})
}
})
}else{
that.$message.error("该批次不存在")
}
}
}
this.countChange();
setTimeout(() => {
this.countChange();
}, 500);
},
},
};

View File

@ -7,6 +7,15 @@
<el-button type="primary" v-auth="'handover.create'" @click="batchConcat()">合批</el-button>
</div>
<div class="right-panel">
<el-switch
v-model="showWprList"
size="small"
class="demo-type asyncColorSwitch"
inactive-text="批次"
active-text="板段"
style="--el-switch-on-color: #67c23a; --el-switch-off-color: #0052d9"
@change="showWprListChange"
></el-switch>
<el-select
v-model="query.state"
placeholder="物料状态"
@ -36,6 +45,7 @@
</el-header>
<el-main class="nopadding">
<scTable
v-if="!showWprList"
ref="table"
:apiObj="apiObj"
row-key="id"
@ -54,7 +64,7 @@
<el-table-column
label="物料名称"
prop="material_name"
min-width="150"
min-width="160"
>
<template #default="scope">
{{ scope.row.material_name }}
@ -64,12 +74,12 @@
</template>
</el-table-column>
<el-table-column
label="物料已到工序"
label="已完成工序"
prop="material_name"
min-width="100"
min-width="70"
>
<template #default="scope">
{{ scope.row.material_name.split('|').at(-1) }}
<span v-if="scope.row.material_">{{ scope.row.material_.process_name}}</span>
</template>
</el-table-column>
<el-table-column
@ -83,7 +93,8 @@
min-width="150"
>
<template #default="scope">
<span @click="rowClick(scope.row)" style="color:#0052d9;font-weight: 600;cursor: pointer;">{{scope.row.batch}}</span>
<span v-if="route_code=='kaitaijiexiaopi'" @click="rowClick(scope.row)" style="color:#0052d9;font-weight: 600;cursor: pointer;">{{scope.row.batch}}</span>
<span v-else>{{scope.row.batch}}</span>
</template>
</el-table-column>
<el-table-column
@ -129,7 +140,7 @@
width="120"
>
<template #default="scope">
<el-link :underline="false" @click="printMaterial(scope.row)" type="primary">物料标签</el-link>
<el-link :underline="false" @click="printMaterial(scope.row,'wm')" type="primary">物料标签</el-link>
<el-link :underline="false" v-if="scope.row.material_&&scope.row.material_.tracking==10&&scope.row.state!==20" @click="tableCheckList(scope.row)" type="primary">检验记录</el-link>
<el-link
v-if="scope.row.material_&&scope.row.material_.tracking==10&&scope.row.state!==20"
@ -138,9 +149,76 @@
type="primary"
style="margin-left: 10px;"
>检验</el-link>
<el-link :underline="false" type="primary"
<!-- <el-link :underline="false" type="primary"
@click="handleWatch(scope.row)"
>流程图</el-link>
>流程图</el-link> -->
</template>
</el-table-column>
</scTable>
<scTable
ref="table"
:apiObj="apiObj"
row-key="id"
:params="params"
:query="query"
v-if="showWprList"
@selection-change="selectionChange"
>
<el-table-column type="selection" width="50"></el-table-column>
<el-table-column label="状态" prop="state" width="80" >
<template #default="scope">
<el-tag :type="wmState[scope.row.state]?.type">
{{wmState[scope.row.state]?.text}}
</el-tag>
</template>
</el-table-column>
<el-table-column
label="物料名称"
prop="material_name"
min-width="120"
>
<template #default="scope">
{{ scope.row.material_name }}
<span v-if="scope.row.material_origin != null">
{{ scope.row.material_origin_name }}
</span>
</template>
</el-table-column>
<el-table-column label="物料编号" prop="number"></el-table-column>
<el-table-column
label="批次号"
prop="wm_batch"
min-width="150"
></el-table-column>
<el-table-column
label="已完成工序"
prop="material_name"
min-width="100"
>
<template #default="scope">
{{ scope.row.process_name }}
</template>
</el-table-column>
<el-table-column label="不合格标记" prop="wprdefect">
<template #default="scope">
<span v-for="item in scope.row.wprdefect" :key="item.id">
{{ item.defect_name }}
</span>
</template>
</el-table-column>
<el-table-column
label="创建时间"
prop="create_time"
width="150"
></el-table-column>
<el-table-column
label="操作"
fixed="right"
align="center"
width="120"
>
<template #default="scope">
<el-link :underline="false" @click="printMaterial(scope.row,'wpr')" type="primary">物料标签</el-link>
</template>
</el-table-column>
</scTable>
@ -272,7 +350,6 @@ export default {
params: {
tag : 'todo',
mgroupx: "",
belong_dept:''
},
wmtype:0,
query: {
@ -309,6 +386,7 @@ export default {
wmMaterial:'',
cate_type:'',
materialType: "wm",
showWprList: false,
limitedWatch:false,
materialsVisible:false,
visibleDrawer: false,
@ -331,6 +409,15 @@ export default {
that.apiObj = that.$API.wpm.wmaterial.list;
},
methods: {
showWprListChange(){
let that = this;
that.apiObj = null;
if(that.showWprList){
that.apiObj = that.$API.wpm.wpr.list;
}else{
that.apiObj = that.$API.wpm.wmaterial.list;
}
},
handleWatch(row) {
let that = this;
that.$API.wpm.batchlog.dag.req({batch:row.batch}).then((res) => {
@ -456,10 +543,11 @@ export default {
});
},
//
printMaterial(row){
printMaterial(row,type){
let that = this;
if(that.printer_name!==''&&that.printer_name!==null&&that.printer_name!==undefined){
let params = {};
if(type=='wm'){
let params = {};
params.tid = row.id;
let materialname = row.material_.name + '|' + row.material_.process_name;
let specification = row.material_.specification;
@ -516,6 +604,79 @@ export default {
});
})
}
}else if(type=='wpr'){
that.ofromBatch = row.wm_batch;
that.ofromName = row.wm_material_ofrom_name;
let params = {};
let name = row.material_name.split('|')[0];
if(that.route_code=='paiyicibang'||that.route_code=='kunbang'){
console.log('that.route_code',that.route_code);
console.log('that.ofromName',that.ofromName);
that.$API.mtm.route.list.req({material_out:row.material,page:0}).then((res) => {
let data = res[0].params_json;
data.number = row.number;
data.name=name;
data.ofrom_name=that.ofromName;
params.data = data;
if(that.route_code=='paiyicibang'){
params.label_template_name = '排一次棒单件打印模板';
}else{
params.label_template_name = '捆棒单件打印模板';
}
that.$API.cm.labeltemplate.commands.req(params).then((res) => {
let obj = {};
obj.printer_commands = res.commands;
obj.printer_name = that.printer_name;
that.$API.wpm.prints.req(obj).then((response) => {
that.$message.success("打印成功");
});
});
})
}else{
if(that.route_code=='paiban'||that.route_code=='zhuangmo'||that.route_code=='zlybcl'||that.route_code=='tuomoceliang'||
that.route_code=='reyatuihuo'||that.route_code=='banduangunyuan'||that.route_code=='banduangunyuanhoudama'||that.route_code=='banduangunyuantuihuo'
){
let oinfo = [];
for(let key in row.oinfo){
oinfo.push(row.oinfo[key])
}
let data = {sigao:'',duibian:'',moban:'',hengya:'',istest:'否',number:row.number,name:name,ofrom_name:that.ofromName,ofrom_batch:that.ofromBatch};
if(that.route_code=='zhuangmo'||that.route_code=='zlybcl'||that.route_code=='tuomoceliang'||that.route_code=='reyatuihuo'||that.route_code=='banduangunyuan'){
params.label_template_name = '脱膜测量单件标签模板';
}else{
params.label_template_name = '排扳单件打印模板';
}
if(oinfo.length>0){
oinfo.forEach((item)=>{
if(item.name=="丝高"){
data.sigao = item.val;
}else if(item.name=="横压"){
data.hengya = item.val;
}else if(item.name=="对边"){
data.duibian = item.val;
}else if(item.name=="模具号"){
data.moban = item.val;
}else if(item.name=="实验板段"){
data.istest = item.val?'是':'否';
}
})
}
params.data = data;
}else{
params.label_template_name = '单件打印模板';
params.data = {number:row.number,name:name};
}
that.$API.cm.labeltemplate.commands.req(params).then((res) => {
let obj = {};
obj.printer_commands = res.commands;
obj.printer_name = that.printer_name;
that.$API.wpm.prints.req(obj).then((response) => {
that.$message.success("打印成功");
});
});
}
}
}else{
that.$message.warning("请先设置打印机");
}

View File

@ -8,6 +8,15 @@
<el-button type="primary" @click="tomio('do_in')" v-auth="'mio.doin'">入库</el-button>
</div>
<div class="right-panel">
<el-switch
v-model="showWprList"
size="small"
class="demo-type asyncColorSwitch"
inactive-text="批次"
active-text="板段"
style="--el-switch-on-color: #67c23a; --el-switch-off-color: #0052d9"
@change="showWprListChange"
></el-switch>
<el-select
v-model="query.state"
placeholder="物料状态"
@ -51,6 +60,7 @@
</el-header>
<el-main class="nopadding">
<scTable
v-if="!showWprList"
ref="table"
:apiObj="apiObj"
row-key="id"
@ -59,7 +69,7 @@
@selection-change="selectionChange"
>
<el-table-column type="selection" width="50"></el-table-column>
<el-table-column label="状态" prop="state" width="100" >
<el-table-column label="状态" prop="state" width="80" >
<template #default="scope">
<el-tag :type="wmState[scope.row.state]?.type">
{{wmState[scope.row.state]?.text}}
@ -69,7 +79,7 @@
<el-table-column
label="物料名称"
prop="material_name"
min-width="120"
min-width="160"
>
<template #default="scope">
{{ scope.row.material_name }}
@ -79,12 +89,12 @@
</template>
</el-table-column>
<el-table-column
label="物料已到工序"
label="已完成工序"
prop="material_name"
min-width="100"
min-width="70"
>
<template #default="scope">
{{ scope.row.material_name.split('|').at(-1) }}
<span v-if="scope.row.material_">{{ scope.row.material_.process_name}}</span>
</template>
</el-table-column>
<el-table-column
@ -98,7 +108,8 @@
min-width="150"
>
<template #default="scope">
<span @click="rowClick(scope.row)" style="color:#0052d9;font-weight: 600;cursor: pointer;">{{scope.row.batch}}</span>
<span v-if="route_code=='kaitaijiexiaopi'" @click="rowClick(scope.row)" style="color:#0052d9;font-weight: 600;cursor: pointer;">{{scope.row.batch}}</span>
<span v-else>{{scope.row.batch}}</span>
</template>
</el-table-column>
<el-table-column
@ -153,9 +164,76 @@
type="primary"
style="margin-left: 10px;"
>检验</el-link>
<el-link :underline="false" type="primary"
<!-- <el-link :underline="false" type="primary"
@click="handleWatch(scope.row)"
>流程图</el-link>
>流程图</el-link> -->
</template>
</el-table-column>
</scTable>
<scTable
ref="table"
:apiObj="apiObj"
row-key="id"
:params="params"
:query="query"
v-if="showWprList"
@selection-change="selectionChange"
>
<el-table-column type="selection" width="50"></el-table-column>
<el-table-column label="状态" prop="state" width="80" >
<template #default="scope">
<el-tag :type="wmState[scope.row.state]?.type">
{{wmState[scope.row.state]?.text}}
</el-tag>
</template>
</el-table-column>
<el-table-column
label="物料名称"
prop="material_name"
min-width="120"
>
<template #default="scope">
{{ scope.row.material_name }}
<span v-if="scope.row.material_origin != null">
{{ scope.row.material_origin_name }}
</span>
</template>
</el-table-column>
<el-table-column label="物料编号" prop="number"></el-table-column>
<el-table-column
label="批次号"
prop="wm_batch"
min-width="150"
></el-table-column>
<el-table-column
label="已完成工序"
prop="material_name"
min-width="100"
>
<template #default="scope">
{{ scope.row.process_name }}
</template>
</el-table-column>
<el-table-column label="不合格标记" prop="wprdefect">
<template #default="scope">
<span v-for="item in scope.row.wprdefect" :key="item.id">
{{ item.defect_name }}
</span>
</template>
</el-table-column>
<el-table-column
label="创建时间"
prop="create_time"
width="150"
></el-table-column>
<el-table-column
label="操作"
fixed="right"
align="center"
width="120"
>
<template #default="scope">
<el-link :underline="false" @click="printMaterial(scope.row,'wpr')" type="primary">物料标签</el-link>
</template>
</el-table-column>
</scTable>
@ -286,7 +364,6 @@ export default {
params: {
tag : 'done',
mgroupx: "",
belong_dept:''
},
wmtype:0,
query: {
@ -325,6 +402,7 @@ export default {
wmMaterial:'',
cate_type:'',
materialType: "wm",
showWprList: false,
showBatch: false,
limitedWatch:false,
materialsVisible:false,
@ -356,6 +434,15 @@ export default {
that.defectOptions = res;
})
},
showWprListChange(){
let that = this;
that.apiObj = null;
if(that.showWprList){
that.apiObj = that.$API.wpm.wpr.list;
}else{
that.apiObj = that.$API.wpm.wmaterial.list;
}
},
handleWatch(row) {
let that = this;
that.$API.wpm.batchlog.dag.req({batch:row.batch}).then((res) => {
@ -491,7 +578,8 @@ export default {
printMaterial(row,type){
let that = this;
if(that.printer_name!==''&&that.printer_name!==null&&that.printer_name!==undefined){
let params = {};
if(type=='wm'){
let params = {};
params.tid = row.id;
let materialname = row.material_.name + '|' + row.material_.process_name;
let specification = row.material_.specification;
@ -562,6 +650,78 @@ export default {
});
})
}
}else if(type=='wpr'){
that.ofromBatch = row.wm_batch;
that.ofromName = row.wm_material_ofrom_name;
let params = {};
let name = row.material_name.split('|')[0];
if(that.route_code=='paiyicibang'||that.route_code=='kunbang'){
console.log('that.route_code',that.route_code);
console.log('that.ofromName',that.ofromName);
that.$API.mtm.route.list.req({material_out:row.material,page:0}).then((res) => {
let data = res[0].params_json;
data.number = row.number;
data.name=name;
data.ofrom_name=that.ofromName;
params.data = data;
if(that.route_code=='paiyicibang'){
params.label_template_name = '排一次棒单件打印模板';
}else{
params.label_template_name = '捆棒单件打印模板';
}
that.$API.cm.labeltemplate.commands.req(params).then((res) => {
let obj = {};
obj.printer_commands = res.commands;
obj.printer_name = that.printer_name;
that.$API.wpm.prints.req(obj).then((response) => {
that.$message.success("打印成功");
});
});
})
}else{
if(that.route_code=='paiban'||that.route_code=='zhuangmo'||that.route_code=='zlybcl'||that.route_code=='tuomoceliang'||
that.route_code=='reyatuihuo'||that.route_code=='banduangunyuan'||that.route_code=='banduangunyuanhoudama'||that.route_code=='banduangunyuantuihuo'
){
let oinfo = [];
for(let key in row.oinfo){
oinfo.push(row.oinfo[key])
}
let data = {sigao:'',duibian:'',moban:'',hengya:'',istest:'否',number:row.number,name:name,ofrom_name:that.ofromName,ofrom_batch:that.ofromBatch};
if(that.route_code=='zhuangmo'||that.route_code=='zlybcl'||that.route_code=='tuomoceliang'||that.route_code=='reyatuihuo'||that.route_code=='banduangunyuan'){
params.label_template_name = '脱膜测量单件标签模板';
}else{
params.label_template_name = '排扳单件打印模板';
}
if(oinfo.length>0){
oinfo.forEach((item)=>{
if(item.name=="丝高"){
data.sigao = item.val;
}else if(item.name=="横压"){
data.hengya = item.val;
}else if(item.name=="对边"){
data.duibian = item.val;
}else if(item.name=="模具号"){
data.moban = item.val;
}else if(item.name=="实验板段"){
data.istest = item.val?'是':'否';
}
})
}
params.data = data;
}else{
params.label_template_name = '单件打印模板';
params.data = {number:row.number,name:name};
}
that.$API.cm.labeltemplate.commands.req(params).then((res) => {
let obj = {};
obj.printer_commands = res.commands;
obj.printer_name = that.printer_name;
that.$API.wpm.prints.req(obj).then((response) => {
that.$message.success("打印成功");
});
});
}
}
}else{
that.$message.warning("请先设置打印机");
}
@ -578,4 +738,5 @@ export default {
},
};
</script>
<style scoped></style>
<style scoped>
</style>

View File

@ -1,12 +1,10 @@
<!-- 日志详情 mlog信息以及mlogb -->
<template>
<el-drawer
title="日志详情"
v-model="visible"
:size="'95%'"
destroy-on-close
@closed="$emit('closed')"
>
<el-drawer v-model="visible" :size="'95%'" :show-close="false">
<template #header>
<h4>日志详情</h4>
<el-button type="danger" @click="closedPage()">关闭</el-button>
</template>
<div>
<el-card style="width: 100%" header="基本信息" shadow="never">
<el-descriptions>
@ -19,35 +17,17 @@
</el-descriptions-item>
</el-descriptions>
<el-descriptions>
<el-descriptions-item label="工段名称">{{
mlogItem.mgroup_name
}}</el-descriptions-item>
<el-descriptions-item label="生产设备" v-if="mlogItem.equipment_name!==null">{{
mlogItem.equipment_name
}}</el-descriptions-item>
<el-descriptions-item label="部门/车间">{{
mlogItem.belong_dept_name
}}</el-descriptions-item>
<el-descriptions-item label="处理人">{{
mlogItem.handle_user_name
}}</el-descriptions-item>
<el-descriptions-item label="工段名称">{{mlogItem.mgroup_name}}</el-descriptions-item>
<el-descriptions-item label="生产设备" v-if="mlogItem.equipment_name!==null">{{mlogItem.equipment_name}}</el-descriptions-item>
<el-descriptions-item label="部门/车间">{{mlogItem.belong_dept_name}}</el-descriptions-item>
<el-descriptions-item label="处理人">{{mlogItem.handle_user_name}}</el-descriptions-item>
<template v-for="item in oinfo_json" :key="item">
<el-descriptions-item :label="item.key" >
{{item.value}}
</el-descriptions-item>
<el-descriptions-item :label="item.key" >{{item.value}}</el-descriptions-item>
</template>
<el-descriptions-item label="创建时间">{{
mlogItem.create_time
}}</el-descriptions-item>
<el-descriptions-item label="操作日期">{{
mlogItem.handle_date
}}</el-descriptions-item>
<el-descriptions-item label="开始时间">{{
mlogItem.work_start_time
}}</el-descriptions-item>
<el-descriptions-item label="结束时间">{{
mlogItem.work_end_time
}}</el-descriptions-item>
<el-descriptions-item label="创建时间">{{mlogItem.create_time}}</el-descriptions-item>
<el-descriptions-item label="操作日期">{{mlogItem.handle_date}}</el-descriptions-item>
<el-descriptions-item label="开始时间">{{mlogItem.work_start_time}}</el-descriptions-item>
<el-descriptions-item label="结束时间">{{mlogItem.work_end_time}}</el-descriptions-item>
<el-descriptions-item label="指导文件" v-if="route_file!==null">
<el-button @click="showFile">查看</el-button>
</el-descriptions-item>
@ -218,7 +198,6 @@
:apiObj="apiObj"
row-key="id"
stripe
height="250px"
:params="paramsIn"
hidePagination
>
@ -370,7 +349,7 @@
:wm = "wm"
:dept="deptId"
:mgroup="mgroup"
:material_in="mlogItem.material_in"
:cutCount="cutCount"
:material_out="mlogItem.material_out"
:mgroupName= "mlogItem.mgroup_name"
:isSubmit="isSubmit"
@ -502,6 +481,7 @@ export default {
paramsIn: {
page: 0,
mlog: "",
parent__isnull:true,
with_children:'yes',
material_in__isnull: 0,
},
@ -568,6 +548,7 @@ export default {
},
qct:null,
defectlist:[],
cutCount:0,
batchNumber:'',
hasRoute:false,
isSubmit:false,
@ -576,6 +557,8 @@ export default {
},
mounted() {
let that = this;
this.paramsIn.mlog = "";
this.paramsOut.mlog = "";
this.route_code = this.$route.path.split("/")[2];
this.paramsIn.mlog = this.mlogId;
this.paramsOut.mlog = this.mlogId;
@ -595,13 +578,10 @@ export default {
let that = this;
that.$API.wpm.mlog.item.req(that.mlogId).then((res) => {
that.mlogItem = res;
that.checkTableShow = true;
that.getcutCount(res.material_in);
that.isSubmit = res.submit_time==null?false:true;
if(that.processType=='10'&&that.mlogItem.material_out_&&that.mlogItem.material_out_.tracking==20){
that.getMlogbw();
if(that.mlogItem.qct!==null){
that.getdefects(that.mlogItem.qct);
}
}
if(res.route!==null){
that.hasRoute = true;
@ -623,6 +603,7 @@ export default {
}
that.materialIn = res.material_in;
that.deptId = res.belong_dept;
that.checkTableShow = true;
that.apiObjWm = that.$API.wpm.wmaterial.list;
that.$API.wpm.mlogb.list.req(that.paramsOut).then((res) => {
that.tableData2 = res;
@ -632,6 +613,15 @@ export default {
})
});
},
//
getcutCount(material_id){
let that = this;
that.$API.mtm.route.list.req({ nprocess_name: "板段滚圆", material_in_has:material_id, page: 0,query:'{div_number}' }).then((res) => {
if(res.length>0){
that.cutCount = res[0].div_number;
}
});
},
getPreocess(){
let that = this;
that.$API.mtm.process.list.req({page:0,parent:that.process}).then((res) => {
@ -648,51 +638,51 @@ export default {
that.shiftOtions = res;
});
},
getdefects(qct){
let that = this;
if(qct!==''&&qct!==null){//
that.$API.qm.qct.item.req(qct).then((res) => {
that.qct_defects = [];
that.testdefectss(res);
})
}else{
that.$API.qm.qct.getQct.req({ material: that.mlogItem.material_out,type:'out',tag:'process' }).then((res) => {
that.testdefectss(res);
}).catch(()=>{
// that.getList();
})
}
},
testdefectss(res){
let that = this;
res.qct_defects.forEach((item) => {
that.addTemplate[item.defect_name] = false;
let obj = Object.assign({}, item);
that.qct_defects.push(obj);
})
that.qct_defects_origin = that.qct_defects;
that.qct_testitems = [];
res.qct_testitems.forEach((item2) => {
if(item2.testitem_type!=='20'){
let obj2 = Object.assign({}, item2);
obj2.value = '';
obj2.addto_wpr = item2.addto_wpr;
if(item2.testitem_field_type=='input-number'||item2.testitem_field_type=='input-int'){
obj2.value = null;
that.addTemplate[item2.testitem_name] = null;
}
if(item2.testitem_field_type=='select-text'||item2.testitem_field_type=='selects-text'){
let str = obj2.testitem_choices.replace(/'/g, '"');
let arr = JSON.parse(str);
obj2.testitem_choices = arr;
that.addTemplate[item2.testitem_name] = null;
}
that.qct_testitems.push(obj2);
}
})
that.qct_testitems_origin = that.qct_testitems;
// that.getList();
},
// getdefects(qct){
// let that = this;
// if(qct!==''&&qct!==null){//
// that.$API.qm.qct.item.req(qct).then((res) => {
// that.qct_defects = [];
// that.testdefectss(res);
// })
// }else{
// that.$API.qm.qct.getQct.req({ material: that.mlogItem.material_out,type:'out',tag:'process' }).then((res) => {
// that.testdefectss(res);
// }).catch(()=>{
// // that.getList();
// })
// }
// },
// testdefectss(res){
// let that = this;
// res.qct_defects.forEach((item) => {
// that.addTemplate[item.defect_name] = false;
// let obj = Object.assign({}, item);
// that.qct_defects.push(obj);
// })
// that.qct_defects_origin = that.qct_defects;
// that.qct_testitems = [];
// res.qct_testitems.forEach((item2) => {
// if(item2.testitem_type!=='20'){
// let obj2 = Object.assign({}, item2);
// obj2.value = '';
// obj2.addto_wpr = item2.addto_wpr;
// if(item2.testitem_field_type=='input-number'||item2.testitem_field_type=='input-int'){
// obj2.value = null;
// that.addTemplate[item2.testitem_name] = null;
// }
// if(item2.testitem_field_type=='select-text'||item2.testitem_field_type=='selects-text'){
// let str = obj2.testitem_choices.replace(/'/g, '"');
// let arr = JSON.parse(str);
// obj2.testitem_choices = arr;
// that.addTemplate[item2.testitem_name] = null;
// }
// that.qct_testitems.push(obj2);
// }
// })
// that.qct_testitems_origin = that.qct_testitems;
// // that.getList();
// },
//mlogbw
getMlogbw(){
let that = this;
@ -928,17 +918,16 @@ export default {
that.$refs.checkDialogSingle.open(type,that.qct);
});
},
//
mlogSubmit() {
let that = this;
if(that.mlogItem.work_end_time==''||that.mlogItem.work_end_time==null){
that.mlogItem.handle_date = that.$TOOL.dateFormat2(new Date());
}
that.isSaveing = true;
that.$API.wpm.mlog.submit.req(that.mlogItem.id).then((res) => {
that.isSaveing = false;
that.visible = false;
that.$message.success("操作成功");
}).catch(() => {
that.isSaveing = false;
});
},
table_muser_add(){
@ -1051,6 +1040,11 @@ export default {
});
})
},
closedPage(){
let that = this;
that.visible = false;
that.$emit('closed',that.isSubmit);
},
},
};
</script>

View File

@ -41,7 +41,7 @@
</el-form-item>
</el-col>
<el-col v-if="mlogtype!=='rework'">
<el-form-item label="工艺路线">
<el-form-item label="工艺路线" prop="route">
<el-select
v-model="form.route"
placeholder="工艺路线"
@ -80,6 +80,17 @@
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :md="12" :sm="12" :xs="24" v-if="route_code=='tuomoceliang'">
<el-form-item label="切分数量">
<el-input-number
v-model="form.cutCount"
:min="1"
class="width-100"
controls-position="right"
>
</el-input-number>
</el-form-item>
</el-col> -->
<el-col :md="12" :sm="12" :xs="24" v-for="item in testitems" :key="item.id">
<el-form-item :label="item.name">
<el-input-number
@ -295,6 +306,7 @@ export default {
{ id: 10, name: "自产" },
{ id: 20, name: "外协" },
],
cutCount:0,
mlogtype:"",
route_code:"",
visible: false,
@ -302,17 +314,16 @@ export default {
options: [],
testitems:[],
routeOptions: [],
userOptions: [],
mtaskOptions:[],
supplierOptions: [],
setFiltersVisible: false,
};
},
mounted() {
let that = this;
this.route_code = this.$route.path.split("/")[2];
this.form.work_start_time = this.$TOOL.dateFormat(new Date());
this.getRoute();
// this.getUser();
this.getSupplier();
this.getEquipment();
this.getMtask();
@ -332,20 +343,15 @@ export default {
res.results.forEach((item) => {
let obj = {};
Object.assign(obj, item);
obj.value = '';
obj.value = null;
that.testitems.push(obj);
})
});
},
//
getUser() {
this.$API.system.user.list.req({ depts: this.dept }).then((res) => {
this.userOptions = res.results;
});
},
//
getEquipment() {
let that = this;
this.$API.em.equipment.list.req({ page: 0, type: 10,mgroup:that.mgroup}).then((res) => {
this.$API.em.equipment.list.req({ page: 0, type: 10,belong_dept:that.dept}).then((res) => {
res.forEach((item) => {
let obj = {};
Object.assign(obj, item);
@ -357,11 +363,9 @@ export default {
//
getMtask() {
let that = this;
this.$API.pm.mtask.list
.req({ page: 0, mgroup: that.mgroup, state: 20 })
.then((res) => {
that.mtaskOptions = res;
});
this.$API.pm.mtask.list.req({ page: 0, mgroup: that.mgroup, state: 20 }).then((res) => {
that.mtaskOptions = res;
});
},
getSupplier() {
let that = this;
@ -374,11 +378,9 @@ export default {
},
getRoute(id) {
let that = this;
that.$API.mtm.route.list
.req({ process: that.process, page: 0, routepack__state: 30 })
.then((res) => {
that.routeOptions = res;
});
that.$API.mtm.route.list.req({ process: that.process, page: 0, routepack__state: 30 }).then((res) => {
that.routeOptions = res;
});
},
//
open(mode = "add",type) {
@ -400,7 +402,6 @@ export default {
//
setData(data) {
let that = this;
console.log("data", data);
Object.assign(this.form, data);
if(data.test_file!==null){
this.form.test_file = data.test_file;
@ -431,7 +432,6 @@ export default {
},
fileUPSuccess(res) {
let that = this;
console.log('res',res);
this.test_file = res.path;
},
//

View File

@ -137,7 +137,7 @@
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="工艺路线:">
<el-form-item label="工艺路线:" prop="route">
<el-select
v-model="form.route"
placeholder="工艺路线"
@ -224,6 +224,13 @@ export default {
trigger: "blur",
},
],
route: [
{
required: true,
message: "请选择工艺路线",
trigger: "blur",
},
],
},
wm_in: "",
route_code:"",
@ -249,14 +256,13 @@ export default {
this.getRoute();
this.getEquipment();
this.gettestitem();
if(that.route_code=='tuomoceliang'){
//
}
setTimeout(()=>{
let inputDom = document.querySelectorAll('.inputWrap .el-input__wrapper .el-input__inner');
console.log(inputDom);
inputDom.forEach(function(input) {
input.addEventListener("compositionstart", function() {
// that.$confirm(``, "", {
// type: "warning",
// }).then(() => {});
that.$message.warning("您的输入法为中文,请切换到英文输入法");
});
});
@ -270,10 +276,10 @@ export default {
this.routeOriginOptions = res;
});
},
//
//
getEquipment() {
let that = this;
this.$API.em.equipment.list.req({ page: 0, type: 10,mgroup:that.mgroup}).then((res) => {
this.$API.em.equipment.list.req({ page: 0, type: 10,belong_dept:that.dept}).then((res) => {
res.forEach((item) => {
let obj = {};
Object.assign(obj, item);
@ -288,7 +294,7 @@ export default {
res.results.forEach((item) => {
let obj = {};
Object.assign(obj, item);
obj.value = '';
obj.value = null;
that.testitems.push(obj);
})
});
@ -329,7 +335,6 @@ export default {
//
//
formWminChange(code){
console.log('code',code);
let that = this,codeId='',arr=[];
code = code.replace(/(^\s*)|(\s*$)/g, "");
if(code.indexOf("#")>-1){
@ -358,7 +363,7 @@ export default {
that.form.wm_in = arr[0].id;
that.form.count_use = arr[0].count_cando;
that.wm_in = arr[0].batch;
that.batchCountCando = Number(arr[0].count_cando);;
that.batchCountCando = Number(arr[0].count_cando);
that.materialTracking = arr[0].material_.tracking;
if(that.routeOptions.length==0){
that.routeOriginOptions.forEach((item)=>{

View File

@ -546,7 +546,7 @@ export default {
selectWprList:[],
qct_defects_origin:[],
selectWpr:[],
tableHeight:500,
tableHeight:null,
apiObjPrint:this.$API.cm.labelmat.fromWm,
printer_name:localStorage.getItem("printer_name")
};
@ -597,9 +597,7 @@ export default {
}
}
that.visible = true;
setTimeout(() => {
that.tableHeight = document.getElementById('mlogbwMain').clientHeight-20;
},500)
that.tableHeight = document.getElementsByClassName('el-drawer__body')[0].clientHeight-40;
},
//testItem
gettestitem(){

View File

@ -36,7 +36,8 @@
<el-table-column prop="mlogb__batch" label="物料批次" fixed min-width="80px"></el-table-column>
<el-table-column prop="number" label="物料编号" fixed min-width="80px">
<template #default="scope">
<span>{{ scope.row.number }}</span>
<el-input v-if="route_code=='paiban'&&scope.row.isEdit" v-model="scope.row.number" placeholder="物料编号"></el-input>
<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>
</template>
</el-table-column>
@ -133,13 +134,13 @@
<el-button
v-if="!scope.row.isEdit"
type="primary"
@click="formTableEdit(scope.row)"
@click="formTableEdit(scope.$index)"
>编辑</el-button>
<el-button
v-if="scope.row.isEdit&&!scope.row.id"
type="danger"
style="margin-left: 5px;"
@click="formTableDelet(scope.row)"
@click="formTableDelet(scope.row,scope.$index)"
>删除</el-button>
<el-button
v-if="!scope.row.isEdit"
@ -234,7 +235,6 @@
<template #header>
<el-checkbox
v-model="checkAll"
:indeterminate="indeterminate"
@change="handleCheckAll"
>全部</el-checkbox>
</template>
@ -359,6 +359,10 @@ export default {
processType:{
type:String,
default:"",
},
cutCount:{
type:Number,
default:0,
}
},
emits: ["success", "closed"],
@ -373,7 +377,7 @@ export default {
//
form: {
test_user:"",
equipment:"",
equipment:null,
cd_req_addr:null,//
equipment_name:"",
testitemids : [],
@ -383,6 +387,7 @@ export default {
year:"",
month:"",
values:"",
qctId: "",
wprNumber:"",
route_code:"",
wprInputText:"",
@ -411,6 +416,7 @@ export default {
test_user:"",
equipment:"",
equipment_name:"",
cd_req_addr:null,//
testitemids : [],
defectids : [],
},
@ -432,7 +438,6 @@ export default {
watch: {},
mounted() {
let that = this;
console.log('that.material_out',that.material_out)
if(that.processType=='20'){
that.canMultiple = true;
}
@ -440,6 +445,7 @@ export default {
that.getdefects();
}else if(that.material_out!==''&&that.material_out!==null){//
that.$API.qm.qct.getQct.req({ material: that.material_out,type:'out',tag:'process' }).then((res) => {
that.qctId = res.id;
that.testdefectss(res);
}).catch(()=>{
that.getList();
@ -450,7 +456,7 @@ export default {
that.tableHeight = document.getElementById('mlogbwMain').clientHeight-20;
},500)
that.route_code = that.$route.path.split("/")[2];
that.hideAdd = that.isSubmit;
// that.hideAdd = that.isSubmit;
that.currentDate = that.$TOOL.dateFormat2(new Date());
},
methods: {
@ -479,12 +485,10 @@ export default {
}
},
selectChange(rows){
console.log('rowsrows',rows)
let that = this;
that.selectWprList = rows;
},
selectAllChange(datas){
console.log('datas',datas)
let that = this;
that.selectWprList = datas;
},
@ -526,6 +530,9 @@ export default {
obj2.addto_wpr = item2.addto_wpr;
if(item2.testitem_field_type=='input-number'||item2.testitem_field_type=='input-int'){
obj2.value = null;
if(item2.testitem_name == '切片数'){
obj2.value = Number(that.cutCount);
}
that.addTemplate[item2.testitem_name] = null;
}
if(item2.testitem_field_type=='select-text'||item2.testitem_field_type=='selects-text'){
@ -586,7 +593,11 @@ export default {
obj[item1.defect_name] = false;
})
that.qct_testitems.forEach((item2) => {
obj[item2.testitem_name] = null;
if(item2.testitem_name == '切片数'){
obj[item2.testitem_name] = Number(that.cutCount);
}else{
obj[item2.testitem_name] = null;
}
})
}
}
@ -598,6 +609,12 @@ export default {
//
formTableSave(row) {
let that = this;
let editIndex = 0;
that.mlogbwlist.forEach((item,index) => {
if(item.id==row.id){
editIndex = index;
}
})
let obj = {};
obj.number = row.number;
obj.mlogb = row.mlogb;
@ -605,7 +622,7 @@ export default {
obj.note = row.note;
//qct
if(that.qct!==''&&that.qct!==null){
that.qct_defects_origin.forEach(item => {
that.qct_defects.forEach(item => {
if(item.rule_expression!==''&&item.rule_expression!==undefined&&item.rule_expression!==null){
let str = item.rule_expression.replace(/`/g, '');
str = str.replace(/\${(.*?)}/g, 'row.\$1')
@ -645,7 +662,8 @@ export default {
obj.id = row.id;
that.$API.wpm.mlogbw.update.req(row.id,obj).then((res) => {
that.$message.success("保存成功");
that.getList();
that.mlogbwlist[editIndex].isEdit = false;
// that.getList();
return res;
}).catch((err) => {
return err;
@ -653,7 +671,8 @@ export default {
}else{
that.$API.wpm.mlogbw.create.req(obj).then((res) => {
that.$message.success("添加成功");
that.getList();
that.mlogbwlist[editIndex].isEdit = false;
// that.getList();
return res;
}).catch((err) => {
return err;
@ -667,32 +686,29 @@ export default {
}
});
},
formTableEdit(row) {
formTableEdit(index) {
let that = this;
if(that.route_code=='niuzhuan'&&that.optionsEq.length==0){
that.getEquipment4();
that.mlogbwlist[index].isEdit = true;
let date = new Date();
if(that.mlogbwlist[index].work_start_time==''||that.mlogbwlist[index].work_start_time==null){
that.mlogbwlist[index].work_start_time = that.$TOOL.dateFormat(date, 'yyyy-MM-dd hh:mm:ss');
}
if(that.setForm.cd_req_addr!==null&&that.setForm.cd_req_addr!==""&&that.setForm.cd_req_addr!==undefined){
that.getEqData(index);
}
that.mlogbwlist.forEach((item, index) => {
if (item.id == row.id) {
that.mlogbwlist[index].isEdit = true;
let date = new Date();
if(that.mlogbwlist[index].work_start_time==''||that.mlogbwlist[index].work_start_time==null){
that.mlogbwlist[index].work_start_time = that.$TOOL.dateFormat(date, 'yyyy-MM-dd hh:mm:ss');
}
}
});
},
formTableDelet(row){
this.mlogbwlist.pop();
},
//
formTableDel(id) {
formTableDel(id,index) {
let that = this;
that.$confirm(`确定删除吗?`, "提示", {
type: "warning",
}).then(() => {
that.$API.wpm.mlogbw.delete.req(id).then((res) => {
that.getList();
that.mlogbwlist.splice(index,1);
that.$message.success("删除成功");
}).catch((err) => {
return err;
@ -716,7 +732,7 @@ export default {
defectCountSun(row){
let that = this;
let index = that.mlogbwlist.indexOf(row);
that.qct_defects_origin.forEach(item => {
that.qct_defects.forEach(item => {
if(item.rule_expression!==''&&item.rule_expression!==undefined&&item.rule_expression!==null){
let str = item.rule_expression.replace(/`/g, '');
str = str.replace(/\${(.*?)}/g, 'row.\$1')
@ -771,7 +787,7 @@ export default {
that.equipmentOptions.forEach(item => {
if(item.id == that.form.equipment){
that.form.equipment_name = item.name;
that.form.cd_req_addr=item.cd_req_addr;
that.form.cd_req_addr = that.setForm.cd_req_addr = item.cd_req_addr;
}
});
},
@ -831,11 +847,13 @@ export default {
obj.test_date = that.handle_date!=null?that.handle_date:that.currentDate;
if(that.form.defectids.length>0){
obj.defects = that.form.defectids;
that.setForm.defectids = that.form.defectids;
}
if(that.form.testitemids.length>0){
obj.testitems = that.form.testitemids;
that.setForm.testitemids = that.form.testitemids;
}
obj.qct = that.qct;
obj.qct = that.qct!==null?that.qct:that.qctId;
that.$API.wpm.mlogbw.start_test.req(obj).then((res) => {
that.isSaveing = false;
that.form = {};
@ -881,7 +899,7 @@ export default {
that.mlogbwlist.splice(index,1);
that.wprInputText = "";
that.mlogbwlist.unshift(obj);
if(that.setForm.cd_req_addr!==null){
if(that.setForm.cd_req_addr!==null&&that.setForm.cd_req_addr!==""&&that.setForm.cd_req_addr!==undefined){
//cd_req_addr,
that.getEqData(0);
}
@ -897,6 +915,11 @@ export default {
}
})
}).catch((err) => {
console.log(err);
this.$notify.error({
title: '获取数据失败',
message: err.data
})
return err;
});
},

View File

@ -71,7 +71,9 @@
label="预计工时"
prop="hour_work"
width="80"
></el-table-column> -->
></el-table-column>
-->
<el-table-column label="批次号" min-width="100">
<template #default="scope">
<div v-if="scope.row.mlogb_full!==null">
@ -81,16 +83,39 @@
</div>
</template>
</el-table-column>
<el-table-column label="棒号" min-width="80" v-if="route_code=='paiyicibang'">
<template #default="scope">
<div v-if="scope.row.mlogbw_number_list.length>0">
<span v-for="item in scope.row.mlogbw_number_list" :key="item">
<span >{{ item }}</span>
</span>
</div>
</template>
</el-table-column>
<el-table-column label="板段号" min-width="160" v-if="route_code=='paiban'||route_code=='zhuangmo'||route_code=='tuomoceliang'||route_code=='reyatuihuo'||route_code=='zlybcl'">
<template #default="scope">
<div v-if="scope.row.mlogbw_number_list.length>0">
<span v-for="item in scope.row.mlogbw_number_list" :key="item">
<span >{{ item }}</span>
</span>
</div>
</template>
</el-table-column>
<el-table-column label="原料棒号" min-width="100" v-if="route_code=='ladansi'">
<template #default="scope">
<div v-if="scope.row.mlogb_full!==null">
<span v-for="item in scope.row.mlogb_full" :key="item.id">
<span v-if="item.material_out!==null">{{ item.batch }}</span>
</span>
</div>
</template>
</el-table-column>
<el-table-column
v-if="route_code=='ladansi'||route_code=='yicifusi'||route_code=='ercifusi'||route_code=='zlybcl'"
label="生产设备"
prop="equipment_name"
min-width="130"
></el-table-column>
<el-table-column label="进度" prop="belong_dept_name" v-if="mgroup_name=='黑化'||mgroup_name=='退火'">
<template #default="scope">
<el-progress id="progressbwlq" :percentage="customMethod(scope.row,1)" :stroke-width="20" :color="customMethod(scope.row,2)" :text-inside="true"><span>{{customMethod(scope.row,3)}}</span></el-progress>
</template>
</el-table-column>
<el-table-column
label="部门/工段"
prop="belong_dept_name"
@ -104,22 +129,22 @@
<span v-if="scope.row.oinfo_json_">{{scope.row.oinfo_json_.是否保温}}</span>
</template>
</el-table-column>
<el-table-column label="温度" v-if="route_code=='zlybcl'">
<el-table-column label="温度(℃)" v-if="route_code=='zlybcl'">
<template #default="scope">
<span v-if="scope.row.oinfo_json_">{{scope.row.oinfo_json_.温度}}</span>
</template>
</el-table-column>
<el-table-column label="压力" v-if="route_code=='zlybcl'">
<el-table-column label="压力(mpa)" v-if="route_code=='zlybcl'">
<template #default="scope">
<span v-if="scope.row.oinfo_json_">{{scope.row.oinfo_json_.压力}}</span>
</template>
</el-table-column>
<el-table-column label="刻度" v-if="route_code=='zlybcl'">
<el-table-column label="刻度(mm)" v-if="route_code=='zlybcl'">
<template #default="scope">
<span v-if="scope.row.oinfo_json_">{{scope.row.oinfo_json_.刻度}}</span>
</template>
</el-table-column>
<el-table-column label="压板用时" v-if="route_code=='zlybcl'">
<el-table-column label="压板用时(分)" v-if="route_code=='zlybcl'">
<template #default="scope">
<span v-if="scope.row.oinfo_json_">{{scope.row.oinfo_json_.压板用时}}</span>
</template>
@ -127,7 +152,6 @@
<el-table-column
label="处理人"
prop="handle_user_name"
width="80"
></el-table-column>
<el-table-column label="保温剩余时间" v-if="mgroup_name=='黑化'||mgroup_name=='退火'">
<template #default="scope">
@ -278,7 +302,7 @@ export default {
data() {
return {
apiObj: null,
params: { mgroup: "" ,submit_time__isnull:true,with_mlogb:'yes',
params: { mgroup: "" ,submit_time__isnull:true,with_mlogb:'yes',with_mlogbw:'out',
query: " { id,is_fix,equipment, material_out_name, equipment_name, reminder_interval_list ,mstate_json,belong_dept_name, mgroup_name,handle_user_name,work_start_time,work_end_time,submit_time,oinfo_json,mlogb_full,submit_user_name}"
},
query: {submit_time__isnull:true},
@ -350,9 +374,11 @@ export default {
}
}
},
detailClose() {
detailClose(data) {
this.dialog.detail = false;
this.$refs.table.refresh();
if(data){}else{
this.$refs.table.refresh();
}
},
table_monitor(row){
let that= this;
@ -514,7 +540,7 @@ export default {
},
handleSaveSuccess2(data) {
console.log(data);
this.dialog.save = true;
this.dialog.save2 = false;
this.$refs.table.refresh();
this.mlogId = data;
this.dialog.detail = true;

View File

@ -9,7 +9,7 @@
>
<div id="tableWap" style="height: 100%;">
<el-tabs v-model="activeName" @tab-change="handleClick">
<el-tab-pane v-for="item in mpointList" :label="item.name" :name="item.name" :key="item.id" lazy>
<el-tab-pane v-for="item in mpointList" :label="item.nickname" :name="item.nickname" :key="item.id" lazy>
<scTable
ref="table"
:apiObj="apiObj"
@ -103,7 +103,7 @@ export default {
that.$API.enm.mpoint.list.req({ep_belong:that.equipmentId,page:0}).then((res) => {
if(res.length>0){
that.mpointList = res;
that.activeName = res[0].name;
that.activeName = res[0].nickname;
that.params.mpoint = res[0].id;
that.apiObj = that.$API.enm.mplogx;
that.handleClick();
@ -113,10 +113,9 @@ export default {
})
},
handleClick(val){
console.log('handleClick',val)
let that = this;
that.mpointList.forEach(item=>{
if(item.name == that.activeName){
if(item.nickname == that.activeName){
that.query.mpoint = item.id;
that.query.page = 1;
that.option.title.text = that.activeName;
@ -128,11 +127,22 @@ export default {
params.timex__lte = that.endTime;
params.page = 0;
that.$API.enm.mplogx.req(params).then((res) => {
let xAxisData = [],seriesData = [];
res.forEach(item=>{
that.option.xAxis.data.push(item.timex);
xAxisData.unshift(item.timex);
let value = Number(item.val_float).toFixed(3);
that.option.series.data.push(value);
seriesData.unshift(value);
})
function getMinValue(arr) {
return Math.min.apply(null, arr);
}
if(that.activeName.indexOf("温度") != -1){
let minNum = getMinValue(seriesData);
console.log(minNum);
that.option.yAxis.min = minNum;
}
that.option.xAxis.data = xAxisData;
that.option.series.data = seriesData;
})
}
})

View File

@ -136,6 +136,7 @@ export default {
methods: {
open(mode) {
let that = this;
that.wprList = [];
this.mode = mode;
this.params.wm = this.wm;
this.visible = true;
@ -288,7 +289,7 @@ export default {
for(let key in row.oinfo){
oinfo.push(row.oinfo[key])
}
let data = {sigao:'',duibian:'',moban:'',istest:'否',number:row.number,name:name,ofrom_name:that.ofromName,ofrom_batch:that.ofromBatch};
let data = {sigao:'',duibian:'',moban:'',hengya:'',istest:'否',number:row.number,name:name,ofrom_name:that.ofromName,ofrom_batch:that.ofromBatch};
if(that.route_code=='zhuangmo'||that.route_code=='zlybcl'||that.route_code=='tuomoceliang'||that.route_code=='reyatuihuo'||that.route_code=='banduangunyuan'){
params.label_template_name = '脱膜测量单件标签模板';
}else{
@ -298,6 +299,8 @@ export default {
oinfo.forEach((item)=>{
if(item.name=="丝高"){
data.sigao = item.val;
}else if(item.name=="横压"){
data.hengya = item.val;
}else if(item.name=="对边"){
data.duibian = item.val;
}else if(item.name=="模具号"){

View File

@ -251,8 +251,14 @@
</scTable>
</el-main>
</el-container>
<save-dialog
v-if="dialog.save"
<el-drawer
v-model="dialog.save"
:title="titleMap[mode]"
:size="'90%'"
destroy-on-close
:close-on-click-modal="false"
>
<save-dialog
ref="saveDialog"
:type="type"
:process = "processId"
@ -261,8 +267,8 @@
:mgroupId="mgroupId"
@success="handleSaveSuccess"
@closed="dialog.save = false"
>
</save-dialog>
></save-dialog>
</el-drawer>
<el-dialog title="退料操作" v-model="backDialogVisible" style="width: 70%;">
<el-row v-for="item in handoverbList" :key="item.id" style="padding: 10px 10px 0 20px;">
<el-col style="display: flex;border-bottom: 1px dashed #eee;">
@ -379,6 +385,12 @@ export default {
},
route_code: "",
// setNameVisible: false,
titleMap: {
add: "新增交接记录",
edit: "编辑交接记录",
show: "查看交接记录",
},
mode: "add"
};
},
mounted() {
@ -410,6 +422,7 @@ export default {
//
table_add(type) {
this.dialog.save = true;
this.mode = "add";
this.type = type;
this.$nextTick(() => {
this.$refs.saveDialog.open("add",'',10);
@ -419,6 +432,7 @@ export default {
let that = this;
that.type = 10;
that.codeText = codeText;
that.mode = "add";
that.dialog.save = true;
that.$nextTick(() => {
that.$refs.saveDialog.open("add",codeText,10);
@ -429,6 +443,7 @@ export default {
this.type = 20;
that.codeText2 = codeText2;
this.dialog.save = true;
that.mode = "add";
this.$nextTick(() => {
this.$refs.saveDialog.open("add",codeText2,10);
});
@ -437,6 +452,7 @@ export default {
table_edit(row) {
this.type=row.type;
this.dialog.save = true;
this.mode = "edit";
this.$nextTick(() => {
this.$refs.saveDialog.open("edit").setData(row);
});
@ -444,6 +460,7 @@ export default {
table_show(row){
this.type=row.type;
this.dialog.save = true;
this.mode = "show";
this.$nextTick(() => {
this.$refs.saveDialog.open("show").setData(row);
});
@ -561,7 +578,7 @@ export default {
//
//
handleSaveSuccess(data, mode) {
this.dialog.save = true;
this.dialog.save = false;
this.$refs.table.refresh();
},
},

View File

@ -1,217 +1,218 @@
<template>
<el-dialog
:title="titleMap[mode]"
v-model="visible"
width="1000px"
:size="1000"
destroy-on-close
@closed="$emit('closed')"
>
<el-form
ref="dialogForm"
:model="form"
:rules="rules"
label-width="80px"
>
<el-row>
<el-form-item label="交接物料">
<el-button type="primary" @click="addMaterial" v-if="mode!=='show'">手动添加</el-button>
<scScanner @scanResult="codeTextChange"></scScanner>
</el-form-item>
<el-form-item label-width="0">
<el-input
ref="codeInput"
v-model="codeText"
clearable
placeholder="物料批次"
style="width: 200px;margin-left: 4px;"
@keyup.enter="codeTextChange(codeText)"
></el-input>
</el-form-item>
<el-form-item label="总计:">
{{ totalCount }}
</el-form-item>
<el-form-item label="原始物料" v-if="mode!='add'&&form.mtype==20" style="margin-left: 20px;">
<el-col >{{ form.batch }}</el-col>
</el-form-item>
</el-row>
<el-row v-show="addShow">
<el-col>
<el-container>
<el-main class="nopadding">
<el-form
ref="dialogForm"
:model="form"
:rules="rules"
label-width="80px"
>
<el-row>
<el-form-item label="交接物料">
<xtSelect
:apiObj="apiObjM"
v-model="selectObjIds"
v-model:obj="selectObjs"
:labelField="'batch'"
style="width: 100%;"
:params = "paramsM"
:multiple="true"
@change="materialChange0"
>
<el-table-column label="物料" prop="full_name">
<template #default="scope">
<span v-if="scope.row.state==20" style="color: red;border: 1px solid red;border-radius: 3px;">不合格</span>
<span v-if="scope.row.state==30" style="color: orange;border: 1px solid orange;border-radius: 3px;">返工</span>
<span>{{ scope.row.batch }}({{ scope.row.material_name }})</span>
<span v-if="scope.row.defect_name !== null" style="color: orangered">{{ scope.row.defect_name }}</span>
</template>
</el-table-column>
<el-table-column label="可交接数量" prop="count_canhandover" width="110px"></el-table-column>
</xtSelect>
<el-button type="primary" @click="addMaterial" v-if="mode!=='show'">手动添加</el-button>
<scScanner @scanResult="codeTextChange"></scScanner>
</el-form-item>
</el-col>
</el-row>
<el-row v-for="(listItem,$index) in form.handoverb" :key="listItem">
<el-col :span="12">
<el-form-item label="交接物料">
<el-input v-model="listItem.label" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="总数量">
<span>{{ listItem.count_cando }}</span>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="交接数量">
<el-input-number
v-model="listItem.count"
controls-position="right"
:min="0"
step="1"
:max="listItem.count_cando"
:disabled="mode==='show'"
:step-strictly="true"
style="width: 100%"
placeholder="交接数量"
@change="countChange"
>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="2" v-if="mode!=='show'">
<el-button type="danger" icon="el-icon-delete" @click="delMaterial($index)"></el-button>
</el-col>
</el-row>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="交送日期" prop="send_date">
<el-date-picker
v-model="form.send_date"
type="date"
placeholder="选择时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="mtype!==30">
<el-form-item label="交送人">
<el-select
v-model="form.send_user"
placeholder="交送人"
<el-form-item label-width="0">
<el-input
ref="codeInput"
v-model="codeText"
clearable
filterable
style="width: 100%"
>
<el-option
v-for="item in userList"
:key="item.id"
:label="item.name"
:value="item.id"
placeholder="物料批次"
style="width: 200px;margin-left: 4px;"
@keyup.enter="codeTextChange(codeText)"
></el-input>
</el-form-item>
<el-form-item label="总计:">
{{ totalCount }}
</el-form-item>
<el-form-item label="原始物料" v-if="mode!='add'&&form.mtype==20" style="margin-left: 20px;">
<el-col >{{ form.batch }}</el-col>
</el-form-item>
</el-row>
<el-row v-show="addShow">
<el-col>
<el-form-item label="交接物料">
<xtSelect
:apiObj="apiObjM"
v-model="selectObjIds"
v-model:obj="selectObjs"
:labelField="'batch'"
style="width: 100%;"
:params = "paramsM"
:multiple="true"
@change="materialChange0"
>
<el-table-column label="物料" prop="full_name">
<template #default="scope">
<span v-if="scope.row.state==20" style="color: red;border: 1px solid red;border-radius: 3px;">不合格</span>
<span v-if="scope.row.state==30" style="color: orange;border: 1px solid orange;border-radius: 3px;">返工</span>
<span>{{ scope.row.batch }}({{ scope.row.material_name }})</span>
<span v-if="scope.row.defect_name !== null" style="color: orangered">{{ scope.row.defect_name }}</span>
</template>
</el-table-column>
<el-table-column label="可交接数量" prop="count_canhandover" width="110px"></el-table-column>
</xtSelect>
</el-form-item>
</el-col>
</el-row>
<el-row v-for="(listItem,$index) in form.handoverb" :key="listItem">
<el-col :span="12">
<el-form-item label="交接物料">
<el-input v-model="listItem.label" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="总数量">
<span>{{ listItem.count_cando }}</span>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="交接数量">
<el-input-number
v-model="listItem.count"
controls-position="right"
:min="0"
step="1"
:max="listItem.count_cando"
:disabled="mode==='show'"
:step-strictly="true"
style="width: 100%"
placeholder="交接数量"
@change="countChange"
>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="2" v-if="mode!=='show'">
<el-button type="danger" icon="el-icon-delete" @click="delMaterial($index)"></el-button>
</el-col>
</el-row>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="交送日期" prop="send_date">
<el-date-picker
v-model="form.send_date"
type="date"
placeholder="选择时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="mtype!==30">
<el-form-item label="接收工段" prop="recive_mgroup">
<el-select
v-model="form.recive_mgroup"
placeholder="接收工段"
clearable
style="width: 100%"
:disabled="type==40||mode!=='add'"
@change="getUserList2"
>
<el-option
v-for="item in mgroupOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="mtype!==30">
<el-form-item label="接收人">
<el-select
v-model="form.recive_user"
placeholder="接收人"
clearable
filterable
style="width: 100%"
>
<el-option
v-for="item in userList2"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="type==10">
<el-form-item label="更改批次">
<el-switch v-model="change_batch"></el-switch>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="处理备注">
<el-input v-model="form.note" placeholder="处理备注"></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="type==10&&change_batch">
<el-form-item label="新批次号" prop="new_batch">
<el-input v-model="form.new_batch" placeholder="新批次号"></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="route_code=='tuihuo'">
<el-form-item label="检验附件">
<sc-upload-file
v-model="fileList"
:multiple="false"
:limit="1"
:accept="['.xlsx', '.xls']"
@success = "fileUPSuccess"
>
<el-button type="primary" icon="el-icon-upload"> </el-button>
</sc-upload-file>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-footer v-show="mode!=='show'">
<template v-if="(route_code=='tuihuo'&&type==10&&mtype==10)||form.ticket!=null">
<el-button
v-for="item in transitions"
:key="item.id"
type="primary"
:loading="isSaveing"
:disabled="isSaveing"
@click="submitTicketCreate(item.id)"
style="margin-right: 4px"
>{{ item.name }}</el-button>
</template>
<el-button v-else type="primary" v-loading="isSaveing" @click="submit">确定</el-button>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-dialog>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="mtype!==30">
<el-form-item label="交送人">
<el-select
v-model="form.send_user"
placeholder="交送人"
clearable
filterable
style="width: 100%"
>
<el-option
v-for="item in userList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="mtype!==30">
<el-form-item label="接收工段" prop="recive_mgroup">
<el-select
v-model="form.recive_mgroup"
placeholder="接收工段"
clearable
style="width: 100%"
:disabled="type==40||mode!=='add'"
@change="getUserList2"
>
<el-option
v-for="item in mgroupOptions"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="mtype!==30">
<el-form-item label="接收人">
<el-select
v-model="form.recive_user"
placeholder="接收人"
clearable
filterable
style="width: 100%"
>
<el-option
v-for="item in userList2"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="type==10&&mtype==30">
<el-form-item label="更改批次">
<el-switch v-model="change_batch"></el-switch>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="处理备注">
<el-input v-model="form.note" placeholder="处理备注"></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="change_batch">
<el-form-item label="新批次号" prop="new_batch">
<el-input v-model="form.new_batch" placeholder="新批次号"></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="route_code=='tuihuo'">
<el-form-item label="检验附件">
<sc-upload-file
v-model="fileList"
:multiple="false"
:limit="1"
:accept="['.xlsx', '.xls']"
@success = "fileUPSuccess"
>
<el-button type="primary" icon="el-icon-upload"> </el-button>
</sc-upload-file>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-footer v-show="mode!=='show'">
<template v-if="(route_code=='tuihuo'&&type==10&&mtype==10)||form.ticket!=null">
<ticketd_b_start :workflow_key="'backfire'" :title="'退火交接审批单'" :t_id="form.id" :ticketId="form.ticket"
@success="()=>{$emit('success')} " :submit_b_func="submit_b_func" ref="ticketd_b_start"></ticketd_b_start>
</template>
<el-button v-else type="primary" v-loading="isSaveing" @click="submit">确定</el-button>
<el-button @click="$emit('closed')">取消</el-button>
</el-footer>
</el-main>
<el-aside width="20%" v-if="form.ticket">
<ticketd :ticketId="form.ticket" @success="$emit('success')"></ticketd>
</el-aside>
</el-container>
</template>
<script>
import ticketd_b_start from "@/views/wf/ticketd_b_start.vue";
import ticketd from '@/views/wf/ticketd.vue'
export default {
emits: ["success", "closed"],
components: {
ticketd_b_start, ticketd
},
props: {
t_id: {
type: String,
default: null
},
type: {
type: Number,
default: 10,
@ -245,12 +246,7 @@ export default {
selectItems:[],
yseorno: ["是", "否"],
loading: false,
mode: "add",
titleMap: {
add: "新增交接记录",
edit: "编辑交接记录",
show: "查看交接记录",
},
mode: "show",
lists:[],//
handle_user: [],
form: {
@ -327,10 +323,10 @@ export default {
fileList:[],
userList: [],
userList2: [],
handoverbIds:[],
mgroupOptions: [],
materialOptions: [],
addShow: false,
visible: false,
scanVisible:false,
isSaveing: false,
setFiltersVisible: false,
@ -379,25 +375,25 @@ export default {
}else{
that.getMgroupOptions();
}
if(that.route_code=='tuihuo'){
that.getInit();
}
that.getTid();
},
methods: {
//
getInit() {
let that = this;
if(this.form.ticket!==null){
this.$API.wf.ticket.ticketTransitions.req(this.form.ticket).then((res) => {
that.transitions = res;
})
}else{
that.$API.wf.workflow.initkey.req(" backfire").then((res) => {
that.initForm = res;
that.transitions = res.transitions;
});
}
getTid (){
var that = this;
if (that.t_id) {
that.$API.wpm.handover.item.req(that.t_id).then(res=>{
that.setData(res);
if(res.ticket_.state_.type == 1 && res.create_by == that.$TOOL.data.get("USER_INFO").id ) {
that.mode = "edit";
}else{
that.mode = "show";
}
that.$nextTick(()=>{
that.$refs.ticketd_b_start.init();
})
})
}
},
//
getMgroupOptions() {
@ -516,28 +512,34 @@ export default {
if(mtype==30){//
this.change_batch = true;
}
this.visible = true;
return this;
},
//handoverb
materialChange0(){
let that = this;
that.form.handoverb = [];
// that.form.handoverb = [];
// that.handoverbIds = [];
that.totalCount = 0;
that.selectObjs.forEach(item=>{
let obj = {};
obj.wm = item.id;
obj.state = item.state;
obj.batch = item.batch;
obj.label = item.defect !== null?item.batch+'('+item.material_name+')'+item.defect_name:item.batch+'('+item.material_name+')';
obj.count = item.count_canhandover;
obj.defect = item.defect;
obj.defect_name = item.defect_name;
obj.count_cando = item.count_canhandover;
obj.material = item.material;
that.totalCount += Number(obj.count);
that.form.handoverb.push(obj);
that.getResaveMgroups(obj.material);
if(that.handoverbIds.indexOf(item.id)==-1){
that.handoverbIds.push(item.id);
let obj = {};
obj.wm = item.id;
obj.state = item.state;
obj.batch = item.batch;
obj.label = item.defect !== null?item.batch+'('+item.material_name+')'+item.defect_name:item.batch+'('+item.material_name+')';
obj.count = item.count_canhandover;
obj.defect = item.defect;
obj.defect_name = item.defect_name;
obj.count_cando = item.count_canhandover;
obj.material = item.material;
that.form.handoverb.push(obj);
that.getResaveMgroups(obj.material);
}
})
setTimeout(function(){
that.countChange();
},500)
},
countChange(){
let that = this;
@ -552,62 +554,14 @@ export default {
fileUPSuccess(res) {
this.test_file = res.path;
},
//退,
submitTicketCreate(id) {
let that = this;
that.isSaveing = true;
that.form.oinfo_json = {};
that.form.oinfo_json.test_file = that.test_file;
async submit_b_func() {
let that = this;
if(that.mode == "add") {
that.$API.wpm.handover.create.req(that.form).then((res) => {
let ticket = {};
ticket.title = '退火交接审批单';
ticket.workflow = that.initForm.workflow;
ticket.ticket_data = {t_id: res.id};
ticket.transition = id;
that.$API.wf.ticket.create.req(ticket).then((res) => {
that.isSaveing = false;
that.visible = false;
that.$emit("success");
that.$message.success("提交成功");
}).catch((e) => {
that.isSaveing = false;
});
}).catch((e) => {
that.isSaveing = false;
});
} else if (that.mode == "edit") {
that.$API.wpm.handover.update.req(that.form.id, that.form).then((res) => {
if (that.form.ticket == null) {
let ticket = {};
ticket.title = '退火交接审批单';
ticket.workflow = that.initForm.workflow;
ticket.ticket_data = {t_id: res.id};
ticket.transition = id;
that.$API.wf.ticket.create.req(ticket).then((res) => {
that.isSaveing = false;
that.visible = false;
that.$emit("success");
that.$message.success("提交成功");
}).catch((e) => {
that.isSaveing = false;
});
} else {
let data = {transition: id, ticket_data: {}}
that.$API.wf.ticket.ticketHandle.req(that.form.ticket, data).then(res=>{
that.isSaveing = false;
that.visible = false;
that.$emit("success");
that.$message.success("提交成功");
}).catch((e) => {
that.isSaveing = false;
})
}
}).catch((err) => {
that.isSaveing = false;
return err;
});
}
let res = await that.$API.wpm.handover.create.req(that.form);
that.form.id = res.id;
} else if (that.mode == "edit") {
await that.$API.wpm.handover.update.req(that.form.id, that.form);
}
},
//
submit() {
@ -626,7 +580,6 @@ export default {
that.$API.wpm.handover.createsubmit.req(that.form).then((res) => {
that.isSaveing = false;
that.$emit("success");
that.visible = false;
that.$message.success("操作成功");
}).catch((err) => {
that.isSaveing = false;
@ -637,7 +590,6 @@ export default {
that.$API.wpm.handover.create.req(that.form).then((res) => {
that.isSaveing = false;
that.$emit("success");
that.visible = false;
that.$message.success("操作成功");
}).catch((err) => {
that.isSaveing = false;
@ -647,7 +599,6 @@ export default {
that.$API.wpm.handover.update.req(that.form.id, that.form).then((res) => {
that.isSaveing = false;
that.$emit("success", that.form, that.mode);
that.visible = false;
that.$message.success("操作成功");
}).catch((err) => {
that.isSaveing = false;