Commit f9c79059c2edec9efa82a04ff18c7527bcb0688f
1 parent
5f530adf
Exists in
master
feat:自定义资金日报复核
Showing
2 changed files
with
295 additions
and
1 deletions
Show diff stats
frontend/front/src/router/index.js
... | ... | @@ -110,7 +110,6 @@ export const constantRoutes = [ |
110 | 110 | props: true, |
111 | 111 | meta: { title: '应用内容' }, |
112 | 112 | }, |
113 | - | |
114 | 113 | { |
115 | 114 | path: '/templatePreview/:templateKey/:parameterqQuerys/:rkey', |
116 | 115 | name: 'templatePreview', |
... | ... | @@ -120,6 +119,15 @@ export const constantRoutes = [ |
120 | 119 | props: true, |
121 | 120 | meta: { title: '查询数据' }, |
122 | 121 | }, |
122 | + { | |
123 | + path: '/reviewOfFinancialDailyReport', | |
124 | + name: 'reviewOfFinancialDailyReport', | |
125 | + component: () => | |
126 | + import('@/views/pages/reviewOfFinancialDailyReport/index.vue'), | |
127 | + hidden: true, | |
128 | + props: true, | |
129 | + meta: { title: '资金日报复核' }, | |
130 | + }, | |
123 | 131 | ], |
124 | 132 | }, |
125 | 133 | ... | ... |
frontend/front/src/views/pages/reviewOfFinancialDailyReport/index.vue
0 → 100644
... | ... | @@ -0,0 +1,286 @@ |
1 | +<template> | |
2 | + <div class='container'> | |
3 | + <el-container> | |
4 | + <el-header> | |
5 | + <div class="title"> | |
6 | + <span>资金复核日报</span> | |
7 | + <el-date-picker v-model="days" value-format="yyyy-MM-dd" type="date" placeholder="选择日期" | |
8 | + @change="handleChangeDate"> | |
9 | + </el-date-picker> | |
10 | + <!-- {{ days }} --> | |
11 | + </div> | |
12 | + </el-header> | |
13 | + <el-main> | |
14 | + <el-table :data="tableData" border show-summary :default-sort="{ prop: 'wdailyfundsfdate', order: '' }" | |
15 | + :summary-method="getSummaries" :span-method="spanMethod" :cell-style="cellStyleMethod" | |
16 | + style="width: 100%; margin-top: 20px"> | |
17 | + <!-- <el-table-column type="selection" width="55"></el-table-column> --> | |
18 | + <el-table-column prop="wdailyfundsforgtype" align="center" label="公司类型"></el-table-column> | |
19 | + <el-table-column prop="wdailyfundsfdate" align="center" sortable label="日期"></el-table-column> | |
20 | + <el-table-column prop="wdailyfundsforgname" align="center" label="公司"> </el-table-column> | |
21 | + <el-table-column prop="wdailyfundsfyesterdayaccountbalance" align="center" label="昨日余额"> | |
22 | + </el-table-column> | |
23 | + <el-table-column prop="wdailyfundsftodayaccountbalance" align="center" label="今日余额"> </el-table-column> | |
24 | + <el-table-column prop="wdailyfundsfaccountbalancedifference" align="center" label="差额(今日-昨日)"> | |
25 | + </el-table-column> | |
26 | + <el-table-column prop="wdailyfundsftodaynetcashflow" align="center" label="净现金流"> </el-table-column> | |
27 | + <el-table-column prop="wdailyfundsftodayfreezing" align="center" label="冻结金额"> </el-table-column> | |
28 | + <el-table-column prop="wdailyfundsftodayfreezeamount" align="center" label="冻结金额上限"> </el-table-column> | |
29 | + <el-table-column prop="wdailyfundsfinspstatusname" align="center" label="复核"> </el-table-column> | |
30 | + <el-table-column prop="" align="center" label="复核人"> </el-table-column> | |
31 | + <el-table-column prop="" align="center" label="填报人"> </el-table-column> | |
32 | + </el-table> | |
33 | + </el-main> | |
34 | + <el-footer> | |
35 | + <div class="" style="display: flex;justify-content: center;" v-if="tableData.length"> | |
36 | + <el-button type="primary" style="width: 200px;" @click="handleReview"> | |
37 | + 复核完成 | |
38 | + </el-button> | |
39 | + </div> | |
40 | + </el-footer> | |
41 | + </el-container> | |
42 | + <!-- <el-table-column prop="amount3" label="备注"> </el-table-column> --> | |
43 | + <!-- <div slot="append" style="display:flex;"> | |
44 | + <div class="sum_footer"> | |
45 | + <div class="sum_footer_unit center" style="width:160px;"> | |
46 | + 合计(大写) | |
47 | + </div> | |
48 | + <div class="sum_footer_unit" style="width:350px;">11111</div> | |
49 | + </div> | |
50 | + <div class="sum_footer"> | |
51 | + <div class="sum_footer_unit center" style="width:120px;"> | |
52 | + 合计(小写) | |
53 | + </div> | |
54 | + <div class="sum_footer_unit" style="flex-grow:3">2222</div> | |
55 | + </div> | |
56 | + </div> --> | |
57 | + </div> | |
58 | +</template> | |
59 | + | |
60 | +<script> | |
61 | +export default { | |
62 | + data() { | |
63 | + return { | |
64 | + tableData: [], | |
65 | + days: new Date(Date.now() - 86400000).toISOString().split('T')[0] | |
66 | + }; | |
67 | + }, | |
68 | + mounted() { | |
69 | + this.initData(); | |
70 | + }, | |
71 | + methods: { | |
72 | + async initData() { | |
73 | + let params = { | |
74 | + "templateId": "1810231230602571776", | |
75 | + "queryFilter": { | |
76 | + "pageBean": { | |
77 | + "page": 1, | |
78 | + "pageSize": 999, | |
79 | + "total": 1 | |
80 | + }, | |
81 | + "querys": [ | |
82 | + { | |
83 | + "property": "t.F_date", | |
84 | + "value": this.days | |
85 | + }, | |
86 | + ], | |
87 | + "sorter": [ | |
88 | + { | |
89 | + "property": "t.F_date", | |
90 | + "direction": "DESC" | |
91 | + }, | |
92 | + { | |
93 | + "property": "t.F_org_type", | |
94 | + "direction": "DESC" | |
95 | + }, | |
96 | + { | |
97 | + "property": "t.F_org_name", | |
98 | + "direction": "DESC" | |
99 | + }, | |
100 | + { | |
101 | + "property": "t.F_org_id", | |
102 | + "direction": "DESC" | |
103 | + }, | |
104 | + { | |
105 | + "property": "t.F_insp_status_name", | |
106 | + "direction": "DESC" | |
107 | + } | |
108 | + ] | |
109 | + } | |
110 | + } | |
111 | + let data = await this.$requestConfig.getDataTemplateDataList(params); | |
112 | + this.tableData = data.rows; | |
113 | + // 添加小计行 | |
114 | + this.tableData = this.tableData.reduce((acc, cur, index) => { | |
115 | + acc.push(cur); | |
116 | + // 判断是否需要添加小计行 | |
117 | + if (cur.wdailyfundsforderno !== 'subtotal' && (index === this.tableData.length - 1 || this.tableData[index + 1].wdailyfundsforgtype !== cur.wdailyfundsforgtype)) { | |
118 | + const subtotalRow = { | |
119 | + wdailyfundsforderno: 'subtotal', | |
120 | + wdailyfundsforgtype: '小计', | |
121 | + wdailyfundsfyesterdayaccountbalance: 0, | |
122 | + wdailyfundsftodayaccountbalance: 0, | |
123 | + wdailyfundsfaccountbalancedifference: 0, | |
124 | + wdailyfundsftodaynetcashflow: 0, | |
125 | + wdailyfundsftodayfreezing: 0, | |
126 | + wdailyfundsftodayfreezeamount: 0, | |
127 | + }; | |
128 | + // 计算小计值 | |
129 | + this.tableData.forEach((item) => { | |
130 | + if (item.wdailyfundsforgtype === cur.wdailyfundsforgtype) { | |
131 | + subtotalRow.wdailyfundsfyesterdayaccountbalance += isNaN(item.wdailyfundsfyesterdayaccountbalance) ? 0 : item.wdailyfundsfyesterdayaccountbalance; | |
132 | + subtotalRow.wdailyfundsftodayaccountbalance += isNaN(item.wdailyfundsftodayaccountbalance) ? 0 : item.wdailyfundsftodayaccountbalance; | |
133 | + subtotalRow.wdailyfundsfaccountbalancedifference += isNaN(item.wdailyfundsfaccountbalancedifference) ? 0 : item.wdailyfundsfaccountbalancedifference; | |
134 | + subtotalRow.wdailyfundsftodaynetcashflow += isNaN(item.wdailyfundsftodaynetcashflow) ? 0 : item.wdailyfundsftodaynetcashflow; | |
135 | + subtotalRow.wdailyfundsftodayfreezing += isNaN(item.wdailyfundsftodayfreezing) ? 0 : item.wdailyfundsftodayfreezing; | |
136 | + subtotalRow.wdailyfundsftodayfreezeamount += isNaN(item.wdailyfundsftodayfreezeamount) ? 0 : item.wdailyfundsftodayfreezeamount; | |
137 | + } | |
138 | + }); | |
139 | + subtotalRow.wdailyfundsfyesterdayaccountbalance = (subtotalRow.wdailyfundsfyesterdayaccountbalance.toFixed(2)); | |
140 | + subtotalRow.wdailyfundsftodayaccountbalance = (subtotalRow.wdailyfundsftodayaccountbalance.toFixed(2)); | |
141 | + subtotalRow.wdailyfundsfaccountbalancedifference = (subtotalRow.wdailyfundsfaccountbalancedifference.toFixed(2)); | |
142 | + subtotalRow.wdailyfundsftodaynetcashflow = (subtotalRow.wdailyfundsftodaynetcashflow.toFixed(2)); | |
143 | + subtotalRow.wdailyfundsftodayfreezing = (subtotalRow.wdailyfundsftodayfreezing.toFixed(2)); | |
144 | + subtotalRow.wdailyfundsftodayfreezeamount = (subtotalRow.wdailyfundsftodayfreezeamount.toFixed(2)); | |
145 | + acc.push(subtotalRow); | |
146 | + } | |
147 | + return acc; | |
148 | + }, []); | |
149 | + console.log('数据', JSON.parse(JSON.stringify(this.tableData))); | |
150 | + }, | |
151 | + handleChangeDate() { | |
152 | + this.initData(); | |
153 | + }, | |
154 | + getSummaries(param) { | |
155 | + const { columns, data } = param; | |
156 | + console.log('data', JSON.parse(JSON.stringify(data))); | |
157 | + const sums = []; | |
158 | + columns.forEach((column, index) => { | |
159 | + if (index === 0) { | |
160 | + sums[index] = '汇总'; | |
161 | + return; | |
162 | + } | |
163 | + const values = data.map(item => Number(item[column.property])); | |
164 | + if (!values.every(value => isNaN(value))) { | |
165 | + sums[index] = values.reduce((prev, curr) => { | |
166 | + const value = Number(curr); | |
167 | + if (!isNaN(value)) { | |
168 | + return prev + curr; | |
169 | + } else { | |
170 | + return prev; | |
171 | + } | |
172 | + }, 0); | |
173 | + sums[index] += ' .00'; | |
174 | + } else { | |
175 | + sums[index] = 'N/A'; | |
176 | + } | |
177 | + }); | |
178 | + // 可直接调接口获取后修改sums。 | |
179 | + // console.log("合计列",sums); | |
180 | + return sums; | |
181 | + }, | |
182 | + getSummaries(param) { | |
183 | + const { columns, data } = param; | |
184 | + const sums = []; | |
185 | + columns.forEach((column, index) => { | |
186 | + if (index === 0) { | |
187 | + sums[index] = '汇总'; | |
188 | + return; | |
189 | + } | |
190 | + const values = data | |
191 | + .filter(item => item.wdailyfundsforderno !== 'subtotal') // 过滤掉小计行 | |
192 | + .map(item => Number(item[column.property])); | |
193 | + if (!values.every(value => isNaN(value))) { | |
194 | + sums[index] = values.reduce((prev, curr) => { | |
195 | + const value = Number(curr); | |
196 | + if (!isNaN(value)) { | |
197 | + return prev + curr; | |
198 | + } else { | |
199 | + return prev; | |
200 | + } | |
201 | + }, 0); | |
202 | + sums[index] = sums[index].toFixed(2); | |
203 | + } else { | |
204 | + sums[index] = 'N/A'; | |
205 | + } | |
206 | + }); | |
207 | + // 可直接调接口获取后修改sums。 | |
208 | + // console.log("合计列",sums); | |
209 | + return sums; | |
210 | + }, | |
211 | + spanMethod({ row, column, rowIndex, columnIndex }) { | |
212 | + // console.log('row',JSON.parse(JSON.stringify(row))); | |
213 | + // console.log('column',JSON.parse(JSON.stringify(column))); | |
214 | + if (columnIndex === 0) { | |
215 | + // 第一列合并单元格 | |
216 | + if (row.wdailyfundsforderno === 'subtotal') { | |
217 | + // 小计行 | |
218 | + return { | |
219 | + rowspan: 1, | |
220 | + colspan: 1, | |
221 | + content: '小计' | |
222 | + }; | |
223 | + } else if (rowIndex > 0 && row.wdailyfundsforgtype === this.tableData[rowIndex - 1].wdailyfundsforgtype) { | |
224 | + return { | |
225 | + rowspan: 0, | |
226 | + colspan: 0 | |
227 | + }; | |
228 | + } else { | |
229 | + // 计算合并行数 | |
230 | + let rowspan = 1; | |
231 | + for (let i = rowIndex + 1; i < this.tableData.length; i++) { | |
232 | + if (row.wdailyfundsforgtype === this.tableData[i].wdailyfundsforgtype) { | |
233 | + rowspan++; | |
234 | + } else { | |
235 | + break; | |
236 | + } | |
237 | + } | |
238 | + return { | |
239 | + rowspan, | |
240 | + colspan: 1, | |
241 | + content: row.wdailyfundsforgtype | |
242 | + }; | |
243 | + } | |
244 | + } | |
245 | + | |
246 | + }, | |
247 | + cellStyleMethod({ row, column, rowIndex, columnIndex }) { | |
248 | + | |
249 | + }, | |
250 | + // 复核 | |
251 | + handleReview() { | |
252 | + console.log('一键复核', JSON.parse(JSON.stringify(this.tableData))); | |
253 | + }, | |
254 | + } | |
255 | +}; | |
256 | +</script> | |
257 | +<style lang='scss' scoped> | |
258 | +.container { | |
259 | + background: #fff; | |
260 | +} | |
261 | + | |
262 | +.title { | |
263 | + font-size: 28px; | |
264 | + display: flex; | |
265 | + justify-content: center; | |
266 | + align-items: center; | |
267 | +} | |
268 | + | |
269 | +.el-input { | |
270 | + line-height: 0; | |
271 | +} | |
272 | + | |
273 | +::v-deep .el-input__inner { | |
274 | + border: none; | |
275 | + font-size: 28px; | |
276 | +} | |
277 | + | |
278 | +.el-header { | |
279 | + text-align: center; | |
280 | + line-height: 60px; | |
281 | +} | |
282 | + | |
283 | +.el-footer { | |
284 | + width: 100%; | |
285 | +} | |
286 | +</style> | |
0 | 287 | \ No newline at end of file | ... | ... |