dljy.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="140px">
  4. <el-form-item label="唯一注册号" prop="assemblyAccession">
  5. <el-input
  6. v-model="queryParams.assemblyAccession"
  7. placeholder="请输入唯一注册号"
  8. clearable
  9. @keyup.enter.native="handleQuery"
  10. />
  11. </el-form-item>
  12. <el-form-item label="生物名称" prop="organismName">
  13. <el-input
  14. v-model="queryParams.organismName"
  15. placeholder="请输入生物名称"
  16. clearable
  17. @keyup.enter.native="handleQuery"
  18. />
  19. </el-form-item>
  20. <el-form-item label="病源类型" prop="group">
  21. <el-input
  22. v-model="queryParams.group"
  23. placeholder="请输入病源类型"
  24. clearable
  25. @keyup.enter.native="handleQuery"
  26. />
  27. </el-form-item>
  28. <el-form-item label="子类标签" prop="group1">
  29. <el-input
  30. v-model="queryParams.group1"
  31. placeholder="请输入子类标签"
  32. clearable
  33. @keyup.enter.native="handleQuery"
  34. />
  35. </el-form-item>
  36. <el-form-item label="中文解释" prop="defined">
  37. <el-input
  38. v-model="queryParams.defined"
  39. placeholder="请输入中文解释"
  40. clearable
  41. @keyup.enter.native="handleQuery"
  42. />
  43. </el-form-item>
  44. <el-form-item label="毒力基因" prop="dljy">
  45. <el-input
  46. v-model="queryParams.dljy"
  47. placeholder="请输入毒力基因"
  48. clearable
  49. @keyup.enter.native="handleQuery"
  50. />
  51. </el-form-item>
  52. <el-form-item label="毒力基因解释" prop="dljyExpress">
  53. <el-input
  54. v-model="queryParams.dljyExpress"
  55. placeholder="请输入毒力基因解释"
  56. clearable
  57. @keyup.enter.native="handleQuery"
  58. />
  59. </el-form-item>
  60. <el-form-item label="毒力基因解释来源" prop="dljySource">
  61. <el-input
  62. v-model="queryParams.dljySource"
  63. placeholder="请输入毒力基因解释来源"
  64. clearable
  65. @keyup.enter.native="handleQuery"
  66. />
  67. </el-form-item>
  68. <el-form-item>
  69. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  70. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  71. </el-form-item>
  72. </el-form>
  73. <el-row :gutter="10" class="mb8">
  74. <el-col :span="1.5">
  75. <el-button
  76. type="warning"
  77. plain
  78. icon="el-icon-upload"
  79. size="mini"
  80. @click="$refs.upload_file.click()"
  81. >导入</el-button>
  82. </el-col>
  83. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  84. </el-row>
  85. <el-table v-loading="loading" :data="dataBaseList" >
  86. <el-table-column label="唯一注册号" align="center" prop="assemblyAccession" width="100" />
  87. <el-table-column label="生物名称" align="center" prop="organismName" width="150"/>
  88. <el-table-column label="病源类型" align="center" prop="group" />
  89. <el-table-column label="子类标签" align="center" prop="group1" />
  90. <el-table-column label="中文解释" align="center" prop="defined" width="500" />
  91. <el-table-column label="解释的来源" align="center" prop="definedSource" width="200" />
  92. <el-table-column label="毒力基因" align="center" prop="dljy" />
  93. <el-table-column label="毒力基因解释" align="center" prop="dljyExpress" width="100" />
  94. <el-table-column label="毒力基因解释来源" align="center" prop="dljySource" width="200" />
  95. <!-- <el-table-column label="参考基因组类型" align="center" prop="refseqCategory" />
  96. <el-table-column label="分类号" align="center" prop="taxid" />
  97. <el-table-column label="种分类号" align="center" prop="speciesTaxid" />
  98. <el-table-column label="亚种名称" align="center" prop="infraspecificName"/>
  99. <el-table-column label="分类类型" align="center" prop="isolate" />
  100. <el-table-column label="拼装级别" align="center" prop="assemblyLevel" />
  101. <el-table-column label="基因组级别" align="center" prop="genomeRep" />
  102. <el-table-column label="seqRelDate" align="center" prop="seqRelDate" />
  103. <el-table-column label="ASM编号" align="center" prop="asmName" />
  104. <el-table-column label="gbrs_paired_asm" align="center" prop="gbrsPairedAsm" />
  105. <el-table-column label="paired_asm_comp" align="center" prop="pairedAsmComp" />
  106. <el-table-column label="ftp_path" align="center" prop="ftpPath" />
  107. <el-table-column label="excluded_from_refseq" align="center" prop="excludedFromRefseq" />
  108. <el-table-column label="装配类型" align="center" prop="assemblyType" />
  109. <el-table-column label="基因组大小" align="center" prop="genomeSize" />
  110. <el-table-column label="基因组大小(无缺口)" align="center" prop="genomeSizeUngapped" />
  111. <el-table-column label="GC比例" align="center" prop="gcPercent" />
  112. <el-table-column label="replicon_count" align="center" prop="repliconCount" />
  113. <el-table-column label="scaffold_count" align="center" prop="scaffoldCount" />
  114. <el-table-column label="contig_count" align="center" prop="contigCount" />
  115. <el-table-column label="总基因数" align="center" prop="totalGeneCount" />
  116. <el-table-column label="翻译蛋白基因数" align="center" prop="proteinCodingGeneCount" />
  117. <el-table-column label="非编码基因数" align="center" prop="nonCodingGeneCount" />
  118. <el-table-column label="耐药基因" align="center" prop="nyjy" />
  119. <el-table-column label="耐药基因解释" align="center" prop="nyjyExpress" />
  120. <el-table-column label="耐药基因解释来源" align="center" prop="nyjySource" />
  121. <el-table-column label="点突变" align="center" prop="dtpnyjy" />
  122. <el-table-column label="点突变解释" align="center" prop="dtpnyjyExpress" />
  123. <el-table-column label="点突变解释来源" align="center" prop="dtpnyjySource" /> -->
  124. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
  125. <template slot-scope="scope">
  126. <el-button
  127. size="mini"
  128. type="text"
  129. @click="handleUpdate(scope.row)"
  130. v-hasPermi="['data:dataReportByt:edit']"
  131. >查看</el-button>
  132. <el-button
  133. size="mini"
  134. type="text"
  135. @click="handleDelete(scope.row)"
  136. v-hasPermi="['data:dataBase:remove']"
  137. >删除</el-button>
  138. </template>
  139. </el-table-column>
  140. </el-table>
  141. <pagination
  142. v-show="total>0"
  143. :total="total"
  144. :page.sync="queryParams.pageNum"
  145. :limit.sync="queryParams.pageSize"
  146. @pagination="getList"
  147. />
  148. <!-- 添加或修改病原体管理对话框 -->
  149. <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
  150. <el-form ref="form" :model="form" :rules="rules" label-width="140px">
  151. <el-form-item label="唯一注册号">{{ form.assemblyAccession }}</el-form-item>
  152. <el-form-item label="生物名称">{{ form.organismName }}</el-form-item>
  153. <el-form-item label="病源类型">{{ form.group }}</el-form-item>
  154. <el-form-item label="子类标签">{{ form.group1 }}</el-form-item>
  155. <el-form-item label="中文解释">{{ form.defined }}</el-form-item>
  156. <el-form-item label="解释的来源">{{ form.definedSource }}</el-form-item>
  157. <el-form-item label="参考基因组类型">{{ form.refseqCategory }}</el-form-item>
  158. <el-form-item label="分类号">{{ form.taxid }}</el-form-item>
  159. <el-form-item label="种分类号">{{ form.speciesTaxid }}</el-form-item>
  160. <el-form-item label="亚种名称">{{ form.infraspecificName }}</el-form-item>
  161. <el-form-item label="分类类型">{{ form.isolate }}</el-form-item>
  162. <el-form-item label="拼装级别">{{ form.assemblyLevel }}</el-form-item>
  163. <el-form-item label="基因组级别">{{ form.genomeRep }}</el-form-item>
  164. <el-form-item label="seq_rel_date">{{ form.seqRelDate }}</el-form-item>
  165. <el-form-item label="ASM编号">{{ form.asmName }}</el-form-item>
  166. <el-form-item label="gbrs_paired_asm">{{ form.gbrs_paired_asm }}</el-form-item>
  167. <el-form-item label="paired_asm_comp">{{ form.paired_asm_comp }}</el-form-item>
  168. <el-form-item label="ftp_path">{{ form.ftp_path }}</el-form-item>
  169. <el-form-item label="excluded_from_refseq">{{ form.excluded_from_refseq }}</el-form-item>
  170. <el-form-item label="装配类型">{{ form.assemblyType }}</el-form-item>
  171. <el-form-item label="基因组大小">{{ form.genomeSize }}</el-form-item>
  172. <el-form-item label="基因组大小(无缺口)">{{ form.genomeSizeUngapped }}</el-form-item>
  173. <el-form-item label="GC比例">{{ form.gcPercent }}</el-form-item>
  174. <el-form-item label="replicon_count">{{ form.replicon_count }}</el-form-item>
  175. <el-form-item label="scaffold_count">{{ form.scaffold_count }}</el-form-item>
  176. <el-form-item label="contig_count">{{ form.contig_count }}</el-form-item>
  177. <el-form-item label="总基因数">{{ form.totalGeneCount }}</el-form-item>
  178. <el-form-item label="翻译蛋白基因数">{{ form.proteinCodingGeneCount }}</el-form-item>
  179. <el-form-item label="非编码基因数">{{ form.nonCodingGeneCount }}</el-form-item>
  180. <el-form-item label="毒力基因">{{ form.dljy }}</el-form-item>
  181. <el-form-item label="毒力基因解释">{{ form.dljyExpress }}</el-form-item>
  182. <el-form-item label="毒力基因解释来源">{{ form.dljySource }}</el-form-item>
  183. </el-form>
  184. <div slot="footer" class="dialog-footer">
  185. <el-button @click="cancel">取 消</el-button>
  186. </div>
  187. </el-dialog>
  188. <!-- 上传文件 -->
  189. <input hidden type="file" ref="upload_file" accept=".xls,.xlsx" class="upload_file" @change="readExcel($event)" />
  190. </div>
  191. </template>
  192. <script>
  193. import { listDataBase, getDataBase, delDataBase, addDataBase, updateDataBase,importDataBase } from "@/api/data/dataBase"
  194. import * as XLSX from "xlsx"
  195. export default {
  196. name: "DataBase",
  197. data() {
  198. return {
  199. // 遮罩层
  200. loading: true,
  201. // 选中数组
  202. ids: [],
  203. // 非单个禁用
  204. single: true,
  205. // 非多个禁用
  206. multiple: true,
  207. // 显示搜索条件
  208. showSearch: true,
  209. // 总条数
  210. total: 0,
  211. // 病原体管理表格数据
  212. dataBaseList: [],
  213. // 弹出层标题
  214. title: "",
  215. // 是否显示弹出层
  216. open: false,
  217. // 查询参数
  218. queryParams: {
  219. pageNum: 1,
  220. pageSize: 10,
  221. type:2,
  222. organismName: null,
  223. group: null,
  224. group1: null,
  225. defined: null,
  226. dljy:null,
  227. dljyExpress:null,
  228. dljySource:null,
  229. },
  230. // 表单参数
  231. form: {},
  232. // 表单校验
  233. rules: {
  234. },
  235. upload_file: "",
  236. lists: [],
  237. }
  238. },
  239. created() {
  240. this.getList()
  241. },
  242. methods: {
  243. // 读取Excel文件
  244. readExcel(e) {
  245. console.log("读取Excel文件", e);
  246. console.log("读取Excel文件11", XLSX);
  247. // 读取表格文件
  248. let that = this;
  249. const files = e.target.files;
  250. if (files.length <= 0) {
  251. return false;
  252. } else if (!/\.(xls|xlsx)$/.test(files[0].name.toLowerCase())) {
  253. this.$message({
  254. message: "上传格式不正确,请上传xls或者xlsx格式",
  255. type: "warning",
  256. });
  257. return false;
  258. } else {
  259. this.uploadFile(files[0]);
  260. // 更新获取文件名
  261. // that.upload_file = files[0].name;
  262. }
  263. // const fileReader = new FileReader();
  264. // fileReader.onload = (ev) => {
  265. // try {
  266. // const data = ev.target.result;
  267. // const workbook = XLSX.read(data, {
  268. // type: "binary",
  269. // });
  270. // const wsname = workbook.SheetNames[0]; //取第一张表
  271. // console.log(XLSX);
  272. // console.log(wsname);
  273. // console.log(workbook);
  274. // const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]); //生成json表格内容
  275. // that.lists = [];
  276. // console.log(ws);
  277. // } catch (e) {
  278. // return false;
  279. // }
  280. // };
  281. // fileReader.readAsBinaryString(files[0]);
  282. },
  283. uploadFile(file) {
  284. console.log("上传文件", file);
  285. // 创建FormData对象
  286. const formData = new FormData(); // 创建FormData对象
  287. formData.append('file', file); // 将文件添加到FormData对象中,
  288. importDataBase(formData).then(response => {
  289. this.$modal.msgSuccess("导入成功")
  290. this.getList()
  291. })
  292. },
  293. /** 查询病原体管理列表 */
  294. getList() {
  295. this.loading = true
  296. listDataBase(this.queryParams).then(response => {
  297. this.dataBaseList = response.rows
  298. this.total = response.total
  299. this.loading = false
  300. })
  301. },
  302. // 取消按钮
  303. cancel() {
  304. this.open = false
  305. this.reset()
  306. },
  307. // 表单重置
  308. reset() {
  309. this.form = {
  310. assemblyAccession: null,
  311. refseqCategory: null,
  312. taxid: null,
  313. speciesTaxid: null,
  314. organismName: null,
  315. infraspecificName: null,
  316. isolate: null,
  317. assemblyLevel: null,
  318. genomeRep: null,
  319. seqRelDate: null,
  320. asmName: null,
  321. gbrsPairedAsm: null,
  322. pairedAsmComp: null,
  323. ftpPath: null,
  324. excludedFromRefseq: null,
  325. assemblyType: null,
  326. group: null,
  327. genomeSize: null,
  328. genomeSizeUngapped: null,
  329. gcPercent: null,
  330. repliconCount: null,
  331. scaffoldCount: null,
  332. contigCount: null,
  333. totalGeneCount: null,
  334. proteinCodingGeneCount: null,
  335. nonCodingGeneCount: null,
  336. nameCn: null,
  337. defined: null,
  338. seqSource: null,
  339. express: null,
  340. filePath: null,
  341. dtpnyjy: null,
  342. dtpnyjyExpress: null,
  343. nyjy: null,
  344. nyjyExpress: null,
  345. dljy: null,
  346. dljyExpress: null,
  347. createBy: null,
  348. createTime: null,
  349. updateBy: null,
  350. updateTime: null,
  351. remark: null
  352. }
  353. this.resetForm("form")
  354. },
  355. /** 搜索按钮操作 */
  356. handleQuery() {
  357. this.queryParams.pageNum = 1
  358. this.getList()
  359. },
  360. /** 重置按钮操作 */
  361. resetQuery() {
  362. this.resetForm("queryForm")
  363. this.handleQuery()
  364. },
  365. // 多选框选中数据
  366. handleSelectionChange(selection) {
  367. this.ids = selection.map(item => item.assemblyAccession)
  368. this.single = selection.length!==1
  369. this.multiple = !selection.length
  370. },
  371. /** 删除按钮操作 */
  372. handleDelete(row) {
  373. const ids = row.assemblyAccession || this.ids
  374. this.$modal.confirm('是否确认删除病原体管理编号为"' + ids + '"的数据项?').then(function() {
  375. return delDataBase(ids)
  376. }).then(() => {
  377. this.getList()
  378. this.$modal.msgSuccess("删除成功")
  379. }).catch(() => {})
  380. },
  381. handleUpdate(row) {
  382. this.reset()
  383. this.form = row
  384. this.open = true
  385. this.title = "查看毒力基因信息"
  386. },
  387. }
  388. }
  389. </script>