index.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. <template>
  2. <!-- 消息中心 -->
  3. <div style="display: flex">
  4. <el-card style="width: 18%; margin-right: 18px; border-radius: 6px">
  5. <el-tabs
  6. v-model="activeNametree"
  7. type="card"
  8. @tab-click="tabClick"
  9. stretch
  10. >
  11. <!-- <el-tab-pane label="按分类" name="grp"></el-tab-pane> -->
  12. <el-tab-pane label="按机构" name="org"></el-tab-pane>
  13. </el-tabs>
  14. <el-tree
  15. :data="data"
  16. :props="defaultProps"
  17. node-key="spdId"
  18. @node-click="handleNodeClick"
  19. default-expand-all="true"
  20. style="margin-top: 10px"
  21. >
  22. <span class="custom-tree-node" slot-scope="{ node, data }">
  23. <div>{{ node.label }}</div>
  24. </span>
  25. </el-tree>
  26. </el-card>
  27. <div class="right-common-box">
  28. <el-form :model="listQuery" ref="queryForm" :inline="true">
  29. <el-form-item label="时间" prop="docmkDate" class="long">
  30. <el-date-picker
  31. v-model="listQuery.docmkDate"
  32. type="daterange"
  33. range-separator="至"
  34. :editable="false"
  35. value-format="yyyy-MM-dd HH:mm:ss"
  36. start-placeholder="开始时间"
  37. end-placeholder="结束时间"
  38. style="width: 230px"
  39. />
  40. </el-form-item>
  41. <el-form-item>
  42. <el-button type="primary" @click="getorderData('search')"
  43. >查询
  44. </el-button>
  45. <el-button @click="reset">重置</el-button>
  46. </el-form-item>
  47. </el-form>
  48. <div class="right-btn">
  49. <el-button
  50. type="primary"
  51. icon="el-icon-download"
  52. @click="DownloadData()"
  53. >导出</el-button
  54. >
  55. </div>
  56. <el-table
  57. v-loading="listLoading"
  58. element-loading-text="加载中"
  59. :data="list"
  60. fit
  61. stripe
  62. border
  63. show-summary
  64. :summary-method="getSummaries"
  65. >
  66. <template slot="empty">
  67. <img src="@/assets/nopage.png" alt />
  68. <p>暂无数据</p>
  69. </template>
  70. <el-table-column type="index" label="序号" width="60" />
  71. <el-table-column label="机构名称" prop="orgName" />
  72. <el-table-column label="对账金额" prop="dzje" />
  73. <el-table-column label="退货金额" prop="thje" />
  74. <el-table-column label="应付总金额" prop="yfzje" />
  75. <el-table-column label="卫生院(非4+7)" prop="wsyfjcje" />
  76. <el-table-column label="卫生院(4+7)" prop="wsyjcje" />
  77. <el-table-column label="卫生室(非4+7)" prop="wssfjcje" />
  78. <el-table-column label="卫生室(4+7)" prop="wssfjcje" />
  79. </el-table>
  80. <!--分页-->
  81. <yl-pagination
  82. v-show="total > 0"
  83. :total="total"
  84. :page.sync="listQuery.current"
  85. :limit.sync="listQuery.size"
  86. @pagination="getorderData"
  87. />
  88. </div>
  89. </div>
  90. </template>
  91. <script>
  92. import ylPagination from "@/components/yl-pagination";
  93. import {
  94. getMcsOrdPageSpler,
  95. getMcsOrdPageYqrSpler,
  96. selectSpdList
  97. } from "@/api/orderManage-sup/index";
  98. import { exportData } from "./const";
  99. import {
  100. getSelectRkAmtPage,
  101. exportRkAmtList
  102. } from "@/api/report-sup/consum-report";
  103. import moment from "moment";
  104. const startOfMonth = moment()
  105. .startOf("month")
  106. .format("YYYY-MM-DD HH:mm:ss");
  107. const endOfMonth = moment()
  108. .endOf("month")
  109. .format("YYYY-MM-DD HH:mm:ss");
  110. export default {
  111. components: {
  112. ylPagination
  113. },
  114. data() {
  115. return {
  116. activeNametree: "org",
  117. data: [],
  118. spdId: null,
  119. defaultProps: {
  120. children: "children",
  121. label: "spdName"
  122. },
  123. listQuery: {
  124. current: 1,
  125. size: 10,
  126. docmkDateStart: "",
  127. docmkDateEnd: "",
  128. docmkDate: [startOfMonth, endOfMonth],
  129. spdId: ""
  130. },
  131. options: [],
  132. listLoading: false,
  133. list: [],
  134. total: 0
  135. };
  136. },
  137. mounted() {
  138. this.getData();
  139. },
  140. methods: {
  141. //数据导出
  142. DownloadData() {
  143. exportRkAmtList({
  144. ...this.listQuery
  145. }).then(res => {
  146. const _res = res.data;
  147. exportData(_res);
  148. });
  149. },
  150. getSummaries(param) {
  151. const { columns, data } = param;
  152. const sums = [];
  153. columns.forEach((column, index) => {
  154. if (index === 0) {
  155. sums[index] = "总计";
  156. return;
  157. }
  158. const values = data.map(item => Number(item[column.property]));
  159. if (!values.every(value => isNaN(value))) {
  160. sums[index] = values.reduce((prev, curr) => {
  161. const value = Number(curr);
  162. if (!isNaN(value)) {
  163. let newCont = Number(prev) + Number(curr);
  164. return newCont.toFixed(4);
  165. } else {
  166. return prev;
  167. }
  168. }, 0);
  169. sums[index] += " ";
  170. } else {
  171. sums[index] = "";
  172. }
  173. });
  174. return sums;
  175. },
  176. tabClick(tab) {
  177. if (tab.label == "按机构") {
  178. this.defaultProps.label = "spdName";
  179. }
  180. },
  181. // 获取医院列表
  182. getData(type) {
  183. this.data = [];
  184. selectSpdList()
  185. .then(res => {
  186. this.listQuery.spdId = res.data[0].spdId;
  187. this.data = res.data;
  188. this.getorderData("search");
  189. })
  190. .catch(err => {});
  191. },
  192. getorderData(type) {
  193. if (type == "search") {
  194. this.listQuery.current = 1;
  195. }
  196. this.listLoading = true;
  197. this.listQuery.docmkDateStart = this.listQuery.docmkDate[0];
  198. this.listQuery.docmkDateEnd = this.listQuery.docmkDate[1];
  199. getSelectRkAmtPage(this.listQuery)
  200. .then(res => {
  201. this.list = res.data;
  202. this.listLoading = false;
  203. })
  204. .catch(err => {
  205. this.listLoading = false;
  206. });
  207. },
  208. // 点击获取耗材列表
  209. handleNodeClick(data) {
  210. this.listLoading = true;
  211. this.spdId = data.spdId;
  212. this.listQuery.spdId = this.spdId;
  213. this.getorderData("");
  214. },
  215. reset() {
  216. this.$refs.queryForm.resetFields();
  217. this.getorderData();
  218. }
  219. }
  220. };
  221. </script>
  222. <style lang="scss" scoped>
  223. ::v-deep .long .el-input__inner {
  224. width: 199px;
  225. }
  226. .right-common-box ::v-deep .el-table__fixed {
  227. height: 100% !important;
  228. }
  229. .right-common-box ::v-deep .el-table__fixed-right {
  230. height: 100% !important;
  231. }
  232. .custom-tree-node {
  233. display: flex;
  234. flex-direction: row;
  235. justify-content: space-between;
  236. }
  237. .custom-tree-node ::v-deep .redTit {
  238. min-width: 30px;
  239. background-color: #f56c6c;
  240. min-height: 1px;
  241. border-radius: 10px;
  242. text-align: center;
  243. margin-left: 10px;
  244. padding: 1px;
  245. color: #fff;
  246. }
  247. .right-btn {
  248. width: 100px;
  249. height: 40px;
  250. position: absolute;
  251. right: 20px;
  252. top: 30px;
  253. }
  254. </style>