update: 收入明细更新
This commit is contained in:
parent
afdefbb2f4
commit
b1906b02b0
|
@ -430,7 +430,20 @@
|
|||
"style": {
|
||||
"navigationBarTitleText": "支付详情"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "components/addIncomeDetail",
|
||||
"style": {
|
||||
"navigationBarTitleText": "新增收入明细"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "components/incomeContent",
|
||||
"style": {
|
||||
"navigationBarTitleText": "收入详情"
|
||||
}
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
// {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<view class="c-dialog-filter">
|
||||
<view class="title">筛选</view>
|
||||
<u-list height="200">
|
||||
<u-list-item>
|
||||
<u-list-item v-if="!isShipment">
|
||||
<u-cell
|
||||
:title="`类型`"
|
||||
@click="state.isShowStatus = true"
|
||||
|
@ -14,7 +14,7 @@
|
|||
</u-list-item>
|
||||
<u-list-item boder="none">
|
||||
<u-cell
|
||||
:title="`${state.type.key ? '供应商': '客户'}`"
|
||||
:title="`${(state.type.key === 2 || isShipment) ? '客户' : '供应商'}`"
|
||||
@click="handleDialog('showSupplier', true)"
|
||||
:value="state.user.name"
|
||||
>
|
||||
|
@ -47,7 +47,7 @@
|
|||
:show="showDialog.showSupplier"
|
||||
@handleDialog="(v:boolean) => {handleDialog('showSupplier', v)}"
|
||||
@changeUser="changeUser"
|
||||
:isShipment="state.type.key === 2 ? true : false"
|
||||
:isShipment="(state.type.key === 2 || isShipment) ? true : false"
|
||||
></SupplierDialog>
|
||||
<!-- 客户类型 -->
|
||||
<u-action-sheet
|
||||
|
@ -62,9 +62,9 @@
|
|||
</template>
|
||||
<script setup lang="ts">
|
||||
import SupplierDialog from "./SupplierDialog.vue";
|
||||
|
||||
const props = defineProps<{
|
||||
show: boolean;
|
||||
isShipment: boolean
|
||||
}>();
|
||||
const emit = defineEmits(["handleDialog", "changeOther"]);
|
||||
const handleClose = () => {
|
||||
|
|
|
@ -0,0 +1,399 @@
|
|||
<template>
|
||||
<view class="c-card">
|
||||
<u-form
|
||||
labelPosition="left"
|
||||
:model="model1"
|
||||
:rules="rules"
|
||||
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 formAttrList"
|
||||
: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 formAttrList"
|
||||
: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 rules = 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: "请输入jin",
|
||||
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 formAttrList = reactive<any>([
|
||||
{
|
||||
name: "客户",
|
||||
key: "customerName",
|
||||
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",
|
||||
},
|
||||
]);
|
||||
// 监听毛重 皮重
|
||||
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.Income, // 收入明细
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((e) => {
|
||||
return;
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
const handleSelect = (key: string, v: any) => {
|
||||
contrlModalParams[key].isShow = false;
|
||||
if (key === "user") {
|
||||
model1.order.customerName = v.name;
|
||||
model1.order.customerId = 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;
|
||||
contrlModalParams.user.list = 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 = 1 // 手动添加默认其他付款
|
||||
FinanceApi.addIncome(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,76 @@
|
|||
<template>
|
||||
<view class="box">
|
||||
<view>{{ obj.supCusName }}</view>
|
||||
<view
|
||||
>结算时间:<text>{{ obj.settlementTime }}</text></view
|
||||
>
|
||||
<view
|
||||
>单据编号:<text>{{ obj.revenueNumber }}</text></view
|
||||
>
|
||||
<view
|
||||
>收款类型:<text>{{ getPayment(obj) }}</text></view
|
||||
>
|
||||
<view
|
||||
>结算金额<text
|
||||
>¥ {{ obj.totalPrice }}</text
|
||||
>
|
||||
</view>
|
||||
<view
|
||||
>结算方式:<text>{{ getPaymentMethod(obj) }}</text></view
|
||||
>
|
||||
<view
|
||||
>收款人:<text>{{ obj.revenueName }}</text></view
|
||||
>
|
||||
<view
|
||||
>出货单号:
|
||||
<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.paymentMethod];
|
||||
};
|
||||
onLoad((option: any) => {
|
||||
// 接收传递的标题参数
|
||||
FinanceApi.getRevenueDetailsById({ id: option.id }).then((res) => {
|
||||
if (res.code === 200) {
|
||||
obj.value = res.data;
|
||||
}
|
||||
});
|
||||
PictureApi.getAnnex({
|
||||
businessId: option.id,
|
||||
orderType: OrderType.Income,
|
||||
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>
|
|
@ -43,7 +43,7 @@ const getPayment = (item: any) => {
|
|||
];
|
||||
};
|
||||
const getPaymentMethod = (item: any) => {
|
||||
return ["", "现金", "转账", "微信", "支付宝"][item.paymentType];
|
||||
return ["", "现金", "转账", "微信", "支付宝"][item.paymentMethod];
|
||||
};
|
||||
onLoad((option: any) => {
|
||||
// 接收传递的标题参数
|
||||
|
|
|
@ -1,5 +1,333 @@
|
|||
<template>
|
||||
123
|
||||
<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.customerName || "-" }} </view>
|
||||
<view class=""> {{ item.revenueNumber }} </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="true"
|
||||
/>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
</script>
|
||||
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,
|
||||
}
|
||||
],
|
||||
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/addIncomeDetail", // 要跳转到的页面路径
|
||||
});
|
||||
};
|
||||
// 删除
|
||||
const handleItem = (item: any) => {
|
||||
FinanceApi.deleteRevenueDes({ id: item.id }).then((res) => {
|
||||
if (res.code === 200) {
|
||||
uni.showToast({
|
||||
title: "删除成功",
|
||||
});
|
||||
resetPageList();
|
||||
getList();
|
||||
}
|
||||
});
|
||||
};
|
||||
// 获得详情
|
||||
const getDetail = (item: any) => {
|
||||
uni.navigateTo({
|
||||
url: "/pagesApp/components/incomeContent?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.customerId = state.userId;
|
||||
}
|
||||
|
||||
pageList.isLoading = true;
|
||||
FinanceApi.getRevenueDetailsPage(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>
|
||||
|
|
|
@ -340,4 +340,3 @@ onMounted(() => {
|
|||
}
|
||||
}
|
||||
</style>
|
||||
./components/CustomFilterDialog.vue
|
||||
|
|
|
@ -37,15 +37,6 @@ export const deletePaymentDs = (data: any) => {
|
|||
}
|
||||
|
||||
|
||||
// 收入明细新增
|
||||
export const addRevenueDes = (data: any) => {
|
||||
return http({
|
||||
method: 'POST',
|
||||
url: '/api/recategory/addRevenueDes',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 分页查询支付明细
|
||||
export const getPaymentDetailsPage = (data: any) => {
|
||||
return http({
|
||||
|
@ -61,4 +52,37 @@ export const getByPaymentId = (data: any) => {
|
|||
url: '/api/paymentdtails/getByPaymentId',
|
||||
data,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// 收货明细分页查询
|
||||
export const getRevenueDetailsPage = (data: any) => {
|
||||
return http({
|
||||
method: 'GET',
|
||||
url: '/api/revenuedetails/getRevenueDetailsPage',
|
||||
data,
|
||||
})
|
||||
}
|
||||
// 收入明细查看详情
|
||||
export const getRevenueDetailsById = (data: any) => {
|
||||
return http({
|
||||
method: 'GET',
|
||||
url: '/api/revenuedetails/getRevenueDetailsById',
|
||||
data,
|
||||
})
|
||||
}
|
||||
// 收入明细新增
|
||||
export const addIncome = (data: any) => {
|
||||
return http({
|
||||
method: 'POST',
|
||||
url: '/api/revenuedetails/addRevenueDes',
|
||||
data,
|
||||
})
|
||||
}
|
||||
// 收入明细逻辑删除
|
||||
export const deleteRevenueDes = (data: any) => {
|
||||
return http({
|
||||
method: 'POST',
|
||||
url: '/api/revenuedetails/deleteRevenueDes',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue