This commit is contained in:
liuhuayong 2025-06-25 22:23:42 +08:00
parent b6d359a600
commit 3df543f96f
9 changed files with 626 additions and 28 deletions

40
src/api/daofuDetails.js Normal file
View File

@ -0,0 +1,40 @@
import request from '@/utils/request'
export function add(data) {
return request({
url: 'api/daofuDetails',
method: 'post',
data
})
}
export function del(id) {
return request({
url: 'api/daofuDetails/' + id,
method: 'delete'
})
}
export function deleteAll() {
return request({
url: 'api/daofuDetails/deleteAll',
method: 'delete'
})
}
export function edit(data) {
return request({
url: 'api/daofuDetails',
method: 'put',
data
})
}
export function downloadDaofuDetails(params) {
return request({
url: 'api/daofuDetails/download',
method: 'get',
params,
responseType: 'blob'
})
}

View File

@ -15,6 +15,12 @@ export function del(id) {
})
}
export function deleteAll() {
return request({
url: 'api/dispatchDirectBilling/deleteAll',
method: 'delete'
})
}
export function edit(data) {
return request({
url: 'api/dispatchDirectBilling',

View File

@ -15,6 +15,13 @@ export function del(id) {
})
}
export function deleteAll() {
return request({
url: 'api/dispatchFeeDetails/deleteAll',
method: 'delete'
})
}
export function edit(data) {
return request({
url: 'api/dispatchFeeDetails',

View File

@ -0,0 +1,264 @@
<template>
<el-dialog :append-to-body="true" :close-on-click-modal="false" :before-close="cancel" :visible.sync="dialog" :title="isAdd ? '新增' : '编辑'" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="账单流水号" >
<el-input v-model="form.billFlowId" style="width: 370px;"/>
</el-form-item>
<el-form-item label="账单描述" >
<el-input v-model="form.billDescription" style="width: 370px;"/>
</el-form-item>
<el-form-item label="运单编号" >
<el-input v-model="form.waybillNumber" style="width: 370px;"/>
</el-form-item>
<el-form-item label="账单类型" >
<el-input v-model="form.billType" style="width: 370px;"/>
</el-form-item>
<el-form-item label="寄件网点编码" >
<el-input v-model="form.senderSiteCode" style="width: 370px;"/>
</el-form-item>
<el-form-item label="寄件网点" >
<el-input v-model="form.senderSiteName" style="width: 370px;"/>
</el-form-item>
<el-form-item label="寄件财务中心" >
<el-input v-model="form.senderFinancialCenter" style="width: 370px;"/>
</el-form-item>
<el-form-item label="寄件管理大区" >
<el-input v-model="form.senderManagementArea" style="width: 370px;"/>
</el-form-item>
<el-form-item label="物品类型" >
<el-input v-model="form.itemType" style="width: 370px;"/>
</el-form-item>
<el-form-item label="产品类型" >
<el-input v-model="form.productType" style="width: 370px;"/>
</el-form-item>
<el-form-item label="票数" >
<el-input v-model="form.ticketCount" style="width: 370px;"/>
</el-form-item>
<el-form-item label="件数" >
<el-input v-model="form.pieceCount" style="width: 370px;"/>
</el-form-item>
<el-form-item label="计费重量" >
<el-input v-model="form.billingWeight" style="width: 370px;"/>
</el-form-item>
<el-form-item label="到付款金额" >
<el-input v-model="form.arrivalPaymentAmount" style="width: 370px;"/>
</el-form-item>
<el-form-item label="应收寄件手续费" >
<el-input v-model="form.receivableSenderFee" style="width: 370px;"/>
</el-form-item>
<el-form-item label="应付派件手续费" >
<el-input v-model="form.payableDeliveryFee" style="width: 370px;"/>
</el-form-item>
<el-form-item label="始发地" >
<el-input v-model="form.originPlace" style="width: 370px;"/>
</el-form-item>
<el-form-item label="始发省份" >
<el-input v-model="form.originProvince" style="width: 370px;"/>
</el-form-item>
<el-form-item label="目的地" >
<el-input v-model="form.destinationPlace" style="width: 370px;"/>
</el-form-item>
<el-form-item label="目的省份" >
<el-input v-model="form.destinationProvince" style="width: 370px;"/>
</el-form-item>
<el-form-item label="派件财务中心" >
<el-input v-model="form.deliveryFinancialCenter" style="width: 370px;"/>
</el-form-item>
<el-form-item label="派件管理大区" >
<el-input v-model="form.deliveryManagementArea" style="width: 370px;"/>
</el-form-item>
<el-form-item label="退件标识" >
<el-input v-model="form.returnFlag" style="width: 370px;"/>
</el-form-item>
<el-form-item label="签收网点编码" >
<el-input v-model="form.receiptSiteCode" style="width: 370px;"/>
</el-form-item>
<el-form-item label="签收网点" >
<el-input v-model="form.receiptSiteName" style="width: 370px;"/>
</el-form-item>
<el-form-item label="问题件标识" >
<el-input v-model="form.problemPieceFlag" style="width: 370px;"/>
</el-form-item>
<el-form-item label="派件业务员" >
<el-input v-model="form.deliveryStaffCode" style="width: 370px;"/>
</el-form-item>
<el-form-item label="录入时间" >
<el-input v-model="form.entryTime" style="width: 370px;"/>
</el-form-item>
<el-form-item label="业务发生时间" >
<el-input v-model="form.businessOccurrenceTime" style="width: 370px;"/>
</el-form-item>
<el-form-item label="签收时间" >
<el-input v-model="form.receiptTime" style="width: 370px;"/>
</el-form-item>
<el-form-item label="重算标识" >
<el-input v-model="form.recalculationFlag" style="width: 370px;"/>
</el-form-item>
<el-form-item label="锁账标识" >
<el-input v-model="form.lockAccountFlag" style="width: 370px;"/>
</el-form-item>
<el-form-item label="确认标识" >
<el-input v-model="form.confirmationFlag" style="width: 370px;"/>
</el-form-item>
<el-form-item label="确认时间" >
<el-input v-model="form.confirmationTime" style="width: 370px;"/>
</el-form-item>
<el-form-item label="修改时间" >
<el-input v-model="form.updateTime" style="width: 370px;"/>
</el-form-item>
<el-form-item label="备注" >
<el-input v-model="form.remarks" style="width: 370px;"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancel">取消</el-button>
<el-button :loading="loading" type="primary" @click="doSubmit">确认</el-button>
</div>
</el-dialog>
</template>
<script>
import { add, edit } from '@/api/daofuDetails'
export default {
props: {
isAdd: {
type: Boolean,
required: true
}
},
data() {
return {
loading: false, dialog: false,
form: {
id: '',
billFlowId: '',
billDescription: '',
waybillNumber: '',
billType: '',
senderSiteCode: '',
senderSiteName: '',
senderFinancialCenter: '',
senderManagementArea: '',
itemType: '',
productType: '',
ticketCount: '',
pieceCount: '',
billingWeight: '',
arrivalPaymentAmount: '',
receivableSenderFee: '',
payableDeliveryFee: '',
originPlace: '',
originProvince: '',
destinationPlace: '',
destinationProvince: '',
deliveryFinancialCenter: '',
deliveryManagementArea: '',
returnFlag: '',
receiptSiteCode: '',
receiptSiteName: '',
problemPieceFlag: '',
deliveryStaffCode: '',
entryTime: '',
businessOccurrenceTime: '',
receiptTime: '',
recalculationFlag: '',
lockAccountFlag: '',
confirmationFlag: '',
confirmationTime: '',
updateTime: '',
remarks: ''
},
rules: {
}
}
},
methods: {
cancel() {
this.resetForm()
},
doSubmit() {
this.loading = true
if (this.isAdd) {
this.doAdd()
} else this.doEdit()
},
doAdd() {
add(this.form).then(res => {
this.resetForm()
this.$notify({
title: '添加成功',
type: 'success',
duration: 2500
})
this.loading = false
this.$parent.init()
}).catch(err => {
this.loading = false
console.log(err.response.data.message)
})
},
doEdit() {
edit(this.form).then(res => {
this.resetForm()
this.$notify({
title: '修改成功',
type: 'success',
duration: 2500
})
this.loading = false
this.$parent.init()
}).catch(err => {
this.loading = false
console.log(err.response.data.message)
})
},
resetForm() {
this.dialog = false
this.$refs['form'].resetFields()
this.form = {
id: '',
billFlowId: '',
billDescription: '',
waybillNumber: '',
billType: '',
senderSiteCode: '',
senderSiteName: '',
senderFinancialCenter: '',
senderManagementArea: '',
itemType: '',
productType: '',
ticketCount: '',
pieceCount: '',
billingWeight: '',
arrivalPaymentAmount: '',
receivableSenderFee: '',
payableDeliveryFee: '',
originPlace: '',
originProvince: '',
destinationPlace: '',
destinationProvince: '',
deliveryFinancialCenter: '',
deliveryManagementArea: '',
returnFlag: '',
receiptSiteCode: '',
receiptSiteName: '',
problemPieceFlag: '',
deliveryStaffCode: '',
entryTime: '',
businessOccurrenceTime: '',
receiptTime: '',
recalculationFlag: '',
lockAccountFlag: '',
confirmationFlag: '',
confirmationTime: '',
updateTime: '',
remarks: ''
}
}
}
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,253 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<el-input v-model="query.value" clearable placeholder="输入搜索内容" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-select v-model="query.type" clearable placeholder="类型" class="filter-item" style="width: 130px">
<el-option v-for="item in queryTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/>
</el-select>
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<!-- 新增 -->
<div style="display: inline-block;margin: 0px 2px;">
<el-button
v-permission="['admin','daofuDetails:add']"
class="filter-item"
size="mini"
type="primary"
icon="el-icon-plus"
@click="add">新增</el-button>
</div>
<!-- 导出 -->
<div style="display: inline-block;">
<el-button
:loading="downloadLoading"
size="mini"
class="filter-item"
type="warning"
icon="el-icon-download"
@click="download">导出</el-button>
</div>
<div style="display: inline-block;">
<ImportData
:title="'导入'"
:url="'/api/daofuDetails/importData'"
:params="params"
@ok="init"
/>
</div>
<div style="display: inline-block;">
<el-button
:loading="delLoading"
size="mini"
class="filter-item"
type="danger"
icon="el-icon-delete"
v-permission="['admin','daofuDetails:del']"
@click="handleDeleteAll">删除所有</el-button>
</div>
</div>
<!--表单组件-->
<eForm ref="form" :is-add="isAdd"/>
<!--表格渲染-->
<el-table v-loading="loading" :data="data" size="small" style="width: 100%;">
<el-table-column prop="billFlowId" label="账单流水号"/>
<el-table-column prop="billDescription" label="账单描述"/>
<el-table-column prop="waybillNumber" label="运单编号"/>
<el-table-column prop="billType" label="账单类型"/>
<el-table-column prop="senderSiteCode" label="寄件网点编码"/>
<el-table-column prop="senderSiteName" label="寄件网点"/>
<el-table-column prop="senderFinancialCenter" label="寄件财务中心"/>
<el-table-column prop="senderManagementArea" label="寄件管理大区"/>
<el-table-column prop="itemType" label="物品类型"/>
<el-table-column prop="productType" label="产品类型"/>
<el-table-column prop="ticketCount" label="票数"/>
<el-table-column prop="pieceCount" label="件数"/>
<el-table-column prop="billingWeight" label="计费重量"/>
<el-table-column prop="arrivalPaymentAmount" label="到付款金额"/>
<el-table-column prop="receivableSenderFee" label="应收寄件手续费"/>
<el-table-column prop="payableDeliveryFee" label="应付派件手续费"/>
<el-table-column prop="originPlace" label="始发地"/>
<el-table-column prop="originProvince" label="始发省份"/>
<el-table-column prop="destinationPlace" label="目的地"/>
<el-table-column prop="destinationProvince" label="目的省份"/>
<el-table-column prop="deliveryFinancialCenter" label="派件财务中心"/>
<el-table-column prop="deliveryManagementArea" label="派件管理大区"/>
<el-table-column prop="returnFlag" label="退件标识"/>
<el-table-column prop="receiptSiteCode" label="签收网点编码"/>
<el-table-column prop="receiptSiteName" label="签收网点"/>
<el-table-column prop="problemPieceFlag" label="问题件标识"/>
<el-table-column prop="deliveryStaffCode" label="派件业务员"/>
<el-table-column prop="entryTime" label="录入时间"/>
<el-table-column prop="businessOccurrenceTime" label="业务发生时间"/>
<el-table-column prop="receiptTime" label="签收时间"/>
<el-table-column prop="recalculationFlag" label="重算标识"/>
<el-table-column prop="lockAccountFlag" label="锁账标识"/>
<el-table-column prop="confirmationFlag" label="确认标识"/>
<el-table-column prop="confirmationTime" label="确认时间"/>
<el-table-column prop="updateTime" label="修改时间"/>
<el-table-column prop="remarks" label="备注"/>
<el-table-column v-if="checkPermission(['admin','daofuDetails:edit','daofuDetails:del'])" label="操作" width="150px" align="center">
<template slot-scope="scope">
<el-button v-permission="['admin','daofuDetails:edit']" size="mini" type="primary" icon="el-icon-edit" @click="edit(scope.row)"/>
<el-popover
v-permission="['admin','daofuDetails:del']"
:ref="scope.row.id"
placement="top"
width="180">
<p>确定删除本条数据吗</p>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button>
</div>
<el-button slot="reference" type="danger" icon="el-icon-delete" size="mini"/>
</el-popover>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination
:total="total"
:current-page="page + 1"
style="margin-top: 8px;"
layout="total, prev, pager, next, sizes"
@size-change="sizeChange"
@current-change="pageChange"/>
</div>
</template>
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del, downloadDaofuDetails,deleteAll } from '@/api/daofuDetails'
import eForm from './form'
export default {
components: { eForm },
mixins: [initData],
data() {
return {
delLoading: false,
queryTypeOptions: [
{ key: 'billFlowId', display_name: '账单流水号' },
{ key: 'waybillNumber', display_name: '运单编号' },
{ key: 'billType', display_name: '账单类型' },
{ key: 'deliveryStaffCode', display_name: '派件业务员' }
]
}
},
created() {
this.$nextTick(() => {
this.init()
})
},
methods: {
checkPermission,
handleDeleteAll() {
this.delLoading = true
deleteAll().then(res => {
this.delLoading = false
this.init()
this.$notify({
title: '删除成功',
type: 'success',
duration: 2500
})
}).catch(err => {
this.delLoading = false
console.log(err.response.data.message)
})
},
beforeInit() {
this.url = 'api/daofuDetails'
const sort = 'id,desc'
this.params = { page: this.page, size: this.size, sort: sort }
const query = this.query
const type = query.type
const value = query.value
if (type && value) { this.params[type] = value }
return true
},
subDelete(id) {
this.delLoading = true
del(id).then(res => {
this.delLoading = false
this.$refs[id].doClose()
this.dleChangePage()
this.init()
this.$notify({
title: '删除成功',
type: 'success',
duration: 2500
})
}).catch(err => {
this.delLoading = false
this.$refs[id].doClose()
console.log(err.response.data.message)
})
},
add() {
this.isAdd = true
this.$refs.form.dialog = true
},
edit(data) {
this.isAdd = false
const _this = this.$refs.form
_this.form = {
id: data.id,
billFlowId: data.billFlowId,
billDescription: data.billDescription,
waybillNumber: data.waybillNumber,
billType: data.billType,
senderSiteCode: data.senderSiteCode,
senderSiteName: data.senderSiteName,
senderFinancialCenter: data.senderFinancialCenter,
senderManagementArea: data.senderManagementArea,
itemType: data.itemType,
productType: data.productType,
ticketCount: data.ticketCount,
pieceCount: data.pieceCount,
billingWeight: data.billingWeight,
arrivalPaymentAmount: data.arrivalPaymentAmount,
receivableSenderFee: data.receivableSenderFee,
payableDeliveryFee: data.payableDeliveryFee,
originPlace: data.originPlace,
originProvince: data.originProvince,
destinationPlace: data.destinationPlace,
destinationProvince: data.destinationProvince,
deliveryFinancialCenter: data.deliveryFinancialCenter,
deliveryManagementArea: data.deliveryManagementArea,
returnFlag: data.returnFlag,
receiptSiteCode: data.receiptSiteCode,
receiptSiteName: data.receiptSiteName,
problemPieceFlag: data.problemPieceFlag,
deliveryStaffCode: data.deliveryStaffCode,
entryTime: data.entryTime,
businessOccurrenceTime: data.businessOccurrenceTime,
receiptTime: data.receiptTime,
recalculationFlag: data.recalculationFlag,
lockAccountFlag: data.lockAccountFlag,
confirmationFlag: data.confirmationFlag,
confirmationTime: data.confirmationTime,
updateTime: data.updateTime,
remarks: data.remarks
}
_this.dialog = true
},
//
download() {
this.beforeInit()
this.downloadLoading = true
downloadDaofuDetails(this.params).then(result => {
downloadFile(result, 'DaofuDetails列表', 'xlsx')
this.downloadLoading = false
}).catch(() => {
this.downloadLoading = false
})
}
}
}
</script>
<style scoped>
</style>

View File

@ -1,7 +1,7 @@
<template>
<el-dialog :append-to-body="true" :close-on-click-modal="false" :before-close="cancel" :visible.sync="dialog" :title="isAdd ? '新增' : '编辑'" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="签收月份" >
<el-form-item label="账单产生月份" >
<el-input v-model="form.signMonth" style="width: 370px;"/>
</el-form-item>
<el-form-item label="派件财务中心" >

View File

@ -2,14 +2,6 @@
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<el-date-picker
type="month"
v-model="query.dateStr"
value-format="yyyy-MM"
placeholder="选择日期"
@change="toQuery"
></el-date-picker>
<el-input v-model="query.value" clearable placeholder="输入搜索内容" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-select v-model="query.type" clearable placeholder="类型" class="filter-item" style="width: 130px">
<el-option v-for="item in queryTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/>
@ -43,12 +35,23 @@
icon="el-icon-download"
@click="download">导出</el-button>
</div>
<!-- 导出 -->
<div style="display: inline-block;">
<el-button
:loading="delLoading"
size="mini"
class="filter-item"
type="danger"
icon="el-icon-delete"
v-permission="['admin','dispatchDirectBilling:del']"
@click="handleDeleteAll">删除所有</el-button>
</div>
</div>
<!--表单组件-->
<eForm ref="form" :is-add="isAdd"/>
<!--表格渲染-->
<el-table v-loading="loading" :data="data" size="small" style="width: 100%;">
<el-table-column prop="signMonth" label="签收月份"/>
<el-table-column prop="signMonth" label="账单产生月份"/>
<el-table-column prop="dispatchFinancialCenter" label="派件财务中心"/>
<el-table-column prop="dispatchFranchisee" label="派件加盟商"/>
<el-table-column prop="dispatchFranchiseeCode" label="派件加盟商编码"/>
@ -90,7 +93,7 @@
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del, downloadDispatchDirectBilling } from '@/api/dispatchDirectBilling'
import { del, downloadDispatchDirectBilling, deleteAll } from '@/api/dispatchDirectBilling'
import eForm from './form'
export default {
components: { eForm },
@ -111,6 +114,21 @@ export default {
},
methods: {
checkPermission,
handleDeleteAll() {
this.delLoading = true
deleteAll().then(res => {
this.delLoading = false
this.init()
this.$notify({
title: '删除成功',
type: 'success',
duration: 2500
})
}).catch(err => {
this.delLoading = false
console.log(err.response.data.message)
})
},
beforeInit() {
this.url = 'api/dispatchDirectBilling'
const sort = 'id,desc'

View File

@ -2,14 +2,6 @@
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<el-date-picker
type="month"
v-model="query.dateStr"
value-format="yyyy-MM"
placeholder="选择日期"
@change="toQuery"
></el-date-picker>
<el-input v-model="query.value" clearable placeholder="输入搜索内容" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery"/>
<el-select v-model="query.type" clearable placeholder="类型" class="filter-item" style="width: 130px">
<el-option v-for="item in queryTypeOptions" :key="item.key" :label="item.display_name" :value="item.key"/>
@ -43,6 +35,17 @@
icon="el-icon-download"
@click="download">导出</el-button>
</div>
<!-- 导出 -->
<div style="display: inline-block;">
<el-button
:loading="delLoading"
size="mini"
class="filter-item"
type="danger"
icon="el-icon-delete"
v-permission="['admin','dispatchFeeDetails:del']"
@click="handleDeleteAll">删除所有</el-button>
</div>
</div>
<!--表单组件-->
<eForm ref="form" :is-add="isAdd"/>
@ -127,7 +130,7 @@
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/initData'
import { del, downloadDispatchFeeDetails } from '@/api/dispatchFeeDetails'
import { del, downloadDispatchFeeDetails,deleteAll } from '@/api/dispatchFeeDetails'
import eForm from './form'
export default {
components: { eForm },
@ -148,6 +151,21 @@ export default {
},
methods: {
checkPermission,
handleDeleteAll() {
this.delLoading = true
deleteAll().then(res => {
this.delLoading = false
this.init()
this.$notify({
title: '删除成功',
type: 'success',
duration: 2500
})
}).catch(err => {
this.delLoading = false
console.log(err.response.data.message)
})
},
beforeInit() {
this.url = 'api/dispatchFeeDetails'
const sort = 'id,desc'

View File

@ -2,14 +2,6 @@
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<el-date-picker
type="month"
v-model="query.dateStr"
value-format="yyyy-MM"
placeholder="选择日期"
@change="getAll"
>
</el-date-picker>
<!-- 搜索 -->
<el-input v-model="query.value" clearable placeholder="输入搜索内容" style="width: 200px;" class="filter-item"
@keyup.enter.native="getAll" />