Elizabeth's proactive approach involves introducing urinal toilet attachment , an ingenious concept that optimizes space and functionality.

statisticalConfiguration.vue 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  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. <el-tabs v-model="tabActiveName" @tab-click="handleTabClick" style="margin-bottom:10px">
  8. <el-tab-pane label="质控达标统计配置" name="control"></el-tab-pane>
  9. <el-tab-pane label="检验检查统计配置" name="query"></el-tab-pane>
  10. </el-tabs>
  11. <el-row :gutter="20">
  12. <el-col :span="2" :offset="22">
  13. <el-button type="primary" class="newadd" @click="newDialog = true">新增</el-button>
  14. </el-col>
  15. </el-row>
  16. <div class="configTable">
  17. <el-table :data="configuraData" border style="width: 100%">
  18. <el-table-column prop="date" label="检验检查大项" width="180">
  19. <template slot-scope="scope">{{ scope.row.project_name }}</template>
  20. </el-table-column>
  21. <el-table-column prop="name" label="检查小项" width="180">
  22. <template slot-scope="scope">{{ scope.row.item_name }}</template>
  23. </el-table-column>
  24. <el-table-column prop="address" label="范围">
  25. <template slot-scope="scope">{{ scope.row.min_range }} - {{scope.row.large_range}}</template>
  26. </el-table-column>
  27. <el-table-column prop="address" label="单位">
  28. <template slot-scope="scope">{{ scope.row.unit }}</template>
  29. </el-table-column>
  30. <el-table-column prop="address" label="排序">
  31. <template slot-scope="scope">{{ scope.row.sort }}</template>
  32. </el-table-column>
  33. <el-table-column label="操作" width="180">
  34. <template slot-scope="scope">
  35. <el-button size="mini" type="primary" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
  36. <el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)">删除</el-button>
  37. </template>
  38. </el-table-column>
  39. </el-table>
  40. <el-pagination
  41. @size-change="handleSizeChange"
  42. @current-change="handleCurrentChange"
  43. :page-sizes="[10, 20, 30, 100]"
  44. :page-size="10"
  45. background
  46. style="margin-top:20px;float: right"
  47. layout="total, sizes, prev, pager, next, jumper"
  48. :total="total">
  49. </el-pagination>
  50. </div>
  51. <el-dialog title="新增" :visible.sync="newDialog">
  52. <el-form :model="form" ref="form" :rules="rules">
  53. <el-form-item label="检查大项" :label-width="formLabelWidth" required prop="inspectionMajor">
  54. <el-select v-model="form.inspectionMajor" placeholder="请选择活动区域" @change="changeInspection">
  55. <el-option
  56. v-for="item in InspectionMajor"
  57. :key="item.project_id"
  58. :value="item.project_id"
  59. :label="item.project_name"
  60. >
  61. </el-option>
  62. </el-select>
  63. </el-form-item>
  64. <el-form-item label="检查小项" :label-width="formLabelWidth" required prop="inspectionMinor">
  65. <el-select v-model="form.inspectionMinor" placeholder="请选择活动区域" @change="changeInspectionMonior">
  66. <el-option
  67. v-for="it in InspectionMinor"
  68. :key="it.id"
  69. :value="it.id"
  70. :label="it.item_name"
  71. >
  72. </el-option>
  73. </el-select>
  74. </el-form-item>
  75. <el-form-item label="指控范围" :label-width="formLabelWidth" required prop="large_range">
  76. <el-input style="width:200px" v-model="form.min_range"></el-input>&nbsp;
  77. -
  78. <el-input style="width:200px" v-model="form.large_range"></el-input>
  79. </el-form-item>
  80. <el-form-item label="排序" :label-width="formLabelWidth">
  81. <el-input style="width:200px" v-model="form.sort"></el-input>
  82. </el-form-item>
  83. </el-form>
  84. <div slot="footer" class="dialog-footer">
  85. <el-button @click="newDialog = false">取 消</el-button>
  86. <el-button type="primary" @click="saveInspection('form')">保存</el-button>
  87. </div>
  88. </el-dialog>
  89. <el-dialog title="编辑" :visible.sync="editDialog">
  90. <el-form :model="form">
  91. <el-form-item label="检查大项" :label-width="formLabelWidth">
  92. <el-select v-model="form.inspectionMajor" placeholder="请选择活动区域">
  93. <el-option
  94. v-for="patient in InspectionMajor"
  95. :key="patient.id"
  96. :value="patient.id"
  97. :label="patient.project_name"
  98. >
  99. </el-option>
  100. </el-select>
  101. </el-form-item>
  102. <el-form-item label="检查小项" :label-width="formLabelWidth">
  103. <el-select v-model="form.inspectionMinor" placeholder="请选择活动区域">
  104. <el-option
  105. v-for="item in InspectionMinor"
  106. :key="item.project_id"
  107. :value="item.project_id"
  108. :label="item.item_name"
  109. >
  110. </el-option>
  111. </el-select>
  112. </el-form-item>
  113. <el-form-item label="指控范围" :label-width="formLabelWidth">
  114. <el-input style="width:200px" v-model="form.min_range"></el-input>&nbsp;
  115. -
  116. <el-input style="width:200px" v-model="form.large_range"></el-input>
  117. </el-form-item>
  118. <el-form-item label="排序" :label-width="formLabelWidth">
  119. <el-input style="width:200px" v-model="form.sort"></el-input>
  120. </el-form-item>
  121. </el-form>
  122. <div slot="footer" class="dialog-footer">
  123. <el-button @click="editDialog = false">取 消</el-button>
  124. <el-button type="primary" @click="editDialog = false">保存</el-button>
  125. </div>
  126. </el-dialog>
  127. </div>
  128. </div>
  129. </template>
  130. <script>
  131. import { GetOICData } from "@/api/qcd";
  132. import PieChart from "../qcd/components/BarChart";
  133. import { uParseTime } from "@/utils/tools";
  134. import BreadCrumb from "@/xt_pages/components/bread-crumb";
  135. import { getInspectionMajor,getInspectionMinor,getInspectionRange,saveConfiguration,getConfigurationList }from "@/api/common/common";
  136. export default {
  137. name: "dialysisTotal",
  138. data() {
  139. return {
  140. crumbs: [
  141. { path: false, name: "科室质控" },
  142. { path: false, name: "统计配置" },
  143. { path: false, name: "质控达标统计配置" }
  144. ],
  145. tabActiveName: "control",
  146. InspectionMajor:[],
  147. InspectionMinor:[],
  148. configuraData: [],
  149. newDialog: false,
  150. editDialog: false,
  151. formLabelWidth: "120px",
  152. form: {
  153. inspectionMajor: "",
  154. inspectionMinor: "",
  155. min_range: "",
  156. large_range: "",
  157. sort:"",
  158. },
  159. rules: {
  160. inspectionMajor: [{ required: true, message: "检查大项不能为空" }],
  161. inspectionMinor: [{ required: true, message: "检查小项不能为空" }],
  162. large_range:[{required:true,message:"指控范围不能为空"}]
  163. },
  164. page:1,
  165. limit:10,
  166. total:0,
  167. };
  168. },
  169. methods: {
  170. handleTabClick(tab, event) {
  171. if (this.tabActiveName == "query") {
  172. this.$router.push({ path: "/qcd/patientanalysis/checkStatistical" });
  173. }
  174. },
  175. handleEdit() {
  176. this.editDialog = true;
  177. },
  178. //获取大项数据来源
  179. getInspectionMajor(){
  180. getInspectionMajor().then(response=>{
  181. if(response.data.state == 1){
  182. var inspection = response.data.data.inspection
  183. console.log("inspection",inspection)
  184. this.InspectionMajor = inspection
  185. }
  186. })
  187. },
  188. //获取小项
  189. changeInspection(id){
  190. console.log("id----",id)
  191. getInspectionMinor(id).then(response=>{
  192. if(response.data.state == 1){
  193. var inspection = response.data.data.inspection
  194. console.log("inspection",inspection)
  195. this.InspectionMinor = inspection
  196. }
  197. })
  198. },
  199. // 获取指控范围
  200. changeInspectionMonior(id){
  201. getInspectionRange(id).then(response=>{
  202. if(response.data.state == 1){
  203. var inspectionRange = response.data.data.inspectionRange
  204. console.log("inspectionRange",inspectionRange)
  205. this.form.min_range = inspectionRange.range_min
  206. this.form.large_range = inspectionRange.range_max
  207. }
  208. })
  209. },
  210. saveInspection(formName){
  211. this.$refs[formName].validate(valid=>{
  212. if(valid){
  213. saveConfiguration(this.form).then(response=>{
  214. if(response.data.state == 1){
  215. var standard = response.data.data.standard
  216. this.$message.success("保存成功")
  217. this.newDialog = false
  218. this.form.inspectionMajor = ""
  219. this.form.inspectionMinor = ""
  220. this.form.large_range = ""
  221. this.form.min_range = ""
  222. this.form.sort = ""
  223. }
  224. })
  225. }
  226. })
  227. },
  228. handleSizeChange(limit) {
  229. // this.listQuery.limit = limit;
  230. this.getConfigurationList();
  231. },
  232. handleCurrentChange(page) {
  233. // this.listQuery.page = page;
  234. this.getConfigurationList();
  235. },
  236. getConfigurationList(){
  237. getConfigurationList(this.limit,this.page).then(response=>{
  238. if(response.data.state === 1){
  239. var configurationlist = response.data.data.configurationlist
  240. console.log("列表",configurationlist)
  241. this.configuraData = configurationlist
  242. var total = response.data.data.total
  243. console.log("total",total)
  244. }
  245. })
  246. }
  247. },
  248. components: {
  249. PieChart,
  250. BreadCrumb
  251. },
  252. created() {
  253. //获取检查大项数据来源
  254. this.getInspectionMajor()
  255. //获取表格里面的数据
  256. this.getConfigurationList()
  257. },
  258. };
  259. </script>
  260. <style lang="scss">
  261. #oictable ::-webkit-scrollbar {
  262. height: 15px;
  263. }
  264. .configTable {
  265. .el-table td,
  266. .el-table th {
  267. text-align: center;
  268. }
  269. }
  270. </style>
  271. <style rel="stylesheet/scss" lang="scss" scoped>
  272. .newadd {
  273. margin-bottom: 10px;
  274. }
  275. // .app-container {
  276. // // margin: 20px;
  277. // font-size: 15px;
  278. // .filter-container {
  279. // padding-bottom: 5px;
  280. // }
  281. // .cqd-dataTitle {
  282. // color: #303133;
  283. // font-size: 14px;
  284. // border-bottom: 2px #e4e7ed solid;
  285. // height: 36px;
  286. // line-height: 36px;
  287. // margin: 0 0 25px 0;
  288. // position: relative;
  289. // }
  290. // .cqd-dataTitle::before {
  291. // position: absolute;
  292. // left: 0;
  293. // bottom: -2px;
  294. // content: "";
  295. // width: 42px;
  296. // height: 2px;
  297. // background: #409eff;
  298. // }
  299. // .search-component {
  300. // width: 500px;
  301. // .searchBox {
  302. // width: 300px;
  303. // height: 36px;
  304. // line-height: 36px;
  305. // padding-left: 15px;
  306. // border: 1px #dcdfe6 solid;
  307. // border-right: none;
  308. // outline: none;
  309. // float: left;
  310. // border-radius: 6px 0 0 6px;
  311. // font-size: 14px;
  312. // color: #333;
  313. // background: #fff;
  314. // box-shadow: 3px 3px 4px rgba(135, 135, 135, 0.05);
  315. // }
  316. // .searchBtn {
  317. // background-color: #409eff;
  318. // color: #fff;
  319. // font-size: 15px;
  320. // text-align: center;
  321. // height: 36px;
  322. // line-height: 36px;
  323. // float: left;
  324. // outline: none;
  325. // width: 70px;
  326. // border: none;
  327. // border-radius: 0 6px 6px 0;
  328. // font-family: "Microsoft Yahei";
  329. // cursor: pointer;
  330. // }
  331. // }
  332. // .amount {
  333. // font-weight: normal;
  334. // padding: 10px 0 0 0;
  335. // color: #606266;
  336. // font-size: 14px;
  337. // span {
  338. // color: #ef2525;
  339. // font-family: "Arial";
  340. // padding: 0 2px;
  341. // }
  342. // }
  343. // }
  344. //
  345. </style>