|
|
|
@ -1,7 +1,7 @@ |
|
|
|
<template> |
|
|
|
<div> |
|
|
|
<div class="custom-table-wrapper" :class="{ 'no-border': !isBorder }"> |
|
|
|
<div class="custom-table-header" v-if="isBorder"> |
|
|
|
<div class="custom-table-header no-break" v-if="isBorder"> |
|
|
|
<div class="custom-table-row"> |
|
|
|
<div v-if="showSort" class="custom-table-cell header-cell sort-cell"> |
|
|
|
序号 |
|
|
|
@ -12,8 +12,8 @@ |
|
|
|
@change="handleCheckAllChange"></el-checkbox> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div v-for="(col, colIndex) in columns" :key="colIndex" class="custom-table-cell header-cell" |
|
|
|
:style="getCellWidth(col)"> |
|
|
|
<div v-for="(col, colIndex) in columns" :key="colIndex" |
|
|
|
class="custom-table-cell header-cell no-break" :style="getCellWidth(col)"> |
|
|
|
<div class="header-cell-content" v-if="col.headerColumns && col.headerColumns.length > 0"> |
|
|
|
<div class="header-columns-grid" |
|
|
|
:style="{ 'grid-template-columns': `repeat(${col.span || 2}, 1fr)` }"> |
|
|
|
@ -31,6 +31,7 @@ |
|
|
|
:value="headerFields[`${colIndex}_${headerIndex}`]" |
|
|
|
:error="hasHeaderError(colIndex, headerIndex, headerCol.key)" |
|
|
|
@update:error="onHeaderColumnErrorUpdate(colIndex, headerIndex, headerCol.key, $event)" |
|
|
|
:orange-bg="regentIsExpired(headerCol.key,rowIndex)" |
|
|
|
@onRegentSubmit="(data, inputValue) => onHeaderRegentSubmit(data, inputValue, colIndex, headerIndex)" /> |
|
|
|
</template> |
|
|
|
<template |
|
|
|
@ -74,7 +75,7 @@ |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="custom-table-body"> |
|
|
|
<div v-for="(row, rowIndex) in localDataSource" :key="rowIndex" class="custometable-row"> |
|
|
|
<div v-for="(row, rowIndex) in localDataSource" :key="rowIndex" class="custometable-row no-break"> |
|
|
|
<div v-if="showSort" class="custom-table-cell body-cell sort-cell"> |
|
|
|
{{ rowIndex + 1 }} |
|
|
|
</div> |
|
|
|
@ -83,8 +84,8 @@ |
|
|
|
<el-checkbox v-model="row._checked" @change="handleCheckChange(row, $event)"></el-checkbox> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div v-for="(col, colIndex) in columns" :key="colIndex" class="custom-table-cell body-cell" |
|
|
|
:style="getCellWidth(col)"> |
|
|
|
<div v-for="(col, colIndex) in columns" :key="colIndex" |
|
|
|
class="custom-table-cell body-cell no-break" :style="getCellWidth(col)"> |
|
|
|
<div class="inner-table-cell"> |
|
|
|
<div class="flex1" :class="{ 'item-center': !isBorder && col.label }"> |
|
|
|
<div v-if="!isBorder && col.label" class="mr-5"> |
|
|
|
@ -97,8 +98,7 @@ |
|
|
|
:fieldItemLabel="fieldItemLabel" :type="col.bodyType" |
|
|
|
@blur="onBlur(rowIndex, col.prop, $event)" @copy="onCopy(rowIndex, col)" |
|
|
|
class="body-input" :item="getBodyItem(col, rowIndex)" |
|
|
|
v-model="row[col.prop]" |
|
|
|
:ref = "col.prop+rowIndex" |
|
|
|
v-model="row[col.prop]" :ref="col.prop + rowIndex" |
|
|
|
@change="onBodyValueChange(rowIndex, colIndex, $event, row, col.bodyType)" |
|
|
|
:error="hasError(rowIndex, colIndex, col.prop)" |
|
|
|
@update:error="onErrorUpdate(rowIndex, colIndex, col.prop, $event)" |
|
|
|
@ -107,13 +107,14 @@ |
|
|
|
</div> |
|
|
|
|
|
|
|
</template> |
|
|
|
<div v-else-if = "col.bodyType === 'checkboxTree'"> |
|
|
|
<HandleFormItem |
|
|
|
:field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + col.prop+ rowIndex" |
|
|
|
type="checkboxTree" :item="getBodyItem(col, rowIndex)" :value="row[col.prop]" |
|
|
|
@change="(e) => onBodyValueChange(rowIndex, colIndex, e, row, col.bodyType)" |
|
|
|
:error="hasError(rowIndex, colIndex, col.prop)" @update:error="onErrorUpdate(rowIndex, colIndex, col.prop, $event)" |
|
|
|
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.prop)" /> |
|
|
|
<div v-else-if="col.bodyType === 'checkboxTree'"> |
|
|
|
<HandleFormItem :field-item-label="fieldItemLabel" |
|
|
|
:field-key="prefixKey + '_' + col.prop + rowIndex" type="checkboxTree" |
|
|
|
:item="getBodyItem(col, rowIndex)" :value="row[col.prop]" |
|
|
|
@change="(e) => onBodyValueChange(rowIndex, colIndex, e, row, col.bodyType)" |
|
|
|
:error="hasError(rowIndex, colIndex, col.prop)" |
|
|
|
@update:error="onErrorUpdate(rowIndex, colIndex, col.prop, $event)" |
|
|
|
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.prop)" /> |
|
|
|
</div> |
|
|
|
<div v-else-if="col.bodyType === 'operableInput'" class="flex flex1"> |
|
|
|
<div class="flex1 grid-container"> |
|
|
|
@ -125,9 +126,9 @@ |
|
|
|
:fieldItemLabel="fieldItemLabel" type="input" |
|
|
|
@blur="onOperableInputBlur(opItem, $event)" class="body-input" |
|
|
|
:item="getBodyItem(col, rowIndex)" :value="opItem.value" |
|
|
|
:error="hasError(rowIndex, colIndex, rowIndex+col.prop+itemIndex)" |
|
|
|
@update:error="onErrorUpdate(rowIndex, colIndex, rowIndex+col.prop+itemIndex, $event)" |
|
|
|
:orange-bg="hasOrangeBg(rowIndex, colIndex, rowIndex+col.prop+itemIndex)" /> |
|
|
|
:error="hasError(rowIndex, colIndex, rowIndex + col.prop + itemIndex)" |
|
|
|
@update:error="onErrorUpdate(rowIndex, colIndex, rowIndex + col.prop + itemIndex, $event)" |
|
|
|
:orange-bg="hasOrangeBg(rowIndex, colIndex, rowIndex + col.prop + itemIndex)" /> |
|
|
|
<el-popconfirm confirm-button-text='确认' cancel-button-text='取消' |
|
|
|
icon="el-icon-info" icon-color="red" title="确认删除当前输入框?" |
|
|
|
@confirm="removeOperableInput(rowIndex, colIndex, col.prop, itemIndex)"> |
|
|
|
@ -136,7 +137,8 @@ |
|
|
|
</el-popconfirm> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<i class="el-icon-circle-plus add-icon" v-if="templateFillType === 'actFill' && !row.isComplete" |
|
|
|
<i class="el-icon-circle-plus add-icon" |
|
|
|
v-if="templateFillType === 'actFill' && !row.isComplete" |
|
|
|
@click="addOperableInput(rowIndex, colIndex, col.prop)"></i> |
|
|
|
</div> |
|
|
|
|
|
|
|
@ -158,7 +160,7 @@ |
|
|
|
@onRegentSubmit="(data, inputValue) => onRegentSubmit(data, inputValue, col, rowIndex, colIndex, row, col.prop)" |
|
|
|
@beforeReagentSubmit="(data, callback) => onBeforeReagentSubmit(data, callback, col, row)" |
|
|
|
@update:error="onErrorUpdate(rowIndex, colIndex, col.prop, $event)" |
|
|
|
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.prop)" /> |
|
|
|
:orange-bg="regentIsExpired(col.prop,rowIndex)" /> |
|
|
|
</div> |
|
|
|
<template v-else-if="col.bodyType === 'span'"> |
|
|
|
<div class="body-span"> |
|
|
|
@ -201,7 +203,8 @@ |
|
|
|
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.otherCode)" /> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="m-l-5 flex" :class="{ 'flex1': col.bodySubType !== 'button' }" |
|
|
|
<div class="m-l-5 flex" |
|
|
|
:class="{ 'flex1': (col.bodySubType !== 'button' && col.bodySubType !== 'span') }" |
|
|
|
v-if="isShowBodySub(col, row)"> |
|
|
|
<template |
|
|
|
v-if="col.bodySubType === 'inputNumber' || col.bodySubType === 'input' || col.bodySubType === 'select'"> |
|
|
|
@ -209,7 +212,6 @@ |
|
|
|
:fieldItemLabel="fieldItemLabel" :type="col.bodySubType" |
|
|
|
@blur="onSubBlur(rowIndex, col.bodySubKey, $event)" |
|
|
|
@copy="onCopy(rowIndex, col)" :item="getBodySubItem(col)" |
|
|
|
|
|
|
|
v-model="row[col.bodySubKey]" |
|
|
|
@change="onBodySubValueChange(rowIndex, colIndex, $event, row, col.bodySubType)" |
|
|
|
:error="hasError(rowIndex, colIndex, col.bodySubKey)" |
|
|
|
@ -224,8 +226,8 @@ |
|
|
|
<template v-else-if="col.bodySubType === 'button'"> |
|
|
|
<HandleFormItem class="ml-10" type="button" :item="getBodyButtonItem(col, rowIndex)" |
|
|
|
:value="row[col.bodySubKey]" |
|
|
|
:fieldKey="prefixKey + '_' + col.bodySubKey + '_' + row.id" |
|
|
|
@clickButton="(e,val, data) => handleClickButton(e, data, col.bodySubKey, rowIndex, colIndex)" /> |
|
|
|
:fieldKey="prefixKey + '_' + col.bodySubKey + '_' + row.id" |
|
|
|
@clickButton="(e, val, data) => handleClickButton(e, data, col.bodySubKey, rowIndex, colIndex)" /> |
|
|
|
</template> |
|
|
|
<div class="flex flex1" v-else-if="isRegent(col, 'bodySubType')"> |
|
|
|
<HandleFormItem :fieldKey="prefixKey + '_' + col.bodySubKey + '_' + row.id" |
|
|
|
@ -236,13 +238,13 @@ |
|
|
|
@onRegentSubmit="(data, inputValue) => onRegentSubmit(data, inputValue, col, rowIndex, colIndex, row, col.bodySubKey)" |
|
|
|
@beforeReagentSubmit="(data, callback) => onBeforeReagentSubmit(data, callback, col, row)" |
|
|
|
@update:error="onErrorUpdate(rowIndex, colIndex, col.bodySubKey, $event)" |
|
|
|
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.bodySubKey)" /> |
|
|
|
:orange-bg="regentIsExpired(col.bodySubKey,rowIndex)" /> |
|
|
|
</div> |
|
|
|
<template v-if="col.bodyThirdType === 'button'"> |
|
|
|
<HandleFormItem class="ml-10" type="button" :item="getBodyThirdButtonItem(col, rowIndex)" |
|
|
|
:value="row[col.bodyThirdKey]" |
|
|
|
:fieldKey="prefixKey + '_' + col.bodyThirdKey + '_' + row.id" |
|
|
|
@clickButton="(e,val, data) => handleClickButton(e, data, col.bodyThirdKey, rowIndex, colIndex)" /> |
|
|
|
<HandleFormItem class="ml-10" type="button" |
|
|
|
:item="getBodyThirdButtonItem(col, rowIndex)" :value="row[col.bodyThirdKey]" |
|
|
|
:fieldKey="prefixKey + '_' + col.bodyThirdKey + '_' + row.id" |
|
|
|
@clickButton="(e, val, data) => handleClickButton(e, data, col.bodyThirdKey, rowIndex, colIndex)" /> |
|
|
|
</template> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -278,6 +280,7 @@ import { EventBus } from "@/utils/eventBus"; |
|
|
|
import { getuuid, justUpdateFilledFormData } from "@/utils/index.js"; |
|
|
|
import { isRegent } from "@/utils/index.js"; |
|
|
|
import { isValueEmpty } from '@/utils/index.js'; |
|
|
|
import moment from 'moment'; |
|
|
|
|
|
|
|
import _ from "lodash"; |
|
|
|
export default { |
|
|
|
@ -465,7 +468,7 @@ export default { |
|
|
|
isValid = value && value.some(tag => tag.checked === true); |
|
|
|
} else if (this.templateFillType === "preFill") { |
|
|
|
// preFill时,检查所有tagValue是否不为空 |
|
|
|
isValid = value && value.every(tag => tag.tagValue && (tag.tagValue+'').trim() !== ''); |
|
|
|
isValid = value && value.every(tag => tag.tagValue && (tag.tagValue + '').trim() !== ''); |
|
|
|
} |
|
|
|
this.onErrorUpdate(rowIndex, colIndex, col.prop, !isValid); |
|
|
|
this.$emit("onCheckboxTagChange", rowIndex, col, value) |
|
|
|
@ -505,7 +508,7 @@ export default { |
|
|
|
}, |
|
|
|
//获取操作栏的列 |
|
|
|
getOperationColumns() { |
|
|
|
return { columnsData: this.columns, headerSelectFields: this.headerSelectFields,fieldItemLabel: this.fieldItemLabel } |
|
|
|
return { columnsData: this.columns, headerSelectFields: this.headerSelectFields, fieldItemLabel: this.fieldItemLabel } |
|
|
|
}, |
|
|
|
//获取其他下拉框的配置 |
|
|
|
getOtherItem(sItem) { |
|
|
|
@ -527,9 +530,9 @@ export default { |
|
|
|
}, |
|
|
|
// 点击事件 |
|
|
|
handleClickable(col, rowIndex, colIndex, row) { |
|
|
|
if (this.templateFillType !== 'actFill') { |
|
|
|
return |
|
|
|
} |
|
|
|
// if (this.templateFillType !== 'actFill') { |
|
|
|
// return |
|
|
|
// } |
|
|
|
this.$emit("clickable", col, rowIndex, row) |
|
|
|
}, |
|
|
|
onBeforeReagentSubmit(data, callback, col, row) { |
|
|
|
@ -543,11 +546,23 @@ export default { |
|
|
|
|
|
|
|
this.$emit("onHeaderRegentSubmit", { selectInfo: data, headerIndex, colIndex, headerFields: this.headerFields }) |
|
|
|
}, |
|
|
|
//是否过期 |
|
|
|
regentIsExpired(key,rowIndex) { |
|
|
|
const item = this.localDataSource[rowIndex]; |
|
|
|
const { yxq, sxrq } = item[`selectInfo_${key}`] || {}; |
|
|
|
const rq = sxrq || yxq; |
|
|
|
if (rq) { |
|
|
|
const time = moment(yxq); |
|
|
|
return time.isBefore(moment()); |
|
|
|
} else { |
|
|
|
return false; |
|
|
|
} |
|
|
|
}, |
|
|
|
onRegentSubmit(data, inputValue, col, rowIndex, colIndex, row, key) { |
|
|
|
// if (this.templateFillType !== 'actFill') { |
|
|
|
// return |
|
|
|
// } |
|
|
|
this.updateDataSourceByRowIndex(rowIndex, { [key]: inputValue }) |
|
|
|
this.updateDataSourceByRowIndex(rowIndex, { [key]: inputValue, [`selectInfo_${key}`]: data.selectInfo }) |
|
|
|
this.$emit("onRegentSubmit", { selectInfo: data, key, col, rowIndex, colIndex, rowData: row }) |
|
|
|
}, |
|
|
|
isShowAddRos() { |
|
|
|
@ -664,7 +679,7 @@ export default { |
|
|
|
if (this.templateFillType === "actFill") { |
|
|
|
// actFill时,检查是否有checked为true的项 |
|
|
|
const hasChecked = mainValue && mainValue.some(tag => tag.checked === true); |
|
|
|
if (!hasChecked && !col.bodyDisabled) { |
|
|
|
if (!hasChecked) { |
|
|
|
const errorItem = { |
|
|
|
rowIndex, |
|
|
|
colIndex, |
|
|
|
@ -677,8 +692,8 @@ export default { |
|
|
|
} |
|
|
|
} else if (this.templateFillType === "preFill") { |
|
|
|
// preFill时,检查所有tagValue是否不为空 |
|
|
|
const allTagValuesFilled = mainValue && mainValue.every(tag => tag.tagValue && (tag.tagValue+'').trim() !== ''); |
|
|
|
if (!allTagValuesFilled && !col.bodyDisabled) { |
|
|
|
const allTagValuesFilled = mainValue && mainValue.every(tag => tag.tagValue && (tag.tagValue + '').trim() !== ''); |
|
|
|
if (!allTagValuesFilled) { |
|
|
|
const errorItem = { |
|
|
|
rowIndex, |
|
|
|
colIndex, |
|
|
|
@ -693,7 +708,7 @@ export default { |
|
|
|
} else if (col.bodyType === "checkbox") { |
|
|
|
// checkbox类型的校验逻辑 |
|
|
|
// checkbox只在actFill时进行必填校验 |
|
|
|
if (!col.bodyDisabled && this.templateFillType === 'actFill' && !col.isNeedCheck) { |
|
|
|
if (this.templateFillType === 'actFill' && !col.isNeedCheck) { |
|
|
|
// 单个checkbox:值必须为true |
|
|
|
// checkbox组:至少选中一个 |
|
|
|
const hasChecked = Array.isArray(mainValue) ? mainValue.length > 0 : mainValue === true; |
|
|
|
@ -709,13 +724,13 @@ export default { |
|
|
|
this.formErrors.push(errorItem); |
|
|
|
} |
|
|
|
} |
|
|
|
} else if(col.bodyType === "operableInput"){ |
|
|
|
} else if (col.bodyType === "operableInput") { |
|
|
|
mainValue.forEach((itemItem, itemIndex) => { |
|
|
|
if (isValueEmpty(itemItem.value)) { |
|
|
|
const errorItem = { |
|
|
|
rowIndex, |
|
|
|
colIndex, |
|
|
|
field: rowIndex+col.prop+itemIndex, |
|
|
|
field: rowIndex + col.prop + itemIndex, |
|
|
|
label: this.$t(col.label), |
|
|
|
error: `请填写${this.$t(col.label)}` |
|
|
|
}; |
|
|
|
@ -724,8 +739,9 @@ export default { |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
}else { |
|
|
|
if (isValueEmpty(mainValue) && !col.bodyDisabled && col.bodyType !== 'span' && col.bodyType !== 'button') { |
|
|
|
} else { |
|
|
|
if (isValueEmpty(mainValue) &&col.bodyFillType === this.templateFillType && col.bodyType !== 'span' && col.bodyType !== 'button') { |
|
|
|
console.log(col.bodyFillType,col.bodySubFillType,"bodySubFillType") |
|
|
|
const errorItem = { |
|
|
|
rowIndex, |
|
|
|
colIndex, |
|
|
|
@ -737,7 +753,7 @@ export default { |
|
|
|
this.formErrors.push(errorItem); |
|
|
|
} |
|
|
|
// 检查子字段(如果有) |
|
|
|
if (col.bodySubKey && !col.bodySubDisabled && col.bodySubFillType === this.templateFillType && col.bodySubType !== 'span' && col.bodySubType !== "button") { |
|
|
|
if (col.bodySubKey && col.bodySubFillType === this.templateFillType && col.bodySubType !== 'span' && col.bodySubType !== "button") { |
|
|
|
const subValue = row[col.bodySubKey]; |
|
|
|
if (isValueEmpty(subValue)) { |
|
|
|
const errorItem = { |
|
|
|
@ -797,6 +813,13 @@ export default { |
|
|
|
!(error.rowIndex === -1 && |
|
|
|
error.field === col.headerSelectKey) |
|
|
|
); |
|
|
|
|
|
|
|
if (col && col.headerSelectTo) { |
|
|
|
this.formErrors = this.formErrors.filter(error => |
|
|
|
!(error.rowIndex === -1 && |
|
|
|
error.field === col.headerSelectTo) |
|
|
|
); |
|
|
|
} |
|
|
|
}, |
|
|
|
// 检查并应用 compareTo 逻辑 |
|
|
|
checkCompareToLogic(rowIndex, colIndex, colKey, value) { |
|
|
|
@ -942,20 +965,20 @@ export default { |
|
|
|
// 否则使用列配置的checkboxLabel |
|
|
|
item.checkboxLabel = this.$t(col.checkboxLabel); |
|
|
|
} |
|
|
|
if (col.bodyType === "operableInput" ) { |
|
|
|
if(currentItem.isComplete || this.templateFillType !== 'actFill'){ |
|
|
|
if (col.bodyType === "operableInput") { |
|
|
|
if (currentItem.isComplete || this.templateFillType !== 'actFill') { |
|
|
|
item.disabled = true; |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
item.disabled = false; |
|
|
|
} |
|
|
|
} |
|
|
|
if(col.noBorder){ |
|
|
|
if (col.noBorder) { |
|
|
|
item.noBorder = true; |
|
|
|
} |
|
|
|
if(col.bodyLayout){ |
|
|
|
if (col.bodyLayout) { |
|
|
|
item.layout = col.bodyLayout; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return item |
|
|
|
}, |
|
|
|
getBodyButtonItem(col,) { |
|
|
|
@ -1022,15 +1045,15 @@ export default { |
|
|
|
this.checkCompareToOnDataLoad(); |
|
|
|
}, |
|
|
|
// 根据行索引更新数据 autoUpdateRecord 是否自动更新记录 |
|
|
|
updateDataSourceByRowIndex(rowIndex, data,updateFieldsInfo={}) { |
|
|
|
const {signData,updateFields = []} = updateFieldsInfo; |
|
|
|
updateDataSourceByRowIndex(rowIndex, data, updateFieldsInfo = {}) { |
|
|
|
const { signData, updateFields = [] } = updateFieldsInfo; |
|
|
|
this.oldLocalDataSource = JSON.parse(JSON.stringify(this.localDataSource)); |
|
|
|
this.localDataSource[rowIndex] = { ...this.localDataSource[rowIndex], ...data }; |
|
|
|
this.localDataSource = [...this.localDataSource]; |
|
|
|
if(updateFields.length > 0){ |
|
|
|
updateFields.map((key)=>{ |
|
|
|
const ref = this.$refs[key+rowIndex]; |
|
|
|
if(ref){ |
|
|
|
if (updateFields.length > 0) { |
|
|
|
updateFields.map((key) => { |
|
|
|
const ref = this.$refs[key + rowIndex]; |
|
|
|
if (ref) { |
|
|
|
ref[0].handleUpdateRecord(signData, { oldValue: this.oldLocalDataSource[rowIndex][key], inputValue: data[key] }); |
|
|
|
} |
|
|
|
}) |
|
|
|
@ -1039,7 +1062,7 @@ export default { |
|
|
|
this.checkCompareToOnDataLoad(); |
|
|
|
// justUpdateFilledFormData(); |
|
|
|
}, |
|
|
|
pushDataSource(data=[]) { |
|
|
|
pushDataSource(data = []) { |
|
|
|
this.localDataSource.push(...data); |
|
|
|
this.localDataSource = [...this.localDataSource]; |
|
|
|
this.checkCompareToOnDataLoad(); |
|
|
|
@ -1087,7 +1110,7 @@ export default { |
|
|
|
}, |
|
|
|
onAddRow() { |
|
|
|
if (this.$listeners && this.$listeners['onAddRow']) { |
|
|
|
this.$emit('onAddRow',{dataSource:this.localDataSource}); |
|
|
|
this.$emit('onAddRow', { dataSource: this.localDataSource }); |
|
|
|
return; |
|
|
|
} |
|
|
|
this.addRow({ |
|
|
|
@ -1095,8 +1118,8 @@ export default { |
|
|
|
actSolutionConcentrationPrecision: 3,//小数点精度默认为3 |
|
|
|
targetDiluentVolumePrecision: 3,//小数点精度默认为3 |
|
|
|
targetStartSolutionVolumePrecision: 3,//小数点精度默认为3 |
|
|
|
id:getuuid(), |
|
|
|
rowIndex:this.localDataSource.length, |
|
|
|
id: getuuid(), |
|
|
|
rowIndex: this.localDataSource.length, |
|
|
|
}); |
|
|
|
justUpdateFilledFormData() |
|
|
|
}, |
|
|
|
|