You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

263 lines
7.7 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <div>
  3. <div class="middlebox">
  4. <div class="contenttitle">
  5. 体检查询 /
  6. <span class="contenttitleBold">上报国家平台数据</span>
  7. </div>
  8. </div>
  9. <div
  10. style="display: flex;justify-content: space-between; padding: 10px;background-color: #fff;border-radius: 8px;margin-bottom: 10px;">
  11. <div style="display:block;">
  12. <div style="display: flex;flex-wrap: wrap;height: 32px;align-items: center;">
  13. <div class="query">
  14. <el-select v-model="query.dateType" placeholder="请选择" style="width: 80px" size="small">
  15. <el-option label="登记日期" :value="'1'" />
  16. <el-option label="体检日期" :value="'2'" />
  17. <el-option label="总检日期" :value="'3'" />
  18. </el-select>
  19. <!-- dateType 1 登记2 体检3 总检日期-->
  20. <el-date-picker v-model="query.startDate" type="date" placeholder="起始日期" size="small" style="width:90px;"
  21. value-format="yyyy-MM-dd" :picker-options="pickerOptions" />
  22. <span class="spanClass"></span>
  23. <el-date-picker v-model="query.endDate" type="date" placeholder="截止日期" size="small" style="width:90px;"
  24. value-format="yyyy-MM-dd" :picker-options="pickerOptions" />
  25. </div>
  26. <div class="query">
  27. <span class="spanClass">体检单位</span>
  28. <el-select v-model="query.customerOrgIds" placeholder="请选择体检单位" :filter-method="filterMethod"
  29. default-first-option clearable filterable style="margin-left: 10px" size="small" multiple collapse-tags>
  30. <el-option v-for="item in customerOrg" :key="item.id" :label="item.displayName" :value="item.id">
  31. {{ item.displayName }}
  32. </el-option>
  33. </el-select>
  34. </div>
  35. <div class="query">
  36. <span class="spanClass">体检类别</span>
  37. <el-select v-model="query.medicalTypeIds" placeholder="请选择" clearable filterable style="width: 200px"
  38. size="small" multiple collapse-tags>
  39. <el-option v-for="item in dict.medicalType" :key="item.id" :label="item.displayName" :value="item.id" />
  40. </el-select>
  41. </div>
  42. <div class="query">
  43. <span class="spanClass">包含未填体检类别人员</span>
  44. <el-checkbox v-model="query.isMedicalTypeId" true-label="Y" false-label="N" />
  45. </div>
  46. </div>
  47. </div>
  48. <div>
  49. <el-button type="primary" class="commonbutton" @click="btnQuery" size="small">查询</el-button>
  50. </div>
  51. </div>
  52. <div>
  53. <table style="text-align: center;border-collapse:collapse;" border="1">
  54. <thead>
  55. <tr height="30">
  56. <th width="60">序号</th>
  57. <th width="120">项目</th>
  58. <th width="80">数据</th>
  59. </tr>
  60. </thead>
  61. <tbody>
  62. <tr height="30">
  63. <td>1</td>
  64. <td>(人次)</td>
  65. <td>{{ nationHealthReportData.maleCount }}</td>
  66. </tr>
  67. <tr height="30">
  68. <td>2</td>
  69. <td>(人次)</td>
  70. <td>{{ nationHealthReportData.femaleCount }}</td>
  71. </tr>
  72. <tr height="30">
  73. <td>3</td>
  74. <td>总人次</td>
  75. <td>{{ nationHealthReportData.sumCount }}</td>
  76. </tr>
  77. <tr height="30">
  78. <td>4</td>
  79. <td>理论金额(万元)</td>
  80. <td>{{ nationHealthReportData.standardMoney }}</td>
  81. </tr>
  82. <tr height="30">
  83. <td>5</td>
  84. <td>应收金额(万元)</td>
  85. <td>{{ nationHealthReportData.chargeMoney }}</td>
  86. </tr>
  87. </tbody>
  88. </table>
  89. </div>
  90. </div>
  91. </template>
  92. <script>
  93. import { mapState } from "vuex";
  94. import { getapi, postapi, putapi, deletapi } from "@/api/api";
  95. import { deepCopy } from "../../utlis/proFunc"
  96. import CusOrgOCX from "./CusOrgOCX.vue"
  97. import moment from "moment";
  98. export default {
  99. components: {
  100. CusOrgOCX,
  101. },
  102. props: ["orgEnable"],
  103. data() {
  104. return {
  105. dialogVisible: false,
  106. local: {
  107. completeFlag: []
  108. },
  109. customerOrg: [],
  110. customerOrgAll: [],
  111. query: {
  112. dateType: '1',
  113. startDate: '',
  114. endDate: '',
  115. customerOrgIds: [],
  116. medicalTypeIds: [],
  117. isMedicalTypeId: 'Y',
  118. },
  119. pickerOptions: {
  120. disabledDate(time) {
  121. return time.getTime() > Date.now();
  122. },
  123. shortcuts: [{
  124. text: '今天',
  125. onClick(picker) {
  126. picker.$emit('pick', new Date());
  127. }
  128. }, {
  129. text: '昨天',
  130. onClick(picker) {
  131. const date = new Date();
  132. date.setTime(date.getTime() - 3600 * 1000 * 24);
  133. picker.$emit('pick', date);
  134. }
  135. }, {
  136. text: '一周前',
  137. onClick(picker) {
  138. const date = new Date();
  139. date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
  140. picker.$emit('pick', date);
  141. }
  142. }]
  143. },
  144. nationHealthReportData: {
  145. maleCount: null, //体检人数(男)
  146. femaleCount: null, //体检人数(女)
  147. sumCount: null, //体检总人数
  148. standardMoney: null, // 标准金额(万元)
  149. chargeMoney: null // 应收金额(万元)
  150. }
  151. };
  152. },
  153. created() {
  154. },
  155. //挂载完成
  156. mounted() {
  157. this.dictInit()
  158. },
  159. computed: {
  160. ...mapState(["window", "dict", "patientRegister", "report"]),
  161. },
  162. methods: {
  163. //获取初始数据
  164. dictInit() {
  165. let today = moment(new Date()).format("YYYY-MM-DD")
  166. this.query.startDate = today
  167. this.query.endDate = today
  168. //获取单位列表
  169. getapi("/api/app/customer-org/parent-all").then((res) => {
  170. if (res.code != -1) {
  171. this.customerOrgAll = res.data;
  172. this.customerOrg = deepCopy(this.customerOrgAll);
  173. }
  174. });
  175. //体检类别
  176. getapi("/api/app/medical-type/in-filter").then((res) => {
  177. if (res.code > -1) {
  178. this.dict.medicalType = res.data;
  179. }
  180. });
  181. },
  182. // 单位过滤
  183. filterMethod(keyWords) {
  184. if (keyWords) {
  185. this.customerOrg = [];
  186. this.customerOrgAll.forEach((item) => {
  187. if (
  188. item.displayName.toLowerCase().indexOf(keyWords.toLowerCase()) > -1 ||
  189. item.simpleCode.toLowerCase().indexOf(keyWords.toLowerCase()) > -1
  190. // || item.shortName.toLowerCase().indexOf(keyWords.toLowerCase()) > - 1
  191. ) {
  192. this.customerOrg.push(item);
  193. }
  194. });
  195. } else {
  196. this.customerOrg = deepCopy(this.customerOrgAll);
  197. }
  198. },
  199. // 查询
  200. btnQuery() {
  201. postapi("/api/app/PeisReport/GetHealthStatistics", this.query).then(res => {
  202. if (res.code > -1) {
  203. res.data.standardMoney = Math.floor(res.data.standardMoney) / 10000
  204. res.data.chargeMoney = Math.floor(res.data.chargeMoney) / 10000
  205. this.nationHealthReportData = res.data
  206. }
  207. })
  208. },
  209. },
  210. };
  211. </script>
  212. <style scoped>
  213. @import '../../assets/css/global.css';
  214. @import '../../assets/css/global_font.css';
  215. ::v-deep .el-input__inner {
  216. /*text-align: center;*/
  217. padding-left: 5px;
  218. padding-right: 15px;
  219. }
  220. ::v-deep .el-input__icon {
  221. width: 15px;
  222. /* 输入框下拉箭头或清除图标 默认 25 */
  223. }
  224. ::v-deep .el-input-group__append {
  225. padding: 0 5px;
  226. /* 控件默认 0 20px;*/
  227. }
  228. ::v-deep .el-icon-search:before {
  229. color: #00F;
  230. }
  231. .query {
  232. margin-left: 10px;
  233. font-size: 14px;
  234. color: #232748;
  235. font-weight: 400;
  236. font-family: "NotoSansSC-Regular";
  237. }
  238. .spanClass {
  239. padding: 0 2px 0 0;
  240. }
  241. </style>