This commit is contained in:
zty 2025-03-20 17:06:42 +08:00
commit 846ae282b2
14 changed files with 276 additions and 24 deletions

View File

@ -12,9 +12,9 @@
:rules="rules"
label-width="120px"
>
<!-- <el-form-item label="编号" prop="number">
<el-form-item label="编号">
<el-input v-model="form.number" placeholder="编号" />
</el-form-item> -->
</el-form-item>
<el-form-item label="出入库日期">
<el-date-picker
v-model="form.inout_date"

View File

@ -53,6 +53,8 @@
clearable
style="width: 100%"
:disabled="inputBatchDisable"
@clear="selectBatchClear"
@change="selectChange"
>
<el-option
v-for="item in wbatchOptions"
@ -410,6 +412,17 @@ export default {
}
});
},
selectChange(item){
console.log(item)
let that = this;
that.wbatchOptions.forEach((item) => {
if(that.form.batch == item.batch){
that.form.count = item.count;
that.form.wm = item.id;
}
})
},
selectMaterialChange(item) {
var that = this;
var type = this.form.type;
@ -446,6 +459,7 @@ export default {
},
selectBatchClear() {
this.form.mb = "";
this.form.wm = "";
this.form.batch = "";
this.form.count = "";
this.form.warehouse = "";

View File

@ -24,13 +24,13 @@
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="任务编号" prop="number">
<el-form-item label="任务编号">
<el-input
v-model="form.number"
placeholder="任务编号"
:disabled="mode == 'edit'"
/>
</el-form-item> -->
</el-form-item>
<el-form-item :label="routeText" v-if="mode == 'add'">
<el-select
:placeholder="routeText"

View File

@ -3,9 +3,9 @@
<el-container v-loading="loading">
<el-main style="padding: 0 20px 20px 20px">
<el-form ref="dialogForm" :model="form" :rules="rules" label-width="120px">
<!-- <el-form-item label="任务编号" prop="number">
<el-form-item label="任务编号">
<el-input v-model="form.number" placeholder="任务编号" :disabled="mode == 'edit'" />
</el-form-item> -->
</el-form-item>
<el-form-item label="产物" prop="material" v-if="mode == 'add'">
<el-select placeholder="产物" v-model="form.material" filterable style="width:100%">
<el-option v-for="item in materialOptions" :key="item.id" :label="item.full_name" :value="item.id">

View File

@ -0,0 +1,89 @@
<template>
<div style="position: relative">
<h1>扫描二维码</h1>
<video ref="videoElement" width="500" autoplay></video>
<canvas ref="canvasElement" style="display:none;position: absolute;left: 510px;"></canvas>
<div class="result">
<el-button @click="scanQRCode">识别二维码</el-button>
<h3>扫描结果</h3>
<p>{{ scannedResult }}</p>
</div>
</div>
</template>
<script>
import jsQR from 'jsqr';
export default {
data() {
return {
scannedResult: null, //
videoStream: null, //
};
},
mounted() {
this.startScanning();
},
methods: {
//
async startScanning() {
try {
alert("启动摄像头");
//
const stream = await navigator.mediaDevices.getUserMedia({
video: { facingMode: 'environment' }, // 使
});
this.videoStream = stream;
this.$refs.videoElement.srcObject = stream;
alert("准备就绪");
setTimeout(() => {
this.scanQRCode();
},1000)
} catch (error) {
console.error('无法访问摄像头:', error);
}
},
//
scanQRCode() {
alert("解析二维码");
let videoElement = this.$refs.videoElement;
let canvas = this.$refs.canvasElement;
let context = canvas.getContext('2d');
let widths = videoElement.videoWidth;
let heights = videoElement.videoHeight;
canvas.width = videoElement.videoWidth;
canvas.height = videoElement.videoHeight;
context.drawImage(videoElement, 0, 0, widths, heights);
//
let imageData = context.getImageData(0, 0, widths,heights);
// 使 jsQR
console.log("imageData", imageData);
let qrCode = jsQR(imageData.data, widths,heights);
console.log("qrCode", qrCode);
if (qrCode) {
this.scannedResult = qrCode.data; //
} else {
this.scannedResult = null; //
}
},
},
beforeUnmount() {
//
if (this.videoStream) {
const tracks = this.videoStream.getTracks();
tracks.forEach(track => track.stop());
}
},
};
</script>
<style scoped>
.result {
margin-top: 10px;
font-size: 16px;
color: green;
}
</style>

View File

@ -17,7 +17,7 @@
style="padding: 0 10px"
>
<el-row>
<el-col :md="12" :sm="12" :xs="24" v-if="mlogtype!=='rework'">
<!-- <el-col :md="12" :sm="12" :xs="24" v-if="mgroupMtype==20">
<el-form-item label="生产类型" prop="mtype">
<el-select
v-model="form.mtype"
@ -34,8 +34,8 @@
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24" v-if="form.mtype == 20">
</el-col> -->
<el-col :md="12" :sm="12" :xs="24" v-if="mgroupMtype == 20">
<el-form-item
label="外协单位"
prop="supplier"
@ -233,7 +233,7 @@
<script>
const defaultForm = {
mtype: "",
mtype: 10,
supplier:'',
route: "",
equipment: "",
@ -265,6 +265,10 @@ export default {
type: String,
default: "",
},
mgroupMtype: {
type: String,
default: "",
}
},
computed: {
title() {

View File

@ -160,6 +160,7 @@
:mgroup="mgroupId"
:dept="deptId"
:mgroupName = "mgroupName"
:mgroupMtype="mgroupMtype"
@success="handleSaveSuccess"
@closed="dialog.save = false"
>
@ -211,6 +212,7 @@ export default {
deptId: null,
processId: "",
processCate: "",
mgroupMtype: "",
};
},
watch: {
@ -239,10 +241,11 @@ export default {
}
that.deptId = res.belong_dept;
that.processId = res.process;
that.mgroupMtype = res.mtype;
that.processCate = res.process_cate;
that.params.mgroup = res.id;
that.apiObj = that.$API.wpm.mlog.list;
that.$refs.table.refresh();
// that.$refs.table.refresh();
});
},
getRemaTime(row){

View File

@ -102,6 +102,61 @@
</el-select>
</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
v-if="item.field_type=='input-number'"
v-model="item.value"
:min="0"
class="width-100"
controls-position="right"
>
</el-input-number>
<el-input-number
v-if="item.field_type=='input-int'"
v-model="item.value"
:min="0"
class="width-100"
controls-position="right"
>
</el-input-number>
<el-input
v-if="item.field_type=='input-text'"
v-model="item.value"
class="width-100"
>
</el-input>
<el-select
v-if="item.field_type=='select-text'"
v-model="item.value"
clearable
class="width-100"
>
<el-option
v-for="item0 in item.choices"
:key="item0"
:label="item0"
:value="item0"
>
</el-option>
</el-select>
<el-select
v-if="item.field_type=='selects-text'"
v-model="item.value"
clearable
multiple
class="width-100"
>
<el-option
v-for="item1 in item.choices"
:key="item1"
:label="item1"
:value="item1"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="mgroupName=='成品抛'">
<el-form-item label="批次序号">
<el-input-number
@ -268,6 +323,10 @@ export default {
type: String,
default: "",
},
process:{
type: String,
default: "",
},
},
computed: {
title() {
@ -306,6 +365,7 @@ export default {
visible: false,
isSaveing: false,
options: [],
testitems:[],
qct_defects:[],
routeOptions: [],
supplierOptions: [],
@ -317,10 +377,23 @@ export default {
this.getShift();
this.getMgroup();
this.getMtask();
this.gettestitem();
this.form.fmlog = this.fmlog;
this.form.handle_date = this.$TOOL.dateFormat2(new Date());;
},
methods: {
//
gettestitem(){
let that = this;
that.$API.qm.testitem.list.req({ process: that.process,type:20 }).then((res) => {
res.results.forEach((item) => {
let obj = {};
Object.assign(obj, item);
obj.value = '';
that.testitems.push(obj);
})
});
},
disabledDateFn(time) {
return time.getTime() > new Date().getTime();
},

View File

@ -174,6 +174,7 @@
:fmlog="params.fmlog"
:mgroup="mgroup"
:mtask="mtask"
:process="processId"
@success="handleSaveSuccess"
@closed="dialog.save = false"
>
@ -201,6 +202,10 @@ export default {
type: String,
default: "",
},
processId:{
type: String,
default: "",
},
},
components: {
saveDialog,

View File

@ -148,6 +148,7 @@
v-if="dialog.detail"
ref="detailDialog"
:fmlogId="fmlogId"
:processId="processId"
@closed="detailClose"
>
</detail-drawer>

View File

@ -14,6 +14,7 @@
v-if="values == '日志'&&componentsShow"
:mgroupName="mgroupName"
:mgroupId="mgroupId"
:mgroupMtype = "mgroupMtype"
:mgroupcode="mgroup_code"
:processId="processId"
:deptId = "mgroupDept"
@ -84,6 +85,7 @@ export default {
selectedIndex:0,
mgroup_code:'',
mgroupDept:'',
mgroupMtype:'',
processtype:'',
processId:'',
componentsShow:false,
@ -122,6 +124,7 @@ export default {
that.mgroupName = res[0].name;
that.mgroupId = res[0].id;
that.processId = res[0].process;
that.mgroupMtype = res[0].mtype;
that.processtype = res[0].process_type;
that.mgroupDept = res[0].belong_dept;
that.componentsShow = true;

View File

@ -107,7 +107,7 @@
width="100"
>
<template #default="scope">
<!-- <el-button
<el-button
link size="small"
@click="table_Check(scope.row)"
v-auth="'ftestwork.create'"
@ -121,7 +121,7 @@
@click="tableCheckList(scope.row)"
v-if="scope.row.defect_name == null"
>检验记录
</el-button> -->
</el-button>
<el-button @click="printMaterial(scope.row)" type="text">物料标签</el-button>
</template>
</el-table-column>

View File

@ -17,7 +17,7 @@
style="padding: 0 10px"
>
<el-row>
<el-col :md="12" :sm="24">
<!-- <el-col :md="12" :sm="24">
<el-form-item label="生产类型" prop="mtype">
<el-select
v-model="form.mtype"
@ -34,12 +34,11 @@
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="form.mtype == 20">
</el-col> -->
<el-col :md="12" :sm="24" v-if="mgroupMtype == 20">
<el-form-item
label="外协单位"
prop="supplier"
v-if="form.mtype == 20"
>
<el-select
v-model="form.supplier"
@ -142,7 +141,62 @@
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="mgroupName=='黑化'||mgroupName=='退火'">
<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
v-if="item.field_type=='input-number'"
v-model="item.value"
:min="0"
class="width-100"
controls-position="right"
>
</el-input-number>
<el-input-number
v-if="item.field_type=='input-int'"
v-model="item.value"
:min="0"
class="width-100"
controls-position="right"
>
</el-input-number>
<el-input
v-if="item.field_type=='input-text'"
v-model="item.value"
class="width-100"
>
</el-input>
<el-select
v-if="item.field_type=='select-text'"
v-model="item.value"
clearable
class="width-100"
>
<el-option
v-for="item0 in item.choices"
:key="item0"
:label="item0"
:value="item0"
>
</el-option>
</el-select>
<el-select
v-if="item.field_type=='selects-text'"
v-model="item.value"
clearable
multiple
class="width-100"
>
<el-option
v-for="item1 in item.choices"
:key="item1"
:label="item1"
:value="item1"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :md="12" :sm="24" v-if="mgroupName=='黑化'||mgroupName=='退火'">
<el-form-item label="保温时间" required>
<el-input-number
v-model="form.reminder_interval_list[0]"
@ -159,7 +213,7 @@
controls-position="right"
/>(min)
</el-form-item>
</el-col>
</el-col> -->
<el-col :md="12" :sm="24">
<el-form-item label="操作人">
<ehsSelect
@ -184,7 +238,6 @@
</sc-upload-file>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="备注">
<el-input
@ -237,6 +290,10 @@ export default {
type: String,
default: "",
},
mgroupMtype:{
type: String,
default: "",
}
},
computed: {
title() {
@ -256,6 +313,7 @@ export default {
},
test_file:'',
fileList:[],
testitems:[],
//
form: Object.assign({}, defaultForm),
//
@ -308,6 +366,7 @@ export default {
// this.getUser();
this.getSupplier();
this.getEquipment();
this.gettestitem();
},
methods: {

View File

@ -154,6 +154,7 @@
:process="processId"
:mgroup="mgroupId"
:dept="deptId"
:mgroupMtype="mgroupMtype"
:mgroupName = "mgroupName"
@success="handleSaveSuccess"
@closed="dialog.save = false"
@ -195,6 +196,10 @@ export default {
type: String,
default: "",
},
mgroupMtype:{
type: String,
default: "",
}
},
name: "mlog",
components: {
@ -228,12 +233,8 @@ export default {
let times = 0;
let nowTime = new Date().getTime();
let startTiem = new Date(row.work_start_time).getTime();
console.log('nowTime',nowTime)
console.log('startTiem',startTiem)
let remaTime = nowTime - startTiem;
console.log('remaTime',remaTime)
let temp = Math.floor(remaTime/1000*60);
console.log('temp',temp)
if(remaTime>0&&row.reminder_interval_list[0]){
if(temp<row.reminder_interval_list[0]){
times = row.reminder_interval_list[0]-temp;