This commit is contained in:
2026-07-27 06:28:06 +08:00
parent 5f8c5a8430
commit d823cedd3c
7 changed files with 226 additions and 66 deletions
+144 -48
View File
@@ -28,7 +28,7 @@
</button>
</div>
</div>
<div class="mb-3 col-12 col-md-6">
<!--<div class="mb-3 col-12 col-md-6">
<label for="" class="form-label">開立日期 <span class="text-danger">*</span></label>
<v-menu ref="menu"
v-model="menu"
@@ -63,7 +63,7 @@
</v-btn>
</v-date-picker>
</v-menu>
</div>
</div>-->
<div class="mb-3 col-12 col-md-6">
<label for="receiptStyle" class="form-label">收據格式 <span class="text-danger">*</span></label>
<select class="form-select" id="receiptStyle" v-model="formData.style_num" required
@@ -75,11 +75,13 @@
</select>
</div>
<div class="mb-3 col-12 col-md-6">
<v-text-field v-model="formData.total_amt" label="應收總金額"
<label for="total_amt" class="form-label" >應收總金額</label>
<v-text-field v-model="formData.total_amt" id="total_amt"
:disabled="mode=='view'||mode=='edit'||formData.source=='1'"></v-text-field><!--從報名來的不能改總金額-->
</div>
<div class="mb-3 col-12 col-md-6">
<v-text-field v-model="alreadyAmt" label="已收總金額"
<label for="alreadyAmt" class="form-label">已收總金額</label>
<v-text-field v-model="alreadyAmt" id="alreadyAmt"
:disabled="mode=='view'||mode=='edit'||formData.source=='1'"></v-text-field>
</div>
</div>
@@ -91,56 +93,102 @@
</div>
<div class="card-body">
<div class="row" v-show="mode!='view'">
<!--<div class="col-12 col-md-2">
<v-text-field v-model="newDetail.receipt_no" label="編號" :readonly="true"></v-text-field>
</div>-->
<div class="col-12 col-md-2">
<v-text-field v-model="newDetail.title" label="抬頭"></v-text-field>
<label for="" class="form-label">抬頭 <span class="text-danger">*</span></label>
<v-text-field v-model="newDetail.title"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="newDetail.amt" label="金額"></v-text-field>
</div>
<div class="col-12 col-md-4">
<v-text-field v-model="newDetail.addr" label="地址"></v-text-field>
<label for="" class="form-label">金額 <span class="text-danger">*</span></label>
<v-text-field v-model="newDetail.amt"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="newDetail.caseofficer" label="經手人"></v-text-field>
<label for="" class="form-label">開立日期 <span class="text-danger">*</span></label>
<v-menu ref="menu"
v-model="menu"
:close-on-content-click="false"
:return-value.sync="newDetail.receipt_date"
transition="scale-transition"
offset-y
min-width="auto"
:disabled="mode=='view'||mode=='edit'">
<template v-slot:activator="{ on, attrs }">
<v-text-field v-model="newDetail.receipt_date"
prepend-icon="mdi-calendar"
readonly
v-bind="attrs"
v-on="on"></v-text-field>
</template>
<v-date-picker v-model="newDetail.receipt_date"
:active-picker.sync="activePicker"
:max="(new Date(Date.now() - (new Date()).getTimezoneOffset() * 60000)).toISOString().substring(0, 10)"
min="1950-01-01">
<v-spacer></v-spacer>
<v-btn text
color="primary"
@click.prevent="menu = false">
Cancel
</v-btn>
<v-btn text
color="primary"
@click.prevent="$refs.menu.save(newDetail.receipt_date)">
OK
</v-btn>
</v-date-picker>
</v-menu>
</div>
<div class="col-12 col-md-6">
<label for="" class="form-label">功德項目</label>
<v-text-field v-model="newDetail.receipt_item"> </v-text-field>
</div>
<!--</div>
<div class="row" v-show="mode!='view'">-->
<div class="col-12 col-md-8">
<label for="" class="form-label">地址</label>
<v-text-field v-model="newDetail.addr" ></v-text-field>
</div>
<div class="col-12 col-md-2">
<label for="" class="form-label">經手人 <span class="text-danger">*</span></label>
<v-text-field v-model="newDetail.caseofficer" ></v-text-field>
</div>
<div class="col-12 col-md-2">
<button class="btn btn-info" @click.prevent="addDetail">新增</button>
</div>
</div>
<div class="row" v-for="d in formDetail">
<div class="row" v-for="d in formDetail">
<div class="row">
<div class="col-12 col-md-2">
<v-text-field v-model="d.title" label="抬頭" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="d.amt" label="金額" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="d.receipt_date" label="開立日期" :disabled="mode=='view'||mode=='edit'"></v-text-field>
</div>
<div class="col-12 col-md-6">
<v-text-field v-model="d.receipt_item" label="功德項目" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-8">
<v-text-field v-model="d.addr" label="地址" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="d.caseofficer" label="經手人" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="d.receipt_no" label="收據編號" v-show="mode=='view'" :disabled="mode=='view'||mode=='edit'"></v-text-field>
</div>
</div>
</div>
<div class="row">
<!--<div class="col-12 col-md-2">
<v-text-field v-model="d.receipt_no" label="編號"></v-text-field>
</div>-->
<div class="col-12 col-md-2">
<v-text-field v-model="d.title" label="抬頭" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="d.amt" label="金額" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-4">
<v-text-field v-model="d.addr" label="地址" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="d.caseofficer" label="經手人" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="d.receipt_no" label="收據編號" v-show="mode=='view'" :disabled="mode=='view'"></v-text-field>
收據已開立總金額 {{ countReceiptTotal() }}
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-md-2">
收據已開立總金額 {{ countReceiptTotal() }}
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-footer">
<button class="btn btn-primary" @click.prevent="saveReceipt" v-show="mode!='view'">存檔</button>
@@ -204,6 +252,7 @@
<script>
module.exports = {
name:"receipt_component",
props: {
num: {
type: Number // num
@@ -237,7 +286,9 @@
title: "",
addr: "",
amt: 0,
caseofficer: ""
caseofficer: "",
receipt_date: "",
receipt_item:"",
},
formDetail: [
],
@@ -286,7 +337,8 @@
deep:true,
},
num: {
handler() {
handler(newVal) {
console.log("........", newVal)
this.formData = {
source: '',
order_no: '',
@@ -296,7 +348,7 @@
style_num: 0,
num: 0
}
if (this.mode == "view"||this.mode=="edit") {
if ((this.mode == "view"||this.mode=="edit")&&newVal!=0) {
this.getReceipt();
}
},
@@ -373,6 +425,22 @@
.catch(error => console.log(error))
},
addDetail() {
if (this.newDetail.title === "") {
this.showSnack("抬頭必須填寫")
return
}
if (this.newDetail.amt ===0 ) {
this.showSnack("金額不可為0")
return
}
if (this.newDetail.receipt_date === "") {
this.showSnack("開立日期必須填寫")
return
}
if (this.newDetail.caseofficer === "") {
this.showSnack("經手人必須填寫")
return
}
this.formDetail.push({ ...this.newDetail })
this.newDetail = {
receipt_no: "",
@@ -381,7 +449,9 @@
amt: 0,
caseofficer: "",
num: 0,
receipt_num:0
receipt_num: 0,
receipt_date: "",
receipt_item:""
}
},
@@ -403,10 +473,10 @@
this.showSnack("請選擇活動/法會");
return false;
}
if (this.formData.receipt_date == "") {
this.showSnack("請選擇開立日期");
return false;
}
//if (this.formData.receipt_date == "") {
// this.showSnack("請選擇開立日期");
// return false;
//}
if (this.formData.style_num==0) {
this.showSnack("請選擇收據格式");
return false;
@@ -443,6 +513,7 @@
.catch(error => console.log(error))
},
closeWindow(param) {
//this.num=0
this.formDetail.length = 0
this.formData = {
source: '',
@@ -510,7 +581,7 @@
}
this.formDetail.length = 0;
this.alreadyAmt = 0;
console.log("deactivated");
},
activated() {
this.getReceiptStyles();
@@ -526,8 +597,33 @@
this.formDetail.length = 0;
this.alreadyAmt = 0;
},
beforeUnmount() {
console.log("beforeUnmount");
this.formData = {
source: '',
order_no: '',
receipt_date: null,
receipt_style: "",
total_amt: 0,
style_num: 0,
num: 0
}
this.formDetail.length = 0;
this.alreadyAmt = 0;
},
mounted() {
//this.formDetail.push()
this.getReceiptStyles();
this.formData = {
source: '',
order_no: '',
receipt_date: null,
receipt_style: "",
total_amt: 0,
style_num: 0,
num: 0
}
this.formDetail.length = 0;
this.alreadyAmt = 0;
},
computed: {