12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- <template>
- <ie-form-picker :label="rule.label" :placeholder="placeholder" :remark="rule.description"
- :model-value="formModel[rule.fieldName]" disable-arrow @click="handleShowKeyboard"/>
- <uv-keyboard ref="keyboard" :mode="keyboardMode" :dot-disabled="rule.dotDisable" :tips="localValue"
- @confirm="handleValueConfirm" @change="handleValueChange" @backspace="handleValueDelete"/>
- </template>
- <script>
- import AIFormRuleField from "@/pages/ie/components/ai-form/items/templates/AIFormRuleField";
- import IeFormPicker from "@/pages/ie/components/picker/ie-form-picker.vue";
- export default {
- name: "ai-form-field-number",
- components: {IeFormPicker},
- mixins: [AIFormRuleField],
- computed: {
- placeholder() {
- return this.rule.placeholder || '请输入'
- },
- keyboardMode() {
- const supports = ['number', 'card', 'car']
- const {keyboardMode} = this.rule
- if (keyboardMode && !supports.includes(keyboardMode)) console.log('error keyboard mode in render rule:', keyboardMode)
- return supports.includes(keyboardMode) ? keyboardMode : 'number'
- }
- },
- data() {
- return {
- localValue: ''
- }
- },
- methods: {
- handleShowKeyboard() {
- this.localValue = ''
- this.$refs.keyboard.open()
- },
- handleValueChange(val) {
- this.localValue += val
- },
- handleValueDelete() {
- const {length} = this.localValue
- if (length) this.localValue = this.localValue.substring(0, length - 1)
- },
- handleValueConfirm() {
- this.formModel[this.rule.fieldName] = this.localValue
- this.$refs.keyboard.close()
- this.clearValidate()
- }
- }
- }
- </script>
- <style scoped>
- </style>
|