airDisinfect.vue 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534
  1. <template>
  2. <div class="main-contain">
  3. <div class="position">
  4. <bread-crumb :crumbs='crumbs'></bread-crumb>
  5. </div>
  6. <div class="app-container">
  7. <div style="float:right;margin-bottom:10px;">
  8. <el-button type="primary" @click="dialogFormVisible = true">新增</el-button>
  9. <!-- <el-button type="danger">删除</el-button> -->
  10. </div>
  11. <el-table :data="tableData" border style="width: 100%" :row-style="{ color: '#303133' }" :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" >
  12. <el-table-column type="selection" width="55" align="center"></el-table-column>
  13. <el-table-column label="时间" width="120">
  14. <template slot-scope="scope">
  15. {{getTime(scope.row.start_time)}}
  16. </template>
  17. </el-table-column>
  18. <el-table-column label="班次" width="120">
  19. <template slot-scope="scope">
  20. <span v-if="scope.row.class == 1">上午</span>
  21. <span v-if="scope.row.class == 2">中午</span>
  22. <span v-if="scope.row.class == 3">下午</span>
  23. </template>
  24. </el-table-column>
  25. <el-table-column label="创建日期" width="120">
  26. <template slot-scope="scope">
  27. {{getTime(scope.row.created_ime)}}
  28. </template>
  29. </el-table-column>
  30. <el-table-column label="消毒方式" width="120">
  31. <template slot-scope="scope">
  32. {{scope.row.disinfection_methods}}
  33. </template>
  34. </el-table-column>
  35. <el-table-column label="消毒液" width="120">
  36. <template slot-scope="scope">
  37. {{scope.row.disinfection_fluid}}
  38. </template>
  39. </el-table-column>
  40. <el-table-column label="顺序号" width="80">
  41. <template slot-scope="scope">
  42. {{scope.row.sort}}
  43. </template>
  44. </el-table-column>
  45. <el-table-column label="创建人" width="80">
  46. <template slot-scope="scope">
  47. {{getName(scope.row.creator)}}
  48. </template>
  49. </el-table-column>
  50. <el-table-column label="检查结果" width="180">
  51. <template slot-scope="scope">
  52. {{scope.row.detection_result}}
  53. </template>
  54. </el-table-column>
  55. <el-table-column label="检查时间" width="120">
  56. <template slot-scope="scope">
  57. {{getTime(scope.row.detection_time)}}
  58. </template>
  59. </el-table-column>
  60. <el-table-column label="数据上传时间" width="120">
  61. <template slot-scope="scope">
  62. {{getTime(scope.row.upload_time)}}
  63. </template>
  64. </el-table-column>
  65. <el-table-column label="修改标志" width="90">
  66. <template slot-scope="scope">
  67. <span v-if="scope.row.modifications == 1">正常</span>
  68. <span v-if="scope.row.modifications == 2">撤消</span>
  69. </template>
  70. </el-table-column>
  71. <el-table-column label="操作" align="center">
  72. <template slot-scope="scope">
  73. <el-button
  74. size="mini"
  75. type="primary"
  76. @click="handleEdit(scope.row.id)">编辑</el-button>
  77. <el-button
  78. size="mini"
  79. type="danger"
  80. @click="handleDelete(scope.row.id)">删除</el-button>
  81. </template>
  82. </el-table-column>
  83. </el-table>
  84. <el-pagination
  85. @size-change="handleSizeChange"
  86. @current-change="handleCurrentChange"
  87. :page-sizes="[10, 20, 50, 100]"
  88. :page-size="10"
  89. background
  90. style="margin-top:20px;float: right"
  91. layout="total, sizes, prev, pager, next, jumper"
  92. :total="total"
  93. >
  94. </el-pagination>
  95. <el-dialog
  96. class="centerDialog"
  97. width="1000px"
  98. title="新增空气消毒表"
  99. :visible.sync="dialogFormVisible">
  100. <el-form :model="form" ref="form" class="airForm" :rules="airRules">
  101. <el-form-item label="时间" label-width="110px" required prop="start_time">
  102. <el-date-picker
  103. value-format="yyyy-MM-dd"
  104. v-model="form.start_time"
  105. type="date"
  106. placeholder="选择日期时间">
  107. </el-date-picker>
  108. </el-form-item>
  109. <el-form-item label="班次" label-width="110px" required prop="class">
  110. <el-select v-model="form.class" placeholder="请选择活动区域">
  111. <el-option label="上午" value="1"></el-option>
  112. <el-option label="下午" value="2"></el-option>
  113. <el-option label="晚上" value="3"></el-option>
  114. </el-select>
  115. </el-form-item>
  116. <el-form-item label="创建日期" label-width="110px" required prop="created_time">
  117. <el-date-picker
  118. value-format="yyyy-MM-dd"
  119. v-model="form.created_time"
  120. type="date"
  121. placeholder="选择日期时间">
  122. </el-date-picker>
  123. </el-form-item>
  124. <el-form-item label="消毒方式" label-width="110px">
  125. <el-input v-model="form.disinfection_methods"></el-input>
  126. </el-form-item>
  127. <el-form-item label="消毒液" label-width="110px">
  128. <el-input v-model="form.disinfection_fluid"></el-input>
  129. </el-form-item>
  130. <el-form-item label="顺序号" label-width="110px" required prop="sort">
  131. <el-input v-model="form.sort"></el-input>
  132. </el-form-item>
  133. <el-form-item label="创建人" label-width="110px" required prop="creator">
  134. <el-select v-model="form.creator" placeholder="请选择">
  135. <el-option
  136. v-for="(item,index) in docList"
  137. :key="index"
  138. :label="item.user_name"
  139. :value="item.admin_user_id">
  140. </el-option>
  141. </el-select>
  142. </el-form-item>
  143. <el-form-item label="检测时间" label-width="110px" required prop="detection_time">
  144. <el-date-picker
  145. value-format="yyyy-MM-dd"
  146. v-model="form.detection_time"
  147. type="date"
  148. placeholder="选择日期时间">
  149. </el-date-picker>
  150. </el-form-item>
  151. <el-form-item label="检测结果" label-width="110px">
  152. <el-input v-model="form.detection_result"></el-input>
  153. </el-form-item>
  154. <el-form-item label="上传时间" label-width="110px">
  155. <el-date-picker
  156. value-format="yyyy-MM-dd"
  157. v-model="form.upload_time"
  158. type="date"
  159. placeholder="选择日期时间">
  160. </el-date-picker>
  161. </el-form-item>
  162. <el-form-item label="检测合格" label-width="110px" required prop="check_out">
  163. <div>
  164. <el-radio v-model="form.check_out" label="1">是</el-radio>
  165. <el-radio v-model="form.check_out" label="2">否</el-radio>
  166. </div>
  167. </el-form-item>
  168. <el-form-item label="修改标志" label-width="110px" required prop="modifications">
  169. <el-select v-model="form.modifications" placeholder="请选择">
  170. <el-option
  171. v-for="(item,index) in options"
  172. :key="index"
  173. :label="item.name"
  174. :value="item.id">
  175. </el-option>
  176. </el-select>
  177. </el-form-item>
  178. </el-form>
  179. <div slot="footer" class="dialog-footer">
  180. <el-button @click="dialogFormVisible = false">取 消</el-button>
  181. <el-button type="primary" @click="saveAirDisinfect('form')">保 存</el-button>
  182. </div>
  183. </el-dialog>
  184. <el-dialog
  185. class="centerDialog"
  186. width="1000px"
  187. title="编辑空气消毒表"
  188. :visible.sync="editDialogFormVisible">
  189. <el-form :model="form" ref="form" class="airForm" :rules="airRules">
  190. <el-form-item label="时间" label-width="110px" required prop="start_time">
  191. <el-date-picker
  192. value-format="yyyy-MM-dd"
  193. v-model="form.start_time"
  194. type="date"
  195. placeholder="选择日期时间">
  196. </el-date-picker>
  197. </el-form-item>
  198. <el-form-item label="班次" label-width="110px" required prop="class">
  199. <el-select v-model="form.class" placeholder="请选择活动区域">
  200. <el-option label="上午" value="1"></el-option>
  201. <el-option label="下午" value="2"></el-option>
  202. <el-option label="晚上" value="3"></el-option>
  203. </el-select>
  204. </el-form-item>
  205. <el-form-item label="创建日期" label-width="110px" required prop="created_time">
  206. <el-date-picker
  207. value-format="yyyy-MM-dd"
  208. v-model="form.created_time"
  209. type="date"
  210. placeholder="选择日期时间">
  211. </el-date-picker>
  212. </el-form-item>
  213. <el-form-item label="消毒方式" label-width="110px">
  214. <el-input v-model="form.disinfection_methods"></el-input>
  215. </el-form-item>
  216. <el-form-item label="消毒液" label-width="110px">
  217. <el-input v-model="form.disinfection_fluid"></el-input>
  218. </el-form-item>
  219. <el-form-item label="顺序号" label-width="110px" required prop="sort">
  220. <el-input v-model="form.sort"></el-input>
  221. </el-form-item>
  222. <el-form-item label="创建人" label-width="110px" required prop="creator">
  223. <el-select v-model="form.creator" placeholder="请选择">
  224. <el-option
  225. v-for="(item,index) in docList"
  226. :key="index"
  227. :label="item.user_name"
  228. :value="item.admin_user_id">
  229. </el-option>
  230. </el-select>
  231. </el-form-item>
  232. <el-form-item label="检测时间" label-width="110px" required prop="detection_time">
  233. <el-date-picker
  234. value-format="yyyy-MM-dd"
  235. v-model="form.detection_time"
  236. type="date"
  237. placeholder="选择日期时间">
  238. </el-date-picker>
  239. </el-form-item>
  240. <el-form-item label="检测结果" label-width="110px">
  241. <el-input v-model="form.detection_result"></el-input>
  242. </el-form-item>
  243. <el-form-item label="上传时间" label-width="110px">
  244. <el-date-picker
  245. value-format="yyyy-MM-dd"
  246. v-model="form.upload_time"
  247. type="date"
  248. placeholder="选择日期时间">
  249. </el-date-picker>
  250. </el-form-item>
  251. <el-form-item label="检测合格" label-width="110px" required prop="check_out">
  252. <div>
  253. <el-radio v-model="form.check_out" label="1">是</el-radio>
  254. <el-radio v-model="form.check_out" label="2">否</el-radio>
  255. </div>
  256. </el-form-item>
  257. <el-form-item label="修改标志" label-width="110px" required prop="modifications">
  258. <el-select v-model="form.modifications" placeholder="请选择">
  259. <el-option
  260. v-for="(item,index) in options"
  261. :key="index"
  262. :label="item.name"
  263. :value="item.id">
  264. </el-option>
  265. </el-select>
  266. </el-form-item>
  267. </el-form>
  268. <div slot="footer" class="dialog-footer">
  269. <el-button @click="editDialogFormVisible = false">取 消</el-button>
  270. <el-button type="primary" @click="updateAirDisinfect('form')">保 存</el-button>
  271. </div>
  272. </el-dialog>
  273. </div>
  274. </div>
  275. </template>
  276. <script>
  277. import BreadCrumb from '@/xt_pages/components/bread-crumb'
  278. import { getAllDoctorList,saveAirDisinfect,getAirList,getAirDisinfectDetail,updateAirDisinfect,deleteAirDisinfect } from "@/api/device"
  279. import { uParseTime } from '@/utils/tools'
  280. export default {
  281. name: 'airDisinfect',
  282. components: {
  283. BreadCrumb
  284. },
  285. data() {
  286. return {
  287. crumbs: [
  288. { path: false, name: '院感管理' },
  289. { path: false, name: '透析室空气消毒记录表' }
  290. ],
  291. dialogFormVisible:false,
  292. editDialogFormVisible:false,
  293. tableData: [],
  294. form: {
  295. id:0,
  296. start_time:"",
  297. created_time:"",
  298. class:"",
  299. disinfection_methods:"",
  300. disinfection_fluid:"",
  301. sort:"",
  302. creator:"",
  303. detection_time:"",
  304. detection_result:"",
  305. upload_time:"",
  306. check_out:"1",
  307. modifications:"",
  308. },
  309. value1:'',
  310. docList:[],
  311. options:[
  312. {id:1,name:"正常"},
  313. {id:2,name:"撤销"}
  314. ],
  315. airRules: {
  316. start_time: [{ required: true, message: "请选择时间", trigger: "blur" }],
  317. class:[{required:true,message:"请选择班次",trigger:"blur"}],
  318. created_time:[{required:true,message:"请选择创建时间",trigger:"blur"}],
  319. sort:[{required:true,message:"请填写顺序号",trigger:"blur"}],
  320. detection_time:[{required:true,message:"请选择检测时间",trigger:"blur"}],
  321. check_out:[{required:true,message:"请选择检验合格",trigger:"blur"}],
  322. modifications:[{required:true,message:"请选择修改标志",trigger:"blur"}],
  323. creator:[{required:true,message:"请选择创建人",trigger:"blur"}]
  324. },
  325. limit:20,
  326. page:1,
  327. total:0,
  328. }
  329. },
  330. created(){
  331. this.getlist()
  332. this.getAirList()
  333. },
  334. methods: {
  335. getlist(){
  336. getAllDoctorList().then(response=>{
  337. if(response.data.state == 1){
  338. var list = response.data.data.list
  339. console.log("list222222",list)
  340. this.docList = list
  341. }
  342. })
  343. },
  344. saveAirDisinfect(formName){
  345. this.$refs[formName].validate(valid=>{
  346. if(valid){
  347. var params = {
  348. start_time:this.form.start_time,
  349. class:parseInt(this.form.class),
  350. created_time:this.form.created_time,
  351. disinfection_methods:this.form.disinfection_methods,
  352. disinfection_fluid:this.form.disinfection_fluid,
  353. sort:this.form.sort,
  354. creator:this.form.creator,
  355. detection_time:this.form.detection_time,
  356. detection_result:this.form.detection_result,
  357. upload_time:this.form.upload_time,
  358. check_out:parseInt(this.form.check_out),
  359. modifications:parseInt(this.form.modifications),
  360. }
  361. console.log("params",params)
  362. saveAirDisinfect(params).then(response=>{
  363. if(response.data.state == 1){
  364. var list = response.data.data.list
  365. console.log("list",list)
  366. this.$message.success("保存成功!")
  367. this.dialogFormVisible = false
  368. this.getAirList()
  369. this.form.class = ""
  370. this.form.start_time = ""
  371. this.form.created_ime = ""
  372. this.form.disinfection_fluid = ""
  373. this.form.disinfection_methods = ""
  374. this.form.sort = ""
  375. this.form.creator = ""
  376. this.form.detection_time = ""
  377. this.form.detection_result = ""
  378. this.form.upload_time = ""
  379. }
  380. })
  381. }
  382. })
  383. },
  384. getAirList(){
  385. var params = {
  386. limit:this.limit,
  387. page:this.page,
  388. }
  389. getAirList(params).then(response=>{
  390. if(response.data.state == 1){
  391. var list = response.data.data.list
  392. var total = response.data.data.total
  393. this.tableData = list
  394. this.total = total
  395. console.log("list222",list)
  396. console.log("total",total)
  397. }
  398. })
  399. },
  400. getTime(val) {
  401. if(val == ""){
  402. return ""
  403. }else {
  404. return uParseTime(val, '{y}-{m}-{d}')
  405. }
  406. },
  407. getName(id){
  408. var name = ""
  409. for(let i=0;i<this.docList.length;i++){
  410. if(id == this.docList[i].admin_user_id){
  411. name = this.docList[i].user_name
  412. }
  413. }
  414. return name
  415. },
  416. handleCurrentChange(val) {
  417. this.page = val
  418. this.getAirList()
  419. },
  420. handleSizeChange(val){
  421. this.limit =val
  422. this.getAirList()
  423. },
  424. handleEdit(id){
  425. this.editDialogFormVisible = true
  426. getAirDisinfectDetail(id).then(response=>{
  427. if(response.data.state ==1){
  428. var detail = response.data.data.detail
  429. console.log("detail",detail)
  430. this.form.id = detail.id
  431. this.form.start_time = this.getTime(detail.start_time)
  432. this.form.class = detail.class.toString()
  433. this.form.created_ime = this.getTime(detail.created_time)
  434. this.form.disinfection_methods = detail.disinfection_methods
  435. this.form.disinfection_fluid = detail.disinfection_fluid
  436. this.form.sort = detail.sort
  437. this.form.creator = detail.creator
  438. this.form.detection_time = this.getTime(detail.detection_time)
  439. this.form.detection_result = detail.detection_result
  440. this.form.upload_time = this.getTime(detail.upload_time)
  441. this.form.check_out = detail.check_out.toString()
  442. this.form.modifications = detail.modifications
  443. }
  444. })
  445. },
  446. updateAirDisinfect(formName){
  447. this.$refs[formName].validate(valid=>{
  448. if(valid){
  449. var params = {
  450. id:this.form.id,
  451. start_time:this.form.start_time,
  452. class:parseInt(this.form.class),
  453. created_time:this.form.created_time,
  454. disinfection_methods:this.form.disinfection_methods,
  455. disinfection_fluid:this.form.disinfection_fluid,
  456. sort:this.form.sort,
  457. creator:this.form.creator,
  458. detection_time:this.form.detection_time,
  459. detection_result:this.form.detection_result,
  460. upload_time:this.form.upload_time,
  461. check_out:parseInt(this.form.check_out),
  462. modifications:parseInt(this.form.modifications),
  463. }
  464. console.log("params",params)
  465. updateAirDisinfect(params).then(response=>{
  466. if(response.data.state ==1){
  467. var detection = response.data.data.detection
  468. this.editDialogFormVisible = false
  469. this.$message.success("修改成功!")
  470. this.getAirList()
  471. }
  472. })
  473. }
  474. })
  475. },
  476. handleDelete(id,index) {
  477. this.$confirm('确认删除这条记录?', '删除记录', {
  478. confirmButtonText: '确定',
  479. cancelButtonText: '取消',
  480. type: 'warning'
  481. })
  482. .then(() => {
  483. deleteAirDisinfect(id).then(response => {
  484. if (response.data.state == 0) {
  485. this.$message.error(response.data.msg)
  486. return false
  487. } else {
  488. this.tableData.splice(index, 1)
  489. this.$message.success('厂家已经删除')
  490. }
  491. })
  492. })
  493. .catch(() => {
  494. })
  495. },
  496. }
  497. }
  498. </script>
  499. <style lang="scss" scoped>
  500. .airForm{
  501. display: flex;
  502. justify-content: space-between;
  503. flex-wrap: wrap;
  504. .el-form-item{
  505. width:33%;
  506. }
  507. .el-date-editor.el-input, .el-date-editor.el-input__inner{
  508. width: 200px;
  509. }
  510. .el-input{
  511. width: 200px;
  512. }
  513. .el-select{
  514. width: 200px;
  515. }
  516. }
  517. </style>