Merge pull request #8899 from ulleo/dev

pref(X-Pack): 数据填报表数字输入框输入优化
This commit is contained in:
ulleo 2024-04-02 19:47:07 +08:00 committed by GitHub
commit b72477ae4f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 60 additions and 17 deletions

View File

@ -222,8 +222,13 @@
<el-input-number
v-model.number="form.publishRangeTime"
class="w140"
min="1"
step="1"
:min="1"
:max="100"
:step="1"
:precision="0"
@change="onPublishRangeTimeChange(form)"
@blur="onPublishRangeTimeChange(form)"
@keyup.enter.native="onPublishRangeTimeChange(form)"
/>
<el-select
v-model="form.publishRangeTimeType"
@ -799,6 +804,13 @@ export default {
return callback(new Error('收件人、角色、组织至少选择一项'))
}
return callback()
},
onPublishRangeTimeChange(form) {
if (!form.publishRangeTime) {
this.$nextTick(() => {
form.publishRangeTime = 1
})
}
}
}
}

View File

@ -1,5 +1,5 @@
<script>
import { forEach, find, concat, cloneDeep } from 'lodash-es'
import { forEach, find, concat, cloneDeep, floor } from 'lodash-es'
import { PHONE_REGEX, EMAIL_REGEX } from '@/utils/validate'
import { newFormRowData, saveFormRowData, userFillFormData } from '@/views/dataFilling/form/dataFilling'
@ -123,6 +123,17 @@ export default {
closeDrawer() {
this.$emit('update:showDrawer', false)
},
onNumberChange(item) {
let value
if (item.settings.mapping.type === 'number') {
value = floor(item.value, 0)
} else {
value = floor(item.value, 8)
}
this.$nextTick(() => {
item.value = value
})
},
doSave() {
this.$refs['mForm'].validate((valid) => {
if (valid) {
@ -235,6 +246,8 @@ export default {
:readonly="readonly"
:placeholder="item.settings.placeholder"
size="small"
:show-word-limit="item.value !== undefined && item.value.length > 250"
maxlength="255"
/>
<el-input-number
v-if="item.type === 'input' && item.settings.inputType === 'number'"
@ -244,7 +257,13 @@ export default {
:placeholder="item.settings.placeholder"
style="width: 100%"
controls-position="right"
:precision="item.settings.mapping.type === 'number' ? 0 : undefined"
size="small"
:min="-999999999999"
:max="999999999999"
@change="onNumberChange(item)"
@blur="onNumberChange(item)"
@keyup.enter.native="onNumberChange(item)"
/>
<el-input
v-else-if="item.type === 'textarea'"

View File

@ -656,7 +656,7 @@ export default {
obj[key] = undefined
}
} else {
obj[key] = value
obj[key] = value === null ? undefined : value
}
})
_data.push({

View File

@ -312,6 +312,9 @@ export default {
item.value = []
} else {
item.value = undefined
if (item.settings.mapping.type === 'text') {
item.settings.mapping.type = undefined
}
}
},
getRules(item) {
@ -556,8 +559,8 @@ export default {
>
<el-input
v-if="item.type === 'input' && item.settings.inputType !== 'number'"
v-model="item.value"
:key="item.id + item.settings.inputType"
v-model="item.value"
:type="item.settings.inputType"
:required="item.settings.required"
:placeholder="item.settings.placeholder"
@ -565,8 +568,8 @@ export default {
/>
<el-input-number
v-if="item.type === 'input' && item.settings.inputType === 'number'"
v-model="item.value"
:key="item.id + item.settings.inputType"
v-model="item.value"
:required="item.settings.required"
:placeholder="item.settings.placeholder"
style="width: 100%"
@ -575,8 +578,8 @@ export default {
/>
<el-input
v-else-if="item.type === 'textarea'"
v-model="item.value"
:key="item.id + 'textarea'"
v-model="item.value"
type="textarea"
:required="item.settings.required"
:placeholder="item.settings.placeholder"
@ -584,8 +587,8 @@ export default {
/>
<el-select
v-else-if="item.type === 'select'"
v-model="item.value"
:key="item.id + 'select'"
v-model="item.value"
:required="item.settings.required"
:placeholder="item.settings.placeholder"
style="width: 100%"
@ -602,8 +605,8 @@ export default {
</el-select>
<el-radio-group
v-else-if="item.type === 'radio'"
v-model="item.value"
:key="item.id + 'radio'"
v-model="item.value"
:required="item.settings.required"
style="width: 100%"
size="small"
@ -617,8 +620,8 @@ export default {
</el-radio-group>
<el-checkbox-group
v-else-if="item.type === 'checkbox'"
v-model="item.value"
:key="item.id + 'checkbox'"
v-model="item.value"
:required="item.settings.required"
size="small"
>
@ -631,8 +634,8 @@ export default {
</el-checkbox-group>
<el-date-picker
v-else-if="item.type === 'date' && !item.settings.enableTime"
v-model="item.value"
:key="item.id + 'date'"
v-model="item.value"
:required="item.settings.required"
type="date"
:placeholder="item.settings.placeholder"
@ -641,8 +644,8 @@ export default {
/>
<el-date-picker
v-else-if="item.type === 'date' && item.settings.enableTime"
v-model="item.value"
:key="item.id + 'dateEnableTime'"
v-model="item.value"
:required="item.settings.required"
type="datetime"
:placeholder="item.settings.placeholder"
@ -651,9 +654,9 @@ export default {
/>
<el-date-picker
v-else-if="item.type === 'dateRange' && !item.settings.enableTime"
:key="item.id + 'dateRangeEnableTime'"
v-model="item.value"
:required="item.settings.required"
:key="item.id + 'dateRangeEnableTime'"
type="daterange"
:range-separator="item.settings.rangeSeparator"
:start-placeholder="item.settings.startPlaceholder"
@ -663,9 +666,9 @@ export default {
/>
<el-date-picker
v-else-if="item.type === 'dateRange' && item.settings.enableTime"
:key="item.id + 'datetimerangeRangeEnableTime'"
v-model="item.value"
:required="item.settings.required"
:key="item.id + 'datetimerangeRangeEnableTime'"
type="datetimerange"
:range-separator="item.settings.rangeSeparator"
:start-placeholder="item.settings.startPlaceholder"

View File

@ -171,12 +171,21 @@ export default {
methods: {
getTypeOptions(formOption) {
const _options = []
if (formOption.type !== 'date' && formOption.type !== 'dateRange' && formOption.settings.inputType !== 'number' && formOption.type !== 'textarea') {
if (formOption.type !== 'date' &&
formOption.type !== 'dateRange' &&
formOption.settings.inputType !== 'number' &&
formOption.type !== 'textarea' &&
formOption.type !== 'checkbox' &&
!(formOption.type === 'select' && formOption.settings.multiple)
) {
_options.push({ value: 'nvarchar', label: '字符串' })
}
if (formOption.type === 'textarea') {
if (formOption.type === 'checkbox' ||
formOption.type === 'select' && formOption.settings.multiple ||
formOption.type === 'textarea') {
_options.push({ value: 'text', label: '长文本' })
}
if (formOption.type === 'input' && formOption.settings.inputType === 'number') {
_options.push({ value: 'number', label: '整型数字' })
_options.push({ value: 'decimal', label: '小数数字' })

View File

@ -269,7 +269,7 @@ export default {
obj[key] = undefined
}
} else {
obj[key] = value
obj[key] = value === null ? undefined : value
}
})