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.

364 lines
12 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
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year 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 year 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
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 year ago
2 years ago
2 years ago
2 years ago
2 years ago
4 weeks ago
2 years ago
4 weeks 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>
  4. <div class="middlebox">
  5. <div class="contenttitle">
  6. 体检查询 /
  7. <span class="contenttitleBold"
  8. >人员未检组合项目</span
  9. >
  10. </div>
  11. </div>
  12. <div :style="'display: block;'">
  13. <div style="background-color: #fff; padding: 15px; border-radius: 8px;display: flex;flex-wrap: wrap; margin-bottom: 10px;height:35px;margin-top: 7px;">
  14. <div class="query">
  15. <span>体检单位</span>
  16. <el-input placeholder="请选择单位" v-model="patientRegister.query.cusOrgOCX" style="width:300px;" size="small" disabled>
  17. <el-button slot="append" icon="el-icon-search" @click="report.dialogCusOrgOCX = true"></el-button>
  18. </el-input>
  19. </div>
  20. <div class="query">
  21. <span>检查状态</span>
  22. <el-select v-model="patientRegister.query.completeFlag" placeholder="请选择" clearable style="width: 80px"
  23. size="small">
  24. <el-option v-for="item in dict.completeFlag" :key="item.id" :label="item.displayName" :value="item.id">
  25. </el-option>
  26. </el-select>
  27. </div>
  28. <div class="query" style="margin-top: 3px;">
  29. <el-checkbox v-model="patientRegister.query.containRefuse" >包含弃检</el-checkbox>
  30. </div>
  31. <div class="query">
  32. <el-button type="primary" @click="btnQuery" size="small" class="commonbutton">查询</el-button>
  33. </div>
  34. <div class="query">
  35. <el-button @click="handleExport" size="small" class="commonbutton"
  36. >导出excel</el-button
  37. >
  38. </div>
  39. </div>
  40. <div style="background-color: #fff; padding: 15px; border-radius: 8px;">
  41. <el-table :data="dataList" border width="100%" id="table" :height="window.pageHeight < 600 ? 415 : window.pageHeight - 185-20"
  42. row-key="id" size="small" highlight-current-row ref="dataList" >
  43. <el-table-column label="未检项目" width="300">
  44. <template slot-scope="scope">
  45. <div style="display: flex; flex-wrap: wrap;">
  46. <span v-for="(item,index) in scope.row.unCheckAsbitems" :key="item">{{index==0?'':''}}{{ item }}</span>
  47. <span v-for="(item,index) in scope.row.giveUpAsbitems" :key="item">{{ item }}</span>
  48. <!-- <el-tag type="danger" style="margin-left: 5px;" v-for="item in scope.row.unCheckAsbitems" :key="item"
  49. size="mini">{{ item }}</el-tag>
  50. <el-tag type="info" style="margin-left: 5px;" v-for="item in scope.row.giveUpAsbitems" :key="item"
  51. size="mini">{{ item }}</el-tag> -->
  52. </div>
  53. </template>
  54. </el-table-column>
  55. <el-table-column prop="patientRegisterNo" label="人员条码号" width="130"/>
  56. <el-table-column prop="patientNo" label="档案号" width="130"/>
  57. <el-table-column prop="medicalTimes" label="体检次数" width="70" align="center"/>
  58. <el-table-column prop="customerOrgName" label="单位" width="180" />
  59. <!--
  60. <el-table-column prop="customerOrgParentName" label="单位" width="180">
  61. <template slot-scope="scope">
  62. <div>{{ scope.row.customerOrgParentName ? scope.row.customerOrgParentName : scope.row.customerOrgName }}</div>
  63. </template>
  64. </el-table-column>
  65. -->
  66. <el-table-column prop="departmentName" label="部门" width="180" />
  67. <!--
  68. <el-table-column prop="customerOrgName" label="部门" width="180">
  69. <template slot-scope="scope">
  70. <div>{{ scope.row.customerOrgParentName ? scope.row.customerOrgName : "" }}</div>
  71. </template>
  72. </el-table-column>
  73. -->
  74. <el-table-column label="分组/套餐" width="150">
  75. <template slot-scope="scope">
  76. <!--
  77. <div v-if="scope.row.medicalPackageId !== dict.personOrgId && scope.row.customerOrgId === dict.personOrgId">
  78. {{ dddw(dict.medicalPackage, "id", scope.row.medicalPackageId, "displayName") }}
  79. </div>
  80. <div v-if="scope.row.medicalPackageId !== dict.personOrgId && scope.row.customerOrgId !== dict.personOrgId">
  81. {{ dddw(dict.customerOrgGroupAll, "id", scope.row.customerOrgGroupId, "displayName") }}
  82. </div>
  83. -->
  84. <div v-if="scope.row.medicalPackageName">
  85. {{ scope.row.medicalPackageName }}
  86. </div>
  87. <div v-if="scope.row.customerOrgGroupName">
  88. {{ scope.row.customerOrgGroupName }}
  89. </div>
  90. </template>
  91. </el-table-column>
  92. <el-table-column prop="patientName" label="姓名" width="80"/>
  93. <el-table-column prop="sexName" label="性别" align="center"/>
  94. <!--
  95. <el-table-column prop="sexId" label="性别" >
  96. <template slot-scope="scope">
  97. <div>{{ dddw(dict.sex, "id", scope.row.sexId, "displayName") }}</div>
  98. </template>
  99. </el-table-column>
  100. -->
  101. <el-table-column prop="age" label="年龄" align="center"/>
  102. <el-table-column prop="mobileTelephone" label="手机" width="100" />
  103. <el-table-column prop="telephone" label="电话" width="100" />
  104. </el-table>
  105. </div>
  106. </div>
  107. </div>
  108. <!--通用选单位体检次数分组的控件-->
  109. <el-dialog title="体检单位选择" :visible.sync="report.dialogCusOrgOCX"
  110. :close-on-click-modal="false" width="880px" height="600px">
  111. <CusOrgOCX/>
  112. </el-dialog>
  113. </div>
  114. </template>
  115. <script>
  116. import moment from "moment";
  117. import { mapState, mapActions } from "vuex";
  118. import { getapi, postapi, putapi, deletapi } from "@/api/api";
  119. import { dddw, objCopy, arrayReduce, arrayExistObj,tcdate } from "@/utlis/proFunc";
  120. import CusOrgOCX from "../../components/report/CusOrgOCX.vue"
  121. import { exportToExcel } from "../../utlis/Export2Excel";
  122. export default {
  123. components: {
  124. CusOrgOCX,
  125. },
  126. data() {
  127. return {
  128. dataList: [], //列表数据
  129. };
  130. },
  131. created() {
  132. this.patientRegister.query.containRefuse = true;
  133. this.dictInit();
  134. },
  135. //挂载完成
  136. mounted() {
  137. // this.btnQuery();
  138. },
  139. computed: {
  140. ...mapState(["window", "dict","patientRegister","report"]),
  141. },
  142. methods: {
  143. moment,dddw,
  144. //数据初始化
  145. dictInit() {
  146. //性别
  147. getapi("/api/app/sex").then((res) => {
  148. if (res.code == 1) {
  149. this.dict.sex = res.data;
  150. }
  151. });
  152. //体检中心
  153. getapi("/api/app/organization-units/organization-unit-by-is-peis").then(
  154. (res) => {
  155. if (res.code == 1) {
  156. this.dict.organization = res.data;
  157. }
  158. }
  159. );
  160. //体检单位树
  161. getapi("/api/app/customerorg/getbycodeall").then((res) => {
  162. if (res.code == 1) {
  163. this.patientRegister.customerOrgTreeAll = res.data;
  164. tcdate(this.patientRegister.customerOrgTreeAll);
  165. }
  166. });
  167. //体检类别
  168. getapi("/api/app/medical-type/in-filter").then((res) => {
  169. if (res.code == 1) {
  170. this.dict.medicalType = res.data;
  171. }
  172. });
  173. //人员类别
  174. getapi("/api/app/personnel-type/in-filter").then((res) => {
  175. if (res.code == 1) {
  176. this.dict.personnelType = res.data;
  177. }
  178. });
  179. //婚姻状况
  180. getapi("/api/app/MaritalStatus/GetMaritalStatusList").then((res) => {
  181. if (res.code == 1) {
  182. this.dict.maritalStatus = res.data;
  183. }
  184. });
  185. //性激素期
  186. getapi("/api/app/sex-hormone-term/in-filter").then((res) => {
  187. if (res.code == 1) {
  188. this.dict.sexHormoneTerm = res.data;
  189. }
  190. });
  191. //民族
  192. getapi("/api/app/nation/in-filter").then((res) => {
  193. if (res.code == 1) {
  194. this.dict.nation = res.data;
  195. }
  196. });
  197. //籍惯 ,出生地
  198. getapi("/api/app/birth-place/in-filter").then((res) => {
  199. if (res.code == 1) {
  200. this.dict.birthPlace = res.data;
  201. }
  202. });
  203. //套餐
  204. postapi("/api/app/medicalpackage/GetBasicList",{}).then((res) => {
  205. if (res.code == 1) {
  206. this.dict.medicalPackage = res.data;
  207. }
  208. });
  209. //分组,所有分组,不限单位,不限次数
  210. // getapi("/api/app/customer-org-group").then((res) => {
  211. // if (res.code == 1) {
  212. // this.dict.customerOrgGroupAll = res.data.items;
  213. // }
  214. // });
  215. //支付方式
  216. getapi("/api/app/pay-mode").then((res) => {
  217. if (res.code == 1) {
  218. this.dict.payMode = res.data;
  219. }
  220. });
  221. //体检类别 树结构
  222. getapi("/api/app/item-type/by-code-all").then((res) => {
  223. if (res.code == 1) {
  224. this.dict.itemTypeTree = res.data;
  225. tcdate(this.dict.itemTypeTree);
  226. }
  227. });
  228. postapi("/api/app/asbitem/GetBasicList",{}).then((res) => {
  229. if (res.code == 1) {
  230. this.dict.asbItemAll = res.data;
  231. }
  232. });
  233. },
  234. handleExport() {
  235. exportToExcel("#table", "人员未检组合项目", false);
  236. },
  237. //查询
  238. btnQuery() {
  239. let body = {}, customerOrgs = [];
  240. // {
  241. // "customerOrgs": [
  242. // {
  243. // "customerOrgId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  244. // "customerOrgRegisterId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  245. // "customerOrgGroupId": [
  246. // "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  247. // ],
  248. // "dateType": "string",
  249. // "startDate": "string",
  250. // "endDate": "string"
  251. // }
  252. // ],
  253. // "completeFlag": "string"
  254. // }
  255. if (this.report.dataCusOrgOCX.length > 0) {
  256. this.report.dataCusOrgOCX.forEach(e => {
  257. let dateType = '1'
  258. switch (e.dateType) {
  259. case 'medicalStartDate':
  260. dateType = '2'
  261. break;
  262. case 'checkDate':
  263. dateType = '4'
  264. break;
  265. case 'summaryDate':
  266. dateType = '3'
  267. break;
  268. case 'sumCheckDate':
  269. dateType = '5'
  270. break;
  271. default:
  272. break;
  273. }
  274. let rd = {
  275. startDate: moment(e.startDate).format('yyyy-MM-DD'),
  276. endDate: moment(e.endDate).format('yyyy-MM-DD'),
  277. dateType
  278. }
  279. if (e.customerOrgId) {
  280. rd.customerOrgId = e.customerOrgId
  281. if (e.customerOrgId == this.dict.personOrgId) {
  282. rd.customerOrgRegisterId = null
  283. rd.customerOrgGroupId = []
  284. } else {
  285. rd.customerOrgRegisterId = e.customerOrgRegister.id
  286. rd.customerOrgGroupId = e.customerOrgGroupIds
  287. }
  288. }
  289. customerOrgs.push(rd)
  290. })
  291. }
  292. body.customerOrgs = customerOrgs
  293. if (this.patientRegister.query.completeFlag) body.completeFlag = this.patientRegister.query.completeFlag
  294. if (this.patientRegister.query.containRefuse){
  295. body.isGiveUpCheck = 'Y'
  296. }else{
  297. body.isGiveUpCheck = 'N'
  298. }
  299. //console.log('/api/app/peisreport/getpatientregisterreport',body)
  300. postapi('/api/app/peisreport/getpatientregisteruncheckedreport', body).then(res => {
  301. if (res.code != -1) {
  302. this.dataList = res.data;
  303. }
  304. })
  305. },
  306. },
  307. //监听事件
  308. watch: {
  309. //触发查询事件
  310. // "patientRegister.query.times"(newVal, oldVal) {
  311. // if (newVal != oldVal) {
  312. // //alert('触发查询事件')
  313. // this.query();
  314. // }
  315. // },
  316. },
  317. };
  318. </script>
  319. <style scoped>
  320. @import '../../assets/css/global_button.css';
  321. @import '../../assets/css/global_card.css';
  322. @import '../../assets/css/global_input.css';
  323. @import '../../assets/css/global_table.css';
  324. @import '../../assets/css/global.css';
  325. .query {
  326. margin-left: 10px;
  327. font-size: 14px;
  328. color: #232748;
  329. font-weight: 400;
  330. font-family: "NotoSansSC-Regular";
  331. }
  332. ::v-deep .el-icon-search:before {
  333. color: #00F;
  334. }
  335. </style>