Merge branch 'master' of https://e.coding.net/ctcdevteam/ehs/ehs_web
This commit is contained in:
commit
846ae282b2
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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 = "";
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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){
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -148,6 +148,7 @@
|
|||
v-if="dialog.detail"
|
||||
ref="detailDialog"
|
||||
:fmlogId="fmlogId"
|
||||
:processId="processId"
|
||||
@closed="detailClose"
|
||||
>
|
||||
</detail-drawer>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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: {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue