Merge branch 'projects/mes-test' into projects/mes-lb

This commit is contained in:
lb
2023-11-22 17:05:53 +08:00
67 changed files with 1069 additions and 666 deletions

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-07-19 15:18:30
* @LastEditors: zhp
* @LastEditTime: 2023-11-15 16:04:06
* @LastEditTime: 2023-11-22 13:58:30
* @Description:
-->
<template>
@@ -14,6 +14,8 @@
}">
<img src="../../assets/img/logo.png" style="width:1.1em;position:relative;top:.4em" alt="">
许昌安彩AGV原片周转看板
<h3 class="unit">单位河南汇融科技服务有限公司</h3>
<h3 class="time">{{ times }}</h3>
<!-- <el-button
type="text"
class="title-button"
@@ -87,11 +89,11 @@
<!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
<top-radio-group />
</div> -->
<el-row :gutter="9 * beilv">
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24">
<!-- <el-row :gutter="9 * beilv"> -->
<!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24"> -->
<base-table :page="1" :limit="9" :show-index="false" :beilv="1" :table-config="inventoryTableProps"
:table-data="inventoryList" />
</el-col>
<!-- </el-col> -->
<!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
<base-table3
:page="2"
@@ -101,7 +103,7 @@
:table-data="qualityList2"
/>
</el-col> -->
</el-row>
<!-- </el-row> -->
</base-container>
</el-col>
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
@@ -666,7 +668,8 @@ export default {
return {
beilv: 1,
beilv2: 1,
clientWidth:0,
clientWidth: 0,
times:undefined,
value: 100,
qualityYearTableProps,
cxNameList,
@@ -748,6 +751,7 @@ export default {
// this.fetchList('order-process')
// this.fetchList('line-chart-data')
this.init()
this.getTimes()
this.windowWidth(document.documentElement.clientWidth)
},
mounted() {
@@ -776,6 +780,30 @@ export default {
// removeEventListener('resize', resizeFun)
// },
methods: {
getTimes() {
setInterval(this.getTimesInterval, 1000);
},
getTimesInterval: function () {
let _this = this;
let year = new Date().getFullYear(); //获取当前时间的年份
let month = new Date().getMonth() + 1; //获取当前时间的月份
let day = new Date().getDate(); //获取当前时间的天数
let hours = new Date().getHours(); //获取当前时间的小时
let minutes = new Date().getMinutes(); //获取当前时间的分数
let seconds = new Date().getSeconds(); //获取当前时间的秒数
//当小于 10 的是时候,在前面加 0
if (hours < 10) {
hours = "0" + hours;
}
if (minutes < 10) {
minutes = "0" + minutes;
}
if (seconds < 10) {
seconds = "0" + seconds;
}
//拼接格式化当前时间
this.times = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
},
windowWidth(value) {
this.clientWidth = value
},
@@ -846,7 +874,19 @@ export default {
background-size: 100% 100%;
color: #00fff0;
text-align: center;
position: relative;
.unit{
position: absolute;
left: 260px;
top:25px;
font-size: 20px;
}
.time{
position: absolute;
left: 1360px;
top:25px;
font-size: 20px;
}
.title-button {
color: #00fff0;
font-size: 20px;

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-03 10:53:43
* @LastEditTime: 2023-11-22 10:27:50
* @Description:
-->
<template>
@@ -77,8 +77,8 @@ export default {
remark: undefined
},
dataRule: {
code: [{ required: true, message: "专业编码不能为空", trigger: "blur" }],
name: [{ required: true, message: "专业名称不能为空", trigger: "blur" }],
code: [{ required: true, message: "客户编号不能为空", trigger: "blur" }],
name: [{ required: true, message: "客户名称不能为空", trigger: "blur" }],
contact: [{ required: true, message: "联系人不能为空", trigger: "blur" }],
telephone: [
{ required: false, trigger: "blur", message: "手机号不能为空" },
@@ -87,10 +87,12 @@ export default {
if (value) {
if (/^(?:(?:\+|00)86)?1(?:3[\d]|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8[\d]|9[189])\d{8}$/.test(value) === false) {
callback(new Error("手机号格式错误"));
} else {
callback();
}
} else {
callback();
}
callback();
}
}, trigger: "blur"
}
]

View File

@@ -105,8 +105,8 @@ export default {
formConfig: [
{
type: 'input',
label: '名称',
placeholder: '专业',
label: '客户名称',
placeholder: '客户名称',
param: 'name',
},
{

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-02 14:16:30
* @LastEditTime: 2023-11-22 10:32:10
* @Description:
-->
<template>
@@ -89,7 +89,6 @@ export default {
const menu = { id: 0, name: '总部门', children: [] };
menu.children = this.handleTree(this.departmentlList, "id")
this.menuOptions.push(menu)
console.log('你好', this.menuOptions)
},
/** 转换菜单数据结构 */
normalizer(node) {

View File

@@ -134,6 +134,11 @@ export default {
// this.dataListLoading = false;
// });
// },
successSubmit() {
this.handleCancel()
this.getDataList()
this.$refs.addOrUpdate.getDict()
},
buttonClick(val) {
switch (val.btnName) {
case 'search':

View File

@@ -123,7 +123,7 @@ export default {
},
{ prop: 'name', label: '设备名称' },
{ width: 256, prop: 'code', label: '设备编码' },
{ prop: 'equipmentType', label: '设备类型' },
{ prop: 'equipmentTypeName', label: '设备类型' },
{ prop: 'enName', label: '英文名称' },
{ prop: 'abbr', label: '缩写' },
// {
@@ -256,11 +256,19 @@ export default {
datetime: true,
label: '生产日期',
prop: 'productionTime',
bind: {
format: 'yyyy-MM-dd',
clearable: true,
},
},
{
datetime: true,
label: '进厂日期',
prop: 'enterTime',
bind: {
format: 'yyyy-MM-dd',
clearable: true,
},
},
{
input: true,

View File

@@ -91,15 +91,15 @@ export default {
width: 180,
filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
},
{ prop: 'name', label: '设备类型名称' },
{ prop: 'code', label: '检测类型编' },
{ prop: 'name', label: '类型名称' },
{ prop: 'code', label: '类型编' },
{ prop: 'remark', label: '备注' },
],
searchBarFormConfig: [
{
type: 'input',
label: '设备类型',
placeholder: '请输入设备类型名称',
placeholder: '设备类型',
param: 'name',
},
{
@@ -133,18 +133,19 @@ export default {
[
{
input: true,
label: '设备类型名称',
label: '类型名称',
prop: 'name',
rules: [{ required: true, message: '设备类型名不能为空', trigger: 'blur' }],
rules: [{ required: true, message: '类型名不能为空', trigger: 'blur' }],
// bind: {
// disabled: true, // some condition, like detail mode...
// }
},
{
input: true,
label: '设备类型编',
label: '类型编',
prop: 'code',
url: '/base/core-equipment-type/getCode',
rules: [{ required: true, message: '类型编号不能为空', trigger: 'blur' }],
},
],
[
@@ -174,7 +175,13 @@ export default {
name: '',
},
// 表单参数
form: {},
form: {
code: undefined,
name: undefined,
id: undefined,
parentId: undefined,
remark: undefined
},
};
},
watch: {
@@ -268,7 +275,7 @@ export default {
handleDelete(row) {
const id = row.id;
this.$modal
.confirm('是否确认删除设备类型"' + row.name + '"?')
.confirm('是否确认删除设备类型"' + row.name + '"的数据项?')
.then(function () {
return deleteEquipmentType(id);
})

View File

@@ -97,8 +97,8 @@ export default {
formConfig: [
{
type: 'input',
label: '名称',
placeholder: '专业',
label: '专业名称',
placeholder: '专业名称',
param: 'name',
},
{

View File

@@ -107,8 +107,8 @@ export default {
formConfig: [
{
type: 'input',
label: '工单名称',
placeholder: '工单名称',
label: '产品名称',
placeholder: '产品名称',
param: 'name'
},
{

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-03 19:28:06
* @LastEditTime: 2023-11-21 18:59:54
* @Description:
-->
<template>
@@ -11,7 +11,7 @@
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="dataFormSubmit()"
label-width="80px">
label-width="100px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="产线名称" prop="name">
@@ -30,7 +30,8 @@
<el-select
v-model="dataForm.factoryId"
filterable
placeholder="请选择工厂">
placeholder="请选择工厂"
style="width: 100%">
<el-option
v-for="dict in factoryList"
:key="dict.id"
@@ -94,8 +95,8 @@ export default {
},
factoryList: [],
dataRule: {
code: [{ required: true, message: "专业编码不能为空", trigger: "blur" }],
name: [{ required: true, message: "专业名称不能为空", trigger: "blur" }],
code: [{ required: true, message: "产线编号不能为空", trigger: "blur" }],
name: [{ required: true, message: "产线名称不能为空", trigger: "blur" }],
factoryId: [{ required: true, message: "工厂不能为空", trigger: "blur" }]
}
};

View File

@@ -71,6 +71,10 @@ const tableProps = [
label: '当前状态',
filter: codeFilter('lineStatus')
},
{
prop: 'tvalue',
label: '产线TT值(h)'
},
{
prop: 'description',
label: '描述'

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-03 11:00:47
* @LastEditTime: 2023-11-22 10:27:43
* @Description:
-->
<template>
@@ -77,8 +77,8 @@ export default {
remark: undefined
},
dataRule: {
code: [{ required: true, message: "专业编码不能为空", trigger: "blur" }],
name: [{ required: true, message: "专业名称不能为空", trigger: "blur" }],
code: [{ required: true, message: "供应商编号不能为空", trigger: "blur" }],
name: [{ required: true, message: "供应商名称不能为空", trigger: "blur" }],
contact: [{ required: true, message: "联系人不能为空", trigger: "blur" }],
telephone: [
{ required: false, trigger: "blur", message: "手机号不能为空" },
@@ -87,10 +87,12 @@ export default {
if (value) {
if (/^(?:(?:\+|00)86)?1(?:3[\d]|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8[\d]|9[189])\d{8}$/.test(value) === false) {
callback(new Error("手机号格式错误"));
} else {
callback();
}
} else {
callback();
}
callback();
}
}, trigger: "blur"
}
]
@@ -98,6 +100,31 @@ export default {
};
},
mounted() {},
methods: {}
methods: {
// 表单提交
dataFormSubmit() {
console.log('你好', this.dataForm)
this.$refs["dataForm"].validate((valid) => {
if (!valid) {
return false;
}
// 修改的提交
if (this.dataForm.id) {
this.urlOptions.updateURL(this.dataForm).then(response => {
this.$modal.msgSuccess("修改成功");
this.visible = false;
this.$emit("refreshDataList");
});
return;
}
// 添加的提交
this.urlOptions.createURL(this.dataForm).then(response => {
this.$modal.msgSuccess("新增成功");
this.visible = false;
this.$emit("refreshDataList");
});
});
},
}
};
</script>

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-06 14:38:20
* @LastEditTime: 2023-11-20 16:51:24
* @Description:
-->
<template>
@@ -95,7 +95,8 @@ const tableProps = [
},
{
prop: 'material',
label: '原料名称'
label: '原料名称',
filter: publicFormatter('material')
},
{
prop: 'origin',
@@ -103,7 +104,7 @@ const tableProps = [
filter: (val) => ['', '内部', '采购'][val]
},
{
prop: 'supplierId',
prop: 'supplierName',
label: '供应商',
},
{
@@ -195,7 +196,7 @@ export default {
...this.listQuery,
workOrderId: this.dataForm.id,
}).then((response) => {
this.materialList = response.data.list;
this.materialList = response.data.records;
this.listQuery.total = response.data.total;
});
},

View File

@@ -26,8 +26,8 @@
</el-form-item>
</el-col>
<el-col :span='12'>
<el-form-item label="产品规格" prop="productSpec">
<el-input v-model="dataForm.productSpec" disabled></el-input>
<el-form-item label="产品规格" prop="specifications">
<el-input v-model="dataForm.specifications" />
</el-form-item>
</el-col>
</el-row>
@@ -35,9 +35,9 @@
<el-col :span='12'>
<el-form-item label="计划开始时间">
<el-date-picker
v-model="planStartTime"
v-model="dataForm.planStartTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
value-format="timestamp"
style="width: 100%;"
placeholder="选择日期">
</el-date-picker>
@@ -46,9 +46,9 @@
<el-col :span='12'>
<el-form-item label="计划完成时间">
<el-date-picker
v-model="planFinishTime"
v-model="dataForm.planFinishTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
value-format="timestamp"
style="width: 100%;"
placeholder="选择日期">
</el-date-picker>
@@ -83,8 +83,8 @@
<el-col :span='12'>
<el-form-item label="物料计算方式" prop="materialMethod">
<el-radio-group v-model="dataForm.materialMethod" @change="materialMethodChange">
<el-radio :label="1">产品基础</el-radio>
<el-radio :label="2">工艺扩展</el-radio>
<el-radio :label="1">产品基础BOM</el-radio>
<el-radio :label="2">工艺扩展BOM</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
@@ -168,7 +168,7 @@ export default {
name: '',
code: '',
planProductId: '',
productSpec: '',
specifications: '',
planStartTime: '',
planFinishTime: '',
planAssignQuantity: 0,
@@ -186,7 +186,7 @@ export default {
planProductId: [{ required: true, message: "产品名称不能为空", trigger: "change" }],
planAssignQuantity: [{ required: true, message: "计划投入数量不能为空", trigger: "blur" }],
planQuantity: [{ required: true, message: "计划生产数量不能为空", trigger: "blur" }],
productLineIds: [{ required: true, message: "产品不能为空", trigger: "change" }]
productLineIds: [{ required: true, message: "关联产线不能为空", trigger: "change" }]
},
productList: [],
processFlowList: [],
@@ -232,6 +232,10 @@ export default {
if (this.dataForm.id) {
getCoreWO(id).then(response => {
this.dataForm = response.data;
if (this.dataForm.priority !== undefined) {
this.dataForm.priority = String(this.dataForm.priority)
}
this.dataForm.priority
});
} else {
if (this.urlOptions.isGetCode) {
@@ -264,7 +268,11 @@ export default {
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$emit("refreshDataList", true);
console.log('121', this.dataForm.name)
this.$emit("refreshDataList", {
id: response.data,
name: this.dataForm.name
});
}).catch(() => {
this.$emit("refreshDataList");
});

View File

@@ -62,7 +62,7 @@
<el-input
v-model="dataForm.batch"
clearable
placeholder="请输入规格" />
placeholder="请输入批次号" />
</el-form-item>
<el-form-item label="数量" prop="num">
<el-input-number
@@ -143,13 +143,19 @@ export default {
},
init(id) {
this.dataForm.id = id || '';
console.log('1', this.dataForm.id)
this.visible = true;
this.$nextTick(() => {
this.$refs['dataForm'].resetFields();
if (this.dataForm.id) {
getCoreWOMa(this.dataForm.id).then((res) => {
this.dataForm = res.data
if (this.dataForm.unit !== undefined) {
this.dataForm.unit = String(this.dataForm.unit)
}
if (this.dataForm.material !== undefined) {
this.dataForm.material = String(this.dataForm.material)
}
console.log('111', this.dataForm)
});
}
});

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-16 13:45:13
* @LastEditTime: 2023-11-22 09:47:53
* @Description:
-->
<template>
@@ -16,6 +16,7 @@
<!-- <small-title slot="title" :no-padding="true">
{{ isdetail ? '详情' : !dataForm.id ? '新增' : '编辑' }}
</small-title> -->
<el-button style="float: right" type="primary" @click="goback()">返回</el-button>
<div v-show="workOrderButton.length">
<el-button v-for="(work, index) in workOrderButton" :key="index" type="primary" @click="init(work.id, true)">{{ work.name }}</el-button>
</div>
@@ -33,7 +34,7 @@
<el-col :span="8">工单名称:{{ dataForm.name }}</el-col>
<el-col :span="8">工单来源:{{ dataForm.triggerOrigin === 1 ? 'MES' : dataForm.triggerOrigin === 2 ? 'ERP' : ''}}</el-col>
<el-col :span="8">所属订单:
<span v-for="(item, index) in orderArray" :key="index" style="margin-right: 10px">{{ item.name }}</span>
<span v-for="(item, index) in orderList" :key="index" style="margin-right: 10px">{{ item.orderName }}</span>
</el-col>
</el-row>
<el-row :gutter="20">
@@ -42,7 +43,7 @@
<el-col :span="8">计划生产数量:{{ dataForm.planQuantity }}</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">预计用时(小时):{{ dataForm.expectedTime }}</el-col>
<el-col :span="8">预计用时(小时):{{ dataForm.remainingTime }}</el-col>
<el-col :span="8">计划投入数量:{{ dataForm.planAssignQuantity }}</el-col>
<el-col :span="8">优先级:{{ fitlerP(dataForm.priority) }}</el-col>
</el-row>
@@ -63,9 +64,7 @@
</small-title>
<div class="formContent">
<el-row :gutter="20">
<el-col :span="8">单创建时间:
<span v-for="(item, index) in orderArray" :key="index" style="margin-right: 10px; white-space: pre-wrap">{{ parseTime(item.createTime) }}</span>
</el-col>
<el-col :span="8">单创建时间:{{ parseTime(dataForm.createTime) }}</el-col>
<el-col :span="8">计划开始时间:{{ parseTime(dataForm.planStartTime) }}</el-col>
<el-col :span="8">计划完成时间:{{ parseTime(dataForm.planFinishTime) }}</el-col>
</el-row>
@@ -143,7 +142,7 @@
<script>
// import basicAdd from '../../core/mixins/basic-add';
import { getCoreWO, getMaterialBomPage, getConOrderList, getCoreWOListById } from "@/api/base/coreWorkOrder";
import { orderList } from "@/api/base/orderManage";
// import { orderList } from "@/api/base/orderManage";
import { getProcessFlowList } from '@/api/base/orderManage'
import SmallTitle from './SmallTitle';
import { publicFormatter } from "@/utils/dict";
@@ -186,7 +185,7 @@ const tableProps = [
const tableProps1 = [
{
prop: 'materialName',
label: '料名称'
label: '料名称'
},
{
prop: 'unit',
@@ -223,7 +222,7 @@ export default {
dataForm: {},
orderList: [],
materialList: [],
orderArray: [],
// orderArray: [],
visible: false,
isdetail: false,
workOrderButton: [],
@@ -336,12 +335,11 @@ export default {
});
}
// 获取订单相关信息
orderList({
workOrderId: this.dataForm.id
}).then((response) => {
this.orderArray = response.data;
// this.listQuery.total = response.data.total;
});
// orderList({
// workOrderId: this.dataForm.id
// }).then((response) => {
// this.orderArray = response.data;
// });
},
init(id, isdetail) {
this.initData();
@@ -374,8 +372,7 @@ export default {
});
},
goback() {
this.visible = false;
this.$emit('refreshDataList');
this.$router.go(-1);
// this.initData();
},
goEdit() {

View File

@@ -213,7 +213,7 @@ export default {
{
name: 'status',
type: 'equal',
value: 3
value: 2
},
{
name: 'status',
@@ -313,7 +313,15 @@ export default {
refreshWorkOrder(val) {
console.log(val)
if (val) {
console.log('打印')
// 预使用原料信息
console.log('预使用原料信息')
this.handleCancel()
this.getDataList()
this.materialVisible = true;
this.addOrEditTitle = "预使用主原料信息";
this.$nextTick(() => {
this.$refs.material.init(val, true);
});
} else {
this.successSubmit()
}

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-03 11:01:24
* @LastEditTime: 2023-11-22 10:26:58
* @Description:
-->
<template>
@@ -211,10 +211,12 @@ export default {
if (value) {
if (/^(?:(?:\+|00)86)?1(?:3[\d]|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8[\d]|9[189])\d{8}$/.test(value) === false) {
callback(new Error("手机号格式错误"));
} else {
callback();
}
} else {
callback();
}
callback();
}
}, trigger: "blur"
}
],
@@ -243,13 +245,32 @@ export default {
setOut(val) {
if (val === 1) {
this.isOut = true
this.dataForm.outTime = ''
} else {
this.isOut = false
}
},
reset() {
this.dataForm = {
id: undefined,
code: undefined,
name: undefined,
fileUrl: undefined,
sex: 0,
telephone: undefined,
departmentId: undefined,
position: undefined,
entryTime: new Date().getTime(),
status: 1,
outTime: undefined,
education: undefined,
workCost: undefined,
remark: undefined
}
this.majorIdList = undefined
},
// 表单提交
dataFormSubmit() {
console.log('111', this.dataForm)
this.$refs["dataForm"].validate((valid) => {
if (!valid) {
return false;
@@ -292,7 +313,8 @@ export default {
});
},
init(id) {
this.dataForm.id = id || "";
this.reset()
this.dataForm.id = id || undefined;
this.visible = true;
if (this.urlOptions.getOption) {
this.getArr()

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-03 19:31:25
* @LastEditTime: 2023-11-22 08:55:37
* @Description:
-->
<template>
@@ -82,8 +82,8 @@ export default {
},
proLineList: [],
dataRule: {
code: [{ required: true, message: "专业编码不能为空", trigger: "blur" }],
name: [{ required: true, message: "专业名称不能为空", trigger: "blur" }],
code: [{ required: true, message: "工段编号不能为空", trigger: "blur" }],
name: [{ required: true, message: "工段名称不能为空", trigger: "blur" }],
productionLineId: [{ required: true, message: "产线不能为空", trigger: "blur" }],
sort: [{ required: true, message: "排序不能为空", trigger: "blur" }]
}

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-06 19:44:24
* @LastEditTime: 2023-11-22 11:22:38
* @Description:
-->
<template>
@@ -127,12 +127,17 @@
物料属性
</small-title>
<div v-if="!isdetail" class="action_btn">
<template>
<span style="display: inline-block;">
<el-button type="text" @click="addNew()" icon="el-icon-plus">新增</el-button>
</span>
</template>
</div>
<base-table
:table-props="tableProps"
:page="listQuery.pageNo"
:limit="listQuery.pageSize"
:add-button-show="isdetail ? null : '添加属性'"
@emitButtonClick="addNew()"
:table-data="materialAttrList">
<method-btn
v-if="!isdetail"
@@ -152,11 +157,11 @@
</div>
<div class="drawer-body__footer">
<el-button style="" @click="goback()">取消</el-button>
<el-button v-if="isdetail" type="primary" @click="goEdit()">
<el-button style="" @click="goback()">{{ isdetail ? '关闭' : '取消' }}</el-button>
<!-- <el-button v-if="isdetail" type="primary" @click="goEdit()">
编辑
</el-button>
<el-button v-else type="primary" @click="dataFormSubmit()">确定</el-button>
</el-button> -->
<el-button v-if="!isdetail" type="primary" @click="dataFormSubmit()">确定</el-button>
</div>
</div>
@@ -425,4 +430,12 @@ export default {
justify-content: flex-end;
padding: 18px;
}
.action_btn {
float: right;
margin: -35px 15px;
font-size: 14px;
}
.add {
color: #0b58ff;
}
</style>

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-06 20:04:03
* @LastEditTime: 2023-11-22 11:09:44
* @Description:
-->
<template>
@@ -44,7 +44,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="产品BOM编码" prop="code">
<el-input v-model="dataForm.code" disabled placeholder="请输入产品Bom编码" />
<el-input v-model="dataForm.code" :disabled="isdetail" placeholder="请输入产品Bom编码" />
</el-form-item>
</el-col>
</el-row>
@@ -154,11 +154,11 @@
</div>
<div class="drawer-body__footer">
<el-button style="" @click="goback()">取消</el-button>
<el-button v-if="isdetail" type="primary" @click="goEdit()">
<el-button style="" @click="goback()">{{ isdetail ? '关闭' : '取消' }}</el-button>
<!-- <el-button v-if="isdetail" type="primary" @click="goEdit()">
编辑
</el-button>
<el-button v-else type="primary" @click="dataFormSubmit()">确定</el-button>
</el-button> -->
<el-button v-if="!isdetail" type="primary" @click="dataFormSubmit()">确定</el-button>
</div>
</div>
@@ -304,15 +304,16 @@ export default {
}
return row.materialId === item.id
})
this.unitList.filter(u => {
if (tempM[0].unit === u.value) {
row.unit = u.value
row.mUnit = u.label
}
})
if (tempM[0].unit) {
this.unitList.filter(u => {
if (tempM[0].unit === u.value) {
row.unit = u.value
row.mUnit = u.label
}
})
}
// row.materialCode = tempList[0].code
// row.unit = tempList[0].unit
console.log('row', row)
},
edit(row) {
row.isEdit = true

View File

@@ -151,7 +151,7 @@ export default {
case 'search':
this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10;
this.listQuery.name = val.name ? val.name : undefined;
this.listQuery.productName = val.name ? val.name : undefined;
this.getDataList();
break;
case 'reset':

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-06 19:27:57
* @LastEditTime: 2023-11-22 10:40:08
* @Description:
-->
<template>
@@ -151,7 +151,7 @@ export default {
equipmentId: undefined,
userName: undefined,
userNames: [],
useTime: undefined,
useTime: new Date().getTime(),
address: undefined,
num: 0,
source: undefined,

View File

@@ -130,7 +130,7 @@ export default {
type: 'datePicker',
label: '使用时间段',
dateType: 'datetimerange',
format: 'yyyy-MM-dd',
format: 'yyyy-MM-dd HH:mm:ss',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
rangeSeparator: '-',
startPlaceholder: '开始时间',

View File

@@ -69,7 +69,7 @@ const tableProps = [
prop: 'createTime',
label: '添加时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'deliveryCarCode',
@@ -81,7 +81,7 @@ const tableProps = [
prop: 'loadTime',
label: '装车时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'productName',

View File

@@ -78,7 +78,7 @@ const tableProps = [
prop: 'deliveryTime',
label: '发货时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'code',

View File

@@ -122,7 +122,7 @@ const tableProps = [
prop: 'deliveryTime',
label: '发货时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'code',
@@ -151,7 +151,7 @@ const tableProps2 = [
prop: 'createTime',
label: '添加时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'deliveryCarCode',
@@ -162,7 +162,7 @@ const tableProps2 = [
prop: 'loadTime',
label: '装车时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'productName',

View File

@@ -39,14 +39,12 @@
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-col :span="12">
<el-form-item label="是否采集" prop="collection">
<el-switch v-model="form.collection"></el-switch>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-col :span="12">
<el-form-item label="描述" prop="description">
<el-input v-model="form.description"></el-input>
</el-form-item>

View File

@@ -37,6 +37,7 @@
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
width='30%'
>
<energy-plc-connect-add ref="energyPlcConnect" :objList="objList" @successSubmit="successSubmit" />
</base-dialog>

View File

@@ -9,7 +9,7 @@
width="120">
</el-table-column>
</el-table>
<span v-if='singlePrice'><span class='priceTitle'>单价(): </span>{{ singlePrice }}</span>
<span v-if='singlePrice'><span class='priceTitle'>单价(): </span>{{ singlePrice.toFixed(2) }}</span>
<el-button
slot="reference"
type="text"
@@ -32,7 +32,8 @@ const temp1 = [
},
{
prop: 'price',
label: '单价(元)'
label: '单价(元)',
align: 'right'
}
]
const temp2 = [
@@ -46,7 +47,8 @@ const temp2 = [
},
{
prop: 'price',
label: '单价(元)'
label: '单价(元)',
align: 'right'
}
]
export default {
@@ -78,12 +80,20 @@ export default {
console.log(res)
if (res.data.pricingMethod === 0) {
this.tableProps = this.temp1
this.tableData = res.data.segPriceList
this.singlePrice = ''
let arr1 = res.data.segPriceList
for (let item of arr1) {
item.price = item.price.toFixed(2)
}
this.tableData = arr1
} else if (res.data.pricingMethod === 1) {
this.tableProps = this.temp2
this.tableData = res.data.usedPriceList
this.singlePrice = ''
let arr2 = res.data.usedPriceList
for (let item of arr2) {
item.price = item.price.toFixed(2)
}
this.tableData = arr2
} else {
this.tableProps = []
this.tableData = []

View File

@@ -1,5 +1,5 @@
<template>
<el-form ref="form" :rules="rules" label-width="80px" :model="form">
<el-form ref="form" :rules="rules" label-width="100px" :model="form">
<el-row>
<el-col :span="12">
<el-form-item label="能源类型" prop="name">

View File

@@ -26,28 +26,6 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="监控模式" prop="type">
<el-select v-model="form.type" placeholder="请选择" style="width: 100%;" @change="typeChange">
<el-option label="合并" :value= "1" ></el-option>
<el-option label="详细" :value= "2" ></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="监控详细参数" prop="type" v-if="form.type === 2">
<el-select v-model="form.plcParamId" placeholder="请选择" style="width: 100%;" @change="selectDetail">
<el-option
v-for="item in detailList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="指标类型" prop="limitType">
@@ -61,10 +39,32 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="监控模式" prop="type">
<el-select v-model="form.type" placeholder="请选择" style="width: 100%;" @change="typeChange">
<el-option label="合并" :value= "1" ></el-option>
<el-option label="详细" :value= "2" ></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="消耗量阈值">
<el-input-number v-model="form.minValue" placeholder="最小值" :max="10000000000000000" style="width: 50%;"></el-input-number>
<el-input-number v-model="form.maxValue" placeholder="最大值" :max="10000000000000000" style="width: 50%;"></el-input-number>
<el-input-number v-model="form.minValue" placeholder="最小值" :max="9999999" style="width: 50%;"></el-input-number>
<el-input-number v-model="form.maxValue" placeholder="最大值" :max="9999999" style="width: 50%;"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="监控详细参数" prop="type" v-if="form.type === 2">
<el-select v-model="form.plcParamId" placeholder="请选择" style="width: 100%;" @change="selectDetail">
<el-option
v-for="item in detailList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>

View File

@@ -37,7 +37,7 @@
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
width='60%'
width='50%'
>
<energy-limit-add ref="energyLimit" @successSubmit="successSubmit" :energyTypeList="energyTypeList" :objList="objList"/>
</base-dialog>

View File

@@ -40,13 +40,13 @@ const tableProps = [
prop: 'startTime',
label: '开始时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'endTime',
label: '结束时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'statisticName',

View File

@@ -70,7 +70,7 @@ export default {
},
{
type: 'datePicker',
label: '时间(必填)',
label: '时间',
dateType: 'datetimerange',
format: 'yyyy-MM-dd HH:mm:ss',
valueFormat: "timestamp",
@@ -80,7 +80,8 @@ export default {
param: 'timeVal',
defaultSelect: [],
width: 350,
clearable: false
clearable: false,
required:true
},
{
type: 'button',

View File

@@ -172,11 +172,11 @@ export default {
this.$modal.msgWarning('工单不能为空')
return false
}
if (!val.objType) {
if (!val.energyTypeId) {
this.$modal.msgWarning('能源类型不能为空')
return false
}
if (!val.energyTypeId) {
if (!val.objType) {
this.$modal.msgWarning('对象维度不能为空')
return false
}

View File

@@ -52,6 +52,7 @@
import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import { publicFormatter } from '@/utils/dict';
import { deleteCheck } from "@/api/equipment/base/inspection/settings";
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
@@ -163,7 +164,12 @@ export default {
content: null,
},
// 表单参数
form: {},
form: {
code: '',
program: '',
id: undefined,
content: ''
},
basePath: '/base/equipment-check',
mode: null,
};
@@ -224,7 +230,7 @@ export default {
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
// this.reset();
this.open = true;
this.title = '添加巡检内容';
},
@@ -265,9 +271,10 @@ export default {
handleDelete(row) {
const id = row.id;
this.$modal
.confirm('是否确认删除记录"' + row.name + '"?')
.confirm('是否确认删除巡检项目名称为"' + row.program + '"的数据项?')
.then(function () {
return this.delete({ id });
// return this.delete({ id });
return deleteCheck(id)
})
.then(() => {
this.getList();

View File

@@ -103,8 +103,7 @@ export default {
{ prop: 'equipmentName', label: '设备' },
{ prop: 'responsible', label: '负责人' },
{ prop: 'equipmentCode', label: '描述' },
{ prop: 'checkNumber', label: '巡检条数' }, // TODO: 操作 选项,四个,群里询问
{ prop: 'remark', label: '备注' },
{ prop: 'checkNumber', label: '巡检条数' } // TODO: 操作 选项,四个,群里询问
],
searchBarFormConfig: [
{

View File

@@ -51,6 +51,7 @@
import { publicFormatter } from '@/utils/dict';
import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import { exportMaintainMonitorExcel } from '@/api/equipment/base/maintain/record'
const remainBox = {
name: 'RemainBox',
@@ -124,7 +125,7 @@ export default {
{ prop: 'sectionName', label: '工段' },
{ prop: 'equipmentName', label: '设备名称' },
{ prop: 'equipmentCode', label: '设备编码' },
{ prop: 'maintainDuration', label: '保养频率' },
{ prop: 'maintenancePeriod', label: '保养频率' },
{
prop: 'maintainType',
label: '保养类型',
@@ -195,6 +196,24 @@ export default {
this.getList();
},
methods: {
/** 导出按钮操作 */
handleExport() {
// 处理查询参数
let params = { ...this.queryParams };
params.pageNo = undefined;
params.pageSize = undefined;
this.$modal
.confirm('是否确认导出所有设备保养监控数据项?')
.then(() => {
this.exportLoading = true;
return exportMaintainMonitorExcel(params);
})
.then((response) => {
this.$download.excel(response, '设备保养监控.xls');
this.exportLoading = false;
})
.catch(() => { });
},
initSearchBar() {
this.http('/base/core-equipment/listAll', 'get').then(({ data }) => {
this.$set(

View File

@@ -50,6 +50,7 @@
<script>
import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import { deleteEqMaintainPlan } from '@/api/equipment/base/maintain/record'
export default {
name: 'PlanConfig',
@@ -88,7 +89,7 @@ export default {
},
{ prop: 'name', label: '计划名称' },
{ prop: 'code', label: '计划编号' },
{ prop: 'enabled', label: '启用状态' },
{ prop: 'enabled', label: '启用状态', filter: (val) => ['停用', '启用'][val] },
{ prop: 'lineName', label: '产线' },
{ prop: 'sectionName', label: '工段' },
{ prop: 'equipmentName', label: '设备名称' },
@@ -220,6 +221,7 @@ export default {
transform: (val) => Number(val),
},
],
rules: [{ required: true, message: '保养频率不能为空', trigger: 'blur' }],
},
],
[{ input: true, label: '备注', prop: 'remark' }],
@@ -344,9 +346,9 @@ export default {
handleDelete(row) {
const id = row.id;
this.$modal
.confirm('是否确认删除设备类型"' + row.name + '"?')
.confirm('是否确认删除计划名称为"' + row.name + '"的数据项?')
.then(function () {
return this.del(id);
return deleteEqMaintainPlan(id);
})
.then(() => {
this.getList();

View File

@@ -440,9 +440,7 @@ export default {
handleDelete(row) {
const id = row.id;
this.$modal
.confirm(
'是否删除设备保养单号为"' + row.maintainOrderNumber + '"的数据项?'
)
.confirm('是否删除设备名称为"' + row.equipmentName + '"的数据项?')
.then(function () {
return deleteEqMaintainLog(id);
})

View File

@@ -112,7 +112,7 @@ export default {
{
prop: 'maintenanceStatus',
label: '维修状态',
filter: (v) => (v != null ? ['未完成', '完成'][v] : ''),
filter: (v) => (v != null ? ['未完成', '完成', '进行中'][v] : ''),
},
{ prop: 'maintenanceDuration', label: '维修时长(h)' },
{ prop: 'lineName', label: '产线' },
@@ -138,8 +138,23 @@ export default {
selectOptions: [
{ name: '未完成', id: '0' },
{ name: '完成', id: '1' },
{ name: '进行中', id: '2' },
],
},
// 时间段
{
type: 'datePicker',
label: '时间段',
dateType: 'daterange', // datetimerange
format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
// valueFormat: 'timestamp',
rangeSeparator: '-',
startPlaceholder: '开始日期',
endPlaceholder: '结束日期',
defaultTime: ['00:00:00', '23:59:59'],
param: 'createTime'
},
{
type: 'button',
btnName: '查询',

View File

@@ -52,6 +52,7 @@
import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import { publicFormatter } from '@/utils/dict';
import { deleteSparePart } from '@/api/equipment/base/spare-parts/list'
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
@@ -131,6 +132,7 @@ export default {
input: true,
label: '备件名称',
prop: 'name',
rules: [{ required: true, message: '备件名称不能为空', trigger: 'blur' }],
},
{
input: true,
@@ -313,9 +315,9 @@ export default {
handleDelete(row) {
const id = row.id;
this.$modal
.confirm('是否确认删除记录"' + row.name + '"?')
.confirm('是否确认删除备件名称为"' + row.name + '"的数据项?')
.then(function () {
return this.delete({ id });
return deleteSparePart(id);
})
.then(() => {
this.getList();

View File

@@ -58,7 +58,7 @@ const tableProps = [
prop: 'createTime',
label: '创建时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'name',

View File

@@ -2,14 +2,16 @@
<div>
<el-drawer title="查看详情" :visible.sync="visible" size="70%">
<div class="box">
<el-form :inline="true">
<el-form-item label="工单名称">
<el-input v-model="queryParams.workOrderName" size='small' readonly></el-input>
</el-form-item>
<el-form-item label="班组名称">
<el-input v-model="queryParams.teamName" size='small' readonly></el-input>
</el-form-item>
</el-form>
<el-row class="topBox">
<el-col :span="6">
<p class="boldTitle">工单名称</p>
<p class="lightText">{{ queryParams.workOrderName ? queryParams.workOrderName : '-' }}</p>
</el-col>
<el-col :span="6">
<p class="boldTitle">班组名称</p>
<p class="lightText">{{ queryParams.teamName ? queryParams.teamName : '-' }}</p>
</el-col>
</el-row>
<base-table
:table-props="tableProps"
:table-data="tableData"
@@ -27,13 +29,13 @@ const tableProps = [
prop: 'startTime',
label: '开始时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'endTime',
label: '结束时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'num',
@@ -49,17 +51,15 @@ export default {
data() {
return {
visible: false,
workOrderName: '',
teamName: '',
tableProps,
tableData: [],
tableH: this.tableHeight(200),
tableH: this.tableHeight(260),
queryParams: {}
}
},
created() {
window.addEventListener('resize', () => {
this.tableH = this.tableHeight(200)
this.tableH = this.tableHeight(260)
})
},
methods: {
@@ -79,5 +79,23 @@ export default {
<style lang="scss" scoped>
.box {
padding: 0 32px;
.topBox {
padding-bottom: 30px;
margin-bottom: 30px;
border-bottom: 1px solid #E9E9E9;
.boldTitle {
font-size: 14px;
font-weight: 600;
color: rgba(0,0,0,0.85);
margin: 0;
margin-bottom: 10px;
}
.lightText {
font-size: 14px;
font-weight: 400;
color: rgba(102,102,102,0.75);
margin: 0;
}
}
}
</style>

View File

@@ -59,7 +59,8 @@ export default {
label: '工单',
selectOptions: [],
param: 'workOrderId',
clearable: false
clearable: false,
filterable: true
},
{
type: 'button',

View File

@@ -17,7 +17,7 @@
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="160"
:width="80"
label="操作"
:method-list="tableBtn"
@clickBtn="handleClick"
@@ -42,7 +42,7 @@ const tableProps = [
prop: 'createTime',
label: '排班创建时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'startDay',
@@ -53,13 +53,13 @@ const tableProps = [
prop: 'startTime',
label: '上班时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'endTime',
label: '下班时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'classesName',
@@ -120,8 +120,8 @@ export default {
tableBtn: [
this.$auth.hasPermi('base:team-production:detail')
? {
type: 'viewDetail',
btnName: '查看生产情况'
type: 'detail',
btnName: '详情'
}
: undefined
].filter((v) => v),

View File

@@ -65,7 +65,7 @@ const tableProps = [
prop: 'createTime',
label: '添加时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'name',
@@ -101,12 +101,12 @@ const tableProps = [
{
prop: 'planQuantity',
label: '计划加工量',
width: 90
width: 100
},
{
prop: 'actualQuantity',
label: '实际加工量',
width: 90
width: 100
},
{
prop: 'productName',
@@ -341,6 +341,7 @@ export default {
item.customerId = i.name
}
}
item.price = item.price.toFixed(2)
})
this.list = arr
}

View File

@@ -5,6 +5,7 @@
<span class="blueTitle"></span>
<span>订单编码: {{orderMsg.code}}</span>
</div>
<el-button type="primary" plain size="small" style="float: right;" @click="returnOrderManage">返回</el-button>
<div style="padding-left: 14px;">
<el-row>
<el-col :span='3'>
@@ -133,7 +134,7 @@ const tableProps1 = [
prop: 'issueTime',
label: '下发时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'name',
@@ -147,19 +148,19 @@ const tableProps1 = [
minWidth: 150
},
{
prop: 'planQuantity',
prop: 'planAssignmentQuantity',
label: '计划加工量',
width: 90
width: 100
},
{
prop: 'actualQuantity',
label: '实际加工量',
width: 90
width: 100
},
{
prop: 'actualArea',
label: '加工平方数',
width: 90
width: 100
},
{
prop: 'status',
@@ -170,13 +171,13 @@ const tableProps1 = [
prop: 'startProduceTime',
label: '开始时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'finishProduceTime',
label: '结束时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'productLineNames',
@@ -278,6 +279,10 @@ export default {
}
})
})
},
// 返回
returnOrderManage() {
this.$router.push({path: '/order/base/order-manage'})
}
}
}

View File

@@ -0,0 +1,168 @@
<template>
<div>
<div class="boxTitle">
<span class="blueTitle"></span>
<span>各订单环形图</span>
</div>
<div class="chartBox" id='orderChartBox' v-show='chartList.length'>
<div class="chartItem" v-for="(item, index) in chartList" :key='index' :style="{width: 388*beilv+'px',height: 286*beilv+'px',padding:14*beilv+'px',marginRight:9*beilv+'px',marginBottom:9*beilv+'px'}">
<div class="topTitle" :style="{fontSize: 14 * beilv + 'px'}">
<svg-icon icon-class="order-monitoring" :style="{fontSize: 16*beilv+'px'}"/>
<span class="orderName" :style="{paddingRight:8*beilv+'px',marginRight:8*beilv+'px'}">{{item.orderName}}</span>
<span>订单计划数量{{item.num}}</span>
</div>
<div
:id="item.id"
:style="{width: 166*beilv+'px',height: 166*beilv+'px',margin: 'auto'}"
></div>
<div class="legend" :style="{height: 54 * beilv + 'px', marginTop: 10*beilv+'px'}">
<div class="legendItem" v-for="(subItem, i) in item.workOrder" :key='i' :style="{paddingRight:9*beilv+'px',marginRight:9*beilv+'px'}">
<span class="itemNum" :style="{fontSize: 18 * beilv + 'px'}">{{subItem.value}}</span>
<div>
<span class="itemName" :style="{fontSize: 14 * beilv + 'px'}">
<span class="smallBlock" :style="{backgroundColor:subItem.color,width:8*beilv+'px',height:8*beilv+'px'}"></span>
{{subItem.name}}
</span>
</div>
</div>
</div>
</div>
</div>
<!-- 空图 -->
<div class="no-data-bg" v-show='!chartList.length'></div>
</div>
</template>
<script>
import * as echarts from 'echarts'
import { debounce } from '@/utils/debounce'
export default {
name: 'MonitoringRingCharts',
props: {
chartList: {
type: Array,
default: () => {
return []
}
}
},
data() {
return {
myChart: [],
beilv: 1,
canvasReset: ''
}
},
mounted() {
this.beilv = document.getElementById('orderChartBox').offsetWidth / 1610
this.canvasReset = debounce(() => {
this.initChart()
}, 500)
window.addEventListener('resize', () => {
this.beilv = document.getElementById('orderChartBox').offsetWidth / 1610
this.canvasReset()
})
},
methods: {
// 饼图
initChart() {
if (this.chartList.length <= 0) {
return false
}
// 销毁实例
for (let j = 0;j < this.chartList.length; j++) {
if (this.myChart[j]) {
this.myChart[j].dispose() // 页面多次刷新会出现警告Dom已经初始化了一个实例这是销毁实例
}
}
for (let i = 0; i < this.chartList.length; i++) {
var chartDom = document.getElementById(this.chartList[i].id);
this.myChart[i] = echarts.init(chartDom);
let colorList = []
this.chartList[i].workOrder.map(item => {
colorList.push(item.color)
})
let percentage = (this.chartList[i].sunNum/this.chartList[i].num*100).toFixed(0)
var option = {
color: colorList,
series: [
{
name: 'Access From',
type: 'pie',
radius: ['75%', '95%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 5,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: true,
position: 'center',
color: '#000',
formatter: [
'{a|'+percentage+'%}',
'{b|生产'+this.chartList[i].sunNum+'}'
].join('\n\n'),
rich: {
a: {
fontSize: this.beilv*24 +'px'
},
b: {
fontSize: this.beilv*12 +'px'
}
}
},
emphasis: {
disabled: true
},
labelLine: {
show: false
},
data: this.chartList[i].workOrder
}
]
};
option && this.myChart[i].setOption(option)
}
}
}
}
</script>
<style lang='scss' scoped>
.chartBox {
width: 100%;
padding-right: 6px;
height: calc(100vh - 310px);
display: flex;
flex-flow: row wrap;
overflow: auto;
align-content: flex-start;
.chartItem {
border-radius: 8px;
border: 1px solid #CACACA;
.topTitle {
margin-bottom: 10px;
.orderName {
border-right: 1px solid #CACACA;
}
}
.legend {
text-align: center;
white-space: nowrap;
overflow: auto;
.legendItem {
display: inline-block;
border-right: 1px solid #E8E8E8;
.itemName {
.smallBlock {
display: inline-block;
}
}
}
.legendItem:last-child {
border: none;
}
}
}
}
</style>

View File

@@ -6,59 +6,45 @@
ref="searchBarForm"
@headBtnClick="buttonClick"
/>
<base-table
:page="1"
:limit="5000"
:table-props="tableProps"
:table-data="list"
:max-height="tableH"
>
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="250"
label="操作"
:method-list="tableBtn"
@clickBtn="handleClick"
<el-tabs v-model="activeName" @tab-click="toggleTab">
<el-tab-pane label="数据列表" name="dataList"></el-tab-pane>
<el-tab-pane label="环形图" name="barChart"></el-tab-pane>
</el-tabs>
<!-- -->
<div v-if="activeName === 'dataList'">
<base-table
:page="queryParams.pageNo"
:limit="queryParams.pageSize"
:table-props="tableProps"
:table-data="list"
:max-height="tableH"
>
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="250"
label="操作"
:method-list="tableBtn"
@clickBtn="handleClick"
/>
</base-table>
<pagination
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
:total="total"
@pagination="getPage"
/>
</base-table>
<!-- <el-tabs v-model="activeName" @tab-click="toggleTab">
<el-tab-pane label="数据列表" name="dataList">
<base-table
:page="queryParams.pageNo"
:limit="queryParams.pageSize"
:table-props="tableProps"
:table-data="list"
:max-height="tableH"
>
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="250"
label="操作"
:method-list="tableBtn"
@clickBtn="handleClick"
/>
</base-table>
</el-tab-pane>
<el-tab-pane label="环形图" name="barChart">
<div class="boxTitle">
<span class="blueTitle"></span>
<span>各订单环形图</span>
</div>
<div
id="orderPieBar"
style="width: 182px; height: 180px;"
></div>
</el-tab-pane>
</el-tabs> -->
</div>
<!-- -->
<monitoring-ring-charts ref='monitoringRingCharts' v-else :chart-list='chartList'/>
</div>
</template>
<script>
import * as echarts from 'echarts'
import { parseTime } from '@/utils/ruoyi'
import { publicFormatter } from '@/utils/dict'
import { orderMonitor, orderList } from '@/api/base/orderManage'
import { orderMonitor, orderAssignmentList } from '@/api/base/orderManage'
import MonitoringRingCharts from './../components/monitoringRingCharts'
import moment from "moment"
const tableProps = [
{
prop: 'name',
@@ -76,13 +62,13 @@ const tableProps = [
prop: 'planStartTime',
label: '计划开始时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'planFinishTime',
label: '计划完成时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'status',
@@ -93,13 +79,13 @@ const tableProps = [
prop: 'startProduceTime',
label: '实际开始时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'finishProduceTime',
label: '实际完成时间',
filter: parseTime,
minWidth: 150
minWidth: 160
},
{
prop: 'productLines',
@@ -125,7 +111,7 @@ const tableProps = [
{
prop: 'workOrderNum',
label: '关联工单数量',
width: 100
width: 110
}
]
export default {
@@ -134,9 +120,8 @@ export default {
return {
formConfig: [
{
type: 'select',
type: 'input',
label: '订单名称',
selectOptions: [],
param: 'name'
},
{
@@ -162,15 +147,14 @@ export default {
activeName: 'dataList',
// 查询参数
queryParams: {
// pageNo: 1,
// pageSize: 5000,
pageNo: 1,
pageSize: 20,
name: null,
startProduceTime: []
},
tableProps,
list: [],
// tableH: this.tableHeight(270),
tableH: this.tableHeight(230),
tableH: this.tableHeight(315),
total: 0,
tableBtn: [
this.$auth.hasPermi('base:order-completion-monitoring:orderDet')
@@ -191,149 +175,79 @@ export default {
btnName: '发货详情'
}
: undefined
].filter((v) => v)
].filter((v) => v),
chartList: []
}
},
components: { MonitoringRingCharts },
mounted() {
window.addEventListener('resize', () => {
// this.tableH = this.tableHeight(270)
this.tableH = this.tableHeight(230)
this.tableH = this.tableHeight(315)
})
this.getOrderList()
let start = moment().subtract(30, 'days').format('yyyy-MM-DD')
let end = moment().format('yyyy-MM-DD')
this.formConfig[1].defaultSelect = [start, end]
this.queryParams.startProduceTime[0] = start + ' 00:00:00'
this.queryParams.startProduceTime[1] = end + ' 23:59:59'
this.getPage()
},
methods: {
getOrderList() {
orderList({}).then(res => {
this.formConfig[0].selectOptions = res.data || []
})
},
getPage() {
// 表数据
orderMonitor({...this.queryParams}).then(res => {
this.list = res.data || []
// this.getPieChart()
this.list = res.data.records || []
this.total = res.data.total || 0
if (this.list.length > 0) {
let orderIdList = []
this.list.map(item => {
orderIdList.push(item.orderid)
})
// 图的数据
orderAssignmentList({orderIdList:orderIdList}).then(res => {
let color = ['#7164FF','#288AFF','#63BDFF','#8EF0AB','#FFCE6A']
let tempArr = res.data || {}
let tempArr2 = []
for (let key in tempArr) {
let tempArr3 = []
let obj = {}
obj.orderName = tempArr[key][0].orderName
obj.id = key
obj.num = tempArr[key][0].planQuantity
let sunNum = 0
for (let i = 0; i < tempArr[key].length; i++) {
let subObj = {}
subObj.value = tempArr[key][i].actualAssignmentQuantity
subObj.name = tempArr[key][i].woName
if (i < 5) {
subObj.color = color[i]
} else {
subObj.color = color[i%5]
}
sunNum+=tempArr[key][i].actualAssignmentQuantity
tempArr3.push(subObj)
}
tempArr3.push({
value: tempArr[key][0].planQuantity - sunNum > 0 ? tempArr[key][0].planQuantity - sunNum : 0,
name: '未下发',
color: '#F5F5F5'
})
obj.sunNum = sunNum
obj.workOrder = tempArr3
tempArr2.push(obj)
}
this.chartList = tempArr2
if (this.activeName === 'barChart' && this.chartList.length > 0) {
this.$nextTick(() => {
this.$refs.monitoringRingCharts.initChart()
})
}
})
}else{
// 显示无数据的图片
this.chartList = []
}
})
},
// 饼图
getPieChart() {
var chartDom = document.getElementById('orderPieBar');
var myChart = echarts.init(chartDom);
var option = {
color:['#288AFF','#7164FF','#fff','#63BDFF','#8EF0AB','#FFCE6A'],
series: [
{
name: 'Access From',
type: 'pie',
radius: ['92%', '100%'],
avoidLabelOverlap: false,
label: {
show: true,
position: 'center'
},
emphasis: {
disabled: true,
scale:false,
scaleSize: 0
},
labelLine: {
show: false
},
data: [
{ value: 1000, name: '1' }
]
},
{
name: 'Access From',
type: 'pie',
radius: ['84%', '92%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
disabled: true,
scale:false,
scaleSize: 0
},
labelLine: {
show: false
},
data: [
{ value: 50 ,name: '2' },
{ value: 500, name: 'xxx' }
]
},
{
name: 'Access From',
type: 'pie',
radius: ['76%', '84%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
disabled: true,
scale:false,
scaleSize: 0
},
labelLine: {
show: false
},
data: [
{ value: 250, name: '3' },
{ value: 750, name: 'xxx' }
]
},
{
name: 'Access From',
type: 'pie',
radius: ['68%', '76%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
disabled: true,
scale:false,
scaleSize: 0
},
labelLine: {
show: false
},
data: [
{ value: 800, name: '4' },
{ value: 1048, name: 'xxx' }
]
},
{
name: 'Access From',
type: 'pie',
radius: ['60%', '68%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
disabled: true,
scale:false,
scaleSize: 0
},
labelLine: {
show: false
},
data: [
{ value: 800, name: '5' },
{ value: 1048, name: 'xxx' }
]
}
]
}
option && myChart.setOption(option)
},
// 查询
buttonClick(val) {
this.queryParams.name = val.name
@@ -365,8 +279,10 @@ export default {
}
},
toggleTab() {
if (this.activeName === 'barChart') {
this.getPieChart()
if (this.activeName === 'barChart' && this.chartList.length > 0) {
this.$nextTick(() => {
this.$refs.monitoringRingCharts.initChart()
})
}
}
}
@@ -382,7 +298,6 @@ export default {
width: 100%;
height: 2px;
background-color: #e4e7ed;
/* z-index: 1; */
}
.el-tabs__nav-wrap::after {
width: 0;
@@ -404,7 +319,7 @@ export default {
font-size: 16px;
font-weight: 400;
color: #000000;
margin:0 10px 20px 0;
margin:0 10px 16px 0;
}
.blueTitle {
content: '';

View File

@@ -6,13 +6,37 @@
-->
<template>
<el-form
ref="form"
:model="dataForm"
label-width="120px"
v-loading="formLoading">
<el-row :gutter="20">
<el-col :span="12">
<el-form ref="form" :model="dataForm" label-width="120px" v-loading="formLoading">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="产线" prop="productionLineId"
:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-select v-model="dataForm.productionLineId" placeholder="请选择产线" filterable
@change="handleProductlineChange">
<el-option v-for="opt in productionLineList" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工段" prop="sectionId" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-select v-model="dataForm.sectionId" placeholder="请选择工段" filterable @change="$emit('update', dataForm)">
<el-option v-for="opt in workshopSectionList" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="按钮盒识别码" prop="buttonId" :rules="[
{ required: true, message: '不能为空', trigger: 'blur' },
{
type: 'number',
message: '请输入整数',
trigger: 'blur',
transform: (val) => Number.isInteger(Number(val)) && Number(val),
},
]">
<el-input v-model="dataForm.buttonId" @change="$emit('update', dataForm)" placeholder="请输入整数" />
</el-form-item>
<el-form-item
label="产线"
prop="productionLineId"
@@ -77,53 +101,35 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="按钮盒模式" prop="model">
<el-input
v-model="dataForm.model"
@change="$emit('update', dataForm)"
placeholder="请输入按钮盒模式" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="按钮" prop="keyValue" :rules="[
{ required: true, message: '不能为空', trigger: 'blur' },
{
type: 'number',
message: '请输入100以内的整数',
trigger: 'blur',
transform: (val) =>
Number.isInteger(+val) &&
Number(val) >= 0 &&
Number(val) <= 100 &&
Number(val),
},
]">
<el-input v-model="dataForm.keyValue" type="number" min="0" max="100" @change="$emit('update', dataForm)"
placeholder="请输入按钮盒模式" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="按钮值"
prop="keyValue"
:rules="[
{ required: true, message: '按钮值不能为空', trigger: 'blur' },
{
type: 'number',
message: '请输入100以内的整数',
trigger: 'blur',
transform: (val) =>
Number.isInteger(+val) &&
Number(val) >= 0 &&
Number(val) <= 100 &&
Number(val),
},
]">
<el-input
v-model="dataForm.keyValue"
type="number"
min="0"
max="100"
@change="$emit('update', dataForm)"
placeholder="请输入按钮盒模式" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检测内容" prop="inspectionDetContent">
<el-input
type="textarea"
v-model="dataForm.inspectionDetContent"
placeholder="请输入检测内容"
@change="$emit('update', dataForm)"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-col :span="12">
<el-form-item label="检测内容" prop="inspectionDetId">
<el-select v-model="dataForm.inspectionDetId" placeholder="请选择检测内容" filterable
@change="$emit('update', dataForm)">
<el-option v-for="opt in inspectionDetList" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</template>
<script>
@@ -144,12 +150,14 @@ export default {
data() {
return {
formLoading: true,
productionLineList: [],
productionLineList: [],
inspectionDetList:[],
workshopSectionList: [],
};
},
mounted() {
this.getProductionLineList();
this.getProductionLineList()
this.getQualityInspectionDetList()
// this.getWorksectionList();
// this.getCode('/base/equipment-group-alarm/getCode').then((code) => {
// this.formLoading = false;
@@ -189,7 +197,20 @@ export default {
}
this.formLoading = false;
},
async getQualityInspectionDetList() {
this.formLoading = true;
const res = await this.$axios({
url: '/base/quality-inspection-det/listAll',
method: 'get',
});
if (res.code == 0) {
this.inspectionDetList = res.data.map((item) => ({
label: item.content,
value: item.id,
}));
}
this.formLoading = false;
},
async getWorksectionList(id) {
this.formLoading = true;
const res = await this.$axios({

View File

@@ -118,12 +118,17 @@ export default {
},
],
bind: { type: 'number', min: 0, max: 100 },
},
{
textarea: true,
label: '检测内容',
prop: 'inspectionDetContent',
},
},
{
select: true,
label: '检测内容',
url: '/base/quality-inspection-det/listAll',
prop: 'inspectionDetId',
rules: [{ required: true, message: '不能为空', trigger: 'blur' }],
bind: {
filterable: true,
},
},
],
],
searchBarFormConfig: [
@@ -217,7 +222,7 @@ export default {
form: {
id: null,
buttonId: null,
inspectionDetContent: null,
inspectionDetId: null,
productionLineId: null,
sectionId: null,
model: null,

View File

@@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-11-06 15:15:30
* @LastEditTime: 2023-11-06 16:00:24
* @LastEditTime: 2023-11-20 15:23:59
* @LastEditors: zhp
* @Description:
-->
@@ -10,18 +10,18 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="报废原因编码" prop="code">
<el-input v-model="dataForm.code" placeholder="请输入报废类型编码" />
<el-input v-model="dataForm.code" placeholder="请输入报废原因编码" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="报废原因" prop="content">
<el-input v-model="dataForm.content" placeholder="请输入报废类型" />
<el-input v-model="dataForm.content" placeholder="请输入报废原因" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="报废类型" prop="description">
<el-form-item label="报废类型" prop="typeId">
<el-select v-model="dataForm.typeId" placeholder="请选择报废类型">
<el-option v-for="dict in typeList" :key="dict.id" :label="dict.name" :value="dict.id" />
</el-select>
@@ -68,6 +68,7 @@ export default {
// materialId: [{ required: true, message: "", trigger: "blur" }],
code: [{ required: true, message: "报废原因编码不能为空", trigger: "blur" }],
content: [{ required: true, message: "报废原因不能为空", trigger: "blur" }],
typeId: [{ required: true, message: "报废类型不能为空", trigger: "change" }],
}
};
},

View File

@@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-11-06 15:15:30
* @LastEditTime: 2023-11-07 18:56:20
* @LastEditTime: 2023-11-21 14:11:18
* @LastEditors: zhp
* @Description:
-->
@@ -23,8 +23,8 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="数量" prop="sum">
<el-input v-model="dataForm.sum" placeholder="请输入数量" />
<el-form-item label="数量" prop="num">
<el-input v-model="dataForm.num" placeholder="请输入数量" />
</el-form-item>
</el-col>
</el-row>
@@ -176,9 +176,9 @@ export default {
getDetList().then((res) => {
console.log(res);
// console.log(response);
this.workOrderList = res.data.map((item) => {
this.detList = res.data.map((item) => {
return {
name: item.name,
name: item.content,
id: item.id
}
})

View File

@@ -1,8 +1,6 @@
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<SearchBar :formConfigs="searchBarFormConfig" ref="search-bar" @headBtnClick="handleSearchBarBtnClick" />
<!-- 列表 -->
<el-row>
<el-col class="custom-tabs">
@@ -20,6 +18,7 @@
</div>
</el-tab-pane>
<el-tab-pane :label="'\u3000图形数据\u3000'" name="chart" style="overflow: inherit">
<SearchBar :formConfigs="searchBarFormConfig" ref="search-bar" @headBtnClick="handleSearchBarBtnClick" />
<div id="main" style="height: 500px;width: 1000px;"></div>
</el-tab-pane>
</el-tabs>
@@ -75,13 +74,13 @@ export default {
},
activeName: 'table',
searchBarFormConfig: [
// {
// type: 'select',
// label: '工单号',
// placeholder: '请选择工单号',
// param: 'workOrderId',
// selectOptions: [],
// },
{
type: 'label',
label: '当前检测数据柱状图',
// placeholder: '请选择工单号',
// param: 'workOrderId',
// selectOptions: [],
},
// {
// type: 'select',
// label: '产品',
@@ -95,40 +94,40 @@ export default {
// placeholder: '请输入检测内容',
// param: 'inspectionDetContent',
// },
{
type: 'datePicker',
label: '时间段',
dateType: 'daterange', // datetimerange
// format: 'yyyy-MM-dd HH:mm:ss',
format: 'yyyy-MM-dd',
valueFormat: 'timestamp',
rangeSeparator: '-',
startPlaceholder: '开始日期',
endPlaceholder: '结束日期',
defaultTime: ['00:00:00', '23:59:59'],
param: 'checkTime',
// width: 350,
},
{
type: 'button',
btnName: '查询',
name: 'search',
color: 'primary',
},
{
type: 'separate',
},
// {
// type: this.$auth.hasPermi(
// 'base:quality-inspection-record:create'
// )
// ? 'button'
// : '',
// btnName: '新增',
// name: 'add',
// plain: true,
// color: 'success',
// type: 'datePicker',
// label: '时间段',
// dateType: 'daterange', // datetimerange
// // format: 'yyyy-MM-dd HH:mm:ss',
// format: 'yyyy-MM-dd',
// valueFormat: 'timestamp',
// rangeSeparator: '-',
// startPlaceholder: '开始日期',
// endPlaceholder: '结束日期',
// defaultTime: ['00:00:00', '23:59:59'],
// param: 'checkTime',
// // width: 350,
// },
// {
// type: 'button',
// btnName: '查询',
// name: 'search',
// color: 'primary',
// },
// {
// type: 'separate',
// },
// // {
// // type: this.$auth.hasPermi(
// // 'base:quality-inspection-record:create'
// // )
// // ? 'button'
// // : '',
// // btnName: '新增',
// // name: 'add',
// // plain: true,
// // color: 'success',
// // },
],
// tableBtn: [
// this.$auth.hasPermi('base:quality-inspection-record:update')
@@ -316,6 +315,7 @@ export default {
data: arrYAxis,
type: 'bar',
showBackground: true,
barWidth:'20',
backgroundStyle: {
color: 'rgba(180, 180, 180, 0.2)'
}

View File

@@ -6,141 +6,81 @@
-->
<template>
<el-form
ref="form"
:model="innerDataForm"
label-width="100px"
v-loading="formLoading">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item
label="检测内容"
prop="inspectionDetId"
:rules="[{ required: true, message: '检测内容不能为空', trigger: 'blur' }]">
<el-select
v-model="innerDataForm.inspectionDetId"
placeholder="请选择检测内容"
filterable
clearable
@change="handleInspectionDetChange">
<el-option
v-for="opt in inspectionDetList"
:key="opt.value"
:label="opt.label"
:value="opt.value" />
</el-select>
</el-form-item>
</el-col>
<el-form ref="form" :model="innerDataForm" label-width="100px" v-loading="formLoading">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="工单号" prop="workOrderId" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-select v-model="innerDataForm.workOrderId" placeholder="请选择工单号" filterable clearable>
<el-option v-for="opt in workOrderList" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检测内容" prop="inspectionDetId"
:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-select v-model="innerDataForm.inspectionDetId" placeholder="请选择检测内容" filterable clearable
@change="handleInspectionDetChange">
<el-option v-for="opt in inspectionDetList" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="产线" prop="productionLineId"
:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-select v-model="innerDataForm.productionLineId" placeholder="请选择产线" filterable clearable
@change="handleProductlineChange">
<el-option v-for="opt in productionLineList" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工段" prop="sectionId" :rules="[{ required: false, message: '不能为空', trigger: 'blur' }]">
<el-select v-model="innerDataForm.sectionId" placeholder="请选择工段" clearable filterable
@change="$emit('update', innerDataForm)">
<el-option v-for="opt in sectionList" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="检测人员" prop="checkPerson">
<el-input v-model="innerDataForm.checkPerson" clearable @change="$emit('update', innerDataForm)"
placeholder="请输入检测人员" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="来源"
prop="source"
:rules="[{ required: true, message: '来源不能为空', trigger: 'blur' }]">
<el-select
v-model="innerDataForm.source"
placeholder="请选择来源"
filterable
clearable
@change="$emit('update', innerDataForm)">
<el-option
v-for="opt in [
{ label: '手动', value: 1 },
{ label: '自动', value: 2 },
]"
:key="opt.value"
:label="opt.label"
:value="opt.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item
label="产线"
prop="productionLineId"
:rules="[{ required: true, message: '产线不能为空', trigger: 'blur' }]">
<el-select
v-model="innerDataForm.productionLineId"
placeholder="请选择产线"
filterable
clearable
@change="handleProductlineChange">
<el-option
v-for="opt in productionLineList"
:key="opt.value"
:label="opt.label"
:value="opt.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="工段"
prop="sectionId"
:rules="[{ required: true, message: '工段不能为空', trigger: 'blur' }]">
<el-select
v-model="innerDataForm.sectionId"
placeholder="请选择工段"
clearable
filterable
@change="$emit('update', innerDataForm)">
<el-option
v-for="opt in sectionList"
:key="opt.value"
:label="opt.label"
:value="opt.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="检测人员" prop="checkPerson">
<el-input
v-model="innerDataForm.checkPerson"
clearable
@change="$emit('update', innerDataForm)"
placeholder="请输入检测人员" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="检测时间"
prop="checkTime"
:rules="[{ required: true, message: '检测时间不能为空', trigger: 'blur' }]">
<el-date-picker
v-model="innerDataForm.checkTime"
type="datetime"
placeholder="请选择检测时间"
value-format="timestamp"
@change="$emit('update', innerDataForm)"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col>
<el-form-item label="描述" prop="explainText">
<el-input
v-model="innerDataForm.explainText"
placeholder="请输入描述信息"
@change="$emit('update', innerDataForm)"
type="textarea"></el-input>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="备注" prop="remark">
<el-input
v-model="innerDataForm.remark"
@change="$emit('update', innerDataForm)"
placeholder="请输入备注"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-col :span="12">
<el-form-item label="检测时间" prop="checkTime" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-date-picker v-model="innerDataForm.checkTime" type="datetime" placeholder="请选择检测时间"
value-format="timestamp" @change="$emit('update', innerDataForm)"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="来源" prop="source" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-select v-model="innerDataForm.source" placeholder="请选择来源" filterable clearable
@change="$emit('update', innerDataForm)">
<el-option v-for="opt in [
{ label: '手动', value: 1 },
{ label: '自动', value: 2 },
]" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col>
<el-form-item label="备注" prop="remark">
<el-input v-model="innerDataForm.remark" @change="$emit('update', innerDataForm)" placeholder="请输入备注">
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</template>
<script>
@@ -163,13 +103,14 @@ export default {
formLoading: true,
inspectionDetList: [],
productionLineList: [],
sectionList: [],
sectionList: [],
workOrderList:[],
innerDataForm: {},
cacheInspectionDetList: null,
};
},
mounted() {
Promise.all([this.getProductLineList(), this.getInspectionDetList()]).then(
Promise.all([this.getProductLineList(), this.getInspectionDetList(), this.getWorkOrderList()]).then(
() => {
this.formLoading = false;
}
@@ -231,6 +172,14 @@ export default {
}));
},
async getWorkOrderList() {
const response = await this.$axios('base/core-work-order/listbyfilter');
this.workOrderList = response.data.map((item) => ({
label: item.name,
value: item.id,
}));
},
// 获取检测内容列表
async getInspectionDetList() {
const response = await this.$axios(

View File

@@ -113,7 +113,7 @@ export default {
bind: {
filterable: true,
},
rules: [{ required: true, message: '工段不能为空', trigger: 'blur' }],
rules: [{ required: false, message: '不能为空', trigger: 'blur' }],
},
],
[
@@ -141,16 +141,19 @@ export default {
searchBarFormConfig: [
{
type: 'select',
label: '产线',
placeholder: '请选择产线',
param: 'productionLineId',
selectOptions: [],
label: '工单号',
placeholder: '请选择工单号',
param: 'workOrderId',
selectOptions: [],
filterable:true
},
{
type: 'input',
type: 'select',
label: '检测内容',
placeholder: '请输入检测内容',
param: 'inspectionDetContent',
placeholder: '请输入检测内容',
selectOptions: [],
param: 'inspectionDetContent',
filterable: true
},
{
type: 'datePicker',
@@ -208,7 +211,12 @@ export default {
fixed: true,
width: 180,
filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
},
},
{
// width: 128,
prop: 'workOrderName',
label: '工单Id',
},
{
// width: 128,
prop: 'inspectionDetContent',
@@ -246,7 +254,8 @@ export default {
inspectionDetContent: undefined,
productionLineId: undefined,
sectionId: undefined,
checkPerson: undefined,
checkPerson: undefined,
workOrderId:undefined,
checkTime: undefined,
source: undefined,
explainText: undefined,
@@ -255,16 +264,17 @@ export default {
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 10,
workOrderId:null,
inspectionDetContent: null,
checkTime: [],
productionLineId: null,
// productionLineId: null,
},
};
},
created() {
this.getList();
// this.getProductLineList();
this.getProductLineList()
},
watch: {
form: {
@@ -300,7 +310,7 @@ export default {
methods: {
/** 获取搜索栏的产线列表 */
getProductLineList() {
this.$axios('/base/production-line/listAll').then((response) => {
this.$axios('/base/core-work-order/listbyfilter').then((response) => {
this.searchBarFormConfig[0].selectOptions = response.data.map(
(item) => {
return {
@@ -309,7 +319,17 @@ export default {
};
}
);
});
})
this.$axios('/base/quality-inspection-det/listAll').then((response) => {
this.searchBarFormConfig[1].selectOptions = response.data.map(
(item) => {
return {
name: item.content,
id: item.content,
};
}
);
});
},
/** 查询列表 */
getList() {

View File

@@ -206,6 +206,16 @@ export default {
computed: {
tableProps() {
return [
{
// width: 128,
prop: 'workOrderId',
label: '工单号',
},
{
// width: 128,
prop: 'productionName',
label: '产品',
},
{
// width: 160,
prop: 'inspectionContent',
@@ -214,8 +224,8 @@ export default {
...this.dynamicProps,
{
// width: 128,
prop: 'sumInput',
label: '检测类型总数',
prop: 'sumScrap',
label: '检测总数',
},
{
// width: 128,
@@ -342,6 +352,8 @@ export default {
inspectionContent: item.inspectionContent,
...keyValuePairs,
sumInput: item.sumInput,
productionName: item.productionName,
workOrderId: item.workOrderId,
scrapRatio: item.scrapRatio,
};
});