个人消息
This commit is contained in:
150
components/steps/step-item.js
Normal file
150
components/steps/step-item.js
Normal file
@@ -0,0 +1,150 @@
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
import { wxComponent, SuperComponent } from '../common/src/index';
|
||||
import config from '../common/config';
|
||||
import props from './step-item-props';
|
||||
const { prefix } = config;
|
||||
let StepItem = class StepItem extends SuperComponent {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
this.options = {
|
||||
multipleSlots: true,
|
||||
};
|
||||
this.relations = {
|
||||
'./steps': {
|
||||
type: 'ancestor',
|
||||
},
|
||||
};
|
||||
this.externalClasses = [
|
||||
`${prefix}-class`,
|
||||
`${prefix}-class-inner`,
|
||||
`${prefix}-class-content`,
|
||||
`${prefix}-class-title`,
|
||||
`${prefix}-class-description`,
|
||||
`${prefix}-class-extra`,
|
||||
`${prefix}-class-sub`,
|
||||
`${prefix}-class-sub-dot`,
|
||||
`${prefix}-class-sub-content`,
|
||||
];
|
||||
this.properties = props;
|
||||
this.parent = null;
|
||||
this.data = {
|
||||
classPrefix: `${prefix}-steps-item`,
|
||||
prefix,
|
||||
rootClassName: '',
|
||||
index: 0,
|
||||
isDot: false,
|
||||
curStatus: '',
|
||||
curSubStepItems: [],
|
||||
curSubStepItemsStatus: [],
|
||||
layout: 'vertical',
|
||||
type: 'default',
|
||||
isLastChild: false,
|
||||
isLarge: false,
|
||||
readonly: false,
|
||||
computedIcon: '',
|
||||
};
|
||||
this.observers = {
|
||||
icon(val) {
|
||||
this.setData({
|
||||
computedIcon: val,
|
||||
});
|
||||
},
|
||||
};
|
||||
this.lifetimes = {
|
||||
ready() {
|
||||
const [parent] = this.getRelationNodes('./steps') || [];
|
||||
if (parent) {
|
||||
this.parent = parent;
|
||||
}
|
||||
},
|
||||
};
|
||||
this.methods = {
|
||||
updateStatus(current, currentStatus, index, theme, layout, steps, readonly) {
|
||||
const _current = String(current);
|
||||
const connectLine = '-';
|
||||
const judgeObjAttr = (data, attr) => {
|
||||
return Array.isArray(data[attr]) && data[attr].length;
|
||||
};
|
||||
const getStepLevel = (s) => {
|
||||
const reg = new RegExp(`(.*)${connectLine}{1}.*`);
|
||||
return s.replace(reg, '$1');
|
||||
};
|
||||
const isSameLevelStep = (stepsTag, current) => {
|
||||
return stepsTag.length < current.length && getStepLevel(stepsTag) === getStepLevel(current);
|
||||
};
|
||||
const stepFinalStatus = (item, itemTag, current, currentStatus) => {
|
||||
let tempStepStatus = '';
|
||||
if (item.status !== 'default' && item.status !== undefined) {
|
||||
tempStepStatus = item.status === '' ? 'default' : item.status;
|
||||
}
|
||||
else {
|
||||
tempStepStatus = 'default';
|
||||
if (itemTag < current) {
|
||||
tempStepStatus = 'finish';
|
||||
}
|
||||
else if (itemTag === current && item.status !== '') {
|
||||
tempStepStatus = currentStatus;
|
||||
}
|
||||
if (isSameLevelStep(itemTag, current)) {
|
||||
if (judgeObjAttr(item, 'subStepItems')) {
|
||||
const tempStepItemsStatus = item.subStepItems.map((subItem, subIndex) => {
|
||||
const subItemTag = `${itemTag}${connectLine}${subIndex}`;
|
||||
return stepFinalStatus(subItem, subItemTag, current, currentStatus);
|
||||
});
|
||||
if (tempStepItemsStatus[tempStepItemsStatus.length - 1] === 'finish') {
|
||||
tempStepStatus = 'finish';
|
||||
return tempStepStatus;
|
||||
}
|
||||
if (tempStepItemsStatus.includes('process') || tempStepItemsStatus.every((item) => item === 'default')) {
|
||||
tempStepStatus = 'process';
|
||||
}
|
||||
if (tempStepItemsStatus.includes('error')) {
|
||||
tempStepStatus = 'error';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return tempStepStatus;
|
||||
};
|
||||
this.data.tempStatus = stepFinalStatus(this.data, String(index), _current, currentStatus);
|
||||
const tempStatusList = [];
|
||||
if (judgeObjAttr(this.data, 'subStepItems')) {
|
||||
this.data.subStepItems.forEach((subItem, subIndex) => {
|
||||
tempStatusList.push(stepFinalStatus(subItem, `${index}${connectLine}${subIndex}`, _current, currentStatus));
|
||||
});
|
||||
}
|
||||
const tempIcon = new Map([
|
||||
['finish', 'check'],
|
||||
['error', 'close'],
|
||||
]);
|
||||
let iconStatus = '';
|
||||
if (readonly && tempIcon.has(this.data.tempStatus)) {
|
||||
iconStatus = tempIcon.get(this.data.tempStatus);
|
||||
}
|
||||
this.setData({
|
||||
curStatus: this.data.tempStatus,
|
||||
curSubStepItems: this.data.subStepItems || [],
|
||||
curSubStepItemsStatus: tempStatusList || [],
|
||||
computedIcon: this.data.icon || iconStatus,
|
||||
index,
|
||||
isDot: theme === 'dot' && layout === 'vertical',
|
||||
layout,
|
||||
theme,
|
||||
isLastChild: steps.length - 1 === index,
|
||||
});
|
||||
},
|
||||
click() {
|
||||
this.parent.handleClick(this.data.index);
|
||||
},
|
||||
};
|
||||
}
|
||||
};
|
||||
StepItem = __decorate([
|
||||
wxComponent()
|
||||
], StepItem);
|
||||
export default StepItem;
|
||||
Reference in New Issue
Block a user