123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- <template>
- <view class="tm-pickersCityView">
- <tm-pickersView :bg-color="bgColor" :black="black_tmeme" :disabled="disabled" ref="cityApp" :default-value="defaultValue" :list="list" ></tm-pickersView>
- </view>
- </template>
- <script>
- import provinceData from '@/tm-vuetify/tool/util/province.js';
- import cityData from '@/tm-vuetify/tool/util/city.js';
- import areaData from '@/tm-vuetify/tool/util/area.js';
- /**
- * 地区选择器(内嵌式)
- * @description 地区选择器(内嵌式),使用$refs 方式调用getSelectedValue取得选中的数据。
- * @property {String} level = [province|city|area] ,默认area,显示的级别province:仅显示省,city仅显示省市,area:显示省市区。
- * @property {Array} default-value = [] 同tm-pckerView格式,可以是数组内:序列,对象,字符串赋值。
- * @property {String|Boolean} black = [true|false] 是否开启暗黑模式。
- * @property {String|Boolean} disabled = [true|false] 是否禁用
- * @property {String} bg-color = [white|blue] 默认:white,白色背景;请填写背景的主题色名称。
- * @example <tm-pickersCityView ref="city" :defaultValue='["上海市", "市辖区", "徐汇区"]'></tm-pickersCityView>
- *
- */
- import tmPickersView from "@/tm-vuetify/components/tm-pickersView/tm-pickersView.vue"
- export default {
- components:{tmPickersView},
- name:'tm-pickersCityView',
- props:{
- defaultValue:{
- type:Array,
- default:()=>{return []}
- },
- // 显示的级别。province,city,area。
- level:{
- type:String,
- default:'area'
- },
- black:{
- type:String|Boolean,
- default:null
- },
- // 是否禁用
- disabled:{
- type:String|Boolean,
- default:false
- },
- // 背景颜色,主题色名称。
- bgColor:{
- type:String,
- default:'white'
- },
- },
- data() {
- return {
- list:[],
- };
- },
- computed: {
-
- black_tmeme: function() {
- if (this.black !== null) return this.black;
- return this.$tm.vx.state().tmVuetify.black;
- }
- },
- mounted() {
- this.$nextTick(function(){
- this.chili_level();
- })
- },
- methods: {
- // 获取选中的资料。
- getSelectedValue(){
- let d = this.$refs.cityApp.getSelectedValue();
-
- let p = [];
- if(this.level=='province'){
- p = [d[0].data.text]
- }else if(this.level=='city'){
- p = [d[0].data.text,d[1].data.text]
- }else{
- p = [d[0].data.text,d[1].data.text,d[2].data.text]
- }
- return p;
- },
- chili_level(){
- if(this.level=='province'){
- this.chiliFormatCity_pro();
- }else if(this.level=='city'){
- this.chiliFormatCity_city();
- }else{
- this.chiliFormatCity_area();
- }
- },
- chiliFormatCity_area() {
- let list = [];
- provinceData.forEach((item,index)=>{
- list.push({
- id:item.value,
- text:item.label,
- children:[]
- })
- })
- cityData.forEach((item,index)=>{
- item.forEach((citem,cindex)=>{
- list[index].children.push({
- id:citem.value,
- text:citem.label,
- children:[]
- })
- })
- })
- list.forEach((item,index)=>{
- item.children.forEach((citem,cindex)=>{
- areaData[index][cindex].forEach(jitem=>{
- list[index].children[cindex].children.push({
- id:jitem.value,
- text:jitem.label
- })
- })
- })
- })
- this.list = list;
- },
- chiliFormatCity_pro() {
- let list = [];
- provinceData.forEach((item,index)=>{
- list.push({
- id:item.value,
- text:item.label
- })
- })
-
- this.list = list;
- },
- chiliFormatCity_city() {
- let list = [];
- provinceData.forEach((item,index)=>{
- list.push({
- id:item.value,
- text:item.label,
- children:[]
- })
- })
- cityData.forEach((item,index)=>{
- item.forEach((citem,cindex)=>{
- list[index].children.push({
- id:citem.value,
- text:citem.label
- })
- })
- })
-
- this.list = list;
- }
-
- },
- }
- </script>
- <style lang="scss">
- </style>
|