资金执行率导出

master
lion 3 months ago
parent 4bbd9f2f6f
commit 1d42d6b0b2

@ -1,28 +1,31 @@
import request from '@/utils/request'
function customParamsSerializer(params) {
let result = ''
for (const key in params) {
let result = '';
for (let key in params) {
if (params.hasOwnProperty(key)) {
if (Array.isArray(params[key])) {
params[key].forEach((item, index) => {
if (item instanceof Array) {
item.forEach((item1, index1) => {
result += `${key}[${index}][${index1}]=${item1}&`
})
} else if (typeof item === 'object') {
for (const key1 in item) {
result += `${key}[${index}][${key1}]=${item[key1]}&`
params[key].forEach((item,index) => {
if(item.key){
result += `${key}[${index}][key]=${item.key}&${key}[${index}][op]=${item.op}&${key}[${index}][value]=${item.value}&`;
}else{
result +=`${key}[${index}]=${item}&`
}
});
}else if( typeof params[key] === 'object' ){
for(var k in params[key]){
result +=`${key}[${k}]=${params[key][k]}&`
}
// result += `${key}[${index}][key]=${item.key}&${key}[${index}][op]=${item.op}&${key}[${index}][value]=${item.value}&`;
})
} else {
result += `${key}=${params[key]}&`
result += `${key}=${params[key]}&`;
}
}
}
return result.slice(0, -1)
// result += 'token='+getToken()
console.log("result",result, result.slice(0, -1))
return result.slice(0, -1);
}
export function endIndex(params, noloading = false) {
return request({

@ -0,0 +1,125 @@
import axios from "axios";
import { getToken } from "@/utils/auth";
import { Loading, Message } from "element-ui";
/*
* @params {string} url 请求拼接地址
* @params {object} info 请求参数params或data
*/
let loading;
function customParamsSerializer(params) {
let result = '';
for (let key in params) {
if (params.hasOwnProperty(key)) {
if (Array.isArray(params[key])) {
params[key].forEach((item,index) => {
if(item.key){
result += `${key}[${index}][key]=${item.key}&${key}[${index}][op]=${item.op}&${key}[${index}][value]=${item.value}&`;
}else{
result +=`${key}[${index}]=${item}&`
}
});
}else if( typeof params[key] === 'object' ){
for(var k in params[key]){
result +=`${key}[${k}]=${params[key][k]}&`
}
} else {
result += `${key}=${params[key]}&`;
}
}
}
// result += 'token='+getToken()
console.log("result",result, result.slice(0, -1))
return result.slice(0, -1);
}
export async function download(url, method = "get", info, filename) {
loading = Loading.service({
lock: true,
background: "rgba(0,0,0,0.4)",
text: "文件正在生成中...",
});
let options = {
baseURL: process.env.VUE_APP_BASE_API,
url,
method,
responseType: "blob",
timeout: 10000,
headers: {
Accept: "application/json",
"Content-Type": "application/json; charset=utf-8",
withCredentials: true,
Authorization: "Bearer " + getToken(),
},
};
if (method === "get") {
// options.url = url+'?'+customParamsSerializer(info)
Object.defineProperty(options, "params", {
value: info,
enumerable: true,
writable: false,
});
}
if (method === "post") {
Object.defineProperty(options, "data", {
value: info,
enumerable: true,
writable: false,
});
}
try {
if(options.method==='get'){
options.paramsSerializer = customParamsSerializer
}
console.log("options",options)
const response = await axios.request(options);
loading.close();
// 提取文件名
if (!filename) {
filename =
response.headers["content-disposition"]?.match(/filename=(.*)/)[1] ||
"";
}
// 将二进制流转为blob
const blob = new Blob([response.data], {
type: "application/octet-stream",
});
if (typeof window.navigator.msSaveBlob !== "undefined") {
// 兼容IEwindow.navigator.msSaveBlob以本地方式保存文件
window.navigator.msSaveBlob(blob, decodeURI(filename));
} else {
// 创建新的URL并指向File对象或者Blob对象的地址
const blobURL = window.URL.createObjectURL(blob);
// 创建a标签用于跳转至下载链接
const tempLink = document.createElement("a");
tempLink.style.display = "none";
tempLink.href = blobURL;
tempLink.setAttribute("download", decodeURI(filename));
// 兼容某些浏览器不支持HTML5的download属性
if (typeof tempLink.download === "undefined") {
tempLink.setAttribute("target", "_blank");
}
// 挂载a标签
document.body.appendChild(tempLink);
tempLink.click();
document.body.removeChild(tempLink);
// 释放blob URL地址
window.URL.revokeObjectURL(blobURL);
}
} catch (err) {
console.error(err);
loading.close();
Message({
type: "error",
message: err,
});
}
}

@ -36,7 +36,9 @@
<!-- 已执行项目表格 -->
<el-card class="table-container mb-4">
<div class="section-title">已执行项目财务付款确认
<div class="section-title" style="display:flex;align-items:center;justify-content:space-between;">
<span>已执行项目财务付款确认</span>
<el-button type="primary" size="mini" @click="exportEnd"></el-button>
</div>
<xy-table ref="xyTable" :list="endList" :table-item="table" :height="300">
<template v-slot:status>
@ -66,7 +68,9 @@
<!-- 未执行完项目表格 -->
<el-card class="table-container">
<div class="section-title">未执行完项目流程中/预算流转中
<div class="section-title" style="display:flex;align-items:center;justify-content:space-between;">
<span>未执行完项目流程中/预算流转中</span>
<el-button type="primary" size="mini" @click="exportPart"></el-button>
</div>
<xy-table ref="xyTable" :list="partList" :table-item="table" :height="300">
<template v-slot:status>
@ -112,6 +116,7 @@ import {
} from '@/api/departmentProgress'
// import detail from '../components/detail.vue'
import ContractDetailDrawer from '@/components/contractIntegration/index.vue'
import { getToken } from '@/utils/auth'
export default {
name: 'DepartmentProgressDetail',
components: {
@ -170,6 +175,7 @@ export default {
}, {
prop: 'status',
label: '当前状态',
export:'funds_count_text',
width: 120
}]
}
@ -199,6 +205,7 @@ export default {
this.getEndIndex(this.row.plan_department_id)
},
async getEndIndex(id) {
const res = await endIndex({
department_id: id,
page: this.endSelect.page,
@ -206,6 +213,8 @@ export default {
})
this.endList = res.list.data
this.endTotal = res.list.total
},
async getPartIndex(id) {
const res = await partIndex({
@ -240,6 +249,18 @@ export default {
} else {
return (num / 10000).toFixed(2) + '万元' // 1
}
},
exportEnd() {
const name = this.row?(this.row.plan_department?this.row.plan_department.name:''):''
const file_name = name+'已执行项目(财务付款确认)'
const export_fields = 'export_fields[name]=项目名称&export_fields[department.name]=科室&export_fields[admin.name]=经办人&export_fields[money]=预算金额&export_fields[funds_count]=发起支付笔数&export_fields[contract_plan_act_sum]=已确认付款金额&export_fields[funds_count_text]=当前状态'
window.open(`${process.env.VUE_APP_BASE_API}/api/ht/contract/end-index?token=${getToken()}&is_export=1&page=1&page_size=999&department_id=${this.row.plan_department_id}&${export_fields}&file_name=${file_name}`, '_blank')
},
exportPart() {
const name = this.row?(this.row.plan_department?this.row.plan_department.name:''):''
const file_name = name+'未执行完项目'
const export_fields = 'export_fields[name]=项目名称&export_fields[department.name]=科室&export_fields[admin.name]=经办人&export_fields[money]=预算金额&export_fields[funds_count]=发起支付笔数&export_fields[contract_plan_act_sum]=已确认付款金额&export_fields[funds_count_text]=当前状态'
window.open(`${process.env.VUE_APP_BASE_API}/api/ht/contract/part-index?token=${getToken()}&is_export=1&page=1&page_size=999&department_id=${this.row.plan_department_id}&${export_fields}&file_name=${file_name}`, '_blank')
}
}
}

Loading…
Cancel
Save