Showing
6 changed files
with
42 additions
and
4 deletions
| ... | @@ -12,6 +12,7 @@ | ... | @@ -12,6 +12,7 @@ |
| 12 | "cypress:open": "cypress open" | 12 | "cypress:open": "cypress open" |
| 13 | }, | 13 | }, |
| 14 | "dependencies": { | 14 | "dependencies": { |
| 15 | + "@vant/area-data": "^1.3.1", | ||
| 15 | "@vitejs/plugin-legacy": "^1.8.2", | 16 | "@vitejs/plugin-legacy": "^1.8.2", |
| 16 | "@vueuse/core": "^8.5.0", | 17 | "@vueuse/core": "^8.5.0", |
| 17 | "animate.css": "^4.1.1", | 18 | "animate.css": "^4.1.1", | ... | ... |
src/components/AreaPickerField/index.vue
0 → 100644
| 1 | +<!-- | ||
| 2 | + * @Date: 2022-08-30 14:32:11 | ||
| 3 | + * @LastEditors: hookehuyr hookehuyr@gmail.com | ||
| 4 | + * @LastEditTime: 2022-08-30 14:46:53 | ||
| 5 | + * @FilePath: /data-table/src/components/AreaPickerField/index.vue | ||
| 6 | + * @Description: 文件描述 | ||
| 7 | +--> | ||
| 8 | +<template> | ||
| 9 | + <div class="area-picker-field"> | ||
| 10 | + <van-area v-model="value" title="" :area-list="areaList" /> | ||
| 11 | + </div> | ||
| 12 | +</template> | ||
| 13 | + | ||
| 14 | +<script setup> | ||
| 15 | +import { areaList } from '@vant/area-data'; | ||
| 16 | +const value = ref('330302'); | ||
| 17 | +</script> | ||
| 18 | + | ||
| 19 | +<style lang="less" scoped> | ||
| 20 | +.area-picker-field { | ||
| 21 | + | ||
| 22 | +} | ||
| 23 | +</style> |
| ... | @@ -5,6 +5,7 @@ import TextareaField from '@/components/TextareaField/index.vue' | ... | @@ -5,6 +5,7 @@ import TextareaField from '@/components/TextareaField/index.vue' |
| 5 | import RadioField from '@/components/RadioField/index.vue' | 5 | import RadioField from '@/components/RadioField/index.vue' |
| 6 | import CheckboxField from '@/components/CheckboxField/index.vue' | 6 | import CheckboxField from '@/components/CheckboxField/index.vue' |
| 7 | import PickerField from '@/components/PickerField/index.vue' | 7 | import PickerField from '@/components/PickerField/index.vue' |
| 8 | +import AreaPickerField from '@/components/AreaPickerField/index.vue' | ||
| 8 | 9 | ||
| 9 | /** | 10 | /** |
| 10 | * 生成自定义组件类型 | 11 | * 生成自定义组件类型 |
| ... | @@ -14,6 +15,7 @@ import PickerField from '@/components/PickerField/index.vue' | ... | @@ -14,6 +15,7 @@ import PickerField from '@/components/PickerField/index.vue' |
| 14 | * @type radio 单选框 RadioField | 15 | * @type radio 单选框 RadioField |
| 15 | * @type checkbox 多选框 CheckboxField | 16 | * @type checkbox 多选框 CheckboxField |
| 16 | * @type picker 单列选择器 PickerField | 17 | * @type picker 单列选择器 PickerField |
| 18 | + * @type area_picker 省市区选择器 AreaPickerField | ||
| 17 | */ | 19 | */ |
| 18 | export function createComponentType(data) { | 20 | export function createComponentType(data) { |
| 19 | // 判断类型和使用组件 | 21 | // 判断类型和使用组件 |
| ... | @@ -48,5 +50,8 @@ export function createComponentType(data) { | ... | @@ -48,5 +50,8 @@ export function createComponentType(data) { |
| 48 | if (item.component_type === 'picker') { | 50 | if (item.component_type === 'picker') { |
| 49 | item.component = PickerField; | 51 | item.component = PickerField; |
| 50 | } | 52 | } |
| 53 | + if (item.component_type === 'area_picker') { | ||
| 54 | + item.component = AreaPickerField; | ||
| 55 | + } | ||
| 51 | }) | 56 | }) |
| 52 | } | 57 | } | ... | ... |
| ... | @@ -2,12 +2,12 @@ | ... | @@ -2,12 +2,12 @@ |
| 2 | * @Author: hookehuyr hookehuyr@gmail.com | 2 | * @Author: hookehuyr hookehuyr@gmail.com |
| 3 | * @Date: 2022-05-31 12:06:19 | 3 | * @Date: 2022-05-31 12:06:19 |
| 4 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 4 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 5 | - * @LastEditTime: 2022-08-30 13:21:07 | 5 | + * @LastEditTime: 2022-08-30 14:33:11 |
| 6 | * @FilePath: /data-table/src/main.js | 6 | * @FilePath: /data-table/src/main.js |
| 7 | * @Description: | 7 | * @Description: |
| 8 | */ | 8 | */ |
| 9 | import { createApp } from 'vue'; | 9 | import { createApp } from 'vue'; |
| 10 | -import { Button, Image as VanImage, Col, Row, Icon, Form, Field, CellGroup, ConfigProvider, Toast, Uploader, Empty, Tab, Tabs, Overlay, NumberKeyboard, Lazyload, List, PullRefresh, Popup, Picker, Sticky, Stepper, Tag, Swipe, SwipeItem, Dialog, ActionSheet, Loading, Checkbox, Search, NavBar, Collapse, CollapseItem, RadioGroup, Radio, CheckboxGroup } from 'vant'; | 10 | +import { Button, Image as VanImage, Col, Row, Icon, Form, Field, CellGroup, ConfigProvider, Toast, Uploader, Empty, Tab, Tabs, Overlay, NumberKeyboard, Lazyload, List, PullRefresh, Popup, Picker, Sticky, Stepper, Tag, Swipe, SwipeItem, Dialog, ActionSheet, Loading, Checkbox, Search, NavBar, Collapse, CollapseItem, RadioGroup, Radio, CheckboxGroup, Area } from 'vant'; |
| 11 | import router from './router'; | 11 | import router from './router'; |
| 12 | import App from './App.vue'; | 12 | import App from './App.vue'; |
| 13 | // import axios from './utils/axios'; | 13 | // import axios from './utils/axios'; |
| ... | @@ -23,6 +23,6 @@ app.config.warnHandler = () => null; | ... | @@ -23,6 +23,6 @@ app.config.warnHandler = () => null; |
| 23 | 23 | ||
| 24 | app.config.globalProperties.$http = axios; // 关键语句 | 24 | app.config.globalProperties.$http = axios; // 关键语句 |
| 25 | 25 | ||
| 26 | -app.use(pinia).use(router).use(Button).use(VanImage).use(Col).use(Row).use(Icon).use(Form).use(Field).use(CellGroup).use(Toast).use(Uploader).use(Empty).use(Tab).use(Tabs).use(Overlay).use(NumberKeyboard).use(Lazyload).use(List).use(PullRefresh).use(Popup).use(Picker).use(Sticky).use(Stepper).use(Tag).use(Swipe).use(SwipeItem).use(Dialog).use(ActionSheet).use(Loading).use(Checkbox).use(Search).use(ConfigProvider).use(NavBar).use(Collapse).use(CollapseItem).use(Radio).use(RadioGroup).use(CheckboxGroup); | 26 | +app.use(pinia).use(router).use(Button).use(VanImage).use(Col).use(Row).use(Icon).use(Form).use(Field).use(CellGroup).use(Toast).use(Uploader).use(Empty).use(Tab).use(Tabs).use(Overlay).use(NumberKeyboard).use(Lazyload).use(List).use(PullRefresh).use(Popup).use(Picker).use(Sticky).use(Stepper).use(Tag).use(Swipe).use(SwipeItem).use(Dialog).use(ActionSheet).use(Loading).use(Checkbox).use(Search).use(ConfigProvider).use(NavBar).use(Collapse).use(CollapseItem).use(Radio).use(RadioGroup).use(CheckboxGroup).use(Area); |
| 27 | 27 | ||
| 28 | app.mount('#app'); | 28 | app.mount('#app'); | ... | ... |
| 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: 2022-08-30 14:23:18 | 4 | + * @LastEditTime: 2022-08-30 14:35:02 |
| 5 | * @FilePath: /data-table/src/views/index.vue | 5 | * @FilePath: /data-table/src/views/index.vue |
| 6 | * @Description: 首页 | 6 | * @Description: 首页 |
| 7 | --> | 7 | --> |
| ... | @@ -92,6 +92,10 @@ onMounted(() => { | ... | @@ -92,6 +92,10 @@ onMounted(() => { |
| 92 | { text: '地铁', value: '地铁' }, | 92 | { text: '地铁', value: '地铁' }, |
| 93 | ], | 93 | ], |
| 94 | required: true, | 94 | required: true, |
| 95 | + }, { | ||
| 96 | + key: 'city', | ||
| 97 | + value: '', | ||
| 98 | + component_type: 'area_picker' | ||
| 95 | }]; | 99 | }]; |
| 96 | // 生成自定义组件 | 100 | // 生成自定义组件 |
| 97 | createComponentType(mockData.value) | 101 | createComponentType(mockData.value) | ... | ... |
| ... | @@ -219,6 +219,11 @@ | ... | @@ -219,6 +219,11 @@ |
| 219 | resolved "https://mirrors.cloud.tencent.com/npm/@ungap%2fpromise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" | 219 | resolved "https://mirrors.cloud.tencent.com/npm/@ungap%2fpromise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" |
| 220 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== | 220 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== |
| 221 | 221 | ||
| 222 | +"@vant/area-data@^1.3.1": | ||
| 223 | + version "1.3.1" | ||
| 224 | + resolved "https://mirrors.cloud.tencent.com/npm/@vant%2farea-data/-/area-data-1.3.1.tgz#07f4947aaa16d2c63e1447dc937d7567883f24aa" | ||
| 225 | + integrity sha512-xji2kfVBXzFYmHAJNbhYjiRJ4GnN+enbTmtx6FnpTyxs9sUcFtS11BZ23hYCGuj4s02gXyrzUBTXGqhX5IKHIw== | ||
| 226 | + | ||
| 222 | "@vant/icons@^1.8.0": | 227 | "@vant/icons@^1.8.0": |
| 223 | version "1.8.0" | 228 | version "1.8.0" |
| 224 | resolved "https://registry.yarnpkg.com/@vant/icons/-/icons-1.8.0.tgz#36b13f2e628b533f6523a93a168cf02f07056674" | 229 | resolved "https://registry.yarnpkg.com/@vant/icons/-/icons-1.8.0.tgz#36b13f2e628b533f6523a93a168cf02f07056674" | ... | ... |
-
Please register or login to post a comment