Showing
3 changed files
with
33 additions
and
13 deletions
| 1 | <!-- | 1 | <!-- |
| 2 | * @Date: 2022-08-30 11:34:19 | 2 | * @Date: 2022-08-30 11:34:19 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2024-12-23 15:44:01 | 4 | + * @LastEditTime: 2025-02-25 15:41:38 |
| 5 | * @FilePath: /data-table/src/components/CheckboxField/index.vue | 5 | * @FilePath: /data-table/src/components/CheckboxField/index.vue |
| 6 | * @Description: 多项选择控件 | 6 | * @Description: 多项选择控件 |
| 7 | --> | 7 | --> |
| ... | @@ -20,15 +20,17 @@ | ... | @@ -20,15 +20,17 @@ |
| 20 | <template #input> | 20 | <template #input> |
| 21 | <van-checkbox-group v-model="checkbox_value" :direction="item.component_props.direction" | 21 | <van-checkbox-group v-model="checkbox_value" :direction="item.component_props.direction" |
| 22 | :max="item.component_props.max" style="width: 100%"> | 22 | :max="item.component_props.max" style="width: 100%"> |
| 23 | - <div v-for="x in item.component_props.options" :key="x.title" class="checkbox-wrapper" :style="{ border: item.component_props.readonly ? 0 : ''}"> | 23 | + <div v-for="x in item.component_props.options" :key="x.title" class="checkbox-wrapper" :style="{ border: item.component_props.readonly ? 0 : '', backgroundColor: x.background_color || ''}"> |
| 24 | <!-- <div v-if="item.component_props.readonly"> | 24 | <!-- <div v-if="item.component_props.readonly"> |
| 25 | <div v-if="checkbox_value.includes(x.value)" role="checkbox" class="van-checkbox van-checkbox--vertical" tabindex="0" aria-checked="true" data-v-3722f8ba="" style="margin-bottom: 0.25rem;"><div class="van-checkbox__icon van-checkbox__icon--square van-checkbox__icon--checked" style="font-size: 1rem;"><i class="van-badge__wrapper van-icon van-icon-success" style="border-color: rgb(194, 145, 95); background-color: rgb(194, 145, 95);"></i></div><span class="van-checkbox__label">{{ x.title }}</span></div> | 25 | <div v-if="checkbox_value.includes(x.value)" role="checkbox" class="van-checkbox van-checkbox--vertical" tabindex="0" aria-checked="true" data-v-3722f8ba="" style="margin-bottom: 0.25rem;"><div class="van-checkbox__icon van-checkbox__icon--square van-checkbox__icon--checked" style="font-size: 1rem;"><i class="van-badge__wrapper van-icon van-icon-success" style="border-color: rgb(194, 145, 95); background-color: rgb(194, 145, 95);"></i></div><span class="van-checkbox__label">{{ x.title }}</span></div> |
| 26 | <div v-else role="checkbox" class="van-checkbox van-checkbox--vertical" tabindex="0" aria-checked="false" data-v-3722f8ba="" style="margin-bottom: 0.25rem;"><div class="van-checkbox__icon van-checkbox__icon--square" style="font-size: 1rem;"><i class="van-badge__wrapper van-icon van-icon-success" style=""></i></div><span class="van-checkbox__label">{{ x.title }}</span></div> | 26 | <div v-else role="checkbox" class="van-checkbox van-checkbox--vertical" tabindex="0" aria-checked="false" data-v-3722f8ba="" style="margin-bottom: 0.25rem;"><div class="van-checkbox__icon van-checkbox__icon--square" style="font-size: 1rem;"><i class="van-badge__wrapper van-icon van-icon-success" style=""></i></div><span class="van-checkbox__label">{{ x.title }}</span></div> |
| 27 | </div> | 27 | </div> |
| 28 | <van-checkbox v-else @click="onClick(x)" :name="x.title" icon-size="1rem" shape="square" | 28 | <van-checkbox v-else @click="onClick(x)" :name="x.title" icon-size="1rem" shape="square" |
| 29 | :checked-color="themeVars.radioColor" style="margin-bottom: 0.25rem">{{ x.title }}</van-checkbox> --> | 29 | :checked-color="themeVars.radioColor" style="margin-bottom: 0.25rem">{{ x.title }}</van-checkbox> --> |
| 30 | + <van-config-provider :theme-vars="{ checkboxLabelColor: x.color }"> | ||
| 30 | <van-checkbox @click="onClick(x)" :name="x.title" icon-size="1rem" shape="square" | 31 | <van-checkbox @click="onClick(x)" :name="x.title" icon-size="1rem" shape="square" |
| 31 | :checked-color="themeVars.radioColor" style="margin-bottom: 0.25rem">{{ x.title }}</van-checkbox> | 32 | :checked-color="themeVars.radioColor" style="margin-bottom: 0.25rem">{{ x.title }}</van-checkbox> |
| 33 | + </van-config-provider> | ||
| 32 | <van-field v-if="checkbox_value.includes(x.value) && x.is_input" :name="'_' + item.key" @blur="onBlur(x)" v-model="x.affix" | 34 | <van-field v-if="checkbox_value.includes(x.value) && x.is_input" :name="'_' + item.key" @blur="onBlur(x)" v-model="x.affix" |
| 33 | label=" " label-width="5px" :placeholder="x.input_placeholder" :rules="x.input_required ? rules : ''" | 35 | label=" " label-width="5px" :placeholder="x.input_placeholder" :rules="x.input_required ? rules : ''" |
| 34 | :required="x.input_required" :readonly="item.component_props.readonly" class="affix-input" /> | 36 | :required="x.input_required" :readonly="item.component_props.readonly" class="affix-input" /> |
| ... | @@ -36,8 +38,8 @@ | ... | @@ -36,8 +38,8 @@ |
| 36 | </van-checkbox-group> | 38 | </van-checkbox-group> |
| 37 | </template> | 39 | </template> |
| 38 | </van-field> | 40 | </van-field> |
| 39 | - <div v-else style="padding: 0.5rem 1.3rem;"> | 41 | + <div v-else class="readonly-wrapper"> |
| 40 | - <span v-for="(item, index) in checkbox_value" :key="index" style="font-size: 0.9rem;">{{ item }} </span> | 42 | + <span v-for="(item, index) in checkbox_value" :key="index" class="readonly-text">{{ item }} </span> |
| 41 | </div> | 43 | </div> |
| 42 | </div> | 44 | </div> |
| 43 | </template> | 45 | </template> |
| ... | @@ -210,5 +212,11 @@ onMounted(() => { | ... | @@ -210,5 +212,11 @@ onMounted(() => { |
| 210 | margin-top: 0.5rem; | 212 | margin-top: 0.5rem; |
| 211 | margin-bottom: 0.25rem; | 213 | margin-bottom: 0.25rem; |
| 212 | } | 214 | } |
| 215 | + .readonly-wrapper { | ||
| 216 | + padding: 0.5rem 1.3rem; | ||
| 217 | + } | ||
| 218 | + .readonly-text { | ||
| 219 | + font-size: 0.9rem; | ||
| 220 | + } | ||
| 213 | } | 221 | } |
| 214 | </style> | 222 | </style> | ... | ... |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Date: 2022-08-30 11:34:19 | 2 | * @Date: 2022-08-30 11:34:19 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2024-12-23 15:43:52 | 4 | + * @LastEditTime: 2025-02-25 15:49:20 |
| 5 | * @FilePath: /data-table/src/components/GenderField/index.vue | 5 | * @FilePath: /data-table/src/components/GenderField/index.vue |
| 6 | * @Description: 性别选择控件 | 6 | * @Description: 性别选择控件 |
| 7 | --> | 7 | --> |
| ... | @@ -22,15 +22,17 @@ | ... | @@ -22,15 +22,17 @@ |
| 22 | > | 22 | > |
| 23 | <template #input> | 23 | <template #input> |
| 24 | <van-radio-group @change="onChange(item)" v-model="gender_value" :direction="item.component_props.direction" style="width: 100%"> | 24 | <van-radio-group @change="onChange(item)" v-model="gender_value" :direction="item.component_props.direction" style="width: 100%"> |
| 25 | - <div v-for="x in item.component_props.options" :key="x.value" class="radio-wrapper"> | 25 | + <div v-for="x in item.component_props.options" :key="x.value" class="radio-wrapper" :style="{ backgroundColor: x.background_color || '' }"> |
| 26 | <!-- <div v-if="item.component_props.readonly"> | 26 | <!-- <div v-if="item.component_props.readonly"> |
| 27 | <div v-if="item.component_props.default === x.value" role="radio" class="van-radio van-radio--vertical" tabindex="0" aria-checked="true" data-v-04873bb2="" style="margin-bottom: 0.25rem;"><div class="van-radio__icon van-radio__icon--round van-radio__icon--checked" style="font-size: 1rem;"><i class="van-badge__wrapper van-icon van-icon-success" style="border-color: rgb(194, 145, 95); background-color: rgb(194, 145, 95);"></i></div><span class="van-radio__label">{{ x.title }}</span></div> | 27 | <div v-if="item.component_props.default === x.value" role="radio" class="van-radio van-radio--vertical" tabindex="0" aria-checked="true" data-v-04873bb2="" style="margin-bottom: 0.25rem;"><div class="van-radio__icon van-radio__icon--round van-radio__icon--checked" style="font-size: 1rem;"><i class="van-badge__wrapper van-icon van-icon-success" style="border-color: rgb(194, 145, 95); background-color: rgb(194, 145, 95);"></i></div><span class="van-radio__label">{{ x.title }}</span></div> |
| 28 | <div v-else role="radio" class="van-radio van-radio--vertical" tabindex="0" aria-checked="false" data-v-04873bb2="" style="margin-bottom: 0.25rem;"><div class="van-radio__icon van-radio__icon--round" style="font-size: 1rem;"><i class="van-badge__wrapper van-icon van-icon-success"></i></div><span class="van-radio__label">{{ x.title }}</span></div> | 28 | <div v-else role="radio" class="van-radio van-radio--vertical" tabindex="0" aria-checked="false" data-v-04873bb2="" style="margin-bottom: 0.25rem;"><div class="van-radio__icon van-radio__icon--round" style="font-size: 1rem;"><i class="van-badge__wrapper van-icon van-icon-success"></i></div><span class="van-radio__label">{{ x.title }}</span></div> |
| 29 | </div> | 29 | </div> |
| 30 | <van-radio v-else :name="x.value" icon-size="1rem" :checked-color="themeVars.radioColor" | 30 | <van-radio v-else :name="x.value" icon-size="1rem" :checked-color="themeVars.radioColor" |
| 31 | style="margin-bottom: 0.25rem">{{ x.title }}</van-radio> --> | 31 | style="margin-bottom: 0.25rem">{{ x.title }}</van-radio> --> |
| 32 | + <van-config-provider :theme-vars="{ radioLabelColor: x.color }"> | ||
| 32 | <van-radio :name="x.value" icon-size="1rem" :checked-color="themeVars.radioColor" | 33 | <van-radio :name="x.value" icon-size="1rem" :checked-color="themeVars.radioColor" |
| 33 | style="margin-bottom: 0.25rem">{{ x.title }}</van-radio> | 34 | style="margin-bottom: 0.25rem">{{ x.title }}</van-radio> |
| 35 | + </van-config-provider> | ||
| 34 | </div> | 36 | </div> |
| 35 | </van-radio-group> | 37 | </van-radio-group> |
| 36 | </template> | 38 | </template> | ... | ... |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Date: 2022-08-30 11:34:19 | 2 | * @Date: 2022-08-30 11:34:19 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2024-12-23 15:44:07 | 4 | + * @LastEditTime: 2025-02-25 15:17:28 |
| 5 | * @FilePath: /data-table/src/components/RadioField/index.vue | 5 | * @FilePath: /data-table/src/components/RadioField/index.vue |
| 6 | * @Description: 单项选择控件 | 6 | * @Description: 单项选择控件 |
| 7 | --> | 7 | --> |
| ... | @@ -17,19 +17,29 @@ | ... | @@ -17,19 +17,29 @@ |
| 17 | <template #input> | 17 | <template #input> |
| 18 | <van-radio-group @change="onChange(item)" v-model="radio_value" :direction="item.component_props.direction" | 18 | <van-radio-group @change="onChange(item)" v-model="radio_value" :direction="item.component_props.direction" |
| 19 | style="width: 100%"> | 19 | style="width: 100%"> |
| 20 | - <div v-for="x in item.component_props.options" :key="x.value" class="radio-wrapper" :style="{ border: item.component_props.readonly ? 0 : ''}"> | 20 | + <div v-for="x in item.component_props.options" :key="x.value" class="radio-wrapper" :style="{ border: item.component_props.readonly ? 0 : '', backgroundColor: x.background_color || ''}"> |
| 21 | <div v-if="item.component_props.readonly"> | 21 | <div v-if="item.component_props.readonly"> |
| 22 | <div v-if="default_value === x.value" role="radio" class="van-radio van-radio--vertical" tabindex="0" aria-checked="true" data-v-04873bb2="" style="margin-bottom: 0.25rem;"><div class="van-radio__icon van-radio__icon--round van-radio__icon--checked" style="font-size: 1rem;"><i class="van-badge__wrapper van-icon van-icon-success" style="border-color: rgb(194, 145, 95); background-color: rgb(194, 145, 95);"></i></div><span class="van-radio__label">{{ x.title }}</span></div> | 22 | <div v-if="default_value === x.value" role="radio" class="van-radio van-radio--vertical" tabindex="0" aria-checked="true" data-v-04873bb2="" style="margin-bottom: 0.25rem;"><div class="van-radio__icon van-radio__icon--round van-radio__icon--checked" style="font-size: 1rem;"><i class="van-badge__wrapper van-icon van-icon-success" style="border-color: rgb(194, 145, 95); background-color: rgb(194, 145, 95);"></i></div><span class="van-radio__label">{{ x.title }}</span></div> |
| 23 | <div v-else role="radio" class="van-radio van-radio--vertical" tabindex="0" aria-checked="false" data-v-04873bb2="" style="margin-bottom: 0.25rem;"><div class="van-radio__icon van-radio__icon--round" style="font-size: 1rem;"><i class="van-badge__wrapper van-icon van-icon-success"></i></div><span class="van-radio__label">{{ x.title }}</span></div> | 23 | <div v-else role="radio" class="van-radio van-radio--vertical" tabindex="0" aria-checked="false" data-v-04873bb2="" style="margin-bottom: 0.25rem;"><div class="van-radio__icon van-radio__icon--round" style="font-size: 1rem;"><i class="van-badge__wrapper van-icon van-icon-success"></i></div><span class="van-radio__label">{{ x.title }}</span></div> |
| 24 | <span v-if="default_value === x.value && default_affix_value">{{ default_affix_value }}</span> | 24 | <span v-if="default_value === x.value && default_affix_value">{{ default_affix_value }}</span> |
| 25 | </div> | 25 | </div> |
| 26 | - <van-radio v-else :name="x.value" icon-size="1rem" :checked-color="themeVars.radioColor" | 26 | + |
| 27 | - style="margin-bottom: 0.25rem">{{ x.title }}</van-radio> | 27 | + <van-config-provider v-else :theme-vars="{ radioLabelColor: x.color }"> |
| 28 | - <div v-if="x.desc_text" class="van-multi-ellipsis--l3 rule-desc-text">{{ x.desc_text }}</div> | 28 | + <van-radio |
| 29 | - <div v-if="x.desc_type === 'text'" class="rule-box" @click="showRule(x)"> | 29 | + :name="x.value" |
| 30 | + icon-size="1rem" | ||
| 31 | + :checked-color="themeVars.radioColor" | ||
| 32 | + style="margin-bottom: 0.25rem" | ||
| 33 | + > | ||
| 34 | + {{ x.title }} | ||
| 35 | + </van-radio> | ||
| 36 | + </van-config-provider> | ||
| 37 | + | ||
| 38 | + <div v-if="x.desc_text" class="van-multi-ellipsis--l3 rule-desc-text" :style="x.color ? { color: x.color } : {}">{{ x.desc_text }}</div> | ||
| 39 | + <div v-if="x.desc_type === 'text'" class="rule-box" :style="x.color ? { color: x.color } : {}" @click="showRule(x)"> | ||
| 30 | {{ x.desc_btn_name }} >> | 40 | {{ x.desc_btn_name }} >> |
| 31 | </div> | 41 | </div> |
| 32 | - <div v-if="x.desc_type === 'url'" class="rule-box" @click="showUrl(x)"> | 42 | + <div v-if="x.desc_type === 'url'" class="rule-box" :style="x.color ? { color: x.color } : {}" @click="showUrl(x)"> |
| 33 | {{ x.desc_btn_name }} <van-icon name="link-o" /> | 43 | {{ x.desc_btn_name }} <van-icon name="link-o" /> |
| 34 | </div> | 44 | </div> |
| 35 | <van-field | 45 | <van-field | ... | ... |
-
Please register or login to post a comment