feat(person-picker): 移除临时测试字段并优化组件功能与样式
删除index.vue中的临时测试人员选择字段,为组件新增只读状态支持,优化黑名单徽章与只读容器样式,并移除废弃CSS类
Showing
2 changed files
with
22 additions
and
28 deletions
| ... | @@ -7,17 +7,20 @@ | ... | @@ -7,17 +7,20 @@ |
| 7 | --> | 7 | --> |
| 8 | <template> | 8 | <template> |
| 9 | <div class="person-picker-field-inner"> | 9 | <div class="person-picker-field-inner"> |
| 10 | - <div class="select-person-box" @click="openPopup"> | 10 | + <div |
| 11 | + :class="['select-person-box', { 'select-person-box--readonly': props.component_props.readonly }]" | ||
| 12 | + @click="!props.component_props.readonly && openPopup()" | ||
| 13 | + > | ||
| 11 | <template v-if="confirmedPersons.length"> | 14 | <template v-if="confirmedPersons.length"> |
| 12 | <div | 15 | <div |
| 13 | v-for="person in confirmedPersons" | 16 | v-for="person in confirmedPersons" |
| 14 | :key="person.id" | 17 | :key="person.id" |
| 15 | - :class="['select-person-item', { 'select-person-item--blacklist': isPersonBlacklisted(person) }]" | 18 | + class="select-person-item" |
| 16 | > | 19 | > |
| 17 | <van-icon name="contact-o" /> | 20 | <van-icon name="contact-o" /> |
| 18 | <div class="person-display-text"> | 21 | <div class="person-display-text"> |
| 19 | <span>{{ formatPersonTitle(person) }}</span> | 22 | <span>{{ formatPersonTitle(person) }}</span> |
| 20 | - <span v-if="isPersonBlacklisted(person)" class="blacklist-badge">黑名单</span> | 23 | + <span v-if="isPersonBlacklisted(person)" class="blacklist-badge blacklist-badge--chip">黑名单</span> |
| 21 | </div> | 24 | </div> |
| 22 | </div> | 25 | </div> |
| 23 | </template> | 26 | </template> |
| ... | @@ -27,6 +30,7 @@ | ... | @@ -27,6 +30,7 @@ |
| 27 | </div> | 30 | </div> |
| 28 | 31 | ||
| 29 | <van-popup | 32 | <van-popup |
| 33 | + v-if="!props.component_props.readonly" | ||
| 30 | v-model:show="showPopup" | 34 | v-model:show="showPopup" |
| 31 | position="bottom" | 35 | position="bottom" |
| 32 | :close-on-click-overlay="false" | 36 | :close-on-click-overlay="false" |
| ... | @@ -66,7 +70,7 @@ | ... | @@ -66,7 +70,7 @@ |
| 66 | <div v-for="person in draftPersons" :key="person.id" class="selected-item"> | 70 | <div v-for="person in draftPersons" :key="person.id" class="selected-item"> |
| 67 | <div class="selected-item__text"> | 71 | <div class="selected-item__text"> |
| 68 | <span>{{ formatPersonTitle(person) }}</span> | 72 | <span>{{ formatPersonTitle(person) }}</span> |
| 69 | - <span v-if="isPersonBlacklisted(person)" class="blacklist-badge blacklist-badge--light">黑名单</span> | 73 | + <span v-if="isPersonBlacklisted(person)" class="blacklist-badge blacklist-badge--chip">黑名单</span> |
| 70 | </div> | 74 | </div> |
| 71 | <van-icon name="close" @click="removeDraftPerson(person)" /> | 75 | <van-icon name="close" @click="removeDraftPerson(person)" /> |
| 72 | </div> | 76 | </div> |
| ... | @@ -588,10 +592,6 @@ onMounted(() => { | ... | @@ -588,10 +592,6 @@ onMounted(() => { |
| 588 | margin-right: 0.25rem; | 592 | margin-right: 0.25rem; |
| 589 | } | 593 | } |
| 590 | 594 | ||
| 591 | -.select-person-item--blacklist { | ||
| 592 | - background-color: #a46943; | ||
| 593 | -} | ||
| 594 | - | ||
| 595 | .person-display-text { | 595 | .person-display-text { |
| 596 | display: flex; | 596 | display: flex; |
| 597 | align-items: center; | 597 | align-items: center; |
| ... | @@ -605,6 +605,14 @@ onMounted(() => { | ... | @@ -605,6 +605,14 @@ onMounted(() => { |
| 605 | line-height: 1.8rem; | 605 | line-height: 1.8rem; |
| 606 | } | 606 | } |
| 607 | 607 | ||
| 608 | +.select-person-box--readonly { | ||
| 609 | + min-height: auto; | ||
| 610 | + padding: 0.2rem 0; | ||
| 611 | + border: none; | ||
| 612 | + margin: 0; | ||
| 613 | + border-radius: 0; | ||
| 614 | +} | ||
| 615 | + | ||
| 608 | .search-bar { | 616 | .search-bar { |
| 609 | margin: 1rem 0; | 617 | margin: 1rem 0; |
| 610 | padding: 0; | 618 | padding: 0; |
| ... | @@ -707,6 +715,11 @@ onMounted(() => { | ... | @@ -707,6 +715,11 @@ onMounted(() => { |
| 707 | color: #d84d4d; | 715 | color: #d84d4d; |
| 708 | } | 716 | } |
| 709 | 717 | ||
| 718 | +.blacklist-badge--chip { | ||
| 719 | + background-color: rgba(255, 244, 225, 0.92); | ||
| 720 | + color: #a46943; | ||
| 721 | +} | ||
| 722 | + | ||
| 710 | .popup-footer { | 723 | .popup-footer { |
| 711 | position: fixed; | 724 | position: fixed; |
| 712 | bottom: 0; | 725 | bottom: 0; | ... | ... |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Date: 2022-07-18 10:22:22 | 2 | * @Date: 2022-07-18 10:22:22 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2026-05-25 13:58:52 | 4 | + * @LastEditTime: 2026-05-25 18:13:47 |
| 5 | * @FilePath: /data-table/src/views/index.vue | 5 | * @FilePath: /data-table/src/views/index.vue |
| 6 | * @Description: 首页 | 6 | * @Description: 首页 |
| 7 | --> | 7 | --> |
| ... | @@ -509,25 +509,6 @@ onMounted(async () => { | ... | @@ -509,25 +509,6 @@ onMounted(async () => { |
| 509 | // "interaction_type": "h5edit" | 509 | // "interaction_type": "h5edit" |
| 510 | // }) | 510 | // }) |
| 511 | 511 | ||
| 512 | - // 临时测试字段:直接挂到页面渲染链里,方便联调人员搜索多选组件。 | ||
| 513 | - page_form.push({ | ||
| 514 | - tag: 'person_picker', | ||
| 515 | - name: 'person_picker_temp', | ||
| 516 | - index: 999999, | ||
| 517 | - label: '人员筛选(临时测试)', | ||
| 518 | - unique: false, | ||
| 519 | - default: [], | ||
| 520 | - disabled: false, | ||
| 521 | - field_id: 999999, | ||
| 522 | - readonly: false, | ||
| 523 | - required: false, | ||
| 524 | - data_type: 'text', | ||
| 525 | - field_name: 'field_person_picker_temp', | ||
| 526 | - placeholder: '请输入关键词后搜索人员', | ||
| 527 | - interaction_type: 'h5edit', | ||
| 528 | - person_type: '', | ||
| 529 | - }); | ||
| 530 | - | ||
| 531 | formData.value = formatData(page_form); | 512 | formData.value = formatData(page_form); |
| 532 | // TAG: 构建分页组件 | 513 | // TAG: 构建分页组件 |
| 533 | if (page_type === 'add' || page_type === undefined || model === 'preview') { | 514 | if (page_type === 'add' || page_type === undefined || model === 'preview') { | ... | ... |
-
Please register or login to post a comment