| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <template>
- <view>
- <picker :mode="mode" :value="date" :start="startDate2" :end="endDate2" @change="bindDateChange">
- <slot>
- <view class="uni-input">
- <span v-if="placeholder && !date">{{placeholder}}</span>
- <span v-else>{{date}}</span>
- <span></span>
- </view>
- </slot>
- </picker>
- </view>
- </template>
- <script>
- export default {
- name: "app-date-picker",
- props: {
- mode: {
- type: String,
- default: "date"
- },
- placeholder: {
- type: String,
- default: null
- },
- dateVal: {
- type: String,
- default: ""
- },
- startDate: {
- type: String,
- default: ""
- },
- endDate: {
- type: String,
- default: ""
- }
- },
- data() {
- return {
- date: null
- };
- },
- watch: {
- dateVal(val) {
- this.date = val;
- }
- },
- computed: {
- startDate2() {
- console.log(this.getDate("start"));
- return this.getDate("start");
- },
- endDate2() {
- return this.getDate("end");
- }
- },
- methods: {
- bindDateChange: function(e) {
- let val = e.target.value;
- this.date = val;
- console.log(val);
- this.$emit("update:dateVal", val);
- this.$emit("change", val);
- },
- getDate(type) {
- const date = new Date();
- let year = date.getFullYear();
- let month = date.getMonth() + 1;
- let day = date.getDate();
- if (type === "start") {
- year = this.startDate;
- } else if (type === "end") {
- year = this.endDate;
- }
- month = month > 9 ? month : "0" + month;
- day = day > 9 ? day : "0" + day;
- return `${year}-${month}-${day}`;
- }
- }
- };
- </script>
- <style scoped>
- </style>
|