freight-web/src/PagesStatistics/components/StatusDialog.vue

110 lines
2.1 KiB
Vue

<template>
<u-popup
:show="show"
mode="bottom"
:round="10"
:closeable="true"
@close="handleClose"
>
<view class="c-dialog">
<view class="box"><text>单据状态</text></view>
<view class="box-btn"
><text
v-for="(item, index) in state.statusList"
:key="index"
:class="{ active: state.currentStates === item.id }"
@click="handleSelect(item)"
>{{ item.name }}</text
></view
>
</view>
</u-popup>
</template>
<script setup lang="ts">
const props = defineProps<{
show: boolean;
}>();
const state = reactive({
currentStates: -1,
statusList: [
{
id: -1,
name: "全部",
},
{
id: 4,
name: "已支付",
},
{
id: 3,
name: "已审未付",
},
{
id: 2,
name: "未审核",
},
],
});
const emit = defineEmits(["handleDialog", "changeStatus"]);
const handleClose = () => {
emit("handleDialog", false);
};
const handleSelect = (item: any) => {
state.currentStates = item.id
emit("changeStatus", item)
emit("handleDialog", false);
}
</script>
<style lang="scss" scoped>
::v-deep .u-popup__content {
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(5, 68, 37, 0.12);
border-radius: 32rpx 32rpx 0rpx 0rpx;
}
.c-dialog {
margin: 65.38rpx 44.87rpx;
font-family: Source Han Sans CN;
font-weight: 500;
font-size: 26rpx;
color: #000000;
.box-btn,
.box {
line-height: 80rpx;
display: flex;
justify-content: space-between;
}
.box-btn {
line-height: 40rpx;
margin-bottom: 30rpx;
text {
font-weight: 400;
font-size: 26rpx;
color: #999999;
width: 140rpx;
background: #ffffff;
border-radius: 6rpx;
border: 1px solid rgba(153, 153, 153, 0.64);
text-align: center;
cursor: pointer;
}
.active {
border-color: $u-primary;
color: $u-primary;
}
}
.btn {
font-weight: 500;
font-size: 26rpx;
color: $u-primary;
}
.box-border {
border-top: 1px solid rgba(233, 233, 233, 0.76);
}
.line {
height: 18rpx;
background: #f8f8f8;
}
}
</style>