赫艾前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4403 lines
166 KiB

​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
4 months ago
4 months ago
​
​
4 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
10 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
9 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
9 months ago
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
4 months ago
4 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
9 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
9 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
4 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
9 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
10 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
9 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
9 months ago
​
9 months ago
​
9 months ago
​
​
​
​
​
9 months ago
​
9 months ago
​
9 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
  1. <template>
  2. <div class="mod-config">
  3. <!-- 条件查询 -->
  4. <el-form :inline="true" label-position="top" :model="searchData">
  5. <!-- <el-form-item :label="'BU'">-->
  6. <!-- <el-select v-model="searchData.buNo" placeholder="请选择" clearable style="width: 75px">-->
  7. <!-- <el-option-->
  8. <!-- v-for = "i in buList"-->
  9. <!-- :key = "i.buNo"-->
  10. <!-- :label = "i.buDesc"-->
  11. <!-- :value = "i.buNo">-->
  12. <!-- </el-option>-->
  13. <!-- </el-select>-->
  14. <!-- </el-form-item>-->
  15. <el-form-item :label="'工厂编码'">
  16. <el-input v-model="searchData.site" clearable style="width: 120px"></el-input>
  17. </el-form-item>
  18. <el-form-item :label="'检验单号'">
  19. <el-input v-model="searchData.inspectionNo" clearable style="width: 120px"></el-input>
  20. </el-form-item>
  21. <el-form-item :label="'物料编码'">
  22. <el-input v-model="searchData.partNo" clearable style="width: 120px"></el-input>
  23. </el-form-item>
  24. <!-- <el-form-item :label="'SKU'">
  25. <el-input v-model="searchData.sku" clearable style="width: 120px"></el-input>
  26. </el-form-item> -->
  27. <el-form-item :label="'物料名称'">
  28. <el-input v-model="searchData.partDesc" clearable style="width: 200px"></el-input>
  29. </el-form-item>
  30. <el-form-item :label="'规格型号'">
  31. <el-input v-model="searchData.spec" clearable style="width: 120px"></el-input>
  32. </el-form-item>
  33. <el-form-item :label="'检验结论'">
  34. <el-select v-model="searchData.inspectionResult" clearable style="width: 80px">
  35. <el-option label="合格" value="合格"></el-option>
  36. <el-option label="不合格" value="不合格"></el-option>
  37. </el-select>
  38. </el-form-item>
  39. <el-form-item :label="'检验类型'">
  40. <el-select v-model="searchData.inspectionTypeNo" clearable style="width: 100px">
  41. <el-option label="IPQC首检" value="首件检"></el-option>
  42. <el-option label="IPQC自检" value="自检"></el-option>
  43. <el-option label="IPQC巡检" value="巡检"></el-option>
  44. <el-option label="IPQC末件检" value="末件检"></el-option>
  45. </el-select>
  46. </el-form-item>
  47. <el-form-item :label="'处置措施'">
  48. <el-select v-model="searchData.disposalMeasures" clearable style="width: 90px">
  49. <el-option
  50. v-for = "i in disposalMeasuresOptions"
  51. :key = "i.id"
  52. :label = "i.disposalMeasures"
  53. :value = "i.disposalMeasures">
  54. </el-option>
  55. </el-select>
  56. </el-form-item>
  57. </el-form>
  58. <el-form :inline="true" label-position="top" :model="searchData">
  59. <el-form-item :label="'PN'">
  60. <el-input v-model="searchData.cinvSourceCode" clearable style="width: 120px"></el-input>
  61. </el-form-item>
  62. <el-form-item :label="'工单号'">
  63. <el-input v-model="searchData.orderNo" clearable style="width: 137px"></el-input>
  64. </el-form-item>
  65. <el-form-item :label="'派工单号'">
  66. <el-input v-model="searchData.seqNo" clearable style="width: 167px"></el-input>
  67. </el-form-item>
  68. <el-form-item :label="'工序'">
  69. <el-input v-model="searchData.operationDesc" clearable style="width: 108px"></el-input>
  70. </el-form-item>
  71. <el-form-item :label="'状态'">
  72. <el-select v-model="searchData.states" multiple style="width: 340px">
  73. <el-option label="未开始" value="未开始"></el-option>
  74. <el-option label="待检验" value="待检验"></el-option>
  75. <el-option label="待审核" value="待审核"></el-option>
  76. <el-option label="已完成" value="已完成"></el-option>
  77. </el-select>
  78. </el-form-item>
  79. </el-form>
  80. <el-form :inline="true" label-position="top" :model="searchData">
  81. <el-form-item :label="'送检日期'">
  82. <el-date-picker style="width: 160px" v-model="searchData.startDate2" type="datetime" value-format='yyyy-MM-dd HH:mm' format='yyyy-MM-dd HH:mm' placeholder="开始日期"></el-date-picker>
  83. -
  84. <el-date-picker style="width: 160px" v-model="searchData.endDate2" type="datetime" value-format='yyyy-MM-dd HH:mm' format='yyyy-MM-dd HH:mm' placeholder="结束日期"></el-date-picker>
  85. </el-form-item>
  86. <el-form-item :label="'检验时间:'">
  87. <el-date-picker style="width: 170px" v-model="searchData.startDate" type="datetime" value-format='yyyy-MM-dd HH:mm:ss' format='yyyy-MM-dd HH:mm:ss' placeholder="开始日期"></el-date-picker>
  88. -
  89. <el-date-picker style="width: 170px" v-model="searchData.endDate" type="datetime" value-format='yyyy-MM-dd HH:mm:ss' format='yyyy-MM-dd HH:mm:ss' placeholder="结束日期"></el-date-picker>
  90. </el-form-item>
  91. <el-form-item :label="' '">
  92. <el-button v-if="!authSearch" type="primary" :loading="searchLoading" @click="getDataList">查询</el-button>
  93. <el-button v-if="!authSave" type="primary" @click="addModal">新增</el-button>
  94. <el-button v-if="!authCheck" type="primary" @click="submitResult">审核</el-button>
  95. <el-button v-if="!authCancelCheck" type="primary" @click="cancelApproval">取消审核</el-button>
  96. <el-button v-if="!authDelete" type="primary" @click="deleteModal">删除</el-button>
  97. <el-button v-if="!authOverLoad" type="primary" :loading="overLoadLoading" @click="overLoadModal">任务重载</el-button>
  98. <el-button type="primary" @click="printList">打印</el-button>
  99. <download-excel
  100. :fields="fields()"
  101. :data="exportData"
  102. type="xls"
  103. :name="exportName"
  104. :header="exportHeader"
  105. :footer="exportFooter"
  106. :fetch="createExportData"
  107. :before-generate="startDownload"
  108. :before-finish="finishDownload"
  109. worksheet="导出信息"
  110. class="el-button el-button--primary el-button--medium">
  111. {{ "导出" }}
  112. </download-excel>
  113. </el-form-item>
  114. </el-form>
  115. <!-- 检验记录展示列表 -->
  116. <el-table
  117. :height="height"
  118. :data="dataList"
  119. border
  120. ref="IPQCTable"
  121. @row-click="IPQCClickRow"
  122. @selection-change="selectionIPQC"
  123. style="width: 100%;">
  124. <el-table-column
  125. type="selection"
  126. header-align="center"
  127. align="center"
  128. :selectable="selectFlag"
  129. width="50">
  130. </el-table-column>
  131. <el-table-column
  132. prop="state"
  133. header-align="center"
  134. align="center"
  135. label="状态">
  136. <template slot-scope="scope">
  137. <div :style="{fontWeight:'bold', color: scope.row.state =='待检验' ? 'red' : scope.row.state =='待审核' ? '#ffa500e0' : scope.row.state =='已完成' ? '#3ac252' : ''}">
  138. {{ scope.row.state }}
  139. </div>
  140. </template>
  141. </el-table-column>
  142. <el-table-column
  143. v-for="(item,index) in columnList1" :key="index"
  144. :sortable="item.columnSortable"
  145. :prop="item.columnProp"
  146. :header-align="item.headerAlign"
  147. :show-overflow-tooltip="item.showOverflowTooltip"
  148. :align="item.align"
  149. :fixed="item.fixed==''?false:item.fixed"
  150. :min-width="item.columnWidth"
  151. :label="item.columnLabel">
  152. <template slot-scope="scope">
  153. <span v-if="!item.columnHidden">
  154. <template v-if="item.columnProp === 'pictureFlag'">
  155. <span :style="{ color: scope.row[item.columnProp] === 'Y' ? 'red' : '' }">{{ scope.row[item.columnProp] === 'Y' ? '是' : scope.row[item.columnProp] === 'N' ? '否' : scope.row[item.columnProp] }}</span>
  156. </template>
  157. <template v-else>{{ scope.row[item.columnProp] }}</template>
  158. </span>
  159. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  160. </template>
  161. </el-table-column>
  162. <el-table-column
  163. fixed="right"
  164. header-align="center"
  165. align="center"
  166. width="130"
  167. label="操作">
  168. <template slot-scope="scope">
  169. <el-link style="cursor: pointer" v-if="!authDetail && scope.row.state === '未开始'" @click="actionModal(scope.row)">开始检验</el-link>
  170. <el-link style="cursor: pointer" v-if="!authDetail && scope.row.state !== '未开始'" @click="detailModal(scope.row)">检验单</el-link>
  171. <el-link style="cursor: pointer" v-if="!authFile" @click="getFileContentData(scope.row)">工作文件</el-link>
  172. </template>
  173. </el-table-column>
  174. </el-table>
  175. <!-- 分页-->
  176. <el-pagination
  177. @size-change="sizeChangeHandle"
  178. @current-change="currentChangeHandle"
  179. :current-page="pageIndex"
  180. :page-sizes="[20, 50, 100, 200, 500]"
  181. :page-size="pageSize"
  182. :total="totalPage"
  183. layout="total, sizes, prev, pager, next, jumper">
  184. </el-pagination>
  185. <!-- 新增巡检记录 -->
  186. <el-dialog title="新增检验记录" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="495px">
  187. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  188. <!-- <el-form-item label="BU" prop="bu" :rules="rules.bu">-->
  189. <!-- <el-select v-model="modalData.bu" placeholder="请选择" @change="buChange" style="width: 221px">-->
  190. <!-- <el-option-->
  191. <!-- v-for = "i in userBuList"-->
  192. <!-- :key = "i.buNo"-->
  193. <!-- :label = "i.sitename"-->
  194. <!-- :value = "i.buNo">-->
  195. <!-- <span style="float: left;width: 100px">{{ i.sitename }}</span>-->
  196. <!-- <span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">-->
  197. <!-- {{ i.buDesc }}-->
  198. <!-- </span>-->
  199. <!-- </el-option>-->
  200. <!-- </el-select>-->
  201. <!-- </el-form-item>-->
  202. <el-form-item label="工厂编码" prop="site" :rules="rules.site">
  203. <el-input v-model="modalData.site" style="width: 221px" disabled></el-input>
  204. </el-form-item>
  205. <el-form-item label="标签号">
  206. <el-input v-if="this.modalData.specialTaskFlag === 'Y'" disabled v-model="modalData.rollNo" style="width: 221px"></el-input>
  207. <el-input v-else v-model="modalData.rollNo" @keyup.native.enter="rollNoEnter" clearable style="width: 221px"></el-input>
  208. </el-form-item>
  209. </el-form>
  210. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  211. <el-form-item v-if="this.modalData.specialTaskFlag !== 'Y' && (this.modalData.rollNo === '' || this.modalData.rollNo == null)" prop="orderNo" :rules="rules.seqNoType">
  212. <span style="cursor: pointer" slot="label" @click="getBaseList(1052)"><a herf="#">派工单号</a></span>
  213. <el-input v-model="modalData.seqNo" style="width: 221px"></el-input>
  214. </el-form-item>
  215. <el-form-item v-if="this.modalData.specialTaskFlag !== 'Y' && this.modalData.rollNo !== '' && this.modalData.rollNo != null" prop="orderNo" :rules="rules.seqNoType">
  216. <span slot="label">派工单号</span>
  217. <el-input v-model="modalData.seqNo" disabled style="width: 221px"></el-input>
  218. </el-form-item>
  219. <el-form-item v-if="this.modalData.specialTaskFlag === 'Y'" prop="orderNo" :rules="rules.seqNoType">
  220. <span slot="label">派工单号</span>
  221. <el-input v-model="modalData.seqNo" disabled style="width: 221px"></el-input>
  222. </el-form-item>
  223. <el-form-item label="工单号" prop="orderNo" :rules="rules.orderNoType">
  224. <el-input v-model="modalData.orderNo" style="width: 221px" disabled></el-input>
  225. </el-form-item>
  226. </el-form>
  227. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  228. <el-form-item label="工序" prop="operationDesc" :rules="rules.operationDescType">
  229. <el-select v-model="modalData.operationDesc" placeholder="请选择" style="width: 221px">
  230. <el-option
  231. v-for = "i in operationList"
  232. :key = "i.operationNo"
  233. :label = "i.operationDesc"
  234. :value = "i.operationDesc">
  235. </el-option>
  236. </el-select>
  237. </el-form-item>
  238. <el-form-item v-if="this.modalData.specialTaskFlag === 'Y'">
  239. <span style="cursor: pointer" slot="label" @click="getBaseList(505)"><a herf="#">机台</a></span>
  240. <el-input v-model="modalData.resourceDesc" style="width: 221px"></el-input>
  241. </el-form-item>
  242. <el-form-item v-else label="机台" prop="resourceId" :rules="rules.resourceIdType">
  243. <el-input v-model="modalData.resourceDesc" style="width: 221px"></el-input>
  244. </el-form-item>
  245. </el-form>
  246. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
  247. <el-form-item v-if="this.modalData.specialTaskFlag === 'Y'" :model="modalData">
  248. <span style="cursor: pointer" slot="label" @click="queryPartList"><a herf="#">物料编码</a></span>
  249. <el-input v-model="modalData.partNo" style="width: 221px"></el-input>
  250. </el-form-item>
  251. <el-form-item v-else label="物料编码" prop="partNo" :rules="rules.partNoType">
  252. <el-input v-model="modalData.partNo" readonly style="width: 221px"></el-input>
  253. </el-form-item>
  254. <el-form-item label="物料名称">
  255. <el-input v-model="modalData.partDesc" readonly style="width: 221px"></el-input>
  256. </el-form-item>
  257. </el-form>
  258. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
  259. <el-form-item label="物料类别">
  260. <el-input v-model="modalData.invdefinetype" readonly style="width: 221px"></el-input>
  261. </el-form-item>
  262. <el-form-item label="SKU">
  263. <el-input v-model="modalData.sku" readonly style="width: 221px"></el-input>
  264. </el-form-item>
  265. </el-form>
  266. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  267. <el-form-item label="检验类型" prop="inspectionTypeNo" :rules="rules.inspectionTypeNoType">
  268. <el-select v-model="modalData.inspectionTypeNo" style="width: 221px">
  269. <el-option label="首件检" value="首件检"></el-option>
  270. <el-option label="自检" value="自检"></el-option>
  271. <el-option label="巡检" value="巡检"></el-option>
  272. <el-option label="末件检" value="末件检"></el-option>
  273. </el-select>
  274. </el-form-item>
  275. <el-form-item label="送检数量" prop="rollQty" :rules="rules.rollQtyType">
  276. <el-input v-model="modalData.rollQty" type="number" style="width: 103px"></el-input>
  277. </el-form-item>
  278. <el-form-item label="单位" prop="umId" :rules="rules.umIdType">
  279. <el-select v-model="modalData.umId" placeholder="请选择" style="width: 103px">
  280. <el-option
  281. v-for = "i in umList"
  282. :key = "i.umId"
  283. :label = "i.umName"
  284. :value = "i.umId">
  285. </el-option>
  286. </el-select>
  287. </el-form-item>
  288. </el-form>
  289. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
  290. <el-form-item prop="templateId" :rules="rules.templateId">
  291. <span style="cursor: pointer" v-if="'1' === '1'" slot="label" @click="queryTemplateList"><a>检验模板</a></span>
  292. <span v-else slot="label">检验模板</span>
  293. <el-input v-model="modalData.templateName" disabled style="width: 221px"></el-input>
  294. </el-form-item>
  295. <el-form-item label="送检总数">
  296. <el-input v-model="modalData.sjzs" disabled style="width: 120px"></el-input>
  297. </el-form-item>
  298. <el-form-item label=" ">
  299. <input type="checkbox" id="specialTask" name="specialTask" v-model="checked" @click="changeSpecialTask"/> <label for="specialTask">无工单检验</label>
  300. </el-form-item>
  301. </el-form>
  302. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
  303. <el-form-item label="特殊要求">
  304. <el-input type="textarea" v-model="modalData.specialRequirements" :rows="3" resize='none' show-word-limit style="width: 456px;height: 30px"></el-input>
  305. </el-form-item>
  306. </el-form>
  307. <el-footer style="height:40px;margin-top: 55px;text-align:center">
  308. <el-button type="primary" :loading="saveLoading" @click="saveData">保存</el-button>
  309. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  310. </el-footer>
  311. </el-dialog>
  312. <!-- 检验单详情页 -->
  313. <el-dialog title="检验明细清单" :close-on-click-modal="false" v-drag :visible.sync="detailInformationFlag" width="1200px">
  314. <el-form :inline="true" label-position="top" @keyup.enter.native = "getDataList">
  315. <el-form-item :label="'物料编码'">
  316. <el-input v-model="detailData.partNo" readonly style="width: 100px"></el-input>
  317. </el-form-item>
  318. <el-form-item :label="'物料类别'">
  319. <el-input v-model="detailData.invdefinetype" readonly style="width: 100px"></el-input>
  320. </el-form-item>
  321. <el-form-item :label="'PN'">
  322. <el-input v-model="detailData.cinvSourceCode" readonly style="width: 100px"></el-input>
  323. </el-form-item>
  324. <el-form-item :label="'SKU'">
  325. <el-input v-model="detailData.sku" readonly style="width: 100px"></el-input>
  326. </el-form-item>
  327. <el-form-item :label="'物料名称'">
  328. <el-input v-model="detailData.partDesc" readonly style="width: 300px"></el-input>
  329. </el-form-item>
  330. <el-form-item :label="'单位'">
  331. <el-input v-model="detailData.umName" readonly style="width: 60px"></el-input>
  332. </el-form-item>
  333. <el-form-item>
  334. <span v-if="detailData.submitFlag === 'Y'" slot="label">协同人员</span>
  335. <span v-else style="cursor: pointer" slot="label" @click="getOperatorList"><a>协同人员</a></span>
  336. <el-input v-model="detailData.operatorName" readonly style="width: 150px"></el-input>
  337. </el-form-item>
  338. <el-form-item>
  339. <span v-if="detailData.submitFlag === 'Y'" slot="label">责任人</span>
  340. <span v-else style="cursor: pointer" slot="label" @click="getResponsiblePersonList"><a>责任人</a></span>
  341. <el-input v-model="detailData.responsiblePersonName" readonly style="width: 150px"></el-input>
  342. </el-form-item>
  343. </el-form>
  344. <el-form :inline="true" label-position="top" @keyup.enter.native = "getDataList">
  345. <el-form-item :label="'送检数量'">
  346. <el-input-number :controls="false" :step="0" v-model="detailData.rollQty" style="width: 85px"></el-input-number>
  347. </el-form-item>
  348. <el-form-item :label="'抽样数量'">
  349. <el-input-number :controls="false" :step="0" v-model="detailData.samplingQty" style="width: 85px"></el-input-number>
  350. </el-form-item>
  351. <el-form-item :label="'合格数量'">
  352. <el-input-number :controls="false" :step="0" :min="0" v-if="detailData.submitFlag === 'Y'" v-model="detailData.passQty" disabled style="width: 85px"></el-input-number>
  353. <el-input-number :controls="false" :step="0" :min="0" v-else v-model="detailData.passQty" style="width: 85px"></el-input-number>
  354. </el-form-item>
  355. <el-form-item :label="'不合格数量'">
  356. <el-input-number :controls="false" :step="0" :min="0" v-model="detailData.notPassQty" disabled style="width: 85px"></el-input-number>
  357. </el-form-item>
  358. <el-form-item :label="'不合格项目数量'">
  359. <el-input-number :controls="false" :step="0" v-if="detailData.submitFlag === 'Y'" v-model="detailData.unqualifiedQty" disabled style="width: 85px"></el-input-number>
  360. <el-input-number :controls="false" :step="0" v-else v-model="detailData.unqualifiedQty" style="width: 85px"></el-input-number>
  361. </el-form-item>
  362. <el-form-item :label="'批次合格数'">
  363. <el-input-number :controls="false" :step="0" :min="0" v-model="detailData.batchQualifiedQty" disabled style="width: 85px"></el-input-number>
  364. </el-form-item>
  365. <el-form-item :label="'批次不合格数'">
  366. <el-input-number :controls="false" :step="0" :min="0" v-model="detailData.notbatchQualifiedQty" disabled style="width: 85px"></el-input-number>
  367. </el-form-item>
  368. <el-form-item style="margin-top: 13px;margin-left: 365px">
  369. <!-- <el-button v-if="detailData.submitFlag !== 'Y'" :loading="loadFlag" @click="dataAcquisition">-->
  370. <!-- <svg t="1739002700745" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="38076" width="22" height="22"><path d="M922.000696 762.746435V465.363478l55.652174-0.111304v299.542261c0 131.695304-106.562783 239.571478-236.922435 239.571478H285.42887C155.158261 1004.365913 48.484174 896.623304 48.484174 764.794435V465.252174h59.258435v299.542261c0 101.843478 77.022609 179.712 177.775304 179.712H740.841739c100.61913 0 181.158957-79.916522 181.158957-181.76z" fill="#1D293F" p-id="38077"></path><path d="M290.148174 192.556522c20.301913-20.925217 30.47513-48.617739 30.47513-83.099826 0-72.548174-36.285217-108.833391-108.722087-108.833392H141.401043v223.365566h70.255305c32.055652-0.111304 58.167652-10.529391 78.491826-31.432348z m-105.227131-7.635479V39.446261h23.596522c19.70087 0 35.661913 6.166261 47.994435 18.632348 12.354783 12.466087 18.387478 29.740522 18.387478 52.001391 0 22.973217-5.921391 41.22713-17.652869 54.650435s-27.937391 20.190609-48.617739 20.190608H184.921043zM634.434783 595.366957h-84.057044V498.866087a102.511304 102.511304 0 0 0 74.262261-98.54887c0-56.230957-45.478957-102.310957-101.10887-102.310956-55.629913 0-101.086609 46.08-101.086608 102.310956 0 46.08 30.586435 85.25913 72.192 97.947826v96.990609h-81.252174c-16.829217-43.78713-50.688-99.283478-81.65287-143.070609a101.331478 101.331478 0 0 0 14.269218-52.001391c0-56.230957-45.946435-102.310957-102.177392-102.310956s-102.177391 46.08-102.177391 102.310956c0 56.230957 45.946435 102.310957 102.177391 102.310957 15.716174 0 30.72-3.628522 44.009739-10.017392 21.170087 34.326261 42.829913 74.351304 57.811479 102.778435h-73.906087l128.333913 130.493218 94.675478-108.966957v145.853217h-111.616l148.034783 148.858435 130.715826-148.858435h-111.504696v-129.402434l91.180522 92.516174 113.307826-130.248348h-53.203478c14.758957-28.42713 36.173913-68.452174 57.210434-102.800696 13.178435 6.41113 27.937391 10.039652 43.542261 10.039652 55.629913 0 101.086609-46.08 101.086609-102.310956 0-56.230957-45.456696-102.310957-101.086609-102.310957-55.652174 0-101.220174 46.08-101.220174 102.310957a102.4 102.4 0 0 0 14.135653 52.001391c-30.72 43.653565-64.200348 99.283478-80.896 142.937044z m-390.611479-148.48a46.614261 46.614261 0 0 1-46.436174-46.458435c0-25.510957 20.925217-46.436174 46.436174-46.436174s46.436174 20.925217 46.436174 46.436174-20.925217 46.436174-46.436174 46.436174z m279.819131 0c-25.266087 0-45.946435-20.925217-45.946435-46.458435 0-25.510957 20.702609-46.436174 45.968696-46.436174 25.266087 0 45.946435 20.925217 45.946434 46.436174s-20.680348 46.436174-45.946434 46.436174z m278.639304-93.005914c25.288348 0 45.968696 20.925217 45.968696 46.436174s-20.702609 46.436174-45.968696 46.436174c-25.266087 0-45.946435-20.925217-45.946435-46.436174s20.680348-46.436174 45.946435-46.436174zM395.130435 172.722087h74.128695l15.248696 51.155478h47.415652L458.707478 0.623304h-51.155478L332.8 223.98887h47.170783l15.11513-51.266783z m32.768-114.777044c1.825391-6.032696 3.027478-12.332522 3.517217-18.854956h1.202087c0.601043 8.102957 1.691826 14.514087 3.138783 19.456l23.218087 77.401043h-54.405566l23.329392-78.002087z m168.96 165.932522h43.631304V39.446261h58.189913V0.623304h-159.877565v38.956522h58.056348v184.297739z m169.894956-51.155478h74.128696l15.248696 51.155478h47.415652L830.330435 0.623304h-51.155478l-74.752 223.365566h47.193043l15.09287-51.266783z m32.768-114.777044c1.825391-6.032696 3.027478-12.332522 3.517218-18.854956h1.202087c0.601043 8.102957 1.691826 14.514087 3.161043 19.456l23.218087 77.401043h-54.427826l23.329391-78.002087z" fill="#FD9F01" p-id="38078"></path></svg>-->
  371. <!-- </el-button>-->
  372. <el-button @click="getFileContentData(detailData)">
  373. <svg t="1739002974630" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="59598" width="22" height="22"><path d="M807.3216 889.5488H221.184c-78.7456 0-142.848-64.1024-142.848-142.848V286.976c0-78.7456 64.1024-142.848 142.848-142.848h178.8416c20.7872 0 40.7552 8.8064 54.784 24.1664l77.568 85.0944c2.4064 2.6112 5.8368 4.1472 9.3696 4.1472h265.5232c78.7456 0 142.848 64.1024 142.848 142.848v346.2656c0.0512 78.7968-64.0512 142.8992-142.7968 142.8992zM221.184 205.568c-44.9024 0-81.408 36.5056-81.408 81.408v459.6736c0 44.9024 36.5056 81.408 81.408 81.408h586.1376c44.9024 0 81.408-36.5056 81.408-81.408V400.4352c0-44.9024-36.5056-81.408-81.408-81.408h-265.5232c-20.7872 0-40.7552-8.8064-54.784-24.1664L409.3952 209.7152c-2.4064-2.6112-5.8368-4.1472-9.3696-4.1472H221.184z" fill="#6FB1F9" p-id="59599"></path><path d="M466.0224 453.8368H249.0368c-16.9472 0-30.72-13.7728-30.72-30.72s13.7728-30.72 30.72-30.72h216.9856c16.9472 0 30.72 13.7728 30.72 30.72s-13.7728 30.72-30.72 30.72z" fill="#6FB1F9" p-id="59600"></path></svg>
  374. </el-button>
  375. <el-button @click="subDetailUpload">
  376. <svg t="1739002903501" class="icon" viewBox="0 0 1550 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="50418" width="22" height="22"><path d="M985.000229 727.917714c20.48 0 34.113829-13.663086 34.113828-34.143085 0-10.24-3.393829-17.056914-10.24-23.873829l-204.8-204.8c-6.816914-6.846171-13.633829-10.24-23.873828-10.24-10.24 0-17.086171 3.393829-23.903086 10.24l-204.8 204.8c-6.816914 6.816914-10.24 13.633829-10.24 23.873829 0 20.48 13.663086 34.143086 34.143086 34.143085 10.24 0 17.056914-3.423086 23.873828-10.24l146.783086-146.783085v395.966171c0 20.48 13.663086 34.113829 34.143086 34.113829s34.113829-13.633829 34.113828-34.113829V570.894629l146.783086 146.783085c6.816914 6.816914 13.663086 10.24 23.903086 10.24z m282.799542-353.045943c0-10.24 1.287314-17.086171 0-27.296914C1240.502857 128.117029 1043.0464 29.257143 858.199771 29.257143 701.205943 29.257143 564.662857 117.994057 496.405943 247.720229 469.079771 240.874057 441.782857 234.057143 414.485943 234.057143 281.365943 234.057143 175.542857 307.112229 175.542857 440.232229c0 17.056914 3.423086 34.113829 6.816914 51.2C97.514057 535.786057 29.257143 585.5232 29.257143 723.031771c0 170.656914 136.543086 277.942857 307.2 277.942858H585.142857c20.48 0 34.143086-13.633829 34.143086-34.113829S605.622857 932.717714 585.142857 932.717714h-248.685714c-133.12 0-238.943086-76.565943-238.943086-209.685943 0-82.797714 37.566171-131.657143 105.325714-166.765714l58.046172-20.48-13.663086-61.44c-3.423086-10.24-3.423086-23.873829-3.423086-34.113828 0-95.583086 75.103086-137.918171 170.686172-137.918172 20.48 0 37.536914 3.423086 58.016914 10.24l54.623086 20.48 27.296914-51.2c61.44-112.64 179.317029-198.100114 303.776914-184.32 184.846629 20.48 309.511314 71.68 341.343086 250.0608 1.199543 6.787657 0 10.24 0 17.056914v6.846172l-3.423086 47.776914 44.383086 20.48c110.094629 34.6112 222.354286 143.36 222.354286 249.183086 0 150.176914-122.88 243.799771-273.056914 243.799771h-214.571886c-20.48 0-34.113829 13.663086-34.113829 34.143086s13.633829 34.113829 34.113829 34.113829h214.571886c187.713829 0 341.313829-124.342857 341.313828-312.056686 0-144.530286-121.270857-269.663086-263.314286-314.046172z" fill="#6C5FFC" p-id="50419"></path></svg>
  377. </el-button>
  378. </el-form-item>
  379. </el-form>
  380. <el-form :inline="true" label-position="top">
  381. <el-form-item :label="'检验结论'">
  382. <el-select v-if="detailData.submitFlag === 'Y'" v-model="detailData.inspectionResult" disabled style="width: 100px" placeholder="请选择">
  383. <el-option label="合格" value="合格"></el-option>
  384. <el-option label="不合格" value="不合格"></el-option>
  385. </el-select>
  386. <el-select v-else v-model="detailData.inspectionResult" @change="resultChange" style="width: 100px" placeholder="请选择">
  387. <el-option label="合格" value="合格"></el-option>
  388. <el-option label="不合格" value="不合格"></el-option>
  389. </el-select>
  390. </el-form-item>
  391. <el-form-item :label="'质检备注'">
  392. <el-input v-if="detailData.submitFlag === 'Y'" v-model="detailData.inspectionRemark" disabled style="width: 293px"></el-input>
  393. <el-input v-else v-model="detailData.inspectionRemark" style="width: 293px"></el-input>
  394. </el-form-item>
  395. <el-form-item v-show="detailData.inspectionResult === '不合格'" style="margin-top: 5px">
  396. <el-form-item :label="'处置措施'">
  397. <el-select v-if="detailData.submitFlag === 'Y'" clearable v-model="detailData.disposalMeasures" disabled style="width: 100px">
  398. <el-option
  399. v-for = "i in disposalMeasuresOptions"
  400. :key = "i.id"
  401. :label = "i.disposalMeasures"
  402. :value = "i.disposalMeasures">
  403. </el-option>
  404. </el-select>
  405. <el-select v-else clearable v-model="detailData.disposalMeasures" style="width: 100px">
  406. <el-option
  407. v-for = "i in disposalMeasuresOptions"
  408. :key = "i.id"
  409. :label = "i.disposalMeasures"
  410. :value = "i.disposalMeasures">
  411. </el-option>
  412. </el-select>
  413. </el-form-item>
  414. <el-form-item :label="'处置说明'">
  415. <el-input v-if="detailData.submitFlag === 'Y'" v-model="detailData.disposalRemark" disabled style="width: 293px"></el-input>
  416. <el-input v-else v-model="detailData.disposalRemark" style="width: 293px"></el-input>
  417. </el-form-item>
  418. </el-form-item>
  419. </el-form>
  420. <!-- 展示列表 -->
  421. <div class="rq ">
  422. <el-table
  423. :height="500"
  424. :data="detailList"
  425. border
  426. style="width: 100%;">
  427. <el-table-column
  428. prop=""
  429. header-align="center"
  430. align="center"
  431. :min-width="90"
  432. label="操作">
  433. <template slot-scope="scope">
  434. <el-button class="el-icon-picture" v-if="scope.row.imageDetailNum > 0" type="success" @click="uploadImageModal(scope.row)"></el-button>
  435. <el-button class="el-icon-picture" v-else type="primary" @click="uploadImageModal(scope.row)"></el-button>
  436. <!-- <el-button style="margin-left: 2px" class="el-icon-s-platform" type="primary" :loading="loadFlag" @click="dataAcquisitionByItem(scope.row)"></el-button>-->
  437. </template>
  438. </el-table-column>
  439. <el-table-column
  440. v-for="(item,index) in detailColumnList" :key="index"
  441. :sortable="item.columnSortable"
  442. :prop="item.columnProp"
  443. :header-align="item.headerAlign"
  444. :show-overflow-tooltip="item.showOverflowTooltip"
  445. :align="item.align"
  446. :fixed="item.fixed==''?false:item.fixed"
  447. :min-width="item.columnWidth"
  448. :label="item.columnLabel">
  449. <template slot-scope="scope">
  450. <span v-if="!item.columnHidden">
  451. <template v-if="item.columnProp === 'pictureFlag'">
  452. <span :style="{ color: scope.row[item.columnProp] === 'Y' ? 'red' : '' }">{{ scope.row[item.columnProp] === 'Y' ? '是' : scope.row[item.columnProp] === 'N' ? '否' : scope.row[item.columnProp] }}</span>
  453. </template>
  454. <template v-else>{{ scope.row[item.columnProp] }}</template>
  455. </span>
  456. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  457. </template>
  458. </el-table-column>
  459. <el-table-column
  460. prop=""
  461. header-align="center"
  462. align="right"
  463. :min-width="80"
  464. label="实测值">
  465. <template slot-scope="scope">
  466. <el-input :ref="`textValue${scope.$index}`" v-if="scope.row.valueTypeDb === 'N'" v-model="scope.row.numberValue" @keyup.enter.native="focusNextInput(scope.$index, 'textValue')" type="number" @change="updateItemResult(scope.row)" style="height: 11px; width: 98%"></el-input>
  467. <el-input :ref="`textValue${scope.$index}`" v-else v-model="scope.row.textValue" @keyup.enter.native="focusNextInput(scope.$index, 'textValue')" style="height: 11px; width: 98%"></el-input>
  468. </template>
  469. </el-table-column>
  470. <el-table-column
  471. prop=""
  472. header-align="center"
  473. align="center"
  474. :min-width="80"
  475. label="检验明细">
  476. <template slot-scope="scope">
  477. <el-button v-if="scope.row.subDetailRecordNum > 0" type="success" @click="subDetailModal(scope.row)">点击输入</el-button>
  478. <el-button v-else type="primary" @click="subDetailModal(scope.row)">点击输入</el-button>
  479. </template>
  480. </el-table-column>
  481. <el-table-column
  482. prop=""
  483. header-align="center"
  484. align="right"
  485. :min-width="80"
  486. label="抽样数量">
  487. <template slot-scope="scope">
  488. <el-input-number :controls="false" :step="0" v-if="detailData.submitFlag === 'Y'" v-model="scope.row.samplingQty" disabled style="height: 11px; width:98%"></el-input-number>
  489. <el-input-number :controls="false" :step="0" v-else :ref="`samplingQty${scope.$index}`" v-model="scope.row.samplingQty" @keyup.enter.native="focusNextInput(scope.$index, 'samplingQty')" style="height: 11px; width: 98%"></el-input-number>
  490. </template>
  491. </el-table-column>
  492. <el-table-column
  493. prop=""
  494. header-align="center"
  495. align="right"
  496. :min-width="80"
  497. label="不合格数量">
  498. <template slot-scope="scope">
  499. <el-input-number :controls="false" :step="0" v-if="detailData.submitFlag === 'Y'" v-model="scope.row.unqualifiedQuantity" disabled style="height: 11px; width:98%"></el-input-number>
  500. <el-input-number :controls="false" :step="0" v-else :ref="`unqualifiedQuantity${scope.$index}`" v-model="scope.row.unqualifiedQuantity" @keyup.enter.native="focusNextInput(scope.$index, 'unqualifiedQuantity')" style="height: 11px; width: 98%"></el-input-number>
  501. </template>
  502. </el-table-column>
  503. <el-table-column
  504. prop=""
  505. header-align="center"
  506. align="right"
  507. :min-width="90"
  508. label="项目检验结论">
  509. <template slot-scope="scope">
  510. <el-select :class="{redElSelect:scope.row.itemResult === 'N', greenElSelect:scope.row.itemResult === 'Y'}" v-if="detailData.submitFlag === 'Y'" v-model="scope.row.itemResult" disabled style="height: 11px;padding: 0px">
  511. <el-option label="合格" value="Y" style="color: green"></el-option>
  512. <el-option label="不合格" value="N" style="color: red"></el-option>
  513. </el-select>
  514. <el-select :class="{redElSelect:scope.row.itemResult === 'N', greenElSelect:scope.row.itemResult === 'Y'}" v-else v-model="scope.row.itemResult" style="height: 11px;padding: 0px" placeholder="合格">
  515. <el-option label="合格" value="Y" style="color: green"></el-option>
  516. <el-option label="不合格" value="N" style="color: red"></el-option>
  517. </el-select>
  518. </template>
  519. </el-table-column>
  520. </el-table>
  521. </div>
  522. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  523. <el-button v-if="detailData.state === '待检验'" type="primary" :loading="transferLoadFlag" @click="Transfer('1')">分批保存</el-button>
  524. <el-button type="primary" @click="detailInformationFlag=false">关闭</el-button>
  525. <el-button v-if="detailData.state === '待检验' || detailData.state === '待审核'" type="danger" :loading="transferLoadFlag" style="margin-left: 40px" @click="Transfer('2')">最终检验完成</el-button>
  526. </el-footer>
  527. </el-dialog>
  528. <!-- 子明细信息 -->
  529. <el-dialog title="子明细信息" :close-on-click-modal="false" v-drag :visible.sync="subDetailFlag" width="1102px">
  530. <el-button type="success" icon="el-icon-plus" size="mini" @click="handleAddBtn(subDetailData)">添加</el-button>
  531. <el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteBtn(subDetailData)">删除</el-button>
  532. <el-button type="primary" icon="el-icon-more" size="mini" @click="batchHandleAdd(subDetailData)">批量新增</el-button>
  533. <div class="rq ">
  534. <el-table
  535. :height="400"
  536. :data="templateTableData"
  537. border
  538. v-loading="subDetailLoading"
  539. element-loading-text="拼命加载中"
  540. :row-class-name="rowClassName"
  541. @selection-change="handleDetailSelectionChange"
  542. style="width: 100%;">
  543. <el-table-column type="selection" align="center" width="40"></el-table-column>
  544. <el-table-column label="序号" align="center" prop="num" width="50"></el-table-column>
  545. <el-table-column prop="samplingLocation" header-align="center" align="center" :required="true" label="抽样位置A" width="120">
  546. <template slot-scope="{row}">
  547. <el-input v-if="templateTableData[row.xh-1].isSubmit === 'Y'" v-model="templateTableData[row.xh-1].samplingLocation" readonly placeholder="请输入抽样位置A"></el-input>
  548. <el-input v-else :ref="`${row.xh-1}` + `a`" v-model="templateTableData[row.xh-1].samplingLocation" @keyup.enter.native="nextFocus1(row.xh-1)" placeholder="请输入抽样位置A"></el-input>
  549. </template>
  550. </el-table-column>
  551. <el-table-column prop="samplingLocationB" header-align="center" align="center" :required="true" label="抽样位置B" width="120">
  552. <template slot-scope="{row}">
  553. <el-input v-if="templateTableData[row.xh-1].isSubmit === 'Y'" v-model="templateTableData[row.xh-1].samplingLocationB" readonly placeholder="请输入抽样位置B"></el-input>
  554. <el-input v-else :ref="`${row.xh-1}` + `b`" v-model="templateTableData[row.xh-1].samplingLocationB" @keyup.enter.native="nextFocus2(row.xh-1)" placeholder="请输入抽样位置B"></el-input>
  555. </template>
  556. </el-table-column>
  557. <el-table-column prop="subDetailValue" header-align="center" align="center" :required="true" label="实测值A" width="150">
  558. <template slot-scope="{row}">
  559. <el-input v-if="templateTableData[row.xh-1].isSubmit === 'Y'" v-model="templateTableData[row.xh-1].subDetailValue" readonly placeholder="请输入实测值A"></el-input>
  560. <el-input v-else :ref="`${row.xh-1}` + `c`" v-model="templateTableData[row.xh-1].subDetailValue" @keyup.enter.native="nextFocus3(row.xh-1)" placeholder="请输入实测值A"></el-input>
  561. </template>
  562. </el-table-column>
  563. <el-table-column prop="subDetailValueB" header-align="center" align="center" :required="true" label="实测值B" width="150">
  564. <template slot-scope="{row}">
  565. <el-input v-if="templateTableData[row.xh-1].isSubmit === 'Y'" v-model="templateTableData[row.xh-1].subDetailValueB" readonly placeholder="请输入实测值B"></el-input>
  566. <el-input v-else :ref="`${row.xh-1}` + `d`" v-model="templateTableData[row.xh-1].subDetailValueB" @keyup.enter.native="nextFocus4(row.xh-1)" placeholder="请输入实测值B"></el-input>
  567. </template>
  568. </el-table-column>
  569. <el-table-column prop="subDetailValueC" header-align="center" align="center" :required="true" label="实测值C" width="150">
  570. <template slot-scope="{row}">
  571. <el-input v-if="templateTableData[row.xh-1].isSubmit === 'Y'" v-model="templateTableData[row.xh-1].subDetailValueC" readonly placeholder="请输入实测值C"></el-input>
  572. <el-input v-else :ref="`${row.xh-1}` + `e`" v-model="templateTableData[row.xh-1].subDetailValueC" @keyup.enter.native="nextFocus5(row.xh-1)" placeholder="请输入实测值C"></el-input>
  573. </template>
  574. </el-table-column>
  575. <el-table-column prop="subDetailValueD" header-align="center" align="center" :required="true" label="实测值D" width="150">
  576. <template slot-scope="{row}">
  577. <el-input v-if="templateTableData[row.xh-1].isSubmit === 'Y'" v-model="templateTableData[row.xh-1].subDetailValueD" readonly placeholder="请输入实测值D"></el-input>
  578. <el-input v-else :ref="`${row.xh-1}` + `f`" v-model="templateTableData[row.xh-1].subDetailValueD" @keyup.enter.native="nextFocus6(row.xh-1)" placeholder="请输入实测值D"></el-input>
  579. </template>
  580. </el-table-column>
  581. <el-table-column prop="subDetailValueE" header-align="center" align="center" :required="true" label="实测值E" width="150">
  582. <template slot-scope="{row}">
  583. <el-input v-if="templateTableData[row.xh-1].isSubmit === 'Y'" v-model="templateTableData[row.xh-1].subDetailValueE" readonly placeholder="请输入实测值E"></el-input>
  584. <el-input v-else :ref="`${row.xh-1}` + `g`" v-model="templateTableData[row.xh-1].subDetailValueE" @keyup.enter.native="nextFocus7(row.xh-1)" placeholder="请输入实测值E"></el-input>
  585. </template>
  586. </el-table-column>
  587. </el-table>
  588. <!-- 分页-->
  589. <el-pagination
  590. @size-change="sizeChangeHandle2"
  591. @current-change="currentChangeHandle2"
  592. :current-page="pageIndex2"
  593. :page-sizes="[20, 50, 100, 200, 500]"
  594. :page-size="pageSize2"
  595. :total="tableData.length"
  596. layout="total, sizes, prev, pager, next, jumper">
  597. </el-pagination>
  598. </div>
  599. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  600. <el-button v-if="detailData.submitFlag !== 'Y'" type="primary" :loading="subDetailVisiable" @click="saveSubDetailResult">保存</el-button>
  601. <el-button type="primary" @click="subDetailFlag = false">关闭</el-button>
  602. </el-footer>
  603. </el-dialog>
  604. <!-- 派工单号 -->
  605. <el-dialog title="派工单号" @close="closeDialog" :close-on-click-modal="false" v-drag :visible.sync="seqDetailFlag" width="952px" height="273px">
  606. <el-form :inline="true" label-position="top" :model="seqDetailData" style="margin-left: 7px;margin-top: -5px;">
  607. <el-form-item label="工单号">
  608. <el-input v-model="seqDetailData.orderNo" clearable style="width: 150px"></el-input>
  609. </el-form-item>
  610. <el-form-item label="派工单号">
  611. <el-input v-model="seqDetailData.seqNo" clearable style="width: 150px"></el-input>
  612. </el-form-item>
  613. <el-form-item label="SKU">
  614. <el-input v-model="seqDetailData.sku" clearable style="width: 150px"></el-input>
  615. </el-form-item>
  616. <el-form-item label="状态">
  617. <el-select v-model="seqDetailData.status" style="width: 100px" placeholder="请选择">
  618. <el-option label="下达" value="N"></el-option>
  619. <el-option label="关闭" value="Y"></el-option>
  620. </el-select>
  621. </el-form-item>
  622. </el-form>
  623. <el-form :inline="true" label-position="top" :model="seqDetailData" style="margin-left: 7px;margin-top: -5px;">
  624. <el-form-item label="物料编码">
  625. <el-input v-model="seqDetailData.partNo" clearable style="width: 150px"></el-input>
  626. </el-form-item>
  627. <el-form-item label="物料名称">
  628. <el-input v-model="seqDetailData.partDesc" clearable style="width: 315px"></el-input>
  629. </el-form-item>
  630. <el-form-item label="工序">
  631. <el-input v-model="seqDetailData.operationDesc" clearable style="width: 150px"></el-input>
  632. </el-form-item>
  633. <el-form-item>
  634. <el-button type="primary" @click="searchSeqInfo" style="margin-top: 24px">查询</el-button>
  635. </el-form-item>
  636. </el-form>
  637. <el-table
  638. :height="400"
  639. :data="seqInfoList"
  640. @row-dblclick="getRowData1"
  641. border
  642. style="width: 100%;">
  643. <el-table-column
  644. v-for="(item,index) in seqDetailColumnList" :key="index"
  645. :sortable="item.columnSortable"
  646. :prop="item.columnProp"
  647. :header-align="item.headerAlign"
  648. :show-overflow-tooltip="item.showOverflowTooltip"
  649. :align="item.align"
  650. :fixed="item.fixed==''?false:item.fixed"
  651. :min-width="item.columnWidth"
  652. :label="item.columnLabel">
  653. <template slot-scope="scope">
  654. <span v-if="!item.columnHidden">
  655. <template v-if="item.columnProp === 'pictureFlag'">
  656. <span :style="{ color: scope.row[item.columnProp] === 'Y' ? 'red' : '' }">{{ scope.row[item.columnProp] === 'Y' ? '是' : scope.row[item.columnProp] === 'N' ? '否' : scope.row[item.columnProp] }}</span>
  657. </template>
  658. <template v-else>{{ scope.row[item.columnProp] }}</template>
  659. </span>
  660. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  661. </template>
  662. </el-table-column>
  663. </el-table>
  664. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  665. <el-button type="primary" @click="seqDetailFlag = false">关闭</el-button>
  666. </el-footer>
  667. </el-dialog>
  668. <!-- 批量新增子明细操作-->
  669. <el-dialog title="批量新增" :close-on-click-modal="false" v-drag :visible.sync="batchHandleAddModalFlag" width="510px">
  670. <el-form :inline="true" label-position="top">
  671. <el-form-item :label="'默认抽样位置A'">
  672. <el-input v-model="batchAddData.samplingLocation" style="width: 150px"></el-input>
  673. </el-form-item>
  674. <el-form-item :label="'默认抽样位置B'">
  675. <el-input v-model="batchAddData.samplingLocationB" style="width: 150px"></el-input>
  676. </el-form-item>
  677. <el-form-item :label="'抽样数量'">
  678. <el-input type="number" v-model="batchAddData.samplingNumber" style="width: 150px"></el-input>
  679. </el-form-item>
  680. </el-form>
  681. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  682. <el-button type="primary" @click="batchHandleAddModal">保存</el-button>
  683. <el-button type="primary" @click="batchHandleAddModalFlag=false">关闭</el-button>
  684. </el-footer>
  685. </el-dialog>
  686. <!-- 检验模板 -->
  687. <el-dialog title="检验模板清单" :close-on-click-modal="false" v-drag :visible.sync="templateModelFlag" width="520px">
  688. <div class="rq">
  689. <el-form :inline="true" label-position="top" :model="templateData">
  690. <el-form-item :label="'模板编码'">
  691. <el-input v-model="templateData.templateId" clearable style="width: 120px"></el-input>
  692. </el-form-item>
  693. <el-form-item :label="'模板名称'">
  694. <el-input v-model="templateData.templateName" clearable style="width: 120px"></el-input>
  695. </el-form-item>
  696. <!-- <el-form-item :label="'检验类型'">-->
  697. <!-- <el-select v-model="templateData.inspectionTypeNo" style="width: 100px">-->
  698. <!-- <el-option-->
  699. <!-- v-for = "i in typeOptions"-->
  700. <!-- :key = "i.inspectionTypeNo"-->
  701. <!-- :label = "i.inspectionTypeName"-->
  702. <!-- :value = "i.inspectionTypeNo">-->
  703. <!-- </el-option>-->
  704. <!-- </el-select>-->
  705. <!-- </el-form-item>-->
  706. <el-form-item :label="' '">
  707. <el-button type="primary" @click="queryTemplateList">查询</el-button>
  708. </el-form-item>
  709. </el-form>
  710. <el-table
  711. :height="300"
  712. :data="templateList"
  713. @row-dblclick="getRowData"
  714. border
  715. style="width: 100%;">
  716. <el-table-column
  717. v-for="(item,index) in templateDetailList" :key="index"
  718. :sortable="item.columnSortable"
  719. :prop="item.columnProp"
  720. :header-align="item.headerAlign"
  721. :show-overflow-tooltip="item.showOverflowTooltip"
  722. :align="item.align"
  723. :fixed="item.fixed==''?false:item.fixed"
  724. :min-width="item.columnWidth"
  725. :label="item.columnLabel">
  726. <template slot-scope="scope">
  727. <span v-if="!item.columnHidden">
  728. <template v-if="item.columnProp === 'pictureFlag'">
  729. <span :style="{ color: scope.row[item.columnProp] === 'Y' ? 'red' : '' }">{{ scope.row[item.columnProp] === 'Y' ? '是' : scope.row[item.columnProp] === 'N' ? '否' : scope.row[item.columnProp] }}</span>
  730. </template>
  731. <template v-else>{{ scope.row[item.columnProp] }}</template>
  732. </span>
  733. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  734. </template>
  735. </el-table-column>
  736. </el-table>
  737. </div>
  738. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  739. <el-button type="primary" @click="templateModelFlag=false">关闭</el-button>
  740. </el-footer>
  741. </el-dialog>
  742. <!-- 物料 -->
  743. <el-dialog title="物料清单" :close-on-click-modal="false" v-drag :visible.sync="partModelFlag" width="520px">
  744. <div class="rq">
  745. <el-form :inline="true" label-position="top" :model="partData">
  746. <el-form-item :label="'物料编码'">
  747. <el-input v-model="partData.partNo" clearable style="width: 115px"></el-input>
  748. </el-form-item>
  749. <el-form-item :label="'物料名称'">
  750. <el-input v-model="partData.partDesc" clearable style="width: 115px"></el-input>
  751. </el-form-item>
  752. <el-form-item :label="'SKU'">
  753. <el-input v-model="partData.sku" clearable style="width: 79px"></el-input>
  754. </el-form-item>
  755. <el-form-item :label="'PN'">
  756. <el-input v-model="partData.cinvSourceCode" clearable style="width: 79px"></el-input>
  757. </el-form-item>
  758. <el-form-item :label="' '">
  759. <el-button type="primary" @click="queryPartList">查询</el-button>
  760. </el-form-item>
  761. </el-form>
  762. <el-table
  763. :height="300"
  764. :data="partList"
  765. @row-dblclick="getRowData2"
  766. border
  767. style="width: 100%;">
  768. <el-table-column
  769. v-for="(item,index) in partDetailList" :key="index"
  770. :sortable="item.columnSortable"
  771. :prop="item.columnProp"
  772. :header-align="item.headerAlign"
  773. :show-overflow-tooltip="item.showOverflowTooltip"
  774. :align="item.align"
  775. :fixed="item.fixed==''?false:item.fixed"
  776. :min-width="item.columnWidth"
  777. :label="item.columnLabel">
  778. <template slot-scope="scope">
  779. <span v-if="!item.columnHidden">
  780. <template v-if="item.columnProp === 'pictureFlag'">
  781. <span :style="{ color: scope.row[item.columnProp] === 'Y' ? 'red' : '' }">{{ scope.row[item.columnProp] === 'Y' ? '是' : scope.row[item.columnProp] === 'N' ? '否' : scope.row[item.columnProp] }}</span>
  782. </template>
  783. <template v-else>{{ scope.row[item.columnProp] }}</template>
  784. </span>
  785. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  786. </template>
  787. </el-table-column>
  788. </el-table>
  789. </div>
  790. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  791. <el-button type="primary" @click="partModelFlag=false">关闭</el-button>
  792. </el-footer>
  793. </el-dialog>
  794. <!-- 文件清单 -->
  795. <el-dialog title="文件清单" :close-on-click-modal="false" v-drag :visible.sync="fileFlag" width="800px">
  796. <el-form :inline="true" label-position="top">
  797. <el-form-item v-if="detailInformationFlag">
  798. <el-button type="primary" @click="addUploadFileModal">上传文件</el-button>
  799. </el-form-item>
  800. </el-form>
  801. <iqc-file-table :columns="fileColumnList" :data-list="fileContentList" :query-loading="fileLoading" @refresh="getFileContentData(detailData)"></iqc-file-table>
  802. <el-footer style="height:35px;margin-top: 10px;text-align:center">
  803. <el-button type="primary" @click="fileFlag = false">关闭</el-button>
  804. </el-footer>
  805. </el-dialog>
  806. <!-- 机修人员清单 -->
  807. <el-dialog title="人员清单" :close-on-click-modal="false" v-drag :visible.sync="operatorModelFlag" width="820px">
  808. <div class="rq">
  809. <el-form :inline="true" label-position="top" :model="operatorData">
  810. <el-form-item v-if="operatorData.flag !== '2'" :label="'所属角色'">
  811. <el-select v-model="operatorData.roleId" placeholder="请选择" style="width: 120px">
  812. <el-option
  813. v-for = "i in roleList"
  814. :key = "i.roleId"
  815. :label = "i.roleName"
  816. :value = "i.roleId">
  817. </el-option>
  818. </el-select>
  819. </el-form-item>
  820. <el-form-item :label="'用户编码'">
  821. <el-input v-model="operatorData.adminID" clearable style="width: 120px"></el-input>
  822. </el-form-item>
  823. <el-form-item :label="'用户姓名'">
  824. <el-input v-model="operatorData.adminName" clearable style="width: 120px"></el-input>
  825. </el-form-item>
  826. <el-form-item :label="' '">
  827. <el-button type="primary" @click="getOperatorList2">查询</el-button>
  828. </el-form-item>
  829. </el-form>
  830. <el-table
  831. :height="300"
  832. :data="operatorList"
  833. ref="operatorTable"
  834. @row-click="operatorClickRow"
  835. @selection-change="selectionChangeHandle2"
  836. border
  837. style="width: 100%;">
  838. <el-table-column
  839. type="selection"
  840. header-align="center"
  841. align="center"
  842. width="50">
  843. </el-table-column>
  844. <el-table-column
  845. v-for="(item,index) in operatorDetailList" :key="index"
  846. :sortable="item.columnSortable"
  847. :prop="item.columnProp"
  848. :header-align="item.headerAlign"
  849. :show-overflow-tooltip="item.showOverflowTooltip"
  850. :align="item.align"
  851. :fixed="item.fixed==''?false:item.fixed"
  852. :min-width="item.columnWidth"
  853. :label="item.columnLabel">
  854. <template slot-scope="scope">
  855. <span v-if="!item.columnHidden">
  856. <template v-if="item.columnProp === 'pictureFlag'">
  857. <span :style="{ color: scope.row[item.columnProp] === 'Y' ? 'red' : '' }">{{ scope.row[item.columnProp] === 'Y' ? '是' : scope.row[item.columnProp] === 'N' ? '否' : scope.row[item.columnProp] }}</span>
  858. </template>
  859. <template v-else>{{ scope.row[item.columnProp] }}</template>
  860. </span>
  861. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  862. </template>
  863. </el-table-column>
  864. </el-table>
  865. </div>
  866. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  867. <el-button type="primary" @click="confirmOperator">确认</el-button>
  868. <el-button type="primary" @click="operatorModelFlag = false">关闭</el-button>
  869. </el-footer>
  870. </el-dialog>
  871. <!-- 配置项目设备 -->
  872. <el-dialog title="检验项目" :close-on-click-modal="false" v-drag :visible.sync="ItemObjectModelFlag" width="666px">
  873. <div class="rq">
  874. <el-table
  875. :height="350"
  876. :data="itemObjectList"
  877. border
  878. style="width: 100%">
  879. <el-table-column
  880. v-for="(item,index) in itemObjectColumnList" :key="index"
  881. :sortable="item.columnSortable"
  882. :prop="item.columnProp"
  883. :header-align="item.headerAlign"
  884. :show-overflow-tooltip="item.showOverflowTooltip"
  885. :align="item.align"
  886. :fixed="item.fixed===''?false:item.fixed"
  887. :min-width="item.columnWidth"
  888. :label="item.columnLabel">
  889. <template slot-scope="scope">
  890. <span v-if="!item.columnHidden">
  891. <template v-if="item.columnProp === 'pictureFlag'">
  892. <span :style="{ color: scope.row[item.columnProp] === 'Y' ? 'red' : '' }">{{ scope.row[item.columnProp] === 'Y' ? '是' : scope.row[item.columnProp] === 'N' ? '否' : scope.row[item.columnProp] }}</span>
  893. </template>
  894. <template v-else>{{ scope.row[item.columnProp] }}</template>
  895. </span>
  896. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  897. </template>
  898. </el-table-column>
  899. <el-table-column
  900. header-align="center"
  901. align="center"
  902. :min-width="100"
  903. label="设备">
  904. <template slot-scope="scope">
  905. <el-select v-model="scope.row.equipmentNo" style="height: 11px" placeholder="请选择设备">
  906. <el-option
  907. v-for = "i in scope.row.objectList"
  908. :key = "i.objectID"
  909. :label = "i.objectDesc"
  910. :value = "i.objectID">
  911. </el-option>
  912. </el-select>
  913. </template>
  914. </el-table-column>
  915. </el-table>
  916. </div>
  917. <el-footer style="height:35px;margin-top: 15px;text-align:center">
  918. <el-button type="primary" @click="actionModal2">保存</el-button>
  919. <el-button type="primary" @click="ItemObjectModelFlag=false">关闭</el-button>
  920. </el-footer>
  921. </el-dialog>
  922. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  923. <!-- 上传文件的modal -->
  924. <qcFAIUploadFile ref="qcFAIUploadFile" @refreshPageTables="()=>{this.getFileContentData(this.detailData)}" v-drag></qcFAIUploadFile>
  925. <!-- 上传文件的modal -->
  926. <comQcItemImageUploadFile ref="comQcItemImageUploadFile" @refreshPageTables2="getInspectionFormData" v-drag></comQcItemImageUploadFile>
  927. <!-- 子明细导入 -->
  928. <subDetailUpload @changeEvent="changeMyString" ref="subDetailUpload" @refreshPageTables="getInspectionFormData" v-drag></subDetailUpload>
  929. <!-- 打印标签 -->
  930. <qr-code ref="qrCode"></qr-code>
  931. </div>
  932. </template>
  933. <script>
  934. import {
  935. qcIPQCInspectionSearch, // 查询IPQC的检验记录
  936. ipqcDetailSearch, // 查询IPQC的检验明细
  937. inspectorSearch, // 查询检验员
  938. ipqcRecordDelete, // 删除检验记录
  939. saveIPQCDetailedRecord, // 新增明细信息
  940. saveIPQCSubmitResult, // 审核
  941. saveIPQCSubDetailed, // 新增子明细信息
  942. selectIPQCSubDetailedRecord, // 子明细记录信息查询
  943. checkIPQCIsSubmit, // 检查是否已提交
  944. getOperationList, // 查询工序列表
  945. getResourceList, // 查询机台列表
  946. getPartList, // 查询物料列表
  947. saveOsInspection, // 新增检验记录
  948. queryController, // 检查动控
  949. queryTemplateList, // 获取检验模板列表
  950. getSpecialOperationList, // 获取特殊工序列表
  951. inspectionTypeSearch, // 搜索所有检验类型
  952. disposalMeasuresSearch, // 获取处置措施列表
  953. getRollNo, // 模糊查询标签号
  954. rollNoEnter, // 标签号回车事件
  955. queryPartList, // 查询物料集合
  956. umSearch, // 查询单位列表
  957. getSiteAndBuByUserName,
  958. getSiteAndBuByUserName2,
  959. searchSeqInfo, // 派工单号查询
  960. actionIPQCInspection, // 开始检验
  961. dataAcquisition, // 数据采集
  962. getResponsibleOperatorList, // 获取责任人列表
  963. getIPQCItemObjectList, // 查询项目设备
  964. dataAcquisitionByItem, // 根据项目数据采集
  965. cancelApproval2, // 取消审核
  966. ipqcRecordOverLoad, // 任务重载
  967. searchPartAttributeDetails, // 查询物料属性模板
  968. } from "@/api/qc/qc.js"
  969. import {getTableDefaultListLanguage, getTableUserListLanguage} from "@/api/table.js"
  970. import Chooselist from '@/views/modules/common/Chooselist_eam'
  971. import {getInspectionFile} from '@/api/eam/eam_object_list.js'
  972. import {
  973. deleteObjectFile,
  974. getUserRoleList, // 获取用户角色列表
  975. getOperatorList
  976. } from '@/api/eam/eam.js'
  977. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  978. import {qcPrint} from '@/api/qc/qcPrint.js'
  979. import qcFAIUploadFile from "./qc_FAI_upload_file"
  980. import comQcItemImageUploadFile from "./com_qc_itemImage_upload_file"
  981. import subDetailUpload from "./sub_detail_upload";
  982. import QrCode from "../common/QrCode.vue";
  983. import IqcFileTable from "./IQCFileTable.vue";
  984. /*上传文件的組件*/
  985. export default {
  986. components: {
  987. IqcFileTable,
  988. QrCode,
  989. Chooselist,
  990. qcFAIUploadFile,
  991. comQcItemImageUploadFile,
  992. subDetailUpload
  993. },
  994. computed: {
  995. templateTableData () {
  996. let start = (this.pageIndex2 - 1) * this.pageSize2
  997. let end = start + this.pageSize2
  998. if (end > this.tableData.length){
  999. end = this.tableData.length
  1000. }
  1001. return this.tableData.slice(start,end)
  1002. }
  1003. },
  1004. watch: {
  1005. detailData: {
  1006. deep: true,
  1007. handler: function (newV, oldV) {
  1008. this.detailData.notPassQty = this.detailData.samplingQty - this.detailData.passQty
  1009. if (this.detailData.inspectionResult === '不合格') {
  1010. if (this.detailData.disposalMeasures === '让步接收' || this.detailData.disposalMeasures === '') {
  1011. this.detailData.batchQualifiedQty = this.detailData.rollQty
  1012. } else if (this.detailData.disposalMeasures === '挑选使用') {
  1013. this.detailData.batchQualifiedQty = this.detailData.rollQty - this.detailData.notPassQty
  1014. } else {
  1015. this.detailData.batchQualifiedQty = 0
  1016. }
  1017. } else {
  1018. this.detailData.batchQualifiedQty = this.detailData.rollQty
  1019. }
  1020. this.detailData.notbatchQualifiedQty = this.detailData.rollQty - this.detailData.batchQualifiedQty
  1021. }
  1022. },
  1023. detailList: {
  1024. deep: true,
  1025. handler: function (newV, oldV) {
  1026. let num2 = 0
  1027. for (let i = 0; i < this.detailList.length; i++) {
  1028. if (this.detailList[i].itemResult === 'N') {
  1029. num2++
  1030. }
  1031. }
  1032. this.detailData.unqualifiedQty = num2
  1033. }
  1034. },
  1035. },
  1036. data () {
  1037. return {
  1038. loadFlag: false,
  1039. transferLoadFlag: false,
  1040. inspectionNo: '',
  1041. fileFlag: false,
  1042. fileContentList: [],
  1043. // 是否收藏
  1044. favorite: false,
  1045. // 导出 start
  1046. exportData: [],
  1047. exportName: "IPQC检验录入" + this.dayjs().format('YYYYMMDDHHmmss'),
  1048. exportHeader: ["IPQC检验录入"],
  1049. exportFooter: [],
  1050. exportList: [],
  1051. // 导出 end
  1052. checkCompletedData:{
  1053. inspectionNo: ''
  1054. },
  1055. submitData:{
  1056. site: '',
  1057. inspectionNo: '',
  1058. submit_flag: '',
  1059. inspectionResult: '',
  1060. submitList: [],
  1061. updateBy: this.$store.state.user.name,
  1062. type: 'ipqc'
  1063. },
  1064. tagNo:'',
  1065. searchData: {
  1066. site: '',
  1067. userName: this.$store.state.user.name,
  1068. inspectionNo: '',
  1069. state: '',
  1070. inspectionResult: '',
  1071. orderNo: '',
  1072. operationDesc: '',
  1073. buNo: '',
  1074. startDate: '',
  1075. endDate: '',
  1076. startDate2: '',
  1077. endDate2: '',
  1078. inspectionTypeNo: '',
  1079. partNo: '',
  1080. partDesc: '',
  1081. spec: '',
  1082. cinvSourceCode: '',
  1083. sku: '',
  1084. disposalMeasures: '',
  1085. page: 1,
  1086. limit: 10,
  1087. seqNo: '',
  1088. states: ['未开始','待检验'],
  1089. },
  1090. pageIndex: 1,
  1091. pageSize: 20,
  1092. totalPage: 0,
  1093. pageIndex2: 1,
  1094. pageSize2: 20,
  1095. totalPage2: 0,
  1096. height: 200,
  1097. dataList: [],
  1098. dataListSelections: [],
  1099. modalData: {
  1100. flag:'',
  1101. site: '',
  1102. bu: '',
  1103. inspectionNo:'',
  1104. partNo: '',
  1105. partDesc: '',
  1106. inspectionTypeNo:'',
  1107. inspectionTypeName:'',
  1108. inspectorNo:'',
  1109. inspectorName:'',
  1110. submit_flag:'',
  1111. orderNo: '',
  1112. operationDesc: '',
  1113. operationNo: '',
  1114. resourceId: '',
  1115. resourceDesc: '',
  1116. rollQty: '',
  1117. seqNo: '',
  1118. batchRollNo: '',
  1119. invdefinetype: '',
  1120. sku: '',
  1121. cinvSourceCode: '',
  1122. qtyrequired: '',
  1123. lotsize:'',
  1124. specialRequirements: '',
  1125. templateId: '',
  1126. templateName: '',
  1127. specialTaskFlag: '',
  1128. workCenterNo: '',
  1129. rollNo: '',
  1130. umId: '',
  1131. umName: '',
  1132. sjzs: ''
  1133. },
  1134. // 展示列集
  1135. columnList1: [
  1136. {
  1137. userId: this.$store.state.user.name,
  1138. functionId: 301014,
  1139. serialNumber: '301014Table1Site',
  1140. tableId: "301014Table1",
  1141. tableName: "IPQC检验记录表",
  1142. columnProp: 'site',
  1143. headerAlign: "center",
  1144. align: "center",
  1145. columnLabel: '工厂编码',
  1146. columnHidden: false,
  1147. columnImage: false,
  1148. columnSortable: false,
  1149. sortLv: 0,
  1150. status: true,
  1151. fixed: '',
  1152. columnWidth: 80,
  1153. },
  1154. {
  1155. userId: this.$store.state.user.name,
  1156. functionId: 301014,
  1157. serialNumber: '301014Table1InspectionNo',
  1158. tableId: "301014Table1",
  1159. tableName: "IPQC检验记录表",
  1160. columnProp: 'inspectionNo',
  1161. headerAlign: "center",
  1162. align: "center",
  1163. columnLabel: '检验单号',
  1164. columnHidden: false,
  1165. columnImage: false,
  1166. columnSortable: false,
  1167. sortLv: 0,
  1168. status: true,
  1169. fixed: '',
  1170. columnWidth: 120,
  1171. },
  1172. {
  1173. userId: this.$store.state.user.name,
  1174. functionId: 301014,
  1175. serialNumber: '301014Table1PartNo',
  1176. tableId: "301014Table1",
  1177. tableName: "IPQC检验记录表",
  1178. columnProp: 'partNo',
  1179. headerAlign: "center",
  1180. align: "center",
  1181. columnLabel: '物料编码',
  1182. columnHidden: false,
  1183. columnImage: false,
  1184. columnSortable: false,
  1185. sortLv: 0,
  1186. status: true,
  1187. fixed: '',
  1188. columnWidth: 120,
  1189. },
  1190. {
  1191. userId: this.$store.state.user.name,
  1192. functionId: 301014,
  1193. serialNumber: '301014Table1Spec',
  1194. tableId: "301014Table1",
  1195. tableName: "IPQC检验记录表",
  1196. columnProp: 'spec',
  1197. headerAlign: "center",
  1198. align: "left",
  1199. columnLabel: '规格型号',
  1200. columnHidden: false,
  1201. columnImage: false,
  1202. columnSortable: false,
  1203. sortLv: 0,
  1204. status: true,
  1205. fixed: '',
  1206. columnWidth: 200,
  1207. },
  1208. {
  1209. userId: this.$store.state.user.name,
  1210. functionId: 301014,
  1211. serialNumber: '301014Table1PartDesc',
  1212. tableId: "301014Table1",
  1213. tableName: "IPQC检验记录表",
  1214. columnProp: 'partDesc',
  1215. headerAlign: "center",
  1216. align: "left",
  1217. columnLabel: '物料名称',
  1218. columnHidden: false,
  1219. columnImage: false,
  1220. columnSortable: false,
  1221. sortLv: 0,
  1222. status: true,
  1223. fixed: '',
  1224. columnWidth: 300,
  1225. },
  1226. {
  1227. userId: this.$store.state.user.name,
  1228. functionId: 301014,
  1229. serialNumber: '301014Table1RollNo',
  1230. tableId: "301014Table1",
  1231. tableName: "IPQC检验记录表",
  1232. columnProp: 'rollNo',
  1233. headerAlign: "center",
  1234. align: "center",
  1235. columnLabel: '标签条码',
  1236. columnHidden: false,
  1237. columnImage: false,
  1238. columnSortable: false,
  1239. sortLv: 0,
  1240. status: true,
  1241. fixed: '',
  1242. columnWidth: 100,
  1243. },
  1244. {
  1245. userId: this.$store.state.user.name,
  1246. functionId: 301014,
  1247. serialNumber: '301014Table1InspectionResult',
  1248. tableId: "301014Table1",
  1249. tableName: "IPQC检验记录表",
  1250. columnProp: 'inspectionResult',
  1251. headerAlign: "center",
  1252. align: "center",
  1253. columnLabel: '检验结论',
  1254. columnHidden: false,
  1255. columnImage: false,
  1256. columnSortable: false,
  1257. sortLv: 0,
  1258. status: true,
  1259. fixed: '',
  1260. columnWidth: 100,
  1261. },
  1262. {
  1263. userId: this.$store.state.user.name,
  1264. functionId: 301014,
  1265. serialNumber: '301014Table1DisposalMeasures',
  1266. tableId: "301014Table1",
  1267. tableName: "IPQC检验记录表",
  1268. columnProp: 'disposalMeasures',
  1269. headerAlign: "center",
  1270. align: "center",
  1271. columnLabel: '处置措施',
  1272. columnHidden: false,
  1273. columnImage: false,
  1274. columnSortable: false,
  1275. sortLv: 0,
  1276. status: true,
  1277. fixed: '',
  1278. columnWidth: 100,
  1279. },
  1280. {
  1281. userId: this.$store.state.user.name,
  1282. functionId: 301014,
  1283. serialNumber: '301014Table1InspectionTypeNo',
  1284. tableId: "301014Table1",
  1285. tableName: "IPQC检验记录表",
  1286. columnProp: 'inspectionTypeNo',
  1287. headerAlign: "center",
  1288. align: "center",
  1289. columnLabel: '检验类型',
  1290. columnHidden: false,
  1291. columnImage: false,
  1292. columnSortable: false,
  1293. sortLv: 0,
  1294. status: true,
  1295. fixed: '',
  1296. columnWidth: 100,
  1297. },
  1298. {
  1299. userId: this.$store.state.user.name,
  1300. functionId: 301014,
  1301. serialNumber: '301014Table1TaskDate',
  1302. tableId: "301014Table1",
  1303. tableName: "IPQC检验记录表",
  1304. columnProp: 'taskDate',
  1305. headerAlign: "center",
  1306. align: "center",
  1307. columnLabel: '送检日期',
  1308. columnHidden: false,
  1309. columnImage: false,
  1310. columnSortable: false,
  1311. sortLv: 0,
  1312. status: true,
  1313. fixed: '',
  1314. columnWidth: 130,
  1315. },
  1316. {
  1317. userId: this.$store.state.user.name,
  1318. functionId: 301014,
  1319. serialNumber: '301014Table1InspectionCycle',
  1320. tableId: "301014Table1",
  1321. tableName: "IPQC检验记录表",
  1322. columnProp: 'inspectionCycle',
  1323. headerAlign: "center",
  1324. align: "right",
  1325. columnLabel: '检验周期(h)',
  1326. columnHidden: false,
  1327. columnImage: false,
  1328. columnSortable: false,
  1329. sortLv: 0,
  1330. status: true,
  1331. fixed: '',
  1332. columnWidth: 100,
  1333. },
  1334. {
  1335. userId: this.$store.state.user.name,
  1336. functionId: 301014,
  1337. serialNumber: '301014Table1OrderNo',
  1338. tableId: "301014Table1",
  1339. tableName: "IPQC检验记录表",
  1340. columnProp: 'orderNo',
  1341. headerAlign: "center",
  1342. align: "left",
  1343. columnLabel: '工单号',
  1344. columnHidden: false,
  1345. columnImage: false,
  1346. columnSortable: false,
  1347. sortLv: 0,
  1348. status: true,
  1349. fixed: '',
  1350. columnWidth: 150,
  1351. },
  1352. {
  1353. userId: this.$store.state.user.name,
  1354. functionId: 301014,
  1355. serialNumber: '301014Table1SeqNo',
  1356. tableId: "301014Table1",
  1357. tableName: "IPQC检验记录表",
  1358. columnProp: 'seqNo',
  1359. headerAlign: "center",
  1360. align: "left",
  1361. columnLabel: '派工单号',
  1362. columnHidden: false,
  1363. columnImage: false,
  1364. columnSortable: false,
  1365. sortLv: 0,
  1366. status: true,
  1367. fixed: '',
  1368. columnWidth: 200,
  1369. },
  1370. {
  1371. userId: this.$store.state.user.name,
  1372. functionId: 301014,
  1373. serialNumber: '301014Table1OperationDesc',
  1374. tableId: "301014Table1",
  1375. tableName: "IPQC检验记录表",
  1376. columnProp: 'operationDesc',
  1377. headerAlign: "center",
  1378. align: "left",
  1379. columnLabel: '工序',
  1380. columnHidden: false,
  1381. columnImage: false,
  1382. columnSortable: false,
  1383. sortLv: 0,
  1384. status: true,
  1385. fixed: '',
  1386. columnWidth: 120,
  1387. },
  1388. {
  1389. userId: this.$store.state.user.name,
  1390. functionId: 301014,
  1391. serialNumber: '301014Table1ResourceDesc',
  1392. tableId: "301014Table1",
  1393. tableName: "IPQC检验记录表",
  1394. columnProp: 'resourceDesc',
  1395. headerAlign: "center",
  1396. align: "left",
  1397. columnLabel: '机台',
  1398. columnHidden: false,
  1399. columnImage: false,
  1400. columnSortable: false,
  1401. sortLv: 0,
  1402. status: true,
  1403. fixed: '',
  1404. columnWidth: 120,
  1405. },
  1406. {
  1407. userId: this.$store.state.user.name,
  1408. functionId: 301014,
  1409. serialNumber: '301014Table1Sku',
  1410. tableId: "301014Table1",
  1411. tableName: "IPQC检验记录表",
  1412. columnProp: 'sku',
  1413. headerAlign: "center",
  1414. align: "center",
  1415. columnLabel: 'SKU',
  1416. columnHidden: false,
  1417. columnImage: false,
  1418. columnSortable: false,
  1419. sortLv: 0,
  1420. status: true,
  1421. fixed: '',
  1422. columnWidth: 120,
  1423. },
  1424. {
  1425. userId: this.$store.state.user.name,
  1426. functionId: 301014,
  1427. serialNumber: '301014Table1cinvSourceCode',
  1428. tableId: "301014Table1",
  1429. tableName: "IPQC检验记录表",
  1430. columnProp: 'cinvSourceCode',
  1431. headerAlign: "center",
  1432. align: "center",
  1433. columnLabel: 'PN',
  1434. columnHidden: false,
  1435. columnImage: false,
  1436. columnSortable: false,
  1437. sortLv: 0,
  1438. status: true,
  1439. fixed: '',
  1440. columnWidth: 120,
  1441. },
  1442. {
  1443. userId: this.$store.state.user.name,
  1444. functionId: 301014,
  1445. serialNumber: '301014Table1Invdefinetype',
  1446. tableId: "301014Table1",
  1447. tableName: "IPQC检验记录表",
  1448. columnProp: 'invdefinetype',
  1449. headerAlign: "center",
  1450. align: "left",
  1451. columnLabel: '物料类别',
  1452. columnHidden: false,
  1453. columnImage: false,
  1454. columnSortable: false,
  1455. sortLv: 0,
  1456. status: true,
  1457. fixed: '',
  1458. columnWidth: 120,
  1459. },
  1460. {
  1461. userId: this.$store.state.user.name,
  1462. functionId: 301014,
  1463. serialNumber: '301014Table1RollQty',
  1464. tableId: "301014Table1",
  1465. tableName: "IPQC检验记录表",
  1466. columnProp: 'rollQty',
  1467. headerAlign: "center",
  1468. align: "right",
  1469. columnLabel: '送检数量',
  1470. columnHidden: false,
  1471. columnImage: false,
  1472. columnSortable: false,
  1473. sortLv: 0,
  1474. status: true,
  1475. fixed: '',
  1476. columnWidth: 100,
  1477. },
  1478. {
  1479. userId: this.$store.state.user.name,
  1480. functionId: 301014,
  1481. serialNumber: '301014Table1SamplingQty',
  1482. tableId: "301014Table1",
  1483. tableName: "IPQC检验记录表",
  1484. columnProp: 'samplingQty',
  1485. headerAlign: "center",
  1486. align: "right",
  1487. columnLabel: '抽样数量',
  1488. columnHidden: false,
  1489. columnImage: false,
  1490. columnSortable: false,
  1491. sortLv: 0,
  1492. status: true,
  1493. fixed: '',
  1494. columnWidth: 100,
  1495. },
  1496. {
  1497. userId: this.$store.state.user.name,
  1498. functionId: 301014,
  1499. serialNumber: '301014Table1UmName',
  1500. tableId: "301014Table1",
  1501. tableName: "IPQC检验记录表",
  1502. columnProp: 'umName',
  1503. headerAlign: "center",
  1504. align: "center",
  1505. columnLabel: '单位',
  1506. columnHidden: false,
  1507. columnImage: false,
  1508. columnSortable: false,
  1509. sortLv: 0,
  1510. status: true,
  1511. fixed: '',
  1512. columnWidth: 100,
  1513. },
  1514. {
  1515. userId: this.$store.state.user.name,
  1516. functionId: 301014,
  1517. serialNumber: '301014Table1InspectionRemark',
  1518. tableId: "301014Table1",
  1519. tableName: "IPQC检验记录表",
  1520. columnProp: 'inspectionRemark',
  1521. headerAlign: "center",
  1522. align: "left",
  1523. columnLabel: '质检备注',
  1524. columnHidden: false,
  1525. columnImage: false,
  1526. columnSortable: false,
  1527. sortLv: 0,
  1528. status: true,
  1529. fixed: '',
  1530. columnWidth: 200,
  1531. },
  1532. {
  1533. userId: this.$store.state.user.name,
  1534. functionId: 301014,
  1535. serialNumber: '301014Table1DisposalRemark',
  1536. tableId: "301014Table1",
  1537. tableName: "IPQC检验记录表",
  1538. columnProp: 'disposalRemark',
  1539. headerAlign: "center",
  1540. align: "left",
  1541. columnLabel: '处置说明',
  1542. columnHidden: false,
  1543. columnImage: false,
  1544. columnSortable: false,
  1545. sortLv: 0,
  1546. status: true,
  1547. fixed: '',
  1548. columnWidth: 200,
  1549. },
  1550. {
  1551. userId: this.$store.state.user.name,
  1552. functionId: 301014,
  1553. serialNumber: '301014Table1ActionDate',
  1554. tableId: "301014Table1",
  1555. tableName: "IPQC检验记录表",
  1556. columnProp: 'actionDate',
  1557. headerAlign: "center",
  1558. align: "center",
  1559. columnLabel: '开始检验时间',
  1560. columnHidden: false,
  1561. columnImage: false,
  1562. columnSortable: false,
  1563. sortLv: 0,
  1564. status: true,
  1565. fixed: '',
  1566. columnWidth: 130,
  1567. },
  1568. {
  1569. userId: this.$store.state.user.name,
  1570. functionId: 301014,
  1571. serialNumber: '301014Table1InspectorDate',
  1572. tableId: "301014Table1",
  1573. tableName: "IPQC检验记录表",
  1574. columnProp: 'inspectorDate',
  1575. headerAlign: "center",
  1576. align: "center",
  1577. columnLabel: '检验时间',
  1578. columnHidden: false,
  1579. columnImage: false,
  1580. columnSortable: false,
  1581. sortLv: 0,
  1582. status: true,
  1583. fixed: '',
  1584. columnWidth: 130,
  1585. },
  1586. {
  1587. userId: this.$store.state.user.name,
  1588. functionId: 301014,
  1589. serialNumber: '301014Table1InspectorName',
  1590. tableId: "301014Table1",
  1591. tableName: "IPQC检验记录表",
  1592. columnProp: 'inspectorName',
  1593. headerAlign: "center",
  1594. align: "center",
  1595. columnLabel: '质检员',
  1596. columnHidden: false,
  1597. columnImage: false,
  1598. columnSortable: false,
  1599. sortLv: 0,
  1600. status: true,
  1601. fixed: '',
  1602. columnWidth: 100,
  1603. },
  1604. {
  1605. userId: this.$store.state.user.name,
  1606. functionId: 301014,
  1607. serialNumber: '301014Table1SpecialRequirements',
  1608. tableId: "301014Table1",
  1609. tableName: "IPQC检验记录表",
  1610. columnProp: 'specialRequirements',
  1611. headerAlign: "center",
  1612. align: "left",
  1613. columnLabel: '特殊要求',
  1614. columnHidden: false,
  1615. columnImage: false,
  1616. columnSortable: false,
  1617. sortLv: 0,
  1618. status: true,
  1619. fixed: '',
  1620. columnWidth: 200,
  1621. },
  1622. ],
  1623. //项目清单
  1624. detailData: {
  1625. site: '',
  1626. buNo: '',
  1627. inspectionNo:'',
  1628. partNo:'',
  1629. partDesc:'',
  1630. rollQty:'',
  1631. samplingQty: 0,
  1632. unqualifiedQty: 0,
  1633. unqualifiedQuantity:'',
  1634. disposalMeasures:'',
  1635. disposalRemark: '',
  1636. inspectionResult: '',
  1637. inspectorNo: '',
  1638. inspectorName: '',
  1639. inspectionRemark: '',
  1640. submitFlag: '',
  1641. cinvSourceCode: '',
  1642. sku: '',
  1643. invdefinetype: '',
  1644. umId: '',
  1645. umName: '',
  1646. operator: '',
  1647. operatorName: '',
  1648. responsiblePerson: '',
  1649. responsiblePersonName: '',
  1650. state: '',
  1651. passQty: 0,
  1652. notPassQty: 0,
  1653. batchQualifiedQty: 0,
  1654. notbatchQualifiedQty: 0
  1655. },
  1656. detailInformationFlag: false,
  1657. detailList: [],
  1658. saveInformationData: {
  1659. site: '',
  1660. buNo: '',
  1661. inspectionNo:'',
  1662. disposalMeasures: '',
  1663. disposalRemark: '',
  1664. inspectorNo: '',
  1665. inspectionRemark: '',
  1666. samplingQty: '',
  1667. rollQty: '',
  1668. itemList:[],
  1669. unqualifiedQty: '',
  1670. partNo: '',
  1671. partDesc: '',
  1672. operator: '',
  1673. operatorName: '',
  1674. responsiblePerson: '',
  1675. responsiblePersonName: '',
  1676. subDetailList: [],
  1677. type: '',
  1678. passQty: '',
  1679. notPassQty: '',
  1680. batchQualifiedQty: ''
  1681. },
  1682. detailColumnList: [
  1683. {
  1684. userId: this.$store.state.user.name,
  1685. functionId: 301014,
  1686. serialNumber: '301014Table2ItemNo',
  1687. tableId: "301014Table2",
  1688. tableName: "检验单明细表",
  1689. columnProp: 'itemNo',
  1690. headerAlign: "center",
  1691. align: "center",
  1692. columnLabel: '检验项目编码',
  1693. columnHidden: false,
  1694. columnImage: false,
  1695. columnSortable: false,
  1696. sortLv: 0,
  1697. status: true,
  1698. fixed: '',
  1699. columnWidth: 120,
  1700. },
  1701. {
  1702. userId: this.$store.state.user.name,
  1703. functionId: 301014,
  1704. serialNumber: '301014Table2ItemDesc',
  1705. tableId: "301014Table2",
  1706. tableName: "检验单明细表",
  1707. columnProp: 'itemDesc',
  1708. headerAlign: "center",
  1709. align: "left",
  1710. columnLabel: '检验项目名称',
  1711. columnHidden: false,
  1712. columnImage: false,
  1713. columnSortable: false,
  1714. sortLv: 0,
  1715. status: true,
  1716. fixed: '',
  1717. columnWidth: 150,
  1718. },
  1719. {
  1720. userId: this.$store.state.user.name,
  1721. functionId: 301014,
  1722. serialNumber: '301014Table2SamplingLevelDesc',
  1723. tableId: "301014Table2",
  1724. tableName: "检验单明细表",
  1725. columnProp: 'samplingLevelDesc',
  1726. headerAlign: "center",
  1727. align: "left",
  1728. columnLabel: '检验水平',
  1729. columnHidden: false,
  1730. columnImage: false,
  1731. columnSortable: false,
  1732. sortLv: 0,
  1733. status: true,
  1734. fixed: '',
  1735. columnWidth: 120,
  1736. },
  1737. {
  1738. userId: this.$store.state.user.name,
  1739. functionId: 301014,
  1740. serialNumber: '301014Table2SamplingProgrammeDesc',
  1741. tableId: "301014Table2",
  1742. tableName: "检验单明细表",
  1743. columnProp: 'samplingProgrammeDesc',
  1744. headerAlign: "center",
  1745. align: "left",
  1746. columnLabel: '检验方案',
  1747. columnHidden: false,
  1748. columnImage: false,
  1749. columnSortable: false,
  1750. sortLv: 0,
  1751. status: true,
  1752. fixed: '',
  1753. columnWidth: 120,
  1754. },
  1755. {
  1756. userId: this.$store.state.user.name,
  1757. functionId: 301014,
  1758. serialNumber: '301014Table2MethodName',
  1759. tableId: "301014Table2",
  1760. tableName: "检验单明细表",
  1761. columnProp: 'methodName',
  1762. headerAlign: "center",
  1763. align: "left",
  1764. columnLabel: '检验方法',
  1765. columnHidden: false,
  1766. columnImage: false,
  1767. columnSortable: false,
  1768. sortLv: 0,
  1769. status: true,
  1770. fixed: '',
  1771. columnWidth: 120,
  1772. },
  1773. {
  1774. userId: this.$store.state.user.name,
  1775. functionId: 301014,
  1776. serialNumber: '301014Table2MethodRemark',
  1777. tableId: "301014Table2",
  1778. tableName: "检验单明细表",
  1779. columnProp: 'methodRemark',
  1780. headerAlign: "center",
  1781. align: "left",
  1782. columnLabel: '检验方法说明',
  1783. columnHidden: false,
  1784. columnImage: false,
  1785. columnSortable: false,
  1786. sortLv: 0,
  1787. status: true,
  1788. fixed: '',
  1789. columnWidth: 200,
  1790. },
  1791. {
  1792. userId: this.$store.state.user.name,
  1793. functionId: 301014,
  1794. serialNumber: '301014Table2ObjectDesc',
  1795. tableId: "301014Table2",
  1796. tableName: "检验单明细表",
  1797. columnProp: 'objectDesc',
  1798. headerAlign: "center",
  1799. align: "center",
  1800. columnLabel: '检测仪器',
  1801. columnHidden: false,
  1802. columnImage: false,
  1803. columnSortable: false,
  1804. sortLv: 0,
  1805. status: true,
  1806. fixed: '',
  1807. columnWidth: 120,
  1808. },
  1809. {
  1810. userId: this.$store.state.user.name,
  1811. functionId: 301006,
  1812. serialNumber: '301006Table2ObjectDesc',
  1813. tableId: "301006Table2",
  1814. tableName: "检验单明细表",
  1815. columnProp: 'pictureFlag',
  1816. headerAlign: "center",
  1817. align: "center",
  1818. columnLabel: '图片是否必填',
  1819. columnHidden: false,
  1820. columnImage: false,
  1821. columnSortable: false,
  1822. sortLv: 0,
  1823. status: true,
  1824. fixed: '',
  1825. columnWidth: 120,
  1826. },
  1827. {
  1828. userId: this.$store.state.user.name,
  1829. functionId: 301014,
  1830. serialNumber: '301014Table2Aql',
  1831. tableId: "301014Table2",
  1832. tableName: "检验单明细表",
  1833. columnProp: 'aql',
  1834. headerAlign: "center",
  1835. align: "right",
  1836. columnLabel: 'AQL',
  1837. columnHidden: false,
  1838. columnImage: false,
  1839. columnSortable: false,
  1840. sortLv: 0,
  1841. status: true,
  1842. fixed: '',
  1843. columnWidth: 100,
  1844. },
  1845. {
  1846. userId: this.$store.state.user.name,
  1847. functionId: 301014,
  1848. serialNumber: '301014Table2Ac',
  1849. tableId: "301014Table2",
  1850. tableName: "检验单明细表",
  1851. columnProp: 'ac',
  1852. headerAlign: "center",
  1853. align: "right",
  1854. columnLabel: 'AC',
  1855. columnHidden: false,
  1856. columnImage: false,
  1857. columnSortable: false,
  1858. sortLv: 0,
  1859. status: true,
  1860. fixed: '',
  1861. columnWidth: 100,
  1862. },
  1863. {
  1864. userId: this.$store.state.user.name,
  1865. functionId: 301014,
  1866. serialNumber: '301014Table2Re',
  1867. tableId: "301014Table2",
  1868. tableName: "检验单明细表",
  1869. columnProp: 're',
  1870. headerAlign: "center",
  1871. align: "right",
  1872. columnLabel: 'RE',
  1873. columnHidden: false,
  1874. columnImage: false,
  1875. columnSortable: false,
  1876. sortLv: 0,
  1877. status: true,
  1878. fixed: '',
  1879. columnWidth: 100,
  1880. },
  1881. {
  1882. userId: this.$store.state.user.name,
  1883. functionId: 301014,
  1884. serialNumber: '301014Table2DefaultValue',
  1885. tableId: "301014Table2",
  1886. tableName: "检验单明细表",
  1887. columnProp: 'defaultValue',
  1888. headerAlign: "center",
  1889. align: "right",
  1890. columnLabel: '标准值',
  1891. columnHidden: false,
  1892. columnImage: false,
  1893. columnSortable: false,
  1894. sortLv: 0,
  1895. status: true,
  1896. fixed: '',
  1897. columnWidth: 100,
  1898. },
  1899. {
  1900. userId: this.$store.state.user.name,
  1901. functionId: 301014,
  1902. serialNumber: '301014Table2MaxValue',
  1903. tableId: "301014Table2",
  1904. tableName: "检验单明细表",
  1905. columnProp: 'maxValue',
  1906. headerAlign: "center",
  1907. align: "right",
  1908. columnLabel: '上限值',
  1909. columnHidden: false,
  1910. columnImage: false,
  1911. columnSortable: false,
  1912. sortLv: 0,
  1913. status: true,
  1914. fixed: '',
  1915. columnWidth: 100,
  1916. },
  1917. {
  1918. userId: this.$store.state.user.name,
  1919. functionId: 301014,
  1920. serialNumber: '301014Table2MinValue',
  1921. tableId: "301014Table2",
  1922. tableName: "检验单明细表",
  1923. columnProp: 'minValue',
  1924. headerAlign: "center",
  1925. align: "right",
  1926. columnLabel: '下限值',
  1927. columnHidden: false,
  1928. columnImage: false,
  1929. columnSortable: false,
  1930. sortLv: 0,
  1931. status: true,
  1932. fixed: '',
  1933. columnWidth: 100,
  1934. },
  1935. {
  1936. userId: this.$store.state.user.name,
  1937. functionId: 301014,
  1938. serialNumber: '301014Table2ValueType',
  1939. tableId: "301014Table2",
  1940. tableName: "检验单明细表",
  1941. columnProp: 'valueType',
  1942. headerAlign: "center",
  1943. align: "center",
  1944. columnLabel: '检测值类型',
  1945. columnHidden: false,
  1946. columnImage: false,
  1947. columnSortable: false,
  1948. sortLv: 0,
  1949. status: true,
  1950. fixed: '',
  1951. columnWidth: 100,
  1952. },
  1953. ],
  1954. fileColumnList: [
  1955. {
  1956. columnProp: 'fileName',
  1957. headerAlign: "center",
  1958. align: "center",
  1959. columnLabel: '文件名称',
  1960. columnHidden: false,
  1961. columnImage: false,
  1962. columnSortable: false,
  1963. sortLv: 0,
  1964. status: true,
  1965. fixed: '',
  1966. },
  1967. {
  1968. columnProp: 'createdBy',
  1969. headerAlign: "center",
  1970. align: 'center',
  1971. columnLabel: '上传人',
  1972. columnHidden: false,
  1973. columnImage: false,
  1974. columnSortable: true,
  1975. sortLv: 0,
  1976. status: true,
  1977. fixed: false
  1978. },
  1979. {
  1980. columnProp: 'createDate',
  1981. headerAlign: "center",
  1982. align: 'center',
  1983. columnLabel: '上传时间',
  1984. columnHidden: false,
  1985. columnImage: false,
  1986. columnSortable: true,
  1987. sortLv: 0,
  1988. status: true,
  1989. fixed: false
  1990. },
  1991. {
  1992. columnProp: 'orderRef3',
  1993. headerAlign: "center",
  1994. align: 'center',
  1995. columnLabel: '备注',
  1996. columnHidden: false,
  1997. columnImage: false,
  1998. columnSortable: true,
  1999. sortLv: 0,
  2000. status: true,
  2001. fixed: false
  2002. },
  2003. ],
  2004. // 派工单号
  2005. seqInfoList: [],
  2006. seqDetailFlag: false,
  2007. seqDetailData: {
  2008. orderNo: '',
  2009. seqNo: '',
  2010. sku: '',
  2011. cinvSourceCode:'',
  2012. partNo: '',
  2013. partDesc: '',
  2014. operationDesc: '',
  2015. qtyrequired: '',
  2016. lotsize: '',
  2017. status: 'N'
  2018. },
  2019. seqDetailColumnList: [
  2020. {
  2021. userId: this.$store.state.user.name,
  2022. functionId: 301014,
  2023. serialNumber: '301014Table3OrderNo',
  2024. tableId: "301014Table3",
  2025. tableName: "派工单号表",
  2026. fixed: '',
  2027. columnWidth: 80,
  2028. columnProp: 'orderNo',
  2029. headerAlign: "center",
  2030. align: "center",
  2031. columnLabel: '工单号',
  2032. columnHidden: false,
  2033. columnImage: false,
  2034. columnSortable: false,
  2035. sortLv: 0,
  2036. status: true,
  2037. },
  2038. {
  2039. userId: this.$store.state.user.name,
  2040. functionId: 301014,
  2041. serialNumber: '301014Table3SeqNo',
  2042. tableId: "301014Table3",
  2043. tableName: "派工单号表",
  2044. fixed: '',
  2045. columnWidth: 80,
  2046. columnProp: 'seqNo',
  2047. headerAlign: "center",
  2048. align: "center",
  2049. columnLabel: '派工单号',
  2050. columnHidden: false,
  2051. columnImage: false,
  2052. columnSortable: false,
  2053. sortLv: 0,
  2054. status: true,
  2055. },
  2056. {
  2057. userId: this.$store.state.user.name,
  2058. functionId: 301014,
  2059. serialNumber: '301014Table3Sku',
  2060. tableId: "301014Table3",
  2061. tableName: "派工单号表",
  2062. fixed: '',
  2063. columnWidth: 80,
  2064. columnProp: 'sku',
  2065. headerAlign: "center",
  2066. align: "center",
  2067. columnLabel: 'SKU',
  2068. columnHidden: false,
  2069. columnImage: false,
  2070. columnSortable: false,
  2071. sortLv: 0,
  2072. status: true,
  2073. },
  2074. {
  2075. userId: this.$store.state.user.name,
  2076. functionId: 301014,
  2077. serialNumber: '301014Table3PartNo',
  2078. tableId: "301014Table3",
  2079. tableName: "派工单号表",
  2080. fixed: '',
  2081. columnWidth: 80,
  2082. columnProp: 'partNo',
  2083. headerAlign: "center",
  2084. align: "center",
  2085. columnLabel: '物料编码',
  2086. columnHidden: false,
  2087. columnImage: false,
  2088. columnSortable: false,
  2089. sortLv: 0,
  2090. status: true,
  2091. },
  2092. {
  2093. userId: this.$store.state.user.name,
  2094. functionId: 301014,
  2095. serialNumber: '301014Table3PartDesc',
  2096. tableId: "301014Table3",
  2097. tableName: "派工单号表",
  2098. fixed: '',
  2099. columnWidth: 80,
  2100. columnProp: 'partDesc',
  2101. headerAlign: "center",
  2102. align: "center",
  2103. columnLabel: '物料名称',
  2104. columnHidden: false,
  2105. columnImage: false,
  2106. columnSortable: false,
  2107. sortLv: 0,
  2108. status: true,
  2109. },
  2110. {
  2111. userId: this.$store.state.user.name,
  2112. functionId: 301014,
  2113. serialNumber: '301014Table3Lotsize',
  2114. tableId: "301014Table3",
  2115. tableName: "派工单号表",
  2116. fixed: '',
  2117. columnWidth: 80,
  2118. columnProp: 'lotsize',
  2119. headerAlign: "center",
  2120. align: "right",
  2121. columnLabel: '工单数量',
  2122. columnHidden: false,
  2123. columnImage: false,
  2124. columnSortable: false,
  2125. sortLv: 0,
  2126. status: true,
  2127. },
  2128. {
  2129. userId: this.$store.state.user.name,
  2130. functionId: 301014,
  2131. serialNumber: '301014Table3Qtyrequired',
  2132. tableId: "301014Table3",
  2133. tableName: "派工单号表",
  2134. fixed: '',
  2135. columnWidth: 80,
  2136. columnProp: 'qtyrequired',
  2137. headerAlign: "center",
  2138. align: "right",
  2139. columnLabel: '派工数量',
  2140. columnHidden: false,
  2141. columnImage: false,
  2142. columnSortable: false,
  2143. sortLv: 0,
  2144. status: true,
  2145. },
  2146. {
  2147. userId: this.$store.state.user.name,
  2148. functionId: 301014,
  2149. serialNumber: '301014Table3Sjzs',
  2150. tableId: "301014Table3",
  2151. tableName: "派工单号表",
  2152. fixed: '',
  2153. columnWidth: 80,
  2154. columnProp: 'sjzs',
  2155. headerAlign: "center",
  2156. align: "right",
  2157. columnLabel: '送检总数',
  2158. columnHidden: false,
  2159. columnImage: false,
  2160. columnSortable: false,
  2161. sortLv: 0,
  2162. status: true,
  2163. },
  2164. {
  2165. userId: this.$store.state.user.name,
  2166. functionId: 301014,
  2167. serialNumber: '301014Table3OperationDesc',
  2168. tableId: "301014Table3",
  2169. tableName: "派工单号表",
  2170. fixed: '',
  2171. columnWidth: 80,
  2172. columnProp: 'operationDesc',
  2173. headerAlign: "center",
  2174. align: "center",
  2175. columnLabel: '工序',
  2176. columnHidden: false,
  2177. columnImage: false,
  2178. columnSortable: false,
  2179. sortLv: 0,
  2180. status: true,
  2181. }
  2182. ],
  2183. // 子明细数据对象
  2184. tableData: [],
  2185. checkedDetail: [],
  2186. subDetailFlag: false,
  2187. subDetailData: {
  2188. site: '',
  2189. buNo: '',
  2190. inspectionNo: '',
  2191. itemNo: '',
  2192. itemDesc: '',
  2193. defaultValue: '',
  2194. maxValue: '',
  2195. minValue: '',
  2196. valueTypeDb: '',
  2197. subDetailValues:[],
  2198. page: 1,
  2199. limit: 10,
  2200. },
  2201. options: [],
  2202. modalDisableFlag: false,
  2203. modalFlag: false,
  2204. operationList: [],
  2205. resourceList: [],
  2206. partList: [],
  2207. IPQCSelections: [],
  2208. rules: {
  2209. seqNoType: [
  2210. {
  2211. required: true,
  2212. message: ' ',
  2213. trigger: ['blur','change']
  2214. }
  2215. ],
  2216. orderNoType: [
  2217. {
  2218. required: true,
  2219. message: ' ',
  2220. trigger: ['blur','change']
  2221. }
  2222. ],
  2223. operationDescType: [
  2224. {
  2225. required: true,
  2226. message: ' ',
  2227. trigger: ['blur','change']
  2228. }
  2229. ],
  2230. resourceIdType: [
  2231. {
  2232. required: true,
  2233. message: ' ',
  2234. trigger: ['blur','change']
  2235. }
  2236. ],
  2237. rollQtyType: [
  2238. {
  2239. required: true,
  2240. message: ' ',
  2241. trigger: ['blur','change']
  2242. }
  2243. ],
  2244. inspectionTypeNoType: [
  2245. {
  2246. required: true,
  2247. message: ' ',
  2248. trigger: ['blur','change']
  2249. }
  2250. ],
  2251. partNoType: [
  2252. {
  2253. required: true,
  2254. message: ' ',
  2255. trigger: ['blur','change']
  2256. }
  2257. ],
  2258. umIdType: [
  2259. {
  2260. required: true,
  2261. message: ' ',
  2262. trigger: ['blur','change']
  2263. }
  2264. ],
  2265. templateId: [
  2266. {
  2267. required: true,
  2268. message: ' ',
  2269. trigger: ['blur','change']
  2270. }
  2271. ],
  2272. bu:[
  2273. {
  2274. required: true,
  2275. message: ' ',
  2276. trigger: ['blur','change']
  2277. }
  2278. ]
  2279. },
  2280. batchHandleAddModalFlag: false,
  2281. batchAddData: {
  2282. samplingLocation: '',
  2283. samplingLocationB: '',
  2284. samplingNumber: ''
  2285. },
  2286. controlData: {},
  2287. templateData: {
  2288. site: '',
  2289. bu: '',
  2290. templateId: '',
  2291. templateName: '',
  2292. inspectionTypeNo: '',
  2293. inspectionTypeName: ''
  2294. },
  2295. partData: {
  2296. site: '',
  2297. bu: '',
  2298. partNo: '',
  2299. partDesc: '',
  2300. sku: '',
  2301. cinvSourceCode: '',
  2302. },
  2303. templateList: [],
  2304. templateModelFlag: false,
  2305. templateDetailList: [
  2306. {
  2307. columnProp: 'templateId',
  2308. headerAlign: "center",
  2309. align: "center",
  2310. columnLabel: '模板编码',
  2311. columnHidden: false,
  2312. columnImage: false,
  2313. columnSortable: false,
  2314. sortLv: 0,
  2315. status: true,
  2316. fixed: '',
  2317. },
  2318. {
  2319. columnProp: 'templateName',
  2320. headerAlign: "center",
  2321. align: "center",
  2322. columnLabel: '模板名称',
  2323. columnHidden: false,
  2324. columnImage: false,
  2325. columnSortable: false,
  2326. sortLv: 0,
  2327. status: true,
  2328. fixed: '',
  2329. },
  2330. {
  2331. columnProp: 'inspectionTypeName',
  2332. headerAlign: "center",
  2333. align: "center",
  2334. columnLabel: '检验类型',
  2335. columnHidden: false,
  2336. columnImage: false,
  2337. columnSortable: false,
  2338. sortLv: 0,
  2339. status: true,
  2340. fixed: '',
  2341. },
  2342. ],
  2343. partDetailList: [
  2344. {
  2345. columnProp: 'partNo',
  2346. headerAlign: "center",
  2347. align: "center",
  2348. columnLabel: '物料编码',
  2349. columnHidden: false,
  2350. columnImage: false,
  2351. columnSortable: false,
  2352. sortLv: 0,
  2353. status: true,
  2354. fixed: '',
  2355. },
  2356. {
  2357. columnProp: 'partDesc',
  2358. headerAlign: "center",
  2359. align: "center",
  2360. columnLabel: '物料名称',
  2361. columnHidden: false,
  2362. columnImage: false,
  2363. columnSortable: false,
  2364. sortLv: 0,
  2365. status: true,
  2366. fixed: '',
  2367. },
  2368. {
  2369. columnProp: 'sku',
  2370. headerAlign: "center",
  2371. align: "center",
  2372. columnLabel: 'SKU',
  2373. columnHidden: false,
  2374. columnImage: false,
  2375. columnSortable: false,
  2376. sortLv: 0,
  2377. status: true,
  2378. fixed: '',
  2379. },
  2380. {
  2381. columnProp: 'cinvSourceCode',
  2382. headerAlign: "center",
  2383. align: "center",
  2384. columnLabel: 'PN',
  2385. columnHidden: false,
  2386. columnImage: false,
  2387. columnSortable: false,
  2388. sortLv: 0,
  2389. status: true,
  2390. fixed: '',
  2391. }
  2392. ],
  2393. checked: false,
  2394. typeOptions: [],
  2395. disposalMeasuresOptions: [],
  2396. timeout: null,
  2397. partModelFlag: false,
  2398. umList: [],
  2399. userBuList: [],
  2400. buList: [],
  2401. authSearch: false,
  2402. authSave: false,
  2403. authCheck: false,
  2404. authCancelCheck: false,
  2405. authDelete: false,
  2406. authOverLoad: false,
  2407. overLoadLoading: false,
  2408. authDetail: false,
  2409. authFile: false,
  2410. menuId: this.$route.meta.menuId,
  2411. roleList: [],
  2412. operatorList: [],
  2413. operatorData: {
  2414. flag: '',
  2415. site: '',
  2416. bu: '',
  2417. adminID: '',
  2418. adminName: '',
  2419. roleName: '',
  2420. roleId: '',
  2421. userName: this.$store.state.user.name
  2422. },
  2423. operatorModelFlag: false,
  2424. dataListSelections2: [],
  2425. operatorDetailList: [
  2426. {
  2427. columnProp: 'adminID',
  2428. headerAlign: "center",
  2429. align: "center",
  2430. columnLabel: '用户账号',
  2431. columnHidden: false,
  2432. columnImage: false,
  2433. columnSortable: false,
  2434. sortLv: 0,
  2435. status: true,
  2436. fixed: '',
  2437. },
  2438. {
  2439. columnProp: 'adminName',
  2440. headerAlign: "center",
  2441. align: "center",
  2442. columnLabel: '用户名称',
  2443. columnHidden: false,
  2444. columnImage: false,
  2445. columnSortable: false,
  2446. sortLv: 0,
  2447. status: true,
  2448. fixed: '',
  2449. },
  2450. {
  2451. columnProp: 'email',
  2452. headerAlign: "center",
  2453. align: "center",
  2454. columnLabel: '邮箱',
  2455. columnHidden: false,
  2456. columnImage: false,
  2457. columnSortable: false,
  2458. sortLv: 0,
  2459. status: true,
  2460. fixed: '',
  2461. },
  2462. {
  2463. columnProp: 'phone',
  2464. headerAlign: "center",
  2465. align: "center",
  2466. columnLabel: '手机号',
  2467. columnHidden: false,
  2468. columnImage: false,
  2469. columnSortable: false,
  2470. sortLv: 0,
  2471. status: true,
  2472. fixed: '',
  2473. },
  2474. ],
  2475. acquisitionList: [],
  2476. ItemObjectModelFlag: false,
  2477. itemObjectList: [],
  2478. itemObjectColumnList: [
  2479. {
  2480. columnProp: 'itemNo',
  2481. headerAlign: "center",
  2482. align: "center",
  2483. columnLabel: '项目编码',
  2484. columnHidden: false,
  2485. columnImage: false,
  2486. status: true,
  2487. columnWidth: 120,
  2488. },
  2489. {
  2490. columnProp: 'itemDesc',
  2491. headerAlign: "center",
  2492. align: "left",
  2493. columnLabel: '项目名称',
  2494. columnHidden: false,
  2495. columnImage: false,
  2496. status: true,
  2497. columnWidth: 200,
  2498. },
  2499. ],
  2500. actionData: {
  2501. site: '',
  2502. buNo: '',
  2503. inspectionNo: ''
  2504. },
  2505. fileLoading: false,
  2506. subDetailLoading: false,
  2507. saveLoading: false,
  2508. searchLoading: false,
  2509. subDetailVisiable: false,
  2510. }
  2511. },
  2512. mounted () {
  2513. this.$nextTick(() => {
  2514. this.height = window.innerHeight - 250
  2515. })
  2516. },
  2517. created () {
  2518. // 按钮控制
  2519. this.getButtonAuthData()
  2520. // 获取用户的 site 和 bu
  2521. // this.getSiteAndBuByUserName()
  2522. // 获取用户的 site 和 bu
  2523. // this.getSiteAndBuByUserName2()
  2524. // 收藏
  2525. this.favoriteIsOk()
  2526. // 检验类型
  2527. this.inspectionTypeSearch()
  2528. // 处置措施
  2529. this.disposalMeasuresSearch()
  2530. // 单位
  2531. this.umSearch()
  2532. // 查看 质量任务生成规则控制 动控是否开启
  2533. // this.queryController()
  2534. // 动态列
  2535. // this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  2536. // this.getTableUserColumn(this.$route.meta.menuId+'table2',2)
  2537. // this.getTableUserColumn(this.$route.meta.menuId+'table3',3)
  2538. if (!this.authSearch) {
  2539. // 获取数据列表
  2540. this.getDataList()
  2541. }
  2542. // 获取用户角色
  2543. this.getUserRoleList()
  2544. },
  2545. methods: {
  2546. // 获取用户的bu
  2547. getSiteAndBuByUserName2 () {
  2548. let tempData = {
  2549. username: this.$store.state.user.name,
  2550. }
  2551. getSiteAndBuByUserName2(tempData).then(({data}) => {
  2552. if (data.code === 0) {
  2553. this.buList = data.rows
  2554. }
  2555. })
  2556. },
  2557. // 批量打印标签
  2558. printList () {
  2559. if (this.IPQCSelections.length === 0) {
  2560. this.$message.warning('请勾选要打印的检验单!')
  2561. return
  2562. }
  2563. const inspectionNos = this.$refs.qrCode.init(this.IPQCSelections.map(item => item.inspectionNo))
  2564. for (let i = 0; i < inspectionNos.length; i++) {
  2565. this.IPQCSelections[i].qrCode = inspectionNos[i]
  2566. }
  2567. qcPrint(this.IPQCSelections)
  2568. },
  2569. // 数据采集
  2570. dataAcquisition () {
  2571. this.loadFlag = true
  2572. let tempDate = {
  2573. site: this.detailData.site,
  2574. buNo: this.detailData.buNo,
  2575. inspectionNo: this.detailData.inspectionNo,
  2576. flag: 'ipqc'
  2577. }
  2578. dataAcquisition(tempDate).then(({data}) => {
  2579. if (data.code === 0) {
  2580. // this.acquisitionList = data.rows
  2581. this.changeMyString(data.rows)
  2582. this.$message({
  2583. message: '数据采集成功',
  2584. type: 'success',
  2585. duration: 1500
  2586. })
  2587. } else {
  2588. this.$message({
  2589. message: data.msg,
  2590. type: 'warning',
  2591. duration: 1500
  2592. })
  2593. }
  2594. this.loadFlag = false
  2595. })
  2596. },
  2597. // 根据项目数据采集
  2598. dataAcquisitionByItem (row) {
  2599. this.loadFlag = true
  2600. let tempDate = {
  2601. site: row.site,
  2602. buNo: row.buNo,
  2603. inspectionNo: row.inspectionNo,
  2604. templateId: row.templateId,
  2605. itemNo: row.itemNo,
  2606. flag: 'ipqc'
  2607. }
  2608. dataAcquisitionByItem(tempDate).then(({data}) => {
  2609. if (data.code === 0) {
  2610. this.changeMyString(data.rows)
  2611. this.$message({
  2612. message: '数据采集成功',
  2613. type: 'success',
  2614. duration: 1500
  2615. })
  2616. } else {
  2617. this.$message({
  2618. message: data.msg,
  2619. type: 'warning',
  2620. duration: 1500
  2621. })
  2622. }
  2623. this.loadFlag = false
  2624. })
  2625. },
  2626. // 获取用户角色
  2627. getUserRoleList () {
  2628. getUserRoleList().then(({data}) => {
  2629. if (data.code === 0) {
  2630. this.roleList = data.rows
  2631. } else {
  2632. this.roleList = []
  2633. }
  2634. })
  2635. },
  2636. // 获取协同人员列表
  2637. getOperatorList () {
  2638. this.operatorData.flag = '1'
  2639. this.operatorData.bu = this.detailData.site + '_' + this.detailData.buNo
  2640. // if (this.roleList.length > 0) {
  2641. // let filterList = this.roleList.filter(item => item.roleName === '机修人员')
  2642. // if (filterList.length > 0) {
  2643. // this.operatorData.roleId = filterList[0].roleId
  2644. // } else {
  2645. // this.operatorData.roleId = this.roleList[0].roleId
  2646. // }
  2647. // } else {
  2648. // this.operatorData.roleId = ''
  2649. // }
  2650. // 先清空缓存选中
  2651. this.$nextTick(() => this.$refs.operatorTable.clearSelection())
  2652. // 拿到选中的人员编号
  2653. let tempDataList = (this.detailData.operator == null ? '' : this.detailData.operator).split(';')
  2654. getOperatorList(this.operatorData).then(({data}) => {
  2655. if (data && data.code === 0) {
  2656. this.operatorList = data.rows
  2657. this.operatorList.forEach(val => {
  2658. // 回显选中
  2659. if (tempDataList.includes(val.adminID)) {
  2660. this.$nextTick(() => this.$refs.operatorTable.toggleRowSelection(val, true))
  2661. }
  2662. })
  2663. this.operatorModelFlag = true
  2664. } else {
  2665. this.$alert(data.msg, '错误', {
  2666. confirmButtonText: '确定'
  2667. })
  2668. }
  2669. })
  2670. },
  2671. // 获取责任人员列表
  2672. getResponsiblePersonList () {
  2673. this.operatorData.flag = '2'
  2674. this.operatorData.bu = this.detailData.site + '_' + this.detailData.buNo
  2675. // 先清空缓存选中
  2676. this.$nextTick(() => this.$refs.operatorTable.clearSelection())
  2677. // 拿到选中的人员编号
  2678. let tempDataList = (this.detailData.responsiblePerson == null ? '' : this.detailData.responsiblePerson).split(';')
  2679. getResponsibleOperatorList(this.operatorData).then(({data}) => {
  2680. if (data && data.code === 0) {
  2681. this.operatorList = data.rows
  2682. this.operatorList.forEach(val => {
  2683. // 回显选中
  2684. if (tempDataList.includes(val.adminID)) {
  2685. this.$nextTick(() => this.$refs.operatorTable.toggleRowSelection(val, true))
  2686. }
  2687. })
  2688. this.operatorModelFlag = true
  2689. } else {
  2690. this.$alert(data.msg, '错误', {
  2691. confirmButtonText: '确定'
  2692. })
  2693. }
  2694. })
  2695. },
  2696. // 查询机修人员列表
  2697. getOperatorList2 () {
  2698. if (this.operatorData.flag === '1') {
  2699. // 拿到选中的人员编号
  2700. let tempDataList = (this.detailData.operator == null ? '' : this.detailData.operator).split(';')
  2701. getOperatorList(this.operatorData).then(({data}) => {
  2702. if (data && data.code === 0) {
  2703. this.operatorList = data.rows
  2704. this.operatorList.forEach(val => {
  2705. // 回显选中的部门
  2706. if (tempDataList.includes(val.adminID)) {
  2707. this.$nextTick(() => this.$refs.operatorTable.toggleRowSelection(val, true))
  2708. }
  2709. })
  2710. } else {
  2711. this.operatorList = []
  2712. }
  2713. })
  2714. } else {
  2715. // 拿到选中的人员编号
  2716. let tempDataList = (this.detailData.responsiblePerson == null ? '' : this.detailData.responsiblePerson).split(';')
  2717. getResponsibleOperatorList(this.operatorData).then(({data}) => {
  2718. if (data && data.code === 0) {
  2719. this.operatorList = data.rows
  2720. this.operatorList.forEach(val => {
  2721. // 回显选中的部门
  2722. if (tempDataList.includes(val.adminID)) {
  2723. this.$nextTick(() => this.$refs.operatorTable.toggleRowSelection(val, true))
  2724. }
  2725. })
  2726. } else {
  2727. this.operatorList = []
  2728. }
  2729. })
  2730. }
  2731. },
  2732. // 点击行选中复选框
  2733. operatorClickRow (row) {
  2734. this.$refs.operatorTable.toggleRowSelection(row)
  2735. },
  2736. // 多选
  2737. selectionChangeHandle2 (val) {
  2738. this.dataListSelections2 = val
  2739. },
  2740. // 确认多选协同人员
  2741. confirmOperator () {
  2742. if (this.dataListSelections2.length === 0) {
  2743. this.$message.warning('请勾选人员!')
  2744. return
  2745. }
  2746. if (this.operatorData.flag === '1') {
  2747. this.detailData.operator = ''
  2748. this.detailData.operatorName = ''
  2749. for (let i = 0; i < this.dataListSelections2.length; i++) {
  2750. //if (!this.detailData.operator.split(';').includes(this.dataListSelections2[i].adminID)) {
  2751. this.detailData.operatorName = this.detailData.operatorName + ";" + this.dataListSelections2[i].adminName
  2752. this.detailData.operator = this.detailData.operator + ";" + this.dataListSelections2[i].adminID
  2753. //}
  2754. }
  2755. if (this.detailData.operator.charAt(0) === ';') {
  2756. this.detailData.operator = this.detailData.operator.substring(1)
  2757. this.detailData.operatorName = this.detailData.operatorName.substring(1)
  2758. }
  2759. } else {
  2760. this.detailData.responsiblePerson = ''
  2761. this.detailData.responsiblePersonName = ''
  2762. for (let i = 0; i < this.dataListSelections2.length; i++) {
  2763. //if (!this.detailData.responsiblePerson.split(';').includes(this.dataListSelections2[i].adminID)) {
  2764. this.detailData.responsiblePersonName = this.detailData.responsiblePersonName + ";" + this.dataListSelections2[i].adminName
  2765. this.detailData.responsiblePerson = this.detailData.responsiblePerson + ";" + this.dataListSelections2[i].adminID
  2766. //}
  2767. }
  2768. if (this.detailData.responsiblePerson.charAt(0) === ';') {
  2769. this.detailData.responsiblePerson = this.detailData.responsiblePerson.substring(1)
  2770. this.detailData.responsiblePersonName = this.detailData.responsiblePersonName.substring(1)
  2771. }
  2772. }
  2773. this.operatorData = {
  2774. flag: '',
  2775. site: '',
  2776. bu: '',
  2777. adminID: '',
  2778. adminName: '',
  2779. roleName: '',
  2780. roleId: '',
  2781. userName: this.$store.state.user.name
  2782. }
  2783. this.operatorModelFlag = false
  2784. },
  2785. // bu内容改变事件
  2786. buChange () {
  2787. if (this.modalData.specialTaskFlag !== 'Y') { // 正常检验
  2788. this.modalData.templateId = ''
  2789. this.modalData.templateName = ''
  2790. } else { // 无工单检验
  2791. this.modalData.partNo = ''
  2792. this.modalData.partDesc = ''
  2793. this.modalData.invdefinetype = ''
  2794. this.modalData.sku = ''
  2795. this.modalData.cinvSourceCode = ''
  2796. this.modalData.templateId = ''
  2797. this.modalData.templateName = ''
  2798. }
  2799. },
  2800. // 获取用户的bu
  2801. getSiteAndBuByUserName () {
  2802. let tempData = {
  2803. username: this.$store.state.user.name,
  2804. }
  2805. getSiteAndBuByUserName(tempData).then(({data}) => {
  2806. if (data.code === 0) {
  2807. this.userBuList = data.rows
  2808. }
  2809. })
  2810. },
  2811. // 子明细导入
  2812. subDetailUpload () {
  2813. let currentData = {
  2814. flag: 'IPQC',
  2815. site: this.detailData.site,
  2816. buNo: this.detailData.buNo,
  2817. inspectionNo: this.detailData.inspectionNo
  2818. }
  2819. //打开组件 去做新增业务
  2820. this.$nextTick(() => {
  2821. this.$refs.subDetailUpload.init(currentData)
  2822. })
  2823. },
  2824. // 查询单位
  2825. umSearch () {
  2826. let tempData = {
  2827. site: this.$store.state.user.site,
  2828. active: 'Y'
  2829. }
  2830. umSearch(tempData).then(({data}) => {
  2831. if (data.code === 0) {
  2832. this.umList = data.rows
  2833. }
  2834. })
  2835. },
  2836. // 标签号回车事件
  2837. rollNoEnter () {
  2838. const regex = /\(08\)(.*)/
  2839. const result = this.modalData.rollNo.match(regex)
  2840. let tempData = {
  2841. site: '',
  2842. bu: this.modalData.bu,
  2843. rollNo: result == null ? this.modalData.rollNo : result[1]
  2844. }
  2845. rollNoEnter(tempData).then(({data}) => {
  2846. if (data && data.code === 0) {
  2847. this.operationList = data.rows
  2848. this.modalData.seqNo = data.rows[0].seqNo
  2849. this.modalData.orderNo = data.rows[0].orderNo
  2850. this.modalData.operationDesc = data.rows[0].operationDesc
  2851. this.modalData.workCenterNo = data.rows[0].workCenterNo
  2852. this.modalData.resourceId = data.rows[0].resourceId
  2853. this.modalData.resourceDesc = data.rows[0].resourceDesc
  2854. this.modalData.partNo = data.rows[0].partNo
  2855. this.modalData.partDesc = data.rows[0].partDesc
  2856. this.modalData.invdefinetype = data.rows[0].invdefinetype
  2857. this.modalData.sku = data.rows[0].sku
  2858. this.modalData.cinvSourceCode = data.rows[0].cinvSourceCode
  2859. } else {
  2860. this.$alert(data.msg, '错误', {
  2861. confirmButtonText: '确定'
  2862. })
  2863. }
  2864. })
  2865. },
  2866. // input 模糊搜索
  2867. querySearchAsync (queryString, cb) {
  2868. clearTimeout(this.timeout)
  2869. let results = []
  2870. if (queryString === '') {
  2871. cb(results)
  2872. } else {
  2873. // 掉接口需要的参数
  2874. let find = {
  2875. rollNo: queryString, //上面输入框绑定的数据
  2876. site: this.$store.state.user.site,
  2877. }
  2878. // 这里去调后端的接口.根据自己接口的情况进行赋值
  2879. getRollNo(find).then(({data}) => {
  2880. if (data.code === 0) {
  2881. let result = data.rows
  2882. // 循环放到一个远程搜索需要的数组
  2883. for (let i = 0; i < result.length; i++) {
  2884. const element = result[i]
  2885. results.push({
  2886. value: element.rollNo,
  2887. seqNo: element.seqNo,
  2888. orderNo: element.orderNo
  2889. })
  2890. }
  2891. cb(results)
  2892. } else {
  2893. results = []
  2894. cb(results)
  2895. }
  2896. })
  2897. }
  2898. },
  2899. // 点击出现搜索后点击的每一项
  2900. handleSelect (item) {
  2901. this.modalData.rollNo = item.value
  2902. this.modalData.seqNo = item.seqNo
  2903. this.modalData.orderNo = item.orderNo
  2904. this.getOperationList()
  2905. //this.getPartList()
  2906. },
  2907. // 获取处置措施列表
  2908. disposalMeasuresSearch () {
  2909. let tempData = {
  2910. inspectionTypeNo: '101'
  2911. }
  2912. disposalMeasuresSearch(tempData).then(({data}) => {
  2913. if (data.code === 0) {
  2914. this.disposalMeasuresOptions = data.rows
  2915. }
  2916. })
  2917. },
  2918. // 查询检验类型
  2919. inspectionTypeSearch () {
  2920. let tempData = {
  2921. site: this.$store.state.user.site
  2922. }
  2923. inspectionTypeSearch(tempData).then(({data}) => {
  2924. if (data.code === 0) {
  2925. this.typeOptions = data.rows
  2926. this.typeOptions.forEach(val => {
  2927. if (val.inspectionTypeName.includes('IPQC')) {
  2928. this.templateData.inspectionTypeNo = val.inspectionTypeNo
  2929. this.templateData.inspectionTypeName = val.inspectionTypeName
  2930. }
  2931. })
  2932. }
  2933. })
  2934. },
  2935. selectFlag () {
  2936. return true
  2937. },
  2938. // 单机选中
  2939. IPQCClickRow (row) {
  2940. this.$refs.IPQCTable.toggleRowSelection(row)
  2941. },
  2942. // 复选
  2943. selectionIPQC (val) {
  2944. this.IPQCSelections = val
  2945. },
  2946. //刷新派设备文档的列表
  2947. getFileContentData (row) {
  2948. let currentData = {
  2949. orderRef1: row.site,
  2950. orderRef2: row.inspectionNo,
  2951. orderRef4: row.buNo,
  2952. partNo: row.partNo
  2953. }
  2954. this.fileLoading = true
  2955. getInspectionFile(currentData).then(({data}) => {
  2956. //区分请求成功和失败的状况
  2957. if (data && data.code === 0) {
  2958. this.fileContentList = data.rows
  2959. } else {
  2960. this.fileContentList = []
  2961. }
  2962. this.fileLoading = false
  2963. }).catch(()=>{
  2964. this.fileLoading = false
  2965. })
  2966. this.fileFlag = true
  2967. },
  2968. /*新增文件的modal*/
  2969. addUploadFileModal () {
  2970. let currentData = {
  2971. titleCon: 'IPQC文件上传',
  2972. site: this.detailData.site,
  2973. buNo: this.detailData.buNo,
  2974. createBy: this.$store.state.user.name,
  2975. inspectionNo: this.detailData.inspectionNo,
  2976. remark: '',
  2977. folder: 'qcIPQC',
  2978. }
  2979. //打开组件 去做新增业务
  2980. this.$nextTick(() => {
  2981. this.$refs.qcFAIUploadFile.init(currentData)
  2982. })
  2983. },
  2984. // 上传项目图片
  2985. uploadImageModal (row) {
  2986. const openImage = () => {
  2987. let currentData = {
  2988. site: this.detailData.site,
  2989. buNo: this.detailData.buNo,
  2990. createBy: this.$store.state.user.name,
  2991. inspectionNo: this.detailData.inspectionNo,
  2992. itemNo: row.itemNo,
  2993. folder: 'IPQCItemImageFile'
  2994. }
  2995. this.$nextTick(() => {
  2996. this.$refs.comQcItemImageUploadFile.init(currentData)
  2997. })
  2998. }
  2999. if (this.detailData.state !== '待检验') {
  3000. openImage()
  3001. return
  3002. }
  3003. if (this.detailData.passQty > this.detailData.rollQty) {
  3004. this.$message.warning('合格数量不能大于送检数量!')
  3005. return
  3006. }
  3007. this.saveDetailInformation('1', {
  3008. keepDetailOpen: true,
  3009. skipSuccessMessage: true,
  3010. afterSuccess: openImage
  3011. })
  3012. },
  3013. // 查询检验员
  3014. inspectorSearch () {
  3015. inspectorSearch().then(({data}) => {
  3016. if (data.code === 0) {
  3017. this.options = data.rows
  3018. }
  3019. })
  3020. },
  3021. // 获取基础数据列表S
  3022. getBaseList (val,type) {
  3023. this.tagNo = val
  3024. this.$nextTick(() => {
  3025. let strVal = ''
  3026. if (val === 1052) {
  3027. this.searchSeqInfo()
  3028. this.seqDetailFlag = true
  3029. }
  3030. if (val === 505) {
  3031. strVal = this.modalData.resourceDesc
  3032. this.$refs.baseList.init(val, strVal)
  3033. }
  3034. // if (val === 206) {
  3035. // strVal = this.modalData.partNo
  3036. // this.$refs.baseList.init(val, strVal)
  3037. // }
  3038. })
  3039. },
  3040. /* 列表方法的回调 */
  3041. getBaseData (val) {
  3042. if (this.tagNo === 1052) {
  3043. this.modalData.seqNo = val.seqno
  3044. this.modalData.orderNo = val.orderno
  3045. this.modalData.operationDesc = ''
  3046. this.modalData.resourceId = ''
  3047. this.getOperationList()
  3048. //this.getPartList()
  3049. }
  3050. if (this.tagNo === 505) {
  3051. this.modalData.resourceId = val.resource_id
  3052. this.modalData.resourceDesc = val.resource_desc
  3053. }
  3054. // if (this.tagNo === 206) {
  3055. // this.modalData.partNo = val.part_no
  3056. // this.modalData.partDesc = val.part_desc
  3057. // // 获取物料的其他信息
  3058. // this.getPartInformation()
  3059. // }
  3060. },
  3061. // // 获取物料其它信息
  3062. // getPartInformation () {
  3063. // getPartInformation(this.modalData).then(({data}) => {
  3064. // if (data && data.code === 0) {
  3065. // this.modalData.spec = data.rows[0].spec
  3066. // this.modalData.sku = data.rows[0].sku
  3067. // } else {
  3068. // this.$alert(data.msg, '错误', {
  3069. // confirmButtonText: '确定'
  3070. // })
  3071. // }
  3072. // })
  3073. // },
  3074. // 获取工序列表
  3075. getOperationList () {
  3076. getOperationList(this.modalData).then(({data}) => {
  3077. if (data && data.code === 0) {
  3078. this.operationList = data.rows
  3079. this.modalData.operationDesc = data.rows[0].operationDesc
  3080. this.modalData.workCenterNo = data.rows[0].workCenterNo
  3081. this.modalData.resourceId = data.rows[0].resourceId
  3082. this.modalData.resourceDesc = data.rows[0].resourceDesc
  3083. this.modalData.partNo = data.rows[0].partNo
  3084. this.modalData.partDesc = data.rows[0].partDesc
  3085. this.modalData.invdefinetype = data.rows[0].invdefinetype
  3086. this.modalData.sku = data.rows[0].sku
  3087. this.modalData.cinvSourceCode = data.rows[0].cinvSourceCode
  3088. this.modalData.operationDesc = data.rows[0].operationDesc
  3089. this.modalData.qtyrequired = data.rows[0].qtyrequired
  3090. this.modalData.lotsize = data.rows[0].lotsize
  3091. } else {
  3092. this.$alert(data.msg, '错误', {
  3093. confirmButtonText: '确定'
  3094. })
  3095. }
  3096. })
  3097. },
  3098. // 获取机台列表
  3099. getResourceList () {
  3100. // 判断是否为特殊任务,特殊任务的机台不随工序改变
  3101. if (this.modalData.specialTaskFlag === 'Y') {
  3102. return
  3103. } else {
  3104. getResourceList(this.modalData).then(({data}) => {
  3105. if (data && data.code === 0) {
  3106. //this.resourceList = data.rows
  3107. this.modalData.workCenterNo = data.rows[0].workCenterNo
  3108. this.modalData.resourceId = data.rows[0].resourceId
  3109. this.modalData.resourceDesc = data.rows[0].resourceDesc
  3110. } else {
  3111. this.$alert(data.msg, '错误', {
  3112. confirmButtonText: '确定'
  3113. })
  3114. }
  3115. })
  3116. }
  3117. },
  3118. // 获取物料列表
  3119. getPartList () {
  3120. getPartList(this.modalData).then(({data}) => {
  3121. if (data && data.code === 0) {
  3122. this.partList = data.rows
  3123. this.modalData.partNo = this.partList[0].partNo
  3124. this.modalData.partDesc = this.partList[0].partDesc
  3125. this.modalData.invdefinetype = this.partList[0].invdefinetype
  3126. this.modalData.sku = this.partList[0].sku
  3127. this.modalData.cinvSourceCode = this.partList[0].cinvSourceCode
  3128. } else {
  3129. this.$alert(data.msg, '错误', {
  3130. confirmButtonText: '确定'
  3131. })
  3132. }
  3133. })
  3134. },
  3135. // 检查动控是否开启
  3136. queryController () {
  3137. let tempData = {
  3138. controlNo: '10004',
  3139. site: this.$store.state.user.site,
  3140. }
  3141. queryController(tempData).then(({data}) => {
  3142. if (data && data.code === 0) {
  3143. this.controlData = data.rows
  3144. } else {
  3145. this.$alert(data.msg, '错误', {
  3146. confirmButtonText: '确定'
  3147. })
  3148. }
  3149. })
  3150. },
  3151. addModal () {
  3152. this.modalData = {
  3153. flag: '1',
  3154. site: this.$store.state.user.site,
  3155. // bu: this.userBuList[0].buNo,
  3156. buNo: '*',
  3157. inspectionNo:'',
  3158. partNo: '',
  3159. partDesc: '',
  3160. inspectionTypeNo:'',
  3161. inspectionTypeName:'',
  3162. inspectorNo:'',
  3163. inspectorName:'',
  3164. submit_flag:'',
  3165. orderNo: '',
  3166. operationDesc: '',
  3167. operationNo: '',
  3168. resourceId: '',
  3169. resourceDesc: '',
  3170. rollQty: '',
  3171. seqNo: '',
  3172. batchRollNo: '',
  3173. invdefinetype: '',
  3174. sku: '',
  3175. cinvSourceCode: '',
  3176. specialRequirements: '',
  3177. templateId: '',
  3178. templateName: '',
  3179. specialTaskFlag: '',
  3180. workCenterNo: '',
  3181. rollNo: '',
  3182. umId: this.umList[0].umId,
  3183. umName: this.umList[0].umName,
  3184. sjzs: '',
  3185. }
  3186. this.operationList = []
  3187. this.resourceList = []
  3188. this.partList = []
  3189. this.modalDisableFlag = false
  3190. this.modalFlag = true
  3191. this.checked = false
  3192. },
  3193. // 获取检验模板列表
  3194. queryTemplateList () {
  3195. // this.templateData.bu = this.modalData.bu
  3196. this.templateData.site = this.modalData.site
  3197. this.templateData.buNo = this.modalData.buNo
  3198. // 查询所有检验模板
  3199. queryTemplateList(this.templateData).then(({data}) => {
  3200. if (data && data.code === 0) {
  3201. this.templateList = data.rows
  3202. this.templateModelFlag = true
  3203. }else {
  3204. this.$alert(data.msg, '错误', {
  3205. confirmButtonText: '确定'
  3206. })
  3207. }
  3208. })
  3209. },
  3210. // 获取物料列表
  3211. queryPartList () {
  3212. // this.partData.bu = this.modalData.bu
  3213. this.partData.site = this.modalData.site
  3214. this.partData.buNo = this.modalData.buNo
  3215. // 查询所有物料
  3216. if (this.partData.partNo === '' && this.partData.partDesc === '' && this.partData.sku === '' && this.partData.cinvSourceCode === '') {
  3217. this.partList = []
  3218. this.partModelFlag = true
  3219. } else {
  3220. queryPartList(this.partData).then(({data}) => {
  3221. if (data && data.code === 0) {
  3222. this.partList = data.rows
  3223. this.partModelFlag = true
  3224. }else {
  3225. this.$alert(data.msg, '错误', {
  3226. confirmButtonText: '确定'
  3227. })
  3228. }
  3229. })
  3230. }
  3231. },
  3232. // 选中检验模板
  3233. getRowData (row) {
  3234. this.modalData.templateId = row.templateId
  3235. this.modalData.templateName = row.templateName
  3236. this.templateModelFlag = false
  3237. },
  3238. // 选中派工单号
  3239. getRowData1 (row) {
  3240. this.modalData.sku = row.sku
  3241. this.modalData.partNo = row.partNo
  3242. this.modalData.partDesc = row.partDesc
  3243. this.modalData.orderNo = row.orderNo
  3244. this.modalData.seqNo = row.seqNo
  3245. this.modalData.lotsize = row.lotsize
  3246. this.modalData.operationDesc = row.operationDesc
  3247. this.modalData.qtyrequired = row.qtyrequired
  3248. this.modalData.rollQty = row.qtyrequired
  3249. this.modalData.sjzs = row.sjzs
  3250. this.getOperationList()
  3251. //查询物料对应的模板
  3252. let params = {
  3253. site: this.modalData.site,
  3254. buNo: this.modalData.buNo,
  3255. partNo: this.modalData.partNo,
  3256. attributeNo: this.modalData.partNo,
  3257. partDesc: this.modalData.partDesc,
  3258. attributeType: 'A',
  3259. inspectionTypeNo: '101'
  3260. }
  3261. searchPartAttributeDetails(params).then(({data}) => {
  3262. if (data.total = 1){
  3263. this.modalData.templateId = data.rows[0].templateId
  3264. this.modalData.templateName = data.rows[0].templateName
  3265. }
  3266. })
  3267. this.seqDetailFlag = false
  3268. },
  3269. // 选中物料
  3270. getRowData2 (row) {
  3271. this.modalData.partNo = row.partNo
  3272. this.modalData.partDesc = row.partDesc
  3273. this.modalData.sku = row.sku
  3274. this.modalData.invdefinetype = row.invdefinetype
  3275. this.modalData.cinvSourceCode = row.cinvSourceCode
  3276. this.partData = {
  3277. site: '',
  3278. bu: '',
  3279. partNo: '',
  3280. partDesc: '',
  3281. sku: '',
  3282. cinvSourceCode: '',
  3283. }
  3284. this.partModelFlag = false
  3285. },
  3286. // 是否新增特殊任务
  3287. changeSpecialTask () {
  3288. // 先重置数据
  3289. this.modalData = {
  3290. flag: '1',
  3291. site: this.$store.state.user.site,
  3292. // bu: this.userBuList[0].buNo,
  3293. buNo: '*',
  3294. inspectionNo:'',
  3295. partNo: '',
  3296. partDesc: '',
  3297. inspectionTypeNo:'',
  3298. inspectionTypeName:'',
  3299. inspectorNo:'',
  3300. inspectorName:'',
  3301. submit_flag:'',
  3302. orderNo: '',
  3303. operationDesc: '',
  3304. operationNo: '',
  3305. resourceId: '',
  3306. resourceDesc: '',
  3307. rollQty: '',
  3308. seqNo: '',
  3309. batchRollNo: '',
  3310. invdefinetype: '',
  3311. sku: '',
  3312. cinvSourceCode: '',
  3313. specialRequirements: '',
  3314. templateId: '',
  3315. templateName: '',
  3316. specialTaskFlag: '',
  3317. workCenterNo: '',
  3318. rollNo: '',
  3319. umId: this.umList[0].umId,
  3320. umName: this.umList[0].umName
  3321. }
  3322. // 获取选中框
  3323. let obj = document.getElementsByName('specialTask')
  3324. // 判断是否打勾
  3325. if (obj[0].checked) {
  3326. let tempData = {
  3327. site: this.$store.state.user.site,
  3328. // bu: this.modalData.bu
  3329. buNo: '*'
  3330. }
  3331. this.modalData.specialTaskFlag = 'Y'
  3332. // 获取特殊工序列表
  3333. getSpecialOperationList(tempData).then(({data}) => {
  3334. if (data && data.code === 0) {
  3335. this.operationList = data.rows
  3336. } else {
  3337. this.$alert(data.msg, '错误', {
  3338. confirmButtonText: '确定'
  3339. })
  3340. }
  3341. })
  3342. // 派工单和工单号赋值
  3343. this.modalData.seqNo = '0'
  3344. this.modalData.orderNo = '000#1'
  3345. } else {
  3346. this.operationList = []
  3347. this.modalData.specialTaskFlag = ''
  3348. }
  3349. },
  3350. // 新增IPQC巡检记录
  3351. saveData () {
  3352. if (this.modalData.seqNo === '' || this.modalData.seqNo == null) {
  3353. this.$message.warning('请选择派工单!')
  3354. return
  3355. }
  3356. if (this.modalData.orderNo === '' || this.modalData.orderNo == null) {
  3357. this.$message.warning('请选择工单!')
  3358. return
  3359. }
  3360. if (this.modalData.inspectionTypeNo === '' || this.modalData.inspectionTypeNo == null) {
  3361. this.$message.warning('请选择检验类型!')
  3362. return
  3363. }
  3364. if (this.modalData.specialTaskFlag !== 'Y' && (this.modalData.partNo === '' || this.modalData.partNo == null)) {
  3365. this.$message.warning('请选择物料!')
  3366. return
  3367. }
  3368. if (this.modalData.operationDesc === '' || this.modalData.operationDesc == null) {
  3369. this.$message.warning('请选择工序!')
  3370. return
  3371. }
  3372. if (this.modalData.specialTaskFlag !== 'Y' && (this.modalData.resourceId === '' || this.modalData.resourceId == null)) {
  3373. this.$message.warning('请选择机台!')
  3374. return
  3375. }
  3376. if (this.modalData.rollQty === '' || this.modalData.rollQty == null) {
  3377. this.$message.warning('请填写送检数量!')
  3378. return
  3379. }
  3380. if (this.modalData.umId === '' || this.modalData.umId == null) {
  3381. this.$message.warning('请选择单位!')
  3382. return
  3383. }
  3384. if (this.controlData.baseData === '控制' && (this.modalData.templateId == null || this.modalData.templateId === '')) {
  3385. this.$message.warning('请选择检验模板!')
  3386. return
  3387. }
  3388. this.saveLoading = true
  3389. if(this.modalData.flag === '1'){
  3390. saveOsInspection(this.modalData).then(({data}) => {
  3391. if (data && data.code === 0) {
  3392. this.getDataList()
  3393. this.operationList = []
  3394. this.resourceList = []
  3395. this.partList = []
  3396. this.modalFlag = false
  3397. this.$message({
  3398. message: '操作成功',
  3399. type: 'success',
  3400. duration: 1500,
  3401. onClose: () => {}
  3402. })
  3403. } else {
  3404. this.$alert(data.msg, '错误', {
  3405. confirmButtonText: '确定'
  3406. })
  3407. }
  3408. this.saveLoading = false
  3409. }).catch(()=>{
  3410. this.saveLoading = false
  3411. })
  3412. }
  3413. },
  3414. // 获取主信息数据列表
  3415. getDataList () {
  3416. this.searchLoading = true
  3417. this.searchData.limit = this.pageSize
  3418. this.searchData.page = this.pageIndex
  3419. qcIPQCInspectionSearch(this.searchData).then(({data}) => {
  3420. if (data.code === 0) {
  3421. this.dataList = data.page.list
  3422. this.pageIndex = data.page.currPage
  3423. this.pageSize = data.page.pageSize
  3424. this.totalPage = data.page.totalCount
  3425. this.searchLoading = false
  3426. } else {
  3427. this.searchLoading = false
  3428. }
  3429. }).catch(()=>{
  3430. this.searchLoading = false
  3431. })
  3432. },
  3433. // 每页数
  3434. sizeChangeHandle (val) {
  3435. this.pageSize = val
  3436. this.pageIndex = 1
  3437. this.getDataList()
  3438. },
  3439. // 当前页
  3440. currentChangeHandle (val) {
  3441. this.pageIndex = val
  3442. this.getDataList()
  3443. },
  3444. // 子明细每页数
  3445. sizeChangeHandle2 (val) {
  3446. this.pageSize2 = val
  3447. },
  3448. // 子明细当前页
  3449. currentChangeHandle2 (val) {
  3450. this.pageIndex2 = val
  3451. },
  3452. // 多选
  3453. selectionChangeHandle (val) {
  3454. this.dataListSelections = val
  3455. },
  3456. // 删除检验记录
  3457. deleteModal () {
  3458. if (this.IPQCSelections.length === 0) {
  3459. this.$alert('请勾选要删除的检验单!', '提示', {
  3460. confirmButtonText: '确定'
  3461. })
  3462. return false
  3463. }
  3464. this.$confirm(`是否删除该 `+ this.IPQCSelections.length +` 条检验记录?`, '提示', {
  3465. confirmButtonText: '确定',
  3466. cancelButtonText: '取消',
  3467. type: 'warning'
  3468. }).then(() => {
  3469. let tempData = {
  3470. site: this.$store.state.user.site,
  3471. submitList: this.IPQCSelections
  3472. }
  3473. ipqcRecordDelete(tempData).then(({data}) => {
  3474. if (data && data.code === 0) {
  3475. this.getDataList()
  3476. this.IPQCSelections = []
  3477. this.$message({
  3478. message: '操作成功',
  3479. type: 'success',
  3480. duration: 1500,
  3481. onClose: () => {}
  3482. })
  3483. } else {
  3484. this.$alert(data.msg, '错误', {
  3485. confirmButtonText: '确定'
  3486. })
  3487. }
  3488. })
  3489. }).catch(() => {
  3490. })
  3491. },
  3492. // 任务重载
  3493. overLoadModal () {
  3494. if (this.IPQCSelections.length === 0) {
  3495. this.$message.warning('请勾选要重载的检验单!')
  3496. return
  3497. }
  3498. if (!this.IPQCSelections.every(val => val.state === '待检验' || val.state === '未开始')) {
  3499. this.$message.warning('检验单必须为待检验或未开始状态!')
  3500. return
  3501. }
  3502. this.$confirm(`是否重载该 ` + this.IPQCSelections.length + ` 条检验单?`, '提示', {
  3503. confirmButtonText: '确定',
  3504. cancelButtonText: '取消',
  3505. type: 'warning'
  3506. }).then(() => {
  3507. const submitList = this.IPQCSelections.map(item => ({
  3508. ...item,
  3509. inspectionTypeNo: item.inspectionTypeNo || '101'
  3510. }))
  3511. this.overLoadModal2({
  3512. site: '',
  3513. submitList
  3514. })
  3515. }).catch(() => {})
  3516. },
  3517. overLoadModal2 (tempData) {
  3518. this.overLoadLoading = true
  3519. ipqcRecordOverLoad(tempData).then(({data}) => {
  3520. if (data && data.code === 0) {
  3521. this.getDataList()
  3522. this.IPQCSelections = []
  3523. this.$message({
  3524. message: '操作成功',
  3525. type: 'success',
  3526. duration: 1500,
  3527. onClose: () => {}
  3528. })
  3529. } else {
  3530. this.$alert(data.msg, '错误', {
  3531. confirmButtonText: '确定'
  3532. })
  3533. }
  3534. this.overLoadLoading = false
  3535. }).catch(() => {
  3536. this.overLoadLoading = false
  3537. })
  3538. },
  3539. Transfer (type) {
  3540. if (type === '2') {
  3541. if (this.detailData.inspectionResult === '' || this.detailData.inspectionResult == null) {
  3542. this.$message.warning('请选择检验结论!')
  3543. return
  3544. }
  3545. if (this.detailData.inspectionResult === '不合格' && (this.detailData.disposalMeasures == null || this.detailData.disposalMeasures === '')) {
  3546. this.$message.warning('请选择处置措施!')
  3547. return
  3548. }
  3549. if (this.detailList.length > 0 && this.detailData.inspectionResult === '不合格') {
  3550. const flag = this.detailList.some(item => item.itemResult === 'N')
  3551. if (!flag) {
  3552. this.$message.warning('请选择不合格项目!')
  3553. return
  3554. }
  3555. }
  3556. if (this.detailData.inspectionResult !== '不合格') {
  3557. this.detailData.disposalMeasures = ''
  3558. this.detailData.disposalRemark = ''
  3559. }
  3560. const picRequiredRow = this.detailList.find(
  3561. item => item.pictureFlag === 'Y' && !(Number(item.imageDetailNum) > 0)
  3562. )
  3563. if (picRequiredRow) {
  3564. this.$message.warning(`项目编码:${picRequiredRow.itemNo || ''}图片必填,请检查!`)
  3565. return
  3566. }
  3567. }
  3568. if (this.detailData.passQty>this.detailData.rollQty){
  3569. this.$message.warning('合格数量不能大于送检数量!')
  3570. return
  3571. }
  3572. this.saveDetailInformation(type)
  3573. },
  3574. // 新增明细信息
  3575. saveDetailInformation (type, options = {}) {
  3576. const keepDetailOpen = options.keepDetailOpen === true
  3577. this.saveInformationData.site = this.detailData.site
  3578. this.saveInformationData.buNo = this.detailData.buNo
  3579. this.saveInformationData.inspectionNo = this.detailData.inspectionNo
  3580. this.saveInformationData.disposalMeasures = this.detailData.disposalMeasures
  3581. this.saveInformationData.disposalRemark = this.detailData.disposalRemark
  3582. this.saveInformationData.inspectorNo = this.$store.state.user.name
  3583. this.saveInformationData.inspectionResult = this.detailData.inspectionResult
  3584. this.saveInformationData.inspectionRemark = this.detailData.inspectionRemark
  3585. this.saveInformationData.rollQty = this.detailData.rollQty
  3586. this.saveInformationData.samplingQty = this.detailData.samplingQty
  3587. this.saveInformationData.unqualifiedQty = this.detailData.unqualifiedQty
  3588. this.saveInformationData.partNo = this.detailData.partNo
  3589. this.saveInformationData.partDesc = this.detailData.partDesc
  3590. this.saveInformationData.operator = this.detailData.operator
  3591. this.saveInformationData.responsiblePerson = this.detailData.responsiblePerson
  3592. this.saveInformationData.itemList = JSON.parse(JSON.stringify(this.detailList))
  3593. this.saveInformationData.passQty = this.detailData.passQty == null ? 0 : this.detailData.passQty
  3594. this.saveInformationData.notPassQty = this.detailData.notPassQty == null ? 0 : this.detailData.notPassQty
  3595. this.saveInformationData.batchQualifiedQty = this.detailData.batchQualifiedQty == null ? 0 : this.detailData.batchQualifiedQty
  3596. this.saveInformationData.type = type
  3597. this.transferLoadFlag = true
  3598. // this.saveInformationData.subDetailList = this.acquisitionList
  3599. saveIPQCDetailedRecord(this.saveInformationData).then(({data}) => {
  3600. if (data && data.code === 0) {
  3601. this.getDataList()
  3602. if (keepDetailOpen) {
  3603. this.getInspectionFormData()
  3604. if (!options.skipSuccessMessage) {
  3605. this.$message({
  3606. message: '操作成功',
  3607. type: 'success',
  3608. duration: 1500,
  3609. onClose: () => {}
  3610. })
  3611. }
  3612. } else {
  3613. this.detailInformationFlag = false
  3614. this.$message({
  3615. message: '操作成功',
  3616. type: 'success',
  3617. duration: 1500,
  3618. onClose: () => {}
  3619. })
  3620. }
  3621. if (typeof options.afterSuccess === 'function') {
  3622. options.afterSuccess()
  3623. }
  3624. } else {
  3625. this.$alert(data.msg, '错误', {
  3626. confirmButtonText: '确定'
  3627. })
  3628. }
  3629. this.transferLoadFlag = false
  3630. }).catch(()=>{
  3631. this.transferLoadFlag = false
  3632. })
  3633. },
  3634. // 开始检验
  3635. actionModal (row) {
  3636. this.actionData = {
  3637. site: row.site,
  3638. buNo: row.buNo,
  3639. inspectionNo: row.inspectionNo
  3640. }
  3641. getIPQCItemObjectList(this.actionData).then(({data}) => {
  3642. if (data && data.code === 0) {
  3643. if (data.rows.length === 0) {
  3644. this.actionModal2()
  3645. } else {
  3646. this.itemObjectList = data.rows
  3647. this.ItemObjectModelFlag = true
  3648. }
  3649. } else {
  3650. this.$alert(data.msg, '错误', {
  3651. confirmButtonText: '确定'
  3652. })
  3653. }
  3654. })
  3655. },
  3656. // 开始检验
  3657. actionModal2 () {
  3658. this.$confirm(`确认开始检验?`, '提示', {
  3659. confirmButtonText: '确定',
  3660. cancelButtonText: '取消',
  3661. type: 'warning'
  3662. }).then(() => {
  3663. let tempData = {
  3664. site: this.actionData.site,
  3665. buNo: this.actionData.buNo,
  3666. inspectionNo: this.actionData.inspectionNo,
  3667. actionBy: this.$store.state.user.name,
  3668. state: '待检验',
  3669. equipmentList: this.itemObjectList
  3670. }
  3671. actionIPQCInspection(tempData).then(({data}) => {
  3672. if (data && data.code === 0) {
  3673. this.getDataList()
  3674. this.$message({
  3675. message: '操作成功',
  3676. type: 'success',
  3677. duration: 1500,
  3678. onClose: () => {}
  3679. })
  3680. this.ItemObjectModelFlag = false
  3681. } else {
  3682. this.$alert(data.msg, '错误', {
  3683. confirmButtonText: '确定'
  3684. })
  3685. }
  3686. })
  3687. })
  3688. },
  3689. // 明细记录信息查询
  3690. detailModal (row) {
  3691. this.detailData.site = row.site
  3692. this.detailData.buNo = row.buNo
  3693. this.detailData.inspectionNo = row.inspectionNo
  3694. this.detailData.partNo = row.partNo
  3695. this.detailData.partDesc = row.partDesc
  3696. this.detailData.rollQty = row.rollQty
  3697. this.detailData.samplingQty = row.samplingQty
  3698. this.detailData.unqualifiedQty = row.unqualifiedQty
  3699. this.detailData.unqualifiedQuantity = row.unqualifiedQuantity
  3700. this.detailData.submitFlag = row.submitFlag
  3701. this.detailData.disposalMeasures = row.disposalMeasures
  3702. this.detailData.disposalRemark = row.disposalRemark
  3703. this.detailData.inspectionResult = row.inspectionResult
  3704. this.detailData.inspectorNo = row.inspectorNo
  3705. this.detailData.inspectorName = row.inspectorName
  3706. this.detailData.inspectionRemark = row.inspectionRemark
  3707. this.detailData.cinvSourceCode = row.cinvSourceCode
  3708. this.detailData.sku = row.sku
  3709. this.detailData.cinvSourceCode = row.cinvSourceCode
  3710. this.detailData.invdefinetype = row.invdefinetype
  3711. this.detailData.umId = row.umId
  3712. this.detailData.umName = row.umName
  3713. this.detailData.operator = row.operator
  3714. this.detailData.operatorName = row.operatorName
  3715. this.detailData.responsiblePerson = row.responsiblePerson
  3716. this.detailData.responsiblePersonName = row.responsiblePersonName
  3717. this.detailData.state = row.state
  3718. if (row.state === '待检验') {
  3719. this.detailData.passQty = row.samplingQty
  3720. } else {
  3721. this.detailData.passQty = row.passQty
  3722. this.detailData.notPassQty = row.notPassQty
  3723. }
  3724. this.detailData.batchQualifiedQty = row.batchQualifiedQty
  3725. this.getInspectionFormData()
  3726. this.inspectorSearch()
  3727. // this.acquisitionList = []
  3728. this.detailInformationFlag = true
  3729. },
  3730. // 检验单明细
  3731. getInspectionFormData () {
  3732. ipqcDetailSearch(this.detailData).then(({data}) => {
  3733. if (data && data.code === 0) {
  3734. this.detailList = data.rows
  3735. } else {
  3736. this.detailList = []
  3737. }
  3738. })
  3739. },
  3740. // 子明细记录信息查询
  3741. subDetailModal (row) {
  3742. this.subDetailLoading = true
  3743. this.subDetailData = row
  3744. this.pageIndex2 = 1
  3745. selectIPQCSubDetailedRecord(this.subDetailData).then(({data}) => {
  3746. if (data.code === 0) {
  3747. this.tableData = data.rows
  3748. }
  3749. this.subDetailLoading = false
  3750. }).catch(()=>{
  3751. this.subDetailLoading = false
  3752. })
  3753. this.batchAddData = {
  3754. samplingLocation: '',
  3755. samplingLocationB: '',
  3756. samplingNumber: ''
  3757. }
  3758. this.subDetailFlag = true
  3759. },
  3760. // 子明细分页查询
  3761. subDetailModal2 () {
  3762. selectIPQCSubDetailedRecord(this.subDetailData).then(({data}) => {
  3763. if (data.code === 0) {
  3764. this.tableData = data.rows
  3765. }
  3766. })
  3767. },
  3768. // 审核按钮
  3769. submitResult () {
  3770. let tempData1 = '' // 记录不是待审核状态的单号
  3771. let tempData2 = '' // 记录处置措施未填写的单号
  3772. if (this.IPQCSelections.length === 0) {
  3773. this.$alert('请勾选要审核的检验单!', '提示', {
  3774. confirmButtonText: '确定'
  3775. })
  3776. return false
  3777. }
  3778. for (let i = 0; i < this.IPQCSelections.length; i++) {
  3779. if (this.IPQCSelections[i].state !== '待审核'){
  3780. tempData1 = tempData1 + this.IPQCSelections[i].inspectionNo + '、'
  3781. }
  3782. if (this.IPQCSelections[i].inspectionResult === '不合格' && (this.IPQCSelections[i].disposalMeasures === '' || this.IPQCSelections[i].disposalMeasures == null)) {
  3783. tempData2 = tempData2 + this.IPQCSelections[i].inspectionNo + '、'
  3784. }
  3785. }
  3786. if (tempData1 !== ''){
  3787. tempData1 = tempData1.substring(0, tempData1.length - 1)
  3788. this.$alert('检验单号 ' + tempData1 + ' 不是待审核状态!', '提示', {
  3789. confirmButtonText: '确定'
  3790. })
  3791. return false
  3792. }
  3793. if (tempData2 !== ''){
  3794. tempData2 = tempData2.substring(0, tempData2.length - 1)
  3795. this.$alert('检验单号 ' + tempData2 + ' 的处置措施未选择!', '提示', {
  3796. confirmButtonText: '确定'
  3797. })
  3798. return false
  3799. }
  3800. this.$confirm(`已确认单据信息无误,确定审核该 ` + this.IPQCSelections.length + ` 条记录`, '提示', {
  3801. confirmButtonText: '确定',
  3802. cancelButtonText: '取消',
  3803. type: 'warning'
  3804. }).then(() => {
  3805. this.submitData.submitList = this.IPQCSelections
  3806. saveIPQCSubmitResult(this.submitData).then(({data}) => {
  3807. if (data && data.code === 0) {
  3808. this.getDataList()
  3809. this.IPQCSelections = []
  3810. this.$message({
  3811. message: '操作成功',
  3812. type: 'success',
  3813. duration: 1500,
  3814. onClose: () => {}
  3815. })
  3816. } else {
  3817. this.$alert(data.msg, '错误', {
  3818. confirmButtonText: '确定'
  3819. })
  3820. }
  3821. })
  3822. })
  3823. },
  3824. // 取消审核
  3825. cancelApproval () {
  3826. let tempData1 = '' // 记录不是已完成状态的单号
  3827. if (this.IPQCSelections.length === 0) {
  3828. this.$message.warning('请勾选要取消审核的检验单!')
  3829. return
  3830. }
  3831. for (let i = 0; i < this.IPQCSelections.length; i++) {
  3832. if (this.IPQCSelections[i].state !== '已完成') {
  3833. tempData1 = tempData1 + this.IPQCSelections[i].inspectionNo + '、'
  3834. }
  3835. }
  3836. if (tempData1 !== '') {
  3837. tempData1 = tempData1.substring(0, tempData1.length - 1)
  3838. this.$message.warning('检验单号 ' + tempData1 + ' ,不是已完成状态!')
  3839. return
  3840. }
  3841. this.$confirm(`确定取消审核该 ` + this.IPQCSelections.length + ` 条记录`, '提示', {
  3842. confirmButtonText: '确定',
  3843. cancelButtonText: '取消',
  3844. type: 'warning'
  3845. }).then(() => {
  3846. this.submitData.submitList = this.IPQCSelections
  3847. cancelApproval2(this.submitData).then(({data}) => {
  3848. if (data && data.code === 0) {
  3849. this.getDataList()
  3850. this.IPQCSelections = []
  3851. this.$message({
  3852. message: '操作成功',
  3853. type: 'success',
  3854. duration: 1500,
  3855. onClose: () => {}
  3856. })
  3857. } else {
  3858. this.$alert(data.msg, '错误', {
  3859. confirmButtonText: '确定'
  3860. })
  3861. }
  3862. })
  3863. })
  3864. },
  3865. // 子明细方法
  3866. // 表格的新增
  3867. rowClassName ({ row, rowIndex }) {
  3868. row.xh = rowIndex + 1
  3869. row.num = this.tableData.indexOf(row) + 1
  3870. },
  3871. // 单选框选中数据
  3872. handleDetailSelectionChange (selection) {
  3873. this.checkedDetail = selection
  3874. },
  3875. // 点击新增更多
  3876. handleAddBtn (td) {
  3877. checkIPQCIsSubmit(td).then(({data}) => {
  3878. if (data.flag !== 1) {
  3879. let obj = {
  3880. subDetailValue: '',
  3881. samplingLocation: '',
  3882. samplingLocationB: '',
  3883. subDetailValueB: '',
  3884. subDetailValueC: '',
  3885. subDetailValueD: '',
  3886. subDetailValueE: '',
  3887. }
  3888. this.tableData.push(obj)
  3889. } else {
  3890. this.$alert("记录已提交!", '错误', {
  3891. confirmButtonText: '确定'
  3892. })
  3893. }
  3894. })
  3895. },
  3896. // 批量新增操作
  3897. batchHandleAdd (td) {
  3898. checkIPQCIsSubmit(td).then(({data}) => {
  3899. if (data.flag !== 1) {
  3900. this.batchHandleAddModalFlag = true
  3901. } else {
  3902. this.$alert("记录已提交!", '错误', {
  3903. confirmButtonText: '确定'
  3904. })
  3905. }
  3906. })
  3907. },
  3908. // 批量新增行
  3909. batchHandleAddModal () {
  3910. for (let i = 0; i < this.batchAddData.samplingNumber; i++) {
  3911. let obj = {
  3912. samplingLocation: this.batchAddData.samplingLocation,
  3913. samplingLocationB: this.batchAddData.samplingLocationB,
  3914. subDetailValue: '',
  3915. subDetailValueB: '',
  3916. subDetailValueC: '',
  3917. subDetailValueD: '',
  3918. subDetailValueE: '',
  3919. }
  3920. this.tableData.push(obj)
  3921. }
  3922. this.batchHandleAddModalFlag = false
  3923. },
  3924. // 回车事件
  3925. nextFocus1 (index) {
  3926. let a = `${index + 1}` + `a`
  3927. this.$nextTick(() => {
  3928. this.$refs[a].focus()
  3929. })
  3930. },
  3931. nextFocus2 (index) {
  3932. let a = `${index + 1}` + `b`
  3933. this.$nextTick(() => {
  3934. this.$refs[a].focus()
  3935. })
  3936. },
  3937. nextFocus3 (index) {
  3938. let a = `${index + 1}` + `c`
  3939. this.$nextTick(() => {
  3940. this.$refs[a].focus()
  3941. })
  3942. },
  3943. nextFocus4 (index) {
  3944. let a = `${index + 1}` + `d`
  3945. this.$nextTick(() => {
  3946. this.$refs[a].focus()
  3947. })
  3948. },
  3949. nextFocus5 (index) {
  3950. let a = `${index + 1}` + `e`
  3951. this.$nextTick(() => {
  3952. this.$refs[a].focus()
  3953. })
  3954. },
  3955. nextFocus6 (index) {
  3956. let a = `${index + 1}` + `f`
  3957. this.$nextTick(() => {
  3958. this.$refs[a].focus()
  3959. })
  3960. },
  3961. nextFocus7 (index) {
  3962. let a = `${index + 1}` + `g`
  3963. this.$nextTick(() => {
  3964. this.$refs[a].focus()
  3965. })
  3966. },
  3967. focusNextInput (index, type) {
  3968. let aaa = ''
  3969. if (this.detailList.length - 1 === index) {
  3970. aaa = `${type}0`
  3971. } else {
  3972. aaa = `${type}${index + 1}`
  3973. }
  3974. this.$nextTick(() => {
  3975. this.$refs[aaa].focus()
  3976. })
  3977. },
  3978. updateItemResult(row){
  3979. if (row.maxValue == null && row.minValue == null&&row.defaultValue==null) {
  3980. return;
  3981. }
  3982. if (row.maxValue == null && row.minValue == null) {
  3983. if (row.numberValue!=row.defaultValue){
  3984. row.itemResult = 'N'
  3985. }
  3986. }else if (row.maxValue != null && row.minValue != null){
  3987. if (row.numberValue>row.maxValue ||row.numberValue<row.minValue){
  3988. row.itemResult = 'N'
  3989. }else {
  3990. row.itemResult = 'Y'
  3991. }
  3992. }else if(row.maxValue != null){
  3993. if ( row.numberValue>row.maxValue) {
  3994. row.itemResult = 'N'
  3995. }else {
  3996. row.itemResult = 'Y'
  3997. }
  3998. }else if(row.minValue != null){
  3999. if ( row.numberValue<row.minValue) {
  4000. row.itemResult = 'N'
  4001. }else {
  4002. row.itemResult = 'Y'
  4003. }
  4004. }
  4005. },
  4006. //删除
  4007. handleDeleteBtn (td) {
  4008. checkIPQCIsSubmit(td).then(({data}) => {
  4009. if (data.flag !== 1) {
  4010. if (this.checkedDetail.length === 0) {
  4011. this.$alert("请先选择要删除的数据", "提示", {
  4012. confirmButtonText: "确定",
  4013. })
  4014. } else {
  4015. this.$confirm("请是否确认删除该子明细记录?", "提示", {
  4016. confirmButtonText: "确定",
  4017. cancelButtonText: "取消",
  4018. type: "warning",
  4019. callback: (action) => {
  4020. if (action === "confirm") {
  4021. let val = this.checkedDetail
  4022. val.forEach((val, index) => {
  4023. this.tableData.splice(this.tableData.indexOf(val), 1)
  4024. if (this.templateTableData.length === 0) {
  4025. this.pageIndex2--
  4026. }
  4027. })
  4028. this.$message({
  4029. message: "删除成功!",
  4030. type: "success",
  4031. })
  4032. return
  4033. } else {
  4034. this.$message({
  4035. message: "已取消删除操作",
  4036. type: "warning",
  4037. })
  4038. return
  4039. }
  4040. },
  4041. })
  4042. }
  4043. } else {
  4044. this.$alert("记录已提交!", '错误', {
  4045. confirmButtonText: '确定'
  4046. })
  4047. }
  4048. })
  4049. },
  4050. // 新增子明细记录
  4051. saveSubDetailResult () {
  4052. for (let i = 0; i < this.tableData.length; i++) {
  4053. if (this.tableData[i].subDetailValue === '' || this.tableData[i].subDetailValue == null) {
  4054. this.$message.warning('序号' + (i+1) +'未填写实测值!')
  4055. return
  4056. }
  4057. }
  4058. this.subDetailData.subDetailValues = this.tableData
  4059. this.subDetailVisiable = true
  4060. saveIPQCSubDetailed(this.subDetailData).then(({data}) => {
  4061. if (data && data.code === 0) {
  4062. if (data.count > 0) {
  4063. this.subDetailData.itemResult = 'N'
  4064. this.subDetailData.unqualifiedQuantity = data.count
  4065. }
  4066. if (this.subDetailData.subDetailValues.length > 0) {
  4067. this.subDetailData.subDetailRecordNum = 1
  4068. } else {
  4069. this.subDetailData.subDetailRecordNum = -1
  4070. this.subDetailData.unqualifiedQuantity = 0
  4071. this.subDetailData.itemResult = 'Y'
  4072. }
  4073. this.subDetailFlag = false
  4074. this.tableData = []
  4075. this.$message({
  4076. message: '操作成功',
  4077. type: 'success',
  4078. duration: 1500,
  4079. onClose: () => {}
  4080. })
  4081. } else {
  4082. this.$alert(data.msg, '错误', {
  4083. confirmButtonText: '确定'
  4084. })
  4085. }
  4086. }).finally(() => {
  4087. this.subDetailVisiable = false
  4088. })
  4089. },
  4090. // 检验结论改变事件
  4091. resultChange () {
  4092. if (this.detailData.inspectionResult === '不合格') {
  4093. this.detailData.passQty = 0
  4094. }
  4095. },
  4096. // 校验用户是否收藏
  4097. favoriteIsOk () {
  4098. let userFavorite = {
  4099. userId: this.$store.state.user.id,
  4100. languageCode: this.$i18n.locale
  4101. }
  4102. userFavoriteList(userFavorite).then(({data}) => {
  4103. for (let i = 0; i < data.list.length; i++) {
  4104. if(this.$route.meta.menuId === data.list[i].menuId){
  4105. this.favorite = true
  4106. }
  4107. }
  4108. })
  4109. },
  4110. // 收藏 OR 取消收藏
  4111. favoriteFunction () {
  4112. let userFavorite = {
  4113. userId: this.$store.state.user.id,
  4114. functionId: this.$route.meta.menuId,
  4115. }
  4116. if (this.favorite) {
  4117. removeUserFavorite(userFavorite).then(({data}) => {
  4118. this.$message.success(data.msg)
  4119. this.favorite = false
  4120. })
  4121. } else {
  4122. // 收藏
  4123. saveUserFavorite(userFavorite).then(({data}) => {
  4124. this.$message.success(data.msg)
  4125. this.favorite = true
  4126. })
  4127. }
  4128. },
  4129. //导出excel
  4130. async createExportData () {
  4131. this.searchData.limit = -1
  4132. this.searchData.page = 1
  4133. await qcIPQCInspectionSearch(this.searchData).then(({data}) => {
  4134. this.exportList= data.page.list
  4135. })
  4136. return this.exportList
  4137. },
  4138. startDownload() {},
  4139. finishDownload() {},
  4140. fields () {
  4141. let json = "{"
  4142. this.columnList1.forEach((item, index) => {
  4143. if (index == this.columnList1.length - 1) {
  4144. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  4145. } else {
  4146. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  4147. }
  4148. })
  4149. json += "}"
  4150. let s = eval("(" + json + ")")
  4151. return s
  4152. },
  4153. // 动态列开始 获取 用户保存的 格式列
  4154. async getTableUserColumn (tableId, columnId) {
  4155. let queryTableUser = {
  4156. userId: this.$store.state.user.name,
  4157. functionId: this.$route.meta.menuId,
  4158. tableId: tableId,
  4159. status: true,
  4160. languageCode: this.$i18n.locale
  4161. }
  4162. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  4163. if (data.rows.length > 0) {
  4164. switch (columnId) {
  4165. case 1:
  4166. this.columnList1 = data.rows
  4167. break;
  4168. case 2:
  4169. this.detailColumnList = data.rows
  4170. break;
  4171. case 3:
  4172. this.seqDetailColumnList = data.rows
  4173. break;
  4174. }
  4175. } else {
  4176. this.getColumnList(tableId, columnId)
  4177. }
  4178. })
  4179. },
  4180. // 获取 tableDefault 列
  4181. async getColumnList (tableId, columnId) {
  4182. let queryTable= {
  4183. functionId: this.$route.meta.menuId,
  4184. tableId: tableId,
  4185. languageCode: this.$i18n.locale
  4186. }
  4187. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  4188. if (!data.rows.length == 0) {
  4189. switch (columnId) {
  4190. case 1:
  4191. this.columnList1 = data.rows
  4192. break;
  4193. case 2:
  4194. this.detailColumnList = data.rows
  4195. break;
  4196. case 3:
  4197. this.seqDetailColumnList = data.rows
  4198. break;
  4199. }
  4200. }
  4201. })
  4202. },
  4203. /**
  4204. * 明细导入后将返回值回传给父组件
  4205. * @param val
  4206. */
  4207. changeMyString (val) {
  4208. for (let i = 0; i < this.detailList.length; i++) {
  4209. if (val[this.detailList[i].itemNo] !== undefined) {
  4210. this.detailList[i].unqualifiedQuantity = val[this.detailList[i].itemNo]
  4211. if (val[this.detailList[i].itemNo] != null) {
  4212. this.detailList[i].subDetailRecordNum = 1
  4213. }
  4214. if (val[this.detailList[i].itemNo] > 0) {
  4215. this.detailList[i].itemResult = 'N'
  4216. }
  4217. }
  4218. }
  4219. },
  4220. searchSeqInfo () {
  4221. let tempData = {
  4222. // 取modalData.bu中index为0的字符作为site 例:2_01-Label 取2
  4223. // bu: this.modalData.bu,
  4224. site: this.modalData.site,
  4225. buNo: this.modalData.buNo,
  4226. seqNo: this.seqDetailData.seqNo,
  4227. orderNo: this.seqDetailData.orderNo,
  4228. sku: this.seqDetailData.sku,
  4229. partDesc: this.seqDetailData.partDesc,
  4230. partNo: this.seqDetailData.partNo,
  4231. operationDesc: this.seqDetailData.operationDesc,
  4232. status: this.seqDetailData.status
  4233. }
  4234. if (!this.seqDetailData.seqNo && !this.seqDetailData.orderNo && !this.seqDetailData.sku && !this.seqDetailData.partNo && !this.seqDetailData.partDesc && !this.seqDetailData.operationDesc){
  4235. this.seqInfoList = []
  4236. } else {
  4237. searchSeqInfo(tempData).then(({data}) => {
  4238. if (data && data.code === 0) {
  4239. this.seqInfoList = data.rows
  4240. } else {
  4241. this.$alert(data.msg, '错误', {
  4242. confirmButtonText: '确定'
  4243. })
  4244. }
  4245. })
  4246. }
  4247. },
  4248. closeDialog () {
  4249. this.seqDetailData = {
  4250. seqNo : '',
  4251. orderNo: '',
  4252. sku: '',
  4253. partNo: '',
  4254. partDesc: '',
  4255. operationDesc: '',
  4256. status: 'N'
  4257. }
  4258. this.seqInfoList = []
  4259. },
  4260. //获取按钮的权限数据
  4261. getButtonAuthData () {
  4262. let searchFlag = this.isAuth(this.menuId + ":search")
  4263. let checkFlag = this.isAuth(this.menuId + ":check")
  4264. let saveFlag = this.isAuth(this.menuId + ":save")
  4265. let deleteFlag = this.isAuth(this.menuId + ":delete")
  4266. let detailFlag = this.isAuth(this.menuId + ":detail")
  4267. let fileFlag = this.isAuth(this.menuId + ":file")
  4268. let cancelCheckFlag = this.isAuth(this.menuId + ":cancelCheck")
  4269. let overLoadFlag = this.isAuth(this.menuId + ":overLoad")
  4270. //处理页面的权限数据
  4271. this.authSearch = !searchFlag
  4272. this.authCheck = !checkFlag
  4273. this.authSave = !saveFlag
  4274. this.authDelete = !deleteFlag
  4275. this.authOverLoad = !overLoadFlag
  4276. this.authDetail = !detailFlag
  4277. this.authFile = !fileFlag
  4278. this.authCancelCheck = !cancelCheckFlag
  4279. },
  4280. }
  4281. }
  4282. </script>
  4283. <style scoped>
  4284. /deep/ .redElSelect .el-input--suffix .el-input__inner{
  4285. color: red;
  4286. font-weight: bold;
  4287. }
  4288. /deep/ .greenElSelect .el-input--suffix .el-input__inner{
  4289. color: rgb(103,194,58);
  4290. font-weight: bold;
  4291. }
  4292. .el-table /deep/ .cell{
  4293. height: auto;
  4294. line-height: 1.5;
  4295. }
  4296. </style>