2.5-自备引物

自备引物

目前为 2023-07-14 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.gf.qytechs.cn/scripts/470833/1220007/25-%E8%87%AA%E5%A4%87%E5%BC%95%E7%89%A9.js

  1. function 自备引物(){
  2. console.log('新的自备引物界面')
  3. var local_修改测序样品对应的引物名称=localStorage.getItem('修改测序样品对应的引物名称');
  4. var local_在测序样品显示选择的引物=localStorage.getItem('在测序样品显示选择的引物');
  5. var html=$('iframe[src="/viporder/SeqCustPrimerList.aspx"]')//自备引物页面
  6. html=html.contents().find('body').eq(0)
  7. var toolbar=html.find('.toolbar').eq(0) // 找到了toolbar工具栏
  8. //添加toolbar工具栏按钮
  9. 添加toolbar按钮()
  10. //添加toolbar工具栏按钮
  11. function 添加toolbar按钮(){
  12. var toolbar=html.find('.toolbar').eq(0) // 找到了toolbar工具栏
  13. if (toolbar.find('.weiyiyici').length==0){
  14. //添加标记
  15. toolbar.addClass('weiyiyici')
  16. //修改测序样品对应的引物名称 按钮
  17. if (local_修改测序样品对应的引物名称=='true'){
  18. toolbar.append('<button id="edit_primer" onclick="return false">修改测序样品对应的引物名称</button>')
  19. }
  20. //在测序样品显示选择的引物 按钮
  21. if (local_在测序样品显示选择的引物=='true'){
  22. toolbar.append('<button id="show_primer_cexu" onclick="return false">在测序样品显示选择的引物</button>')
  23. }
  24. //点击 修改测序样品对应的引物名称 按钮
  25. toolbar.find('#edit_primer').click(function(){
  26. 一键修改测序样品的引物名称()
  27. })
  28. //点击 在测序样品显示选择的引物 按钮
  29. toolbar.find('#show_primer_cexu').click(function(){
  30. 在测序样品显示选择的引物()
  31. })
  32. }
  33. }
  34. //在 自备引物页面 添加 一键修改 测序样品 的引物名称
  35. function 一键修改测序样品的引物名称(){
  36. if(html.find('tbody').find("[aria-selected='true']").size()==0){return false} //如果没有选择的行,那么退出
  37. selecteds_edit=html.find("[aria-selected='true']")
  38. for (var i=0;i<selecteds_edit.size();i++){
  39. id=selecteds_edit.eq(i).find('[aria-describedby=list_SeqCustPrimer_id]').text() //获取id
  40. id=id+"-z"//最后的引物位置
  41. primer_name=selecteds_edit.eq(i).find('[aria-describedby=list_SeqCustPrimer_name]').text() //获取自备引物的引物名称
  42. //get 请求 在 测序样品 根据 引物位置 获得所有需要更改的生产编号
  43. $.ajaxSettings.async = false; //get请求默认是异步的,在这里改为同步
  44. $.get("/seq/ashx/SeqSampleHandler.ashx?_search=true&nd=1624035568813&rows=2000000&page=1&sidx=seqs_prod_id&sord=desc&filters=%7B%22groupOp%22%3A%22AND%22%2C%22rules%22%3A%5B%7B%22field%22%3A%22seqs_primer_id_2_kind%22%2C%22op%22%3A%22eq%22%2C%22data%22%3A%22"+id+"%22%7D%5D%7D",
  45. function (data,status) {
  46. yps=data.match(/\d{1,}(?=,"seqo_order_id)/g)//匹配获得的生产编号集合,如果没有则为null
  47. if(!yps){return; }//如果没有找到生产编号 则进入下个循环
  48. yps_new=[] //新建一个空数组,用于存放所有需要修改的生产编号
  49. primers=data.match(/(seqs_primer":")(.*?)(?=","seqs_observe")/g)
  50. if(yps.length!=0){//如果yps有数据,yps为数组
  51. if(yps.length!= primers.length){alert(primer_name+' 在测序样品找到的生产编号和引物名称的个数不一致,需要手动更改');return; }
  52. //循环找到的引物,如果和自备引物的引物名称不一致,那么存放在yps_new数组里面
  53. $.each(primers,function(j,item){
  54. primer_dui=item.substr(14) //正确的引物
  55. if(primer_name!=primer_dui) { //如果自备引物的名称和测序样品的每一个引物名称不一致,那么存放在yps_new数组里面
  56. yps_new.push(yps[j])
  57. }
  58. })
  59. if (yps_new.length>0){
  60. yps_str=yps_new.join(',') //数组转换成字符串
  61. //post请求 根据找到的生产编号,在 测序样品 批量修改相对应的引物名称
  62. $.post("/seq/ashx/SeqSampleHandler.ashx",
  63. {action:"piliang_edit",ids:yps_str,newValue:"seqs_primer="+primer_name,rules_txt:"测序引物"},
  64. function (data,status) {if(i==selecteds_edit.size()-1){alert('修改成功')}}); //最后一次提交成功
  65. }else{return; }
  66. }else{return; }
  67. });
  68. }
  69. }
  70. //把选择的行的引物在 测序样品查询出来
  71. function 在测序样品显示选择的引物(){
  72. if(html.find('tbody').find("[aria-selected='true']").size()==0){return false} //如果没有选择的行,那么退出
  73. selecteds=html.find('tbody').find("[aria-selected='true']")//.find('[aria-describedby=list_SeqCustPrimer_id]').text()
  74. var ids_shuzu = new Array();
  75. for (var i=0;i<selecteds.size();i++){
  76. id=selecteds.eq(i).find('[aria-describedby=list_SeqCustPrimer_id]').text() //获取id
  77. id=id+"-z"//最后的引物位置
  78. ids_shuzu[i]=id
  79. }
  80. //如果 测序样品 页面是已经打开的
  81. if($('#tabs').find('li:contains(测序样品)').size()===1){
  82. //测序样品的html必须加个后缀或者前缀 不能和之前的重复
  83. var cexuyangpin_html=$('iframe[src="/seq/SeqSampleList.aspx"]').contents().find('body').eq(0)//如果找到 则说明找到了测序样品的页面
  84. toolbar_cexuyangpin=cexuyangpin_html.find('.toolbar').eq(0) // 找到了测序样品的toolbar工具栏
  85. toolbar_cexuyangpin.find('#a_search').eq(0).find('.l-btn-left').eq(0).click();
  86. $('#searchForm').eq(0).find("option[value='seqs_primer_id_2_kind']").attr('selected','selected') //把找到的查询条件改成 引物位置
  87. $('#radd').next().attr('checked','true') //选择 OR 选项
  88. for (var i=0;i<selecteds.size();i++){
  89. $('#searchForm').eq(0).find("[class='txt02 searchString']").eq(i).val(ids_shuzu[i])
  90. }
  91. $("#AB").click()
  92. $('#tabs').find('li:contains(测序样品)').click()
  93. }
  94. }
  95. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址