Merge remote-tracking branch 'origin/0.8.X' into 0.8.X
This commit is contained in:
@@ -41,11 +41,11 @@
|
||||
@include colorBtn($yellow)
|
||||
}
|
||||
|
||||
.pan-btn {
|
||||
.el-button.pan-btn {
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
padding: 14px 36px;
|
||||
border-radius: 8px;
|
||||
padding: 4px !important;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
outline: none;
|
||||
transition: 600ms ease all;
|
||||
@@ -81,7 +81,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.custom-button {
|
||||
.el-button.custom-button {
|
||||
display: inline-block;
|
||||
line-height: 1;
|
||||
white-space: nowrap;
|
||||
@@ -93,7 +93,7 @@
|
||||
box-sizing: border-box;
|
||||
outline: 0;
|
||||
margin: 0;
|
||||
padding: 10px 15px;
|
||||
padding: 2px !important;
|
||||
font-size: 14px;
|
||||
border-radius: 4px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,148 @@
|
||||
// cover some element-ui styles
|
||||
/* 基础变量定义 - 工业风浅色配色 */
|
||||
:root {
|
||||
--secondary-color: #78909c; /* 辅助色 */
|
||||
--accent-color: #e67e22; /* 强调色,用于突出按钮和重要操作 */
|
||||
--background-color: #f5f7fa; /* 浅色背景 */
|
||||
--card-bg-color: #ffffff; /* 卡片背景 */
|
||||
--border-color: #cfd8dc; /* 边框颜色 */
|
||||
--text-primary: #263238; /* 主要文本色 */
|
||||
--text-secondary: #546e7a; /* 次要文本色 */
|
||||
--spacing-sm: 4px;
|
||||
--spacing-md: 8px;
|
||||
--spacing-lg: 16px;
|
||||
--spacing-base: 8px; /* 基础间距,表单、表格统一用这个值做倍数调整 */
|
||||
--form-item-margin: var(--spacing-base); /* 表单项底部间距 */
|
||||
--btn-height: 20px; /* 按钮统一高度 */
|
||||
}
|
||||
|
||||
/* 全局样式调整 */
|
||||
body {
|
||||
background-color: var(--background-color);
|
||||
color: var(--text-primary);
|
||||
font-size: 14px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* 面包屑导航优化 */
|
||||
.el-breadcrumb {
|
||||
padding: var(--spacing-md) 0;
|
||||
}
|
||||
|
||||
.el-breadcrumb__inner,
|
||||
.el-breadcrumb__inner a {
|
||||
font-weight: 400 !important;
|
||||
color: var(--text-secondary) !important;
|
||||
}
|
||||
|
||||
.el-breadcrumb__separator {
|
||||
margin: 0 var(--spacing-sm);
|
||||
color: var(--border-color);
|
||||
}
|
||||
|
||||
/* 按钮样式优化 */
|
||||
.el-button {
|
||||
padding: 6px 12px;
|
||||
border-radius: 2px;
|
||||
font-size: 13px;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.el-button--success {
|
||||
background-color: #2ecc71;
|
||||
border-color: #2ecc71;
|
||||
}
|
||||
|
||||
.el-button--warning {
|
||||
background-color: var(--accent-color);
|
||||
border-color: var(--accent-color);
|
||||
}
|
||||
|
||||
.el-button--mini {
|
||||
padding: 2px 4px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/* 卡片组件优化 */
|
||||
.el-card {
|
||||
border-radius: 2px;
|
||||
border: 1px solid var(--border-color);
|
||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.el-card__header {
|
||||
padding: var(--spacing-md) var(--spacing-lg);
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
background-color: #f9fafb;
|
||||
}
|
||||
|
||||
.el-card__body {
|
||||
padding: var(--spacing-lg);
|
||||
}
|
||||
|
||||
/* 表格样式优化 - 紧凑布局 */
|
||||
.el-table {
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 2px;
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
.el-table th,
|
||||
.el-table td {
|
||||
padding: 2px 4px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.el-table--border th,
|
||||
.el-table--border td {
|
||||
border-right: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
.el-table--border thead tr:last-child th {
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
/* 输入框样式优化 */
|
||||
.el-input__inner,
|
||||
.el-textarea__inner {
|
||||
padding: 7px 11px;
|
||||
border-radius: 2px;
|
||||
border: 1px solid var(--border-color);
|
||||
font-size: 13px;
|
||||
transition: border-color 0.2s ease;
|
||||
}
|
||||
|
||||
.el-input__inner:focus,
|
||||
.el-textarea__inner:focus {
|
||||
border-color: var(--primary-color);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/* 下拉菜单优化 */
|
||||
.el-dropdown-menu {
|
||||
border-radius: 2px;
|
||||
border: 1px solid var(--border-color);
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
padding: var(--spacing-sm) 0;
|
||||
}
|
||||
|
||||
.el-dropdown-menu__item {
|
||||
padding: 6px 16px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.el-dropdown-menu a {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* 标签样式优化 */
|
||||
.el-tag {
|
||||
padding: 2px 8px;
|
||||
border-radius: 2px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/* 上传组件优化 */
|
||||
.el-upload {
|
||||
input[type="file"] {
|
||||
display: none !important;
|
||||
@@ -15,12 +153,69 @@
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cell {
|
||||
.el-tag {
|
||||
margin-right: 0px;
|
||||
.upload-container {
|
||||
.el-upload {
|
||||
width: 100%;
|
||||
|
||||
.el-upload-dragger {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
border-radius: 2px;
|
||||
border: 2px dashed var(--border-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 对话框样式优化 */
|
||||
.el-dialog {
|
||||
transform: none;
|
||||
left: 0;
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
border-radius: 2px;
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.el-dialog__header {
|
||||
padding: var(--spacing-lg);
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
.el-dialog__body {
|
||||
padding: var(--spacing-lg);
|
||||
}
|
||||
|
||||
.el-dialog__footer {
|
||||
padding: var(--spacing-md) var(--spacing-lg);
|
||||
border-top: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
/* 日期选择器优化 */
|
||||
.el-range-editor.el-input__inner {
|
||||
display: inline-flex !important;
|
||||
}
|
||||
|
||||
.el-range-separator {
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
/* 菜单样式优化 */
|
||||
.el-menu {
|
||||
border-right: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
.el-menu-item,
|
||||
.el-submenu__title {
|
||||
padding: 0 16px !important;
|
||||
height: 40px !important;
|
||||
line-height: 40px !important;
|
||||
}
|
||||
|
||||
.el-menu--collapse > div > .el-submenu > .el-submenu__title .el-submenu__icon-arrow {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* 自定义工具类 - 紧凑布局 */
|
||||
.small-padding {
|
||||
.cell {
|
||||
padding-left: 5px;
|
||||
@@ -39,54 +234,127 @@
|
||||
.cell {
|
||||
padding: 0 10px;
|
||||
text-align: center;
|
||||
|
||||
.el-tag {
|
||||
margin-right: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// to fixed https://github.com/ElemeFE/element/issues/2461
|
||||
.el-dialog {
|
||||
transform: none;
|
||||
left: 0;
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
.el-tag {
|
||||
margin-right: 0px;
|
||||
padding: 1px !important;
|
||||
height: auto !important;
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
// refine element ui upload
|
||||
.upload-container {
|
||||
.el-upload {
|
||||
width: 100%;
|
||||
|
||||
.el-upload-dragger {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
}
|
||||
.cell {
|
||||
.el-tag {
|
||||
margin-right: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
// dropdown
|
||||
.el-dropdown-menu {
|
||||
a {
|
||||
display: block
|
||||
/* 表单样式优化 */
|
||||
.el-form-item {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.el-form-item__label {
|
||||
padding-right: 10px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
/* 分页组件优化 */
|
||||
.el-pagination {
|
||||
margin-top: 16px;
|
||||
padding: 8px 0;
|
||||
}
|
||||
|
||||
.el-pager li {
|
||||
margin: 0 2px;
|
||||
min-width: 30px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
div.pagination-container {
|
||||
background-color: transparent !important;
|
||||
padding: 0 !important;
|
||||
|
||||
.el-pagination {
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
// fix date-picker ui bug in filter-item
|
||||
.el-range-editor.el-input__inner {
|
||||
display: inline-flex !important;
|
||||
.el-table--medium .el-table__cell {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
// to fix el-date-picker css style
|
||||
.el-range-separator {
|
||||
box-sizing: content-box;
|
||||
.el-table--mini .el-table__cell {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.el-menu--collapse
|
||||
> div
|
||||
> .el-submenu
|
||||
> .el-submenu__title
|
||||
.el-submenu__icon-arrow {
|
||||
display: none;
|
||||
.el-table .el-table__header-wrapper th,
|
||||
.el-table .el-table__fixed-header-wrapper th {
|
||||
height: auto;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
/* 【优化】表单项整体布局:压缩间距、对齐标签 */
|
||||
.el-form-item {
|
||||
margin-bottom: var(--form-item-margin) !important;
|
||||
/* 让标签和表格列头对齐,可根据实际需求微调 */
|
||||
label-align: right;
|
||||
}
|
||||
|
||||
/* 【优化】表单标签:缩小文字大小,匹配表格列头 */
|
||||
.el-form-item__label {
|
||||
font-size: 13px;
|
||||
padding-right: var(--spacing-base);
|
||||
}
|
||||
|
||||
/* 【优化】表单输入框:统一高度、压缩内边距 */
|
||||
.el-input__inner,
|
||||
.el-textarea__inner,
|
||||
.el-select .el-input__inner {
|
||||
height: var(--btn-height);
|
||||
padding: 0 var(--spacing-base);
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
/* 【优化】表格与表单的间距:避免表单和表格贴太近 */
|
||||
.el-table {
|
||||
margin-top: calc(var(--form-item-margin) * 2);
|
||||
}
|
||||
|
||||
/* 【补充】搜索按钮组:如果是 inline 布局,强制对齐 */
|
||||
.search-form .el-form-item {
|
||||
display: inline-block;
|
||||
margin-right: var(--spacing-base);
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* 【补充】适配原有工具类,让紧凑度更统一 */
|
||||
.small-padding .cell {
|
||||
padding-left: calc(var(--spacing-base)/2);
|
||||
padding-right: calc(var(--spacing-base)/2);
|
||||
}
|
||||
|
||||
.el-input {
|
||||
height: var(--btn-height);
|
||||
}
|
||||
|
||||
|
||||
|
||||
.el-input--small .el-input__inner,
|
||||
.el-input--medium .el-input__inner {
|
||||
height: var(--btn-height);
|
||||
line-height: var(--btn-height);
|
||||
}
|
||||
|
||||
// .el-input-number--medium .el-input-number__increase,
|
||||
// .el-input-number--medium .el-input-number__decrease {
|
||||
// height: calc(var(--btn-height) - 2px);
|
||||
// line-height: calc(var(--btn-height) - 2px);
|
||||
// }
|
||||
|
||||
.el-input--medium .el-input__icon {
|
||||
line-height: var(--btn-height);
|
||||
}
|
||||
@@ -86,6 +86,7 @@
|
||||
|
||||
& .theme-dark .is-active > .el-submenu__title {
|
||||
color: $base-menu-color-active !important;
|
||||
// border-right: 3px solid $base-menu-color-active !important;
|
||||
}
|
||||
|
||||
& .nest-menu .el-submenu>.el-submenu__title,
|
||||
@@ -225,3 +226,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.el-menu-item.is-active {
|
||||
border-left: 4px solid !important;
|
||||
}
|
||||
@@ -65,6 +65,7 @@ export default {
|
||||
font-size: 14px;
|
||||
line-height: 50px;
|
||||
margin-left: 8px;
|
||||
padding: 0;
|
||||
|
||||
.no-redirect {
|
||||
color: #97a8be;
|
||||
|
||||
@@ -15,23 +15,23 @@
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="1" :max="30" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 2" :max="31" /> 日
|
||||
<el-input-number :controls=false controls-position="right" v-model='cycle01' :min="1" :max="30" /> -
|
||||
<el-input-number :controls=false controls-position="right" v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 2" :max="31" /> 日
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="1" :max="30" /> 号开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="31 - average01 || 1" /> 日执行一次
|
||||
<el-input-number :controls=false controls-position="right" v-model='average01' :min="1" :max="30" /> 号开始,每
|
||||
<el-input-number :controls=false controls-position="right" v-model='average02' :min="1" :max="31 - average01 || 1" /> 日执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="5">
|
||||
每月
|
||||
<el-input-number v-model='workday' :min="1" :max="31" /> 号最近的那个工作日
|
||||
<el-input-number :controls=false controls-position="right" v-model='workday' :min="1" :max="31" /> 号最近的那个工作日
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="0" :max="22" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="23" /> 小时
|
||||
<el-input-number :controls=false controls-position="right" v-model='cycle01' :min="0" :max="22" /> -
|
||||
<el-input-number :controls=false controls-position="right" v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="23" /> 小时
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="0" :max="22" /> 小时开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="23 - average01 || 0" /> 小时执行一次
|
||||
<el-input-number :controls=false controls-position="right" v-model='average01' :min="0" :max="22" /> 小时开始,每
|
||||
<el-input-number :controls=false controls-position="right" v-model='average02' :min="1" :max="23 - average01 || 0" /> 小时执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="0" :max="58" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> 分钟
|
||||
<el-input-number :controls=false controls-position="right" v-model='cycle01' :min="0" :max="58" /> -
|
||||
<el-input-number :controls=false controls-position="right" v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> 分钟
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="0" :max="58" /> 分钟开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="59 - average01 || 0" /> 分钟执行一次
|
||||
<el-input-number :controls=false controls-position="right" v-model='average01' :min="0" :max="58" /> 分钟开始,每
|
||||
<el-input-number :controls=false controls-position="right" v-model='average02' :min="1" :max="59 - average01 || 0" /> 分钟执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="1" :max="11" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 2" :max="12" /> 月
|
||||
<el-input-number :controls=false controls-position="right" v-model='cycle01' :min="1" :max="11" /> -
|
||||
<el-input-number :controls=false controls-position="right" v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 2" :max="12" /> 月
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="1" :max="11" /> 月开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="12 - average01 || 0" /> 月月执行一次
|
||||
<el-input-number :controls=false controls-position="right" v-model='average01' :min="1" :max="11" /> 月开始,每
|
||||
<el-input-number :controls=false controls-position="right" v-model='average02' :min="1" :max="12 - average01 || 0" /> 月月执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="0" :max="58" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> 秒
|
||||
<el-input-number :controls=false controls-position="right" v-model='cycle01' :min="0" :max="58" /> -
|
||||
<el-input-number :controls=false controls-position="right" v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> 秒
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="0" :max="58" /> 秒开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="59 - average01 || 0" /> 秒执行一次
|
||||
<el-input-number :controls=false controls-position="right" v-model='average01' :min="0" :max="58" /> 秒开始,每
|
||||
<el-input-number :controls=false controls-position="right" v-model='average02' :min="1" :max="59 - average01 || 0" /> 秒执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
第
|
||||
<el-input-number v-model='average01' :min="1" :max="4" /> 周的星期
|
||||
<el-input-number :controls=false controls-position="right" v-model='average01' :min="1" :max="4" /> 周的星期
|
||||
<el-select clearable v-model="average02">
|
||||
<el-option v-for="(item,index) of weekList" :key="index" :label="item.value" :value="item.key">{{item.value}}</el-option>
|
||||
</el-select>
|
||||
|
||||
@@ -15,16 +15,16 @@
|
||||
<el-form-item>
|
||||
<el-radio :label="3" v-model='radioValue'>
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min='fullYear' :max="2098" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : fullYear + 1" :max="2099" />
|
||||
<el-input-number :controls=false controls-position="right" v-model='cycle01' :min='fullYear' :max="2098" /> -
|
||||
<el-input-number :controls=false controls-position="right" v-model='cycle02' :min="cycle01 ? cycle01 + 1 : fullYear + 1" :max="2099" />
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio :label="4" v-model='radioValue'>
|
||||
从
|
||||
<el-input-number v-model='average01' :min='fullYear' :max="2098"/> 年开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="2099 - average01 || fullYear" /> 年执行一次
|
||||
<el-input-number :controls=false controls-position="right" v-model='average01' :min='fullYear' :max="2098"/> 年开始,每
|
||||
<el-input-number :controls=false controls-position="right" v-model='average02' :min="1" :max="2099 - average01 || fullYear" /> 年执行一次
|
||||
</el-radio>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
@@ -128,7 +128,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
bomId: this.bomId,
|
||||
attrKey: undefined,
|
||||
attrValue: undefined,
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<el-button v-if="canAdd" @click="add" icon="el-icon-plus">未搜索到原材料,点击添加</el-button>
|
||||
<div v-else style="padding: 10px;">未搜索到原材料</div>
|
||||
</template>
|
||||
<el-option v-for="item in options" :key="item.rawMaterialId"
|
||||
<el-option v-for="item in rawMaterialList" :key="item.rawMaterialId"
|
||||
:label="`${item.rawMaterialName}(${item.rawMaterialCode})`" :value="item.rawMaterialId">
|
||||
<div class="option-label">
|
||||
<span class="material-name">{{ item.rawMaterialName }}</span>
|
||||
@@ -117,7 +117,9 @@ export default {
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.options = this.rawMaterialList;
|
||||
if (this.rawMaterialList.length < 0) {
|
||||
this.$store.dispatch('category/getRawMaterialMap')
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['rawMaterialList'])
|
||||
|
||||
@@ -47,7 +47,7 @@ export default {
|
||||
this.vendorLoading = true;
|
||||
listSupplier({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
name: query
|
||||
}).then(response => {
|
||||
this.vendorList = response.rows;
|
||||
|
||||
@@ -56,7 +56,7 @@ export default {
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
<!-- <style scoped>
|
||||
.stock-tree-card {
|
||||
height: 100%;
|
||||
border: none;
|
||||
@@ -72,4 +72,4 @@ export default {
|
||||
max-height: 80vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
</style>
|
||||
</style> -->
|
||||
|
||||
148
klp-ui/src/components/KLPUI/KLPTable/index.vue
Normal file
148
klp-ui/src/components/KLPUI/KLPTable/index.vue
Normal file
@@ -0,0 +1,148 @@
|
||||
<template>
|
||||
<div class="base-table">
|
||||
<!-- 给内部表格添加ref,方便暴露 -->
|
||||
<el-table
|
||||
ref="internalTable"
|
||||
v-bind="$attrs"
|
||||
v-on="$listeners"
|
||||
:data="data"
|
||||
:loading="loading"
|
||||
>
|
||||
<!-- 通过配置数组渲染列 -->
|
||||
<template v-for="(column, index) in columns">
|
||||
<el-table-column
|
||||
v-if="column.visible !== false"
|
||||
v-bind="column"
|
||||
>
|
||||
<!-- 列的自定义内容插槽 -->
|
||||
<template v-if="column.slot" #default="scope">
|
||||
<slot :name="column.slot" :scope="scope"></slot>
|
||||
</template>
|
||||
|
||||
<!-- 表头自定义内容 -->
|
||||
<template v-if="column.headerSlot" #header>
|
||||
<slot :name="column.headerSlot"></slot>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
|
||||
<!-- 操作列 -->
|
||||
<el-table-column
|
||||
v-if="showActionColumn"
|
||||
:label="actionColumnLabel"
|
||||
:width="actionColumnWidth"
|
||||
:fixed="actionColumnFixed"
|
||||
:align="actionColumnAlign"
|
||||
>
|
||||
<template #default="scope">
|
||||
<slot name="action" :scope="scope"></slot>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- 原生插槽,支持直接写el-table-column -->
|
||||
<slot></slot>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'BaseTable',
|
||||
props: {
|
||||
// 表格数据
|
||||
data: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
// 列配置数组
|
||||
columns: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
// 是否显示加载状态
|
||||
loading: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 是否显示操作列
|
||||
showActionColumn: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 操作列标题
|
||||
actionColumnLabel: {
|
||||
type: String,
|
||||
default: '操作'
|
||||
},
|
||||
// 操作列宽度
|
||||
actionColumnWidth: {
|
||||
type: Number,
|
||||
default: 150
|
||||
},
|
||||
// 操作列固定方式
|
||||
actionColumnFixed: {
|
||||
type: String,
|
||||
default: 'right'
|
||||
},
|
||||
// 操作列内容对齐方式
|
||||
actionColumnAlign: {
|
||||
type: String,
|
||||
default: 'center'
|
||||
}
|
||||
},
|
||||
// 暴露内部表格的方法和属性
|
||||
methods: {
|
||||
/**
|
||||
* 获取内部el-table实例
|
||||
*/
|
||||
getTableInstance() {
|
||||
return this.$refs.internalTable
|
||||
},
|
||||
|
||||
/**
|
||||
* 代理el-table的常用方法,方便直接调用
|
||||
*/
|
||||
clearSelection() {
|
||||
if (this.$refs.internalTable) {
|
||||
this.$refs.internalTable.clearSelection()
|
||||
}
|
||||
},
|
||||
|
||||
toggleRowSelection(row, selected) {
|
||||
if (this.$refs.internalTable) {
|
||||
this.$refs.internalTable.toggleRowSelection(row, selected)
|
||||
}
|
||||
},
|
||||
|
||||
toggleAllSelection() {
|
||||
if (this.$refs.internalTable) {
|
||||
this.$refs.internalTable.toggleAllSelection()
|
||||
}
|
||||
},
|
||||
|
||||
doLayout() {
|
||||
if (this.$refs.internalTable) {
|
||||
this.$refs.internalTable.doLayout()
|
||||
}
|
||||
},
|
||||
|
||||
sort(prop, order) {
|
||||
if (this.$refs.internalTable) {
|
||||
this.$refs.internalTable.sort(prop, order)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 提供一个$refs的代理,方便访问内部表格
|
||||
mounted() {
|
||||
// 可以在这里添加一些初始化逻辑
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.base-table {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
</style>
|
||||
@@ -8,6 +8,7 @@
|
||||
:page-sizes="pageSizes"
|
||||
:pager-count="pagerCount"
|
||||
:total="total"
|
||||
small
|
||||
v-bind="$attrs"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
@@ -46,7 +47,7 @@ export default {
|
||||
},
|
||||
layout: {
|
||||
type: String,
|
||||
default: 'total, sizes, prev, pager, next, jumper'
|
||||
default: 'total, sizes, prev, pager, next'
|
||||
},
|
||||
background: {
|
||||
type: Boolean,
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
planCode: null,
|
||||
planName: null,
|
||||
planType: this.planType,
|
||||
|
||||
@@ -93,7 +93,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
subjectCode: null,
|
||||
subjectName: null,
|
||||
subjectType: this.subjectType,
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
subjectCode: null,
|
||||
subjectName: null,
|
||||
subjectType: this.subjectType,
|
||||
|
||||
@@ -145,7 +145,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
machineryCode: null,
|
||||
machineryName: null,
|
||||
machineryBrand: null,
|
||||
|
||||
@@ -157,7 +157,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
machineryCode: null,
|
||||
machineryName: null,
|
||||
machineryBrand: null,
|
||||
|
||||
@@ -150,7 +150,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
userName: undefined,
|
||||
phonenumber: undefined,
|
||||
status: undefined,
|
||||
|
||||
@@ -153,7 +153,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
userName: undefined,
|
||||
phonenumber: undefined,
|
||||
status: undefined,
|
||||
|
||||
@@ -39,6 +39,7 @@ import DictTag from '@/components/DictTag'
|
||||
import VueMeta from 'vue-meta'
|
||||
// 字典数据组件
|
||||
import DictData from '@/components/DictData'
|
||||
import KLPTable from '@/components/KLPUI/KLPTable/index.vue'
|
||||
|
||||
// 全局方法挂载
|
||||
Vue.prototype.getDicts = getDicts
|
||||
@@ -60,7 +61,7 @@ Vue.component('Editor', Editor)
|
||||
Vue.component('FileUpload', FileUpload)
|
||||
Vue.component('ImageUpload', ImageUpload)
|
||||
Vue.component('ImagePreview', ImagePreview)
|
||||
|
||||
Vue.component('KLPTable', KLPTable)
|
||||
|
||||
Vue.use(vueFlvPlayer)
|
||||
Vue.use(directive)
|
||||
|
||||
@@ -65,7 +65,7 @@ export default {
|
||||
todoList: [],
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10
|
||||
pageSize: 20
|
||||
},
|
||||
dateRange: []
|
||||
}
|
||||
|
||||
@@ -243,7 +243,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
testKey: undefined,
|
||||
value: undefined,
|
||||
createTime: undefined,
|
||||
|
||||
@@ -230,7 +230,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
voucherNo: undefined,
|
||||
lineNo: undefined,
|
||||
entryDate: undefined,
|
||||
|
||||
@@ -136,7 +136,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
docNo: undefined,
|
||||
docType: undefined,
|
||||
docDate: undefined,
|
||||
|
||||
@@ -155,7 +155,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
journalDate: undefined,
|
||||
summary: undefined,
|
||||
transType: undefined,
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
<el-dialog title="付款" :visible.sync="payOpen" width="500px" append-to-body>
|
||||
<el-form ref="payForm" :model="payForm" :rules="rules" label-width="80px">
|
||||
<el-form-item label="付款金额" prop="amount">
|
||||
<el-input-number v-model="payForm.amount" :step="1.00" :precision="2" placeholder="请输入付款金额" :min="0" :max="payForm.balanceAmount" style="width: 100%;"/>
|
||||
<el-input-number :controls=false controls-position="right" v-model="payForm.amount" :step="1.00" :precision="2" placeholder="请输入付款金额" :min="0" :max="payForm.balanceAmount" style="width: 100%;"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
@@ -201,7 +201,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
supplierId: undefined,
|
||||
orderCode: undefined,
|
||||
dueDate: undefined,
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
<el-dialog title="收款" :visible.sync="receiveOpen" width="500px" append-to-body>
|
||||
<el-form ref="receiveForm" :model="receiveForm" :rules="rules" label-width="80px">
|
||||
<el-form-item label="收款金额" prop="amount">
|
||||
<el-input-number v-model="receiveForm.amount" :step="1.00" :precision="2" placeholder="请输入收款金额" :min="0" :max="receiveForm.balanceAmount" style="width: 100%;"/>
|
||||
<el-input-number :controls=false controls-position="right" v-model="receiveForm.amount" :step="1.00" :precision="2" placeholder="请输入收款金额" :min="0" :max="receiveForm.balanceAmount" style="width: 100%;"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
@@ -201,7 +201,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
customerId: undefined,
|
||||
orderCode: undefined,
|
||||
dueDate: undefined,
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
<el-col :span="8">
|
||||
<el-form-item label="频率" prop="cycleCount">
|
||||
<el-tooltip content="这里的频率指的是每隔多长周期进行一次点检或保养,例如每隔1个月进行一次点检,则频率为1 月。">
|
||||
<el-input-number :min="1" :max="99999999" :step="1" v-model="form.cycleCount" placeholder="请输入次数" />
|
||||
<el-input-number :controls=false controls-position="right" :min="1" :max="99999999" :step="1" v-model="form.cycleCount" placeholder="请输入次数" />
|
||||
</el-tooltip>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -309,7 +309,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
planCode: null,
|
||||
planName: null,
|
||||
startDate: null,
|
||||
|
||||
@@ -91,7 +91,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
planId: this.planId,
|
||||
machineryId: null,
|
||||
machineryCode: null,
|
||||
|
||||
@@ -90,7 +90,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
planId: this.planId,
|
||||
subjectId: null,
|
||||
subjectCode: null,
|
||||
|
||||
@@ -255,7 +255,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
planId: null,
|
||||
planCode: null,
|
||||
planName: null,
|
||||
|
||||
@@ -154,7 +154,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
recordId: this.recordId, subjectId: null, subjectCode: null, subjectName: null, subjectType: null, subjectContent: null, subjectStandard: null, checkStatus: null, checkResult: null, },
|
||||
// 表单参数
|
||||
form: {},
|
||||
|
||||
@@ -55,7 +55,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
},
|
||||
};
|
||||
},
|
||||
|
||||
@@ -59,7 +59,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
},
|
||||
};
|
||||
},
|
||||
|
||||
@@ -424,7 +424,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
machineryCode: null,
|
||||
machineryName: null,
|
||||
machineryBrand: null,
|
||||
|
||||
@@ -256,7 +256,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
planId: null, planCode: null, planName: null, planType: null, machineryId: null, machineryCode: null, machineryName: null, machineryBrand: null, machinerySpec: null, maintenTime: null, userId: null, userName: null, nickName: null, status: null, },
|
||||
// 表单参数
|
||||
form: {},
|
||||
|
||||
@@ -148,7 +148,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
recordId: null,
|
||||
subjectId: null,
|
||||
subjectCode: null,
|
||||
|
||||
@@ -318,7 +318,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
repairCode: null,
|
||||
repairName: null,
|
||||
machineryId: null,
|
||||
|
||||
@@ -132,7 +132,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
repairId: this.repairId,
|
||||
subjectId: null,
|
||||
subjectCode: null,
|
||||
|
||||
@@ -318,7 +318,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
equipmentCode: undefined,
|
||||
equipmentName: undefined,
|
||||
specificationModel: undefined,
|
||||
|
||||
@@ -217,7 +217,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
subjectCode: null,
|
||||
subjectName: null,
|
||||
subjectType: null,
|
||||
|
||||
@@ -252,7 +252,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
commissionNo: undefined,
|
||||
cilent: undefined,
|
||||
sampleName: undefined,
|
||||
|
||||
@@ -184,7 +184,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
taskNo: undefined,
|
||||
commissionId: undefined,
|
||||
assignedTo: undefined,
|
||||
|
||||
@@ -202,7 +202,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
commissionId: undefined,
|
||||
location: undefined,
|
||||
currentQuantity: undefined,
|
||||
|
||||
@@ -136,7 +136,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
defectName: undefined,
|
||||
},
|
||||
// 表单参数
|
||||
|
||||
@@ -99,7 +99,7 @@ export default {
|
||||
checkTaskList: [],
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
taskName: undefined,
|
||||
},
|
||||
detailOpen: false,
|
||||
|
||||
@@ -136,7 +136,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
itemName: undefined,
|
||||
},
|
||||
// 表单参数
|
||||
|
||||
@@ -173,7 +173,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
taskName: undefined,
|
||||
},
|
||||
// 表单参数
|
||||
|
||||
@@ -160,7 +160,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
ipaddr: undefined,
|
||||
userName: undefined,
|
||||
status: undefined
|
||||
|
||||
@@ -76,7 +76,7 @@ export default {
|
||||
// 表格数据
|
||||
list: [],
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
ipaddr: undefined,
|
||||
|
||||
@@ -221,7 +221,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
title: undefined,
|
||||
operName: undefined,
|
||||
businessType: undefined,
|
||||
|
||||
@@ -212,7 +212,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
configName: undefined,
|
||||
configKey: undefined,
|
||||
configType: undefined
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="显示排序" prop="orderNum">
|
||||
<el-input-number v-model="form.orderNum" controls-position="right" :min="0" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="form.orderNum" :min="0" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
<el-input v-model="form.cssClass" placeholder="请输入样式属性" />
|
||||
</el-form-item>
|
||||
<el-form-item label="显示排序" prop="dictSort">
|
||||
<el-input-number v-model="form.dictSort" controls-position="right" :min="0" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="form.dictSort" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="回显样式" prop="listClass">
|
||||
<el-select v-model="form.listClass">
|
||||
@@ -250,7 +250,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
dictName: undefined,
|
||||
dictType: undefined,
|
||||
status: undefined
|
||||
|
||||
@@ -219,7 +219,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
dictName: undefined,
|
||||
dictType: undefined,
|
||||
status: undefined
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="显示排序" prop="orderNum">
|
||||
<el-input-number v-model="form.orderNum" controls-position="right" :min="0" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="form.orderNum" :min="0" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" v-if="form.menuType != 'F'">
|
||||
|
||||
@@ -198,7 +198,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
noticeTitle: undefined,
|
||||
createBy: undefined,
|
||||
status: undefined
|
||||
|
||||
@@ -221,7 +221,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
configKey: undefined,
|
||||
bucketName: undefined,
|
||||
status: undefined,
|
||||
|
||||
@@ -233,7 +233,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
fileName: undefined,
|
||||
originalName: undefined,
|
||||
fileSuffix: undefined,
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
<el-input v-model="form.postCode" placeholder="请输入编码名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="岗位顺序" prop="postSort">
|
||||
<el-input-number v-model="form.postSort" controls-position="right" :min="0" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="form.postSort" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="岗位状态" prop="status">
|
||||
<el-radio-group v-model="form.status">
|
||||
@@ -185,7 +185,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
postCode: undefined,
|
||||
postName: undefined,
|
||||
status: undefined
|
||||
|
||||
@@ -124,7 +124,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
roleId: undefined,
|
||||
userName: undefined,
|
||||
phonenumber: undefined
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
<el-input v-model="form.roleKey" placeholder="请输入权限字符" />
|
||||
</el-form-item>
|
||||
<el-form-item label="角色顺序" prop="roleSort">
|
||||
<el-input-number v-model="form.roleSort" controls-position="right" :min="0" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="form.roleSort" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态">
|
||||
<el-radio-group v-model="form.status">
|
||||
@@ -317,7 +317,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
roleName: undefined,
|
||||
roleKey: undefined,
|
||||
status: undefined
|
||||
|
||||
@@ -79,7 +79,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
roleId: undefined,
|
||||
userName: undefined,
|
||||
phonenumber: undefined
|
||||
|
||||
@@ -57,7 +57,7 @@ export default {
|
||||
// 分页信息
|
||||
total: 0,
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
// 选中角色编号
|
||||
roleIds:[],
|
||||
// 角色信息
|
||||
|
||||
@@ -407,7 +407,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
userName: undefined,
|
||||
phonenumber: undefined,
|
||||
status: undefined,
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
<el-slider v-model="activeData.__config__.span" :max="24" :min="1" :marks="{12:''}" @change="spanChange" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="activeData.__config__.layout==='rowFormItem'&&activeData.gutter!==undefined" label="栅格间隔">
|
||||
<el-input-number v-model="activeData.gutter" :min="0" placeholder="栅格间隔" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="activeData.gutter" :min="0" placeholder="栅格间隔" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="activeData.__config__.layout==='rowFormItem'&&activeData.type!==undefined" label="布局模式">
|
||||
<el-radio-group v-model="activeData.type">
|
||||
@@ -92,7 +92,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="activeData.__config__.tag==='el-checkbox-group'" label="至少应选">
|
||||
<el-input-number
|
||||
<el-input-number :controls=false controls-position="right"
|
||||
:value="activeData.min"
|
||||
:min="0"
|
||||
placeholder="至少应选"
|
||||
@@ -100,7 +100,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="activeData.__config__.tag==='el-checkbox-group'" label="最多可选">
|
||||
<el-input-number
|
||||
<el-input-number :controls=false controls-position="right"
|
||||
:value="activeData.max"
|
||||
:min="0"
|
||||
placeholder="最多可选"
|
||||
@@ -141,25 +141,25 @@
|
||||
<el-input v-model="activeData.separator" placeholder="请输入选项分隔符" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="activeData.autosize !== undefined" label="最小行数">
|
||||
<el-input-number v-model="activeData.autosize.minRows" :min="1" placeholder="最小行数" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="activeData.autosize.minRows" :min="1" placeholder="最小行数" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="activeData.autosize !== undefined" label="最大行数">
|
||||
<el-input-number v-model="activeData.autosize.maxRows" :min="1" placeholder="最大行数" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="activeData.autosize.maxRows" :min="1" placeholder="最大行数" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="isShowMin" label="最小值">
|
||||
<el-input-number v-model="activeData.min" placeholder="最小值" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="activeData.min" placeholder="最小值" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="isShowMax" label="最大值">
|
||||
<el-input-number v-model="activeData.max" placeholder="最大值" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="activeData.max" placeholder="最大值" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="activeData.height!==undefined" label="组件高度">
|
||||
<el-input-number v-model="activeData.height" placeholder="高度" @input="changeRenderKey" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="activeData.height" placeholder="高度" @input="changeRenderKey" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="isShowStep" label="步长">
|
||||
<el-input-number v-model="activeData.step" placeholder="步数" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="activeData.step" placeholder="步数" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="activeData.__config__.tag === 'el-input-number'" label="精度">
|
||||
<el-input-number v-model="activeData.precision" :min="0" placeholder="精度" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="activeData.precision" :min="0" placeholder="精度" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="activeData.__config__.tag === 'el-input-number'" label="按钮位置">
|
||||
<el-radio-group v-model="activeData['controls-position']">
|
||||
@@ -619,7 +619,7 @@
|
||||
<el-input v-model.number="formConf.labelWidth" type="number" placeholder="请输入标签宽度" />
|
||||
</el-form-item>
|
||||
<el-form-item label="栅格间隔">
|
||||
<el-input-number v-model="formConf.gutter" :min="0" placeholder="栅格间隔" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="formConf.gutter" :min="0" placeholder="栅格间隔" />
|
||||
</el-form-item>
|
||||
<el-form-item label="禁用表单">
|
||||
<el-switch v-model="formConf.disabled" />
|
||||
|
||||
@@ -62,7 +62,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
tableName: undefined,
|
||||
tableComment: undefined
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
tableName: undefined,
|
||||
tableComment: undefined,
|
||||
dataName: "master"
|
||||
|
||||
@@ -128,7 +128,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
bomId: this.bomId,
|
||||
attrKey: undefined,
|
||||
attrValue: undefined,
|
||||
|
||||
@@ -194,7 +194,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
categoryType: undefined,
|
||||
categoryCode: undefined,
|
||||
categoryName: undefined,
|
||||
|
||||
@@ -140,7 +140,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
contractNo: undefined,
|
||||
partyA: undefined,
|
||||
partyB: undefined,
|
||||
|
||||
@@ -427,7 +427,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
expressCode: undefined,
|
||||
status: undefined,
|
||||
supplyName: undefined,
|
||||
|
||||
@@ -185,7 +185,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
expressId: undefined,
|
||||
description: undefined,
|
||||
reportTime: undefined,
|
||||
|
||||
@@ -160,7 +160,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
warehouseId: undefined,
|
||||
itemId: undefined,
|
||||
itemType: undefined,
|
||||
|
||||
@@ -258,7 +258,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
name: undefined,
|
||||
mobile: undefined,
|
||||
telephone: undefined,
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
<el-switch v-model="autoRefresh" />
|
||||
</el-form-item>
|
||||
<el-form-item label="刷新间隔(秒)">
|
||||
<el-input-number v-model="refreshInterval" :min="5" :max="3600" :step="1" :disabled="!autoRefresh" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="refreshInterval" :min="5" :max="3600" :step="1" :disabled="!autoRefresh" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="saveRefreshSetting">保存</el-button>
|
||||
|
||||
@@ -159,10 +159,10 @@
|
||||
<el-input v-model="form.salesManager" placeholder="请输入销售经理" />
|
||||
</el-form-item>
|
||||
<el-form-item label="含税金额" prop="taxAmount">
|
||||
<el-input-number v-model="form.taxAmount" placeholder="请输入含税金额" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="form.taxAmount" placeholder="请输入含税金额" />
|
||||
</el-form-item>
|
||||
<el-form-item label="无税金额" prop="noTaxAmount">
|
||||
<el-input-number v-model="form.noTaxAmount" placeholder="请输入无税金额" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="form.noTaxAmount" placeholder="请输入无税金额" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||
@@ -223,7 +223,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
orderCode: undefined,
|
||||
customerId: undefined,
|
||||
salesManager: undefined,
|
||||
|
||||
@@ -122,10 +122,10 @@
|
||||
<el-input v-model="form.unit" placeholder="单位" :disabled="true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="含税单价" prop="taxPrice">
|
||||
<el-input-number v-model="form.taxPrice" placeholder="请输入含税单价" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="form.taxPrice" placeholder="请输入含税单价" />
|
||||
</el-form-item>
|
||||
<el-form-item label="无税单价" prop="noTaxPrice">
|
||||
<el-input-number v-model="form.noTaxPrice" placeholder="请输入无税单价" :min="0" :max="form.taxPrice" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="form.noTaxPrice" placeholder="请输入无税单价" :min="0" :max="form.taxPrice" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||
@@ -177,7 +177,7 @@ export default {
|
||||
EOrderStatus,
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
orderId: this.orderId,
|
||||
productId: undefined,
|
||||
quantity: undefined,
|
||||
|
||||
@@ -156,10 +156,10 @@
|
||||
<el-input v-model="form.salesManager" placeholder="请输入销售经理" />
|
||||
</el-form-item>
|
||||
<el-form-item label="含税金额" prop="taxAmount">
|
||||
<el-input-number v-model="form.taxAmount" placeholder="请输入含税金额" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="form.taxAmount" placeholder="请输入含税金额" />
|
||||
</el-form-item>
|
||||
<el-form-item label="无税金额" prop="noTaxAmount">
|
||||
<el-input-number v-model="form.noTaxAmount" placeholder="请输入无税金额" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="form.noTaxAmount" placeholder="请输入无税金额" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||
@@ -215,7 +215,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
orderCode: undefined,
|
||||
customerId: undefined,
|
||||
salesManager: undefined,
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
<el-input v-model="form.cssClass" placeholder="请输入样式属性" />
|
||||
</el-form-item>
|
||||
<el-form-item label="显示排序" prop="dictSort">
|
||||
<el-input-number v-model="form.dictSort" controls-position="right" :min="0" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="form.dictSort" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="回显样式" prop="listClass">
|
||||
<el-select v-model="form.listClass">
|
||||
@@ -209,7 +209,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
dictName: undefined,
|
||||
dictType: undefined,
|
||||
status: undefined
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<!-- 仅保留预览区 -->
|
||||
<div class="barcode-preview-area">
|
||||
<div class="iframe-wrapper">
|
||||
<iframe ref="previewIframe" class="barcode-iframe" frameborder="0" :style="iframeStyle"></iframe>
|
||||
<iframe ref="previewIframe" id="previewIframe" class="barcode-iframe" frameborder="0" :style="iframeStyle"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
清空所有
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
<!-- <el-tooltip content="仅对完整配置的二维码进行打印预览" placement="top"
|
||||
<el-tooltip content="仅对完整配置的二维码进行打印预览" placement="top"
|
||||
:disabled="drawerBarcodeData.length === 0 || !isAllValid">
|
||||
<el-button type="success" icon="el-icon-printer" @click="handlePrintPreview"
|
||||
:disabled="drawerBarcodeData.length === 0 || !isAllValid" class="btn-print">
|
||||
打印预览
|
||||
</el-button>
|
||||
</el-tooltip> -->
|
||||
</el-tooltip>
|
||||
<el-button type="primary" icon="el-icon-plus" @click="handleAdd">
|
||||
添加二维码
|
||||
</el-button>
|
||||
@@ -139,14 +139,22 @@
|
||||
<el-row :gutter="8">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="物料数量" :error="getError(cfg, 'count')" class="form-item">
|
||||
<el-input-number v-model="cfg.count" :min="1" :max="100" size="mini" placeholder="请输入数量" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="cfg.count" :min="1" :max="100" size="mini" placeholder="请输入数量" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="8">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="下方文字" class="form-item">
|
||||
<el-input v-model="cfg.text" size="mini" placeholder="例如:产品入库二维码" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="生成数量" class="form-item">
|
||||
<el-input v-model="cfg.totalCount" size="mini" placeholder="例如:产品入库二维码" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 配置状态提示 - 优化背景色和图标 -->
|
||||
@@ -251,10 +259,9 @@ export default {
|
||||
itemId: b.itemId,
|
||||
batchNo: b.batchNo || 'auto',
|
||||
quantity: b.count || 1,
|
||||
unit: b.unit || '',
|
||||
recordType: 1,
|
||||
}),
|
||||
count: 1,
|
||||
count: b.totalCount,
|
||||
textTpl: b.text || '二维码'
|
||||
}));
|
||||
}
|
||||
@@ -263,7 +270,7 @@ export default {
|
||||
// 物料选择变更
|
||||
onItemChange(item, idx) {
|
||||
if (item && this.drawerBarcodeData[idx]) {
|
||||
this.drawerBarcodeData[idx].unit = item.unit;
|
||||
// this.drawerBarcodeData[idx].unit = item.unit;
|
||||
// 如果未设置数量,默认设置为1
|
||||
if (!this.drawerBarcodeData[idx].count) {
|
||||
this.drawerBarcodeData[idx].count = 1;
|
||||
@@ -316,6 +323,7 @@ export default {
|
||||
itemId: undefined,
|
||||
batchNo: 'auto',
|
||||
count: 1, // 默认数量1
|
||||
totalCount: 1, // 默认数量1
|
||||
unit: '',
|
||||
text: '二维码', // 默认文字
|
||||
hovered: false // 新增hover状态,用于交互反馈
|
||||
@@ -368,18 +376,7 @@ export default {
|
||||
},
|
||||
// 打印预览 - 增加加载状态提示
|
||||
handlePrintPreview() {
|
||||
const printLoading = this.$loading({
|
||||
lock: true,
|
||||
text: '正在准备打印预览...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(255, 255, 255, 0.8)'
|
||||
});
|
||||
|
||||
// 模拟预览准备时间(实际项目可替换为真实接口请求)
|
||||
setTimeout(() => {
|
||||
window.print();
|
||||
printLoading.close();
|
||||
}, 1000);
|
||||
document.querySelector('#previewIframe').contentWindow.print();
|
||||
},
|
||||
// 验证单个配置是否有效
|
||||
isConfigValid(cfg) {
|
||||
|
||||
@@ -1,49 +1,35 @@
|
||||
<template>
|
||||
<div class="qr-parser-container">
|
||||
|
||||
|
||||
<div class="card">
|
||||
<el-alert title="请将当前输入法切换到英文输入后再进行扫码操作" type="warning"></el-alert>
|
||||
<div class="card-header">
|
||||
<h2 class="title">二维码解析器</h2>
|
||||
<p class="subtitle">扫描或输入二维码内容进行解析</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="input-section">
|
||||
<el-input
|
||||
v-model="text"
|
||||
@change="handleChange"
|
||||
@blur="handleBlur"
|
||||
ref="textarea"
|
||||
placeholder="请扫描二维码或粘贴二维码文本内容..."
|
||||
:rows="3"
|
||||
type="textarea"
|
||||
:class="{ 'invalid-input': !isValid && text.length > 0 }"
|
||||
/>
|
||||
<el-input v-model="text" @input="handleInput" @blur="handleBlur" ref="textarea"
|
||||
placeholder="请扫描二维码或粘贴二维码文本内容..." :rows="3" type="textarea"
|
||||
:class="{ 'invalid-input': !isValid && text.length > 0 }" />
|
||||
<div class="input-hint">
|
||||
<i class="el-icon-info-circle"></i>
|
||||
<span>{{ inputHint }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 加载状态 -->
|
||||
<el-loading
|
||||
v-if="isLoading"
|
||||
text="正在解析数据..."
|
||||
class="loading-overlay"
|
||||
></el-loading>
|
||||
|
||||
<el-loading v-if="isLoading" text="正在解析数据..." class="loading-overlay"></el-loading>
|
||||
|
||||
<!-- 二维码解析结果 - 只有数据有效时才显示 -->
|
||||
<div v-if="isValid" class="result-section fade-in">
|
||||
<div class="result-header">
|
||||
<h3>解析结果</h3>
|
||||
<el-tag
|
||||
:type="result.ioType === 'in' ? 'success' : 'warning'"
|
||||
size="small"
|
||||
>
|
||||
<el-tag :type="result.ioType === 'in' ? 'success' : 'warning'" size="small">
|
||||
{{ result.ioType === 'in' ? '入库' : '出库' }}
|
||||
</el-tag>
|
||||
</div>
|
||||
|
||||
|
||||
<el-descriptions :column="1" border class="result-table">
|
||||
<el-descriptions-item label="出入库类型" :span="1">
|
||||
{{ result.ioType === 'in' ? '入库' : '出库' }}
|
||||
@@ -52,32 +38,22 @@
|
||||
{{ formatItemType(result.itemType) }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="物料信息" :span="1">
|
||||
<ProductInfo v-if="result.itemType === 'product' || result.itemType === 'semi'" :productId="result.itemId" />
|
||||
<ProductInfo v-if="result.itemType === 'product' || result.itemType === 'semi'"
|
||||
:productId="result.itemId" />
|
||||
<RawMaterialInfo v-else-if="result.itemType === 'raw_material'" :materialId="result.itemId" />
|
||||
<el-input v-else disabled v-model="result.itemId" placeholder="未知物料" :disabled="true" style="width: 100%;" />
|
||||
<el-input v-else disabled v-model="result.itemId" placeholder="未知物料" :disabled="true"
|
||||
style="width: 100%;" />
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="数量" :span="1">
|
||||
{{ result.quantity }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="计量单位" :span="1">
|
||||
{{ result.unit }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
|
||||
<div class="action-buttons">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleSubmit"
|
||||
:loading="isSubmitting"
|
||||
icon="el-icon-check"
|
||||
>
|
||||
<el-button type="primary" @click="handleSubmit" :loading="isSubmitting" icon="el-icon-check">
|
||||
确认执行
|
||||
</el-button>
|
||||
<el-button
|
||||
type="default"
|
||||
@click="handleReset"
|
||||
icon="el-icon-refresh-right"
|
||||
>
|
||||
<el-button type="default" @click="handleReset" icon="el-icon-refresh-right">
|
||||
重置
|
||||
</el-button>
|
||||
</div>
|
||||
@@ -91,6 +67,24 @@ import ProductInfo from '@/components/KLPService/Renderer/ProductInfo';
|
||||
import RawMaterialInfo from '@/components/KLPService/Renderer/RawMaterialInfo';
|
||||
import { addStockIoDetail } from '@/api/wms/stockIoDetail';
|
||||
|
||||
// 通用防抖高阶函数(可放在工具类中全局复用)
|
||||
function debounce(fn, delay = 300) {
|
||||
let debounceTimer = null; // 闭包保存定时器,避免重复创建
|
||||
|
||||
// 返回被包装后的函数(支持传递参数给业务函数)
|
||||
return function (...args) {
|
||||
// 1. 清除上一次未执行的定时器(核心:避免短时间内重复触发)
|
||||
if (debounceTimer) {
|
||||
clearTimeout(debounceTimer);
|
||||
}
|
||||
|
||||
// 2. 延迟执行业务函数,this 绑定到调用者(适配 Vue 组件上下文)
|
||||
debounceTimer = setTimeout(() => {
|
||||
fn.apply(this, args); // 传递参数+保持this指向(Vue组件实例)
|
||||
}, delay);
|
||||
};
|
||||
}
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@@ -104,17 +98,25 @@ export default {
|
||||
ProductInfo,
|
||||
RawMaterialInfo,
|
||||
},
|
||||
created() {
|
||||
// 包装“输入解析+提交”的业务函数,生成带防抖的版本
|
||||
this.debouncedHandleInput = debounce(
|
||||
this.actualParseAndSubmit, // 实际的业务逻辑函数
|
||||
500 // 防抖延迟时间
|
||||
);
|
||||
},
|
||||
computed: {
|
||||
result() {
|
||||
try {
|
||||
return JSON.parse(this.text);
|
||||
const text = JSON.parse(this.text)
|
||||
return text;
|
||||
} catch (error) {
|
||||
return {};
|
||||
}
|
||||
},
|
||||
// 验证数据是否有效
|
||||
isValid() {
|
||||
const requiredFields = ['ioType', 'itemType', 'itemId', 'quantity', 'unit'];
|
||||
const requiredFields = ['ioType', 'itemType', 'itemId', 'quantity'];
|
||||
// 检查是否包含所有必要字段
|
||||
const hasAllFields = requiredFields.every(field => this.result.hasOwnProperty(field));
|
||||
// 检查出入库类型是否有效
|
||||
@@ -123,51 +125,66 @@ export default {
|
||||
const isItemTypeValid = ['product', 'semi', 'raw_material'].includes(this.result.itemType);
|
||||
// 检查数量是否为有效数字
|
||||
const isQuantityValid = !isNaN(Number(this.result.quantity)) && Number(this.result.quantity) > 0;
|
||||
|
||||
|
||||
return hasAllFields && isIoTypeValid && isItemTypeValid && isQuantityValid;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleChange(value) {
|
||||
if (!value) {
|
||||
this.inputHint = '请输入二维码内容,系统将自动解析';
|
||||
handleInput(value) {
|
||||
const trimmedValue = value.trim();
|
||||
|
||||
// 空值场景:立即反馈,不触发防抖逻辑
|
||||
if (!trimmedValue) {
|
||||
this.inputHint = "请输入二维码内容,系统将自动解析";
|
||||
return;
|
||||
}
|
||||
|
||||
this.isLoading = true;
|
||||
|
||||
// 模拟解析延迟,提升用户体验
|
||||
setTimeout(() => {
|
||||
try {
|
||||
const parsed = JSON.parse(value);
|
||||
if (this.isValid) {
|
||||
this.inputHint = '数据解析成功,可以提交操作';
|
||||
this.$message.success({
|
||||
message: '数据解析成功',
|
||||
duration: 1500
|
||||
});
|
||||
// 解析成功后禁用输入框
|
||||
this.handleSubmit();
|
||||
// this.$refs.textarea.disabled = true;
|
||||
console.log(this.$refs.textarea.disabled, '禁用输入框');
|
||||
} else {
|
||||
this.inputHint = '解析的数据格式不完整,请检查二维码是否正确';
|
||||
this.$message.warning({
|
||||
message: '数据格式不完整',
|
||||
duration: 2000
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
this.inputHint = '无法解析数据,请确保输入的是有效的二维码内容';
|
||||
this.$message.error({
|
||||
message: '解析失败,请检查输入内容',
|
||||
duration: 2000
|
||||
});
|
||||
} finally {
|
||||
this.isLoading = false;
|
||||
}
|
||||
}, 500);
|
||||
|
||||
// 基础校验不通过:立即反馈,不触发防抖逻辑
|
||||
if (!this.isValid) {
|
||||
this.inputHint = "输入内容不符合基础格式要求,请检查";
|
||||
return;
|
||||
}
|
||||
|
||||
// 触发防抖后的业务逻辑(此时已自动防抖)
|
||||
this.debouncedHandleInput(trimmedValue);
|
||||
},
|
||||
|
||||
// 5. 实际的“JSON解析+提交”业务逻辑(纯业务,无防抖代码)
|
||||
actualParseAndSubmit(validValue) {
|
||||
this.isLoading = true;
|
||||
try {
|
||||
// 1. 解析JSON
|
||||
const parsedData = JSON.parse(validValue);
|
||||
|
||||
|
||||
// if (!this.isValid) {
|
||||
// this.inputHint = "解析的数据格式不完整,请检查二维码是否正确";
|
||||
// this.$message.warning({
|
||||
// message: "数据格式不完整",
|
||||
// duration: 2000,
|
||||
// });
|
||||
// return;
|
||||
// }
|
||||
// 3. 解析成功:反馈+提交
|
||||
this.inputHint = "数据解析成功,可以提交操作";
|
||||
this.$message.success({
|
||||
message: "数据解析成功",
|
||||
duration: 1500,
|
||||
});
|
||||
this.handleSubmit(parsedData); // 调用提交接口
|
||||
} catch (error) {
|
||||
// 6. 解析失败:错误处理
|
||||
this.inputHint = "无法解析数据,请确保输入的是有效的二维码内容";
|
||||
this.$message.error({
|
||||
message: "解析失败,请检查输入内容",
|
||||
duration: 2000,
|
||||
});
|
||||
} finally {
|
||||
// 7. 无论成功/失败,结束加载状态
|
||||
this.isLoading = false;
|
||||
}
|
||||
},
|
||||
|
||||
handleBlur() {
|
||||
// 自动重新聚焦,方便连续扫描
|
||||
this.$nextTick(() => {
|
||||
@@ -176,9 +193,9 @@ export default {
|
||||
},
|
||||
handleSubmit() {
|
||||
if (!this.isValid) return;
|
||||
|
||||
|
||||
this.isSubmitting = true;
|
||||
|
||||
|
||||
addStockIoDetail(this.result)
|
||||
.then(res => {
|
||||
this.$message.success({
|
||||
@@ -337,6 +354,7 @@ export default {
|
||||
opacity: 0;
|
||||
transform: translateY(10px);
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
|
||||
@@ -308,7 +308,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
type: 'product',
|
||||
productCode: undefined,
|
||||
productName: undefined,
|
||||
|
||||
@@ -308,7 +308,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
type: 'semi',
|
||||
productCode: undefined,
|
||||
productName: undefined,
|
||||
|
||||
@@ -171,7 +171,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
productId: undefined,
|
||||
rawMaterialId: undefined,
|
||||
quantity: undefined,
|
||||
|
||||
@@ -170,7 +170,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
productId: undefined,
|
||||
scriptTitle: undefined,
|
||||
scriptContent: undefined,
|
||||
|
||||
@@ -313,7 +313,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
planCode: undefined,
|
||||
owner: undefined,
|
||||
orderId: undefined,
|
||||
@@ -322,7 +322,7 @@ export default {
|
||||
// 订单查询参数
|
||||
orderQueryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
orderCode: undefined,
|
||||
customerName: undefined,
|
||||
salesManager: undefined,
|
||||
@@ -482,7 +482,7 @@ export default {
|
||||
resetOrderQuery() {
|
||||
this.orderQueryParams = {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
orderCode: undefined,
|
||||
customerName: undefined,
|
||||
salesManager: undefined,
|
||||
|
||||
@@ -213,7 +213,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
rawMaterialId: undefined,
|
||||
owner: undefined,
|
||||
quantity: undefined,
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
<el-table-column prop="demand" label="所需" />
|
||||
<el-table-column prop="quantity" label="计划采购数">
|
||||
<template #default="scope">
|
||||
<el-input-number v-model="scope.row.quantity" :min="0" size="small" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="scope.row.quantity" :min="0" size="small" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="owner" label="负责人">
|
||||
@@ -91,7 +91,7 @@ export default {
|
||||
rawMaterialList: [],
|
||||
total: 0,
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
rawMaterialLoading: false,
|
||||
leftSelected: [],
|
||||
rightSelected: [],
|
||||
|
||||
@@ -252,7 +252,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
planId: undefined,
|
||||
rawMaterialId: undefined,
|
||||
owner: undefined,
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
<el-table-column prop="demand" label="所需" />
|
||||
<el-table-column prop="quantity" label="计划采购数">
|
||||
<template #default="scope">
|
||||
<el-input-number v-model="scope.row.quantity" :min="0" size="small" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="scope.row.quantity" :min="0" size="small" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="owner" label="负责人">
|
||||
@@ -131,7 +131,7 @@ export default {
|
||||
rawMaterialList: [],
|
||||
total: 0,
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
rawMaterialLoading: false,
|
||||
leftSelected: [],
|
||||
rightSelected: [],
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
<el-input v-model="form.cssClass" placeholder="请输入样式属性" />
|
||||
</el-form-item>
|
||||
<el-form-item label="显示排序" prop="dictSort">
|
||||
<el-input-number v-model="form.dictSort" controls-position="right" :min="0" />
|
||||
<el-input-number :controls=false controls-position="right" v-model="form.dictSort" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="回显样式" prop="listClass">
|
||||
<el-select v-model="form.listClass">
|
||||
@@ -209,7 +209,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
dictName: undefined,
|
||||
dictType: undefined,
|
||||
status: undefined
|
||||
|
||||
@@ -337,7 +337,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
rawMaterialCode: undefined,
|
||||
rawMaterialName: undefined,
|
||||
steelGrade: undefined,
|
||||
|
||||
@@ -278,7 +278,7 @@ export default {
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
pageSize: 20,
|
||||
summaryId: undefined,
|
||||
deviceCode: undefined,
|
||||
category: undefined,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user