|
@@ -1,7 +1,8 @@
|
|
|
<template>
|
|
<template>
|
|
|
<view :class="classes" @click="handleClick">
|
|
<view :class="classes" @click="handleClick">
|
|
|
<slot>
|
|
<slot>
|
|
|
- <view class="nut-cell__title">
|
|
|
|
|
|
|
+ <view class="nut-cell__title" :class="{ icon: icon }" v-if="title || subTitle || icon">
|
|
|
|
|
+ <nut-icon v-if="icon" class="icon" :name="icon"></nut-icon>
|
|
|
<template v-if="subTitle">
|
|
<template v-if="subTitle">
|
|
|
<view class="title">{{ title }}</view>
|
|
<view class="title">{{ title }}</view>
|
|
|
<view class="nut-cell__title-desc">{{ subTitle }}</view>
|
|
<view class="nut-cell__title-desc">{{ subTitle }}</view>
|
|
@@ -10,7 +11,7 @@
|
|
|
{{ title }}
|
|
{{ title }}
|
|
|
</template>
|
|
</template>
|
|
|
</view>
|
|
</view>
|
|
|
- <view v-if="desc" class="nut-cell__value">{{ desc }}</view>
|
|
|
|
|
|
|
+ <view v-if="desc" class="nut-cell__value" :style="{ 'text-align': descTextAlign }">{{ desc }}</view>
|
|
|
<nut-icon v-if="isLink || to" size="14px" color="#979797" name="right"></nut-icon>
|
|
<nut-icon v-if="isLink || to" size="14px" color="#979797" name="right"></nut-icon>
|
|
|
</slot>
|
|
</slot>
|
|
|
</view>
|
|
</view>
|
|
@@ -28,44 +29,38 @@ export default create({
|
|
|
title: { type: String, default: '' },
|
|
title: { type: String, default: '' },
|
|
|
subTitle: { type: String, default: '' },
|
|
subTitle: { type: String, default: '' },
|
|
|
desc: { type: String, default: '' },
|
|
desc: { type: String, default: '' },
|
|
|
|
|
+ descTextAlign: { type: String, default: 'right' },
|
|
|
isLink: { type: Boolean, default: false },
|
|
isLink: { type: Boolean, default: false },
|
|
|
to: { type: String, default: '' },
|
|
to: { type: String, default: '' },
|
|
|
replace: { type: Boolean, default: false },
|
|
replace: { type: Boolean, default: false },
|
|
|
- url: { type: String, default: '' }
|
|
|
|
|
|
|
+ url: { type: String, default: '' },
|
|
|
|
|
+ icon: { type: String, default: '' }
|
|
|
},
|
|
},
|
|
|
components: {
|
|
components: {
|
|
|
[Icon.name]: Icon
|
|
[Icon.name]: Icon
|
|
|
},
|
|
},
|
|
|
emits: ['click'],
|
|
emits: ['click'],
|
|
|
setup(props, { emit }) {
|
|
setup(props, { emit }) {
|
|
|
- const { title, to, desc, subTitle, isLink, url, replace } = toRefs(props);
|
|
|
|
|
const classes = computed(() => {
|
|
const classes = computed(() => {
|
|
|
const prefixCls = componentName;
|
|
const prefixCls = componentName;
|
|
|
return {
|
|
return {
|
|
|
[prefixCls]: true,
|
|
[prefixCls]: true,
|
|
|
- [`${prefixCls}--clickable`]: isLink.value || to
|
|
|
|
|
|
|
+ [`${prefixCls}--clickable`]: props.isLink || props.to
|
|
|
};
|
|
};
|
|
|
});
|
|
});
|
|
|
-
|
|
|
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
|
-
|
|
|
|
|
const handleClick = (event: Event) => {
|
|
const handleClick = (event: Event) => {
|
|
|
emit('click', event);
|
|
emit('click', event);
|
|
|
- if (to.value && router) {
|
|
|
|
|
- router[replace.value ? 'replace' : 'push'](to.value);
|
|
|
|
|
- } else if (url.value) {
|
|
|
|
|
- replace.value ? location.replace(url.value) : (location.href = url.value);
|
|
|
|
|
|
|
+ if (props.to && router) {
|
|
|
|
|
+ router[props.replace ? 'replace' : 'push'](props.to);
|
|
|
|
|
+ } else if (props.url) {
|
|
|
|
|
+ props.replace ? location.replace(props.url) : (location.href = props.url);
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
return {
|
|
return {
|
|
|
handleClick,
|
|
handleClick,
|
|
|
- title,
|
|
|
|
|
- to,
|
|
|
|
|
- subTitle,
|
|
|
|
|
- desc,
|
|
|
|
|
- classes,
|
|
|
|
|
- isLink
|
|
|
|
|
|
|
+ classes
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|