<template>
|
<a-spin :spinning="confirmLoading">
|
<j-form-container :disabled="formDisabled">
|
<!-- 主表单区域 -->
|
<a-form-model
|
ref="form"
|
:model="model"
|
:rules="validatorRules"
|
slot="detail"
|
>
|
<a-row :gutter="24">
|
<a-col :span="12">
|
<a-form-model-item
|
label="统一编码"
|
:labelCol="labelCol"
|
:wrapperCol="wrapperCol"
|
prop="num"
|
>
|
<a-auto-complete
|
v-model="model.num"
|
:data-source="numList"
|
:disabled="formDisabled"
|
placeholder="请输入精度参数模板编码"
|
@search="onSearchNums"
|
/>
|
</a-form-model-item>
|
</a-col>
|
<a-col :span="12">
|
<a-form-model-item
|
label="名称"
|
:labelCol="labelCol"
|
:wrapperCol="wrapperCol"
|
prop="name"
|
>
|
<a-input
|
allowClear
|
:disabled="formDisabled"
|
placeholder="请输入精度参数模板名称"
|
v-model="model.name"
|
/>
|
</a-form-model-item>
|
</a-col>
|
</a-row>
|
<a-row :gutter="24">
|
<a-col :span="12">
|
<a-form-model-item
|
label="备注"
|
:labelCol="labelCol"
|
:wrapperCol="wrapperCol"
|
prop="remark"
|
>
|
<a-textarea
|
allowClear
|
:disabled="formDisabled"
|
placeholder="请输入备注"
|
v-model="model.remark"
|
/>
|
</a-form-model-item>
|
</a-col>
|
</a-row>
|
</a-form-model>
|
</j-form-container>
|
<!-- 子表单区域 -->
|
<a-tabs
|
v-model="activeKey"
|
@change="handleChangeTabs"
|
>
|
<a-tab-pane
|
tab="精度参数明细"
|
:key="refKeys[0]"
|
:forceRender="true"
|
>
|
<j-vxe-table
|
keep-source
|
:ref="refKeys[0]"
|
:loading="precisionParameters.loading"
|
:columns="precisionParameters.columns"
|
:dataSource="precisionParameters.dataSource"
|
:maxHeight="600"
|
:disabled="formDisabled"
|
:rowNumber="true"
|
:rowSelection="true"
|
:toolbar="true"
|
bordered
|
:alwaysEdit="true"
|
:toolbarConfig='toolbarConfig'
|
>
|
<!-- @valueChange="changeDate" -->
|
<template slot='toolbarPrefix'>
|
<a-button
|
type='primary'
|
@click='precisionParametersDetailSelect'
|
:disabled="formDisabled"
|
icon="plus"
|
>选择精度参数
|
</a-button>
|
</template>
|
</j-vxe-table>
|
</a-tab-pane>
|
</a-tabs>
|
<j-select-precision-parameters-modal
|
@selectionRows='selectionRows'
|
ref='JSelectPrecisionParametersModal'
|
></j-select-precision-parameters-modal>
|
</a-spin>
|
</template>
|
|
<script>
|
|
import { getAction } from '@/api/manage'
|
import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
|
import { duplicateCheck } from '@/api/api'
|
import { JVXETypes } from '@/components/jeecg/JVxeTable'
|
import { getRefPromise, VALIDATE_FAILED } from '@/components/jeecg/JVxeTable/utils/vxeUtils.js'
|
import { validateDuplicateValue } from '@/utils/util'
|
import JFormContainer from '@/components/jeecg/JFormContainer'
|
|
|
import dayjs from 'dayjs'
|
import JSelectPrecisionParametersModal from './JSelectPrecisionParametersModal'
|
export default {
|
name: 'PrecisionParameters',
|
mixins: [JVxeTableModelMixin],
|
components: {
|
JFormContainer,
|
dayjs,
|
JSelectPrecisionParametersModal
|
},
|
data() {
|
return {
|
toolbarConfig: {
|
// prefix 前缀;suffix 后缀
|
slot: ['prefix', 'suffix'],
|
// add 新增按钮;remove 删除按钮;clearSelection 清空选择按钮
|
btn: ['remove', 'clearSelection']
|
},
|
labelCol: {
|
xs: { span: 24 },
|
sm: { span: 5 },
|
},
|
wrapperCol: {
|
xs: { span: 24 },
|
sm: { span: 16 },
|
},
|
model: {
|
},
|
// 新增时子表默认添加几行空数据
|
addDefaultRowNum: 0,
|
validatorRules: {
|
num: [
|
{ required: true, message: '请输入编码!' },
|
{ min: 1, max: 30, message: '长度在 2 到 30 个字符', trigger: 'blur' },
|
{ validator: this.validateNum },
|
],
|
name: [
|
{ required: true, message: '请输入名称!' },
|
{ min: 1, max: 30, message: '长度在 2 到 30 个字符', trigger: 'blur' },
|
],
|
},
|
refKeys: ['precisionParametersList',],
|
tableKeys: ['precisionParametersList',],
|
activeKey: 'precisionParametersList',
|
precisionParameters: {
|
loading: false,
|
dataSource: [],
|
columns: [
|
{
|
title: 'id',
|
key: 'id',
|
type: JVXETypes.hidden,
|
disabled: true,
|
align: 'center',
|
},
|
{
|
title: '检验项目名称',
|
key: 'precisionParametersName',
|
type: JVXETypes.normal,
|
width: "350px",
|
placeholder: '请输入${title}',
|
disabled: true,
|
align: 'center',
|
defaultValue: '',
|
},
|
{
|
title: '方向',
|
key: 'precisionParametersUda1',
|
type: JVXETypes.normal,
|
width: "350px",
|
placeholder: '请输入${title}',
|
disabled: true,
|
align: 'center',
|
defaultValue: '',
|
},
|
{
|
title: '允差(mm)',
|
key: 'tolerance',
|
type: JVXETypes.input,
|
width: "350px",
|
placeholder: '请输入${title}',
|
align: 'center',
|
// validateRules: [
|
// { handler({ cellValue, row, column }, callback, target) {
|
// const regex = /^[+]?\d*\.?\d+\/[+]?\d*\.?\d+$/;
|
// if (!new RegExp(regex).test(cellValue)&&cellValue!=null) {
|
// callback(false, '允差要符合【上限/距离】的填写规则,如: 0.16/300') // false = 未通过,可以跟自定义提示
|
// } else {
|
// callback(true) // true = 通过验证
|
// }
|
// },
|
// message: '${title}默认提示'
|
// },
|
// ]
|
},
|
]
|
},
|
url: {
|
getNums: '/eam/precisionParametersTemplate/getNums',
|
add: '/eam/precisionParametersTemplate/addNew',
|
edit: '/eam/precisionParametersTemplate/editNew',
|
precisionParametersList: {
|
list: '/eam/precisionParametersTemplateDetail/listByPrecisionParametersTemplateId'
|
},
|
},
|
numList: [],
|
}
|
},
|
props: {
|
//表单禁用
|
disabled: {
|
type: Boolean,
|
default: false,
|
required: false
|
},
|
},
|
computed: {
|
formDisabled() {
|
return this.disabled
|
},
|
},
|
created() {
|
},
|
methods: {
|
addBefore() {
|
this.precisionParameters
|
|
},
|
getAllTable() {
|
let values = this.tableKeys.map(key => getRefPromise(this, key))
|
return Promise.all(values)
|
},
|
/** 调用完edit()方法之后会自动调用此方法 */
|
editAfter() {
|
this.$nextTick(() => {
|
})
|
// 加载子表数据
|
if (this.model.id) {
|
let params = {
|
precisionParametersTemplateId: this.model.id,
|
pageSize: 9999,
|
}
|
this.requestSubTableData(this.url.precisionParametersList.list, params, this.precisionParameters)
|
}
|
if (this.model.num == '') {
|
this.model.id = ''
|
}
|
},
|
//校验所有一对一子表表单
|
validateSubForm(allValues) {
|
return new Promise((resolve, reject) => {
|
Promise.all([
|
]).then(() => {
|
resolve(allValues)
|
}).catch(e => {
|
if (e.error === VALIDATE_FAILED) {
|
// 如果有未通过表单验证的子表,就自动跳转到它所在的tab
|
this.activeKey = e.index == null ? this.activeKey : this.refKeys[e.index]
|
} else {
|
console.error(e)
|
}
|
})
|
})
|
},
|
/** 整理成formData */
|
classifyIntoFormData(allValues) {
|
let main = Object.assign(this.model, allValues.formValue)
|
let details = allValues.tablesValue[0].tableData;
|
for (var i = 0; i < details.length; i++) {
|
details[i].sort = i + 1;
|
if (details[i].tolerance != null && details[i].tolerance != '' && details[i].tolerance != undefined) {
|
var inf = details[i].tolerance.split('/');
|
var distance = inf[1];
|
var upper = inf[0];
|
details[i].distance = parseFloat(distance);
|
details[i].upper = parseFloat(upper);
|
details[i].lower = 0;
|
}
|
}
|
return {
|
...main, // 展开
|
precisionParametersTemplateDetailList: details,
|
}
|
},
|
validateError(msg) {
|
this.$message.error(msg)
|
},
|
precisionParametersDetailSelect() {
|
let ids = []
|
let tableData = this.$refs.precisionParametersList.getTableData()
|
for (let i = 0; i < tableData.length; i++) {
|
ids.push(tableData[i].precisionParametersId)
|
}
|
this.$refs.JSelectPrecisionParametersModal.showModal(ids)
|
this.$refs.JSelectPrecisionParametersModal.title = '选择精度参数'
|
this.$refs.JSelectPrecisionParametersModal.disableSubmit = false
|
},
|
addSelected(data) {
|
let tableData = this.$refs.precisionParametersList.getTableData()
|
var tableStr = JSON.stringify(tableData)
|
const addRows = []
|
console.log(data)
|
console.log(tableStr)
|
|
for (let i = 0; i < data.length; i++) {
|
var precisionParameters = {}
|
if (tableStr.indexOf(data[i].id) == -1) {
|
precisionParameters = {
|
precisionParametersId: data[i].id,
|
precisionParametersName: data[i].name,
|
precisionParametersUda1: data[i].precisionParametersUda1,
|
precisionParametersTemplateId: this.model.id,
|
}
|
}
|
addRows.push(precisionParameters)
|
}
|
this.$refs.precisionParametersList.pushRows(addRows)
|
},
|
selectionRows(data) {
|
// 增加选中的设备到列表中
|
|
this.addSelected(data)
|
},
|
onSearchNums(searchText) {
|
getAction(this.url.getNums, { searchText: searchText }).then(res => {
|
if (res.success) {
|
this.numList = res.result
|
}
|
})
|
|
},
|
validateNum(rule, value, callback) {
|
var params = {
|
tableName: 'mom_eam_precision_parameters_template',
|
fieldName: 'num',
|
fieldVal: value,
|
dataId: this.model.id,
|
//数据库中存在字段del_flag并使用该字段作为未删除策略,真删除:false 假删除:true
|
delFlag: '0',
|
};
|
duplicateCheck(params).then((res) => {
|
if (res.success) {
|
callback();
|
} else {
|
callback("编号已存在!");
|
}
|
})
|
},
|
|
}
|
}
|
</script>
|
|
<style scoped>
|
</style>
|