This commit is contained in:
zty 2025-08-28 16:21:41 +08:00
commit 8cd7bdb879
10 changed files with 217 additions and 94 deletions

View File

@ -356,6 +356,12 @@ export default {
return await http.delete(`${config.API_URL}/wpm/mlogbw/${id}/`);
},
},
start_test:{
name: "kuaisu",
req: async function (data) {
return await http.post(`${config.API_URL}/wpm/mlogbw/start_test/`,data);
},
}
},
mloguser: {
list: {

View File

@ -1,9 +1,9 @@
<template>
<el-input ref="scanInput" v-model="scanValue" :placeholder="props.placeholder" @keydown="handleKeyDown" :type="inputType"
@focus="handleFocus" clearable />
@focus="handleFocus" clearable/>
</template>
<script setup>
import { ref, defineProps, defineEmits, computed, onMounted } from "vue";
import { ref, defineProps, defineEmits, computed, onMounted, nextTick } from "vue";
import { ElMessage } from 'element-plus'
const scanValue = ref('')
@ -23,30 +23,50 @@ const props = defineProps({
const emit = defineEmits(['scan']);
const inputType = ref('text')
onMounted(()=>{
nextTick(()=>{
// const inputElement = document.querySelector('input[type="text"]');
const inputElement = scanInput.value.$el.querySelector('input');
inputElement.addEventListener("compositionstart", (event) => {
ElMessage.info('请确保输入法为英文!')
});
})
})
function handleKeyDown(e) {
if (e.key === 'Enter') {
// inputType.value = 'text'
// e.target.readOnly = false
const value = scanValue.value.trim()
if (/[\u4e00-\u9fa5]/.test(value)) {
ElMessage.error('扫码内容包含中文或输入法异常,请切换为英文输入法后重试!')
scanValue.value = ''
return
}
if (value) {
// inputType.value = 'text'
else if (value) {
// props.onScan && props.onScan(value)
emit('scan', value)
if (props.clearAfterScan) {
scanValue.value = ''
}
}
else {
ElMessage.error('请扫描正确的条码/二维码!')
}
}
}
function handleFocus(e) {
//
e.target.setAttribute('inputmode', 'text')
e.target.setAttribute('lang', 'en')
// ElMessage.info('')
// e.target.readOnly = true
// inputType.value = 'password'
}
</script>

View File

@ -31,6 +31,8 @@
:params="params"
:query="params"
id="exportDiv"
:summary-method="getSummaries"
show-summary
stripe
>
<el-table-column type="index" width="50" fixed="left"/>
@ -49,7 +51,7 @@
</el-table-column>
<el-table-column label="合格数" class-name="colorheader1">
<template #default="scope">
<span>{{ scope.row.data['毛坯检测_缺陷项_放大率¢2mm不合格']?1-scope.row.data['毛坯检测_缺陷项_放大率¢2mm不合格']:1 }}</span>
<span>{{ scope.row.data['毛坯检测_缺陷项_放大率¢2mm不合格']?0:1 }}</span>
</template>
</el-table-column>
</el-table-column>
@ -78,14 +80,14 @@
</el-table-column>
<el-table-column label="合格数" class-name="colorheader3">
<template #default="scope">
<span>{{ scope.row.data['毛坯检测_缺陷项_剪切¢18.3mm不合格']?1-scope.row.data['毛坯检测_缺陷项_剪切¢18.3mm不合格']:1 }}</span>
<span>{{ !scope.row.data['毛坯检测_缺陷项_剪切¢18.3mm不合格']&&!scope.row.data['毛坯检测_缺陷项_剪切¢18.3mm可加工']?1:0 }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="可加工" class-name="colorheader3">
<el-table-column label="可加工" class-name="colorheader3">
<template #default="scope">
<span>{{ scope.row.data['毛坯检测_缺陷项_剪切¢18.3mm不合格']?1-scope.row.data['毛坯检测_缺陷项_剪切¢18.3mm不合格']:0 }}</span>
<span>{{ scope.row.data['毛坯检测_缺陷项_剪切¢18.3mm可加工']?1:0 }}</span>
</template>
</el-table-column> -->
</el-table-column>
</el-table-column>
<el-table-column label="暗点" align="center" class-name="colorheader4">
<el-table-column label="内标合格" class-name="colorheader4">
@ -102,7 +104,7 @@
</el-table-column>
<el-table-column label="可加工" class-name="colorheader4">
<template #default="scope">
<span v-if="scope.row.data.毛坯检测_检测项_暗点==''||scope.row.data.毛坯检测_检测项_暗点==null">1</span>
<span v-if="scope.row.data.毛坯检测_检测项_暗点!=='合格'&&scope.row.data.毛坯检测_检测项_暗点!=='不合格'">1</span>
<span v-else>0</span>
</template>
</el-table-column>
@ -147,23 +149,14 @@
<span>{{ scope.row.data.毛坯检测_缺陷项_角偏?scope.row.data.毛坯检测_缺陷项_角偏:0 }}</span>
</template>
</el-table-column>
<el-table-column label="出口" align="center" class-name="colorheader6">
<!-- <el-table-column label="出口" align="center" class-name="colorheader6">
<el-table-column label="国标" class-name="colorheader6">
<!-- <template #default="scope">
<span></span>
</template> -->
</el-table-column>
<el-table-column label="内标" class-name="colorheader6">
<!-- <template #default="scope">
<span></span>
</template> -->
</el-table-column>
<el-table-column label="内标放宽" class-name="colorheader6">
<!-- <template #default="scope">
<span></span>
</template> -->
</el-table-column>
</el-table-column>
</el-table-column> -->
<el-table-column label="备注" align="center" class-name="colorheader7">
<template #default="scope">
<span>{{ scope.row.data.毛坯检测_缺陷项_备注 }}</span>
@ -234,7 +227,96 @@ export default {
getCountQt(data,type){
let count_qt = 0,count = 0;
}
},
getSummaries({ columns, data }) {
const sums = [];
let total = data.length;
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = <p class="count_row">合计<br /><br />比率<br /></p>
return;
}
let propert = '';
if(index == 4&&column.label=='合格数'){
propert= '毛坯检测_缺陷项_放大率¢2mm不合格';
}
if(index == 6&&column.label=='合格数'){
propert= '毛坯检测_缺陷项_放大率¢16mm不合格';
}
if(index == 9&&column.label=='合格数'){
propert= '毛坯检测_缺陷项_剪切¢18.3mm不合格';
}
if(index == 10&&column.label=='可加工'){
propert= '毛坯检测_缺陷项_剪切¢18.3mm可加工';
}
if(index == 11&&column.label=='内标合格'||index == 12&&column.label=='长点不合格'||index == 13&&column.label=='可加工'){
propert= '毛坯检测_检测项_暗点';
}
if(index == 14&&column.label=='暗点重'){
propert= '毛坯检测_缺陷项_暗点重';
}
if(index == 15&&column.label=='花丝'){
propert= '毛坯检测_缺陷项_花丝';
}
if(index == 16&&column.label=='网格'){
propert= '毛坯检测_缺陷项_网格';
}
if(index == 17&&column.label=='花朵'){
propert= '毛坯检测_缺陷项_花朵';
}
if(index == 18&&column.label=='S畸变'){
propert= '毛坯检测_缺陷项_S畸变不合格';
}
if(index == 19&&column.label=='弓形畸变不合格'){
propert= '毛坯检测_缺陷项_弓形畸变不合格';
}
if(index == 20&&column.label=='炸废'){
propert= '毛坯检测_缺陷项_炸废';
}
if(index == 21&&column.label=='角偏'){
propert= '毛坯检测_缺陷项_角偏';
}
if (propert!=='') {
let values = [];
if(index==4||index==6){
values = data.map((item) =>!item.data[propert]?1:0);
}else if(index==9){
values = data.map((item) =>!item.data[propert]&&!item.data['毛坯检测_缺陷项_剪切¢18.3mm可加工']?1:0);
}else if(index==11){
values = data.map((item) =>item.data[propert]=='合格'?1:0);
}else if(index==12){
values = data.map((item) =>item.data[propert]=='不合格'?1:0);
}else if(index==13){
values = data.map((item) =>item.data[propert]!=='合格'&&item.data[propert]!=='不合格'?1:0);
}else{
values = data.map((item) =>item.data[propert]!==undefined?Number(item.data[propert]):0);
}
console.log('values',values);
if (!values.every((value) => Number.isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
let value = Number(curr);
let sum = 0;
sum = Number(Number(prev) + Number(curr));
if (!isNaN(value)) {
// let rate = Number(sum/total*100).toFixed(2);
// return <p class="count_row"><div ref="borrowAmount1">{sum}</div><br /><div ref="borrowAmount2">{rate}</div></p>
return sum;
} else {
// let rate = Number(prev/total*100).toFixed(2);
// return <p class="count_row"><div ref="borrowAmount1">{prev}</div><br /><div ref="borrowAmount2">{rate}</div></p>
return prev;
}
}, 0);
} else{
sums[index] = <p class="count_row"><div ref="borrowAmount1">0</div><br /><div ref="borrowAmount2">0</div></p>
}
sums[index] =
<p class="count_row"><div ref="borrowAmount1">{sums[index]}</div><br /><div ref="borrowAmount2">{Number(sums[index]/total*100).toFixed(2)}%</div></p>
}
});
return sums;
},
},
};
</script>

View File

@ -176,8 +176,7 @@ export default {
return {
params: {
ordering:'-data__毛坯检测_小日期',
ordering:'data__毛坯检测_批次号',
querys:[[{field:"wm",value:0,compare:"isnull"},{field:"data__has_key",compare:"",value:"毛坯检测_批次号"}]],
querys:[[{field:"data__has_key",compare:"",value:"毛坯检测_日期"}]],
},
query:{
name__contains:'',
@ -186,7 +185,7 @@ export default {
last_time__lte:'',
},
// apiObj: this.$API.wpm.wpr.query,
apiObj: null,
apiObj: this.$API.wpm.batchstquery,
options:[],
tableData:[],
};

View File

@ -136,17 +136,22 @@
<el-button
type="primary"
link
size="small"
v-if="!query.is_deleted"
@click="formSetting(scope.row)"
v-auth="'user.update'"
>
设置
</el-button>
<el-button
type="success"
link
@click="userERCode(scope.row)"
v-auth="'user.update'"
>
人员二维码
</el-button>
<el-button
link
size="small"
type="warning"
@click="formEdit(scope.row, '2')"
v-auth="'user.update'"
@ -155,7 +160,6 @@
</el-button>
<el-button
link
size="small"
type="danger"
v-if="!query.is_deleted"
@click="formReset(scope.row)"
@ -172,7 +176,6 @@
<el-button
link
type="danger"
size="small"
v-auth="'user.delete'"
>
删除
@ -245,6 +248,27 @@
@success="handleSaveSuccess"
@closed="settingClose"
></save-dialog>
<el-dialog title="人员二维码" v-model="dialog.qrCode" :width="600">
<el-container>
<el-main style="text-align: center;">
<el-descriptions :column="2">
<el-descriptions-item label="姓名:">
{{userItem.name}}
</el-descriptions-item>
<el-descriptions-item label="账号:">
{{userItem.username}}
</el-descriptions-item>
<el-descriptions-item label="部门:">
{{userItem.belong_dept_name}}
</el-descriptions-item>
<el-descriptions-item label="岗位:">
{{userItem.post_name}}
</el-descriptions-item>
</el-descriptions>
<scQrCode :text="scQrCodeText" style="margin: 50px 0;"></scQrCode>
</el-main>
</el-container>
</el-dialog>
</template>
<script>
@ -263,7 +287,7 @@ export default {
return {
dialog: {
save: false,
// certSave:false,
qrCode:false,
},
isDeleted: true,
deletedIs: false,
@ -308,6 +332,8 @@ export default {
name: null,
},
imageUrl: "",
scQrCodeText: "",
userItem: {},
filterParams: {},
tableParams: {},
apiObj: this.$API.system.user.list,
@ -352,6 +378,12 @@ export default {
getImgUrl(img) {
return "http://49.232.14.174:2226" + img;
},
userERCode(row){
let that = this;
that.userItem = row;
that.scQrCodeText = "user#"+row.id;
that.dialog.qrCode = true;
},
//
add() {
this.type = "add";

View File

@ -185,7 +185,7 @@
:cate = "cate_type"
:process = "process"
:mgroupId = "mgroupId"
:deptId = " params.belong_dept"
:deptId = " deptId"
@success="handleinmSuccess"
>
</save-dialog>

View File

@ -259,6 +259,7 @@
>编辑</el-button>
<el-button
type="warning"
v-if="mlogItem.material_in_&&mlogItem.material_in_.tracking==20"
@click="table_out_check_single(scope.row,'ins')"
>详情</el-button>
<el-button
@ -998,7 +999,6 @@ export default {
}else{
this.$refs.checkTable.refreshfun();
}
},
//
handleEditSuccess() {
@ -1012,7 +1012,11 @@ export default {
scheckClose(){
this.dialog.check_single = false;
this.$refs.tableIn.refresh();
this.$refs.tableOut.refresh();
if(this.mlogItem.material_out_&&this.mlogItem.material_out_.tracking==10){
this.$refs.tableOut.refresh();
}else{
this.$refs.checkTable.refreshfun();
}
},
checkDialogClose(){
this.dialog.check = false;

View File

@ -250,7 +250,7 @@
</el-row>
</el-form>
<el-footer>
<el-button type="primary" :loading="isSaveing" @click.stop="checkSetting" save>确定</el-button>
<el-button type="primary" v-loading="isSaveing" @click.stop="checkSetting" save>确定</el-button>
<el-button @click="saveCancel">取消</el-button>
</el-footer>
</el-main>
@ -824,55 +824,20 @@ export default {
that.isSaveing = true;
that.$refs.dialogForm.validate((valid) => {
if (valid) {
Object.assign(that.setForm,that.form);
that.mlogbwlist.forEach(item => {
if(item.ftest!==null){
item.ftest.ftestdefects.forEach(defect => {
if(that.setForm.defectids.indexOf(defect.defect) > -1){
defect.test_user = that.setForm.test_user;
}
})
item.ftest.ftestitems.forEach(testitem => {
if(that.setForm.testitemids.indexOf(testitem.testitem) > -1){
testitem.test_user = that.setForm.test_user;
testitem.test_equip = that.setForm.equipment;
}
})
}else{
let ftest = {};
ftest.ftestitems = [];
ftest.ftestdefects = [];
ftest.qct = that.qct;
ftest.test_date =that.handle_date!=null?that.handle_date:that.currentDate;
ftest.test_user = that.handle_user;
that.qct_defects.forEach((item0) => {
let itemObj = {};
itemObj.defect = item0.defect;
itemObj.has = false;
if(that.setForm.defectids.indexOf(item0.defect) > -1){
itemObj.test_user = that.setForm.test_user;
}else{
itemObj.test_user = that.handle_user;
}
ftest.ftestdefects.push(itemObj);
})
that.qct_testitems.forEach((item1) => {
let itemObj1 = {};
itemObj1.testitem = item1.testitem;
itemObj1.addto_wpr = item1.addto_wpr;
itemObj1.test_val_json = "";
if(that.setForm.testitemids.indexOf(item1.testitem) > -1){
itemObj1.test_user = that.setForm.test_user;
itemObj1.test_equip = that.setForm.equipment;
}else{
itemObj1.test_user = that.handle_user;
}
ftest.ftestitems.push(itemObj1);
})
item.ftest = ftest;
}
});
that.$API.wpm.mlogbw.update.req("bulk",that.mlogbwlist).then((res) => {
let obj = {};
obj.mlogbw_ids = that.mlogbwlist.map(item => item.id);
obj.test_equip = that.form.equipment;
obj.test_user = that.form.test_user;
obj.test_date = that.handle_date!=null?that.handle_date:that.currentDate;
if(that.form.defectids.length>0){
obj.defects = that.form.defectids;
}
if(that.form.testitemids.length>0){
obj.testitems = that.form.testitemids;
}
obj.qct = that.qct;
that.$API.wpm.mlogbw.start_test.req(obj).then((res) => {
that.isSaveing = false;
that.form = {};
that.checkVisible = false;
that.multipleSet = true;
@ -882,13 +847,11 @@ export default {
that.qct_testitems = [];
that.qct_testitems = that.testitemlists;
that.tableHeight = document.getElementById('mlogbwMain').clientHeight-80;
that.isSaveing = false;
that.getList();
}).catch((err) => {
that.isSaveing = false;
return err;
});
}
}).catch(() => {
that.isSaveing = false;
})
}else{ that.isSaveing = false;}
});
},
saveCancel(){

View File

@ -28,9 +28,9 @@
</div>
<div class="right-panel">
<el-input
style="margin-right: 5px"
style="margin-right: 5px;width:200px"
v-model="query.search"
placeholder="名称"
placeholder="批次号"
clearable
></el-input>
<el-button
@ -38,6 +38,11 @@
icon="el-icon-search"
@click="handleQuery"
></el-button>
<el-checkbox
v-model="showHidden"
label="未启用"
@change="hiddenChange"
/>
</div>
</el-header>
<el-main>
@ -197,13 +202,13 @@ export default {
return {
apiObj: null,
params: { mgroup: "" },
query: {},
query: {enabled: true},
dialog: {
save: false,
detail: false,
mtask:false,
},
showHidden: false,
tableData: [],
selection: [],
mtaskoptions:[],
@ -332,6 +337,15 @@ export default {
handleQuery() {
this.$refs.table.queryData(this.query);
},
hiddenChange(val) {
console.log('val',val);
if (val) {
this.query.enabled = false;
} else {
this.query.enabled = true;
}
this.$refs.table.queryData(this.query);
},
//
//
handleSaveSuccess(data, mode) {

View File

@ -33,6 +33,9 @@
<el-descriptions-item label="部门/车间">{{
mlogItem.belong_dept_name
}}</el-descriptions-item>
<el-descriptions-item label="所在班组">{{
mlogItem.team_name
}}</el-descriptions-item>
<el-descriptions-item label="处理人">
<div v-if="mlogItem.handle_users_&&mlogItem.handle_users_.length>0">
<span v-for="item in mlogItem.handle_users_" :key="item.id">{{ item.name }}</span>