123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885 |
- <template>
- <view :style="{'z-index': zIndex}" @touchmove.stop="voidFc()" @tap.prevent.stop="voidFc()">
- <view
- class="mask"
- :class="showPicker?'show':'hide'"
- :style="{'z-index': Number(zIndex) + 1}"
- @touchmove.prevent.stop="voidFc()"
- @tap.prevent.stop="hide()"></view>
- <view
- class="flex_column"
- :class="[mode||'middle', showPicker?'show':'hide']"
- :style="'z-index:' + (Number(zIndex) + 2) + ';'"
- @touchmove.prevent.stop="voidFc()"
- @tap.prevent.stop="voidFc()">
- <view class="flex_column" :class="(mode||'middle') + '_view'" :style="{'height': heightSize}">
- <block v-if="mode==='bottom'">
- <view class="flex_row_between_c width100 padding20rpx" :style="{'font-size': titleSize, 'background-color': bgColor_title||'#f8f8f8'}">
- <view class="flex_row_none_c width250rpx " :style="{'color': buttonSet.cancleColor||'#ADADAD'}" @tap="hide()">
- {{buttonSet.cancleName||'取消'}}
- </view>
- <view class="flex_row_c_c width250rpx" :style="{'color': titleColor||'#999'}">
- {{title||''}}
- </view>
- <view class="flex_row_e_c width250rpx" :style="{'color': buttonSet.confirmColor||'#3399FF'}" @tap="confirm()">
- {{buttonSet.confirmName||'确定'}}
- </view>
- </view>
- </block>
- <block v-else-if="mode==='middle'">
- <view class="flex_row_c_c width100 padding20rpx" :style="{'font-size': titleSize, 'background-color': bgColor_title||'#f8f8f8', 'color': titleColor||'#999'}" v-if="title">
- {{title||''}}
- </view>
- </block>
- <picker-view @touchmove.prevent.stop="voidFc()" :indicator-style="'height:' + wH*(lineHeight||.09) + 'px;' + indicator_style" class="width100 height100 backgroundColor_white" :style="{'font-size': contentSize, 'color': contentColor||'black'}" :value="value" @change="bindChange($event)">
- <block v-if="type==='date'">
- <picker-view-column v-if="setObj.dateMode>=1">
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in years" :key="picker_index">{{picker_item}}年</view>
- </picker-view-column>
- <picker-view-column v-if="setObj.dateMode>=2">
- <!-- #ifndef H5 -->
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in 12" :key="picker_index">{{picker_item+1}}月</view>
- <!-- #endif -->
- <!-- #ifdef H5 -->
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in 12" :key="picker_index">{{picker_item}}月</view>
- <!-- #endif -->
- </picker-view-column>
- <picker-view-column v-if="setObj.dateMode>=3">
- <!-- #ifndef H5 -->
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in days" :key="picker_index">{{picker_item+1}}日</view>
- <!-- #endif -->
- <!-- #ifdef H5 -->
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in days" :key="picker_index">{{picker_item}}日</view>
- <!-- #endif -->
- </picker-view-column>
- <picker-view-column v-if="setObj.dateMode>=4">
- <!-- #ifndef H5 -->
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in 24" :key="picker_index">{{picker_item}}时</view>
- <!-- #endif -->
- <!-- #ifdef H5 -->
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in 24" :key="picker_index">{{picker_item-1}}时</view>
- <!-- #endif -->
- </picker-view-column>
- <picker-view-column v-if="setObj.dateMode>=5">
- <!-- #ifndef H5 -->
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in 60" :key="picker_index">{{picker_item}}分</view>
- <!-- #endif -->
- <!-- #ifdef H5 -->
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in 60" :key="picker_index">{{picker_item-1}}分</view>
- <!-- #endif -->
- </picker-view-column>
- <picker-view-column v-if="setObj.dateMode>=6">
- <!-- #ifndef H5 -->
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in 60" :key="picker_index">{{picker_item}}秒</view>
- <!-- #endif -->
- <!-- #ifdef H5 -->
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in 60" :key="picker_index">{{picker_item-1}}秒</view>
- <!-- #endif -->
- </picker-view-column>
- </block>
- <block v-else-if="type==='city'">
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in provinceDataList" :key="picker_index">{{picker_item.label}}</view>
- </picker-view-column>
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in cityDataList" :key="picker_index">{{picker_item.label}}</view>
- </picker-view-column>
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in areaDataList" :key="picker_index">{{picker_item.label}}</view>
- </picker-view-column>
- </block>
- <block v-else-if="type==='provincialStreet'">
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in provinceDataList" :key="picker_index">{{picker_item.label}}</view>
- </picker-view-column>
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in cityDataList" :key="picker_index">{{picker_item.label}}</view>
- </picker-view-column>
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in areaDataList" :key="picker_index">{{picker_item.label}}</view>
- </picker-view-column>
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(picker_item,picker_index) in streetDataList" :key="picker_index">{{picker_item}}</view>
- </picker-view-column>
- </block>
- <block v-if="type==='custom'">
- <block v-if="setObj.linkage">
- <block v-if="setObj.linkageNum===2">
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(item,index) in setObj.itemArray" :key="index">{{item[setObj.steps.step_1_value]}}</view>
- </picker-view-column>
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(item,index) in setObj.itemArray[value[0]][setObj.steps.step_2_item]" :key="index">{{item[setObj.steps.step_2_value]||item}}</view>
- </picker-view-column>
- </block>
- <block v-else-if="setObj.linkageNum===3">
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(item,index) in setObj.itemArray" :key="index">{{item[setObj.steps.step_1_value]}}</view>
- </picker-view-column>
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(item,index) in setObj.itemArray[value[0]][setObj.steps.step_2_item]" :key="index">{{item[setObj.steps.step_2_value]}}</view>
- </picker-view-column>
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(item,index) in setObj.itemArray[value[0]][setObj.steps.step_2_item][value[1]][setObj.steps.step_3_item]"
- :key="index">{{item[setObj.steps.step_3_value]||item}}</view>
- </picker-view-column>
- </block>
- </block>
- <block v-else>
- <picker-view-column v-for="(items, indexs) in setObj.itemArray" :key="indexs">
- <view class="flex_row_c_c" v-for="(item, index) in items" :key="index">{{setObj.steps?setObj.steps.step_1_value?item[setObj.steps.step_1_value]:item:item}}</view>
- </picker-view-column>
- </block>
- </block>
- <block v-if="type==='custom2'">
- <block v-if="setObj.linkage">
- <block v-if="setObj.linkageNum===2">
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(item,index) in setObj.itemObject.step_1" :key="index">{{setObj.steps.step_1_value?item[setObj.steps.step_1_value]:item}}</view>
- </picker-view-column>
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(item,index) in setObj.itemObject.step_2[value[0]]" :key="index">{{setObj.steps.step_2_value?item[setObj.steps.step_2_value]:item}}</view>
- </picker-view-column>
- </block>
- <block v-else-if="setObj.linkageNum===3">
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(item,index) in setObj.itemObject.step_1" :key="index">{{setObj.steps.step_1_value?item[setObj.steps.step_1_value]:item}}</view>
- </picker-view-column>
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(item,index) in setObj.itemObject.step_2[value[0]]" :key="index">{{setObj.steps.step_2_value?item[setObj.steps.step_2_value]:item}}</view>
- </picker-view-column>
- <picker-view-column>
- <view class="flex_row_c_c" v-for="(item,index) in setObj.itemObject.step_3[value[0]][value[1]]" :key="index">{{setObj.steps.step_3_value?item[setObj.steps.step_3_value]:item}}</view>
- </picker-view-column>
- </block>
- </block>
- <block v-else>
- <picker-view-column v-for="(items, indexs) in setObj.itemArray" :key="indexs">
- <view class="flex_row_c_c" v-for="(item, index) in items" :key="index">{{setObj.steps.step_1_value?item[setObj.steps.step_1_value]:item}}</view>
- </picker-view-column>
- </block>
- </block>
- </picker-view>
- <block v-if="mode==='top'">
- <view class="flex_row_between_c width100 padding20rpx" :style="{'font-size': titleSize, 'background-color': bgColor_title||'#f8f8f8'}">
- <view class="flex_row_none_c width250rpx " :style="{'color': buttonSet.cancleColor||'#ADADAD'}" @tap="hide()">
- {{buttonSet.cancleName||'取消'}}
- </view>
- <view class="flex_row_c_c width250rpx" :style="{'color': titleColor||'#999'}">
- {{title||''}}
- </view>
- <view class="flex_row_e_c width250rpx" :style="{'color': buttonSet.confirmColor||'#3399FF'}" @tap="confirm()">
- {{buttonSet.confirmName||'确定'}}
- </view>
- </view>
- </block>
- </view>
- <view class="flex_row" style="margin-top: 20px;" v-if="mode==='middle'">
- <view class="flex_row_c_c width50">
- <button :type="buttonSet.cancelType||'default'" @tap="hide()" :style="classObj.btnSize + (buttonSet.cancelStyle||'')">{{buttonSet.cancelName||'取消'}}</button>
- </view>
- <view class="flex_row_c_c width50">
- <button :type="buttonSet.confirmType||'primary'" @tap="confirm()" :style="classObj.btnSize + (buttonSet.confirmStyle||'')">{{buttonSet.confirmName||'确定'}}</button>
- </view>
- </view>
- </view>
- </view>
- </template>
- <script>
- import QSPicker from '../js/QS-picker.js';
- var provinceData = {};
- var cityData = {};
- var areaData = {};
- var streetData = {};
- const Sys = uni.getSystemInfoSync();
- const wH = Sys.screenHeight;
- const wW = Sys.screenWidth;
- export default {
- name: 'QS-picker',
- props: {
- pickerId: {
- type: String,
- default: '未定义Id'
- },
- type: { //类型
- type: String,
- default: 'date'
- },
- height: { //picker高度
- type: Number,
- default: 0
- },
- lineHeight: {
- type: Number,
- default: .09
- },
- indicator_style: { //picker单行样式
- type: String,
- default: ''
- },
- fontscale: { //picker内文字大小
- type: Number,
- default: .02
- },
- width: { //picker宽度
- type: Number,
- default: .8
- },
- buttonSet: { //按钮设置
- type: Object,
- default () {
- return {};
- }
- },
- dataSet: { //各类型携带的数据
- type: Object,
- default () {
- return {};
- }
- },
- showReset: { //每次显示是否重置value
- type: Boolean,
- default: false
- },
- title: { //title标题
- type: String,
- default: ''
- },
- mode: {
- type: String,
- default: 'bottom'
- },
- zIndex: {
- type: [Number, String],
- default: 9999
- },
- bgColor_title: {
- type: String,
- default: '#F8F8F8'
- },
- autoHide: {
- type: Boolean,
- default: true
- },
- titleColor: {
- type: String,
- default: '#999'
- },
- contentColor: {
- type: String,
- default: 'black'
- }
- },
- data() {
- return {
- showPicker: false,
- setObj: {},
- //date
- years: [],
- days: 0,
- value: [],
- //city、provincialStreet
- provinceDataList: [],
- cityDataList: [],
- areaDataList: [],
- //provincialStreet
- streetDataList: [],
- defaultValue: [],
- wH,
- classObj: {
- btnSize: 'font-size: ' + (wH * (this.fontscale + .005)) + 'px;',
- }
- };
- },
- computed: {
- heightSize() {
- if(this.mode==='middle') {
- return wH*(this.height||.3) + 'px';
- }else{
- return wH*(this.height||.45) + 'px';
- }
- },
- titleSize() {
- return (wH * (this.fontscale + .002)) + 'px';
- },
- contentSize() {
- return (wH * this.fontscale) + 'px';
- }
- },
- watch: {
- dataSet() {
- this.init();
- },
- showPicker(n, o) {
- if (n && this.showReset) {
- let defaultValue = this.defaultValue;
- switch (this.type) {
- case 'city':
- this.cityDataList = cityData[defaultValue[0]];
- this.areaDataList = areaData[defaultValue[0]][defaultValue[1]];
- break;
- case 'provincialStreet':
- this.cityDataList = cityData[defaultValue[0]];
- this.areaDataList = areaData[defaultValue[0]][defaultValue[1]];
- this.streetDataList = streetData[defaultValue[0]][defaultValue[1]][defaultValue[2]];
- break;
- case 'date':
- let data = QSPicker.countDays(this.years[defaultValue[0]], defaultValue);
- this.days = data.days;
- this.value = data.val;
- break;
- default:
- break;
- }
- this.value = [...defaultValue];
- }
- }
- },
- created() {
- this.init();
- },
- methods: {
- init() {
- let value = [];
- let setObj = {};
- //date
- let years = [];
- let days = 0;
- // city、provincialStreet
- let provinceDataList;
- let cityDataList;
- let areaDataList;
- //provincialStreet
- let streetDataList;
-
- switch (this.type) {
- case 'date': //date
- setObj = QSPicker.creatDateObj(this.dataSet);
- console.log('setObj: ' + JSON.stringify(setObj));
- let defaultDate = setObj.defaultValue;
- years = QSPicker.countYears(setObj.startYear || (new Date().getFullYear() - 5), setObj.endYear || (new Date().getFullYear() +
- 5));
- let endYear = years[years.length - 1];
- let defaultYear = defaultDate.getFullYear(),
- defaultMonth = defaultDate.getMonth(),
- defaultDay = defaultDate.getDate(),
- defaultHour = defaultDate.getHours(),
- defaultMinute = defaultDate.getMinutes(),
- defaultSecond = defaultDate.getSeconds();
- let compareY = defaultYear > endYear;
- let year = compareY ? endYear : defaultYear;
- let month = compareY ? 11 : defaultMonth;
- defaultDate[1] = month;
- days = QSPicker.countDays(year, defaultDate).days;
- let dm = setObj.dateMode;
- if (dm >= 1) {
- if (compareY)
- value.push(years.length - 1);
- else
- for (let i = 0; i < years.length; i++) {
- if (year == years[i]) {
- value.push(i);
- }
- }
- }
- if (dm >= 2) value.push(compareY ? 11 : month);
- if (dm >= 3) value.push(compareY ? days : defaultDay - 1);
- if (dm >= 4) value.push(defaultHour);
- if (dm >= 5) value.push(defaultMinute);
- if (dm >= 6) value.push(defaultSecond);
- //date
- this.years = years;
- this.days = days;
- this.setObj = setObj;
- break;
- case 'city':
- value = this.dataSet.defaultValue || [0, 0, 0];
- provinceData = require('./city-data/province.js').default;
- cityData = require('./city-data/city.js').default;
- areaData = require('./city-data/area.js').default;
- provinceDataList = provinceData;
- cityDataList = cityData[value[0]];
- areaDataList = areaData[value[0]][value[1]];
- //city、provincialStreet
- this.provinceDataList = provinceDataList;
- this.cityDataList = cityDataList;
- this.areaDataList = areaDataList;
- break;
- case 'provincialStreet':
- value = this.dataSet.defaultValue || [0, 0, 0, 0];
- provinceData = require('./city-data/province.js').default;
- cityData = require('./city-data/city.js').default;
- areaData = require('./city-data/area.js').default;
- streetData = require('./city-data/streets.js').default;
- provinceDataList = provinceData;
- cityDataList = cityData[value[0]];
- areaDataList = areaData[value[0]][value[1]];
- streetDataList = streetData[value[0]][value[1]][value[2]];
- //provincialStreet
- this.provinceDataList = provinceDataList;
- this.cityDataList = cityDataList;
- this.areaDataList = areaDataList;
- this.streetDataList = streetDataList;
- break;
- case 'custom':
- setObj = QSPicker.creatCustomObj(this.dataSet);
- if (setObj.defaultValue) {
- value = setObj.defaultValue;
- } else {
- if (setObj.linkage) {
- for (let i = 0; i < setObj.linkageNum; i++) {
- value.push(0);
- }
- } else {
- setObj.itemArray.forEach(item => {
- value.push(0);
- });
- }
- }
- this.setObj = setObj;
- break;
- case 'custom2':
- setObj = QSPicker.creatCustom2Obj(this.dataSet);
- if (setObj.defaultValue) {
- value = setObj.defaultValue;
- } else {
- if (setObj.linkage) {
- for (let i = 0; i < setObj.linkageNum; i++) {
- value.push(0);
- }
- } else {
- setObj.itemArray.forEach(item => {
- value.push(0);
- });
- }
- }
- this.setObj = setObj;
- break;
- default:
- break;
- }
- let defaultValue = [...value];
- this.value = value;
- this.defaultValue = defaultValue;
- },
- bindChange({
- detail: {
- value
- }
- }) {
- // console.log(JSON.stringify(e))
- let changevalue;
- switch (this.type) {
- case 'city':
- changevalue = value;
- if (this.value[0] !== changevalue[0]) {
- // 第一级发生滚动
- this.cityDataList = cityData[changevalue[0]];
- this.areaDataList = areaData[changevalue[0]][0];
- changevalue[1] = 0;
- changevalue[2] = 0;
- } else if (this.value[1] !== changevalue[1]) {
- // 第二级滚动
- this.areaDataList = areaData[changevalue[0]][changevalue[1]];
- changevalue[2] = 0;
- }
- this.value = changevalue;
- break;
- case 'provincialStreet':
- changevalue = value;
- if (this.value[0] !== changevalue[0]) {
- // 第一级发生滚动
- this.cityDataList = cityData[changevalue[0]];
- this.areaDataList = areaData[changevalue[0]][0];
- this.streetDataList = streetData[changevalue[0]] && streetData[changevalue[0]][0] && streetData[changevalue[0]][
- 0
- ][0] ? streetData[changevalue[0]][0][0] : [];
- changevalue[1] = 0;
- changevalue[2] = 0;
- changevalue[3] = 0;
- } else if (this.value[1] !== changevalue[1]) {
- // 第二级滚动
- this.areaDataList = areaData[changevalue[0]][changevalue[1]];
- this.streetDataList = streetData[changevalue[0]] && streetData[changevalue[0]][changevalue[1]] && streetData[
- changevalue[0]][changevalue[1]][0] ? streetData[changevalue[0]][changevalue[1]][0] : [];
- changevalue[2] = 0;
- changevalue[3] = 0;
- } else if (this.value[2] !== changevalue[2]) {
- this.streetDataList = streetData[changevalue[0]] && streetData[changevalue[0]][changevalue[1]] && streetData[
- changevalue[0]][changevalue[1]][changevalue[2]] ? streetData[changevalue[0]][changevalue[1]][changevalue[2]] :
- [];
- changevalue[3] = 0;
- }
- this.value = changevalue;
- break;
- case 'date':
- let data = QSPicker.countDays(this.years[value[0]], value);
- this.days = data.days;
- this.value = data.val;
- break;
- default:
- this.value = value;
- break;
- }
- },
- confirm() {
- let type = this.type;
- let value = this.value;
- let obj = {
- type,
- value,
- pickerId: this.pickerId
- }
- let setObj = this.setObj;
- let data;
- switch (type) {
- case 'date':
- data = '';
- let dateFormatArray = setObj.dateFormatArray;
- console.log('dateFormatArray:' + JSON.stringify(dateFormatArray));
- for (let i = 1; i <= this.setObj.dateMode; i++) {
- if (i <= 6) {
- let j = i - 1;
- let f = i - 2;
- switch (i) {
- case 1:
- data += this.years[value[j]];
- break;
- case 2:
- data += dateFormatArray[f] + (value[j] + 1);
- break;
- case 3:
- data += dateFormatArray[f] + (value[j] + 1);
- break;
- default:
- data += dateFormatArray[f] + value[j];
- break;
- }
- }
- }
- break;
- case 'city':
- data = {
- label: this._getLabel(),
- value: this.value,
- cityCode: this._getCityCode()
- };
- break;
- case 'provincialStreet':
- data = {
- label: this._getprovincialStreetLabel(),
- value: this.value,
- cityCode: this._getCityCode()
- };
- break;
- case 'custom':
- let custom_datas = setObj.itemArray;
- data = {};
- let custom_val = this.value;
- let custom_steps = setObj.steps;
- if (setObj.linkage) {
- if (setObj.linkageNum === 2) { //二级联动
- data.steps1 = custom_datas[custom_val[0]];
- data.steps2 = custom_datas[custom_val[0]][custom_steps.step_2_item][custom_val[1]];
- } else if (setObj.linkageNum === 3) { //三级联动
- data.steps1 = custom_datas[custom_val[0]];
- if (!data.steps1)
- QSPicker.showToast('第一列中不存在第' + custom_val[0] + '项');
- data.steps2 = data.steps1[custom_steps.step_2_item][custom_val[1]];
- if (!data.steps2)
- QSPicker.showToast('第二列中不存在第' + custom_val[1] + '项');
- data.steps3 = data.steps2[custom_steps.step_3_item][custom_val[2]];
- if (!data.steps3)
- QSPicker.showToast('第三列中不存在第' + custom_val[2] + '项');
- } else {
- QSPicker.showToast('不在指定范围中');
- }
- } else { //无联动
- data = [];
- for (let i = 0; i < custom_datas.length; i++) {
- let d = custom_datas[i];
- data.push(d[custom_val[i]]);
- }
- }
- break;
- case 'custom2':
- let custom2_datas = setObj.linkage ? setObj.itemObject : setObj.itemArray;
- let custom2_val = this.value;
- if (setObj.linkage) {
- data = {}
- if (setObj.linkageNum === 2) { //二级联动
- data.steps1 = custom2_datas.step_1[custom2_val[0]];
- data.steps2 = custom2_datas.step_2[custom2_val[0]][custom2_val[1]];
- } else if (setObj.linkageNum === 3) { //三级联动
- data.steps1 = custom2_datas.step_1[custom2_val[0]];
- if (!data.steps1)
- QSPicker.showToast('第一列中不存在第' + custom2_val[0] + '项');
- data.steps2 = custom2_datas.step_2[custom2_val[0]][custom2_val[1]];
- if (!data.steps2)
- QSPicker.showToast('第二列中不存在第' + custom2_val[1] + '项');
- data.steps3 = custom2_datas.step_3[custom2_val[0]][custom2_val[1]][custom2_val[2]];
- if (!data.steps3)
- QSPicker.showToast('第三列中不存在第' + custom2_val[2] + '项');
- } else {
- QSPicker.showToast('不在指定范围中');
- }
- } else { //无联动
- data = [];
- for (let i = 0; i < custom2_datas.length; i++) {
- let d = custom2_datas[i];
- data.push(d[custom2_val[i]]);
- }
- }
- break;
- default:
- break;
- }
- obj.data = data;
- this.$emit('confirm', obj);
- console.log(this.autoHide)
- if(this.autoHide)
- this.hide();
- },
- _getprovincialStreetLabel() {
- let pcikerLabel =
- this.provinceDataList[this.value[0]].label +
- '-' +
- this.cityDataList[this.value[1]].label +
- '-' +
- this.areaDataList[this.value[2]].label +
- (this.streetDataList[this.value[3]] ? '-' + this.streetDataList[this.value[3]] : '');
- return pcikerLabel;
- },
- _getLabel() {
- let pcikerLabel =
- this.provinceDataList[this.value[0]].label +
- '-' +
- this.cityDataList[this.value[1]].label +
- '-' +
- this.areaDataList[this.value[2]].label;
- return pcikerLabel;
- },
- _getCityCode() {
- return this.areaDataList[this.value[2]].value;
- },
- show() {
- this.showPicker = true;
- this.$emit('showQSPicker', {
- pickerId: this.pickerId,
- type: this.type
- });
- },
- hide() {
- this.showPicker = false;
- this.$emit('hideQSPicker', {
- pickerId: this.pickerId,
- type: this.type
- });
- },
- voidFc() {}
- }
- }
- </script>
- <style scoped>
- /* middle */
- .middle{
- position: fixed;
- left: 50%;
- top: 50%;
- opacity: 0;
- pointer-events: none;
- perspective: 2500upx;
- transition: all .3s ease-in-out;
- }
-
- .middle.show{
- transition-delay: .3s;
- transform: translate(-50%, -50%);
- pointer-events: auto;
- opacity: 1;
- }
-
- .middle.hide{
- transform: translate(-50%, -50%);
- opacity: 0;
- pointer-events: none;
- }
-
- .middle_view{
- background-color: #FFF;
- border-radius: 15upx;
- overflow: hidden;
- width: 80vw;
- }
-
- /* bottom */
- .bottom{
- position: fixed;
- left: 0;
- bottom: 0;
- pointer-events: none;
- perspective: 2500upx;
- transition: all .3s ease-in-out;
- transform: translateY(100%);
- }
-
- .bottom.show{
- transform: translateY(0);
- pointer-events: auto;
- }
-
- .bottom.hide{
- transform: translateY(100%);
- pointer-events: none;
- }
-
- .bottom_view{
- width: 100vw;
- background-color: white;
- }
-
- /* top */
- .top{
- position: fixed;
- left: 0;
- top: 0;
- pointer-events: none;
- perspective: 2500upx;
- transition: all .3s ease-in-out;
- transform: translateY(-100%);
- }
-
- .top.show{
- transform: translateY(0);
- pointer-events: auto;
- }
-
- .top.hide{
- transform: translateY(-100%);
- pointer-events: none;
- }
-
- .top_view{
- width: 100vw;
- background-color: white;
- }
-
- /* mask */
- .mask{
- position: fixed;
- top: 0;
- left: 0;
- height: 100vh;
- width: 100vw;
- opacity: 0;
- background-color: rgba(0,0,0,.6);
- transition: all .3s ease-in-out;
- pointer-events: none;
- }
- .mask.show{
- opacity: 1;
- pointer-events: auto;
- }
- .mask.hide{
- opacity: 0;
- transition: all .3s ease-in-out .3s;
- pointer-events: none;
- }
-
- .flex_column_c_c {
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- }
-
- .text_align_center {
- text-align: center;
- }
-
- /* flex */
- .flex_1 {
- flex: 1;
- }
- .flex_column {
- display: flex;
- flex-direction: column;
- }
- .flex_row_e_none {
- display: flex;
- flex-direction: row;
- justify-content: flex-end;
- }
- .flex_column_c_c {
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- }
- .flex_row {
- display: flex;
- flex-direction: row;
- }
- .flex_row_none_c {
- display: flex;
- flex-direction: row;
- align-items: center;
- }
- .flex_row_e_c {
- display: flex;
- flex-direction: row;
- justify-content: flex-end;
- align-items: center;
- }
- .flex_row_c_c {
- display: flex;
- flex-direction: row;
- justify-content: center;
- align-items: center;
- }
- .flex_row_between_c {
- display: flex;
- flex-direction: row;
- justify-content: space-between;
- align-items: center;
- }
-
- /* width height */
- .width50 {
- width: 50%;
- }
- .width100 {
- width: 100%;
- }
- .width250rpx{
- width: 250rpx;
- }
- .height100 {
- height: 100%;
- }
-
- /* padding */
- .padding20rpx{
- padding: 20rpx;
- }
-
- view, block, botton, text, picker, picker-view picker-view-column {
- box-sizing: border-box;
- }
-
- .backgroundColor_white{
- background-color: white;
- }
- </style>
|