|
@@ -32,14 +32,22 @@
|
|
|
type="primary"
|
|
|
size="small"
|
|
|
>审核进度</el-button>
|
|
|
-<!-- <el-button-->
|
|
|
-<!-- type="primary"-->
|
|
|
-<!-- v-if="!checkDisabled"-->
|
|
|
-<!-- :disabled="!form.id || disabled"-->
|
|
|
-<!-- size="small"-->
|
|
|
-<!-- @click="pleaseCheck"-->
|
|
|
-<!-- :loading="btnLoading"-->
|
|
|
-<!-- >请核</el-button>-->
|
|
|
+ <el-button
|
|
|
+ v-if="confirmDisabled"
|
|
|
+ :disabled="disabled"
|
|
|
+ size="small"
|
|
|
+ type="primary"
|
|
|
+ @click="repealAllot"
|
|
|
+ :loading="btnLoading"
|
|
|
+ >撤销调拨</el-button>
|
|
|
+ <el-button
|
|
|
+ v-if="!confirmDisabled"
|
|
|
+ :disabled="!form.id || disabled"
|
|
|
+ size="small"
|
|
|
+ type="primary"
|
|
|
+ @click="confirmAllot"
|
|
|
+ :loading="btnLoading"
|
|
|
+ >确认调拨</el-button>
|
|
|
<el-button
|
|
|
type="success"
|
|
|
:disabled="!form.id"
|
|
@@ -72,8 +80,6 @@
|
|
|
clearable
|
|
|
size="small"
|
|
|
placeholder="请选择"
|
|
|
- @change="userHandle"
|
|
|
- @clear="form.userName == null"
|
|
|
disabled
|
|
|
>
|
|
|
<el-option
|
|
@@ -84,13 +90,13 @@
|
|
|
></el-option>
|
|
|
</el-select>
|
|
|
</template>
|
|
|
- <template slot="deptId">
|
|
|
+ <template slot="createDept">
|
|
|
<avue-input-tree
|
|
|
leaf-only
|
|
|
style="width: 100%;"
|
|
|
size="small"
|
|
|
:props="{ label: 'title' }"
|
|
|
- v-model="form.deptId"
|
|
|
+ v-model="form.createDept"
|
|
|
placeholder=" "
|
|
|
type="tree"
|
|
|
:dic="dic"
|
|
@@ -98,15 +104,19 @@
|
|
|
disabled=""
|
|
|
></avue-input-tree>
|
|
|
</template>
|
|
|
- <template slot="origWarehouse">
|
|
|
+ <template slot="storageId">
|
|
|
<warehouse-select
|
|
|
- v-model="form.origWarehouse"
|
|
|
- :configuration="configurationWarehouse"/>
|
|
|
+ v-model="form.storageId"
|
|
|
+ :configuration="configurationWarehouse"
|
|
|
+ :disabled="disabled || confirmDisabled"
|
|
|
+ />
|
|
|
</template>
|
|
|
- <template slot="warehouse">
|
|
|
+ <template slot="allotStorageId">
|
|
|
<warehouse-select
|
|
|
- v-model="form.warehouse"
|
|
|
- :configuration="configurationWarehouse"/>
|
|
|
+ v-model="form.allotStorageId"
|
|
|
+ :configuration="configurationWarehouse"
|
|
|
+ :disabled="disabled || confirmDisabled"
|
|
|
+ />
|
|
|
</template>
|
|
|
</avue-form>
|
|
|
</basic-container>
|
|
@@ -126,7 +136,7 @@
|
|
|
icon="el-icon-plus"
|
|
|
size="small"
|
|
|
@click.stop="newDetails"
|
|
|
- :disabled="disabled || checkDisabled"
|
|
|
+ :disabled="disabled || confirmDisabled"
|
|
|
>录入明细</el-button>
|
|
|
<el-button
|
|
|
type="info"
|
|
@@ -141,14 +151,14 @@
|
|
|
icon="el-icon-edit"
|
|
|
type="text"
|
|
|
@click="rowCell(row, index)"
|
|
|
- :disabled="disabled || checkDisabled"
|
|
|
+ :disabled="disabled || confirmDisabled"
|
|
|
>{{ row.$cellEdit ? "保存" : "修改" }}</el-button>
|
|
|
<el-button
|
|
|
size="small"
|
|
|
icon="el-icon-delete"
|
|
|
type="text"
|
|
|
@click="rowDel(row, index)"
|
|
|
- :disabled="disabled || checkDisabled"
|
|
|
+ :disabled="disabled || confirmDisabled"
|
|
|
>删除</el-button>
|
|
|
</template>
|
|
|
<template slot="code" slot-scope="{ row, index }">
|
|
@@ -203,16 +213,28 @@
|
|
|
</span>
|
|
|
<span v-else> {{ row.cname }}</span>
|
|
|
</template>
|
|
|
- <template slot="orderQuantity" slot-scope="{ row, index }">
|
|
|
+ <template slot="actualQuantity" slot-scope="{ row, index }">
|
|
|
<el-input-number
|
|
|
v-if="row.$cellEdit"
|
|
|
- v-model="row.orderQuantity"
|
|
|
+ v-model="row.actualQuantity"
|
|
|
size="small"
|
|
|
:controls="false"
|
|
|
:precision="0"
|
|
|
style="width: 100%"
|
|
|
+ @change="actualQuantityChange(row)"
|
|
|
+ />
|
|
|
+ <span v-else>{{ row.actualQuantity | IntegerFormat }}</span>
|
|
|
+ </template>
|
|
|
+ <template slot="deliveryAmount" slot-scope="{ row, index }">
|
|
|
+ <el-input-number
|
|
|
+ v-if="row.$cellEdit"
|
|
|
+ v-model="row.deliveryAmount"
|
|
|
+ size="small"
|
|
|
+ :controls="false"
|
|
|
+ :precision="2"
|
|
|
+ style="width: 100%"
|
|
|
/>
|
|
|
- <span v-else>{{ row.orderQuantity | IntegerFormat }}</span>
|
|
|
+ <span v-else>{{ row.deliveryAmount | decimalFormat }}</span>
|
|
|
</template>
|
|
|
</avue-crud>
|
|
|
</basic-container>
|
|
@@ -363,14 +385,14 @@ import { gainUser } from "@/api/basicData/customerInquiry";
|
|
|
import {getUserInfo} from "@/api/system/user";
|
|
|
import {getDeptTree} from "@/api/system/dept";
|
|
|
import { getCurrentDate } from "@/util/date";
|
|
|
-import {dataDetail, typeSave, removeGoods, pleaseCheck} from "@/api/standAlone/reimbursement";
|
|
|
+import {dataDetail, typeSave, removeGoods, confirmAllot, repealAllot} from "@/api/dealer/allocation";
|
|
|
import { contrastObj, contrastList } from "@/util/contrastData";
|
|
|
import check from "@/components/check/check";
|
|
|
import checkSchedule from "@/components/check/checkSchedule";
|
|
|
import reportDialog from "@/components/report-dialog/main";
|
|
|
import {getDeptLazyTree,
|
|
|
getGoods,} from "@/api/basicData/customerInquiry";
|
|
|
-
|
|
|
+import {selectGoodsNum} from "@/api/basicData/inventoryAccount";
|
|
|
|
|
|
export default {
|
|
|
name: "detail",
|
|
@@ -389,14 +411,16 @@ export default {
|
|
|
disabled: false,
|
|
|
pageLoading: false,
|
|
|
btnLoading: false,
|
|
|
- form: {},
|
|
|
+ form: {
|
|
|
+ deliveryStatus: '录入'
|
|
|
+ },
|
|
|
option: {
|
|
|
menuBtn: false,
|
|
|
labelWidth: 100,
|
|
|
column: [
|
|
|
{
|
|
|
label: "原仓库",
|
|
|
- prop: "origWarehouse",
|
|
|
+ prop: "storageId",
|
|
|
rules: [
|
|
|
{
|
|
|
required: true,
|
|
@@ -408,8 +432,8 @@ export default {
|
|
|
slot: true,
|
|
|
},
|
|
|
{
|
|
|
- label: "仓库",
|
|
|
- prop: "warehouse",
|
|
|
+ label: "现仓库",
|
|
|
+ prop: "allotStorageId",
|
|
|
rules: [
|
|
|
{
|
|
|
required: true,
|
|
@@ -437,7 +461,7 @@ export default {
|
|
|
},
|
|
|
{
|
|
|
label: "仓管员",
|
|
|
- prop: "keeper",
|
|
|
+ prop: "freightUser",
|
|
|
rules: [
|
|
|
{
|
|
|
required: true,
|
|
@@ -457,7 +481,7 @@ export default {
|
|
|
},
|
|
|
{
|
|
|
label: "制单部门",
|
|
|
- prop: "deptId",
|
|
|
+ prop: "createDept",
|
|
|
span: 8,
|
|
|
slot: true,
|
|
|
disabled: true
|
|
@@ -480,6 +504,13 @@ export default {
|
|
|
disabled: true,
|
|
|
},
|
|
|
{
|
|
|
+ label: "单据状态",
|
|
|
+ prop: "deliveryStatus",
|
|
|
+ span: 8,
|
|
|
+ slot: true,
|
|
|
+ disabled: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
label: "备注",
|
|
|
prop: "remarks",
|
|
|
type: "textarea",
|
|
@@ -538,7 +569,6 @@ export default {
|
|
|
},
|
|
|
oldForm: {},
|
|
|
oldDataList: [],
|
|
|
- checkDisabled: false, // 审核状态
|
|
|
checker: false,
|
|
|
checkId: '',
|
|
|
batchNo:'',
|
|
@@ -561,6 +591,7 @@ export default {
|
|
|
currentPage: 1,
|
|
|
total: 0
|
|
|
},
|
|
|
+ confirmDisabled: false, // 调拨状态禁用
|
|
|
}
|
|
|
},
|
|
|
async created() {
|
|
@@ -577,15 +608,6 @@ export default {
|
|
|
gainUser().then(res => {
|
|
|
this.userList = res.data.data;
|
|
|
});
|
|
|
- getUserInfo().then(res => {
|
|
|
- this.$set(this.form, 'createUser', res.data.data.id);
|
|
|
- this.$set(this.form, 'userName', res.data.data.realName);
|
|
|
- this.$set(this.form, 'deptId', res.data.data.deptId);
|
|
|
- this.$set(this.form, 'deptName', res.data.data.deptName);
|
|
|
- this.$set(this.form, 'postId', res.data.data.postId.split(',')[0]);
|
|
|
- this.$set(this.form, 'postName', res.data.data.postName.split(',')[0]);
|
|
|
- this.loginUser = res.data.data.realName;
|
|
|
- })
|
|
|
getDeptTree().then(res => {
|
|
|
this.dic = res.data.data
|
|
|
})
|
|
@@ -614,6 +636,18 @@ export default {
|
|
|
this.checker = true;
|
|
|
this.batchNo = this.detailData.check.batchNo
|
|
|
this.queryData(this.detailData.id);
|
|
|
+ } else {
|
|
|
+ getUserInfo().then(res => {
|
|
|
+ this.$set(this.form, 'createUser', res.data.data.id);
|
|
|
+ this.$set(this.form, 'userName', res.data.data.realName);
|
|
|
+ this.$set(this.form, 'createDept', res.data.data.deptId);
|
|
|
+ this.$set(this.form, 'deptName', res.data.data.deptName);
|
|
|
+ this.$set(this.form, 'postId', res.data.data.postId.split(',')[0]);
|
|
|
+ this.$set(this.form, 'postName', res.data.data.postName.split(',')[0]);
|
|
|
+ this.loginUser = res.data.data.realName;
|
|
|
+ this.oldForm = Object.assign({}, this.form);
|
|
|
+ this.oldDataList = this.deepClone(this.dataList);
|
|
|
+ })
|
|
|
}
|
|
|
},
|
|
|
filters: {
|
|
@@ -628,13 +662,13 @@ export default {
|
|
|
// 查询
|
|
|
queryData(id) {
|
|
|
this.pageLoading = true;
|
|
|
- dataDetail({id: id}).then(res => {
|
|
|
+ dataDetail(id).then(res => {
|
|
|
this.form = res.data.data;
|
|
|
- this.dataList = this.form.itemList? this.form.itemList: [];
|
|
|
+ this.confirmDisabled = this.form.deliveryStatus === '确认调拨'? true: false;
|
|
|
+ this.dataList = this.form.deliveryItemsList? this.form.deliveryItemsList: [];
|
|
|
+ // delete this.form.deliveryItemsList;
|
|
|
this.oldForm = {...this.form};
|
|
|
this.oldDataList = [...this.dataList];
|
|
|
- delete this.form.itemList;
|
|
|
- this.checkDisabled = this.form.status > 0? true: false;
|
|
|
if (this.form.status > 0) {
|
|
|
this.option.column.map(e => {
|
|
|
this.$set(e, 'disabled', true)
|
|
@@ -646,18 +680,20 @@ export default {
|
|
|
},
|
|
|
//返回列表
|
|
|
backToList() {
|
|
|
- this.$emit("goBack");
|
|
|
+ if (this.verification()) {
|
|
|
+ this.$emit("goBack");
|
|
|
+ }
|
|
|
},
|
|
|
// 编辑按钮触发
|
|
|
openEdit() {
|
|
|
this.disabled = false;
|
|
|
this.option.column.map(e => {
|
|
|
- if (this.checkDisabled) {
|
|
|
- this.$set(e, 'disabled', true)
|
|
|
- } else {
|
|
|
- if (e.prop != 'serialNo') {
|
|
|
- this.$set(e, 'disabled', false)
|
|
|
+ if (!this.confirmDisabled) {
|
|
|
+ if (e.prop != 'sysNo' && e.prop != 'createTime' && e.prop != 'deliveryStatus') {
|
|
|
+ this.$set(e, 'disabled', false);
|
|
|
}
|
|
|
+ } else {
|
|
|
+ this.$set(e, 'disabled', true);
|
|
|
}
|
|
|
})
|
|
|
},
|
|
@@ -670,14 +706,22 @@ export default {
|
|
|
this.$refs["form"].validate((valid, done) => {
|
|
|
done();
|
|
|
if (valid) {
|
|
|
- if (this.form.origWarehouse == this.form.warehouse) {
|
|
|
- return this.$message.error('原仓库与调拨仓库不能一致')
|
|
|
+ if (this.form.storageId == this.form.allotStorageId) {
|
|
|
+ return this.$message.error('原仓库与现仓库不能一致')
|
|
|
}
|
|
|
- this.$set(this.form, 'itemList', this.dataList)
|
|
|
+ let totalQuantity = 0; //总数量
|
|
|
+ let deliveryAmount = 0; //总金额
|
|
|
+ this.dataList.forEach(item => {
|
|
|
+ deliveryAmount += Number(item.deliveryAmount);
|
|
|
+ totalQuantity += Number(item.actualQuantity);
|
|
|
+ })
|
|
|
+ this.$set(this.form, 'deliveryAmount', deliveryAmount);
|
|
|
+ this.$set(this.form, 'totalQuantity', totalQuantity);
|
|
|
+ this.$set(this.form, 'deliveryItemsList', this.dataList)
|
|
|
this.btnLoading = true;
|
|
|
typeSave(this.form).then(res => {
|
|
|
this.$message({type: "success", message: this.form.id ? "修改成功!" : "新增成功!"});
|
|
|
- this.queryData(res.data.data);
|
|
|
+ this.queryData(res.data.data.id);
|
|
|
}).finally(() => {
|
|
|
this.btnLoading = false;
|
|
|
})
|
|
@@ -760,9 +804,6 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
getKHData(row) {},
|
|
|
- userHandle() {
|
|
|
- this.form.userName = this.userList.find(item => item.id == this.form.createUser).realName;
|
|
|
- },
|
|
|
// 验证新旧值对比
|
|
|
verification() {
|
|
|
if (contrastObj(this.form, this.oldForm) ||
|
|
@@ -795,28 +836,6 @@ export default {
|
|
|
choceScheduleFun(){
|
|
|
this.checkScheduleDialog = false
|
|
|
},
|
|
|
- // 请核
|
|
|
- pleaseCheck() {
|
|
|
- if (this.verification()) {
|
|
|
- const data = {
|
|
|
- id : this.form.id,
|
|
|
- checkType: 'fybx',
|
|
|
- url: '/reimbursement/index',
|
|
|
- pageStatus:"this.$store.getters.reimbursementStatus",
|
|
|
- pageLabel:"报销",
|
|
|
- checkFlag: 1,
|
|
|
- }
|
|
|
- this.btnLoading = true;
|
|
|
- pleaseCheck(data).then(res => {
|
|
|
- this.$message.success('请核成功')
|
|
|
- this.queryData(this.form.id)
|
|
|
- }).catch(() => {
|
|
|
- this.$message.error('请核失败')
|
|
|
- }).finally(() => {
|
|
|
- this.btnLoading = false;
|
|
|
- })
|
|
|
- }
|
|
|
- },
|
|
|
// 报表
|
|
|
openReport() {
|
|
|
this.switchDialog =! this.switchDialog;
|
|
@@ -835,6 +854,13 @@ export default {
|
|
|
codeChange(row) {
|
|
|
this.goodsoptions.forEach(async e => {
|
|
|
if (e.code == row.code) {
|
|
|
+ await selectGoodsNum({
|
|
|
+ goodsId: e.id,
|
|
|
+ tradeType: 'JXS',
|
|
|
+ storageId: this.form.storageId
|
|
|
+ }).then(res => {
|
|
|
+ row.inventoryNumber = res.data.data;
|
|
|
+ })
|
|
|
row.itemId = e.id;
|
|
|
row.storageQuantity = e.storageQuantity;
|
|
|
row.cname = e.cname;
|
|
@@ -847,19 +873,20 @@ export default {
|
|
|
row.typeno = e.typeno;
|
|
|
row.unit = e.unit;
|
|
|
row.size = e.size;
|
|
|
- row.arr = e.arr;
|
|
|
row.priceCategory = e.goodsTypeName;
|
|
|
- row.purchaseAmount = e.purchaseAmount;
|
|
|
- row.batch = e.batch;
|
|
|
- row.newJob = e.newJob;
|
|
|
- row.newDate = e.newDate;
|
|
|
- row.price = e.price;
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
cnameChange(row) {
|
|
|
this.goodsoptions.forEach(async e => {
|
|
|
if (e.id == row.itemId) {
|
|
|
+ await selectGoodsNum({
|
|
|
+ goodsId: e.id,
|
|
|
+ tradeType: 'JXS',
|
|
|
+ storageId: this.form.storageId
|
|
|
+ }).then(res => {
|
|
|
+ row.inventoryNumber = res.data.data;
|
|
|
+ })
|
|
|
row.storageQuantity = e.storageQuantity
|
|
|
row.cname = e.cname;
|
|
|
row.code = e.code;
|
|
@@ -871,13 +898,7 @@ export default {
|
|
|
row.typeno = e.typeno;
|
|
|
row.unit = e.unit;
|
|
|
row.size = e.size;
|
|
|
- row.arr = e.arr;
|
|
|
row.priceCategory = e.goodsTypeName;
|
|
|
- row.purchaseAmount = e.purchaseAmount;
|
|
|
- row.batch = e.batch;
|
|
|
- row.newDate = e.newDate;
|
|
|
- row.newJob = e.newJob;
|
|
|
- row.price = e.price;
|
|
|
}
|
|
|
});
|
|
|
},
|
|
@@ -888,6 +909,13 @@ export default {
|
|
|
} else {
|
|
|
this.selectionList.forEach(e => {
|
|
|
this.dataList.forEach(async (item, index) => {
|
|
|
+ await selectGoodsNum({
|
|
|
+ goodsId: e.id,
|
|
|
+ tradeType: 'JXS',
|
|
|
+ storageId: this.form.storageId
|
|
|
+ }).then(res => {
|
|
|
+ e.inventoryNumber = res.data.data;
|
|
|
+ })
|
|
|
if (index == this.reData.index) {
|
|
|
item.itemId = e.id;
|
|
|
item.code = e.code;
|
|
@@ -901,11 +929,7 @@ export default {
|
|
|
item.unit = e.unit;
|
|
|
item.size = e.size;
|
|
|
item.priceCategory = e.goodsTypeName;
|
|
|
- item.purchaseAmount = e.purchaseAmount;
|
|
|
- item.batch = e.batch;
|
|
|
- item.newDate = e.newDate;
|
|
|
- item.newJob = e.newJob;
|
|
|
- item.price = e.price;
|
|
|
+ item.inventoryNumber = e.inventoryNumber;
|
|
|
item.$cellEdit = true;
|
|
|
}
|
|
|
});
|
|
@@ -914,6 +938,13 @@ export default {
|
|
|
} else {
|
|
|
if (this.goodsListSave.length > 0) { // 暂存的有数据
|
|
|
this.goodsListSave.forEach(async e => {
|
|
|
+ await selectGoodsNum({
|
|
|
+ goodsId: e.id,
|
|
|
+ tradeType: 'JXS',
|
|
|
+ storageId: this.form.storageId
|
|
|
+ }).then(res => {
|
|
|
+ e.inventoryNumber = res.data.data;
|
|
|
+ })
|
|
|
this.dataList.push({
|
|
|
itemId: e.id,
|
|
|
code: e.code,
|
|
@@ -927,19 +958,22 @@ export default {
|
|
|
unit: e.unit,
|
|
|
size: e.size,
|
|
|
price: e.price,
|
|
|
- amount: 0,
|
|
|
- orderQuantity: 0,
|
|
|
+ deliveryAmount: 0,
|
|
|
+ actualQuantity: 0,
|
|
|
storageQuantity: e.storageQuantity,
|
|
|
- purchaseAmount: e.purchaseAmount,
|
|
|
- batch: e.batch,
|
|
|
- arr: e.arr,
|
|
|
- newJob:e.newJob,
|
|
|
- newDate: e.newDate,
|
|
|
+ inventoryNumber: e.inventoryNumber,
|
|
|
$cellEdit: true
|
|
|
});
|
|
|
});
|
|
|
} else {
|
|
|
this.selectionList.forEach(async e => {
|
|
|
+ await selectGoodsNum({
|
|
|
+ goodsId: e.id,
|
|
|
+ tradeType: 'JXS',
|
|
|
+ storageId: this.form.storageId
|
|
|
+ }).then(res => {
|
|
|
+ e.inventoryNumber = res.data.data;
|
|
|
+ })
|
|
|
this.dataList.push({
|
|
|
itemId: e.id,
|
|
|
code: e.code,
|
|
@@ -952,15 +986,9 @@ export default {
|
|
|
corpName: e.corpName,
|
|
|
unit: e.unit,
|
|
|
size: e.size,
|
|
|
- amount: 0,
|
|
|
- orderQuantity: 0,
|
|
|
- storageQuantity: e.storageQuantity,
|
|
|
- purchaseAmount: e.purchaseAmount,
|
|
|
- batch: e.batch,
|
|
|
- arr: e.arr,
|
|
|
- newJob: e.newJob,
|
|
|
- newDate: e.newDate,
|
|
|
- price: e.price,
|
|
|
+ deliveryAmount: 0,
|
|
|
+ actualQuantity: 0,
|
|
|
+ inventoryNumber: e.inventoryNumber,
|
|
|
$cellEdit: true
|
|
|
});
|
|
|
});
|
|
@@ -1057,6 +1085,36 @@ export default {
|
|
|
importStagList(row, index) {
|
|
|
this.goodsListSave.push(row);
|
|
|
},
|
|
|
+ actualQuantityChange(row) {
|
|
|
+ if (Number(row.actualQuantity) > Number(row.inventoryNumber)) {
|
|
|
+ this.$set(row, 'actualQuantity', '0');
|
|
|
+ this.$message.error('调拨件数不能超过结余库存')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 确认调拨
|
|
|
+ confirmAllot() {
|
|
|
+ if (this.verification()) {
|
|
|
+ this.btnLoading = true;
|
|
|
+ this.$set(this.form, 'deliveryItemsList', this.dataList);
|
|
|
+ confirmAllot(this.form).then(res => {
|
|
|
+ this.queryData(this.form.id);
|
|
|
+ this.$message.success('调拨成功');
|
|
|
+ }).finally(() => {
|
|
|
+ this.btnLoading = false;
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 撤销调拨
|
|
|
+ repealAllot() {
|
|
|
+ this.btnLoading = true;
|
|
|
+ this.$set(this.form, 'deliveryItemsList', this.dataList);
|
|
|
+ repealAllot(this.form).then(res => {
|
|
|
+ this.queryData(this.form.id);
|
|
|
+ this.$message.success('撤销成功');
|
|
|
+ }).finally(() => {
|
|
|
+ this.btnLoading = false;
|
|
|
+ })
|
|
|
+ },
|
|
|
},
|
|
|
}
|
|
|
</script>
|