| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="报销日期" prop="createTime"> |
| | | <el-date-picker format="yyyy-MM-dd" value-format="yyyy-MM-dd" v-model="value1" type="daterange" @blur="onpick" |
| | | range-separator="至" start-placeholder="报销开始日期" end-placeholder="报销结束日期" @keyup.enter.native="handleQuery"> |
| | | <el-form-item label="报销日期" prop="applyTime"> |
| | | <el-date-picker format="yyyy-MM-dd" value-format="yyyy-MM-dd" v-model="value1" type="daterange" |
| | | @change="selecttime" range-separator="至" start-placeholder="报销开始日期" end-placeholder="报销结束日期" |
| | | @keyup.enter.native="handlQuery"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="审核状态" prop="recordstatus"> |
| | | <el-input v-model="queryParams.recordstatus" placeholder="请选择审核状态" clearable size="small" v-if="0" |
| | |
| | | <el-option v-for="dict in dict.type.sys_recordstatus" :key="dict.value" :label="dict.label" |
| | | :value="dict.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item label="捐献者" prop="name"> |
| | | <el-input v-model="queryParams.donorname" placeholder="请输入捐献者姓名" clearable size="small" |
| | | @keyup.enter.native="handleQuery" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | |
| | | <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
| | | </el-row> |
| | | |
| | | <el-table :row-class-name="rowClassName" v-loading="loading" :data="reimbursementList" @selection-change="handleSelectionChange" > |
| | | <el-table :row-class-name="rowClassName" v-loading="loading" :data="reimbursementList" |
| | | @selection-change="handleSelectionChange"> |
| | | <!-- <el-table-column type="selection" width="55" align="center" /> |
| | | <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 label="申请时间" width="150" align="center" prop="createTime"> |
| | | </el-table-column>--> |
| | | <el-table-column label="申请时间" width="120" align="center" prop="applyTime"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span> |
| | | <span>{{ parseTime(scope.row.applyTime, "{y}-{m}-{d}") }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="审核状态" align="center" prop="recordstatus" width="160"> |
| | | <el-table-column label="审核状态" align="center" prop="recordstatus" width="140"> |
| | | <template slot-scope="scope"> |
| | | <dict-tag :options="dict.type.sys_recordstatus" :value="scope.row.recordstatus" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="经办人" width="150" align="center" prop="username" /> |
| | | <el-table-column label="材料预审状态" width="140" align="center" prop="checkstatus"> |
| | | <template slot-scope="scope"> |
| | | <dict-tag :options="dict.type.sys_stage_type" :value="scope.row.checkstatus" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="经办人" width="100" align="center" prop="username" /> |
| | | <!-- |
| | | <el-table-column label="出差人" width="180" align="center" prop="travelers"> |
| | | </el-table-column>--> |
| | | <el-table-column label="报销金额" width="150" align="center" prop="amountrequested"> |
| | | <el-table-column label="报销金额" width="120" align="center" prop="amountrequested"> |
| | | </el-table-column> |
| | | <el-table-column label="所属组别" width="150" align="center" prop="deptmentname" /> |
| | | <el-table-column label="组长" width="150" align="center" prop="managername" /> |
| | | <el-table-column label="所属组别" width="120" align="center" prop="deptmentname" /> |
| | | <el-table-column label="组长" width="100" align="center" prop="managername" /> |
| | | <el-table-column label="出差事由" align="center" prop="reason" /> |
| | | <!-- <el-table-column label="联系电话" width="120" align="center" prop="phone"> |
| | | </el-table-column> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="报销合计" align="center" prop="financechecher"/>--> |
| | | <!-- <el-table-column label="财务审核" width="120" align="center" prop="financechecher" /> --> |
| | | <el-table-column label="捐献者" width="150" align="center" prop="donorname" /> |
| | | <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width"> |
| | | <el-table-column label="捐献者" width="100" align="center" prop="donorname" /> |
| | | <el-table-column label="操作" align="center" fixed="right" width="300" class-name="small-padding fixed-width"> |
| | | <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> |
| | | <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> |
| | | <el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetail(scope.row)">查看</el-button> |
| | | <el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row)">查看</el-button> |
| | | <!-- v-hasPermi="['project:funddetail:edit']" --> |
| | | <el-button size="mini" type="text" icon="el-icon-download" @click="gettable(scope.row)"> |
| | | 下载 |
| | | </el-button> |
| | | <!-- v-hasPermi="['project:funddetail:edit']" --> |
| | | <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> |
| | | @click="handleDelete(scope.row)"><span class="button-delete"><i |
| | | class="el-icon-delete"></i>删除</span></el-button> |
| | | <!-- v-hasPermi="['project:funddetail:remove']" --> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" align="center" width="120" label="功能" v-if="false"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="mini" v-if="scope.row.uploadStates == 1">线下已报销</el-button> |
| | | <el-button size="mini" type="success" v-else-if="scope.row.uploadStates == 0" |
| | | @click="Dooffline('1', scope.row)">线下报销</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | @close="reset"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="120px"> |
| | | <el-row><el-col :span="5"> |
| | | <el-form-item label="申请日期" prop="createTime"> |
| | | <el-date-picker style="width: 100%" v-model="form.createTime" type="date" value-format="yyyy-MM-dd HH:mm:ss" |
| | | placeholder="申请日期"> |
| | | <el-form-item label="申请日期" prop="applyTime"> |
| | | <el-date-picker style="width: 100%" v-model="form.applyTime" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss" placeholder="申请日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="trafficexpense" label="交通费" align="center" width="80"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.trafficexpense" placeholder="交通费" @blur="val => { |
| | | sumRowFee(scope.row); |
| | | } |
| | | " /> |
| | | <el-input v-model="scope.row.trafficexpense" placeholder="交通费" @blur=" |
| | | val => { |
| | | sumRowFee(scope.row); |
| | | } |
| | | " /> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- |
| | |
| | | --> |
| | | <el-table-column prop="hotelexpense" label="住宿费" align="center" width="80"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.hotelexpense" placeholder="住宿费" @blur="val => { |
| | | sumRowFee(scope.row); |
| | | } |
| | | " /> |
| | | <el-input v-model="scope.row.hotelexpense" placeholder="住宿费" @blur=" |
| | | val => { |
| | | sumRowFee(scope.row); |
| | | } |
| | | " /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column prop="foodexpenses" label="餐费报销" align="center" width="80"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.foodexpenses" placeholder="伙食费报销" @blur="val => { |
| | | sumRowFee(scope.row); |
| | | } |
| | | " /> |
| | | <el-input v-model="scope.row.foodexpenses" placeholder="伙食费报销" @blur=" |
| | | val => { |
| | | sumRowFee(scope.row); |
| | | } |
| | | " /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="foodallowance" label="伙食补助" align="center" width="80"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.foodallowance" placeholder="伙食费补助" @blur="val => { |
| | | sumRowFee(scope.row); |
| | | } |
| | | " /> |
| | | <el-input v-model="scope.row.foodallowance" placeholder="伙食费补助" @blur=" |
| | | val => { |
| | | sumRowFee(scope.row); |
| | | } |
| | | " /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="otherexpense" label="公杂费补助" align="center" width="80"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.otherexpense" placeholder="杂费" @blur="val => { |
| | | sumRowFee(scope.row); |
| | | } |
| | | " /> |
| | | <el-input v-model="scope.row.otherexpense" placeholder="杂费" @blur=" |
| | | val => { |
| | | sumRowFee(scope.row); |
| | | } |
| | | " /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column prop="otherfeeamount" label="其他费用" align="center" width="90"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.otherfeeamount" placeholder="其他费用" @blur="val => { |
| | | sumRowFee(scope.row); |
| | | } |
| | | " /> |
| | | <el-input v-model="scope.row.otherfeeamount" placeholder="其他费用" @blur=" |
| | | val => { |
| | | sumRowFee(scope.row); |
| | | } |
| | | " /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="departure" slot="" label="其他费用说明" align="center" width="120"> |
| | |
| | | <!-- <file-upload ref="fileUpload" :fileType=fileType :limit="1" :on-success="handleUploadSuccess"></file-upload> --> |
| | | <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="fileList" multiple |
| | | :limit="20" :headers="headers" :on-success="(response, file, fileList) => |
| | | uploadSccess(response, file, fileList) |
| | | uploadSccess(response, file, fileList) |
| | | " :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> |
| | |
| | | import { getUser, getUserProfile } from "@/api/system/user"; |
| | | import { treeselect } from "@/api/system/dept"; |
| | | import { getSubsidy } from "@/api/project/travelcity"; |
| | | import { addorupdateFund } from "@/api/project/fund"; |
| | | import { listReportname, listUser } from "@/api/project/organization"; |
| | | import { getToken } from "@/utils/auth"; |
| | | export default { |
| | |
| | | "sys_recordstatus", |
| | | "sys_travelexpensebelong", |
| | | "sys_traffictype", |
| | | "sys_area_name" |
| | | "sys_area_name", |
| | | "sys_stage_type" |
| | | ], |
| | | data() { |
| | | return { |
| | |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | itemname: null, |
| | | itemtype: null, |
| | | costtype: null, |
| | | donorname: null, |
| | | starttime: null, |
| | | remark: null, |
| | | departure: null, |
| | | endtime: null, |
| | | destination: null, |
| | | uploadFlag: null, |
| | | uploadTime: null, |
| | | // orderByColumn: "createTime", |
| | | orderByColumn: "id", |
| | | isAsc: "desc" |
| | | }, |
| | | queryParams2: { |
| | |
| | | }, |
| | | |
| | | methods: { |
| | | |
| | | |
| | | handleUploadError() { }, |
| | | |
| | | remove(file) { |
| | |
| | | |
| | | handleExceed() { |
| | | this.$message.error(`上传文件数量不能超过 ${5} 个!`); |
| | | }, |
| | | Dooffline(a, value) { |
| | | value.uploadStates = 1; |
| | | value.notes = "线下已报销"; |
| | | addorupdateFund(value).then(res => { |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("记录成功"); |
| | | } else { |
| | | this.$modal.msgError(res.msg); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | //文件上传成功回调 |
| | |
| | | this.$modal.msgSuccess(response.msg); |
| | | this.fileList.push({ name: response.fileName, url: response.fileName }); |
| | | } else { |
| | | console.log(response.msg);; |
| | | console.log(response.msg); |
| | | } |
| | | }, |
| | | |
| | |
| | | if (tempStr == "杭州") { |
| | | row.otherexpense = ""; |
| | | } else if ( |
| | | tempStr == "杭州-桐庐" || |
| | | tempStr == "杭州-建德" || |
| | | tempStr == "杭州-淳安" |
| | | tempStr.includes("桐庐") || |
| | | tempStr.includes("建德") || |
| | | tempStr.includes("淳安") |
| | | ) { |
| | | row.otherexpense = (parseInt(row.days) * 60).toString(); |
| | | } else { |
| | |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | onpick(e) { |
| | | // console.log(e,this.value1) |
| | | }, |
| | | |
| | | |
| | | gettable(e) { |
| | | const id = e.id; |
| | | getdownload(e.id).then(res => { |
| | |
| | | var aEle = document.createElement("a"); |
| | | aEle.href = |
| | | curWWWPath.substring(0, pos) + urlBase + fileUrl["downloadUrl"]; |
| | | aEle.click(); |
| | | console.log(aEle.href); |
| | | // 添加Authorization头部 |
| | | fetch(aEle.href, { |
| | | headers: this.headers |
| | | }) |
| | | .then(response => { |
| | | // 将文件下载链接作为blob对象进行下载 |
| | | return response.blob(); |
| | | }) |
| | | .then(blob => { |
| | | const url = window.URL.createObjectURL(new Blob([blob])); |
| | | console.log(url); |
| | | const link = document.createElement("a"); |
| | | link.href = url; |
| | | const name = fileUrl["downloadName"]; |
| | | link.setAttribute("download", name); // 替换file.pdf为实际的文件名 |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | link.parentNode.removeChild(link); |
| | | }); |
| | | }); |
| | | |
| | | // downloadconfirmationinfo(id).then((response) => { |
| | | // var fileUrl = response; |
| | | // //获取当前网址 |
| | | // var urlBase = process.env.VUE_APP_BASE_API; |
| | | // var curWWWPath = window.document.location.href; |
| | | // var pos = curWWWPath.indexOf(window.document.location.pathname); |
| | | // // 创建a标签 |
| | | // var aEle = document.createElement("a"); |
| | | // aEle.href = |
| | | // curWWWPath.substring(0, pos) + urlBase + fileUrl["downloadUrl"]; |
| | | // aEle.click(); |
| | | // }); |
| | | }, |
| | | |
| | | /** 查询报销申请列表 */ |
| | |
| | | /** 删除按钮操作 */ |
| | | handleDelete(row) { |
| | | const ids = row.id || this.ids; |
| | | console.log(ids); |
| | | this.$modal |
| | | .confirm("是否确认删除该条记录?") |
| | | .then(function () { |
| | |
| | | //明显提示审批退回记录 |
| | | rowClassName({ row, column, rowIndex, columnIndex }) { |
| | | //此判断为最后三行 |
| | | if (row.backflowlevel==199) { |
| | | return "addClassva"; |
| | | if (row.recordstatus == -1 && row.backflowlevel != null) { |
| | | return "error-row"; |
| | | } |
| | | }, |
| | | |
| | | return ""; |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | <!-- <style scoped> --> |
| | | <!-- 不可加scoped,会独立样式element访问不到 --> |
| | | <style> |
| | | <style lang="scss" scoped> |
| | | .addClassva { |
| | | /* background: #10aec2; */ |
| | | background:#10aec2!important; |
| | | background: #e8f4ff !important; |
| | | /* color:whitesmoke; */ |
| | | } |
| | | |
| | | .button-delete { |
| | | color: rgb(236, 69, 69); |
| | | } |
| | | |
| | | ::v-deep.el-table .error-row { |
| | | background: #fcebeb; |
| | | } |
| | | </style> |