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.

365 lines
12 KiB

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