From 4c5487bd2d72d1c36942e731c9f3ee83bba031ea Mon Sep 17 00:00:00 2001 From: yxh <172933527@qq.com> Date: 星期三, 10 五月 2023 19:35:38 +0800 Subject: [PATCH] 报销单 --- src/views/project/fund/expertFeeFundApply/index.vue | 46 +++---- src/views/project/travelexpenseslist/index.vue | 302 +++++++++++++++++++++++++++----------------------- src/api/project/reimbursement.js | 8 + src/api/project/reimbursementdetail.js | 3 4 files changed, 190 insertions(+), 169 deletions(-) diff --git a/src/api/project/reimbursement.js b/src/api/project/reimbursement.js index 6c9ecff..08c2fef 100644 --- a/src/api/project/reimbursement.js +++ b/src/api/project/reimbursement.js @@ -100,4 +100,12 @@ method: 'post', data: data }) +} + +// 鍚屾鐢宠鍗曞埌鍏变韩琛� +export function addShareSreimbursementData(id) { + return request({ + url: '/project/reimbursement/' + id, + method: 'get' + }) } \ No newline at end of file diff --git a/src/api/project/reimbursementdetail.js b/src/api/project/reimbursementdetail.js index 8384957..182c3a9 100644 --- a/src/api/project/reimbursementdetail.js +++ b/src/api/project/reimbursementdetail.js @@ -17,8 +17,6 @@ }) } - - // /project/reimbursement/getRBDetailList/{rbid} // 鑾峰彇鍝嶅簲鐨刣etails鍒楄〃 export function getReimbursementdetaillist(id) { @@ -37,7 +35,6 @@ data: data }) } - // /project/reimbursement/getMaxId diff --git a/src/views/project/fund/expertFeeFundApply/index.vue b/src/views/project/fund/expertFeeFundApply/index.vue index e130ae0..96d3ecf 100644 --- a/src/views/project/fund/expertFeeFundApply/index.vue +++ b/src/views/project/fund/expertFeeFundApply/index.vue @@ -86,7 +86,7 @@ <dict-tag :options="dict.type.sys_recordstatus" :value="scope.row.recordstatus" /> </template> </el-table-column> - <!-- <el-table-column + <!-- <el-table-column label="鐢宠閲戦" align="center" prop="amountrequested" @@ -97,22 +97,19 @@ <el-table-column label="鎿嶄綔" fixed="right" align="center" class-name="small-padding fixed-width" width="280px"> <template slot-scope="scope"> - <el-button v-if=" - scope.row.recordstatus == -1 || + <el-button v-if="scope.row.recordstatus == -1 || scope.row.recordstatus == 1 - " size="mini" type="text" icon="el-icon-edit" @click="handleup(scope.row)">涓婃姤</el-button> - <el-button v-if=" - scope.row.recordstatus == -1 || + " size="mini" type="text" icon="el-icon-edit" @click="handleup(scope.row)">涓婃姤</el-button> + <el-button v-if="scope.row.recordstatus == -1 || scope.row.recordstatus == 1 - " size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">淇敼</el-button> + " size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">淇敼</el-button> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetail(scope.row)">鏌ョ湅</el-button> <!-- v-hasPermi="['project:expretfund:edit']" --> - <el-button v-if=" - scope.row.recordstatus == -1 || + <el-button v-if="scope.row.recordstatus == -1 || scope.row.recordstatus == 1 - " size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">鍒犻櫎</el-button> + " size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">鍒犻櫎</el-button> <!-- v-hasPermi="['project:expretfund:delete']" --> - <!-- <el-button + <!-- <el-button size="mini" type="text" icon="el-icon-download" @@ -220,7 +217,7 @@ </el-select> </template> </el-table-column> - <el-table-column prop="itemcode" align="center" label="椤圭洰缂栧彿" show-overflow-tooltip="" v-if="false" > + <el-table-column prop="itemcode" align="center" label="椤圭洰缂栧彿" show-overflow-tooltip="" v-if="false"> </el-table-column> <el-table-column prop="servicesscopename" align="center" label="璐圭敤璇存槑" width="180"> <template slot-scope="scope"> @@ -250,7 +247,7 @@ <template slot-scope="scope"> <el-button type="primary" plain @click="ShowDetailDialog(scope, 'name')">{{ scope.row.beneficiaryname }}</el-button> - <!-- <el-select + <!-- <el-select filterable allow-create ref="getReportname" @@ -273,7 +270,7 @@ <template slot-scope="scope"> <el-button type="primary" plain @click="ShowDetailDialog(scope, 'unit')">{{ scope.row.unitname }}</el-button> - <!-- <el-select + <!-- <el-select v-model="scope.row.unitno" placeholder="鍗曚綅" clearable @@ -291,20 +288,18 @@ </el-table-column> <el-table-column prop="quantity" align="center" label="鏁伴噺" width="120" v-if="form.applytype == '3'"> <template slot-scope="scope"> - <el-input v-model="scope.row.quantity" placeholder="鏁伴噺" @blur=" - (val) => { + <el-input v-model="scope.row.quantity" placeholder="鏁伴噺" @blur="(val) => { sumTotalFee(scope.row); } - " /> + " /> </template> </el-table-column> <el-table-column prop="price" align="center" label="浠锋牸" width="120" v-if="form.applytype == '3'"> <template slot-scope="scope"> - <el-input v-model="scope.row.price" placeholder="浠锋牸" @blur=" - (val) => { + <el-input v-model="scope.row.price" placeholder="浠锋牸" @blur="(val) => { sumTotalFee(scope.row); } - " /> + " /> </template> </el-table-column> <el-table-column prop="remark" align="center" label="澶囨敞" width="210" v-if="form.applytype == '3'"> @@ -340,7 +335,7 @@ <el-button @click.native.prevent=" deleteRows(scope.row, scope.$index, fundDetailArr) - " type="text" size="small"> + " type="text" size="small"> 鍒犻櫎 </el-button> </template> @@ -362,7 +357,7 @@ <el-input v-model="form.taxedcost" placeholder="绋庡悗閲戦鍚堣" /> </el-form-item> </el-col> - <!-- + <!-- <el-col :span="7"> <el-form-item label="棰勬敮閲戦" prop="prepaidamount"> <el-input v-model="form.prepaidamount" placeholder="鐢宠閲戦" /> @@ -370,7 +365,7 @@ </el-col> --> </el-row> - <!-- + <!-- <el-row> <el-col :span="7"> <el-form-item label="OPO涓績绛惧瓧" prop="opochecker"> @@ -408,10 +403,9 @@ <el-col :span="12"> <el-form-item label="璐圭敤鐢宠闄勪欢" align="left" prop="annexbankcard"> <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="fileList" multiple :limit="5" - :headers="headers" :on-success=" - (response, file, fileList) => + :headers="headers" :on-success="(response, file, fileList) => uploadSccess(response, file, fileList) - " :on-preview="downFile" :disabled='dialogType == "detail"' :on-error="handleUploadError" + " :on-preview="downFile" :disabled='dialogType == "detail"' :on-error="handleUploadError" :on-exceed="handleExceed" :on-remove="remove" accept="image/*,.pdf"> <el-button :disabled='dialogType == "detail"' size="small" type="primary">涓婁紶</el-button> </el-upload> diff --git a/src/views/project/travelexpenseslist/index.vue b/src/views/project/travelexpenseslist/index.vue index 5b40667..d70002b 100644 --- a/src/views/project/travelexpenseslist/index.vue +++ b/src/views/project/travelexpenseslist/index.vue @@ -67,35 +67,36 @@ <dict-tag :options="dict.type.sys_recordstatus" :value="scope.row.recordstatus" /> </template> </el-table-column> + <!-- <el-table-column label="鎶ラ攢浜虹被鍒�" width="120" align="center" prop="costtype"> <template slot-scope="scope"> <dict-tag :options="dict.type.sys_travelexpensebelong" :value="scope.row.costtype" /> </template> - </el-table-column> + </el-table-column>--> <el-table-column label="鐢宠鏃堕棿" width="120" align="center" prop="createTime"> <template slot-scope="scope"> <span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span> </template> </el-table-column> - <el-table-column label="鎶ラ攢浜�" width="120" align="center" prop="username"> - </el-table-column> + <el-table-column label="缁忓姙浜�" width="120" align="center" prop="username"> + </el-table-column><!-- <el-table-column label="鍑哄樊浜�" width="180" align="center" prop="travelers"> - </el-table-column> + </el-table-column>--> <el-table-column label="鎶ラ攢閲戦" width="120" align="center" prop="amountrequested"> </el-table-column> <el-table-column label="鍑哄樊浜嬬敱" align="center" width="280" prop="reason"> </el-table-column> - <el-table-column label="鑱旂郴鐢佃瘽" width="120" align="center" prop="phone"> + <!-- <el-table-column label="鑱旂郴鐢佃瘽" width="120" align="center" prop="phone"> </el-table-column> <el-table-column label="寮�鎴烽摱琛�" width="180" align="center" prop="depositbank"> </el-table-column> <el-table-column label="閾惰鍗″彿" width="180" align="center" prop="bankcardno"> </el-table-column> - <!-- <el-table-column label="鎶ラ攢鍚堣" align="center" prop="financechecher"/>--> + <el-table-column label="鎶ラ攢鍚堣" align="center" prop="financechecher"/>--> <!-- <el-table-column label="璐㈠姟瀹℃牳" width="120" align="center" prop="financechecher" /> --> <el-table-column label="鎹愮尞鑰�" width="120" align="center" prop="donorname"> </el-table-column> - <el-table-column label="鎿嶄綔" align="center" fixed="right" class-name="small-padding fixed-width" width="250"> + <el-table-column label="鎿嶄綔" align="center" fixed="right" class-name="small-padding fixed-width" width="300"> <template slot-scope="scope"> <el-button v-if="scope.row.recordstatus == -1 || scope.row.recordstatus == 1" size="mini" type="text" icon="el-icon-upload2" @click="handleup(scope.row)">涓婃姤</el-button> @@ -261,7 +262,7 @@ plain icon="el-icon-plus" size="mini" - @click="adddetailRow" + @click="addDetailRow" >鏂板涓�琛�</el-button > </el-col> @@ -444,8 +445,8 @@ </el-table-column> <el-table-column fixed="right" label="鎿嶄綔" align="center" width="120" v-if="dialogType == 'edit'"> <template slot-scope="scope"> - <el-button type="text" size="mini" @click="adddetailRow(scope.$index)">鏂板</el-button> - <el-button @click.native.prevent="deleteRow(scope.$index, rbDetails, scope.row) + <el-button type="text" size="mini" @click="addDetailRow(scope.$index)">鏂板</el-button> + <el-button @click.native.prevent="deleteDetailRow(scope.$index, rbDetails, scope.row) " type="text" size="small"> 鍒犻櫎 </el-button> @@ -523,8 +524,8 @@ </el-table-column> <el-table-column label="鎿嶄綔" align="center" width="100" v-if="dialogType == 'edit'"> <template slot-scope="scope"> - <el-button type="text" size="mini" @click="addpayeeRow(scope.$index)">鏂板</el-button> - <el-button @click.native.prevent="deleteRow2(scope.$index, rbPayees, scope.row) + <el-button type="text" size="mini" @click="addPayeeRow(scope.$index)">鏂板</el-button> + <el-button @click.native.prevent="deletePayeeRow(scope.$index, rbPayees, scope.row) " type="text" size="small"> 鍒犻櫎 </el-button> @@ -718,6 +719,10 @@ queryParams2: { persontype: null, arriveAddr: null, + }, + //鏌ヨ浠樻 + queryParamsPayee: { + rbid: null, }, // 琛ㄥ崟鍙傛暟 form: {}, @@ -1215,8 +1220,8 @@ this.fundflowList = []; this.form.username = this.defaultperson.nickName; this.form.userno = this.defaultperson.userName; - this.adddetailRow(); - this.addpayeeRow(); + this.addDetailRow(); + this.addPayeeRow(); this.open = true; this.title = "娣诲姞鎶ラ攢鐢宠"; }, @@ -1232,21 +1237,14 @@ this.form = response.data; this.fileList = this.form.annexfiles ? this.form.annexfiles.split(",").map(item => ({ url: item, name: item })) : [] this.form.recordstatus = response.data.recordstatus + ""; - this.open = true; - this.title = "淇敼鎶ラ攢鐢宠"; - let ids = response.data.id; + + let ids = response.data.id; //鑾峰彇鎶ラ攢鏄庣粏淇℃伅 getReimbursementdetaillist(ids).then((res) => { - if (res.data.length == 0) { - return; - } - this.rbDetails = res.data; - for (let i = 0; i < this.rbDetails.length; i++) { - // this.rbDetails[i].personname2 = res.data[i].personname; - } - + //瑙f瀽鍑哄樊鍦板潃 + /* for (let i = 0; i < this.rbDetails.length; i++) { this.rbDetails[i].index = i; this.rbDetails[i].searchAddress = { @@ -1255,23 +1253,26 @@ qu: this.rbDetails[i].traveltownname, }; } + */ //瀹炴椂鍚堣閲戦 - this.sumTotalFee(); + //this.sumTotalFee(); + }); - //鑾峰彇鎶ラ攢鎵撴淇℃伅 - let obj = { rbid: ids }; - listReimbursementpayee(obj).then((res) => { - if (res.rows.length == 0) { - return; - } - this.rbPayees = res.rows; - console.log("listReimbursementpayee", res.rows); - }); + //鑾峰彇鎶ラ攢鎵撴淇℃伅 + queryParamsPayee.rbid=response.data.id; + console.log("rbPayees11111 ", queryParamsPayee); + listReimbursementpayee(queryParamsPayee).then((res) => { + console.log("rbPayees", res); + this.rbPayees = res.data.rows; }); }); + //榛樿瀛樺湪涓�琛� - this.adddetailRow(); - this.addpayeeRow(); + this.addDetailRow(); + this.addPayeeRow(); + + this.open = true; + this.title = "淇敼鎶ラ攢鐢宠"; }, /** 鏌ョ湅鎸夐挳鎿嶄綔 */ @@ -1279,13 +1280,16 @@ this.dialogType = "detail"; this.reset(); const id = row.id || this.ids; + + getReimbursement(id).then((response) => { this.form = response.data; + //闄勪欢 this.fileList = this.form.annexfiles ? this.form.annexfiles.split(",").map(item => ({ url: item, name: item })) : [] + //瀹℃牳鐘舵�� this.form.recordstatus = response.data.recordstatus + ""; - this.open = true; - this.title = "鏌ョ湅鎶ラ攢鐢宠"; + let ids = response.data.id; let listFundflowparams = { fundid: row.id, @@ -1294,6 +1298,7 @@ listFundflow(listFundflowparams).then((res) => { this.fundflowList = res.rows; }); + //鎶ラ攢鏄庣粏 getReimbursementdetaillist(ids).then((res) => { this.rbDetails = res.data; for (let i = 0; i < this.rbDetails.length; i++) { @@ -1306,68 +1311,82 @@ } //this.sumTotalFee(); }); + + //璐︽埛 + getReimbursementpayeelist(ids).then((res) => { + this.rbPayees = res.data; + }); + }); + + this.open = true; + this.title = "鏌ョ湅鎶ラ攢鐢宠"; }, /** 鎻愪氦鎸夐挳 */ submitForm() { this.$refs["form"].validate((valid) => { if (valid) { - let indexErrTime = this.rbDetails.findIndex((item) => { - if (item.endtime && item.starttime) { - let d = this.$moment(item.endtime).diff(this.$moment(item.starttime), "d"); - if (d < 0) { - return true; - } else { - return false; - } - } else { - false; - } - }); + /** + let indexErrTime = this.rbDetails.findIndex((item) => { + if (item.endtime && item.starttime) { + let d = this.$moment(item.endtime).diff(this.$moment(item.starttime), "d"); + if (d < 0) { + return true; + } else { + return false; + } + } else { + false; + } + }); + + if (indexErrTime > -1) { + this.$message({ + message: "绗�" + (indexErrTime + 1) + "琛屽埌杈炬棩鏈熸棭浜庡嚭鍙戞棩鏈�", + type: "warning", + }); + return; + } + + let emptyStartTimeindex = this.rbDetails.findIndex( + (item) => item.starttime == null || item.starttime == undefined || item.starttime == "" + ); + + if (emptyStartTimeindex > -1) { + this.$message({ + message: "绗�" + (emptyStartTimeindex + 1) + "琛屽嚭鍙戞棩鏈熶负绌�", + type: "warning", + }); + return; + } + + let emptyEndTimeindex = this.rbDetails.findIndex( + (item) => item.endtime == null || item.endtime == undefined || item.endtime == "" + ); + + if (emptyEndTimeindex > -1) { + this.$message({ + message: "绗�" + (emptyEndTimeindex + 1) + "琛屽埌杈炬棩鏈熶负绌�", + type: "warning", + }); + return; + } - if (indexErrTime > -1) { - this.$message({ - message: "绗�" + (indexErrTime + 1) + "琛屽埌杈炬棩鏈熸棭浜庡嚭鍙戞棩鏈�", - type: "warning", - }); - return; - } - - let emptyStartTimeindex = this.rbDetails.findIndex( - (item) => item.starttime == null || item.starttime == undefined || item.starttime == "" - ); - - if (emptyStartTimeindex > -1) { - this.$message({ - message: "绗�" + (emptyStartTimeindex + 1) + "琛屽嚭鍙戞棩鏈熶负绌�", - type: "warning", - }); - return; - } - - let emptyEndTimeindex = this.rbDetails.findIndex( - (item) => item.endtime == null || item.endtime == undefined || item.endtime == "" - ); - - if (emptyEndTimeindex > -1) { - this.$message({ - message: "绗�" + (emptyEndTimeindex + 1) + "琛屽埌杈炬棩鏈熶负绌�", - type: "warning", - }); - return; - } - + //璐圭敤褰掑睘 let belongArr = this.dict.type.sys_travelexpensebelong; let costtypeindex = belongArr.findIndex( (item) => this.form.costtype == item.value ); + if (costtypeindex > -1) { + this.form.costtypename = belongArr[costtypeindex].label; + } + */ + + //闄勪欢鏂囦欢澶勭悊 let list = this.fileList; if (list.length > 0) { this.form.annexfiles = list.map(item => item.url).join(","); - } - if (costtypeindex > -1) { - this.form.costtypename = belongArr[costtypeindex].label; } //鏍¢獙璇锋閲戦鍚堣鏄惁绛変簬鎶ラ攢鍗曢噾棰� @@ -1379,61 +1398,64 @@ return; } - + const rbDetails = [...this.rbDetails] + const rbPayees = [...this.rbPayees] if (this.form.id != null) { - //rbid涓昏〃Id,鏂逛究鍚庨潰鍏宠仈涓昏〃 - let rbid = this.form.id; - for (let i = 0; i < this.rbDetails.length; i++) { - this.rbDetails[i].rbid = rbid; - } updateReimbursement(this.form).then((response) => { - addOrupdateReimbursementdetaillist(this.rbDetails).then((response) => { - //鏇存柊鏀粯琛ㄤ俊鎭� - for (let i = 0; i < this.rbPayees.length; i++) { - this.rbPayees[i].rbid = rbid; - } - //addOrUpdateRBpayee(this.rbPayees); - for (let i = 0; i < this.rbPayees.length; i++) { - if (this.rbPayees[i].rbid != null) { - updateReimbursementpayee(this.rbPayees[i]); - } else { - addReimbursementpayee(this.rbPayees[i]); - } - } - this.$modal.msgSuccess("淇敼鎴愬姛"); - this.open = false; - this.getList(); - }); - }).catch(err => { - console.log(err); - }) - } else { - this.form.recordstatus = -1; - const rbDetails = [...this.rbDetails] - const rbPayees = [...this.rbPayees] - addReimbursement(this.form).then((response) => { + //淇濆瓨鏄庣粏 for (let i = 0; i < rbDetails.length; i++) { - rbDetails[i].rbid = response.data; + if (rbDetails[i].rbid != null) { + updateReimbursementdetail(rbDetails[i]); + } else { + //rbid鍏宠仈涓昏〃Id + rbDetails[i].rbid = this.form.id; + addReimbursementdetail(rbDetails[i]); + } } - addOrupdateReimbursementdetaillist(rbDetails).then((response) => { - this.$modal.msgSuccess("鏂板鎴愬姛"); - this.open = false; - this.getList(); - listReimbursementdetailid().then((res) => { - let id = res.data; - for (let i = 0; i < rbDetails.length; i++) { - rbDetails[i].rbid = id; - addReimbursementdetail(rbDetails[i]); - } - for (let i = 0; i < rbPayees.length; i++) { - rbPayees[i].rbid = id; - } - //addOrUpdateRBpayee(rbPayees); - addReimbursementpayee(rbPayees); - }) - }) - }) + //淇濆瓨璐︽埛 + for (let i = 0; i < rbPayees.length; i++) { + if (rbPayees[i].rbid != null) { + updateReimbursementpayee(rbPayees[i]); + } else { + //rbid鍏宠仈涓昏〃Id + rbPayees[i].rbid = this.form.id; + addReimbursementpayee(rbPayees[i]); + } + } + + this.$modal.msgSuccess("鎶ラ攢鍗曚慨鏀规垚鍔�!"); + this.open = false; + this.getList(); + + }).catch(err => { + this.$modal.msgError("鎶ラ攢鍗曚繚瀛樺け璐ワ紒"); + }); + } + else { + this.form.recordstatus = -1; + addReimbursement(this.form).then((response) => { + //淇濆瓨鏄庣粏 + for (let i = 0; i < rbDetails.length; i++) { + //rbid鍏宠仈涓昏〃Id + rbDetails[i].rbid = response.data; + addReimbursementdetail(rbDetails[i]); + } + + //淇濆瓨璐﹀彿 + for (let i = 0; i < rbPayees.length; i++) { + //rbid鍏宠仈涓昏〃Id + rbPayees[i].rbid = id; + addReimbursementpayee(rbPayees[i]); + } + + this.$modal.msgSuccess("鎶ラ攢鍗曚慨鏀规垚鍔�!"); + this.open = false; + this.getList(); + + }).catch(err => { + this.$modal.msgError("鎶ラ攢鍗曚繚瀛樺け璐ワ紒"); + }); } } }); @@ -1473,7 +1495,7 @@ }, //鏂板涓�琛� - adddetailRow(rowIndex) { + addDetailRow(rowIndex) { let rowData = { //index: this.rbDetails.length, searchAddress: { @@ -1523,7 +1545,7 @@ } }, - addpayeeRow(rowIndex) { + addPayeeRow(rowIndex) { let rowData = { id: null, personType: null, @@ -1546,7 +1568,7 @@ } }, - deleteRow(index, rows, row) { + deleteDetailRow(index, rows, row) { this.$confirm("鏄惁纭鍒犻櫎?", "鎻愮ず", { confirmButtonText: "纭畾", cancelButtonText: "鍙栨秷", @@ -1573,7 +1595,7 @@ }); }, - deleteRow2(index, rows, row) { + deletePayeeRow(index, rows, row) { this.$confirm("鏄惁纭鍒犻櫎?", "鎻愮ず", { confirmButtonText: "纭畾", cancelButtonText: "鍙栨秷", -- Gitblit v1.9.3