bugfix zentao 1
This commit is contained in:
		@@ -5,110 +5,123 @@
 | 
			
		||||
 | 
			
		||||
/** 基础通用 **/
 | 
			
		||||
.pt5 {
 | 
			
		||||
  padding-top: 5px;
 | 
			
		||||
	padding-top: 5px;
 | 
			
		||||
}
 | 
			
		||||
.pr5 {
 | 
			
		||||
  padding-right: 5px;
 | 
			
		||||
	padding-right: 5px;
 | 
			
		||||
}
 | 
			
		||||
.pb5 {
 | 
			
		||||
  padding-bottom: 5px;
 | 
			
		||||
	padding-bottom: 5px;
 | 
			
		||||
}
 | 
			
		||||
.mt5 {
 | 
			
		||||
  margin-top: 5px;
 | 
			
		||||
	margin-top: 5px;
 | 
			
		||||
}
 | 
			
		||||
.mr5 {
 | 
			
		||||
  margin-right: 5px;
 | 
			
		||||
	margin-right: 5px;
 | 
			
		||||
}
 | 
			
		||||
.mb5 {
 | 
			
		||||
  margin-bottom: 5px;
 | 
			
		||||
	margin-bottom: 5px;
 | 
			
		||||
}
 | 
			
		||||
.mb8 {
 | 
			
		||||
  margin-bottom: 8px;
 | 
			
		||||
	margin-bottom: 8px;
 | 
			
		||||
}
 | 
			
		||||
.ml5 {
 | 
			
		||||
  margin-left: 5px;
 | 
			
		||||
	margin-left: 5px;
 | 
			
		||||
}
 | 
			
		||||
.mt10 {
 | 
			
		||||
  margin-top: 10px;
 | 
			
		||||
	margin-top: 10px;
 | 
			
		||||
}
 | 
			
		||||
.mr10 {
 | 
			
		||||
  margin-right: 10px;
 | 
			
		||||
	margin-right: 10px;
 | 
			
		||||
}
 | 
			
		||||
.mb10 {
 | 
			
		||||
  margin-bottom: 10px;
 | 
			
		||||
	margin-bottom: 10px;
 | 
			
		||||
}
 | 
			
		||||
.ml10 {
 | 
			
		||||
  margin-left: 10px;
 | 
			
		||||
	margin-left: 10px;
 | 
			
		||||
}
 | 
			
		||||
.mt20 {
 | 
			
		||||
  margin-top: 20px;
 | 
			
		||||
	margin-top: 20px;
 | 
			
		||||
}
 | 
			
		||||
.mr20 {
 | 
			
		||||
  margin-right: 20px;
 | 
			
		||||
	margin-right: 20px;
 | 
			
		||||
}
 | 
			
		||||
.mb20 {
 | 
			
		||||
  margin-bottom: 20px;
 | 
			
		||||
	margin-bottom: 20px;
 | 
			
		||||
}
 | 
			
		||||
.ml20 {
 | 
			
		||||
  margin-left: 20px;
 | 
			
		||||
	margin-left: 20px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 {
 | 
			
		||||
  font-family: inherit;
 | 
			
		||||
  font-weight: 500;
 | 
			
		||||
  line-height: 1.1;
 | 
			
		||||
  color: inherit;
 | 
			
		||||
.h1,
 | 
			
		||||
.h2,
 | 
			
		||||
.h3,
 | 
			
		||||
.h4,
 | 
			
		||||
.h5,
 | 
			
		||||
.h6,
 | 
			
		||||
h1,
 | 
			
		||||
h2,
 | 
			
		||||
h3,
 | 
			
		||||
h4,
 | 
			
		||||
h5,
 | 
			
		||||
h6 {
 | 
			
		||||
	font-family: inherit;
 | 
			
		||||
	font-weight: 500;
 | 
			
		||||
	line-height: 1.1;
 | 
			
		||||
	color: inherit;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.el-message-box__status + .el-message-box__message{
 | 
			
		||||
  word-break: break-word;
 | 
			
		||||
.el-message-box__status + .el-message-box__message {
 | 
			
		||||
	word-break: break-word;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.el-dialog:not(.is-fullscreen) {
 | 
			
		||||
  margin-top: 6vh !important;
 | 
			
		||||
	// margin-top: 6vh !important;
 | 
			
		||||
	margin-top: 12vh !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.el-dialog__wrapper.scrollbar .el-dialog .el-dialog__body {
 | 
			
		||||
  overflow: auto;
 | 
			
		||||
  overflow-x: hidden;
 | 
			
		||||
  max-height: 70vh;
 | 
			
		||||
  padding: 10px 20px 0;
 | 
			
		||||
	overflow: auto;
 | 
			
		||||
	overflow-x: hidden;
 | 
			
		||||
	max-height: 70vh;
 | 
			
		||||
	padding: 10px 20px 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.el-dialog{
 | 
			
		||||
  display: flex;
 | 
			
		||||
  flex-direction: column;
 | 
			
		||||
  max-width: calc(100% - 30px);
 | 
			
		||||
  max-height: calc(100% - 70px);
 | 
			
		||||
  .el-dialog__body {
 | 
			
		||||
    overflow: auto;
 | 
			
		||||
  }
 | 
			
		||||
.el-dialog {
 | 
			
		||||
	display: flex;
 | 
			
		||||
	flex-direction: column;
 | 
			
		||||
	max-width: calc(100% - 30px);
 | 
			
		||||
	max-height: calc(100% - 70px);
 | 
			
		||||
	.el-dialog__body {
 | 
			
		||||
		overflow: auto;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.el-table {
 | 
			
		||||
  .el-table__header-wrapper, .el-table__fixed-header-wrapper {
 | 
			
		||||
    th {
 | 
			
		||||
      word-break: break-word;
 | 
			
		||||
      background-color: #f8f8f9;
 | 
			
		||||
      color: #515a6e;
 | 
			
		||||
      height: 40px;
 | 
			
		||||
      font-size: 13px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  .el-table__body-wrapper {
 | 
			
		||||
    .el-button [class*="el-icon-"] + span {
 | 
			
		||||
      margin-left: 1px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
	.el-table__header-wrapper,
 | 
			
		||||
	.el-table__fixed-header-wrapper {
 | 
			
		||||
		th {
 | 
			
		||||
			word-break: break-word;
 | 
			
		||||
			background-color: #f8f8f9;
 | 
			
		||||
			color: #515a6e;
 | 
			
		||||
			height: 40px;
 | 
			
		||||
			font-size: 13px;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	.el-table__body-wrapper {
 | 
			
		||||
		.el-button [class*='el-icon-'] + span {
 | 
			
		||||
			margin-left: 1px;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** 表单布局 **/
 | 
			
		||||
.form-header {
 | 
			
		||||
  font-size:15px;
 | 
			
		||||
  color:#6379bb;
 | 
			
		||||
  border-bottom:1px solid #ddd;
 | 
			
		||||
  margin:8px 10px 25px 10px;
 | 
			
		||||
  padding-bottom:5px
 | 
			
		||||
	font-size: 15px;
 | 
			
		||||
	color: #6379bb;
 | 
			
		||||
	border-bottom: 1px solid #ddd;
 | 
			
		||||
	margin: 8px 10px 25px 10px;
 | 
			
		||||
	padding-bottom: 5px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** 表格布局 **/
 | 
			
		||||
@@ -122,169 +135,171 @@
 | 
			
		||||
 | 
			
		||||
/* tree border */
 | 
			
		||||
.tree-border {
 | 
			
		||||
  margin-top: 5px;
 | 
			
		||||
  border: 1px solid #e5e6e7;
 | 
			
		||||
  background: #FFFFFF none;
 | 
			
		||||
  border-radius:4px;
 | 
			
		||||
	margin-top: 5px;
 | 
			
		||||
	border: 1px solid #e5e6e7;
 | 
			
		||||
	background: #ffffff none;
 | 
			
		||||
	border-radius: 4px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.pagination-container .el-pagination {
 | 
			
		||||
  right: 0;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
	right: 0;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media ( max-width : 768px) {
 | 
			
		||||
  .pagination-container .el-pagination > .el-pagination__jump {
 | 
			
		||||
    display: none !important;
 | 
			
		||||
  }
 | 
			
		||||
  .pagination-container .el-pagination > .el-pagination__sizes {
 | 
			
		||||
    display: none !important;
 | 
			
		||||
  }
 | 
			
		||||
@media (max-width: 768px) {
 | 
			
		||||
	.pagination-container .el-pagination > .el-pagination__jump {
 | 
			
		||||
		display: none !important;
 | 
			
		||||
	}
 | 
			
		||||
	.pagination-container .el-pagination > .el-pagination__sizes {
 | 
			
		||||
		display: none !important;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.el-table .fixed-width .el-button--mini {
 | 
			
		||||
  padding-left: 0;
 | 
			
		||||
  padding-right: 0;
 | 
			
		||||
  width: inherit;
 | 
			
		||||
	padding-left: 0;
 | 
			
		||||
	padding-right: 0;
 | 
			
		||||
	width: inherit;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** 表格更多操作下拉样式 */
 | 
			
		||||
.el-table .el-dropdown-link,.el-table .el-dropdown-selfdefine {
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
  margin-left: 5px;
 | 
			
		||||
.el-table .el-dropdown-link,
 | 
			
		||||
.el-table .el-dropdown-selfdefine {
 | 
			
		||||
	cursor: pointer;
 | 
			
		||||
	margin-left: 5px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.el-table .el-dropdown, .el-icon-arrow-down {
 | 
			
		||||
  font-size: 12px;
 | 
			
		||||
.el-table .el-dropdown,
 | 
			
		||||
.el-icon-arrow-down {
 | 
			
		||||
	font-size: 12px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.el-tree-node__content > .el-checkbox {
 | 
			
		||||
  margin-right: 8px;
 | 
			
		||||
	margin-right: 8px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.list-group-striped > .list-group-item {
 | 
			
		||||
  border-left: 0;
 | 
			
		||||
  border-right: 0;
 | 
			
		||||
  border-radius: 0;
 | 
			
		||||
  padding-left: 0;
 | 
			
		||||
  padding-right: 0;
 | 
			
		||||
	border-left: 0;
 | 
			
		||||
	border-right: 0;
 | 
			
		||||
	border-radius: 0;
 | 
			
		||||
	padding-left: 0;
 | 
			
		||||
	padding-right: 0;
 | 
			
		||||
 | 
			
		||||
  &:not(:last-child) {
 | 
			
		||||
    border-bottom: 1px solid #e7eaec;
 | 
			
		||||
  }
 | 
			
		||||
	&:not(:last-child) {
 | 
			
		||||
		border-bottom: 1px solid #e7eaec;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.list-group {
 | 
			
		||||
  padding-left: 0px;
 | 
			
		||||
  list-style: none;
 | 
			
		||||
	padding-left: 0px;
 | 
			
		||||
	list-style: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.list-group-item {
 | 
			
		||||
  // border-bottom: 1px solid #e7eaec;
 | 
			
		||||
  // border-top: 1px solid #e7eaec;
 | 
			
		||||
  margin-bottom: -1px;
 | 
			
		||||
  padding: 11px 0px;
 | 
			
		||||
  font-size: 13px;
 | 
			
		||||
	// border-bottom: 1px solid #e7eaec;
 | 
			
		||||
	// border-top: 1px solid #e7eaec;
 | 
			
		||||
	margin-bottom: -1px;
 | 
			
		||||
	padding: 11px 0px;
 | 
			
		||||
	font-size: 13px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.pull-right {
 | 
			
		||||
  float: right !important;
 | 
			
		||||
	float: right !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.el-card__header {
 | 
			
		||||
  padding: 14px 15px 7px;
 | 
			
		||||
  min-height: 40px;
 | 
			
		||||
	padding: 14px 15px 7px;
 | 
			
		||||
	min-height: 40px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.el-card__body {
 | 
			
		||||
  padding: 15px 20px 20px 20px;
 | 
			
		||||
	padding: 15px 20px 20px 20px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.card-box {
 | 
			
		||||
  padding-right: 15px;
 | 
			
		||||
  padding-left: 15px;
 | 
			
		||||
  margin-bottom: 10px;
 | 
			
		||||
	padding-right: 15px;
 | 
			
		||||
	padding-left: 15px;
 | 
			
		||||
	margin-bottom: 10px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* button color */
 | 
			
		||||
.el-button--cyan.is-active,
 | 
			
		||||
.el-button--cyan:active {
 | 
			
		||||
  background: #20B2AA;
 | 
			
		||||
  border-color: #20B2AA;
 | 
			
		||||
  color: #FFFFFF;
 | 
			
		||||
	background: #20b2aa;
 | 
			
		||||
	border-color: #20b2aa;
 | 
			
		||||
	color: #ffffff;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.el-button--cyan:focus,
 | 
			
		||||
.el-button--cyan:hover {
 | 
			
		||||
  background: #48D1CC;
 | 
			
		||||
  border-color: #48D1CC;
 | 
			
		||||
  color: #FFFFFF;
 | 
			
		||||
	background: #48d1cc;
 | 
			
		||||
	border-color: #48d1cc;
 | 
			
		||||
	color: #ffffff;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.el-button--cyan {
 | 
			
		||||
  background-color: #20B2AA;
 | 
			
		||||
  border-color: #20B2AA;
 | 
			
		||||
  color: #FFFFFF;
 | 
			
		||||
	background-color: #20b2aa;
 | 
			
		||||
	border-color: #20b2aa;
 | 
			
		||||
	color: #ffffff;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* text color */
 | 
			
		||||
.text-navy {
 | 
			
		||||
  color: #1ab394;
 | 
			
		||||
	color: #1ab394;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.text-primary {
 | 
			
		||||
  color: inherit;
 | 
			
		||||
	color: inherit;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.text-success {
 | 
			
		||||
  color: #1c84c6;
 | 
			
		||||
	color: #1c84c6;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.text-info {
 | 
			
		||||
  color: #23c6c8;
 | 
			
		||||
	color: #23c6c8;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.text-warning {
 | 
			
		||||
  color: #f8ac59;
 | 
			
		||||
	color: #f8ac59;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.text-danger {
 | 
			
		||||
  color: #ed5565;
 | 
			
		||||
	color: #ed5565;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.text-muted {
 | 
			
		||||
  color: #888888;
 | 
			
		||||
	color: #888888;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* image */
 | 
			
		||||
.img-circle {
 | 
			
		||||
  border-radius: 50%;
 | 
			
		||||
	border-radius: 50%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.img-lg {
 | 
			
		||||
  width: 120px;
 | 
			
		||||
  height: 120px;
 | 
			
		||||
	width: 120px;
 | 
			
		||||
	height: 120px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.avatar-upload-preview {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: 50%;
 | 
			
		||||
  transform: translate(50%, -50%);
 | 
			
		||||
  width: 200px;
 | 
			
		||||
  height: 200px;
 | 
			
		||||
  border-radius: 50%;
 | 
			
		||||
  box-shadow: 0 0 4px #ccc;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	top: 50%;
 | 
			
		||||
	transform: translate(50%, -50%);
 | 
			
		||||
	width: 200px;
 | 
			
		||||
	height: 200px;
 | 
			
		||||
	border-radius: 50%;
 | 
			
		||||
	box-shadow: 0 0 4px #ccc;
 | 
			
		||||
	overflow: hidden;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* 拖拽列样式 */
 | 
			
		||||
.sortable-ghost{
 | 
			
		||||
  opacity: .8;
 | 
			
		||||
  color: #fff!important;
 | 
			
		||||
  background: #42b983!important;
 | 
			
		||||
.sortable-ghost {
 | 
			
		||||
	opacity: 0.8;
 | 
			
		||||
	color: #fff !important;
 | 
			
		||||
	background: #42b983 !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.top-right-btn {
 | 
			
		||||
  position: relative;
 | 
			
		||||
  float: right;
 | 
			
		||||
	position: relative;
 | 
			
		||||
	float: right;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,6 @@ function step1(tree1) {
 | 
			
		||||
		.map((item) => ({
 | 
			
		||||
			prop: item,
 | 
			
		||||
			label: item,
 | 
			
		||||
			align: 'center',
 | 
			
		||||
			children: [],
 | 
			
		||||
		}));
 | 
			
		||||
}
 | 
			
		||||
@@ -33,7 +32,6 @@ function step2(firstTierProps, tree2) {
 | 
			
		||||
			parent.children.push({
 | 
			
		||||
				label: nd.name,
 | 
			
		||||
				prop: `${parent.prop}-${nd.name}`,
 | 
			
		||||
				align: 'center',
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
	});
 | 
			
		||||
 
 | 
			
		||||
@@ -85,12 +85,11 @@ export default {
 | 
			
		||||
					width: 180,
 | 
			
		||||
					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
			
		||||
				},
 | 
			
		||||
				{ prop: 'equipmentName', label: '设备', align: 'center' },
 | 
			
		||||
				{ prop: 'groupName', label: '分组', align: 'center' },
 | 
			
		||||
				{ prop: 'equipmentName', label: '设备' },
 | 
			
		||||
				{ prop: 'groupName', label: '分组' },
 | 
			
		||||
				{
 | 
			
		||||
					_action: 'equipment-bind-group-show-alert',
 | 
			
		||||
					label: '分组报警',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					subcomponent: {
 | 
			
		||||
						props: ['injectData'],
 | 
			
		||||
						render: function (h) {
 | 
			
		||||
@@ -162,6 +161,9 @@ export default {
 | 
			
		||||
						label: '设备',
 | 
			
		||||
						url: '/base/equipment/page?pageNo=1&pageSize=100',
 | 
			
		||||
						prop: 'equipmentId',
 | 
			
		||||
						bind: {
 | 
			
		||||
							filterable: true,
 | 
			
		||||
						},
 | 
			
		||||
						rules: [{ required: true, message: '不能为空', trigger: 'blur' }],
 | 
			
		||||
					},
 | 
			
		||||
				],
 | 
			
		||||
@@ -173,6 +175,9 @@ export default {
 | 
			
		||||
						// depends: '__product_line', // 依赖产线获取数据
 | 
			
		||||
						// depends: 'productionLineId',
 | 
			
		||||
						prop: 'groupId',
 | 
			
		||||
						bind: {
 | 
			
		||||
							filterable: true,
 | 
			
		||||
						},
 | 
			
		||||
						rules: [{ required: true, message: '不能为空', trigger: 'blur' }],
 | 
			
		||||
					},
 | 
			
		||||
				],
 | 
			
		||||
@@ -223,7 +228,7 @@ export default {
 | 
			
		||||
		/** 查询列表 */
 | 
			
		||||
		getList() {
 | 
			
		||||
			this.loading = true;
 | 
			
		||||
			_// 执行查询
 | 
			
		||||
			_; // 执行查询
 | 
			
		||||
			getEquipmentBindGroupPage(this.queryParams).then((response) => {
 | 
			
		||||
				this.list = response.data.list;
 | 
			
		||||
				this.total = response.data.total;
 | 
			
		||||
 
 | 
			
		||||
@@ -83,28 +83,26 @@ export default {
 | 
			
		||||
					width: 180,
 | 
			
		||||
					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
			
		||||
				},
 | 
			
		||||
				{ prop: 'productionLine', label: '产线名称', align: 'center' },
 | 
			
		||||
				{ prop: 'workshopSection', label: '工段名称', align: 'center' },
 | 
			
		||||
				{ prop: 'equipment', label: '设备名称', align: 'center' },
 | 
			
		||||
				{ prop: 'sort', label: '工段中排序', align: 'center' },
 | 
			
		||||
				{ prop: 'productionLine', label: '产线名称' },
 | 
			
		||||
				{ prop: 'workshopSection', label: '工段名称' },
 | 
			
		||||
				{ prop: 'equipment', label: '设备名称' },
 | 
			
		||||
				{ prop: 'sort', label: '工段中排序' },
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'lineDataType',
 | 
			
		||||
					label: '产线数据类型',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					filter: (val) =>
 | 
			
		||||
						val != null ? ['无类型', '进口计数', '出口计数'][val] : '-',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'sectionDataType',
 | 
			
		||||
					label: '工段数据类型',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					filter: (val) =>
 | 
			
		||||
						val != null ? ['无类型', '进口计数', '出口计数'][val] : '-',
 | 
			
		||||
				},
 | 
			
		||||
				// {
 | 
			
		||||
				// 	action: 'show-alert',
 | 
			
		||||
				// 	label: '报警',
 | 
			
		||||
				// 	align: 'center',
 | 
			
		||||
				// 	,
 | 
			
		||||
				// 	subcomponent: {
 | 
			
		||||
				// 		props: ['injectData'],
 | 
			
		||||
				// 		render: function (h) {
 | 
			
		||||
 
 | 
			
		||||
@@ -84,13 +84,12 @@ export default {
 | 
			
		||||
					width: 180,
 | 
			
		||||
					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
			
		||||
				},
 | 
			
		||||
				{ prop: 'name', label: '设备分组名称', align: 'center' },
 | 
			
		||||
				{ prop: 'code', label: '检测分组编码', align: 'center' },
 | 
			
		||||
				{ prop: 'remark', label: '备注', align: 'center' },
 | 
			
		||||
				{ prop: 'name', label: '设备分组名称' },
 | 
			
		||||
				{ prop: 'code', label: '设备分组编码' },
 | 
			
		||||
				{ prop: 'remark', label: '备注' },
 | 
			
		||||
				{
 | 
			
		||||
					_action: 'equipment-group-show-alert',
 | 
			
		||||
					label: '报警',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					subcomponent: {
 | 
			
		||||
						props: ['injectData'],
 | 
			
		||||
						render: function (h) {
 | 
			
		||||
@@ -127,7 +126,7 @@ export default {
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '分组编码',
 | 
			
		||||
					placeholder: '请输入设备分组编码',
 | 
			
		||||
					param: 'codes',
 | 
			
		||||
					param: 'code',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
@@ -172,6 +171,7 @@ export default {
 | 
			
		||||
						label: '分组编码',
 | 
			
		||||
						prop: 'code',
 | 
			
		||||
						url: '/base/equipment-group/getCode',
 | 
			
		||||
						rules: [{ required: true, message: '不能为空', trigger: 'blur' }],
 | 
			
		||||
					},
 | 
			
		||||
				],
 | 
			
		||||
				[
 | 
			
		||||
@@ -302,11 +302,7 @@ export default {
 | 
			
		||||
		handleDelete(row) {
 | 
			
		||||
			const id = row.id;
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm(
 | 
			
		||||
					'是否确认删除设备分组(用于同类型不同厂家的设备区分)编号为"' +
 | 
			
		||||
						id +
 | 
			
		||||
						'"的数据项?'
 | 
			
		||||
				)
 | 
			
		||||
				.confirm('是否确认删除设备分组 "' + row.name + '"?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return deleteEquipmentGroup(id);
 | 
			
		||||
				})
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										177
									
								
								src/views/base/equipmentGroupAlarm/dialogForm.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										177
									
								
								src/views/base/equipmentGroupAlarm/dialogForm.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,177 @@
 | 
			
		||||
<!-- 
 | 
			
		||||
    filename: dialogForm.vue
 | 
			
		||||
    author: liubin
 | 
			
		||||
    date: 2023-09-11 15:55:13
 | 
			
		||||
    description: DialogForm for equipmentBindSection only
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
	<el-form
 | 
			
		||||
		ref="form"
 | 
			
		||||
		:model="dataForm"
 | 
			
		||||
		label-width="100px"
 | 
			
		||||
		v-loading="formLoading">
 | 
			
		||||
		<el-row :gutter="20">
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="报警编码"
 | 
			
		||||
					prop="code"
 | 
			
		||||
					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
 | 
			
		||||
					<el-input
 | 
			
		||||
						v-model="dataForm.code"
 | 
			
		||||
						@change="$emit('update', dataForm)"
 | 
			
		||||
						placeholder="请输入工段排序" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
				<!-- 				
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="报警编码"
 | 
			
		||||
					prop="code"
 | 
			
		||||
					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.code"
 | 
			
		||||
						placeholder="请选择产线"
 | 
			
		||||
						@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="type"
 | 
			
		||||
					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.type"
 | 
			
		||||
						placeholder="请选择报警类型"
 | 
			
		||||
						@change="$emit('update', dataForm)">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="opt in [
 | 
			
		||||
								{ label: '布尔型', value: 2 },
 | 
			
		||||
								{ label: '字符型', value: 1 },
 | 
			
		||||
							]"
 | 
			
		||||
							: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="grade"
 | 
			
		||||
					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.grade"
 | 
			
		||||
						placeholder="请选择报警级别"
 | 
			
		||||
						@change="$emit('update', dataForm)">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="opt in getDictDatas(DICT_TYPE.EQU_ALARM_LEVEL)"
 | 
			
		||||
							:key="opt.value"
 | 
			
		||||
							:label="opt.label"
 | 
			
		||||
							:value="opt.value" />
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					v-if="+dataForm.type == 1"
 | 
			
		||||
					label="设备报警编码"
 | 
			
		||||
					prop="alarmCode">
 | 
			
		||||
					<el-input
 | 
			
		||||
						v-model="dataForm.alarmCode"
 | 
			
		||||
						@change="$emit('update', dataForm)"
 | 
			
		||||
						placeholder="请输入设备报警编码" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-row :gutter="20">
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="参数列名"
 | 
			
		||||
					prop="plcParamName"
 | 
			
		||||
					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
 | 
			
		||||
					<el-input
 | 
			
		||||
						v-model="dataForm.plcParamName"
 | 
			
		||||
						placeholder="请输入参数列名"
 | 
			
		||||
						@change="$emit('update', dataForm)"></el-input>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="报警内容"
 | 
			
		||||
					prop="alarmContent"
 | 
			
		||||
					:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
 | 
			
		||||
					<el-input
 | 
			
		||||
						v-model="dataForm.alarmContent"
 | 
			
		||||
						placeholder="请输入报警内容"
 | 
			
		||||
						@change="$emit('update', dataForm)"></el-input>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
	</el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
	name: 'DialogForm',
 | 
			
		||||
	model: {
 | 
			
		||||
		prop: 'dataForm',
 | 
			
		||||
		event: 'update',
 | 
			
		||||
	},
 | 
			
		||||
	emits: ['update'],
 | 
			
		||||
	components: {},
 | 
			
		||||
	props: {
 | 
			
		||||
		dataForm: {
 | 
			
		||||
			type: Object,
 | 
			
		||||
			default: () => ({}),
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formLoading: true,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.getCode('/base/equipment-group-alarm/getCode').then((code) => {
 | 
			
		||||
			this.formLoading = false;
 | 
			
		||||
			this.$emit('update', {
 | 
			
		||||
				...this.dataForm,
 | 
			
		||||
				code,
 | 
			
		||||
			});
 | 
			
		||||
		});
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		/** 模拟透传 ref  */
 | 
			
		||||
		validate(cb) {
 | 
			
		||||
			return this.$refs.form.validate(cb);
 | 
			
		||||
		},
 | 
			
		||||
		resetFields(args) {
 | 
			
		||||
			return this.$refs.form.resetFields(args);
 | 
			
		||||
		},
 | 
			
		||||
		async handleProductlineChange(id) {
 | 
			
		||||
			await this.getWorksectionList(id);
 | 
			
		||||
			this.dataForm.workshopSectionId = null;
 | 
			
		||||
			this.$emit('update', this.dataForm);
 | 
			
		||||
		},
 | 
			
		||||
		async getCode(url) {
 | 
			
		||||
			const response = await this.$axios(url);
 | 
			
		||||
			return response.data;
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style scoped lang="scss">
 | 
			
		||||
.el-date-editor,
 | 
			
		||||
.el-select {
 | 
			
		||||
	width: 100%;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -37,7 +37,7 @@
 | 
			
		||||
			@close="cancel"
 | 
			
		||||
			@cancel="cancel"
 | 
			
		||||
			@confirm="submitForm">
 | 
			
		||||
			<DialogForm v-if="open" ref="form" :dataForm="form" :rows="rows" />
 | 
			
		||||
			<DialogForm v-if="open" ref="form" v-model="form" :rows="rows" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
@@ -54,10 +54,11 @@ import {
 | 
			
		||||
import basicPageMixin from '@/mixins/lb/basicPageMixin';
 | 
			
		||||
import moment from 'moment';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import DialogForm from './dialogForm.vue';
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	name: 'EquipmentGroupAlarm',
 | 
			
		||||
	components: {},
 | 
			
		||||
	components: { DialogForm },
 | 
			
		||||
	mixins: [basicPageMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
@@ -84,22 +85,27 @@ export default {
 | 
			
		||||
					width: 180,
 | 
			
		||||
					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
			
		||||
				},
 | 
			
		||||
				{ prop: 'code', label: '报警编码', align: 'center' },
 | 
			
		||||
				{ prop: 'type', label: '报警类型', align: 'center' },
 | 
			
		||||
				{  width: 240, prop: 'code', label: '报警编码' },
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'type',
 | 
			
		||||
					label: '报警类型',
 | 
			
		||||
					filter: (val) =>
 | 
			
		||||
						val != null ? ['-', '字符型', '布尔型', '-'][val] : '-',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'grade',
 | 
			
		||||
					label: '报警级别',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					filter: publicFormatter(this.DICT_TYPE.EQU_ALARM_LEVEL),
 | 
			
		||||
				},
 | 
			
		||||
				{ prop: 'alarmCode', label: '设备报警编码', align: 'center' },
 | 
			
		||||
				{ prop: 'plcParamName', label: '参数列名', align: 'center' },
 | 
			
		||||
				{ prop: 'alarmContent', label: '报警内容', align: 'center' },
 | 
			
		||||
				{ prop: 'alarmCode', label: '设备报警编码' },
 | 
			
		||||
				{ prop: 'plcParamName', label: '参数列名' },
 | 
			
		||||
				{ prop: 'alarmContent', label: '报警内容' },
 | 
			
		||||
			],
 | 
			
		||||
			searchBarFormConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '设备分组编码',
 | 
			
		||||
					width: '220',
 | 
			
		||||
					placeholder: '/',
 | 
			
		||||
					param: 'equipmentGroupCode',
 | 
			
		||||
					defaultSelect: null,
 | 
			
		||||
@@ -181,14 +187,14 @@ export default {
 | 
			
		||||
			},
 | 
			
		||||
			// 表单参数
 | 
			
		||||
			form: {
 | 
			
		||||
				id: undefined,
 | 
			
		||||
				equipmentGroupId: undefined,
 | 
			
		||||
				code: undefined,
 | 
			
		||||
				type: undefined,
 | 
			
		||||
				grade: undefined,
 | 
			
		||||
				alarmCode: undefined,
 | 
			
		||||
				alarmContent: undefined,
 | 
			
		||||
				plcParamName: undefined,
 | 
			
		||||
				id: null,
 | 
			
		||||
				equipmentGroupId: null,
 | 
			
		||||
				code: null,
 | 
			
		||||
				type: null,
 | 
			
		||||
				grade: null,
 | 
			
		||||
				alarmCode: null,
 | 
			
		||||
				alarmContent: null,
 | 
			
		||||
				plcParamName: null,
 | 
			
		||||
			},
 | 
			
		||||
			// // 表单校验
 | 
			
		||||
			// rules: {
 | 
			
		||||
@@ -249,14 +255,14 @@ export default {
 | 
			
		||||
		/** 表单重置 */
 | 
			
		||||
		reset() {
 | 
			
		||||
			this.form = {
 | 
			
		||||
				id: undefined,
 | 
			
		||||
				equipmentGroupId: undefined,
 | 
			
		||||
				code: undefined,
 | 
			
		||||
				type: undefined,
 | 
			
		||||
				grade: undefined,
 | 
			
		||||
				alarmCode: undefined,
 | 
			
		||||
				alarmContent: undefined,
 | 
			
		||||
				plcParamName: undefined,
 | 
			
		||||
				id: null,
 | 
			
		||||
				equipmentGroupId: null,
 | 
			
		||||
				code: null,
 | 
			
		||||
				type: null,
 | 
			
		||||
				grade: null,
 | 
			
		||||
				alarmCode: null,
 | 
			
		||||
				alarmContent: null,
 | 
			
		||||
				plcParamName: null,
 | 
			
		||||
			};
 | 
			
		||||
			this.resetForm('form');
 | 
			
		||||
		},
 | 
			
		||||
@@ -321,7 +327,7 @@ export default {
 | 
			
		||||
		handleDelete(row) {
 | 
			
		||||
			const id = row.id;
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除设备分组报警明细编号为"' + id + '"的数据项?')
 | 
			
		||||
				.confirm('是否确认删除该报警?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return deleteEquipmentGroupAlarm(id);
 | 
			
		||||
				})
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,7 @@
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			ref="pageTable"
 | 
			
		||||
			@emitFun="handleEmitFun">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
@@ -64,6 +65,7 @@ const switchBtn = {
 | 
			
		||||
	},
 | 
			
		||||
	methods: {},
 | 
			
		||||
	render: function (h) {
 | 
			
		||||
		console.log("render....")
 | 
			
		||||
		return h(
 | 
			
		||||
			'el-switch',
 | 
			
		||||
			{
 | 
			
		||||
@@ -95,6 +97,7 @@ export default {
 | 
			
		||||
	components: {},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			tableKey: Math.random(),
 | 
			
		||||
			searchBarKeys: ['name', 'plcTableName'],
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('base:equipment-plc:update')
 | 
			
		||||
@@ -118,17 +121,16 @@ export default {
 | 
			
		||||
				// 	width: 180,
 | 
			
		||||
				// 	filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
			
		||||
				// },
 | 
			
		||||
				{ prop: 'code', label: '编码', align: 'center' },
 | 
			
		||||
				{ prop: 'plcTableName', label: '关联表名', align: 'center' },
 | 
			
		||||
				{ prop: 'name', label: '标识名称', align: 'center' },
 | 
			
		||||
				{ prop: 'enName', label: '英文名称', align: 'center' },
 | 
			
		||||
				{ prop: 'code', label: '编码' },
 | 
			
		||||
				{ prop: 'plcTableName', label: '关联表名' },
 | 
			
		||||
				{ prop: 'name', label: '标识名称' },
 | 
			
		||||
				{ prop: 'enName', label: '英文名称' },
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'collection',
 | 
			
		||||
					label: '是否采集',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					subcomponent: switchBtn,
 | 
			
		||||
				},
 | 
			
		||||
				{ prop: 'description', label: '描述', align: 'center' },
 | 
			
		||||
				{ prop: 'description', label: '描述' },
 | 
			
		||||
			],
 | 
			
		||||
			searchBarFormConfig: [
 | 
			
		||||
				{
 | 
			
		||||
@@ -246,7 +248,7 @@ export default {
 | 
			
		||||
		handleEmitFun({ action, payload }) {
 | 
			
		||||
			switch (action) {
 | 
			
		||||
				case 'update-collect':
 | 
			
		||||
          this.reset();
 | 
			
		||||
					this.reset();
 | 
			
		||||
					const tempForm = {};
 | 
			
		||||
					Object.keys(this.form).forEach((key) => {
 | 
			
		||||
						tempForm[key] = payload[key];
 | 
			
		||||
@@ -267,6 +269,7 @@ export default {
 | 
			
		||||
				this.list = response.data.list;
 | 
			
		||||
				this.total = response.data.total;
 | 
			
		||||
				this.loading = false;
 | 
			
		||||
				// this.tableKey = Math.random(); // method 1
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		/** 取消按钮 */
 | 
			
		||||
 
 | 
			
		||||
@@ -61,7 +61,7 @@ export default {
 | 
			
		||||
	components: {},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			searchBarKeys: ['name', 'plcTableName'],
 | 
			
		||||
			searchBarKeys: ['equipmentId', 'plcId'],
 | 
			
		||||
			// tableBtn: [
 | 
			
		||||
			// 	this.$auth.hasPermi('base:equipment-plc:update')
 | 
			
		||||
			// 		? {
 | 
			
		||||
@@ -98,18 +98,17 @@ export default {
 | 
			
		||||
				// 	width: 180,
 | 
			
		||||
				// 	filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
			
		||||
				// },
 | 
			
		||||
				{ prop: 'productionLine', label: '产线', align: 'center' },
 | 
			
		||||
				{ prop: 'workshopSection', label: '工段', align: 'center' },
 | 
			
		||||
				{ prop: 'equipmentName', label: '设备名', align: 'center' },
 | 
			
		||||
				{ prop: 'equipmentCode', label: '设备编码', align: 'center' },
 | 
			
		||||
				{ prop: 'plcCode', label: '关联表编码', align: 'center' },
 | 
			
		||||
				{ prop: 'plcTableName', label: '关联表名', align: 'center' },
 | 
			
		||||
				{ prop: 'plcName', label: '标识名称', align: 'center' },
 | 
			
		||||
				{ prop: 'bindingParameters', label: '绑定参数数量', align: 'center' },
 | 
			
		||||
				{ prop: 'productionLine', label: '产线' },
 | 
			
		||||
				{ prop: 'workshopSection', label: '工段' },
 | 
			
		||||
				{ prop: 'equipmentName', label: '设备名' },
 | 
			
		||||
				{ prop: 'equipmentCode', label: '设备编码' },
 | 
			
		||||
				{ prop: 'plcCode', label: '关联表编码' },
 | 
			
		||||
				{ prop: 'plcTableName', label: '关联表名' },
 | 
			
		||||
				{ prop: 'plcName', label: '标识名称' },
 | 
			
		||||
				{ prop: 'bindingParameters', label: '绑定参数数量' },
 | 
			
		||||
				{
 | 
			
		||||
					_action: 'params-bind',
 | 
			
		||||
					label: '查看绑定',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					subcomponent: {
 | 
			
		||||
						props: ['injectData'],
 | 
			
		||||
						render: function (h) {
 | 
			
		||||
@@ -136,16 +135,18 @@ export default {
 | 
			
		||||
			],
 | 
			
		||||
			searchBarFormConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '设备名',
 | 
			
		||||
					placeholder: '请输入设备名',
 | 
			
		||||
					placeholder: '请选择设备',
 | 
			
		||||
					param: 'equipmentId',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '编码',
 | 
			
		||||
					placeholder: '请输入编码',
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: 'PLC编码',
 | 
			
		||||
					placeholder: '请选择编码',
 | 
			
		||||
					param: 'plcId',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
@@ -207,8 +208,44 @@ export default {
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		this.getList();
 | 
			
		||||
		this.initSearchOptions();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		async getEquipmentOptions() {
 | 
			
		||||
			const res = await this.$axios({
 | 
			
		||||
				url: '/base/equipment/listAll',
 | 
			
		||||
				method: 'get',
 | 
			
		||||
			});
 | 
			
		||||
			return res.data;
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		async getPlcOptions() {
 | 
			
		||||
			const res = await this.$axios({
 | 
			
		||||
				url: '/base/equipment-plc/listAll',
 | 
			
		||||
				method: 'get',
 | 
			
		||||
			});
 | 
			
		||||
			return res.data;
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		/** 初始化查询条件 */
 | 
			
		||||
		async initSearchOptions() {
 | 
			
		||||
			Promise.all([this.getEquipmentOptions(), this.getPlcOptions()]).then(
 | 
			
		||||
				([eqList, plcList]) => {
 | 
			
		||||
					this.searchBarFormConfig[0].selectOptions = eqList.map((item) => {
 | 
			
		||||
						return {
 | 
			
		||||
							name: item.name,
 | 
			
		||||
							id: item.id,
 | 
			
		||||
						};
 | 
			
		||||
					});
 | 
			
		||||
					this.searchBarFormConfig[1].selectOptions = plcList.map((item) => {
 | 
			
		||||
						return {
 | 
			
		||||
							name: item.name,
 | 
			
		||||
							id: item.id,
 | 
			
		||||
						};
 | 
			
		||||
					});
 | 
			
		||||
				}
 | 
			
		||||
			);
 | 
			
		||||
		},
 | 
			
		||||
		/** 覆盖 handleEmitFun 的默认实现 */
 | 
			
		||||
		handleEmitFun({ action, payload }) {
 | 
			
		||||
			switch (action) {
 | 
			
		||||
 
 | 
			
		||||
@@ -68,29 +68,27 @@ export default {
 | 
			
		||||
				// 	width: 180,
 | 
			
		||||
				// 	filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
			
		||||
				// },
 | 
			
		||||
				{ prop: 'plcParamName', label: '参数列名', align: 'center' },
 | 
			
		||||
				{ prop: 'name', label: '参数名称', align: 'center' },
 | 
			
		||||
				{ prop: 'plcParamName', label: '参数列名' },
 | 
			
		||||
				{ prop: 'name', label: '参数名称' },
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'unit',
 | 
			
		||||
					label: '单位',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					filter: publicFormatter('unit_dict'),
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'collection',
 | 
			
		||||
					label: '是否采集',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					filter: (val) => (val != null ? ['否', '是'][val] : '-'),
 | 
			
		||||
				},
 | 
			
		||||
				{ prop: 'minValue', label: '最小值', align: 'center' },
 | 
			
		||||
				{ prop: 'maxValue', label: '最大值', align: 'center' },
 | 
			
		||||
				{ prop: 'defaultValue', label: '标准值', align: 'center' },
 | 
			
		||||
				{ prop: 'description', label: '描述', align: 'center' },
 | 
			
		||||
				{ prop: 'remark', label: '备注', align: 'center' },
 | 
			
		||||
				{ prop: 'minValue', label: '最小值' },
 | 
			
		||||
				{ prop: 'maxValue', label: '最大值' },
 | 
			
		||||
				{ prop: 'defaultValue', label: '标准值' },
 | 
			
		||||
				{ prop: 'description', label: '描述' },
 | 
			
		||||
				{ prop: 'remark', label: '备注' },
 | 
			
		||||
				// {
 | 
			
		||||
				// 	_action: 'params-bind',
 | 
			
		||||
				// 	label: '查看绑定',
 | 
			
		||||
				// 	align: 'center',
 | 
			
		||||
				// 	,
 | 
			
		||||
				// 	subcomponent: {
 | 
			
		||||
				// 		props: ['injectData'],
 | 
			
		||||
				// 		render: function (h) {
 | 
			
		||||
@@ -157,7 +155,7 @@ export default {
 | 
			
		||||
							{
 | 
			
		||||
								type: 'number',
 | 
			
		||||
								message: '请输入正确的数字',
 | 
			
		||||
								trigger: 'blur',
 | 
			
		||||
								trigger: 'change',
 | 
			
		||||
								transform: (val) => Number(val),
 | 
			
		||||
							},
 | 
			
		||||
						],
 | 
			
		||||
@@ -167,10 +165,13 @@ export default {
 | 
			
		||||
						label: '最大值',
 | 
			
		||||
						prop: 'maxValue',
 | 
			
		||||
						rules: [
 | 
			
		||||
							{
 | 
			
		||||
								required: false,
 | 
			
		||||
							},
 | 
			
		||||
							{
 | 
			
		||||
								type: 'number',
 | 
			
		||||
								message: '请输入正确的数字',
 | 
			
		||||
								trigger: 'blur',
 | 
			
		||||
								trigger: 'change',
 | 
			
		||||
								transform: (val) => Number(val),
 | 
			
		||||
							},
 | 
			
		||||
						],
 | 
			
		||||
@@ -349,8 +350,8 @@ export default {
 | 
			
		||||
				plcParamName: undefined,
 | 
			
		||||
				name: undefined,
 | 
			
		||||
				unit: undefined,
 | 
			
		||||
				minValue: undefined,
 | 
			
		||||
				maxValue: undefined,
 | 
			
		||||
				minValue: null,
 | 
			
		||||
				maxValue: null,
 | 
			
		||||
				defaultValue: undefined,
 | 
			
		||||
				collection: undefined,
 | 
			
		||||
				description: undefined,
 | 
			
		||||
 
 | 
			
		||||
@@ -147,15 +147,14 @@ export default {
 | 
			
		||||
					width: 180,
 | 
			
		||||
					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
			
		||||
				},
 | 
			
		||||
				{ prop: 'name', label: '设备名称', align: 'center' },
 | 
			
		||||
				{ prop: 'code', label: '检测编码', align: 'center' },
 | 
			
		||||
				{ prop: 'equipmentType', label: '设备类型', align: 'center' },
 | 
			
		||||
				{ prop: 'enName', label: '英文名称', align: 'center' },
 | 
			
		||||
				{ prop: 'abbr', label: '缩写', align: 'center' },
 | 
			
		||||
				{ prop: 'name', label: '设备名称' },
 | 
			
		||||
				{ prop: 'code', label: '检测编码' },
 | 
			
		||||
				{ prop: 'equipmentType', label: '设备类型' },
 | 
			
		||||
				{ prop: 'enName', label: '英文名称' },
 | 
			
		||||
				{ prop: 'abbr', label: '缩写' },
 | 
			
		||||
				{
 | 
			
		||||
					action: 'show-detail',
 | 
			
		||||
					label: '详情',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					subcomponent: {
 | 
			
		||||
						props: ['injectData'],
 | 
			
		||||
						render: function (h) {
 | 
			
		||||
@@ -377,8 +376,8 @@ export default {
 | 
			
		||||
					width: 180,
 | 
			
		||||
					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
			
		||||
				},
 | 
			
		||||
				{ prop: 'name', label: '属性名称', align: 'center' },
 | 
			
		||||
				{ prop: 'value', label: '属性值', align: 'center' },
 | 
			
		||||
				{ prop: 'name', label: '属性名称' },
 | 
			
		||||
				{ prop: 'value', label: '属性值' },
 | 
			
		||||
			],
 | 
			
		||||
			// 是否显示弹出层
 | 
			
		||||
			open: false,
 | 
			
		||||
 
 | 
			
		||||
@@ -85,9 +85,9 @@ export default {
 | 
			
		||||
					width: 180,
 | 
			
		||||
					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
			
		||||
				},
 | 
			
		||||
				{ prop: 'name', label: '设备类型名称', align: 'center' },
 | 
			
		||||
				{ prop: 'code', label: '检测类型编码', align: 'center' },
 | 
			
		||||
				{ prop: 'remark', label: '备注', align: 'center' },
 | 
			
		||||
				{ prop: 'name', label: '设备类型名称',  },
 | 
			
		||||
				{ prop: 'code', label: '检测类型编码',  },
 | 
			
		||||
				{ prop: 'remark', label: '备注',  },
 | 
			
		||||
			],
 | 
			
		||||
			searchBarFormConfig: [
 | 
			
		||||
				{
 | 
			
		||||
 
 | 
			
		||||
@@ -86,84 +86,72 @@ export default {
 | 
			
		||||
			// 		: undefined,
 | 
			
		||||
			// ].filter((v) => v),
 | 
			
		||||
			tableProps: [
 | 
			
		||||
				{ prop: 'factoryName', label: '工厂', align: 'center' },
 | 
			
		||||
				{ prop: 'lineName', label: '产线', align: 'center' },
 | 
			
		||||
				{ prop: 'sectionName', label: '工段', align: 'center' },
 | 
			
		||||
				{ prop: 'equipmentName', label: '设备', align: 'center' },
 | 
			
		||||
				{ prop: 'factoryName', label: '工厂' },
 | 
			
		||||
				{ prop: 'lineName', label: '产线' },
 | 
			
		||||
				{ prop: 'sectionName', label: '工段' },
 | 
			
		||||
				{ prop: 'equipmentName', label: '设备' },
 | 
			
		||||
				{
 | 
			
		||||
					label: '有效时间',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					children: [
 | 
			
		||||
						{
 | 
			
		||||
							width: 128,
 | 
			
		||||
							prop: 'workTime',
 | 
			
		||||
							label: '工作时长',
 | 
			
		||||
							align: 'center',
 | 
			
		||||
						},
 | 
			
		||||
						{
 | 
			
		||||
							width: 128,
 | 
			
		||||
							prop: 'workRate',
 | 
			
		||||
							label: '百分比',
 | 
			
		||||
							align: 'center',
 | 
			
		||||
							filter: (val) => (val != null ? +val.toFixed(3) : '-'),
 | 
			
		||||
						},
 | 
			
		||||
					],
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					label: '关机时间',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					children: [
 | 
			
		||||
						{
 | 
			
		||||
							width: 128,
 | 
			
		||||
							prop: 'stopTime',
 | 
			
		||||
							label: '停机时长',
 | 
			
		||||
							align: 'center',
 | 
			
		||||
						},
 | 
			
		||||
						{ width: 128, prop: 'stopRate', label: '百分比', align: 'center' },
 | 
			
		||||
						{ width: 128, prop: 'stopRate', label: '百分比' },
 | 
			
		||||
					],
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					label: '中断损失',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					children: [
 | 
			
		||||
						{
 | 
			
		||||
							width: 128,
 | 
			
		||||
							prop: 'downTime',
 | 
			
		||||
							label: '故障时长',
 | 
			
		||||
							align: 'center',
 | 
			
		||||
							filter: (val) => (val != null ? +val.toFixed(3) : '-'),
 | 
			
		||||
						},
 | 
			
		||||
						{ width: 128, prop: 'downRate', label: '百分比', align: 'center' },
 | 
			
		||||
						{ width: 128, prop: 'downRate', label: '百分比' },
 | 
			
		||||
						{
 | 
			
		||||
							width: 128,
 | 
			
		||||
							prop: 'timeEfficiency',
 | 
			
		||||
							label: '时间开动率',
 | 
			
		||||
							align: 'center',
 | 
			
		||||
							filter: (val) => (val != null ? +val.toFixed(3) : '-'),
 | 
			
		||||
						},
 | 
			
		||||
					],
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					label: '速度损失',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					children: [
 | 
			
		||||
						{
 | 
			
		||||
							width: 128,
 | 
			
		||||
							prop: 'realProcSpeed',
 | 
			
		||||
							label: '实际加工速度',
 | 
			
		||||
							align: 'center',
 | 
			
		||||
						},
 | 
			
		||||
						{
 | 
			
		||||
							width: 128,
 | 
			
		||||
							prop: 'designProcSpeed',
 | 
			
		||||
							label: '理论加工速度',
 | 
			
		||||
							align: 'center',
 | 
			
		||||
						},
 | 
			
		||||
						{
 | 
			
		||||
							width: 128,
 | 
			
		||||
							prop: 'peEfficiency',
 | 
			
		||||
							label: '速度开动率',
 | 
			
		||||
							align: 'center',
 | 
			
		||||
							filter: (val) => (val != null ? +val.toFixed(3) : '-'),
 | 
			
		||||
						},
 | 
			
		||||
					],
 | 
			
		||||
@@ -171,19 +159,17 @@ export default {
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'oee',
 | 
			
		||||
					label: 'OEE',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					filter: (val) => (val != null ? +val.toFixed(3) : '-'),
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'teep',
 | 
			
		||||
					label: 'TEEP',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					filter: (val) => (val != null ? +val.toFixed(3) : '-'),
 | 
			
		||||
				},
 | 
			
		||||
				// {
 | 
			
		||||
				// 	_action: 'view-trend',
 | 
			
		||||
				// 	label: '趋势',
 | 
			
		||||
				// 	align: 'center',
 | 
			
		||||
				// 	,
 | 
			
		||||
				// 	subcomponent: {
 | 
			
		||||
				// 		props: ['injectData'],
 | 
			
		||||
				// 		render: function (h) {
 | 
			
		||||
 
 | 
			
		||||
@@ -65,24 +65,22 @@ export default {
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			tableProps: [
 | 
			
		||||
				{ prop: 'lineName', label: '产线', align: 'center' },
 | 
			
		||||
				{ prop: 'sectionName', label: '工段', align: 'center' },
 | 
			
		||||
				{ prop: 'equipmentName', label: '设备', align: 'center' },
 | 
			
		||||
				{ prop: 'lineName', label: '产线' },
 | 
			
		||||
				{ prop: 'sectionName', label: '工段' },
 | 
			
		||||
				{ prop: 'equipmentName', label: '设备' },
 | 
			
		||||
				{
 | 
			
		||||
					width: 188,
 | 
			
		||||
					prop: 'mtbf',
 | 
			
		||||
					label: '平均故障间隔时间[MTBF](h)',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					width: 180,
 | 
			
		||||
					prop: 'mttr',
 | 
			
		||||
					label: '平均维修时间[MTTR](h)',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{ prop: 'workTime', label: '工作时长(h)', align: 'center' },
 | 
			
		||||
				{ prop: 'downTime', label: '故障时长(h)', align: 'center' },
 | 
			
		||||
				{ prop: 'downCount', label: '故障次数', align: 'center' },
 | 
			
		||||
				{ prop: 'workTime', label: '工作时长(h)' },
 | 
			
		||||
				{ prop: 'downTime', label: '故障时长(h)' },
 | 
			
		||||
				{ prop: 'downCount', label: '故障次数' },
 | 
			
		||||
			],
 | 
			
		||||
			searchBarFormConfig: [
 | 
			
		||||
				{
 | 
			
		||||
@@ -162,15 +160,13 @@ export default {
 | 
			
		||||
						this.queryParams.recordTime = [
 | 
			
		||||
							moment()
 | 
			
		||||
								.month(btn.month - 1)
 | 
			
		||||
								.format('YYYY-MM')+'-01 00:00:00',
 | 
			
		||||
							moment()
 | 
			
		||||
								.month(btn.month)
 | 
			
		||||
								.format('YYYY-MM')+'-01 00:00:00',
 | 
			
		||||
								.format('YYYY-MM') + '-01 00:00:00',
 | 
			
		||||
							moment().month(btn.month).format('YYYY-MM') + '-01 00:00:00',
 | 
			
		||||
						];
 | 
			
		||||
					} else {
 | 
			
		||||
						this.queryParams.recordTime = null;
 | 
			
		||||
					}
 | 
			
		||||
                    this.queryParams.lineId = btn.lineId || null;
 | 
			
		||||
					this.queryParams.lineId = btn.lineId || null;
 | 
			
		||||
					this.handleQuery();
 | 
			
		||||
					break;
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import moment from 'moment';
 | 
			
		||||
import LineChart from './components/lineChart.vue';
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
@@ -42,6 +43,8 @@ export default {
 | 
			
		||||
	components: { LineChart },
 | 
			
		||||
	props: {},
 | 
			
		||||
	data() {
 | 
			
		||||
		const now = new Date();
 | 
			
		||||
		const [y, m, d] = [now.getFullYear(), now.getMonth(), now.getDate()];
 | 
			
		||||
		return {
 | 
			
		||||
			dialogVisible: false,
 | 
			
		||||
			urls: {
 | 
			
		||||
@@ -72,13 +75,30 @@ export default {
 | 
			
		||||
					dateType: 'daterange', // datetimerange
 | 
			
		||||
					// format: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
					format: 'yyyy-MM-dd',
 | 
			
		||||
					valueFormat: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
					// valueFormat: 'timestamp',
 | 
			
		||||
					valueFormat: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
					rangeSeparator: '-',
 | 
			
		||||
					startPlaceholder: '开始日期',
 | 
			
		||||
					endPlaceholder: '结束日期',
 | 
			
		||||
					defaultTime: ['00:00:00', '23:59:59'],
 | 
			
		||||
					param: 'recordTime',
 | 
			
		||||
					defaultSelect: [
 | 
			
		||||
						new Date(y, m, d)
 | 
			
		||||
							.toLocaleString()
 | 
			
		||||
							.split('/')
 | 
			
		||||
							.map((item, index) => {
 | 
			
		||||
								if (index == 1 || index == 2) return item.padStart(2, '0');
 | 
			
		||||
								return item;
 | 
			
		||||
							})
 | 
			
		||||
							.join('-'),
 | 
			
		||||
						new Date(y, m, d, 23, 59, 59)
 | 
			
		||||
							.toLocaleString()
 | 
			
		||||
							.split('/')
 | 
			
		||||
							.map((item, index) => {
 | 
			
		||||
								if (index == 1 || index == 2) return item.padStart(2, '0');
 | 
			
		||||
								return item;
 | 
			
		||||
							})
 | 
			
		||||
							.join('-'),
 | 
			
		||||
					],
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
@@ -86,9 +106,9 @@ export default {
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'separate',
 | 
			
		||||
				},
 | 
			
		||||
				// {
 | 
			
		||||
				// 	type: 'separate',
 | 
			
		||||
				// },
 | 
			
		||||
				// {
 | 
			
		||||
				// 	type: 'button',
 | 
			
		||||
				// 	btnName: '列表数据',
 | 
			
		||||
@@ -111,43 +131,36 @@ export default {
 | 
			
		||||
					// width: 160,
 | 
			
		||||
					prop: 'sectionName',
 | 
			
		||||
					label: '工段',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					// width: 160,
 | 
			
		||||
					prop: 'equipmentName',
 | 
			
		||||
					label: '设备名称',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					// width: 160,
 | 
			
		||||
					prop: 'products',
 | 
			
		||||
					label: '产品名称',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					// width: 160,
 | 
			
		||||
					prop: 'inQuantity',
 | 
			
		||||
					label: '进片数量',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					// width: 160,
 | 
			
		||||
					prop: 'outQuantity',
 | 
			
		||||
					label: '出片数量',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					// width: 160,
 | 
			
		||||
					prop: 'nokQuantity',
 | 
			
		||||
					label: '破损/不合格数',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					// width: 160,
 | 
			
		||||
					prop: 'passRate',
 | 
			
		||||
					label: '合格率',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			lineChartConfig: {
 | 
			
		||||
@@ -161,14 +174,14 @@ export default {
 | 
			
		||||
					top: 0,
 | 
			
		||||
					left: 0,
 | 
			
		||||
					padding: 5,
 | 
			
		||||
                    icon: 'roundRect',
 | 
			
		||||
                    itemWidth: 12,
 | 
			
		||||
                    itemHeight: 12,
 | 
			
		||||
                    itemGap: 20,
 | 
			
		||||
					icon: 'roundRect',
 | 
			
		||||
					itemWidth: 12,
 | 
			
		||||
					itemHeight: 12,
 | 
			
		||||
					itemGap: 20,
 | 
			
		||||
					textStyle: {
 | 
			
		||||
                        fontSize: 14,
 | 
			
		||||
                        lineHeight: 14
 | 
			
		||||
                    },
 | 
			
		||||
						fontSize: 14,
 | 
			
		||||
						lineHeight: 14,
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				xAxis: {
 | 
			
		||||
					type: 'category',
 | 
			
		||||
@@ -176,13 +189,13 @@ export default {
 | 
			
		||||
				},
 | 
			
		||||
				yAxis: {
 | 
			
		||||
					type: 'value',
 | 
			
		||||
                    name: '合格率',
 | 
			
		||||
                    nameLocation: 'end',
 | 
			
		||||
                    nameTextStyle: {
 | 
			
		||||
                        fontSize: 14,
 | 
			
		||||
                        align: 'right'
 | 
			
		||||
                    },
 | 
			
		||||
                    nameGap: 26
 | 
			
		||||
					name: '合格率',
 | 
			
		||||
					nameLocation: 'end',
 | 
			
		||||
					nameTextStyle: {
 | 
			
		||||
						fontSize: 14,
 | 
			
		||||
						align: 'right',
 | 
			
		||||
					},
 | 
			
		||||
					nameGap: 26,
 | 
			
		||||
				},
 | 
			
		||||
				series: [
 | 
			
		||||
					{
 | 
			
		||||
 
 | 
			
		||||
@@ -81,13 +81,12 @@ export default {
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			tableProps: [
 | 
			
		||||
				{ width: 128, prop: 'productionLine', label: '产线', align: 'center' },
 | 
			
		||||
				{ width: 128, prop: 'workshopSection', label: '工段', align: 'center' },
 | 
			
		||||
				{ width: 128, prop: 'equipment', label: '设备名称', align: 'center' },
 | 
			
		||||
				{ width: 128, prop: 'productionLine', label: '产线' },
 | 
			
		||||
				{ width: 128, prop: 'workshopSection', label: '工段' },
 | 
			
		||||
				{ width: 128, prop: 'equipment', label: '设备名称' },
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'alarmGrade',
 | 
			
		||||
					label: '报警级别',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					filter: publicFormatter(this.DICT_TYPE.EQU_ALARM_LEVEL),
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
@@ -96,11 +95,11 @@ export default {
 | 
			
		||||
					width: 180,
 | 
			
		||||
					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
			
		||||
				},
 | 
			
		||||
				{ prop: 'alarmContent', label: '报警内容', align: 'center' },
 | 
			
		||||
				{ prop: 'alarmContent', label: '报警内容' },
 | 
			
		||||
				// {
 | 
			
		||||
				// 	_action: 'equipment-group-show-alert',
 | 
			
		||||
				// 	label: '报警',
 | 
			
		||||
				// 	align: 'center',
 | 
			
		||||
				// 	,
 | 
			
		||||
				// 	subcomponent: {
 | 
			
		||||
				// 		props: ['injectData'],
 | 
			
		||||
				// 		render: function (h) {
 | 
			
		||||
@@ -166,7 +165,7 @@ export default {
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
    /** 重写 basicPageMixin 里的 handleSearchBarBtnClick */
 | 
			
		||||
		/** 重写 basicPageMixin 里的 handleSearchBarBtnClick */
 | 
			
		||||
		handleSearchBarBtnClick(btn) {
 | 
			
		||||
			// 仅查询一种情况
 | 
			
		||||
			this.queryParams.createTime = btn.createTime;
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,9 @@
 | 
			
		||||
					" />
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div v-else style="margin-top: 20px; color: #c7c7c7; text-align: center;">暂无数据</div>
 | 
			
		||||
		<div v-else style="margin-top: 20px; color: #c7c7c7; text-align: center">
 | 
			
		||||
			暂无数据
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
@@ -139,19 +141,16 @@ export default {
 | 
			
		||||
					width: 48,
 | 
			
		||||
					prop: 'index',
 | 
			
		||||
					label: '序号',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					width: 160,
 | 
			
		||||
					prop: 'time',
 | 
			
		||||
					label: '时间',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					width: 200,
 | 
			
		||||
					prop: 'plcCode',
 | 
			
		||||
					label: 'PLC编码',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
			];
 | 
			
		||||
			const firstLineData = {
 | 
			
		||||
@@ -162,7 +161,6 @@ export default {
 | 
			
		||||
			otherList.forEach((item) => {
 | 
			
		||||
				props.push({
 | 
			
		||||
					label: item.name,
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					prop: item.name,
 | 
			
		||||
					width: 128,
 | 
			
		||||
				});
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ export default {
 | 
			
		||||
				grid: {
 | 
			
		||||
					top: 64,
 | 
			
		||||
					left: 56,
 | 
			
		||||
					right: 24,
 | 
			
		||||
					right: 64,
 | 
			
		||||
					bottom: 56,
 | 
			
		||||
				},
 | 
			
		||||
				title: {
 | 
			
		||||
@@ -64,6 +64,10 @@ export default {
 | 
			
		||||
							color: '#ccc',
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					name: '数量',
 | 
			
		||||
					nameTextStyle: {
 | 
			
		||||
						fontSize: 14,
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				series: [
 | 
			
		||||
					{
 | 
			
		||||
 
 | 
			
		||||
@@ -197,11 +197,11 @@ export default {
 | 
			
		||||
				// },
 | 
			
		||||
			],
 | 
			
		||||
			tableProps: [
 | 
			
		||||
				{ prop: 'lineName', label: '产线', align: 'center' },
 | 
			
		||||
				{ prop: 'sectionName', label: '工段', align: 'center' },
 | 
			
		||||
				{ prop: 'externalCode', label: '设备编码', align: 'center' },
 | 
			
		||||
				{ prop: 'equipmentName', label: '设备名称', align: 'center' },
 | 
			
		||||
				{ prop: 'totalQuantity', label: '加工数量', align: 'center' },
 | 
			
		||||
				{ prop: 'lineName', label: '产线',  },
 | 
			
		||||
				{ prop: 'sectionName', label: '工段',  },
 | 
			
		||||
				{ prop: 'externalCode', label: '设备编码',  },
 | 
			
		||||
				{ prop: 'equipmentName', label: '设备名称',  },
 | 
			
		||||
				{ prop: 'totalQuantity', label: '加工数量',  },
 | 
			
		||||
			],
 | 
			
		||||
			mode: 'table', // table | graph
 | 
			
		||||
			queryParams: {
 | 
			
		||||
 
 | 
			
		||||
@@ -12,15 +12,7 @@
 | 
			
		||||
			ref="search-bar" />
 | 
			
		||||
		<el-skeleton v-if="initing" :rows="6" animated />
 | 
			
		||||
		<div v-else>
 | 
			
		||||
			<div
 | 
			
		||||
				v-if="noData"
 | 
			
		||||
				style="
 | 
			
		||||
					height: 240px;
 | 
			
		||||
					background: url(../../../assets/images/no-data-bg.png) 100% / contain
 | 
			
		||||
						no-repeat;
 | 
			
		||||
				">
 | 
			
		||||
				没有数据
 | 
			
		||||
			</div>
 | 
			
		||||
			<div v-if="noData" class="no-data">没有数据</div>
 | 
			
		||||
			<base-table
 | 
			
		||||
				v-else
 | 
			
		||||
				:span-method="mergeColumnHandler"
 | 
			
		||||
@@ -63,24 +55,22 @@ export default {
 | 
			
		||||
			} = item;
 | 
			
		||||
 | 
			
		||||
			const props = [
 | 
			
		||||
				{ prop: 'productLine', label: '产线', align: 'center' },
 | 
			
		||||
				{ prop: 'specification', label: '规格', align: 'center' },
 | 
			
		||||
				{ prop: 'equipmentName', label: '设备', align: 'center' },
 | 
			
		||||
				{ prop: 'totalQuantity', label: '生产总数', align: 'center' },
 | 
			
		||||
				{ prop: 'productLine', label: '产线' },
 | 
			
		||||
				{ prop: 'specification', label: '规格' },
 | 
			
		||||
				{ prop: 'equipmentName', label: '设备' },
 | 
			
		||||
				{ prop: 'totalQuantity', label: '生产总数' },
 | 
			
		||||
			];
 | 
			
		||||
 | 
			
		||||
			for (const key of Object.keys(hourData).sort()) {
 | 
			
		||||
				const subprop = {
 | 
			
		||||
					label: key,
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					children: [
 | 
			
		||||
						{ prop: key + '__in', label: '进数据', align: 'center' },
 | 
			
		||||
						{ prop: key + '__out', label: '出数据', align: 'center' },
 | 
			
		||||
						{ prop: key + '__nok', label: '报废数据', align: 'center' },
 | 
			
		||||
						{ prop: key + '__in', label: '进数据' },
 | 
			
		||||
						{ prop: key + '__out', label: '出数据' },
 | 
			
		||||
						{ prop: key + '__nok', label: '报废数据' },
 | 
			
		||||
						{
 | 
			
		||||
							prop: key + '__ratio',
 | 
			
		||||
							label: '报废率',
 | 
			
		||||
							align: 'center',
 | 
			
		||||
							filter: (val) => (val != null ? val + ' %' : '-'),
 | 
			
		||||
						},
 | 
			
		||||
					],
 | 
			
		||||
@@ -197,4 +187,16 @@ pre {
 | 
			
		||||
code {
 | 
			
		||||
	font-family: 'IntelOne Mono', 'Ubuntu', 'Courier New', Courier, monospace;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.no-data {
 | 
			
		||||
	display: grid;
 | 
			
		||||
	place-content: center;
 | 
			
		||||
	padding-top: 180px;
 | 
			
		||||
	color: #ccc;
 | 
			
		||||
	font-size: 14px;
 | 
			
		||||
	letter-spacing: 2px;
 | 
			
		||||
	height: 30vh;
 | 
			
		||||
	background: url(../../../assets/images/no-data-bg.png) 50% 50% / contain
 | 
			
		||||
		no-repeat;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -74,28 +74,24 @@ export default {
 | 
			
		||||
					width: 128,
 | 
			
		||||
					prop: 'equipmentName',
 | 
			
		||||
					label: '设备名称',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					width: 128,
 | 
			
		||||
					prop: 'equipmentCode',
 | 
			
		||||
					label: '设备编码',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{ width: 128, prop: 'inQuantity', label: '投入数', align: 'center' },
 | 
			
		||||
				{ width: 128, prop: 'outQuantity', label: '产出数', align: 'center' },
 | 
			
		||||
				{ width: 128, prop: 'inQuantity', label: '投入数' },
 | 
			
		||||
				{ width: 128, prop: 'outQuantity', label: '产出数' },
 | 
			
		||||
				{
 | 
			
		||||
					width: 128,
 | 
			
		||||
					prop: 'run',
 | 
			
		||||
					label: '是否运行',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					filter: (val) => (val != null ? (val ? '是' : '否') : '-'),
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					width: 128,
 | 
			
		||||
					prop: 'status',
 | 
			
		||||
					label: '状态',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					filter: (val) =>
 | 
			
		||||
						val != null ? ['正常', '计划停机', '故障'][val] : '-',
 | 
			
		||||
				},
 | 
			
		||||
@@ -103,7 +99,6 @@ export default {
 | 
			
		||||
					width: 128,
 | 
			
		||||
					prop: 'error',
 | 
			
		||||
					label: '是否故障',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					filter: (val) => (val != null ? (val ? '是' : '否') : '-'),
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
@@ -121,7 +116,6 @@ export default {
 | 
			
		||||
				{
 | 
			
		||||
					_action: 'params-monitor',
 | 
			
		||||
					label: '参数监控',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					subcomponent: {
 | 
			
		||||
						props: ['injectData'],
 | 
			
		||||
						render: function (h) {
 | 
			
		||||
 
 | 
			
		||||
@@ -176,40 +176,36 @@ export default {
 | 
			
		||||
					width: 128,
 | 
			
		||||
					prop: 'productionName',
 | 
			
		||||
					label: '产线',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					width: 128,
 | 
			
		||||
					prop: 'sectionName',
 | 
			
		||||
					label: '工段',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					width: 128,
 | 
			
		||||
					prop: 'inspectionDetContent',
 | 
			
		||||
					label: '检测内容',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					width: 160,
 | 
			
		||||
					prop: 'buttonId',
 | 
			
		||||
					label: '按钮盒识别码',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				// {
 | 
			
		||||
				// 	width: 256,
 | 
			
		||||
				// 	prop: 'productionId',
 | 
			
		||||
				// 	label: '按钮盒所在产线ID',
 | 
			
		||||
				// 	align: 'center',
 | 
			
		||||
				// 	,
 | 
			
		||||
				// },
 | 
			
		||||
				// {
 | 
			
		||||
				// 	width: 256,
 | 
			
		||||
				// 	prop: 'sectionId',
 | 
			
		||||
				// 	label: '按钮盒所在工段ID',
 | 
			
		||||
				// 	align: 'center',
 | 
			
		||||
				// 	,
 | 
			
		||||
				// },
 | 
			
		||||
				{ width: 90, prop: 'keyValue', label: '按钮值', align: 'center' },
 | 
			
		||||
				{ width: 128, prop: 'model', label: '按钮盒模式', align: 'center' },
 | 
			
		||||
				{ width: 90, prop: 'keyValue', label: '按钮值' },
 | 
			
		||||
				{ width: 128, prop: 'model', label: '按钮盒模式' },
 | 
			
		||||
			],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
@@ -220,13 +216,13 @@ export default {
 | 
			
		||||
			// 搜索框需要的 keys, 与上面 queryParams 的除 pageNo, pageSize 之外的 key 一一对应
 | 
			
		||||
			searchBarKeys: ['inspectionDetContent'],
 | 
			
		||||
			form: {
 | 
			
		||||
				id: undefined,
 | 
			
		||||
				inspectionDetId: undefined,
 | 
			
		||||
				inspectionDetContent: undefined,
 | 
			
		||||
				productionId: undefined,
 | 
			
		||||
				sectionId: undefined,
 | 
			
		||||
				model: undefined,
 | 
			
		||||
				keyValue: undefined,
 | 
			
		||||
				id: null,
 | 
			
		||||
				inspectionDetId: null,
 | 
			
		||||
				inspectionDetContent: null,
 | 
			
		||||
				productionId: null,
 | 
			
		||||
				sectionId: null,
 | 
			
		||||
				model: null,
 | 
			
		||||
				keyValue: null,
 | 
			
		||||
			},
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
@@ -247,13 +243,13 @@ export default {
 | 
			
		||||
		/** 表单重置 */
 | 
			
		||||
		reset() {
 | 
			
		||||
			this.form = {
 | 
			
		||||
				id: undefined,
 | 
			
		||||
				inspectionDetId: undefined,
 | 
			
		||||
				inspectionDetContent: undefined,
 | 
			
		||||
				productionId: undefined,
 | 
			
		||||
				sectionId: undefined,
 | 
			
		||||
				model: undefined,
 | 
			
		||||
				keyValue: undefined,
 | 
			
		||||
				id: null,
 | 
			
		||||
				inspectionDetId: null,
 | 
			
		||||
				inspectionDetContent: null,
 | 
			
		||||
				productionId: null,
 | 
			
		||||
				sectionId: null,
 | 
			
		||||
				model: null,
 | 
			
		||||
				keyValue: null,
 | 
			
		||||
			};
 | 
			
		||||
			this.resetForm('form');
 | 
			
		||||
		},
 | 
			
		||||
 
 | 
			
		||||
@@ -172,10 +172,10 @@ export default {
 | 
			
		||||
					width: 180,
 | 
			
		||||
					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
			
		||||
				},
 | 
			
		||||
				{ prop: 'typeName', label: '类型名称', align: 'center' },
 | 
			
		||||
				{ prop: 'content', label: '检测内容', align: 'center' },
 | 
			
		||||
				{ prop: 'code', label: '检测编码', align: 'center' },
 | 
			
		||||
				{ prop: 'remark', label: '备注', align: 'center' },
 | 
			
		||||
				{ prop: 'typeName', label: '类型名称',  },
 | 
			
		||||
				{ prop: 'content', label: '检测内容',  },
 | 
			
		||||
				{ prop: 'code', label: '检测编码',  },
 | 
			
		||||
				{ prop: 'remark', label: '备注',  },
 | 
			
		||||
			],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
 
 | 
			
		||||
@@ -106,9 +106,9 @@ export default {
 | 
			
		||||
					width: 180,
 | 
			
		||||
					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
			
		||||
				},
 | 
			
		||||
				{ prop: 'name', label: '检测类型名称', align: 'center' },
 | 
			
		||||
				{ prop: 'code', label: '检测类型编码', align: 'center' },
 | 
			
		||||
				{ prop: 'remark', label: '备注', align: 'center' },
 | 
			
		||||
				{ prop: 'name', label: '检测类型名称' },
 | 
			
		||||
				{ prop: 'code', label: '检测类型编码' },
 | 
			
		||||
				{ prop: 'remark', label: '备注' },
 | 
			
		||||
				// {
 | 
			
		||||
				// 	label: '操作',
 | 
			
		||||
				// 	alignt: 'center',
 | 
			
		||||
@@ -321,7 +321,7 @@ export default {
 | 
			
		||||
		handleDelete(row) {
 | 
			
		||||
			const id = row.id;
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除质量检测类型基础编号为"' + id + '"的数据项?')
 | 
			
		||||
				.confirm('是否确认删除该质量检测类型?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return deleteQualityInspectionType(id);
 | 
			
		||||
				})
 | 
			
		||||
 
 | 
			
		||||
@@ -213,32 +213,27 @@ export default {
 | 
			
		||||
					width: 128,
 | 
			
		||||
					prop: 'inspectionDetContent',
 | 
			
		||||
					label: '检测内容',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					// width: 128,
 | 
			
		||||
					prop: 'lineName',
 | 
			
		||||
					label: '产线',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					// width: 128,
 | 
			
		||||
					prop: 'checkPerson',
 | 
			
		||||
					label: '检测人员',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					// width: 160,
 | 
			
		||||
					prop: 'checkTime',
 | 
			
		||||
					label: '检测时间',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					width: 90,
 | 
			
		||||
					prop: 'source',
 | 
			
		||||
					label: '来源',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					filter: (val) => ['未知', '手动', '自动'][val],
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
 
 | 
			
		||||
@@ -56,7 +56,6 @@ export default {
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'inspectionContent',
 | 
			
		||||
					label: '检测内容',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
		};
 | 
			
		||||
 
 | 
			
		||||
@@ -35,27 +35,22 @@ export default {
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'lineName',
 | 
			
		||||
					label: '产线',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'sumUp',
 | 
			
		||||
					label: '上片总数',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'sumDown',
 | 
			
		||||
					label: '下片总数',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'sumCheck',
 | 
			
		||||
					label: '检测总数',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					prop: 'scrapRatio',
 | 
			
		||||
					label: '比例(%)',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
		};
 | 
			
		||||
 
 | 
			
		||||
@@ -171,20 +171,17 @@ export default {
 | 
			
		||||
					// width: 160,
 | 
			
		||||
					prop: 'inspectionContent',
 | 
			
		||||
					label: '检测内容',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				...this.dynamicProps,
 | 
			
		||||
				{
 | 
			
		||||
					// width: 128,
 | 
			
		||||
					prop: 'sumInput',
 | 
			
		||||
					label: '检测类型总数',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					// width: 128,
 | 
			
		||||
					prop: 'ratio',
 | 
			
		||||
					label: '比例',
 | 
			
		||||
					align: 'center',
 | 
			
		||||
					// subcomponent: {
 | 
			
		||||
					// 	name: 'TextOnly',
 | 
			
		||||
					// 	props: {
 | 
			
		||||
@@ -381,47 +378,47 @@ export default {
 | 
			
		||||
	// 	width: 128,
 | 
			
		||||
	// 	prop: 'line1',
 | 
			
		||||
	// 	label: '产线1',
 | 
			
		||||
	// 	align: 'center',
 | 
			
		||||
	// 	,
 | 
			
		||||
	// },
 | 
			
		||||
	// {
 | 
			
		||||
	// 	width: 128,
 | 
			
		||||
	// 	prop: 'line2',
 | 
			
		||||
	// 	label: '产线2',
 | 
			
		||||
	// 	align: 'center',
 | 
			
		||||
	// 	,
 | 
			
		||||
	// },
 | 
			
		||||
	// {
 | 
			
		||||
	// 	width: 128,
 | 
			
		||||
	// 	prop: 'line3',
 | 
			
		||||
	// 	label: '产线3',
 | 
			
		||||
	// 	align: 'center',
 | 
			
		||||
	// 	,
 | 
			
		||||
	// },
 | 
			
		||||
	// {
 | 
			
		||||
	// 	width: 128,
 | 
			
		||||
	// 	prop: 'line4',
 | 
			
		||||
	// 	label: '产线4',
 | 
			
		||||
	// 	align: 'center',
 | 
			
		||||
	// 	,
 | 
			
		||||
	// },
 | 
			
		||||
	// {
 | 
			
		||||
	// 	width: 128,
 | 
			
		||||
	// 	prop: 'line5',
 | 
			
		||||
	// 	label: '产线5',
 | 
			
		||||
	// 	align: 'center',
 | 
			
		||||
	// 	,
 | 
			
		||||
	// },
 | 
			
		||||
	// {
 | 
			
		||||
	// 	width: 128,
 | 
			
		||||
	// 	prop: 'line6',
 | 
			
		||||
	// 	label: '产线6',
 | 
			
		||||
	// 	align: 'center',
 | 
			
		||||
	// 	,
 | 
			
		||||
	// },
 | 
			
		||||
	// {
 | 
			
		||||
	// 	width: 128,
 | 
			
		||||
	// 	prop: 'line7',
 | 
			
		||||
	// 	label: '产线7',
 | 
			
		||||
	// 	align: 'center',
 | 
			
		||||
	// 	,
 | 
			
		||||
	// },
 | 
			
		||||
	// {
 | 
			
		||||
	// 	width: 128,
 | 
			
		||||
	// 	prop: 'line8',
 | 
			
		||||
	// 	label: '产线8',
 | 
			
		||||
	// 	align: 'center',
 | 
			
		||||
	// 	,
 | 
			
		||||
	// }, -->
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user