freight-web/src/pagesApp/supplierMgt.vue

240 lines
5.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="c-card app-container">
<view class="search">
<view class="type" @click="state.isShowType = true"
>全部分类<u-icon name="arrow-down"></u-icon>
</view>
<u-search
placeholder="请输入供应商名称"
v-model="state.name"
:showAction="false"
:bgColor="'#fff'"
:borderColor="'rgba(0, 0, 0, 0.1)'"
:placeholderColor="'#C1C1C1'"
@search="handleSearch()"
@clear="handleSearch()"
></u-search>
</view>
<page-view
@loadList="
(v) => {
getList(v);
}
"
:noMoreData="pageList.noMoreData"
:list="pageList.list"
:height="100"
:isLoading="pageList.isLoading"
>
<view class="box" v-for="(item, index) in pageList.list" :key="index">
<view>
<view>
<view>{{ item.name }}</view>
<view>卡号{{ item.cardCode }}</view>
</view>
<view class="op-box">
<view class="btn" @click="edit(item)"> 编辑 </view>
<view class="btn" @click="handleModal(true, item.id)"> 删除 </view>
</view>
</view>
</view>
</page-view>
</view>
<u-action-sheet
:actions="state.typeList"
:title="'供应商分类'"
:show="state.isShowType"
:closeOnClickOverlay="true"
:closeOnClickAction="true"
@close="state.isShowType = false"
@select="handleSelect"
></u-action-sheet>
<view class="btn-box-fix-btn">
<u-button type="primary" text="新增" @click="add" shape="circle"></u-button>
</view>
<SmallModal
:title="'确认删除吗?'"
:content="'确认删除后,不能恢复!'"
:okText="'确认删除'"
:isMain="true"
:show="isShowCancelModal"
@handleModal="(v:boolean) => {handleModal(v, deleteId)}"
@handleOk="handleOk()"
/>
</template>
<script setup lang="ts">
import { SupplierApi } from "@/services";
import { UsersType } from "@/utils/enum";
import PageView from "@/components/PageView/index.vue";
import SmallModal from "@/components/Modal/smallModal.vue";
import { onShow } from "@dcloudio/uni-app";
const isShowCancelModal = ref(false);
const deleteId = ref(0);
const handleModal = (v: boolean, id: number) => {
isShowCancelModal.value = v;
deleteId.value = id;
};
const handleOk = () => {
update({ id: deleteId.value });
};
const state = reactive<any>({
name: "",
supplierTypeId: -1,
isShowType: false,
typeList: [],
});
const pageList: PageResult<Supplier> = reactive({
total: 0,
list: [],
pageNum: 1,
pageSize: 10,
});
const resetPageList = () => {
pageList.noMoreData = false;
pageList.total = 0;
pageList.list = [];
pageList.pageNum = 1;
pageList.pageSize = 100;
};
const handleSelect = (v: any) => {
state.supplierTypeId = v.id;
resetPageList();
getList();
};
const handleSearch = () => {
resetPageList();
getList();
};
const update = (item: any) => {
SupplierApi.updateSupplierUser({ isDeleted: true, id: item.id }).then(
(res) => {
if (res.code === 200) {
resetPageList();
getList();
}
}
);
};
const edit = (item: any) => {
uni.navigateTo({
url: "/pagesApp/components/addSupplier?title=编辑供应商&item=" + item.id, // 要跳转到的页面路径
});
};
const getList = (v?: boolean) => {
if (v) {
if (Math.ceil(pageList.total / pageList.pageSize) > pageList.pageNum) {
pageList.pageNum++;
} else {
pageList.noMoreData = true;
return;
}
}
let params: any = {
pageSize: pageList.pageSize,
pageNum: pageList.pageNum,
name: state.name,
};
if (state.supplierTypeId > -1) {
params.supplierTypeId = state.supplierTypeId;
}
pageList.isLoading = true;
SupplierApi.getSupplierUserPage(params).then((res: any) => {
if (res.code === 200) {
pageList.isLoading = false;
(pageList as any).list = (pageList as any).list = pageList.list.concat(
res.data.list
);
pageList.total = (res.data as any).total;
}
});
};
const getSupplierTypeList = () => {
SupplierApi.getSupplierTypeList().then((res: any) => {
if (res.code === 200) {
state.typeList = [{ id: -1, name: "全部" }].concat(res.data);
}
});
};
const add = () => {
uni.navigateTo({
url: "/pagesApp/components/addSupplier", // 要跳转到的页面路径
});
};
onShow(() => {
resetPageList();
getList();
getSupplierTypeList();
});
</script>
<style lang="scss" scoped>
.c-card {
margin: 30rpx 25rpx;
.search {
display: flex;
align-items: center;
justify-content: space-between;
.type {
display: flex;
margin-right: 20rpx;
font-size: 28rpx;
color: #000000;
}
.btn {
background: #00dcee;
border-radius: 24rpx;
border: 1px solid #00dcee;
font-weight: 500;
font-size: 28rpx;
color: #ffffff;
margin-left: 50rpx;
padding: 6rpx 30rpx;
}
}
.box {
background: #ffffff;
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(5, 68, 37, 0.12);
border-radius: 13rpx;
padding: 10rpx 20rpx;
font-weight: 400;
font-size: 28rpx;
color: #000000;
line-height: 41rpx;
margin-top: 30rpx;
> view {
display: flex;
align-items: center;
justify-content: space-between;
padding: 20rpx 0rpx;
.op-box {
display: flex;
.btn + .btn {
margin-left: 20rpx;
}
.btn {
background: #ff9d55;
border-radius: 24rpx;
font-weight: 500;
font-size: 28rpx;
color: #ffffff;
padding: 6rpx 30rpx;
}
.btn_text {
font-weight: 500;
font-size: 24rpx;
color: #00dcee;
}
}
}
> view + view {
border-top: 1px solid rgba(233, 233, 233, 0.76);
}
}
}
</style>