Index.vue 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. <style lang="scss">
  2. </style>
  3. <template>
  4. <section class="content">
  5. <div class="breadcrumb">
  6. <el-breadcrumb separator="/">
  7. <el-breadcrumb-item><a href="/">师生管理</a></el-breadcrumb-item>
  8. <el-breadcrumb-item>教师管理</el-breadcrumb-item>
  9. </el-breadcrumb>
  10. </div>
  11. <el-form :model="queryParams" label-width="80px" class="filter-form" :inine="true">
  12. <el-row>
  13. <el-col :span="4">
  14. <el-form-item label="学校">
  15. <el-select size="mini" v-model="queryParams.school_id">
  16. <el-option label="人大附中" value="人大附中">人大附中</el-option>
  17. </el-select>
  18. </el-form-item>
  19. </el-col>
  20. <el-col :span="4">
  21. <el-form-item label="年级" v-model="queryParams.grade_id">
  22. <el-select size="mini">
  23. <el-option label="高三一班" value="高三一班">高三一班</el-option>
  24. </el-select>
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="8">
  28. <el-form-item label-width="10" style="margin-left: 10px">
  29. <el-button type="primary" @click="getData" size="mini"
  30. >筛选</el-button
  31. >
  32. <el-button
  33. type="primary"
  34. plain
  35. icon="el-icon-plus"
  36. size="mini"
  37. @click="handleAdd"
  38. >新增</el-button
  39. >
  40. </el-form-item>
  41. </el-col>
  42. </el-row>
  43. </el-form>
  44. <el-table
  45. v-loading="loading"
  46. :data="list"
  47. style="width: 100%; margin-top: 10px"
  48. height="50vh"
  49. >
  50. <el-table-column align="center" prop="name" label="班级" />
  51. <el-table-column align="center" prop="phone" label="年级" />
  52. <el-table-column label="教师">
  53. <template slot-scope="scope">
  54. <el-link type="primary">查看</el-link>
  55. </template>
  56. </el-table-column>
  57. <el-table-column label="学生">
  58. <template slot-scope="scope">
  59. <el-link type="primary">查看</el-link>
  60. </template>
  61. </el-table-column>
  62. <el-table-column align="center" prop="ctime" label="创建时间" />
  63. <el-table-column align="center" prop="date" label="操作" width="320">
  64. <template slot-scope="scope">
  65. <el-button @click="edit(scope.row.id)" size="mini" type="warning"
  66. >编辑</el-button
  67. >
  68. <el-button @click="del(scope.row.id)" size="mini" type="danger"
  69. >删除</el-button
  70. >
  71. </template>
  72. </el-table-column>
  73. </el-table>
  74. <Page
  75. ref="pageButton"
  76. :current="form.page"
  77. :page_size="form.page_size"
  78. :total="total"
  79. @pageChange="gopage"
  80. />
  81. <!-- 新增医生 -->
  82. <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  83. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  84. <el-form-item label="医生类型" prop="role">
  85. <el-select
  86. v-model="form.role"
  87. placeholder="请选择医生类型"
  88. filterable
  89. >
  90. <el-option
  91. v-for="item in $const.doctorRoleList"
  92. :key="item.value"
  93. :label="item.label"
  94. :value="item.value"
  95. ></el-option>
  96. </el-select>
  97. </el-form-item>
  98. <el-form-item label="带教医生" prop="parent_id" v-if="form.role == 3">
  99. <el-select
  100. v-model="form.parent_id"
  101. placeholder="请输入医生姓名"
  102. clearable
  103. filterable
  104. size="mini"
  105. >
  106. <el-option
  107. v-for="item in doctorList"
  108. :key="item.value"
  109. :label="item.name"
  110. :value="item.id"
  111. >
  112. </el-option>
  113. </el-select>
  114. </el-form-item>
  115. <el-form-item label="名称" prop="name">
  116. <el-input
  117. clearable
  118. v-model="form.name"
  119. placeholder="请输入名称"
  120. ></el-input>
  121. </el-form-item>
  122. <el-form-item label="手机号" prop="phone">
  123. <el-input
  124. clearable
  125. v-model="form.phone"
  126. placeholder="请输入手机号"
  127. ></el-input>
  128. </el-form-item>
  129. <el-form-item label="医院" prop="hospital_name">
  130. <el-input
  131. clearable
  132. v-model="form.hospital_name"
  133. placeholder="请输入医院"
  134. ></el-input>
  135. </el-form-item>
  136. <!-- <el-form-item label="图片" prop>
  137. <el-upload
  138. class="avatar-uploader"
  139. action="/api/admin/uploadfile"
  140. :data="{watermark:0}"
  141. :show-file-list="false"
  142. :on-success="handleAvatarSuccess"
  143. :before-upload="beforeAvatarUpload"
  144. >
  145. <img v-if="form.img" :src="form.img" class="avatar" />
  146. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  147. </el-upload>
  148. </el-form-item> -->
  149. </el-form>
  150. <div slot="footer" class="dialog-footer">
  151. <el-button type="primary" @click="submitForm">确 定</el-button>
  152. <el-button @click="open = false">取 消</el-button>
  153. </div>
  154. </el-dialog>
  155. </section>
  156. </template>
  157. <script>
  158. import Page from "../../components/Page";
  159. export default {
  160. components: {
  161. Page,
  162. },
  163. data() {
  164. return {
  165. loading: false,
  166. queryParams: {
  167. page: 1,
  168. },
  169. form: {},
  170. form1: {},
  171. form2: {},
  172. list: [{}, {}],
  173. total: 0,
  174. title: "新增用户",
  175. open: false,
  176. doctorList: [],
  177. rules: {},
  178. };
  179. },
  180. methods: {
  181. del(id) {
  182. this.$confirm("确认删除?", "提示", {
  183. type: "warning",
  184. }).then(() => {
  185. this.$api
  186. .delDoctorInfo({
  187. id: id,
  188. })
  189. .then((res) => {
  190. if (!res.data.code) {
  191. this.$msgSuccess("删除成功");
  192. this.getData();
  193. } else {
  194. this.$msgError(res.data.message);
  195. }
  196. });
  197. });
  198. },
  199. gopage(size) {
  200. if (size) {
  201. this.queryParams.page_size = size;
  202. }
  203. this.queryParams.page = this.$refs.pageButton.page;
  204. this.getData();
  205. },
  206. getData() {
  207. this.loading = true;
  208. this.$api.getDoctorsList(this.queryParams).then((res) => {
  209. this.list = res.data.data.list;
  210. this.total = res.data.data.total;
  211. this.loading = false;
  212. });
  213. this.$api
  214. .getDoctorsSearchList({
  215. })
  216. .then((res) => {
  217. this.doctorList = res.data.data;
  218. this.$set(this.doctorList, res.data.data);
  219. // this.loading = false;
  220. });
  221. },
  222. handleAdd() {
  223. this.open = true;
  224. this.title = "新增医生";
  225. this.form = {};
  226. },
  227. edit(id) {
  228. this.title = "编辑医生";
  229. this.$api
  230. .getDoctorInfo({
  231. id: id,
  232. })
  233. .then((res) => {
  234. this.form = res.data.data;
  235. this.open = true;
  236. });
  237. },
  238. /** 提交按钮 */
  239. submitForm() {
  240. this.$refs["form"].validate((valid) => {
  241. if (valid) {
  242. if (this.form.id != null) {
  243. this.$api.editDoctorInfo(this.form).then((res) => {
  244. if (res.data.code == 0) {
  245. this.msgSuccess("成功!");
  246. this.open = false;
  247. this.getData();
  248. } else {
  249. this.msgError(res.data.message);
  250. }
  251. });
  252. } else {
  253. this.$api.addDoctorInfo(this.form).then((res) => {
  254. if (res.data.code == 0) {
  255. this.msgSuccess("成功!");
  256. this.open = false;
  257. this.getData();
  258. } else {
  259. this.msgError(res.data.message);
  260. }
  261. });
  262. }
  263. }
  264. });
  265. },
  266. remoteMethod(query) {
  267. if (query !== "") {
  268. // this.loading = true;
  269. this.$api
  270. .getDoctorsSearchList({
  271. name: query,
  272. })
  273. .then((res) => {
  274. this.doctorList = res.data.data;
  275. this.$set(this.doctorList, res.data.data);
  276. // this.loading = false;
  277. });
  278. } else {
  279. this.doctorList = [];
  280. }
  281. },
  282. },
  283. created() {
  284. this.getData();
  285. },
  286. };
  287. </script>