修复周视图显示错误问题
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent, nextTick, ref, Ref } from 'vue'
|
import { defineComponent } from 'vue'
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'PreCode',
|
name: 'PreCode',
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ interface ItemVO {
|
|||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
setup () {
|
setup () {
|
||||||
const copyEvent = ({ icon }: ItemVO) => {
|
const copyEvent = () => {
|
||||||
VXETable.modal.message({ content: '已复制到剪贴板!', status: 'success' })
|
VXETable.modal.message({ content: '已复制到剪贴板!', status: 'success' })
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -40,6 +40,16 @@
|
|||||||
<vxe-input v-model="demo1.value409" placeholder="农历节日" type="date" :festival-method="festivalCalendarMethod" transfer></vxe-input>
|
<vxe-input v-model="demo1.value409" placeholder="农历节日" type="date" :festival-method="festivalCalendarMethod" transfer></vxe-input>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<vxe-input v-model="demo1.value701" placeholder="周选择" type="week" :start-day="0" clearable></vxe-input>
|
||||||
|
<vxe-input v-model="demo1.value702" placeholder="周选择" type="week" :start-day="1" clearable></vxe-input>
|
||||||
|
<vxe-input v-model="demo1.value703" placeholder="周选择" type="week" :start-day="2" clearable></vxe-input>
|
||||||
|
<vxe-input v-model="demo1.value704" placeholder="周选择" type="week" :start-day="3" clearable></vxe-input>
|
||||||
|
<vxe-input v-model="demo1.value705" placeholder="周选择" type="week" :start-day="4" clearable></vxe-input>
|
||||||
|
<vxe-input v-model="demo1.value706" placeholder="周选择" type="week" :start-day="5" clearable></vxe-input>
|
||||||
|
<vxe-input v-model="demo1.value707" placeholder="周选择" type="week" :start-day="6" clearable></vxe-input>
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<vxe-input v-model="demo1.value500" placeholder="数值类型" type="number"></vxe-input>
|
<vxe-input v-model="demo1.value500" placeholder="数值类型" type="number"></vxe-input>
|
||||||
<vxe-input v-model="demo1.value501" placeholder="数值间隔 1.4" type="number" step="1.4" clearable></vxe-input>
|
<vxe-input v-model="demo1.value501" placeholder="数值间隔 1.4" type="number" step="1.4" clearable></vxe-input>
|
||||||
@@ -143,7 +153,14 @@ export default defineComponent({
|
|||||||
value600: '',
|
value600: '',
|
||||||
value601: '',
|
value601: '',
|
||||||
value602: '',
|
value602: '',
|
||||||
value603: ''
|
value603: '',
|
||||||
|
value701: '2017-12-18',
|
||||||
|
value702: '2017-12-18',
|
||||||
|
value703: '2017-12-18',
|
||||||
|
value704: '2017-12-18',
|
||||||
|
value705: '2017-12-18',
|
||||||
|
value706: '2017-12-18',
|
||||||
|
value707: '2017-12-18'
|
||||||
})
|
})
|
||||||
|
|
||||||
const disabledDateMethod: VxeInputPropTypes.DisabledMethod = (params) => {
|
const disabledDateMethod: VxeInputPropTypes.DisabledMethod = (params) => {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "vxe-table",
|
"name": "vxe-table",
|
||||||
"version": "4.1.17-beta.0",
|
"version": "4.1.17-beta.2",
|
||||||
"description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、贼灵活的配置项、扩展接口等...",
|
"description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、贼灵活的配置项、扩展接口等...",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"serve": "vue-cli-service serve",
|
"serve": "vue-cli-service serve",
|
||||||
@@ -66,11 +66,11 @@
|
|||||||
"vue-router": "^4.0.11",
|
"vue-router": "^4.0.11",
|
||||||
"vuex": "^4.0.2",
|
"vuex": "^4.0.2",
|
||||||
"xe-ajax": "^4.0.5",
|
"xe-ajax": "^4.0.5",
|
||||||
"xe-utils": "^3.4.3"
|
"xe-utils": "^3.5.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"vue": "^3.2.2",
|
"vue": "^3.2.2",
|
||||||
"xe-utils": "^3.4.2"
|
"xe-utils": "^3.5.0"
|
||||||
},
|
},
|
||||||
"vetur": {
|
"vetur": {
|
||||||
"tags": "helper/vetur/tags.json",
|
"tags": "helper/vetur/tags.json",
|
||||||
|
|||||||
@@ -195,6 +195,14 @@ export default defineComponent({
|
|||||||
|
|
||||||
let inputMethods = {} as InputMethods
|
let inputMethods = {} as InputMethods
|
||||||
|
|
||||||
|
const parseDate = (value: VxeInputPropTypes.ModelValue, format: string) => {
|
||||||
|
const { type } = props
|
||||||
|
if (type === 'time') {
|
||||||
|
return toStringTimeDate(value)
|
||||||
|
}
|
||||||
|
return XEUtils.toStringDate(value, format)
|
||||||
|
}
|
||||||
|
|
||||||
const computeIsDateTimeType = computed(() => {
|
const computeIsDateTimeType = computed(() => {
|
||||||
const { type } = props
|
const { type } = props
|
||||||
return type === 'time' || type === 'datetime'
|
return type === 'time' || type === 'datetime'
|
||||||
@@ -255,17 +263,12 @@ export default defineComponent({
|
|||||||
})
|
})
|
||||||
|
|
||||||
const computeDateValue = computed(() => {
|
const computeDateValue = computed(() => {
|
||||||
const { modelValue, type } = props
|
const { modelValue } = props
|
||||||
const isDatePickerType = computeIsDatePickerType.value
|
const isDatePickerType = computeIsDatePickerType.value
|
||||||
const dateValueFormat = computeDateValueFormat.value
|
const dateValueFormat = computeDateValueFormat.value
|
||||||
let val = null
|
let val = null
|
||||||
if (modelValue && isDatePickerType) {
|
if (modelValue && isDatePickerType) {
|
||||||
let date
|
const date = parseDate(modelValue, dateValueFormat)
|
||||||
if (type === 'time') {
|
|
||||||
date = toStringTimeDate(modelValue)
|
|
||||||
} else {
|
|
||||||
date = XEUtils.toStringDate(modelValue, dateValueFormat)
|
|
||||||
}
|
|
||||||
if (XEUtils.isValidDate(date)) {
|
if (XEUtils.isValidDate(date)) {
|
||||||
val = date
|
val = date
|
||||||
}
|
}
|
||||||
@@ -356,12 +359,16 @@ export default defineComponent({
|
|||||||
return ''
|
return ''
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const computeFirstDayOfWeek = computed(() => {
|
||||||
|
const { startDay, startWeek } = props
|
||||||
|
return XEUtils.toNumber(XEUtils.isNumber(startDay) || XEUtils.isString(startDay) ? startDay : startWeek) as VxeInputPropTypes.StartDay
|
||||||
|
})
|
||||||
|
|
||||||
const computeWeekDatas = computed(() => {
|
const computeWeekDatas = computed(() => {
|
||||||
const weeks = []
|
const weeks = []
|
||||||
const isDatePickerType = computeIsDatePickerType.value
|
const isDatePickerType = computeIsDatePickerType.value
|
||||||
if (isDatePickerType) {
|
if (isDatePickerType) {
|
||||||
const { startDay, startWeek } = props
|
let sWeek = computeFirstDayOfWeek.value
|
||||||
let sWeek = XEUtils.toNumber(XEUtils.isNumber(startDay) || XEUtils.isString(startDay) ? startDay : startWeek)
|
|
||||||
weeks.push(sWeek)
|
weeks.push(sWeek)
|
||||||
for (let index = 0; index < 6; index++) {
|
for (let index = 0; index < 6; index++) {
|
||||||
if (sWeek >= 6) {
|
if (sWeek >= 6) {
|
||||||
@@ -516,6 +523,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
const computeWeekDates = computed(() => {
|
const computeWeekDates = computed(() => {
|
||||||
const dayDatas = computeDayDatas.value
|
const dayDatas = computeDayDatas.value
|
||||||
|
const firstDayOfWeek = computeFirstDayOfWeek.value
|
||||||
return dayDatas.map((list) => {
|
return dayDatas.map((list) => {
|
||||||
const firstItem = list[0]
|
const firstItem = list[0]
|
||||||
const item: DateDayItem = {
|
const item: DateDayItem = {
|
||||||
@@ -525,7 +533,7 @@ export default defineComponent({
|
|||||||
isCurrent: false,
|
isCurrent: false,
|
||||||
isNow: false,
|
isNow: false,
|
||||||
isNext: false,
|
isNext: false,
|
||||||
label: XEUtils.getYearWeek(firstItem.date)
|
label: XEUtils.getYearWeek(firstItem.date, firstDayOfWeek)
|
||||||
}
|
}
|
||||||
return [item].concat(list)
|
return [item].concat(list)
|
||||||
})
|
})
|
||||||
@@ -711,17 +719,27 @@ export default defineComponent({
|
|||||||
const { type } = props
|
const { type } = props
|
||||||
const { valueFormat } = props
|
const { valueFormat } = props
|
||||||
const dateLabelFormat = computeDateLabelFormat.value
|
const dateLabelFormat = computeDateLabelFormat.value
|
||||||
|
const firstDayOfWeek = computeFirstDayOfWeek.value
|
||||||
let dValue: Date | null = null
|
let dValue: Date | null = null
|
||||||
let dLabel = ''
|
let dLabel = ''
|
||||||
if (value) {
|
if (value) {
|
||||||
if (type === 'time') {
|
dValue = parseDate(value, valueFormat)
|
||||||
dValue = toStringTimeDate(value)
|
|
||||||
} else {
|
|
||||||
dValue = XEUtils.toStringDate(value, valueFormat)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (XEUtils.isValidDate(dValue)) {
|
if (XEUtils.isValidDate(dValue)) {
|
||||||
dLabel = XEUtils.toDateString(dValue, dateLabelFormat)
|
dLabel = XEUtils.toDateString(dValue, dateLabelFormat, { firstDay: firstDayOfWeek })
|
||||||
|
// 由于年份和第几周是冲突的行为,所以需要特殊处理,判断是否跨年
|
||||||
|
if (dateLabelFormat && type === 'week') {
|
||||||
|
const firstWeekDate = XEUtils.getWhatWeek(dValue, 0, firstDayOfWeek, firstDayOfWeek)
|
||||||
|
if (firstWeekDate.getFullYear() < dValue.getFullYear()) {
|
||||||
|
const yyIndex = dateLabelFormat.indexOf('yyyy')
|
||||||
|
if (yyIndex > -1) {
|
||||||
|
const yyNum = Number(dLabel.substring(yyIndex, yyIndex + 4))
|
||||||
|
if (yyNum && !isNaN(yyNum)) {
|
||||||
|
dLabel = dLabel.replace(`${yyNum}`, `${yyNum - 1}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
dValue = null
|
dValue = null
|
||||||
}
|
}
|
||||||
@@ -785,15 +803,16 @@ export default defineComponent({
|
|||||||
const { datetimePanelValue } = reactData
|
const { datetimePanelValue } = reactData
|
||||||
const isDateTimeType = computeIsDateTimeType.value
|
const isDateTimeType = computeIsDateTimeType.value
|
||||||
const dateValueFormat = computeDateValueFormat.value
|
const dateValueFormat = computeDateValueFormat.value
|
||||||
|
const firstDayOfWeek = computeFirstDayOfWeek.value
|
||||||
if (props.type === 'week') {
|
if (props.type === 'week') {
|
||||||
const sWeek = XEUtils.toNumber(props.selectDay)
|
const sWeek = XEUtils.toNumber(props.selectDay) as VxeInputPropTypes.SelectDay
|
||||||
date = XEUtils.getWhatWeek(date, 0, sWeek)
|
date = XEUtils.getWhatWeek(date, 0, sWeek, firstDayOfWeek)
|
||||||
} else if (isDateTimeType) {
|
} else if (isDateTimeType) {
|
||||||
date.setHours(datetimePanelValue.getHours())
|
date.setHours(datetimePanelValue.getHours())
|
||||||
date.setMinutes(datetimePanelValue.getMinutes())
|
date.setMinutes(datetimePanelValue.getMinutes())
|
||||||
date.setSeconds(datetimePanelValue.getSeconds())
|
date.setSeconds(datetimePanelValue.getSeconds())
|
||||||
}
|
}
|
||||||
const inpVal = XEUtils.toDateString(date, dateValueFormat)
|
const inpVal = XEUtils.toDateString(date, dateValueFormat, { firstDay: firstDayOfWeek })
|
||||||
dateCheckMonth(date)
|
dateCheckMonth(date)
|
||||||
if (!XEUtils.isEqual(modelValue, inpVal)) {
|
if (!XEUtils.isEqual(modelValue, inpVal)) {
|
||||||
emitModel(inpVal, { type: 'update' })
|
emitModel(inpVal, { type: 'update' })
|
||||||
@@ -826,12 +845,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
} else if (isDatePickerType) {
|
} else if (isDatePickerType) {
|
||||||
if (inputValue) {
|
if (inputValue) {
|
||||||
let inpDateVal: VxeInputPropTypes.ModelValue
|
let inpDateVal: VxeInputPropTypes.ModelValue = parseDate(inputValue, dateLabelFormat as string)
|
||||||
if (type === 'time') {
|
|
||||||
inpDateVal = toStringTimeDate(inputValue)
|
|
||||||
} else {
|
|
||||||
inpDateVal = XEUtils.toStringDate(inputValue, dateLabelFormat)
|
|
||||||
}
|
|
||||||
if (XEUtils.isValidDate(inpDateVal)) {
|
if (XEUtils.isValidDate(inpDateVal)) {
|
||||||
if (type === 'time') {
|
if (type === 'time') {
|
||||||
inpDateVal = XEUtils.toDateString(inpDateVal, dateLabelFormat)
|
inpDateVal = XEUtils.toDateString(inpDateVal, dateLabelFormat)
|
||||||
@@ -841,6 +855,7 @@ export default defineComponent({
|
|||||||
reactData.inputValue = inpDateVal
|
reactData.inputValue = inpDateVal
|
||||||
} else {
|
} else {
|
||||||
let isChange = false
|
let isChange = false
|
||||||
|
const firstDayOfWeek = computeFirstDayOfWeek.value
|
||||||
if (type === 'datetime') {
|
if (type === 'datetime') {
|
||||||
const dateValue = computeDateValue.value
|
const dateValue = computeDateValue.value
|
||||||
if (inputValue !== XEUtils.toDateString(dateValue, dateLabelFormat) || inputValue !== XEUtils.toDateString(inpDateVal, dateLabelFormat)) {
|
if (inputValue !== XEUtils.toDateString(dateValue, dateLabelFormat) || inputValue !== XEUtils.toDateString(inpDateVal, dateLabelFormat)) {
|
||||||
@@ -852,7 +867,7 @@ export default defineComponent({
|
|||||||
} else {
|
} else {
|
||||||
isChange = true
|
isChange = true
|
||||||
}
|
}
|
||||||
reactData.inputValue = XEUtils.toDateString(inpDateVal, dateLabelFormat)
|
reactData.inputValue = XEUtils.toDateString(inpDateVal, dateLabelFormat, { firstDay: firstDayOfWeek })
|
||||||
if (isChange) {
|
if (isChange) {
|
||||||
dateChange(inpDateVal)
|
dateChange(inpDateVal)
|
||||||
}
|
}
|
||||||
@@ -1291,14 +1306,15 @@ export default defineComponent({
|
|||||||
dateMoveMonth(offsetMonth)
|
dateMoveMonth(offsetMonth)
|
||||||
} else {
|
} else {
|
||||||
let offsetDay = datePanelValue || XEUtils.getWhatDay(Date.now(), 0, 'first')
|
let offsetDay = datePanelValue || XEUtils.getWhatDay(Date.now(), 0, 'first')
|
||||||
|
const firstDayOfWeek = computeFirstDayOfWeek.value
|
||||||
if (isLeftArrow) {
|
if (isLeftArrow) {
|
||||||
offsetDay = XEUtils.getWhatDay(offsetDay, -1)
|
offsetDay = XEUtils.getWhatDay(offsetDay, -1)
|
||||||
} else if (isUpArrow) {
|
} else if (isUpArrow) {
|
||||||
offsetDay = XEUtils.getWhatWeek(offsetDay, -1)
|
offsetDay = XEUtils.getWhatWeek(offsetDay, -1, firstDayOfWeek)
|
||||||
} else if (isRightArrow) {
|
} else if (isRightArrow) {
|
||||||
offsetDay = XEUtils.getWhatDay(offsetDay, 1)
|
offsetDay = XEUtils.getWhatDay(offsetDay, 1)
|
||||||
} else if (isDwArrow) {
|
} else if (isDwArrow) {
|
||||||
offsetDay = XEUtils.getWhatWeek(offsetDay, 1)
|
offsetDay = XEUtils.getWhatWeek(offsetDay, 1, firstDayOfWeek)
|
||||||
}
|
}
|
||||||
dateMoveDay(offsetDay)
|
dateMoveDay(offsetDay)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2806,6 +2806,25 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
return rowList
|
return rowList
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* 只对 tree-config 有效,获取行的父级
|
||||||
|
*/
|
||||||
|
getParentRow (rowOrRowid) {
|
||||||
|
const { treeConfig } = props
|
||||||
|
const { fullDataRowIdData } = internalData
|
||||||
|
if (rowOrRowid && treeConfig) {
|
||||||
|
let rowid
|
||||||
|
if (XEUtils.isString(rowOrRowid)) {
|
||||||
|
rowid = rowOrRowid
|
||||||
|
} else {
|
||||||
|
rowid = getRowid($xetable, rowOrRowid)
|
||||||
|
}
|
||||||
|
if (rowid) {
|
||||||
|
return fullDataRowIdData[rowid] ? fullDataRowIdData[rowid].parent : null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* 根据行的唯一主键获取行
|
* 根据行的唯一主键获取行
|
||||||
* @param {String/Number} rowid 行主键
|
* @param {String/Number} rowid 行主键
|
||||||
|
|||||||
4
types/input.d.ts
vendored
4
types/input.d.ts
vendored
@@ -66,8 +66,8 @@ export namespace VxeInputPropTypes {
|
|||||||
export type Digits = string | number;
|
export type Digits = string | number;
|
||||||
export type MinDate = string | number | Date;
|
export type MinDate = string | number | Date;
|
||||||
export type MaxDate = string | number | Date;
|
export type MaxDate = string | number | Date;
|
||||||
export type StartDay = number;
|
export type StartDay = 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
||||||
export type SelectDay = number;
|
export type SelectDay = 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
||||||
export type LabelFormat = string;
|
export type LabelFormat = string;
|
||||||
export type ValueFormat = string;
|
export type ValueFormat = string;
|
||||||
export type Editable = boolean;
|
export type Editable = boolean;
|
||||||
|
|||||||
4
types/table.d.ts
vendored
4
types/table.d.ts
vendored
@@ -272,6 +272,10 @@ export interface TablePublicMethods {
|
|||||||
* 用于 type=checkbox,获取已选中的行数据
|
* 用于 type=checkbox,获取已选中的行数据
|
||||||
*/
|
*/
|
||||||
getCheckboxRecords(isFull?: boolean): any[];
|
getCheckboxRecords(isFull?: boolean): any[];
|
||||||
|
/**
|
||||||
|
* 只对 tree-config 有效,获取行的父级
|
||||||
|
*/
|
||||||
|
getParentRow (rowOrRowid: any): any | null;
|
||||||
/**
|
/**
|
||||||
* 根据行的唯一主键获取行
|
* 根据行的唯一主键获取行
|
||||||
* @param rowid 行主键
|
* @param rowid 行主键
|
||||||
|
|||||||
Reference in New Issue
Block a user