index.vue 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865
  1. <template>
  2. <div>
  3. <el-form :model="searchForm" ref="queryRef" @submit="getData">
  4. <el-row :gutter="10">
  5. <el-col :lg="8" :sm="6">
  6. <el-form-item label="企业名称搜索">
  7. <el-input v-model="searchForm.enterpriseName" placeholder="请输入企业名称" clearable/>
  8. </el-form-item>
  9. </el-col>
  10. <el-col :lg="8" :sm="6">
  11. <el-form-item>
  12. <el-button type="primary" @click="getData">搜索</el-button>
  13. <el-button>重置</el-button>
  14. </el-form-item>
  15. </el-col>
  16. </el-row>
  17. </el-form>
  18. <el-button plain @click="dialogFormVisible = true" type="primary">
  19. 选择查看的数据
  20. </el-button>
  21. <el-button plain @click="exportToExcel" type="warning">导出当前页为 Excel</el-button>
  22. <el-table v-show="isShow" id="content-to-pdf" :data="tableData" max-height="650" style="width: 100%;" border show-summary
  23. :summary-method="getSummaries">
  24. <el-table-column prop="enterpriseName" label="企业名称" width="300" fixed/>
  25. <template v-for="(col, index) in needShow" :key="index">
  26. <el-table-column v-if="col.includes('a')" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  27. </template>
  28. <template v-if="needShow.filter(key => key.includes('b')).length >= 2">
  29. <el-table-column label="企业产值" header-align="center">
  30. <template v-for="(col, index) in needShow" :key="index">
  31. <el-table-column v-if="col.includes('b')" sortable :prop="col" :label="colMap.get(col)" width="180" align="right">
  32. <template #default="{row}">
  33. {{toFixedWithoutRounding(row[col],2)}}
  34. </template>
  35. </el-table-column>
  36. </template>
  37. </el-table-column>
  38. </template>
  39. <template v-if="needShow.filter(key => key.includes('b')).length < 2">
  40. <template v-for="(col, index) in needShow" :key="index">
  41. <el-table-column v-if="col.includes('b')" sortable :prop="col" :label="colMap.get(col)" width="180" align="right">
  42. <template #default="{row}">
  43. {{toFixedWithoutRounding(row[col],2)}}
  44. </template>
  45. </el-table-column>
  46. </template>
  47. </template>
  48. <template v-if="needShow.filter(key => key.includes('b')).length >= 2">
  49. <el-table-column label="当前显示产值合计" width="180" align="right" prop="b5">
  50. <template #default="{row}">
  51. {{
  52. needShow.filter(key => key.includes('b')).reduce((acc, cur) => Number(acc) + Number(row[cur]), 0).toFixed(2)
  53. }}
  54. </template>
  55. </el-table-column>
  56. </template>
  57. <template v-if="needShow.filter(key => key.includes('c')).length >= 2">
  58. <el-table-column label="企业税收" header-align="center">
  59. <template v-for="(col, index) in needShow" :key="index">
  60. <el-table-column v-if="col.includes('c')" sortable :prop="col" :label="colMap.get(col)" width="180" align="right">
  61. <template #default="{row}">
  62. {{toFixedWithoutRounding(row[col],2)}}
  63. </template>
  64. </el-table-column>
  65. </template>
  66. </el-table-column>
  67. </template>
  68. <template v-if="needShow.filter(key => key.includes('c')).length < 2">
  69. <template v-for="(col, index) in needShow" :key="index">
  70. <el-table-column v-if="col.includes('c')" sortable :prop="col" :label="colMap.get(col)" width="180" align="right">
  71. <template #default="{row}">
  72. {{toFixedWithoutRounding(row[col],2)}}
  73. </template>
  74. </el-table-column>
  75. </template>
  76. </template>
  77. <template v-if="needShow.filter(key => key.includes('c')).length >= 2">
  78. <el-table-column label="当前显示税收合计" width="180" align="right" prop="c5">
  79. <template #default="{row}">
  80. {{
  81. needShow.filter(key => key.includes('c')).reduce((acc, cur) => Number(acc) + Number(row[cur]), 0).toFixed(2)
  82. }}
  83. </template>
  84. </el-table-column>
  85. </template>
  86. <template v-for="(col, index) in needShow" :key="index">
  87. <el-table-column v-if="col == 'dd'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  88. </template>
  89. <template v-for="(col, index) in needShow" :key="index">
  90. <el-table-column v-if="col == 'de'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  91. </template>
  92. <template v-for="(col, index) in needShow" :key="index">
  93. <el-table-column v-if="col == 'df'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  94. </template>
  95. <template v-for="(col, index) in needShow" :key="index">
  96. <el-table-column v-if="col == 'dg'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right">
  97. <template #default="{row}">
  98. {{ row[col] == 0 ? '否' : '是' }}
  99. </template>
  100. </el-table-column>
  101. </template>
  102. <template v-for="(col, index) in needShow" :key="index">
  103. <el-table-column v-if="col.includes('dh')" sortable :prop="col" :label="colMap.get(col)" width="180" align="right">
  104. <template #default="{row}">
  105. {{ row[col] == 0 ? '否' : '是' }}
  106. </template>
  107. </el-table-column>
  108. </template>
  109. <template v-for="(col, index) in needShow" :key="index">
  110. <el-table-column v-if="col == 'di'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right">
  111. <template #default="{row}">
  112. {{ row[col] == 0 ? '否' : '是' }}
  113. </template>
  114. </el-table-column>
  115. </template>
  116. <template v-for="(col, index) in needShow" :key="index">
  117. <el-table-column v-if="col == 'dj'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right">
  118. <template #default="{row}">
  119. {{ row[col] == 0 ? '否' : '是' }}
  120. </template>
  121. </el-table-column>
  122. </template>
  123. <template v-for="(col, index) in needShow" :key="index">
  124. <el-table-column v-if="col == 'dk'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right">
  125. <template #default="{row}">
  126. {{ row[col] == 0 ? '否' : '是' }}
  127. </template>
  128. </el-table-column>
  129. </template>
  130. <template v-for="(col, index) in needShow" :key="index">
  131. <el-table-column v-if="col == 'dl'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  132. </template>
  133. <template v-for="(col, index) in needShow" :key="index">
  134. <el-table-column v-if="col == 'dm'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  135. </template>
  136. <template v-for="(col, index) in needShow" :key="index">
  137. <el-table-column v-if="col == 'dn'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right">
  138. <template #default="{row}">
  139. {{ row[col] == 0 ? '否' : '是' }}
  140. </template>
  141. </el-table-column>
  142. </template>
  143. <template v-for="(col, index) in needShow" :key="index">
  144. <el-table-column v-if="col == 'dp'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  145. </template>
  146. <template v-for="(col, index) in needShow" :key="index">
  147. <el-table-column v-if="col == 'dq'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  148. </template>
  149. <template v-for="(col, index) in needShow" :key="index">
  150. <el-table-column v-if="col == 'dr'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  151. </template>
  152. <template v-for="(col, index) in needShow" :key="index">
  153. <el-table-column v-if="col == 'dr1'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right">
  154. <template #default="{row}">
  155. {{ toFixedWithoutRounding(row.dr1,2) }}
  156. </template>
  157. </el-table-column>
  158. </template>
  159. <template v-for="(col, index) in needShow" :key="index">
  160. <el-table-column v-if="col == 'ds'" :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  161. </template>
  162. <template v-for="(col, index) in needShow" :key="index">
  163. <el-table-column v-if="col == 'dt'" :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  164. </template>
  165. <template v-for="(col, index) in needShow" :key="index">
  166. <el-table-column v-if="col == 'du'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  167. </template>
  168. <template v-for="(col, index) in needShow" :key="index">
  169. <el-table-column v-if="col == 'dv'" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  170. </template>
  171. <template v-if="needShow.filter(key => key.includes('dw')).length >= 2">
  172. <el-table-column label="企业用水" header-align="center">
  173. <template v-for="(col, index) in needShow" :key="index">
  174. <el-table-column v-if="col.includes('dw')" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  175. </template>
  176. </el-table-column>
  177. </template>
  178. <template v-if="needShow.filter(key => key.includes('dw')).length < 2">
  179. <template v-for="(col, index) in needShow" :key="index">
  180. <el-table-column v-if="col.includes('dw')" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  181. </template>
  182. </template>
  183. <template v-if="needShow.filter(key => key.includes('dw')).length >= 2">
  184. <el-table-column label="当前显示合计" width="180" align="right" prop="dw5">
  185. <template #default="{row}">
  186. {{
  187. needShow.filter(key => key.includes('dw')).reduce((acc, cur) => Number(acc) + Number(row[cur]), 0).toFixed(2)
  188. }}
  189. </template>
  190. </el-table-column>
  191. </template>
  192. <template v-if="needShow.filter(key => key.includes('dx')).length >= 2">
  193. <el-table-column label="企业用电" header-align="center">
  194. <template v-for="(col, index) in needShow" :key="index">
  195. <el-table-column v-if="col.includes('dx')" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  196. </template>
  197. </el-table-column>
  198. </template>
  199. <template v-if="needShow.filter(key => key.includes('dx')).length < 2">
  200. <template v-for="(col, index) in needShow" :key="index">
  201. <el-table-column v-if="col.includes('dx')" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  202. </template>
  203. </template>
  204. <template v-if="needShow.filter(key => key.includes('dx')).length >= 2">
  205. <el-table-column label="当前显示合计" width="180" align="right" prop="dx5">
  206. <template #default="{row}">
  207. {{
  208. needShow.filter(key => key.includes('dx')).reduce((acc, cur) => Number(acc) + Number(row[cur]), 0).toFixed(2)
  209. }}
  210. </template>
  211. </el-table-column>
  212. </template>
  213. <template v-if="needShow.filter(key => key.includes('dy')).length >= 2">
  214. <el-table-column label="企业营收" header-align="center">
  215. <template v-for="(col, index) in needShow" :key="index">
  216. <el-table-column v-if="col.includes('dy')" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  217. </template>
  218. </el-table-column>
  219. </template>
  220. <template v-if="needShow.filter(key => key.includes('dy')).length < 2">
  221. <template v-for="(col, index) in needShow" :key="index">
  222. <el-table-column v-if="col.includes('dy')" sortable :prop="col" :label="colMap.get(col)" width="180" align="right"/>
  223. </template>
  224. </template>
  225. <template v-if="needShow.filter(key => key.includes('dy')).length >= 2">
  226. <el-table-column label="当前显示合计" width="180" align="right" prop="dy5">
  227. <template #default="{row}">
  228. {{
  229. needShow.filter(key => key.includes('dy')).reduce((acc, cur) => Number(acc) + Number(row[cur]), 0).toFixed(2)
  230. }}
  231. </template>
  232. </el-table-column>
  233. </template>
  234. </el-table>
  235. <div style="padding-top: 30px">
  236. <el-pagination
  237. v-model:current-page="pageNum"
  238. v-model:page-size="pageSize"
  239. :background="true"
  240. :page-sizes="[10, 20, 130, 200]"
  241. layout="total, sizes, prev, pager, next, jumper"
  242. :total="total"
  243. @size-change="getData"
  244. @current-change="getData"
  245. />
  246. </div>
  247. <el-dialog v-model="dialogFormVisible" title="请选择需要查看的列" @close="handleClose">
  248. <el-form :model="form">
  249. <el-row :gutter="10">
  250. <el-col :lg="6" :sm="8">
  251. <el-form-item label="">
  252. <el-checkbox v-model="form.a" label="行政处罚" size="large"/>
  253. </el-form-item>
  254. </el-col>
  255. <el-col :lg="6" :sm="8">
  256. <el-form-item>
  257. <el-checkbox v-model="form.b1" :label="currentYear+'企业产值(第一季度)'" size="large"/>
  258. </el-form-item>
  259. </el-col>
  260. <el-col :lg="6" :sm="8">
  261. <el-form-item>
  262. <el-checkbox v-model="form.b2" :label="currentYear+'企业产值(第二季度)'" size="large"/>
  263. </el-form-item>
  264. </el-col>
  265. <el-col :lg="6" :sm="8">
  266. <el-form-item>
  267. <el-checkbox v-model="form.b3" :label="currentYear+'企业产值(第三季度)'" size="large"/>
  268. </el-form-item>
  269. </el-col>
  270. <el-col :lg="6" :sm="8">
  271. <el-form-item>
  272. <el-checkbox v-model="form.b4" :label="currentYear+'企业产值(第四季度)'" size="large"/>
  273. </el-form-item>
  274. </el-col>
  275. <el-col :lg="6" :sm="8">
  276. <el-form-item>
  277. <el-checkbox v-model="form.b6" :label="lastYear+'企业产值(第一季度)'" size="large"/>
  278. </el-form-item>
  279. </el-col>
  280. <el-col :lg="6" :sm="8">
  281. <el-form-item>
  282. <el-checkbox v-model="form.b7" :label="lastYear+'企业产值(第二季度)'" size="large"/>
  283. </el-form-item>
  284. </el-col>
  285. <el-col :lg="6" :sm="8">
  286. <el-form-item>
  287. <el-checkbox v-model="form.b8" :label="lastYear+'企业产值(第三季度)'" size="large"/>
  288. </el-form-item>
  289. </el-col>
  290. <el-col :lg="6" :sm="8">
  291. <el-form-item>
  292. <el-checkbox v-model="form.b9" :label="lastYear+'企业产值(第四季度)'" size="large"/>
  293. </el-form-item>
  294. </el-col>
  295. <el-col :lg="6" :sm="8">
  296. <el-form-item>
  297. <el-checkbox v-model="form.c1" :label="currentYear+'企业税收(第一季度)'" size="large"/>
  298. </el-form-item>
  299. </el-col>
  300. <el-col :lg="6" :sm="8">
  301. <el-form-item>
  302. <el-checkbox v-model="form.c2" :label="currentYear+'企业税收(第二季度)'" size="large"/>
  303. </el-form-item>
  304. </el-col>
  305. <el-col :lg="6" :sm="8">
  306. <el-form-item>
  307. <el-checkbox v-model="form.c3" :label="currentYear+'企业税收(第三季度)'" size="large"/>
  308. </el-form-item>
  309. </el-col>
  310. <el-col :lg="6" :sm="8">
  311. <el-form-item>
  312. <el-checkbox v-model="form.c4" :label="currentYear+'企业税收(第四季度)'" size="large"/>
  313. </el-form-item>
  314. </el-col>
  315. <el-col :lg="6" :sm="8">
  316. <el-form-item>
  317. <el-checkbox v-model="form.c6" :label="lastYear+'企业税收(第一季度)'" size="large"/>
  318. </el-form-item>
  319. </el-col>
  320. <el-col :lg="6" :sm="8">
  321. <el-form-item>
  322. <el-checkbox v-model="form.c7" :label="lastYear+'企业税收(第二季度)'" size="large"/>
  323. </el-form-item>
  324. </el-col>
  325. <el-col :lg="6" :sm="8">
  326. <el-form-item>
  327. <el-checkbox v-model="form.c8" :label="lastYear+'企业税收(第三季度)'" size="large"/>
  328. </el-form-item>
  329. </el-col>
  330. <el-col :lg="6" :sm="8">
  331. <el-form-item>
  332. <el-checkbox v-model="form.c9" :label="lastYear+'企业税收(第四季度)'" size="large"/>
  333. </el-form-item>
  334. </el-col>
  335. <el-col :lg="6" :sm="8">
  336. <el-form-item>
  337. <el-checkbox v-model="form.dd" label="变更记录条数" size="large"/>
  338. </el-form-item>
  339. </el-col>
  340. <el-col :lg="6" :sm="8">
  341. <el-form-item>
  342. <el-checkbox v-model="form.de" label="行政许可条数" size="large"/>
  343. </el-form-item>
  344. </el-col>
  345. <el-col :lg="6" :sm="8">
  346. <el-form-item>
  347. <el-checkbox v-model="form.df" label="行政确认条数" size="large"/>
  348. </el-form-item>
  349. </el-col>
  350. <el-col :lg="6" :sm="8">
  351. <el-form-item>
  352. <el-checkbox v-model="form.dg" label="上市企业" size="large"/>
  353. </el-form-item>
  354. </el-col>
  355. <el-col :lg="6" :sm="8">
  356. <el-form-item>
  357. <el-checkbox v-model="form.dh" label="专精特精企业" size="large"/>
  358. </el-form-item>
  359. </el-col>
  360. <el-col :lg="6" :sm="8">
  361. <el-form-item>
  362. <el-checkbox v-model="form.di" label="科研企业" size="large"/>
  363. </el-form-item>
  364. </el-col>
  365. <el-col :lg="6" :sm="8">
  366. <el-form-item>
  367. <el-checkbox v-model="form.dj" label="科技型中小企业" size="large"/>
  368. </el-form-item>
  369. </el-col>
  370. <el-col :lg="6" :sm="8">
  371. <el-form-item>
  372. <el-checkbox v-model="form.dk" label="高新技术企业" size="large"/>
  373. </el-form-item>
  374. </el-col>
  375. <el-col :lg="6" :sm="8">
  376. <el-form-item>
  377. <el-checkbox v-model="form.dl" label="软件著作权" size="large"/>
  378. </el-form-item>
  379. </el-col>
  380. <el-col :lg="6" :sm="8">
  381. <el-form-item>
  382. <el-checkbox v-model="form.dm" label="专利信息" size="large"/>
  383. </el-form-item>
  384. </el-col>
  385. <el-col :lg="6" :sm="8">
  386. <el-form-item>
  387. <el-checkbox v-model="form.dn" label="红名单企业" size="large"/>
  388. </el-form-item>
  389. </el-col>
  390. <el-col :lg="6" :sm="8">
  391. <el-form-item>
  392. <el-checkbox v-model="form.dp" label="纳税信用等级" size="large"/>
  393. </el-form-item>
  394. </el-col>
  395. <el-col :lg="6" :sm="8">
  396. <el-form-item>
  397. <el-checkbox v-model="form.dq" label="非正常纳税信息" size="large"/>
  398. </el-form-item>
  399. </el-col>
  400. <el-col :lg="6" :sm="8">
  401. <el-form-item>
  402. <el-checkbox v-model="form.dr" label="社保缴纳人数信息" size="large"/>
  403. </el-form-item>
  404. </el-col>
  405. <el-col :lg="6" :sm="8">
  406. <el-form-item>
  407. <el-checkbox v-model="form.dr1" label="社保缴纳金额信息" size="large"/>
  408. </el-form-item>
  409. </el-col>
  410. <el-col :lg="6" :sm="8">
  411. <el-form-item>
  412. <el-checkbox v-model="form.ds" label="环保信用等级" size="large"/>
  413. </el-form-item>
  414. </el-col>
  415. <el-col :lg="6" :sm="8">
  416. <el-form-item>
  417. <el-checkbox v-model="form.dt" label="国家公共信用评价" size="large"/>
  418. </el-form-item>
  419. </el-col>
  420. <el-col :lg="6" :sm="8">
  421. <el-form-item>
  422. <el-checkbox v-model="form.du" label="评级机构评级信息" size="large"/>
  423. </el-form-item>
  424. </el-col>
  425. <el-col :lg="6" :sm="8">
  426. <el-form-item>
  427. <el-checkbox v-model="form.dv" label="企业征信机构评分(天眼查)" size="large"/>
  428. </el-form-item>
  429. </el-col>
  430. <el-col :lg="6" :sm="8">
  431. <el-form-item>
  432. <el-checkbox v-model="form.dw1" :label="currentYear+'用水明细(第一季度)'" size="large"/>
  433. </el-form-item>
  434. </el-col>
  435. <el-col :lg="6" :sm="8">
  436. <el-form-item>
  437. <el-checkbox v-model="form.dw2" :label="currentYear+'用水明细(第二季度)'" size="large"/>
  438. </el-form-item>
  439. </el-col>
  440. <el-col :lg="6" :sm="8">
  441. <el-form-item>
  442. <el-checkbox v-model="form.dw3" :label="currentYear+'用水明细(第三季度)'" size="large"/>
  443. </el-form-item>
  444. </el-col>
  445. <el-col :lg="6" :sm="8">
  446. <el-form-item>
  447. <el-checkbox v-model="form.dw4" :label="currentYear+'用水明细(第四季度)'" size="large"/>
  448. </el-form-item>
  449. </el-col>
  450. <el-col :lg="6" :sm="8">
  451. <el-form-item>
  452. <el-checkbox v-model="form.dw6" :label="lastYear+'用水明细(第一季度)'" size="large"/>
  453. </el-form-item>
  454. </el-col>
  455. <el-col :lg="6" :sm="8">
  456. <el-form-item>
  457. <el-checkbox v-model="form.dw7" :label="lastYear+'用水明细(第二季度)'" size="large"/>
  458. </el-form-item>
  459. </el-col>
  460. <el-col :lg="6" :sm="8">
  461. <el-form-item>
  462. <el-checkbox v-model="form.dw8" :label="lastYear+'用水明细(第三季度)'" size="large"/>
  463. </el-form-item>
  464. </el-col>
  465. <el-col :lg="6" :sm="8">
  466. <el-form-item>
  467. <el-checkbox v-model="form.dw9" :label="lastYear+'用水明细(第四季度)'" size="large"/>
  468. </el-form-item>
  469. </el-col>
  470. <el-col :lg="6" :sm="8">
  471. <el-form-item>
  472. <el-checkbox v-model="form.dx1" :label="currentYear+'用电明细(第一季度)'" size="large"/>
  473. </el-form-item>
  474. </el-col>
  475. <el-col :lg="6" :sm="8">
  476. <el-form-item>
  477. <el-checkbox v-model="form.dx2" :label="currentYear+'用电明细(第二季度)'" size="large"/>
  478. </el-form-item>
  479. </el-col>
  480. <el-col :lg="6" :sm="8">
  481. <el-form-item>
  482. <el-checkbox v-model="form.dx3" :label="currentYear+'用电明细(第三季度)'" size="large"/>
  483. </el-form-item>
  484. </el-col>
  485. <el-col :lg="6" :sm="8">
  486. <el-form-item>
  487. <el-checkbox v-model="form.dx4" :label="currentYear+'用电明细(第四季度)'" size="large"/>
  488. </el-form-item>
  489. </el-col>
  490. <el-col :lg="6" :sm="8">
  491. <el-form-item>
  492. <el-checkbox v-model="form.dx6" :label="lastYear+'用电明细(第一季度)'" size="large"/>
  493. </el-form-item>
  494. </el-col>
  495. <el-col :lg="6" :sm="8">
  496. <el-form-item>
  497. <el-checkbox v-model="form.dx7" :label="lastYear+'用电明细(第二季度)'" size="large"/>
  498. </el-form-item>
  499. </el-col>
  500. <el-col :lg="6" :sm="8">
  501. <el-form-item>
  502. <el-checkbox v-model="form.dx8" :label="lastYear+'用电明细(第三季度)'" size="large"/>
  503. </el-form-item>
  504. </el-col>
  505. <el-col :lg="6" :sm="8">
  506. <el-form-item>
  507. <el-checkbox v-model="form.dx9" :label="lastYear+'用电明细(第四季度)'" size="large"/>
  508. </el-form-item>
  509. </el-col>
  510. <el-col :lg="6" :sm="8">
  511. <el-form-item>
  512. <el-checkbox v-model="form.dy1" :label="currentYear+'企业营收(第一季度)'" size="large"/>
  513. </el-form-item>
  514. </el-col>
  515. <el-col :lg="6" :sm="8">
  516. <el-form-item>
  517. <el-checkbox v-model="form.dy2" :label="currentYear+'企业营收(第二季度)'" size="large"/>
  518. </el-form-item>
  519. </el-col>
  520. <el-col :lg="6" :sm="8">
  521. <el-form-item>
  522. <el-checkbox v-model="form.dy3" :label="currentYear+'企业营收(第三季度)'" size="large"/>
  523. </el-form-item>
  524. </el-col>
  525. <el-col :lg="6" :sm="8">
  526. <el-form-item>
  527. <el-checkbox v-model="form.dy4" :label="currentYear+'企业营收(第四季度)'" size="large"/>
  528. </el-form-item>
  529. </el-col>
  530. <el-col :lg="6" :sm="8">
  531. <el-form-item>
  532. <el-checkbox v-model="form.dy6" :label="lastYear+'企业营收(第一季度)'" size="large"/>
  533. </el-form-item>
  534. </el-col>
  535. <el-col :lg="6" :sm="8">
  536. <el-form-item>
  537. <el-checkbox v-model="form.dy7" :label="lastYear+'企业营收(第二季度)'" size="large"/>
  538. </el-form-item>
  539. </el-col>
  540. <el-col :lg="6" :sm="8">
  541. <el-form-item>
  542. <el-checkbox v-model="form.dy8" :label="lastYear+'企业营收(第三季度)'" size="large"/>
  543. </el-form-item>
  544. </el-col>
  545. <el-col :lg="6" :sm="8">
  546. <el-form-item>
  547. <el-checkbox v-model="form.dy9" :label="lastYear+'企业营收(第四季度)'" size="large"/>
  548. </el-form-item>
  549. </el-col>
  550. </el-row>
  551. </el-form>
  552. </el-dialog>
  553. </div>
  554. </template>
  555. <script lang="ts" setup>
  556. import {computed, ref, watch} from "vue";
  557. import {getCheckList} from "@/api/basicData/sjtjzl"
  558. import {getInfo} from "@/api/login"
  559. import {toFixedWithoutRounding} from '@/utils/toFixedWithoutRounding'
  560. import {ElMessage} from "element-plus";
  561. import {colMap} from "./colMap";
  562. import * as XLSX from 'xlsx';
  563. const isShow = ref(true)
  564. const initCheck = {
  565. a: true,
  566. b1: false,
  567. b2: false,
  568. b3: false,
  569. b4: false,
  570. b6: false,
  571. b7: false,
  572. b8: false,
  573. b9: false,
  574. c1: false,
  575. c2: false,
  576. c3: false,
  577. c4: false,
  578. c6: false,
  579. c7: false,
  580. c8: false,
  581. c9: false,
  582. dd: false,
  583. de: false,
  584. df: false,
  585. dg: false,
  586. dh: false,
  587. di: false,
  588. dj: false,
  589. dk: false,
  590. dl: false,
  591. dm: false,
  592. dn: false,
  593. dp: false,
  594. dq: false,
  595. dr:false,
  596. dr1:false,
  597. ds:false,
  598. dt:false,
  599. du:false,
  600. dv:false,
  601. dw1:false,
  602. dw2:false,
  603. dw3:false,
  604. dw4:false,
  605. dw6:false,
  606. dw7:false,
  607. dw8:false,
  608. dw9:false,
  609. dx1:false,
  610. dx2:false,
  611. dx3:false,
  612. dx4:false,
  613. dx6:false,
  614. dx7:false,
  615. dx8:false,
  616. dx9:false,
  617. dy1:false,
  618. dy2:false,
  619. dy3:false,
  620. dy4:false,
  621. dy6:false,
  622. dy7:false,
  623. dy8:false,
  624. dy9:false
  625. };
  626. const currentYear = ref(new Date().getFullYear());
  627. const lastYear = ref(currentYear.value - 1)
  628. const dialogFormVisible = ref(false)
  629. const tableData = ref([])
  630. const userName = ref("")
  631. const pageNum = ref(1)
  632. const pageSize = ref(20)
  633. const total = ref(0)
  634. const form = ref(JSON.parse(localStorage.getItem("sjtjzlKey")) || initCheck)
  635. const searchForm = ref({
  636. enterpriseName: ""
  637. })
  638. const handleClose = ()=>{
  639. isShow.value = false
  640. setTimeout(()=>{isShow.value = true},0)
  641. }
  642. const exportToExcel = () => {
  643. const staticArr = ["enterpriseName", "uniCode"];
  644. const headers1 = staticArr.concat(needShow.value).map(key => colMap.get(key));
  645. const headers = staticArr.concat(needShow.value);
  646. const needTransformKeys = ['dg','dh','di','dj','dk','dn'];
  647. const wsData = [headers1, ...tableData.value.map(item => {
  648. return headers.map(key => {
  649. if(needTransformKeys.includes(key)){
  650. return item[key]==0 ? '否' : '是';
  651. }
  652. return item[key]
  653. })
  654. })];
  655. const ws = XLSX.utils.aoa_to_sheet(wsData);
  656. ws['!cols'] = headers1.map(() => ({wch: 20}));
  657. const wb = XLSX.utils.book_new();
  658. XLSX.utils.book_append_sheet(wb, ws, '企业数据总览报告');
  659. XLSX.writeFile(wb, '企业数据总览报告.xlsx');
  660. };
  661. const needShow = computed(() => {
  662. return Object.keys(form.value).filter(key => form.value[key]);
  663. });
  664. const getData = async () => {
  665. let conditionJsonWhole = [];
  666. if (searchForm.value.enterpriseName != '') {
  667. conditionJsonWhole.push({
  668. column: "enterprise_name",
  669. type: 'like',
  670. value: searchForm.value.enterpriseName
  671. });
  672. }
  673. let s = encodeURIComponent(JSON.stringify(conditionJsonWhole));
  674. const res = await getCheckList(needShow.value, pageNum.value, pageSize.value, s);
  675. if (res.code != 200) {
  676. ElMessage.error("出现了问题,请联系管理员处理")
  677. }
  678. tableData.value = res.data;
  679. tableData.value = tableData.value.map(item => {
  680. let b5 = 0;
  681. let c5 = 0;
  682. let dw5 = 0;
  683. let dx5 = 0;
  684. let dy5 = 0;
  685. for (const k in item) {
  686. if(k.includes('b')){
  687. b5 += Number(item[k]);
  688. }
  689. if(k.includes('c')){
  690. c5 += Number(item[k]);
  691. }
  692. if(k.includes('dw')){
  693. dw5 += Number(item[k]);
  694. }
  695. if(k.includes('dx')){
  696. dx5 += Number(item[k]);
  697. }
  698. if(k.includes('dy')){
  699. dy5 += Number(item[k]);
  700. }
  701. // if (k=='b1'||k=='b2'||k=='b3'||k=='b4') {
  702. // if (item[k] != null) {
  703. // b5 += Number(item[k]);
  704. // }
  705. // }
  706. // if (k=='b6'||k=='b7'||k=='b8'||k=='b9') {
  707. // if (item[k] != null) {
  708. // b5 += Number(item[k]);
  709. // }
  710. // }
  711. // if (k=='c1'||k=='c2'||k=='c3'||k=='c4') {
  712. // if (item[k] != null) {
  713. // c5 += Number(item[k]);
  714. // }
  715. // }
  716. // if (k=='c6'||k=='c7'||k=='c8'||k=='c9') {
  717. // if (item[k] != null) {
  718. // c5 += Number(item[k]);
  719. // }
  720. // }
  721. // console.log(b5);
  722. }
  723. return {
  724. ...item,
  725. b5,
  726. c5,
  727. dw5,
  728. dx5,
  729. dy5
  730. }
  731. })
  732. total.value = res?.total;
  733. }
  734. const getSummaries = (param) => {
  735. const {columns, data} = param;
  736. const sums = [];
  737. columns.forEach((column, index) => {
  738. // console.log(column.property);
  739. if (index === 0) {
  740. sums[index] = "当前页总计";
  741. return;
  742. }
  743. const values = data.map(item => Number(item[column.property]));
  744. console.log(values);
  745. if (!values.every(value => isNaN(value))) {
  746. sums[index] = values.reduce((prev, curr) => {
  747. const value = Number(curr);
  748. if (!isNaN(value)) {
  749. return prev + curr;
  750. } else {
  751. return prev;
  752. }
  753. }, 0);
  754. let until;
  755. if (column.property == "a") {
  756. until = "条";
  757. sums[index] += until;
  758. } else if (column.property == "b1" || column.property == "b2" || column.property == "b3" || column.property == "b4" || column.property == "b5" || column.property == "b6" || column.property == "b7" || column.property == "b8" || column.property == "b9") {
  759. sums[index] = sums[index].toFixed(2);
  760. until = "万元";
  761. sums[index] += until;
  762. } else if (column.property == "c1" || column.property == "c2" || column.property == "c3" || column.property == "c4" || column.property == "c5" || column.property == "c6" || column.property == "c7" || column.property == "c8" || column.property == "c9") {
  763. sums[index] = sums[index].toFixed(2);
  764. until = "万元";
  765. sums[index] += until;
  766. } else if (column.property == "dr1") {
  767. sums[index] = sums[index].toFixed(2);
  768. until = "万元";
  769. sums[index] += until;
  770. } else if (column.property == "dd" || column.property == "de" || column.property == "df") {
  771. until = "条";
  772. sums[index] += until;
  773. } else if (column.property == "dg" || column.property == "dh" || column.property == "di" || column.property == "dj" || column.property == "dk" || column.property == "dn") {
  774. until = "家";
  775. sums[index] += until;
  776. } else if (column.property == "dl" || column.property == "dm" || column.property== "du") {
  777. until = "个"
  778. sums[index] += until;
  779. } else if (column.property == "dr") {
  780. until = "人"
  781. sums[index] += until;
  782. } else if (column.property == "dw1" || column.property == "dw2" || column.property == "dw3" || column.property == "dw4" || column.property == "dw5" || column.property == "dw6" || column.property == "dw7" || column.property == "dw8" || column.property == "dw9") {
  783. until = "吨"
  784. sums[index] += until;
  785. }else if (column.property == "dx1" || column.property == "dx2" || column.property == "dx3" || column.property == "dx4" || column.property == "dx5" || column.property == "dx6" || column.property == "dx7" || column.property == "dx8" || column.property == "dx9") {
  786. until = "度"
  787. sums[index] += until;
  788. }else if (column.property == "dy1" || column.property == "dy2" || column.property == "dy3" || column.property == "dy4" || column.property == "dy5" || column.property == "dy6" || column.property == "dy7" || column.property == "dy8" || column.property == "dy9") {
  789. until = "万元"
  790. sums[index] += until;
  791. } else if (column.property == "dv"){
  792. sums[index] = " ";
  793. }
  794. } else {
  795. sums[index] = " ";
  796. }
  797. });
  798. return sums;
  799. };
  800. watch(() => needShow.value, () => {
  801. init()
  802. })
  803. const init = () => {
  804. getInfo().then(res => {
  805. if (res.code != 200) {
  806. ElMessage.error("出现了问题,请联系管理员处理")
  807. }
  808. userName.value = res.user.userName;
  809. });
  810. localStorage.setItem("sjtjzlKey", JSON.stringify(form.value ? form.value : initCheck))
  811. getData()
  812. }
  813. init();
  814. </script>
  815. <style scoped>
  816. ::v-deep .el-scrollbar__bar.is-horizontal{
  817. height: 10px;
  818. display: block !important;
  819. position: fixed !important;
  820. bottom: 6.3rem !important;
  821. left: 15rem !important;
  822. }
  823. ::v-deep .el-scrollbar{
  824. position: relative;
  825. }
  826. ::v-deep .el-scrollbar__bar.is-vertical{
  827. width: 10px;
  828. }
  829. ::v-deep .el-table__footer{
  830. z-index: -1;
  831. }
  832. </style>