update: 支付明细对接
This commit is contained in:
parent
dab730d30e
commit
afdefbb2f4
|
@ -369,7 +369,19 @@ const getOverview = () => {
|
||||||
getPaymentCount();
|
getPaymentCount();
|
||||||
getRevenueCount();
|
getRevenueCount();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 获取客户/供应商应收应付总额
|
||||||
|
const getTotal = () => {
|
||||||
|
ReceiveApi.getTotal().then((res:any) => {
|
||||||
|
if(res.code === 200) {
|
||||||
|
const {unPayCustomerTotal, unPaySupplierTotal} = res.data
|
||||||
|
list[0].num = unPayCustomerTotal
|
||||||
|
list[1].num = unPaySupplierTotal
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
getTotal()
|
||||||
getOverview();
|
getOverview();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
<text>{{ item.supplierName }}</text>
|
<text>{{ item.supplierName }}</text>
|
||||||
<text class="num">¥{{ item.unPayTotalPrice }} <text class="tip">欠</text></text>
|
<text class="num">¥{{ item.unPayTotalPrice }} <text class="tip">欠</text></text>
|
||||||
</view>
|
</view>
|
||||||
|
<u-empty v-if="billList.length === 0" mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png">
|
||||||
|
</u-empty>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
<text>{{ item.supplierName }}</text>
|
<text>{{ item.supplierName }}</text>
|
||||||
<text class="num">¥{{ item.unPayTotalPrice }} <text class="tip">付</text></text>
|
<text class="num">¥{{ item.unPayTotalPrice }} <text class="tip">付</text></text>
|
||||||
</view>
|
</view>
|
||||||
|
<u-empty v-if="billList.length === 0" mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png">
|
||||||
|
</u-empty>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -347,6 +347,18 @@
|
||||||
"navigationBarTitleText": "权限管理"
|
"navigationBarTitleText": "权限管理"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "paymentDetail",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "支付明细"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "incomeDetail",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "收入明细"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "components/addSupplierType",
|
"path": "components/addSupplierType",
|
||||||
"style": {
|
"style": {
|
||||||
|
@ -406,6 +418,18 @@
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "新增权限"
|
"navigationBarTitleText": "新增权限"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "components/addPayment",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "新增支付明细"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "components/payContent",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "支付详情"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,156 @@
|
||||||
|
<template>
|
||||||
|
<u-popup :show="show" mode="left" :closeable="true" @close="handleClose">
|
||||||
|
<view class="c-dialog-filter">
|
||||||
|
<view class="title">筛选</view>
|
||||||
|
<u-list height="200">
|
||||||
|
<u-list-item>
|
||||||
|
<u-cell
|
||||||
|
:title="`类型`"
|
||||||
|
@click="state.isShowStatus = true"
|
||||||
|
:value="state.type.name"
|
||||||
|
>
|
||||||
|
<template #right-icon> </template>
|
||||||
|
</u-cell>
|
||||||
|
</u-list-item>
|
||||||
|
<u-list-item boder="none">
|
||||||
|
<u-cell
|
||||||
|
:title="`${state.type.key ? '供应商': '客户'}`"
|
||||||
|
@click="handleDialog('showSupplier', true)"
|
||||||
|
:value="state.user.name"
|
||||||
|
>
|
||||||
|
<template #right-icon> </template>
|
||||||
|
</u-cell>
|
||||||
|
</u-list-item>
|
||||||
|
</u-list>
|
||||||
|
|
||||||
|
<view class="btn-box1">
|
||||||
|
<u-button
|
||||||
|
text="重置"
|
||||||
|
color="#E8E8E8"
|
||||||
|
:customStyle="{ color: '#999' }"
|
||||||
|
shape="circle"
|
||||||
|
@click="resetState"
|
||||||
|
></u-button>
|
||||||
|
<u-button
|
||||||
|
type="primary"
|
||||||
|
text="确定"
|
||||||
|
shape="circle"
|
||||||
|
@click="handleOk()"
|
||||||
|
></u-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
|
||||||
|
<!-- 供应商选择弹框 -->
|
||||||
|
<SupplierDialog
|
||||||
|
ref="supplierDialog"
|
||||||
|
:show="showDialog.showSupplier"
|
||||||
|
@handleDialog="(v:boolean) => {handleDialog('showSupplier', v)}"
|
||||||
|
@changeUser="changeUser"
|
||||||
|
:isShipment="state.type.key === 2 ? true : false"
|
||||||
|
></SupplierDialog>
|
||||||
|
<!-- 客户类型 -->
|
||||||
|
<u-action-sheet
|
||||||
|
:closeOnClickOverlay="true"
|
||||||
|
:closeOnClickAction="true"
|
||||||
|
:actions="state.statusList"
|
||||||
|
:title="'类型'"
|
||||||
|
:show="state.isShowStatus"
|
||||||
|
@select="handleSelectStatus"
|
||||||
|
@close="state.isShowStatus = false"
|
||||||
|
></u-action-sheet>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import SupplierDialog from "./SupplierDialog.vue";
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
show: boolean;
|
||||||
|
}>();
|
||||||
|
const emit = defineEmits(["handleDialog", "changeOther"]);
|
||||||
|
const handleClose = () => {
|
||||||
|
emit("handleDialog", false);
|
||||||
|
};
|
||||||
|
const showDialog = <
|
||||||
|
{
|
||||||
|
[key: string]: boolean;
|
||||||
|
}
|
||||||
|
>reactive({
|
||||||
|
showSupplier: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
const state = <
|
||||||
|
{
|
||||||
|
[key: string]: any;
|
||||||
|
}
|
||||||
|
>reactive({
|
||||||
|
type: {
|
||||||
|
key: 1,
|
||||||
|
name: "供应商",
|
||||||
|
},
|
||||||
|
user: {
|
||||||
|
id: -1,
|
||||||
|
name: "",
|
||||||
|
},
|
||||||
|
statusList: [
|
||||||
|
{
|
||||||
|
name: "供应商",
|
||||||
|
key: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "客户",
|
||||||
|
key: 2,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
const supplierDialog = ref(null)
|
||||||
|
const handleDialog = (key: string, v: boolean) => {
|
||||||
|
showDialog[key] = v;
|
||||||
|
};
|
||||||
|
const handleSelectStatus = (v: any) => {
|
||||||
|
resetState()
|
||||||
|
state.isShowStatus = false;
|
||||||
|
state.type = v;
|
||||||
|
};
|
||||||
|
const changeUser = (obj: any) => {
|
||||||
|
state.user = obj;
|
||||||
|
};
|
||||||
|
const resetState = () => {
|
||||||
|
state.user = {
|
||||||
|
id: -1,
|
||||||
|
name: "",
|
||||||
|
};
|
||||||
|
};
|
||||||
|
const handleOk = () => {
|
||||||
|
emit("changeOther", { userId: state.user.id, type: state.type.key});
|
||||||
|
emit("handleDialog", false);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.c-dialog-filter {
|
||||||
|
width: 95vw;
|
||||||
|
padding: 25rpx;
|
||||||
|
.title {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #000000;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
::v-deep .u-list {
|
||||||
|
height: 50vh !important;
|
||||||
|
.u-cell__title-text {
|
||||||
|
font-family: Source Han Sans CN;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 27rpx !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btn-box1 {
|
||||||
|
flex-direction: row;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 30rpx;
|
||||||
|
::v-deep button + button {
|
||||||
|
margin-left: 50rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,241 @@
|
||||||
|
<template>
|
||||||
|
<u-popup :show="show" mode="left" :closeable="true" @close="handleClose">
|
||||||
|
<view class="c-dialog-filter">
|
||||||
|
<view class="title">{{isShipment? '客户' : '供应商'}}筛选</view>
|
||||||
|
<view class="search">
|
||||||
|
<u-search
|
||||||
|
:placeholder="`请输入${isShipment? '客户' : '供应商'}名称 / 卡号搜索`"
|
||||||
|
v-model="keyword"
|
||||||
|
@search="handleSearch()"
|
||||||
|
></u-search>
|
||||||
|
</view>
|
||||||
|
<view class="dialog-product-layout">
|
||||||
|
<!-- 自定义索引列表 -->
|
||||||
|
<view class="address-book-container">
|
||||||
|
<!-- 左侧通讯录 -->
|
||||||
|
<scroll-view
|
||||||
|
class="scroll-container"
|
||||||
|
:scroll-y="true"
|
||||||
|
:scroll-into-view="toView"
|
||||||
|
:scroll-with-animation="true"
|
||||||
|
>
|
||||||
|
<view
|
||||||
|
class="address-book"
|
||||||
|
v-for="(item, index) in addressBook"
|
||||||
|
:key="index"
|
||||||
|
:id="item.name"
|
||||||
|
>
|
||||||
|
<view class="address-book-index">{{ item.name }}</view>
|
||||||
|
<view
|
||||||
|
class="contact-container"
|
||||||
|
v-for="(cItem, index) in item.list"
|
||||||
|
:key="index"
|
||||||
|
>
|
||||||
|
<!-- <img
|
||||||
|
class="contact-img"
|
||||||
|
src="http://www.lixia.gov.cn/picture/0/s_97b76c734a6f40f8abba95615cbff1e1.jpg"
|
||||||
|
alt=""
|
||||||
|
/> -->
|
||||||
|
<view
|
||||||
|
class="contact-detail-container"
|
||||||
|
@click="handleClick(cItem)"
|
||||||
|
>
|
||||||
|
<view class="contact-name">{{ cItem.name }}</view>
|
||||||
|
<view class="contact-address">{{ cItem.cardCode }}</view>
|
||||||
|
<!-- <view class="contact-phone">{{ item.phone }}</view> -->
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
|
||||||
|
<!-- 右侧字母导航条 -->
|
||||||
|
<view class="letter-nav">
|
||||||
|
<view
|
||||||
|
class="item"
|
||||||
|
:class="{ active: toView === item }"
|
||||||
|
v-for="(item, index) in indexList"
|
||||||
|
:key="index"
|
||||||
|
@click="toSelectIndex(item)"
|
||||||
|
>{{ item }}</view
|
||||||
|
>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { CustomerApi, SupplierApi } from "@/services";
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
show: boolean;
|
||||||
|
isShipment: boolean;
|
||||||
|
}>();
|
||||||
|
const emit = defineEmits(["handleDialog", "changeUser"]);
|
||||||
|
const handleClose = () => {
|
||||||
|
emit("handleDialog", false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const keyword = ref("");
|
||||||
|
|
||||||
|
const indexList = [
|
||||||
|
"A",
|
||||||
|
"B",
|
||||||
|
"C",
|
||||||
|
"D",
|
||||||
|
"E",
|
||||||
|
"F",
|
||||||
|
"G",
|
||||||
|
"H",
|
||||||
|
"I",
|
||||||
|
"J",
|
||||||
|
"K",
|
||||||
|
"L",
|
||||||
|
"M",
|
||||||
|
"N",
|
||||||
|
"O",
|
||||||
|
"P",
|
||||||
|
"Q",
|
||||||
|
"R",
|
||||||
|
"S",
|
||||||
|
"T",
|
||||||
|
"U",
|
||||||
|
"V",
|
||||||
|
"W",
|
||||||
|
"X",
|
||||||
|
"Y",
|
||||||
|
"Z",
|
||||||
|
"#",
|
||||||
|
];
|
||||||
|
const toView = ref("");
|
||||||
|
const addressBook = ref();
|
||||||
|
// [
|
||||||
|
// {
|
||||||
|
// id: "A",
|
||||||
|
// data: [
|
||||||
|
// {
|
||||||
|
// zh_title: "阿联酋迪拉姆",
|
||||||
|
// en_title: "aa",
|
||||||
|
// address: "910289591",
|
||||||
|
// phone: "111111",
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// zh_title: "阿尔巴尼亚列克",
|
||||||
|
// en_title: "aaaaa",
|
||||||
|
// address: "ALL",
|
||||||
|
// phone: "222222",
|
||||||
|
// },
|
||||||
|
// ],
|
||||||
|
// }
|
||||||
|
// ];
|
||||||
|
|
||||||
|
const toSelectIndex = (item: any) => {
|
||||||
|
toView.value = item;
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleClick = (item: any) => {
|
||||||
|
emit("changeUser", item);
|
||||||
|
emit("handleDialog", false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSearch = () => {
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
|
||||||
|
const getList = () => {
|
||||||
|
if (props.isShipment) {
|
||||||
|
CustomerApi.getCustomUserListLettera({ name: keyword.value }).then(
|
||||||
|
(res: any) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
addressBook.value = res.data.reduce((pre: any, curr: any) => {
|
||||||
|
if (curr.list.length > 0) {
|
||||||
|
pre.push(curr);
|
||||||
|
}
|
||||||
|
return pre;
|
||||||
|
}, []);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
SupplierApi.getSupplierUserListLettera({ name: keyword.value }).then(
|
||||||
|
(res: any) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
addressBook.value = res.data.reduce((pre: any, curr: any) => {
|
||||||
|
if (curr.list.length > 0) {
|
||||||
|
pre.push(curr);
|
||||||
|
}
|
||||||
|
return pre;
|
||||||
|
}, []);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.isShipment,
|
||||||
|
(newValue, oldValue) => {
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
onMounted(() => {
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.c-dialog-filter {
|
||||||
|
width: 95vw;
|
||||||
|
padding: 25rpx;
|
||||||
|
.title {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #000000;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.search {
|
||||||
|
margin: 30rpx 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.dialog-product-layout {
|
||||||
|
height: 80vh;
|
||||||
|
.address-book-container {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.address-book-index {
|
||||||
|
font-size: 24rpx;
|
||||||
|
}
|
||||||
|
.contact-img {
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
.scroll-container {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.letter-nav {
|
||||||
|
position: fixed;
|
||||||
|
right: 25rpx;
|
||||||
|
top: 100px;
|
||||||
|
font-size: 22rpx;
|
||||||
|
text-align: center;
|
||||||
|
.item:hover,
|
||||||
|
.active {
|
||||||
|
color: $u-primary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.contact-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin: 2%;
|
||||||
|
}
|
||||||
|
.contact-detail-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
width: 80%;
|
||||||
|
font-size: 22rpx;
|
||||||
|
.contact-address {
|
||||||
|
color: rgba(0, 0, 0, 0.65);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,505 @@
|
||||||
|
<template>
|
||||||
|
<view class="c-card">
|
||||||
|
<u-form
|
||||||
|
labelPosition="left"
|
||||||
|
:model="model1"
|
||||||
|
:rules="model1.order.buttonType === 3 ? rules1 : rules2"
|
||||||
|
ref="form"
|
||||||
|
:labelWidth="80"
|
||||||
|
:labelStyle="{ padding: '0rpx 10rpx' }"
|
||||||
|
:errorType="'border-bottom'"
|
||||||
|
>
|
||||||
|
<u-form-item
|
||||||
|
:prop="`order.${item.key}`"
|
||||||
|
:label="item.name"
|
||||||
|
:required="item.required"
|
||||||
|
v-for="(item, index) in model1.order.buttonType === 3
|
||||||
|
? formAttrList1
|
||||||
|
: formAttrList2"
|
||||||
|
:key="index"
|
||||||
|
@click="item.fn"
|
||||||
|
>
|
||||||
|
<u-textarea
|
||||||
|
v-if="item.type === 'textarea'"
|
||||||
|
v-model="(model1.order as any)[item.key]"
|
||||||
|
:placeholder="`请输入${item.name}`"
|
||||||
|
></u-textarea>
|
||||||
|
<u-input
|
||||||
|
v-if="item.type === 'select' || item.type === 'input'"
|
||||||
|
v-model="(model1.order as any)[item.key]"
|
||||||
|
:placeholder="`请${item.type === 'select' ? '选择' : '输入'}${
|
||||||
|
item.name
|
||||||
|
}`"
|
||||||
|
:clearable="true"
|
||||||
|
:customStyle="{}"
|
||||||
|
border="none"
|
||||||
|
:disabled="item.disabled"
|
||||||
|
>
|
||||||
|
<template #suffix>
|
||||||
|
<text>
|
||||||
|
{{ item.unit }}
|
||||||
|
</text>
|
||||||
|
</template>
|
||||||
|
</u-input>
|
||||||
|
<!-- @afterRead="afterRead"
|
||||||
|
@delete="deletePic" -->
|
||||||
|
<uni-file-picker
|
||||||
|
v-if="item.type === 'upload'"
|
||||||
|
v-model="model1.order.fileLists"
|
||||||
|
limit="9"
|
||||||
|
title="最多可上传9张图片"
|
||||||
|
:auto-upload="false"
|
||||||
|
fileMediatype="image"
|
||||||
|
mode="grid"
|
||||||
|
ref="filesRef"
|
||||||
|
@delete="handleDelete"
|
||||||
|
></uni-file-picker>
|
||||||
|
<u-radio-group
|
||||||
|
v-if="item.type === 'radio'"
|
||||||
|
v-model="(model1.order as any)[item.key]"
|
||||||
|
placement="row"
|
||||||
|
>
|
||||||
|
<u-radio activeColor="#00DCEE" label="供应商" :name="3"></u-radio>
|
||||||
|
|
||||||
|
<u-radio activeColor="#00DCEE" label="客户" :name="2"></u-radio>
|
||||||
|
</u-radio-group>
|
||||||
|
<template #right v-if="item.type === 'select'">
|
||||||
|
<u-icon name="arrow-right"></u-icon>
|
||||||
|
</template>
|
||||||
|
</u-form-item>
|
||||||
|
</u-form>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="contrlModalParams.isShowSplTime"
|
||||||
|
v-model="contrlModalParams.settlementTime"
|
||||||
|
mode="datetime"
|
||||||
|
@confirm="(v: any) => {handleTime(v)}"
|
||||||
|
@cancel="contrlModalParams.isShowSplTime = false"
|
||||||
|
></u-datetime-picker>
|
||||||
|
<block
|
||||||
|
v-for="(item, index) in model1.order.buttonType === 3
|
||||||
|
? formAttrList1
|
||||||
|
: formAttrList2"
|
||||||
|
:key="index"
|
||||||
|
>
|
||||||
|
<u-action-sheet
|
||||||
|
v-if="item.type === 'select' && item.key !== 'settlementTime'"
|
||||||
|
:actions="contrlModalParams[item.childKey].list"
|
||||||
|
:title="contrlModalParams[item.childKey].title"
|
||||||
|
:show="contrlModalParams[item.childKey].isShow"
|
||||||
|
@select="(v: any) => handleSelect(item.childKey, v)"
|
||||||
|
@close="contrlModalParams[item.childKey].isShow = false"
|
||||||
|
:closeOnClickAction="true"
|
||||||
|
></u-action-sheet>
|
||||||
|
</block>
|
||||||
|
</view>
|
||||||
|
<view class="btn-box">
|
||||||
|
<u-button type="primary" text="保存" @click="save()"></u-button>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import {
|
||||||
|
CustomerApi,
|
||||||
|
DeviceApi,
|
||||||
|
FinanceApi,
|
||||||
|
PictureApi,
|
||||||
|
ProfileApi,
|
||||||
|
ReceiveApi,
|
||||||
|
ReceiveProductApi,
|
||||||
|
SupplierApi,
|
||||||
|
} from "@/services";
|
||||||
|
import { formatDate } from "@/utils";
|
||||||
|
import { DeviceType, ImagesType, OrderType } from "@/utils/enum";
|
||||||
|
import _ from "underscore";
|
||||||
|
|
||||||
|
const model1 = reactive<any>({
|
||||||
|
order: {
|
||||||
|
buttonType: 3,
|
||||||
|
fileLists: [],
|
||||||
|
settlementTime: "",
|
||||||
|
},
|
||||||
|
supplierList: [],
|
||||||
|
customerList: []
|
||||||
|
});
|
||||||
|
const rules1 = reactive({
|
||||||
|
"order.supCusName": {
|
||||||
|
type: "string",
|
||||||
|
required: true,
|
||||||
|
message: "请选择供应商",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
"order.settlementTime": {
|
||||||
|
type: "string",
|
||||||
|
required: true,
|
||||||
|
message: "请选择结算时间",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
"order.totalPrice": {
|
||||||
|
type: "string",
|
||||||
|
required: true,
|
||||||
|
message: "请输入金额",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
"order.paymentMethodName": {
|
||||||
|
type: "string",
|
||||||
|
required: true,
|
||||||
|
message: "请选择结算方式",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const rules2 = reactive({
|
||||||
|
"order.supCusName": {
|
||||||
|
type: "string",
|
||||||
|
required: true,
|
||||||
|
message: "请选择客户",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
"order.settlementTime": {
|
||||||
|
type: "string",
|
||||||
|
required: true,
|
||||||
|
message: "请选择结算时间",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
"order.incidentals": {
|
||||||
|
type: "string",
|
||||||
|
required: true,
|
||||||
|
message: "请输入杂费",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
"order.freight": {
|
||||||
|
type: "string",
|
||||||
|
required: true,
|
||||||
|
message: "请输入运费",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
"order.paymentMethodName": {
|
||||||
|
type: "string",
|
||||||
|
required: true,
|
||||||
|
message: "请选择结算方式",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const contrlModalParams = reactive<any>({
|
||||||
|
isShowSplTime: false,
|
||||||
|
spltime: "",
|
||||||
|
user: {
|
||||||
|
isShow: false,
|
||||||
|
title: "标题",
|
||||||
|
list: [],
|
||||||
|
},
|
||||||
|
paySelect: {
|
||||||
|
isShow: false,
|
||||||
|
title: "标题",
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
name: "微信",
|
||||||
|
id: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "现金",
|
||||||
|
id: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "支付宝",
|
||||||
|
id: 4,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "转账",
|
||||||
|
id: 2,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const formAttrList1 = reactive<any>([
|
||||||
|
{
|
||||||
|
name: "付款类型",
|
||||||
|
key: "buttonType",
|
||||||
|
required: true,
|
||||||
|
type: "radio",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "供应商",
|
||||||
|
key: "supCusName",
|
||||||
|
type: "select",
|
||||||
|
childKey: "user",
|
||||||
|
required: true,
|
||||||
|
unit: "",
|
||||||
|
fn: () => {
|
||||||
|
contrlModalParams.user.isShow = true;
|
||||||
|
contrlModalParams.user.title = "供应商";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "结算时间",
|
||||||
|
key: "settlementTime",
|
||||||
|
type: "select",
|
||||||
|
unit: "",
|
||||||
|
required: true,
|
||||||
|
fn: () => {
|
||||||
|
contrlModalParams.isShowSplTime = true;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "金额",
|
||||||
|
key: "totalPrice",
|
||||||
|
type: "input",
|
||||||
|
required: true,
|
||||||
|
unit: "元",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "结算方式",
|
||||||
|
key: "paymentMethodName",
|
||||||
|
type: "select",
|
||||||
|
childKey: "paySelect",
|
||||||
|
required: true,
|
||||||
|
unit: "",
|
||||||
|
fn: () => {
|
||||||
|
contrlModalParams.paySelect.isShow = true;
|
||||||
|
contrlModalParams.paySelect.title = "结算方式";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "备注",
|
||||||
|
key: "remakes",
|
||||||
|
type: "textarea",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "支付单据",
|
||||||
|
key: "photo",
|
||||||
|
type: "upload",
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
const formAttrList2 = reactive<any>([
|
||||||
|
{
|
||||||
|
name: "付款类型",
|
||||||
|
key: "buttonType",
|
||||||
|
required: true,
|
||||||
|
type: "radio",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "客户",
|
||||||
|
key: "supCusName",
|
||||||
|
type: "select",
|
||||||
|
childKey: "user",
|
||||||
|
required: true,
|
||||||
|
unit: "",
|
||||||
|
fn: () => {
|
||||||
|
contrlModalParams.user.isShow = true;
|
||||||
|
contrlModalParams.user.title = "客户";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "结算时间",
|
||||||
|
key: "settlementTime",
|
||||||
|
type: "select",
|
||||||
|
unit: "",
|
||||||
|
required: true,
|
||||||
|
fn: () => {
|
||||||
|
contrlModalParams.isShowSplTime = true;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "杂费",
|
||||||
|
key: "incidentals",
|
||||||
|
type: "input",
|
||||||
|
required: true,
|
||||||
|
unit: "元",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "运费",
|
||||||
|
key: "freight",
|
||||||
|
type: "input",
|
||||||
|
required: true,
|
||||||
|
unit: "元",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "结算方式",
|
||||||
|
key: "paymentMethodName",
|
||||||
|
type: "select",
|
||||||
|
childKey: "paySelect",
|
||||||
|
required: true,
|
||||||
|
unit: "",
|
||||||
|
fn: () => {
|
||||||
|
contrlModalParams.paySelect.isShow = true;
|
||||||
|
contrlModalParams.paySelect.title = "结算方式";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "备注",
|
||||||
|
key: "remakes",
|
||||||
|
type: "textarea",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "支付单据",
|
||||||
|
key: "photo",
|
||||||
|
type: "upload",
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
// 监听毛重 皮重
|
||||||
|
watch(
|
||||||
|
[
|
||||||
|
() => model1.order.buttonType,
|
||||||
|
],
|
||||||
|
([buttonTypeNew]) => {
|
||||||
|
if (buttonTypeNew === 3) {
|
||||||
|
contrlModalParams.user.list = model1.supplierList;
|
||||||
|
} else if (buttonTypeNew === 2) {
|
||||||
|
contrlModalParams.user.list = model1.customerList;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const handleDelete = (e: any) => {
|
||||||
|
console.log(model1.order.fileLists);
|
||||||
|
if (e.tempFile.fileID) {
|
||||||
|
PictureApi.deleteById({ id: e.tempFile.fileID }).then((res) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
uni.showToast({ title: "已删除" });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const filesRef = ref();
|
||||||
|
const handleUpload = () => {
|
||||||
|
// console.log(event.tempFilePaths)
|
||||||
|
return filesRef.value[0].filesList.map((item: any, index: number) => {
|
||||||
|
if (item.fileID) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
PictureApi.upload({
|
||||||
|
files: item,
|
||||||
|
path: item.path,
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
resolve({
|
||||||
|
...(res.data as any),
|
||||||
|
businessId: model1.order.id,
|
||||||
|
imagesType: ImagesType.NORMARL, // 普通资源
|
||||||
|
orderType: OrderType.Pay, // 收入明细
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
return;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const handleSelect = (key: string, v: any) => {
|
||||||
|
contrlModalParams[key].isShow = false;
|
||||||
|
if (key === "user") {
|
||||||
|
model1.order.supCusName = v.name;
|
||||||
|
model1.order.supCusId = v.id;
|
||||||
|
} else if (key === "paySelect") {
|
||||||
|
model1.order.paymentMethodName = v.name;
|
||||||
|
model1.order.paymentMethod = v.id;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// 供应商信息
|
||||||
|
SupplierApi.getSupplierUserList({}).then((res) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
model1.supplierList = res.data;
|
||||||
|
contrlModalParams.user.list = res.data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 客户信息
|
||||||
|
CustomerApi.getCustomUserList({}).then((res) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
model1.customerList = res.data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const upload = () => {
|
||||||
|
Promise.all(handleUpload()).then((res) => {
|
||||||
|
// 上传多个资源
|
||||||
|
if (res.length > 0) {
|
||||||
|
PictureApi.addListAnnex({ annexPos: res }).then((res1) => {
|
||||||
|
if (res1.code === 200) {
|
||||||
|
console.log("*** 资源文件更新成功");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验
|
||||||
|
*/
|
||||||
|
const form = ref();
|
||||||
|
const check = () => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
form.value
|
||||||
|
.validate()
|
||||||
|
.then((res: boolean) => {
|
||||||
|
resolve(res);
|
||||||
|
})
|
||||||
|
.catch((errors: any) => {
|
||||||
|
resolve(false);
|
||||||
|
uni.showToast({
|
||||||
|
icon: "none",
|
||||||
|
title: errors[0].message || "校验失败",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const save = () => {
|
||||||
|
check().then((res) => {
|
||||||
|
if (res) {
|
||||||
|
startSave();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const startSave = () => {
|
||||||
|
model1.order.paymentType = model1.order.buttonType
|
||||||
|
if (model1.order.buttonType === 2) {
|
||||||
|
model1.order.totalPrice = parseInt(model1.order.freight) + parseInt(model1.order.incidentals)
|
||||||
|
}
|
||||||
|
FinanceApi.addPaymentDetails(model1.order).then((res) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
|
||||||
|
model1.order.id = res.data;
|
||||||
|
upload();
|
||||||
|
uni.redirectTo({
|
||||||
|
url: "/pagesHome/index", // 要跳转到的页面路径
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const handleTime = (v: any) => {
|
||||||
|
model1.order.settlementTime = formatDate(v.value, "{y}-{m}-{d} {h}:{i}:{s}");
|
||||||
|
contrlModalParams.isShowSplTime = false;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.c-card {
|
||||||
|
background: #ffffff;
|
||||||
|
// box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(5, 68, 37, 0.12);
|
||||||
|
border-radius: 13rpx;
|
||||||
|
margin: 30rpx 25rpx;
|
||||||
|
padding: 0rpx 20rpx;
|
||||||
|
::v-deep .u-form-item {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
::v-deep .u-form-item + .u-form-item {
|
||||||
|
border-top: 1rpx solid rgba(233, 233, 233, 0.76);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btn-box {
|
||||||
|
margin-top: 60rpx;
|
||||||
|
display: flex;
|
||||||
|
background: #ffffff;
|
||||||
|
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 56, 93, 0.12);
|
||||||
|
border-radius: 13rpx 13rpx 0rpx 0rpx;
|
||||||
|
padding: 25rpx 50rpx;
|
||||||
|
position: sticky;
|
||||||
|
bottom: 0rpx;
|
||||||
|
z-index: 999;
|
||||||
|
::v-deep button {
|
||||||
|
border-radius: 43rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,80 @@
|
||||||
|
<template>
|
||||||
|
<view class="box">
|
||||||
|
<view>{{ obj.supCusName }}</view>
|
||||||
|
<view
|
||||||
|
>结算时间:<text>{{ obj.settlementTime }}</text></view
|
||||||
|
>
|
||||||
|
<view
|
||||||
|
>单据编号:<text>{{ obj.paymentNumber }}</text></view
|
||||||
|
>
|
||||||
|
<view
|
||||||
|
>付款类型:<text>{{ getPayment(obj) }}</text></view
|
||||||
|
>
|
||||||
|
<view
|
||||||
|
>付款金额:<text v-if="obj.paymentType === 0 || obj.paymentType === 3"
|
||||||
|
>¥ {{ obj.totalPrice }}</text
|
||||||
|
>
|
||||||
|
<text v-else
|
||||||
|
>运费:¥ {{ obj.freight }} 杂费:¥
|
||||||
|
{{ obj.incidentals }}</text
|
||||||
|
>
|
||||||
|
</view>
|
||||||
|
<view
|
||||||
|
>结算方式:<text>{{ getPaymentMethod(obj) }}</text></view
|
||||||
|
>
|
||||||
|
<view
|
||||||
|
>付款人:<text>{{ obj.paymentName }}</text></view
|
||||||
|
>
|
||||||
|
<view v-if="obj.paymentType === 0 || obj.paymentType === 1"
|
||||||
|
>{{ obj.paymentType === 0 ? "收货" : "出货" }}单号:
|
||||||
|
<text>{{ obj.orderNumber }}</text></view
|
||||||
|
>
|
||||||
|
<up-image :show-loading="true" v-for="(item, index) in obj.fileLists" :key="index" :src="item.url" width="80px" height="80px"></up-image>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { FinanceApi, PictureApi } from "@/services";
|
||||||
|
import { ImagesType, OrderType } from "@/utils/enum";
|
||||||
|
import { onLoad } from "@dcloudio/uni-app";
|
||||||
|
const obj = ref<any>({});
|
||||||
|
const getPayment = (item: any) => {
|
||||||
|
return ["供应商付款", "客户付款", "客户(手动)", "供应商(手动)"][
|
||||||
|
item.paymentType
|
||||||
|
];
|
||||||
|
};
|
||||||
|
const getPaymentMethod = (item: any) => {
|
||||||
|
return ["", "现金", "转账", "微信", "支付宝"][item.paymentType];
|
||||||
|
};
|
||||||
|
onLoad((option: any) => {
|
||||||
|
// 接收传递的标题参数
|
||||||
|
FinanceApi.getByPaymentId({ id: option.id }).then((res) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
obj.value = res.data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
PictureApi.getAnnex({
|
||||||
|
businessId: option.id,
|
||||||
|
orderType: OrderType.Pay,
|
||||||
|
imagesType: ImagesType.NORMARL,
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
obj.value.fileLists = res.data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.box {
|
||||||
|
background: #ffffff;
|
||||||
|
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(5, 68, 37, 0.12);
|
||||||
|
border-radius: 13rpx;
|
||||||
|
font-size: 26rpx;
|
||||||
|
margin: 26rpx;
|
||||||
|
padding: 26rpx;
|
||||||
|
line-height: 50rpx;
|
||||||
|
text {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: rgba(0, 0, 0, 0.7);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<template>
|
||||||
|
123
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
</script>
|
|
@ -0,0 +1,343 @@
|
||||||
|
<template>
|
||||||
|
<view class="search">
|
||||||
|
<u-search
|
||||||
|
placeholder="请输入收货/出货单号"
|
||||||
|
v-model="keyword"
|
||||||
|
:showAction="false"
|
||||||
|
:bgColor="'#fff'"
|
||||||
|
:borderColor="'rgba(0, 0, 0, 0.1)'"
|
||||||
|
:placeholderColor="'#C1C1C1'"
|
||||||
|
@search="handleSearch()"
|
||||||
|
></u-search>
|
||||||
|
<view class="btn" @click="handleAdd()"> 创建 </view>
|
||||||
|
</view>
|
||||||
|
<view class="filter">
|
||||||
|
<!-- -->
|
||||||
|
<view @click="handleDialog('showTime', true)"
|
||||||
|
><text>{{ state.name }}</text
|
||||||
|
><u-icon name="arrow-down"></u-icon
|
||||||
|
></view>
|
||||||
|
<view @click="state.isShowStatus = true"
|
||||||
|
><text>费用类型</text><u-icon name="arrow-down"></u-icon
|
||||||
|
></view>
|
||||||
|
<view class="btn" @click="handleDialog('showFilter', true)">筛选</view>
|
||||||
|
</view>
|
||||||
|
<view class="show-time">
|
||||||
|
<view v-if="state.name === '昨日' || state.name === '今日'">{{
|
||||||
|
state.startTime
|
||||||
|
}}</view>
|
||||||
|
<view v-else>{{ state.startTime }} - {{ state.endTime }}</view>
|
||||||
|
</view>
|
||||||
|
<page-view
|
||||||
|
@loadList="
|
||||||
|
(v) => {
|
||||||
|
getList(v);
|
||||||
|
}
|
||||||
|
"
|
||||||
|
:noMoreData="pageList.noMoreData"
|
||||||
|
:list="pageList.list"
|
||||||
|
:height="140"
|
||||||
|
:isLoading="pageList.isLoading"
|
||||||
|
>
|
||||||
|
<view class="list">
|
||||||
|
<u-swipe-action>
|
||||||
|
<u-swipe-action-item
|
||||||
|
:options="options1"
|
||||||
|
v-for="(item, index) in pageList.list"
|
||||||
|
:key="index"
|
||||||
|
@click="handleItem(item)"
|
||||||
|
>
|
||||||
|
<view
|
||||||
|
class="item"
|
||||||
|
:style="{ border: index === 0 ? 'none' : '' }"
|
||||||
|
@click="getDetail(item)"
|
||||||
|
>
|
||||||
|
<u-row justify="space-between">
|
||||||
|
<u-col span="9">
|
||||||
|
<view class="">
|
||||||
|
<view class=""> {{ item.supCusName || "-" }} </view>
|
||||||
|
<view class=""> {{ item.paymentNumber }} </view>
|
||||||
|
<view class="time">
|
||||||
|
结算时间:{{ item.settlementTime }}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-col>
|
||||||
|
<u-col span="3">
|
||||||
|
<view class="amount">
|
||||||
|
<view>¥ {{ item.totalPrice }}</view>
|
||||||
|
<view class="tip">{{ getPayment(item) }}</view>
|
||||||
|
</view>
|
||||||
|
</u-col>
|
||||||
|
</u-row>
|
||||||
|
</view>
|
||||||
|
</u-swipe-action-item>
|
||||||
|
</u-swipe-action>
|
||||||
|
</view>
|
||||||
|
</page-view>
|
||||||
|
|
||||||
|
<!-- 时间弹框 -->
|
||||||
|
<TimeDialog
|
||||||
|
ref="timeDialog"
|
||||||
|
:show="showDialog.showTime"
|
||||||
|
@handleDialog="(v:boolean) => {handleDialog('showTime', v)}"
|
||||||
|
@changeTime="changeTime"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 费用类型 -->
|
||||||
|
<u-action-sheet
|
||||||
|
:closeOnClickOverlay="true"
|
||||||
|
:closeOnClickAction="true"
|
||||||
|
:actions="state.statusList"
|
||||||
|
:title="'单据状态'"
|
||||||
|
:show="state.isShowStatus"
|
||||||
|
@select="handleSelectStatus"
|
||||||
|
@close="state.isShowStatus = false"
|
||||||
|
></u-action-sheet>
|
||||||
|
|
||||||
|
<!-- 筛选弹框 -->
|
||||||
|
<FilterDialog
|
||||||
|
:show="showDialog.showFilter"
|
||||||
|
@handleDialog="(v:boolean) => {handleDialog('showFilter', v)}"
|
||||||
|
@changeOther="changeOther"
|
||||||
|
:isShipment="false"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { FinanceApi } from "@/services";
|
||||||
|
import PageView from "@/components/PageView/index.vue";
|
||||||
|
import { formatDate, getCurrentMonthStartAndEnd } from "@/utils";
|
||||||
|
import TimeDialog from "./components/TimeDialog.vue";
|
||||||
|
import FilterDialog from "./components/CustomFilterDialog.vue";
|
||||||
|
|
||||||
|
const options1 = ref([
|
||||||
|
{
|
||||||
|
text: "删除",
|
||||||
|
style: {
|
||||||
|
backgroundColor: "rgba(217, 4, 30, 1)",
|
||||||
|
fontSize: "24rpx",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
const keyword = ref("");
|
||||||
|
const state = reactive({
|
||||||
|
startTime: formatDate(getCurrentMonthStartAndEnd().start, "{y}-{m}-{d}"),
|
||||||
|
endTime: formatDate(getCurrentMonthStartAndEnd().end, "{y}-{m}-{d}"),
|
||||||
|
name: "本月",
|
||||||
|
currentPaymentType: -1,
|
||||||
|
isShowStatus: false,
|
||||||
|
statusList: [
|
||||||
|
{
|
||||||
|
name: "全部",
|
||||||
|
key: -1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "供应商付款",
|
||||||
|
key: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "客户付款",
|
||||||
|
key: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "供应商(手动)",
|
||||||
|
key: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "客户(手动)",
|
||||||
|
key: 2,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
userId: -1,
|
||||||
|
userType: -1,
|
||||||
|
params: {},
|
||||||
|
});
|
||||||
|
|
||||||
|
const getPayment = (item: any) => {
|
||||||
|
return ["供应商付款", "客户付款", "客户(手动)", "供应商(手动)"][
|
||||||
|
item.paymentType
|
||||||
|
];
|
||||||
|
};
|
||||||
|
const showDialog = <
|
||||||
|
{
|
||||||
|
[key: string]: boolean;
|
||||||
|
}
|
||||||
|
>reactive({
|
||||||
|
showTime: false,
|
||||||
|
showFilter: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
const handleDialog = (key: string, v: boolean) => {
|
||||||
|
showDialog[key] = v;
|
||||||
|
};
|
||||||
|
const handleSelectStatus = (v: any) => {
|
||||||
|
state.isShowStatus = false;
|
||||||
|
state.currentPaymentType = v.key;
|
||||||
|
resetPageList();
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
const changeOther = (obj: any) => {
|
||||||
|
state.userId = obj.userId;
|
||||||
|
state.userType = obj.type;
|
||||||
|
resetPageList();
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
const pageList: PageResult<any> = reactive({
|
||||||
|
total: 0,
|
||||||
|
list: [],
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
});
|
||||||
|
const resetPageList = () => {
|
||||||
|
pageList.noMoreData = false;
|
||||||
|
pageList.total = 0;
|
||||||
|
pageList.list = [];
|
||||||
|
pageList.pageNum = 1;
|
||||||
|
pageList.pageSize = 10;
|
||||||
|
};
|
||||||
|
const handleSearch = () => {
|
||||||
|
resetPageList();
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
const handleAdd = () => {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: "/pagesApp/components/addPayment", // 要跳转到的页面路径
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 删除
|
||||||
|
const handleItem = (item: any) => {
|
||||||
|
FinanceApi.deletePaymentDs({ id: item.id }).then((res) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
uni.showToast({
|
||||||
|
title: "删除成功",
|
||||||
|
});
|
||||||
|
resetPageList();
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 获得详情
|
||||||
|
const getDetail = (item: any) => {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: "/pagesApp/components/payContent?id=" + item.id, // 要跳转到的页面路径
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const changeTime = (obj: any) => {
|
||||||
|
state.startTime = obj.startTime;
|
||||||
|
state.endTime = obj.endTime;
|
||||||
|
state.name = obj.name;
|
||||||
|
resetPageList();
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
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,
|
||||||
|
pageNumber: pageList.pageNum,
|
||||||
|
startTime: state.startTime + " 00:00:00",
|
||||||
|
endTime: state.endTime + " 23:59:59",
|
||||||
|
oddNumbers: keyword.value,
|
||||||
|
};
|
||||||
|
if (state.currentPaymentType > -1) {
|
||||||
|
params.paymentType = state.currentPaymentType;
|
||||||
|
}
|
||||||
|
if (state.userId > -1) {
|
||||||
|
params.supCusId = state.userId;
|
||||||
|
params.userType = state.userType;
|
||||||
|
}
|
||||||
|
|
||||||
|
pageList.isLoading = true;
|
||||||
|
FinanceApi.getPaymentDetailsPage(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;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
onMounted(() => {
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.search {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin: 26rpx 26rpx 0rpx 26rpx;
|
||||||
|
.btn {
|
||||||
|
background: #00dcee;
|
||||||
|
border-radius: 24rpx;
|
||||||
|
border: 1px solid #00dcee;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: #ffffff;
|
||||||
|
margin-left: 50rpx;
|
||||||
|
padding: 6rpx 30rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter {
|
||||||
|
margin: 0rpx 26rpx 0rpx 26rpx;
|
||||||
|
padding: 18rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: #000000;
|
||||||
|
> view {
|
||||||
|
display: inline-block;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
text {
|
||||||
|
margin-right: 10rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btn {
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: #00dcee;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.show-time {
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: #000000;
|
||||||
|
margin: 0rpx 26rpx 20rpx 50rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list {
|
||||||
|
background: #ffffff;
|
||||||
|
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(5, 68, 37, 0.12);
|
||||||
|
border-radius: 13rpx;
|
||||||
|
margin: 0rpx 26rpx;
|
||||||
|
padding: 0rpx 18rpx;
|
||||||
|
.item {
|
||||||
|
font-size: 26rpx;
|
||||||
|
line-height: 40rpx;
|
||||||
|
border-top: 1px solid rgba(233, 233, 233, 0.76);
|
||||||
|
padding: 26rpx 26rpx;
|
||||||
|
.time {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.amount {
|
||||||
|
text-align: right;
|
||||||
|
.tip {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #ff7e20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
./components/CustomFilterDialog.vue
|
|
@ -436,7 +436,7 @@ const appList = reactive([
|
||||||
title: "支付明细",
|
title: "支付明细",
|
||||||
fn: () => {
|
fn: () => {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: "/pagesApp/shipmentDetail", // 要跳转到的页面路径
|
url: "/pagesApp/paymentDetail", // 要跳转到的页面路径
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -445,7 +445,7 @@ const appList = reactive([
|
||||||
title: "收入明细",
|
title: "收入明细",
|
||||||
fn: () => {
|
fn: () => {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: "/pagesApp/receiveCl", // 要跳转到的页面路径
|
url: "/pagesApp/incomeDetail", // 要跳转到的页面路径
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -429,7 +429,7 @@ const handleUpload = () => {
|
||||||
resolve({
|
resolve({
|
||||||
...(res.data as any),
|
...(res.data as any),
|
||||||
businessId: model1.order.id,
|
businessId: model1.order.id,
|
||||||
imagesType: ImagesType.Settlement, // 单据资源
|
imagesType: ImagesType.NORMARL, // 单据资源
|
||||||
orderType: OrderType.Shipment, // 出库单
|
orderType: OrderType.Shipment, // 出库单
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -553,7 +553,7 @@ onLoad((option) => {
|
||||||
PictureApi.getAnnex({
|
PictureApi.getAnnex({
|
||||||
businessId: model1.order.id,
|
businessId: model1.order.id,
|
||||||
orderType: OrderType.Shipment,
|
orderType: OrderType.Shipment,
|
||||||
imagesType: ImagesType.Settlement,
|
imagesType: ImagesType.NORMARL,
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
model1.order.fileLists = res.data;
|
model1.order.fileLists = res.data;
|
||||||
|
|
|
@ -27,6 +27,16 @@ export const addPaymentDetails = (data: any) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
export const deletePaymentDs = (data: any) => {
|
||||||
|
return http({
|
||||||
|
method: 'POST',
|
||||||
|
url: '/api/paymentdtails/deletePaymentDs',
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 收入明细新增
|
// 收入明细新增
|
||||||
export const addRevenueDes = (data: any) => {
|
export const addRevenueDes = (data: any) => {
|
||||||
return http({
|
return http({
|
||||||
|
|
|
@ -126,6 +126,15 @@ export const getReconciliation = (data: any) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 概况总应收应付
|
||||||
|
export const getTotal = () => {
|
||||||
|
return http({
|
||||||
|
method: "GET",
|
||||||
|
url: "/api/orderIn/getTotal"
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
export enum OrderType {
|
export enum OrderType {
|
||||||
Receive = 1,
|
Receive = 1,
|
||||||
Shipment = 2,
|
Shipment = 2,
|
||||||
|
Pay = 3,
|
||||||
|
Income = 4
|
||||||
}
|
}
|
||||||
// 扣杂状态:0扣杂1扣点
|
// 扣杂状态:0扣杂1扣点
|
||||||
export enum ButtonType {
|
export enum ButtonType {
|
||||||
|
@ -20,12 +22,13 @@ export enum MultiCategory {
|
||||||
Multiple = 1,
|
Multiple = 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0:普通资源1:皮重 2毛重 3 结算单据
|
// 0:普通资源1:皮重 2毛重
|
||||||
export enum ImagesType {
|
export enum ImagesType {
|
||||||
NORMARL = 0,
|
NORMARL = 0,
|
||||||
Tare = 1,
|
Tare = 1,
|
||||||
GROSSWEIGHT = 2,
|
GROSSWEIGHT = 2,
|
||||||
Settlement = 3
|
// Settlement = 3,
|
||||||
|
// Payment = 4
|
||||||
}
|
}
|
||||||
//磅单状态:0:待定价1:待过皮2:待审核3:已审核待支付4:已支付
|
//磅单状态:0:待定价1:待过皮2:待审核3:已审核待支付4:已支付
|
||||||
// 磅单状态:0:待出货1:待过毛2:待审核3:已审未付4:已审已付
|
// 磅单状态:0:待出货1:待过毛2:待审核3:已审未付4:已审已付
|
||||||
|
|
Loading…
Reference in New Issue