|  |  |  | 
|---|
|  |  |  | </ContentView> | 
|---|
|  |  |  | <PageFooter> | 
|---|
|  |  |  | <div class="expect-position-page-footer"> | 
|---|
|  |  |  | <div class="expect-position-select-wrapper" v-if="positionList.length > 0"> | 
|---|
|  |  |  | <div class="expect-position-select-item" v-for="(item, index) in positionList" :key="index"> | 
|---|
|  |  |  | <div class="expect-position-select-item-text">{{ item }}</div> | 
|---|
|  |  |  | <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" /> | 
|---|
|  |  |  | <Close | 
|---|
|  |  |  | :size="8" | 
|---|
|  |  |  | class="expect-position-select-item-icon" | 
|---|
|  |  |  | @click="handleDelete(item.value)" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <PageFooterBtn type="primary">保存</PageFooterBtn> | 
|---|
|  |  |  | <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"> | 
|---|