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.

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