|  |  | 
 |  |  | <template> | 
 |  |  |   <div>InnerPage</div> | 
 |  |  |   <ContentView :paddingH="false" class="expect-position-view"> | 
 |  |  |     <PositionSelectView v-model="positionList" /> | 
 |  |  |   </ContentView> | 
 |  |  |   <PageFooter> | 
 |  |  |     <div class="expect-position-page-footer"> | 
 |  |  |       <div class="expect-position-select-wrapper" v-if="checkdList.length > 0"> | 
 |  |  |         <div class="expect-position-select-item" v-for="(item, index) in checkdList" :key="index"> | 
 |  |  |           <div class="expect-position-select-item-text">{{ item.label }}</div> | 
 |  |  |           <div class="expect-position-select-item-icon-wrapper"> | 
 |  |  |             <Close | 
 |  |  |               :size="8" | 
 |  |  |               class="expect-position-select-item-icon" | 
 |  |  |               @click="handleDelete(item.value)" | 
 |  |  |             /> | 
 |  |  |           </div> | 
 |  |  |         </div> | 
 |  |  |       </div> | 
 |  |  |       <PageFooterBtn type="primary" @click="handleConfirm">保存</PageFooterBtn> | 
 |  |  |     </div> | 
 |  |  |   </PageFooter> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script setup lang="ts"> | 
 |  |  | import { PositionSelectView } from '@12333/components'; | 
 |  |  | import { CategoryCode } from '@12333/constants'; | 
 |  |  | import { useDictionaryDataSelect } from '@12333/hooks'; | 
 |  |  | import { Close } from '@nutui/icons-vue-taro'; | 
 |  |  | import Taro from '@tarojs/taro'; | 
 |  |  | import { size } from 'lodash'; | 
 |  |  | import { useEvent, useEventChannel } from 'senin-mini/hooks'; | 
 |  |  |  | 
 |  |  | defineOptions({ | 
 |  |  |   name: 'InnerPage', | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | const eventChannel = useEventChannel(); | 
 |  |  |  | 
 |  |  | useEvent('updatePosition', function (data: { content: string[] }) { | 
 |  |  |   if (data.content.length) { | 
 |  |  |     positionList.value = [...data.content]; | 
 |  |  |   } | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | const positionList = ref([]); | 
 |  |  |  | 
 |  |  | const { dictionaryDataList: position } = useDictionaryDataSelect({ | 
 |  |  |   categoryCode: CategoryCode.Position, | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | const checkdList = computed(() => { | 
 |  |  |   if (!positionList.value.length) return []; | 
 |  |  |   return position.value.filter((x) => positionList.value.includes(x.value)); | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | function handleDelete(id: string) { | 
 |  |  |   positionList.value = positionList.value.filter((x) => x !== id); | 
 |  |  | } | 
 |  |  |  | 
 |  |  | function handleConfirm() { | 
 |  |  |   eventChannel.emit('addPosition', { | 
 |  |  |     content: positionList.value, | 
 |  |  |   }); | 
 |  |  |   Taro.navigateBack({ delta: 1 }); | 
 |  |  | } | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <style lang="scss"> | 
 |  |  | @import '@/styles/common.scss'; | 
 |  |  |  | 
 |  |  | .expectPosition-page-wrapper { | 
 |  |  |   .expect-position-view { | 
 |  |  |     flex: 1; | 
 |  |  |     min-height: 0; | 
 |  |  |  | 
 |  |  |     .nut-category { | 
 |  |  |       height: 100%; | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   .expect-position-page-footer { | 
 |  |  |     width: 100%; | 
 |  |  |     padding: 0 boleGetCssVar('size', 'body-padding-h'); | 
 |  |  |  | 
 |  |  |     .page-footer-btn { | 
 |  |  |       margin: 0; | 
 |  |  |       width: 100%; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     .expect-position-select-wrapper { | 
 |  |  |       display: flex; | 
 |  |  |       flex-wrap: wrap; | 
 |  |  |       margin-bottom: 40px; | 
 |  |  |       column-gap: 16px; | 
 |  |  |       row-gap: 24px; | 
 |  |  |       padding-top: 24px; | 
 |  |  |  | 
 |  |  |       .expect-position-select-item { | 
 |  |  |         display: flex; | 
 |  |  |         align-items: center; | 
 |  |  |         padding: 0 28px; | 
 |  |  |         height: 64px; | 
 |  |  |         border-radius: 32px; | 
 |  |  |         background-color: #f6faff; | 
 |  |  |  | 
 |  |  |         .expect-position-select-item-text { | 
 |  |  |           font-weight: 400; | 
 |  |  |           font-size: 24px; | 
 |  |  |           color: #536077; | 
 |  |  |           line-height: 24px; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         .expect-position-select-item-icon-wrapper { | 
 |  |  |           padding: 8px; | 
 |  |  |           padding-right: 0; | 
 |  |  |           padding-left: 30px; | 
 |  |  |           display: flex; | 
 |  |  |           align-items: center; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         .expect-position-select-item-icon { | 
 |  |  |           color: boleGetCssVar('text-color', 'secondary'); | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  | } | 
 |  |  | </style> |