var vm = new Vue({
|
el: '#app',
|
data: function () {
|
return {
|
isLoading: false,
|
userInfo: {
|
"loginGuid": '',
|
"loginAccount": '',
|
},
|
formData: {
|
id: "",
|
releaseNo: "",
|
createBy: "",
|
createDate: "",
|
lotNo: "",
|
itemNo: "",
|
billNo: "",
|
fcovertQty: "",
|
detailMem: "",
|
taskNo: "",
|
fcheckResu: "",
|
boardModel: "",
|
planQty: "",
|
mocode: "",
|
boardStyle: ""
|
},
|
isShowTable: false,
|
tableData: [],//返回的检验项目
|
jymxData: [],//展示的检验项目
|
remarks:'',//不合格描述
|
okNum:'',//合格数
|
ngNum: '',//不合格数
|
ttrre: false,
|
show: false,//明细面板
|
tableMxData: [],
|
tabActive: 0,
|
inputValue: '',//特征值输入
|
resultValue: '',//检验结果录入
|
showButton: false,//右上角菜单触发
|
okValue: '',//OK-数量
|
ngValue: '',//NG-数量
|
showDialog: false,//不良表述输入框
|
selectKey: "",//查询关键字
|
actions: [],//列表的值
|
daashow: false,//工单列表展示
|
lineId:[],
|
//图片上传框
|
fileList: [
|
|
],
|
}
|
},
|
mounted() {
|
var that = this;
|
this.userInfo = {
|
loginGuid: this.GetLoginInfor().loginGuid,
|
loginAccount: this.GetLoginInfor().loginAccount,
|
};
|
this.formData.id = this.Request("id"),
|
this.formData.releaseNo = this.Request("releaseNo");
|
this.formData.lotNo = this.Request("lotNo");
|
this.init();
|
},
|
methods: {
|
// 输入过滤
|
handleNumberInput1(value) {
|
// 去除非数字并确保首位不为0(除非是单独的0)
|
this.okValue = value.replace(/[^\d]/g, '') // 去除非数字字符
|
.replace(/^0+(?!$)/, ''); // 去除开头的0,除非整个字符串是0
|
},
|
handleNumberInput2(value) {
|
// 去除非数字并确保首位不为0(除非是单独的0)
|
this.ngValue = value.replace(/[^\d]/g, '') // 去除非数字字符
|
.replace(/^0+(?!$)/, ''); // 去除开头的0,除非整个字符串是0
|
},
|
handleNumberInput3(value) {
|
this.inputValue = value.replace(/[^\d.]/g, '') // 1. 去除非数字和小数点
|
.replace(/(\..*)\./g, '$1') // 2. 禁止多个小数点
|
.replace(/^\./g, '');
|
},
|
//针对没有上下限值的数据,只需选择合格或不合格.按钮触发
|
handleQualified(isQualified) {
|
var input = "";
|
if (isQualified) {
|
// 执行合格相关逻辑
|
input = "OK-1";
|
this.addJyzIpqc(input);
|
} else {
|
// 执行不合格相关逻辑
|
input = "NG-1";
|
this.addJyzIpqc(input);
|
}
|
},
|
togglePopup(index) {
|
// 切换指定索引的 popup 状态
|
var that = this;
|
this.show = true;
|
console.log(index);
|
console.log(that.tableData[index].guid);
|
var mxguid = that.tableData[index].guid;
|
that.jymxData = that.tableData[index];
|
that.tabActive = index;
|
that.AxiosHttp("post", 'MesQaItemsDetect01Manager/GetModel12', {
|
parentGuid : "",
|
guid : mxguid ,
|
}, true, 1).then(function (res1) {
|
if (res1.rtnCode == 1) {
|
that.tableMxData = res1.rtnData;
|
|
} else {
|
that.$toast.fail(res1.rtnMsg);
|
}
|
}).catch(function (error) {
|
that.$toast.fail("网络错误,请重试!");
|
console.log(error);
|
});
|
},
|
|
getInfo() {
|
this.daashow = true;
|
var that = this;
|
that.actions = [];
|
that.isLoading = true;
|
console.log(that.lineId);
|
|
that.AxiosHttp("post", 'Ipqc/GetIpqcXjDaa', {
|
selectKey: that.selectKey,
|
xt: that.lineId,
|
}, false)
|
.then(function (res) {
|
var json = res;
|
if (json.status == 0) {
|
|
if (json.data.tbBillList.length <= 0) {
|
that.$toast.fail("没有可用的数据");
|
that.$playSound('error');
|
} else {
|
that.itemInfo = json.data.tbBillList;
|
that.actions = json.data.tbBillList.map(item => {
|
return {
|
name: item.daaInfo // 拼接字段
|
|
};
|
});
|
}
|
}
|
else {
|
that.$toast.fail(json.message);
|
that.$playSound('error');
|
}
|
that.isLoading = false;
|
})
|
.catch(function (error) {
|
that.isLoading = false;
|
that.$toast.fail("网络错误,请重试!");
|
that.$playSound('error');
|
console.log(error);
|
});
|
},
|
|
onSelect(item) {
|
// 默认情况下点击选项时不会自动收起
|
// 可以通过 close-on-click-action 属性开启自动收起
|
this.daashow = false;
|
console.log(item);
|
// 正则匹配第一个方括号内容
|
const regex = /\[([^\]]+)\]/;
|
const matchResult = item.name.match(regex);
|
|
if (matchResult && matchResult[1]) {
|
this.formData.lotNo = matchResult[1]; // PPBOM00000088-1
|
console.log('提取的DAA001:', this.formData.lotNo);
|
} else {
|
this.$toast.fail('工单号格式异常');
|
this.formData.lotNo = '';
|
}
|
this.createByWomdaa();
|
//this.$toast(item.name);
|
|
},
|
|
getInputJYZ() {
|
// 切换指定索引的 popup 状态
|
var that = this;
|
|
if (!that.inputValue) {
|
this.$toast.fail("检验值不能为空");
|
that.isLoading = false;
|
return;
|
}
|
that.addJyzIpqc(that.inputValue);
|
|
},
|
|
addJyzIpqc(input) {
|
var that = this;
|
var guid1 = that.formData.guid;//主表id
|
var mxguid = that.tableData[that.tabActive].guid;//检验项目的guid
|
that.isLoading = true;
|
that.AxiosHttp("post", 'PqcManager/AddIpqcJyz', {
|
inOrderGuid1: guid1,
|
inOrderGuid5: mxguid,
|
inP1: input,//或者0k-19,或者ng-19,或实际检验值
|
}, true, 1).then(function (res1) {
|
if (res1.rtnCode > 0) {
|
that.$notify({
|
type: 'success', message: res1.rtnMsg
|
});
|
that.refreshJYItem();//刷新检验项目
|
//that.handleTabClick();//刷新检验明细面板
|
//that.$refs.inputValue.focus();
|
that.inputValue = null;
|
} else {
|
that.$toast.fail(res1.rtnMsg);
|
that.inputValue = null;
|
}
|
that.isLoading = false;
|
}).catch(function (error) {
|
that.$toast.fail("网络错误,请重试!");
|
that.inputValue = null;
|
that.isLoading = false;
|
});
|
},
|
|
handleTabClick() {
|
console.log(this.tabActive)
|
this.togglePopup(this.tabActive);
|
},
|
|
//生成检验单
|
createByWomdaa() {
|
const that = this;
|
var guid1 = that.formData.guid;//主表id
|
return that.AxiosHttp("post", 'Ipqc/createByWomdaa', {
|
inOrderGuid1: guid1,
|
userAccount: that.userInfo.loginAccount,
|
DAA001: that.formData.lotNo
|
}, false).then(res => {
|
var json = res;
|
if (json.status == 0) {
|
|
}
|
else {
|
that.$toast.fail(json.message);
|
that.$playSound('error');
|
that.formData.lotNo = "";
|
}
|
that.isLoading = false;
|
that.init();
|
|
}).catch(error => {
|
that.$toast.fail("网络错误,请重试!");
|
console.error('Refresh error:', error);
|
});
|
},
|
|
//检验明细刷新
|
refreshJYItem() {
|
const that = this;
|
return that.AxiosHttp("post", 'LLJ/getJYItem', {
|
releaseNo: that.formData.releaseNo
|
}, false).then(res1 => {
|
const tableData = res1.data.tbBillList || [];
|
that.tableData = tableData;
|
that.handleTabClick();//刷新检验明细面板
|
}).catch(error => {
|
that.$toast.fail("网络错误,请重试!");
|
console.error('Refresh error:', error);
|
});
|
},
|
|
//主页面加载
|
init() {
|
//alert(this.Request("id"));
|
var that = this;
|
that.showButton = false;
|
that.AxiosHttp("post", 'Ipqc/getPageXj', {
|
id: that.Request("id"),
|
pageIndex: 1,
|
limit: 1,
|
}, false)
|
.then(function (res) {
|
let data = res.data.tbBillList[0];
|
if (data) {
|
that.formData = data;
|
that.remarks = that.formData.fnGDesc;
|
that.lineId = data.lineId;
|
that.AxiosHttp("post", 'LLJ/getJYItem', {
|
//id: that.formData.guid,
|
releaseNo: that.formData.releaseNo
|
}, false).then(function (res1) {
|
let tableData = res1.data.tbBillList
|
//当已检验个数都不为空时按照检测结构排序
|
tableData.sort((a, b) => {
|
if (a.result === '未完成' && b.result === '合格') {
|
return -1;
|
} else if (a.result === '合格' && b.result === '未完成') {
|
return 1;
|
} else {
|
return 0;
|
}
|
});
|
that.tableData = tableData;
|
that.GetImageFileByGid();
|
//if (that.tableData.length === 0) {
|
// that.isShowTable = true;
|
//}
|
}).catch(function (error) {
|
that.$toast.fail("网络错误,请重试!");
|
console.log(error);
|
});
|
}
|
})
|
.catch(function (error) {
|
that.$toast.fail("网络错误,请重试!");
|
console.log(error);
|
});
|
},
|
submit() {
|
var that = this;
|
that.ttrre = true;
|
that.AxiosHttp("post", 'FqcManager/EditModelSubmit', {
|
guid: that.formData.guid
|
}, true, 1).then(function (res1) {
|
if (res1.rtnData.outSum == 1) {
|
that.$notify({ type: 'success', message: '提交成功' });
|
that.init();
|
} else {
|
that.$toast.fail(res1.rtnData.outMsg);
|
}
|
that.ttrre = false
|
}).catch(function (error) {
|
that.$toast.fail("网络错误,请重试!");
|
that.ttrre = false
|
console.log(error);
|
});
|
},
|
removeXJ() {
|
const that = this;
|
// 添加确认弹窗
|
that.$dialog.confirm({
|
message: '确认要重新加载检验项目吗?',
|
confirmButtonText: '确认',
|
cancelButtonText: '取消'
|
}).then(() => { // 确认回调
|
that.isLoading = true;
|
that.AxiosHttp("post", 'MesQaItemsDetect01Manager/ReloadModel5', {
|
guid: that.formData.guid
|
}, true, 1).then(res1 => {
|
if (res1.rtnCode == 1) {
|
that.$notify({ type: 'success', message: '重新加载成功' });
|
that.init();
|
} else {
|
that.$toast.fail(res1.rtnMsg);
|
}
|
that.isLoading = false;
|
}).catch(error => {
|
that.$toast.fail("网络错误,请重试!");
|
that.isLoading = false;
|
});
|
|
}).catch(() => { // 取消回调
|
that.$toast('已取消操作');
|
});
|
},
|
GetBack1() {
|
window.history.back();
|
},
|
onClickRight() {
|
|
},
|
updateRemarks(guid) {
|
this.showDialog= true
|
},
|
deleteDetail13(guid12) {
|
const that = this;
|
var guid1 = that.formData.guid;//主表id
|
var mxguid = that.tableData[that.tabActive].guid;//检验项目的guid
|
// 添加确认弹窗
|
that.$dialog.confirm({
|
message: '确认要删除该检验值记录吗?',
|
confirmButtonText: '确认',
|
cancelButtonText: '取消'
|
}).then(() => { // 确认回调
|
that.isLoading = true;
|
that.AxiosHttp("post", 'PqcManager/DeleteIpqcJyz', {
|
inOrderGuid1: guid1,
|
inOrderGuid5: mxguid,
|
inOrderGuid12: guid12
|
}, true, 1).then(res1 => {
|
if (res1.rtnCode > 0) {
|
that.$notify({
|
type: 'success', message: res1.rtnMsg
|
});
|
that.refreshJYItem();//刷新检验项目
|
} else {
|
that.$toast.fail(res1.rtnMsg);
|
}
|
that.isLoading = false;
|
}).catch(error => {
|
that.$toast.fail("网络错误,请重试!");
|
that.isLoading = false;
|
});
|
|
}).catch(() => { // 取消回调
|
that.$toast('已取消操作');
|
that.isLoading = false;
|
});
|
},
|
remarksConfirm() {
|
const that = this;
|
that.isLoading = true;
|
var guid = that.formData.guid;
|
that.AxiosHttp("post", 'Llj/updateRemarks', {
|
gid: guid,
|
Remarks: that.remarks
|
}, true, 0).then(res1 => {
|
if (res1.status == 0) {
|
that.$notify({ type: 'success', message: '输入成功' });
|
that.init();//刷新检验项目
|
} else {
|
that.$toast.fail(res1.rtnMsg);
|
}
|
that.isLoading = false;
|
}).catch(error => {
|
that.$toast.fail("网络错误,请重试!");
|
that.isLoading = false;
|
});
|
},
|
|
async afterRead(file) {
|
try {
|
//alert(APIURL_IMAGE);
|
// 1. 显示上传中状态
|
file.status = 'uploading';
|
file.message = '上传中...';
|
|
// 2. 创建 FormData(关键:字段名必须和后端参数名一致)
|
const formData = new FormData();
|
|
// 3. 构造文件名(根据后端要求用 ~ 分割)
|
// 假设需要 parentGuid,这里从组件数据获取
|
const parentGuid = this.formData.guid; // 根据你的实际数据源调整
|
const customFileName = `${parentGuid}~${file.file.name}`;
|
|
// 4. 添加文件(第二个参数必须使用 new File 包装)
|
formData.append('file', new File([file.file], customFileName, {
|
type: file.file.type
|
}));
|
|
// 5. 调用统一封装的 Axios 方法
|
const res = await this.AxiosHttp(
|
'post',
|
'MesFile/UploadFile', // 根据实际接口路径调整
|
formData,
|
true, // 显示加载状态
|
1 // 超时时间
|
);
|
|
// 6. 处理响应
|
if (res.rtnCode === 1) {
|
file.status = 'done';
|
file.message = '上传成功';
|
file.urlPath = res.rtnData.urlPath; // 保存返回的文件路径
|
file.id = res.rtnData.id; // 保存返回的文件id
|
|
// 可选:上传成功后刷新文件列表
|
// await this.loadFileList();
|
} else {
|
file.status = 'failed';
|
file.message = res.rtnMsg || '上传失败';
|
this.$toast.fail(res.rtnMsg);
|
}
|
|
} catch (error) {
|
// 7. 异常处理
|
file.status = 'failed';
|
file.message = '上传异常';
|
this.$toast.fail('网络错误,请重试');
|
console.error('上传错误:', error);
|
} finally {
|
// 8. 强制更新视图(Vant 3+ 可能需要)
|
this.$nextTick();
|
}
|
},
|
//获取图片信息
|
GetImageFileByGid() {
|
const that = this;
|
that.AxiosHttp("post", 'MesImage/getImage', {
|
parentId: that.formData.guid,
|
}, true, 0).then(res1 => {
|
if (res1.status === 0) {
|
// 关键转换:将后端数据转换为 van-uploader 需要的格式
|
that.fileList = res1.data.tbBillList.map(item => ({
|
url: `${APIURL_IMAGE}/${item.urlPath}`, // 拼接完整访问路径
|
status: 'done', // 标记为已上传成功
|
name: item.fileTitle, // 可选显示文件名
|
message: '已上传', // 可选状态文字
|
// 保留原始数据(按需)
|
id: item.guid
|
}));
|
} else {
|
that.$toast.fail(res1.rtnMsg);
|
}
|
}).catch(error => {
|
that.$toast.fail("网络错误,请重试!");
|
});
|
},
|
handleDelete(file, { index }) {
|
var that = this;
|
that.$dialog.confirm({
|
title: '确认删除',
|
message: '确定要删除这张图片吗?'
|
}).then(() => {
|
// 确认删除逻辑
|
console.log(file);
|
that.AxiosHttp("post", 'MesImage/deleteImage', {
|
id: file.id,
|
}, true, 0).then(res1 => {
|
if (res1.status === 0) {
|
that.$notify({ type: 'success', message: '删除成功' });
|
|
} else {
|
that.$toast.fail(res1.rtnMsg);
|
|
}
|
that.init();//刷新检验项目
|
}).catch(error => {
|
that.$toast.fail("网络错误,请重试!");
|
});
|
|
}).catch(() => {
|
// 取消操作
|
that.init();//刷新检验项目
|
})
|
},
|
}
|
})
|