index.vue 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  4. <el-form-item label="患者姓名" prop="patientName">
  5. <el-input v-model="queryParams.patientName" placeholder="请输入患者姓名" clearable size="small"
  6. @keyup.enter.native="handleQuery" />
  7. </el-form-item>
  8. <el-form-item>
  9. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  10. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  11. </el-form-item>
  12. </el-form>
  13. <el-tabs type="card" v-model="queryParams.type" @tab-click="handleClickX">
  14. <el-tab-pane label="全部" name="0"></el-tab-pane>
  15. <el-tab-pane label="我的" name="1"></el-tab-pane>
  16. </el-tabs>
  17. <el-table v-loading="loading" border :data="list" @selection-change="handleSelectionChange">
  18. <el-table-column type="selection" width="55" align="center" />
  19. <el-table-column label="患者姓名" align="center" prop="patientName" width="120px" />
  20. <el-table-column label="性别" align="center" prop="gender" width="120px">
  21. <template slot-scope="scope">
  22. <el-tag v-if="scope.row.gender == 0">未知</el-tag>
  23. <el-tag v-if="scope.row.gender == 1">男</el-tag>
  24. <el-tag v-if="scope.row.gender == 2">女</el-tag>
  25. </template>
  26. </el-table-column>
  27. <el-table-column label="患者年龄" align="center" prop="age" width="120px" />
  28. <el-table-column label="患者电话" align="center" prop="phone" width="120px" />
  29. <el-table-column label="日期" align="center" prop="dateTime" width="120px" />
  30. <el-table-column label="身体状况" align="center" prop="physicalCondition" :show-overflow-tooltip="true" />
  31. <el-table-column label="患者是否答复" align="center" prop="userStatus" width="120px">
  32. <template slot-scope="scope">
  33. <el-tag v-if="scope.row.userStatus == 0">未答复</el-tag>
  34. <el-tag type="success" v-if="scope.row.userStatus == 1">已答复</el-tag>
  35. </template>
  36. </el-table-column>
  37. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150px">
  38. <template slot-scope="scope">
  39. <el-button :disabled="scope.row.userStatus == 1" size="mini" type="text"
  40. @click="handleFill(scope.row)">填写初诊单</el-button>
  41. </template>
  42. </el-table-column>
  43. </el-table>
  44. <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
  45. :limit.sync="queryParams.pageSize" @pagination="getList" />
  46. <el-dialog title="填写初诊单" :visible.sync="open" width="1000px" append-to-body>
  47. <el-form ref="form" :model="form" :rules="rules" label-width="110px">
  48. <el-row>
  49. <el-col :span="12">
  50. <el-form-item label="患者姓名" prop="patientName">
  51. <el-input disabled v-model="form.patientName" placeholder="请输入患者姓名" />
  52. </el-form-item>
  53. </el-col>
  54. <el-col :span="12">
  55. <el-form-item label="年龄" prop="age">
  56. <el-input disabled v-model="form.age" label="年龄"></el-input>
  57. </el-form-item>
  58. </el-col>
  59. </el-row>
  60. <el-row>
  61. <el-col :span="12">
  62. <el-form-item label="患者电话" prop="phone">
  63. <el-input disabled v-model="form.phone" placeholder="请输入电话" />
  64. </el-form-item>
  65. </el-col>
  66. <el-col :span="12">
  67. <el-form-item label="性别" prop="gender">
  68. <el-select disabled v-model="form.gender">
  69. <el-option label="未知" :value="0"></el-option>
  70. <el-option label="男性" :value="1"></el-option>
  71. <el-option label="女性" :value="2"></el-option>
  72. </el-select>
  73. </el-form-item>
  74. </el-col>
  75. </el-row>
  76. <el-form-item label="身体状况" prop="physicalCondition">
  77. <el-input v-model="form.physicalCondition" type="textarea" placeholder="请输入内容" />
  78. </el-form-item>
  79. <el-form-item label="初步诊断" prop="firstDiagnosis">
  80. <el-input v-model="form.firstDiagnosis" type="textarea" placeholder="请输入内容" />
  81. </el-form-item>
  82. <el-row>
  83. <el-col :span="12">
  84. <el-form-item label="日期" prop="dateTime">
  85. <el-date-picker clearable size="small" v-model="form.dateTime" type="date"
  86. value-format="yyyy-MM-dd" placeholder="选择日期">
  87. </el-date-picker>
  88. </el-form-item>
  89. </el-col>
  90. </el-row>
  91. </el-form>
  92. <div slot="footer" class="dialog-footer">
  93. <el-button type="primary" @click="submitForm">确 定</el-button>
  94. <el-button @click="cancel">取 消</el-button>
  95. </div>
  96. </el-dialog>
  97. </div>
  98. </template>
  99. <script>
  100. import { getDiagnosisList, fill, detail } from "@/api/diagnosis.js";
  101. export default {
  102. name: "diagnosis",
  103. data() {
  104. return {
  105. queryParams: {
  106. pageNum: 1,
  107. pageSize: 10,
  108. },
  109. // 遮罩层
  110. loading: true,
  111. // 导出遮罩层
  112. exportLoading: false,
  113. // 选中数组
  114. ids: [],
  115. // 非单个禁用
  116. single: true,
  117. // 非多个禁用
  118. multiple: true,
  119. // 显示搜索条件
  120. showSearch: true,
  121. // 总条数
  122. total: 0,
  123. list: [],
  124. // 弹出层标题
  125. title: "",
  126. // 是否显示弹出层
  127. open: false,
  128. queryParams: {
  129. pageNum: 1,
  130. pageSize: 10,
  131. type: "0",
  132. },
  133. // 表单参数
  134. form: {},
  135. // 表单校验
  136. rules: {
  137. }
  138. }
  139. },
  140. created() {
  141. this.getList();
  142. },
  143. methods: {
  144. submitForm() {
  145. this.$refs["form"].validate(valid => {
  146. if (valid) {
  147. fill(this.form).then(res => {
  148. this.msgSuccess("填写成功");
  149. this.open = false;
  150. this.getList();
  151. })
  152. }
  153. });
  154. },
  155. // 取消按钮
  156. cancel() {
  157. this.open = false;
  158. },
  159. handleFill(row) {
  160. detail(row.id).then(res => {
  161. this.form = res.data
  162. })
  163. this.open = true;
  164. },
  165. getList() {
  166. this.loading = true;
  167. getDiagnosisList(this.queryParams).then(response => {
  168. this.list = response.data.list;
  169. this.total = response.data.total;
  170. this.loading = false;
  171. });
  172. },
  173. //切换
  174. handleClickX(tab, event) {
  175. this.queryParams.type = tab.name;
  176. this.handleQuery();
  177. },
  178. // 取消按钮
  179. cancel() {
  180. this.open = false;
  181. this.reset();
  182. },
  183. // 表单重置
  184. reset() {
  185. this.form = {
  186. };
  187. this.resetForm("form");
  188. },
  189. /** 搜索按钮操作 */
  190. handleQuery() {
  191. this.queryParams.pageNum = 1;
  192. this.getList();
  193. },
  194. /** 重置按钮操作 */
  195. resetQuery() {
  196. this.resetForm("queryForm");
  197. this.handleQuery();
  198. },
  199. // 多选框选中数据
  200. handleSelectionChange(selection) {
  201. this.ids = selection.map(item => item.patientId)
  202. this.single = selection.length !== 1
  203. this.multiple = !selection.length
  204. }
  205. }
  206. };
  207. </script>