pref(X-Pack): 数据填报表数字输入框输入优化

This commit is contained in:
ulleo 2024-04-02 19:46:40 +08:00
parent af0e6d87ad
commit 1ac0997181
6 changed files with 60 additions and 17 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -171,12 +171,21 @@ export default {
methods: { methods: {
getTypeOptions(formOption) { getTypeOptions(formOption) {
const _options = [] 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: '字符串' }) _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: '长文本' }) _options.push({ value: 'text', label: '长文本' })
} }
if (formOption.type === 'input' && formOption.settings.inputType === 'number') { if (formOption.type === 'input' && formOption.settings.inputType === 'number') {
_options.push({ value: 'number', label: '整型数字' }) _options.push({ value: 'number', label: '整型数字' })
_options.push({ value: 'decimal', label: '小数数字' }) _options.push({ value: 'decimal', label: '小数数字' })

View File

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