From 49f99bdd4b08fbbe692efdfe52ae3ca29f4e8c6c Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Tue, 12 Jul 2022 14:57:05 +0800 Subject: [PATCH] 增加跳转页面选择组件 --- forms/select/index.js | 2 + forms/select/CJumpSelect.vue | 79 +++++++++++++++++++++++++++++++++++++++ forms/form/CForm.vue | 3 + 3 files changed, 84 insertions(+), 0 deletions(-) diff --git a/forms/form/CForm.vue b/forms/form/CForm.vue index 8e42097..3cb1754 100644 --- a/forms/form/CForm.vue +++ b/forms/form/CForm.vue @@ -92,6 +92,9 @@ callback && callback(true); }); }, + $submit() { + this.handleSubmit(); + }, }, mounted() { // 当表单项变化时 diff --git a/forms/select/CJumpSelect.vue b/forms/select/CJumpSelect.vue new file mode 100644 index 0000000..deb1be1 --- /dev/null +++ b/forms/select/CJumpSelect.vue @@ -0,0 +1,79 @@ +/** + * CJumpSelect + * @author Tevin + */ + +<template> + <view + class="c-select" + :class="readOnly ? 'read-only':''" + > + <view @tap="evt => handleGoSelect()"> + <AtInput + :name="itemRes.name" + :title="itemRes.label" + :required="itemRes.required" + :disabled="itemRes.disabled" + :error="itemRes.error" + :placeholder="placeholder" + :value="choose.name" + > + <view + v-show="!readOnly" + class="at-icon at-icon-chevron-right" + /> + </AtInput> + </view> + </view> +</template> + +<script> +import Taro from '@tarojs/taro'; +import { AtInput } from 'taro-ui-vue'; +import './cSelect.scss'; + +export default { + name: 'CJumpSelect', + components: { + AtInput, + }, + props: { + // 表单数据资源(表单组件内部机制专用) + itemRes: Object, + // 占位提示 + placeholder: String, + // 跨页选择模式 + onPageSelectCall: Function, + // 只读模式 + readOnly: { + type: Boolean, + default: false, + }, + }, + data() { + return { + choose: { + name: '', + value: null, + }, + }; + }, + computed: {}, + methods: { + handleChange(evt) { + const item = this.options[evt.value]; + this.itemRes.onChange(item[this.optionKey]); + }, + handleGoSelect() { + this.onPageSelectCall(selected => { + this.choose.name = selected.name; + this.choose.value = selected.value; + this.itemRes.onChange(selected.value); + }); + }, + }, + beforeDestroy() { + this.onPageSelectCall(null); + }, +}; +</script> \ No newline at end of file diff --git a/forms/select/index.js b/forms/select/index.js index 0e6b3da..1d41a5f 100644 --- a/forms/select/index.js +++ b/forms/select/index.js @@ -4,7 +4,9 @@ */ import CSelect from '@components/forms/select/CSelect.vue'; +import CJumpSelect from '@components/forms/select/CJumpSelect.vue'; export { CSelect, + CJumpSelect, } \ No newline at end of file -- Gitblit v1.9.1