index.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
  4. <el-form-item label="实验编码" prop="experimentCode">
  5. <el-input
  6. v-model="queryParams.experimentCode"
  7. placeholder="请输入实验编码"
  8. clearable
  9. @keyup.enter.native="handleQuery"
  10. />
  11. </el-form-item>
  12. <el-form-item label="样品编号" prop="sampleInfoId">
  13. <el-input
  14. v-model="queryParams.sampleInfoId"
  15. placeholder="请输入样品编号"
  16. clearable
  17. @keyup.enter.native="handleQuery"
  18. />
  19. </el-form-item>
  20. <el-form-item label="状态" prop="status">
  21. <el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
  22. <el-option
  23. v-for="dict in dict.type.buss_read_type"
  24. :key="dict.value"
  25. :label="dict.label"
  26. :value="dict.value"
  27. />
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item label="解读或作废时间" prop="dealTime" label-width="120px">
  31. <el-date-picker clearable
  32. v-model="queryParams.dealTime"
  33. type="date"
  34. value-format="yyyy-MM-dd"
  35. placeholder="请选择解读或作废时间">
  36. </el-date-picker>
  37. </el-form-item>
  38. <el-form-item>
  39. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  40. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  41. </el-form-item>
  42. </el-form>
  43. <el-row :gutter="10" class="mb8">
  44. <el-col :span="1.5">
  45. <el-button
  46. type="primary"
  47. plain
  48. icon="el-icon-plus"
  49. size="mini"
  50. @click="handleAdd"
  51. v-hasPermi="['sample:sampleExperiment:add']"
  52. >新增</el-button>
  53. </el-col>
  54. <el-col :span="1.5">
  55. <el-button
  56. type="success"
  57. plain
  58. icon="el-icon-edit"
  59. size="mini"
  60. :disabled="single"
  61. @click="handleUpdate"
  62. v-hasPermi="['sample:sampleExperiment:edit']"
  63. >修改</el-button>
  64. </el-col>
  65. <el-col :span="1.5">
  66. <el-button
  67. type="danger"
  68. plain
  69. icon="el-icon-delete"
  70. size="mini"
  71. :disabled="multiple"
  72. @click="handleDelete"
  73. v-hasPermi="['sample:sampleExperiment:remove']"
  74. >删除</el-button>
  75. </el-col>
  76. <el-col :span="1.5">
  77. <el-button
  78. type="warning"
  79. plain
  80. icon="el-icon-download"
  81. size="mini"
  82. @click="handleExport"
  83. v-hasPermi="['sample:sampleExperiment:export']"
  84. >导出</el-button>
  85. </el-col>
  86. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  87. </el-row>
  88. <el-table v-loading="loading" :data="sampleExperimentList" @selection-change="handleSelectionChange">
  89. <el-table-column type="selection" width="55" align="center" />
  90. <el-table-column label="实验编号" align="center" prop="id" />
  91. <el-table-column label="实验编码" align="center" prop="experimentCode" />
  92. <el-table-column label="样品编号" align="center" prop="sampleInfoId" />
  93. <el-table-column label="状态" align="center" prop="status">
  94. <template slot-scope="scope">
  95. <dict-tag :options="dict.type.buss_read_type" :value="scope.row.status"/>
  96. </template>
  97. </el-table-column>
  98. <el-table-column label="解读或作废时间" align="center" prop="dealTime" width="180">
  99. <template slot-scope="scope">
  100. <span>{{ parseTime(scope.row.dealTime, '{y}-{m}-{d}') }}</span>
  101. </template>
  102. </el-table-column>
  103. <el-table-column label="备注" align="center" prop="remark" />
  104. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  105. <template slot-scope="scope">
  106. <el-button
  107. v-if="scope.row.status !== 1"
  108. size="mini"
  109. type="text"
  110. @click="handleRead(scope.row)"
  111. >查看报告</el-button>
  112. <el-button
  113. v-if="scope.row.status !== 1"
  114. size="mini"
  115. type="text"
  116. @click="handlePull(scope.row)"
  117. >重新生成</el-button>
  118. <el-button
  119. v-if="scope.row.status === 1"
  120. size="mini"
  121. type="text"
  122. @click="handlePull(scope.row)"
  123. >生成报告</el-button>
  124. <el-button
  125. size="mini"
  126. type="text"
  127. @click="handleFilter(scope.row)"
  128. >过滤</el-button>
  129. <!-- <el-button
  130. size="mini"
  131. type="text"
  132. icon="el-icon-edit"
  133. @click="handleUpdate(scope.row)"
  134. v-hasPermi="['sample:sampleExperiment:edit']"
  135. >修改</el-button>
  136. <el-button
  137. size="mini"
  138. type="text"
  139. icon="el-icon-delete"
  140. @click="handleDelete(scope.row)"
  141. v-hasPermi="['sample:sampleExperiment:remove']"
  142. >删除</el-button> -->
  143. </template>
  144. </el-table-column>
  145. </el-table>
  146. <pagination
  147. v-show="total>0"
  148. :total="total"
  149. :page.sync="queryParams.pageNum"
  150. :limit.sync="queryParams.pageSize"
  151. @pagination="getList"
  152. />
  153. <!-- 添加或修改解读管理对话框 -->
  154. <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  155. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  156. <el-form-item label="实验编码" prop="experimentCode">
  157. <el-input v-model="form.experimentCode" placeholder="请输入实验编码" />
  158. </el-form-item>
  159. <el-form-item label="样品编号" prop="sampleInfoId">
  160. <el-input v-model="form.sampleInfoId" placeholder="请输入样品编号" />
  161. </el-form-item>
  162. <el-form-item label="状态" prop="status">
  163. <el-select v-model="form.status" placeholder="请选择状态">
  164. <el-option
  165. v-for="dict in dict.type.buss_read_type"
  166. :key="dict.value"
  167. :label="dict.label"
  168. :value="parseInt(dict.value)"
  169. ></el-option>
  170. </el-select>
  171. </el-form-item>
  172. <el-form-item label="解读或作废时间" prop="dealTime">
  173. <el-date-picker clearable
  174. v-model="form.dealTime"
  175. type="date"
  176. value-format="yyyy-MM-dd"
  177. placeholder="请选择解读或作废时间">
  178. </el-date-picker>
  179. </el-form-item>
  180. <el-form-item label="备注" prop="remark">
  181. <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
  182. </el-form-item>
  183. </el-form>
  184. <div slot="footer" class="dialog-footer">
  185. <el-button type="primary" @click="submitForm">确 定</el-button>
  186. <el-button @click="cancel">取 消</el-button>
  187. </div>
  188. </el-dialog>
  189. </div>
  190. </template>
  191. <script>
  192. import { listSampleExperiment, getSampleExperiment, delSampleExperiment, addSampleExperiment, updateSampleExperiment,pullSampleExperiment,generateSampleExperiment } from "@/api/sample/sampleExperiment"
  193. export default {
  194. name: "SampleExperiment",
  195. dicts: ['buss_read_type'],
  196. data() {
  197. return {
  198. // 遮罩层
  199. loading: true,
  200. // 选中数组
  201. ids: [],
  202. // 非单个禁用
  203. single: true,
  204. // 非多个禁用
  205. multiple: true,
  206. // 显示搜索条件
  207. showSearch: true,
  208. // 总条数
  209. total: 0,
  210. // 解读管理表格数据
  211. sampleExperimentList: [],
  212. // 弹出层标题
  213. title: "",
  214. // 是否显示弹出层
  215. open: false,
  216. // 查询参数
  217. queryParams: {
  218. pageNum: 1,
  219. pageSize: 10,
  220. experimentCode: null,
  221. sampleInfoId: null,
  222. status: null,
  223. dealTime: null,
  224. },
  225. // 表单参数
  226. form: {},
  227. // 表单校验
  228. rules: {
  229. sampleInfoId: [
  230. { required: true, message: "样品编号不能为空", trigger: "blur" }
  231. ],
  232. }
  233. }
  234. },
  235. created() {
  236. this.getList()
  237. },
  238. methods: {
  239. /** 查询解读管理列表 */
  240. getList() {
  241. this.loading = true
  242. listSampleExperiment(this.queryParams).then(response => {
  243. this.sampleExperimentList = response.rows
  244. this.total = response.total
  245. this.loading = false
  246. })
  247. },
  248. // 取消按钮
  249. cancel() {
  250. this.open = false
  251. this.reset()
  252. },
  253. // 表单重置
  254. reset() {
  255. this.form = {
  256. id: null,
  257. experimentCode: null,
  258. sampleInfoId: null,
  259. status: null,
  260. dealTime: null,
  261. createBy: null,
  262. createTime: null,
  263. updateBy: null,
  264. updateTime: null,
  265. remark: null
  266. }
  267. this.resetForm("form")
  268. },
  269. /** 搜索按钮操作 */
  270. handleQuery() {
  271. this.queryParams.pageNum = 1
  272. this.getList()
  273. },
  274. /** 重置按钮操作 */
  275. resetQuery() {
  276. this.resetForm("queryForm")
  277. this.handleQuery()
  278. },
  279. // 多选框选中数据
  280. handleSelectionChange(selection) {
  281. this.ids = selection.map(item => item.id)
  282. this.single = selection.length!==1
  283. this.multiple = !selection.length
  284. },
  285. /** 新增按钮操作 */
  286. handleAdd() {
  287. this.reset()
  288. this.open = true
  289. this.title = "添加解读管理"
  290. },
  291. /** 修改按钮操作 */
  292. handleUpdate(row) {
  293. this.reset()
  294. const id = row.id || this.ids
  295. getSampleExperiment(id).then(response => {
  296. this.form = response.data
  297. this.open = true
  298. this.title = "修改解读管理"
  299. })
  300. },
  301. /** 提交按钮 */
  302. submitForm() {
  303. this.$refs["form"].validate(valid => {
  304. if (valid) {
  305. if (this.form.id != null) {
  306. updateSampleExperiment(this.form).then(response => {
  307. this.$modal.msgSuccess("修改成功")
  308. this.open = false
  309. this.getList()
  310. })
  311. } else {
  312. addSampleExperiment(this.form).then(response => {
  313. this.$modal.msgSuccess("新增成功")
  314. this.open = false
  315. this.getList()
  316. })
  317. }
  318. }
  319. })
  320. },
  321. // 查看报告按钮操作
  322. handleRead(row) {
  323. const id = row.id
  324. generateSampleExperiment(id).then(response => {
  325. console.log(response)
  326. }).catch(() => {})
  327. },
  328. // 生成报告按钮操作
  329. handlePull(row) {
  330. const ids = row.id
  331. pullSampleExperiment(ids).then(() => {
  332. this.$modal.msgSuccess("生成报告成功")
  333. this.getList()
  334. }).catch(() => {})
  335. },
  336. // 过滤按钮操作
  337. handleFilter(row) {
  338. const id = row.id
  339. this.$router.push("/read/sampleExperiment-filter/report/" + id)
  340. },
  341. /** 删除按钮操作 */
  342. handleDelete(row) {
  343. const ids = row.id || this.ids
  344. this.$modal.confirm('是否确认删除解读管理编号为"' + ids + '"的数据项?').then(function() {
  345. return delSampleExperiment(ids)
  346. }).then(() => {
  347. this.getList()
  348. this.$modal.msgSuccess("删除成功")
  349. }).catch(() => {})
  350. },
  351. /** 导出按钮操作 */
  352. handleExport() {
  353. this.download('sample/sampleExperiment/export', {
  354. ...this.queryParams
  355. }, `sampleExperiment_${new Date().getTime()}.xlsx`)
  356. }
  357. }
  358. }
  359. </script>