hookehuyr

✨ feat: 新增省市区组件模块

...@@ -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",
......
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"
......