219 lines
4.7 KiB
Vue
219 lines
4.7 KiB
Vue
|
<template>
|
|||
|
<view
|
|||
|
class="boxCon dataAdmin"
|
|||
|
v-if="store.state.user.deliveryData.length > 0"
|
|||
|
>
|
|||
|
<button class="uni-btn concelBtn" @click="handleAdmin" v-if="!isAdmin">
|
|||
|
管理
|
|||
|
</button>
|
|||
|
<view v-else class="adminInfo">
|
|||
|
<view class="selectInfo">
|
|||
|
<label class="checkRadio">
|
|||
|
<radio
|
|||
|
value="1"
|
|||
|
:checked="selected.size === store.state.user.deliveryData.length"
|
|||
|
:class="
|
|||
|
selected.size === store.state.user.deliveryData.length
|
|||
|
? 'active'
|
|||
|
: ''
|
|||
|
"
|
|||
|
@click="allSelect"
|
|||
|
/>
|
|||
|
全选
|
|||
|
</label>
|
|||
|
总计
|
|||
|
<text class="num">{{ selected.size }}</text>
|
|||
|
条
|
|||
|
</view>
|
|||
|
<view>
|
|||
|
<button
|
|||
|
class="uni-btn concelBtn"
|
|||
|
v-if="isAdmin"
|
|||
|
@click="handleAccomplish"
|
|||
|
>
|
|||
|
完成
|
|||
|
</button>
|
|||
|
<button
|
|||
|
class="uni-btn btn-default"
|
|||
|
v-if="tabIndex === 0 && !isDelivery"
|
|||
|
@click="handleOrder"
|
|||
|
>
|
|||
|
转单
|
|||
|
</button>
|
|||
|
<button
|
|||
|
class="uni-btn btn-default"
|
|||
|
v-else-if="tabIndex === 1 && !isDelivery"
|
|||
|
@click="handlePrint"
|
|||
|
>
|
|||
|
打印
|
|||
|
</button>
|
|||
|
|
|||
|
<button
|
|||
|
class="uni-btn btn-default"
|
|||
|
v-if="!isDelivery && tabIndex === 2"
|
|||
|
@click="handleBatchDelete"
|
|||
|
>
|
|||
|
批量删除
|
|||
|
</button>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<!-- 提示窗示例 -->
|
|||
|
<UniPopup
|
|||
|
ref="popup"
|
|||
|
:tipInfo="tipInfo"
|
|||
|
@handleClick="handleClick"
|
|||
|
></UniPopup>
|
|||
|
<!-- end -->
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script setup>
|
|||
|
import { ref } from "vue";
|
|||
|
import { useStore } from "vuex";
|
|||
|
// 弹层
|
|||
|
import UniPopup from "@/components/uni-popup/index.vue";
|
|||
|
// ------定义变量------
|
|||
|
// 获取父组件数据
|
|||
|
const props = defineProps({
|
|||
|
// 已选内容
|
|||
|
selected: {
|
|||
|
type: Map,
|
|||
|
default: () => [],
|
|||
|
},
|
|||
|
// 当前tab切换值,判断是已取件还是待取件
|
|||
|
tabIndex: {
|
|||
|
type: Number,
|
|||
|
default: null,
|
|||
|
},
|
|||
|
// 是否触发管理按钮,此处是用来控制是否显示全选、条数、转单、打印、删除按钮
|
|||
|
isAdmin: {
|
|||
|
type: Boolean,
|
|||
|
default: false,
|
|||
|
},
|
|||
|
// 区分取件派件
|
|||
|
isDelivery: {
|
|||
|
type: Boolean,
|
|||
|
default: false,
|
|||
|
},
|
|||
|
});
|
|||
|
const store = useStore();
|
|||
|
const users = store.state.user;
|
|||
|
const emit = defineEmits();
|
|||
|
let popup = ref();
|
|||
|
const tipInfo = ref("确定要批量删除吗?");
|
|||
|
let itemData = store.state.user.deliveryData;
|
|||
|
// ------定义方法------
|
|||
|
// 管理数据
|
|||
|
const handleAdmin = () => {
|
|||
|
emit("getAdmin", true);
|
|||
|
};
|
|||
|
// 全选
|
|||
|
const allSelect = () => {
|
|||
|
emit("allSelect");
|
|||
|
};
|
|||
|
// 转单
|
|||
|
const handleOrder = () => {
|
|||
|
if (props.selected.size > 0) {
|
|||
|
let ids = [];
|
|||
|
for (let [key, value] of props.selected) {
|
|||
|
ids.push(value);
|
|||
|
}
|
|||
|
if (props.isDelivery) {
|
|||
|
store.commit("user/setIsDelivery", true);
|
|||
|
} else {
|
|||
|
store.commit("user/setIsDelivery", false);
|
|||
|
}
|
|||
|
uni.navigateTo({
|
|||
|
url: "/pages/turnorder/index",
|
|||
|
});
|
|||
|
} else {
|
|||
|
return uni.showToast({
|
|||
|
title: "请选择任务!",
|
|||
|
duration: 1000,
|
|||
|
icon: "none",
|
|||
|
});
|
|||
|
}
|
|||
|
};
|
|||
|
// 批量删除
|
|||
|
const handleBatchDelete = () => {
|
|||
|
if (props.selected.size > 0) {
|
|||
|
popup.value.dialogOpen();
|
|||
|
} else {
|
|||
|
return uni.showToast({
|
|||
|
title: "请选择要删除的任务!",
|
|||
|
duration: 1000,
|
|||
|
icon: "none",
|
|||
|
});
|
|||
|
}
|
|||
|
};
|
|||
|
// 打印
|
|||
|
const handlePrint = () => {
|
|||
|
uni.showToast({
|
|||
|
title: "程序员哥哥正在实现中",
|
|||
|
duration: 1000,
|
|||
|
icon: "none",
|
|||
|
});
|
|||
|
};
|
|||
|
// 完成
|
|||
|
const handleAccomplish = () => {
|
|||
|
let itemData = users.deliveryData;
|
|||
|
props.selected.clear(); // 全部清除
|
|||
|
itemData.forEach((element) => {
|
|||
|
element.selected = false; // 全部不选,就行了
|
|||
|
});
|
|||
|
store.commit("user/setDeliveryData", itemData);
|
|||
|
emit("getAdmin", false);
|
|||
|
};
|
|||
|
// 确认删除
|
|||
|
const handleClick = () => {
|
|||
|
emit("handleClick");
|
|||
|
};
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss" scoped>
|
|||
|
.dataAdmin {
|
|||
|
padding: 24rpx 30rpx 24rpx 36rpx;
|
|||
|
position: fixed;
|
|||
|
bottom: 100rpx;
|
|||
|
left: 0;
|
|||
|
right: 0;
|
|||
|
z-index: 0;
|
|||
|
.concelBtn,
|
|||
|
.btn-default {
|
|||
|
height: 60rpx;
|
|||
|
line-height: 60rpx;
|
|||
|
width: 140rpx;
|
|||
|
border-radius: 30rpx;
|
|||
|
font-weight: 600;
|
|||
|
}
|
|||
|
.btn-default {
|
|||
|
margin-left: 20rpx !important;
|
|||
|
}
|
|||
|
.concelBtn {
|
|||
|
float: right;
|
|||
|
}
|
|||
|
.num {
|
|||
|
color: var(--essential-color-red);
|
|||
|
padding: 0 4rpx;
|
|||
|
}
|
|||
|
.adminInfo {
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
height: 60rpx;
|
|||
|
line-height: 60rpx;
|
|||
|
& > view {
|
|||
|
&.selectInfo {
|
|||
|
flex: 1;
|
|||
|
.checkRadio {
|
|||
|
padding-right: 24rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
&:last-child {
|
|||
|
text-align: right;
|
|||
|
display: flex;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|