2.3-测序样品

测序样品

目前為 2023-07-12 提交的版本,檢視 最新版本

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.gf.qytechs.cn/scripts/469913/1218876/23-%E6%B5%8B%E5%BA%8F%E6%A0%B7%E5%93%81.js

  1. function 测序样品(){
  2. console.log('新的测序样品界面')
  3. var local_修改样品名称=localStorage.getItem('修改样品名称');
  4. var local_批量添加反应=localStorage.getItem('批量添加反应');
  5. var local_显示订单号=localStorage.getItem('显示订单号');
  6. var local_显示样品名称=localStorage.getItem('显示样品名称');
  7. var local_查询引物=localStorage.getItem('查询引物');
  8. var local_其他=localStorage.getItem('其他');
  9. var local_模板板号和孔号改为负一=localStorage.getItem('模板板号和孔号改为负一');
  10. var 当前用户名=$('#curname',window.parent.document).text()
  11. var html=$('iframe[src="/seq/SeqSampleList.aspx"]')//测序样品页面
  12. html=html.contents().find('body').eq(0)
  13. var toolbar=html.find('.toolbar').eq(0) // 找到了toolbar工具栏
  14. var table=html.find('.ui-jqgrid-btable').eq(0) // 找到了样品的table
  15. //选中一些行后,把相同引物位置的其余引物标记颜色
  16. table.on('click','tbody tr',function(){
  17. 相同引物位置标记颜色();
  18. })
  19. //添加toolbar工具栏按钮
  20. 添加toolbar按钮(html)
  21. //添加toolbar工具栏按钮
  22. function 添加toolbar按钮(html){
  23. if (toolbar.find('.weiyiyici').length==0){
  24. //添加标记
  25. toolbar.addClass('weiyiyici')
  26. //添加修改样品名称按钮
  27. if (local_修改样品名称=='true'){
  28. toolbar.append('<span style="position:relative;z-index:2;"><button id="button_xiugai_yangpin" onclick="return false">修改样品名称◇</button><div id="div_xiugai_yangpin" style="position:absolute;width:230px;height:95px;border:1px solid orange;background-color: #1B211D;display:none"></div></span>')
  29. var div_show_yincang=toolbar.find('#div_xiugai_yangpin').eq(0)
  30. div_show_yincang.append('<input type="text" class="text_huichejian" id="text_qianzhui" placeholder="样品前缀" size="10"/><button id="button_qianzhui" onclick="return false">添加样品前缀</button>')
  31. div_show_yincang.append('<input type="text" class="text_huichejian" id="text_houzhui" placeholder="样品后缀" size="10"/><button id="button_houzhui" onclick="return false">添加样品后缀</button>')
  32. div_show_yincang.append('<input type="text" class="text_huichejian" id="text_gaiqian" placeholder="需要改的部分" size="15"/><input type="text" class="text_huichejian" id="text_gaihou" placeholder="改成的部分" size="10"/><button id="button_genggai" onclick="return false">更改部分样品名称</button>')
  33. //点击修改样品名称按钮 显示或者隐藏DIV
  34. toolbar.find('#button_xiugai_yangpin').click(function(){
  35. 显示隐藏DIV('#div_xiugai_yangpin',"button_xiugai_yangpin")
  36. })
  37. //点击添加样品前缀按钮执行如下函数
  38. toolbar.find('#button_qianzhui').click(function(){
  39. 添加前后缀('前缀','#text_qianzhui')
  40. })
  41. //点击添加样品后缀按钮执行如下函数
  42. toolbar.find('#button_houzhui').click(function(){
  43. 添加前后缀('后缀','#text_houzhui')
  44. })
  45. //点击 更改部分 执行如下函数
  46. toolbar.find('#button_genggai').click(function(){
  47. 更改部分()
  48. })
  49. //给文本框绑定回车键的函数
  50. toolbar.find('.text_huichejian').keypress(function(event){
  51. if(event.keyCode ==13){
  52. return false
  53. }
  54. });
  55. }
  56. //添加批量添加反应按钮
  57. if (local_批量添加反应=='true'){
  58. toolbar.append('<span style="position:relative;z-index:2;"><button id="button_piliang" onclick="return false"><font color="red">批量添加反应◇</font></button><div id="div_piliang" style="position:absolute;left:-250px;height:100px;width:430px;height:105px;border:1px solid orange;background-color: #1B211D;display:none"></div></span>')
  59. div_piliang=toolbar.find('#div_piliang').eq(0)
  60. div_piliang.append('<input type="text" id="text_piliang_duotiaodai" placeholder="添加多条带" size="10" value="1"/><button id="button_duotiaodai" onclick="return false">批量添加多条带,默认双条带(带引物)</button><br/><br/>')
  61. div_piliang.append('<input type="text" id="text_piliang_tongming" placeholder="添加同名反应" size="10" value="1"/><button id="button_tongming" onclick="return false">批量添加同名反应(不带引物,一个名字只能选一次)</button><br/><br/>')
  62. div_piliang.append('<input type="text" id="text_jiace" placeholder="默认1个" value="1" size="10"/><button id="button_jiace" onclick="return false"><font color="red">加测</font></button>')
  63. //点击批量添加反应按钮 显示或者隐藏DIV
  64. toolbar.find('#button_piliang').click(function(){
  65. 显示隐藏DIV('#div_piliang',"button_piliang")
  66. })
  67. //给批量多条带文本框绑定回车键的函数
  68. toolbar.find('#text_piliang_duotiaodai').eq(0).keypress(function(event){
  69. if(event.keyCode ==13){
  70. return false
  71. }
  72. //如果输入的字符不是数字 那么不允许输入
  73. if(event.keyCode !==48 && event.keyCode !==49 && event.keyCode !==50 && event.keyCode !==51 && event.keyCode !==52 && event.keyCode !==53 && event.keyCode !==54 && event.keyCode !==55 && event.keyCode !==56 && event.keyCode !==57 ){
  74. return false
  75. }
  76. });
  77. //给批量同名文本框绑定回车键的函数
  78. toolbar.find('#text_piliang_tongming').eq(0).keypress(function(event){
  79. if(event.keyCode ==13){
  80. return false
  81. }
  82. //如果输入的字符不是数字 那么不允许输入
  83. if(event.keyCode !==48 && event.keyCode !==49 && event.keyCode !==50 && event.keyCode !==51 && event.keyCode !==52 && event.keyCode !==53 && event.keyCode !==54 && event.keyCode !==55 && event.keyCode !==56 && event.keyCode !==57 ){
  84. return false
  85. }
  86. });
  87. //给加测文本框绑定回车键的函数
  88. toolbar.find('#text_jiace').eq(0).keypress(function(event){
  89. if(event.keyCode ==13){
  90. return false
  91. }
  92. });
  93. //点击多条带批量添加按钮
  94. toolbar.find('#button_duotiaodai').click(function(){
  95. 批量_添加多条带()
  96. })
  97. //点击批量添加同名反应按钮
  98. toolbar.find('#button_tongming').click(function(){
  99. 批量_添加同名反应()
  100. })
  101. //点击加测 按钮
  102. toolbar.find('#button_jiace').click(function(){
  103. 加测('jiace');
  104. })
  105. }
  106. //添加显示订单号按钮
  107. if (local_显示订单号=='true'){
  108. toolbar.append('<button id="button_show_order" onclick="return false">显示订单号</button>')
  109. //点击按钮
  110. toolbar.find('#button_show_order').click(function(){
  111. 显示选择行所属的订单号()
  112. })
  113. }
  114. //添加 显示样品名称 按钮
  115. if (local_显示样品名称=='true'){
  116. toolbar.append('<button id="button_show_yp" onclick="return false">显示样品名称</button>')
  117. //点击按钮
  118. toolbar.find('#button_show_yp').click(function(){
  119. 显示选择行的样品名称()
  120. })
  121. }
  122. //添加 查询引物 按钮
  123. if (local_查询引物=='true'){
  124. toolbar.append('<div id="chaxun_yinwu"></div>')
  125. toolbar.find('#chaxun_yinwu').append('<input type="text" disabled value="客户姓名" size="5"/><input type="text" class="text_value" id="text_kehu_value" placeholder="条件value" size="10"/>')
  126. toolbar.find('#chaxun_yinwu').append('<input type="text" disabled value="测序引物" size="5"/><input type="text" class="text_value" id="text_yinwu_value" placeholder="空格区分" size="10"/>')
  127. toolbar.find('#chaxun_yinwu').append('<input type="text" disabled value="课题组" size="5"/><input type="text" class="text_value" id="text_ketizu_value" placeholder="课题组" size="10"/>')
  128. toolbar.find('#chaxun_yinwu').append('<button id="button_qingkong" onclick="return false">清空value</button>') //清空按钮
  129. //客户姓名 回车 要求:客户姓名和测序引物必须有一项不为空
  130. toolbar.find('.text_value').keypress(function(event){
  131. if(event.keyCode ==13){
  132. //如果 客户 或者 引物 或者 课题组, 至少有一个是有数据,那么才能点击
  133. var kehu_val=toolbar.find('#text_kehu_value').val().trim()
  134. var yinwu_val=toolbar.find('#text_yinwu_value').val().trim()
  135. var ketizu_val=toolbar.find('#text_ketizu_value').val().trim()
  136. if( kehu_val !=="" || yinwu_val !=="" || ketizu_val !=="" ){
  137. //查询客户姓名+测序引物+课题组
  138. 查询引物(kehu_val,yinwu_val,ketizu_val)
  139. }
  140. return false
  141. }
  142. });
  143. //点击 清空value按钮
  144. toolbar.find('#button_qingkong').click(function(){
  145. toolbar.find('.text_value').val('')
  146. })
  147. }
  148. //添加 其他 按钮
  149. if (local_其他=='true'){
  150. //在查询引物的后面加其他按钮
  151. toolbar.find('#chaxun_yinwu').append('<span style="position:relative;z-index:1;"><button id="button_qita" onclick="return false">其他◇</button><div id="div_qita" style="position:absolute;left:-150px;width:280px;height:50px;border:1px solid orange;background-color: #1B211D;display:none"></div></span>')
  152. var div_qita=toolbar.find('#div_qita').eq(0)
  153. if(当前用户名==="申高天"){
  154. div_qita.css('height','140px')
  155. div_qita.append('<input type="text" class="text_huichejian" id="text_add_mubanbanhao" placeholder="模板板号" size="10"/><button id="button_add_mubanbanhao" onclick="return false"><font color="blue">修改模板板号</font></button><br/>')
  156. }
  157. div_qita.append('<input type="text" class="text_huichejian" id="text_beizhu_gaiqian" placeholder="需要改的部分" size="10"/><input type="text" class="text_huichejian" id="text_beizhu_gaihou" placeholder="改成的部分" size="10"/><button id="button_beizhu_genggai" onclick="return false">更改备注</button><br/>')
  158. div_qita.append('<button id="button_tiaozhuandao_zibeiyinwu" onclick="return false"><font color="blue">跳转到自备引物</font></button><br/><br/>')
  159. if(当前用户名==="申高天"){
  160. div_qita.append('<button id="button_tiqushuju" onclick="return false"><font color="blue">提取数据</font></button>')
  161. div_qita.append('<button id="button_qingchushuju" onclick="return false"><font color="blue">清除数据</font></button><br/>')
  162. //添加 textarea 用于放数据
  163. $("body").find("[class='layout-body panel-body panel-body-noheader panel-body-noborder']").append('<textarea id="textarea_biaoti" style="position:absolute;left:400px;visibility:hidden" rows="1" cols="400"></textarea>')
  164. $("body").find("[class='layout-body panel-body panel-body-noheader panel-body-noborder']").append('<textarea id="textarea_shuju" style="position:absolute;left:400px;top:20px;visibility:hidden" rows="2" cols="400"></textarea>');
  165. //模板板号和孔号改为负一
  166. if (local_模板板号和孔号改为负一=='true'){
  167. div_qita.append('<button id="button_mubanbanhaokonghao_fuyi" onclick="return false"><font color="blue">模板板号和孔号改为负一</font></button><br/>')
  168. }
  169. }
  170. //点击 其他 按钮 显示或者隐藏DIV
  171. toolbar.find('#button_qita').click(function(){
  172. 显示隐藏DIV('#div_qita',"button_qita")
  173. })
  174. //给文本框绑定回车键的函数
  175. toolbar.find('.text_huichejian').keypress(function(event){
  176. if(event.keyCode ==13){
  177. return false
  178. }
  179. });
  180. //点击 修改模板板号 按钮
  181. toolbar.find('#button_add_mubanbanhao').click(function(){
  182. 修改模板板号()
  183. })
  184. //单击 更改备注 按钮
  185. toolbar.find('#button_beizhu_genggai').click(function(){
  186. 更改备注()
  187. })
  188. //双击 清空备注
  189. toolbar.find('#button_beizhu_genggai').dblclick(function(){
  190. 清空备注()
  191. })
  192. //点击 跳转到自备引物 按钮
  193. toolbar.find('#button_tiaozhuandao_zibeiyinwu').click(function(){
  194. 跳转到自备引物()
  195. })
  196. //点击 提取数据 按钮
  197. toolbar.find('#button_tiqushuju').click(function(){
  198. 提取数据()
  199. })
  200. //点击 清除数据 按钮
  201. toolbar.find('#button_qingchushuju').click(function(){
  202. 清除数据()
  203. })
  204. //点击 模板板号和孔号改为负一 按钮
  205. toolbar.find('#button_mubanbanhaokonghao_fuyi').click(function(){
  206. 模板板号和孔号改为负一()
  207. })
  208. }
  209. }
  210. }
  211. //显示或者隐藏DIV
  212. function 显示隐藏DIV(div_id,button_id){
  213. div=toolbar.find(div_id).eq(0)
  214. div.toggle()
  215. //改变背景颜色
  216. if (div.css('display')==="none"){
  217. toolbar.find(button_id).css('background-color','')
  218. }else{
  219. toolbar.find(button_id).css('background-color','#B7A0AA')
  220. //如果是批量添加反应的div 把已填的数据改为1
  221. if (div_id=='#div_piliang'){
  222. toolbar.find(div_id).eq(0).find(":input").val('1')
  223. }else{
  224. //如果是修改样品名称的div 或者 其他div 把已填的数据清除
  225. toolbar.find(div_id).eq(0).find(":input").val('')
  226. }
  227. }
  228. }
  229. //添加前后缀
  230. function 添加前后缀(前后缀,id){
  231. //如果没有选择的行,那么退出
  232. if(table.find('tbody').find("[aria-selected='true']").size()==0){return false}
  233. if(html.find(id).eq(0).val()===""){return false}
  234. selecteds=table.find('tbody').find("[aria-selected='true']")
  235. selecteds.each(function(){
  236. ids=$(this).find('[aria-describedby=list_undefined]').text() //获取生产编号
  237. product_number=$(this).find('[aria-describedby=list_seqs_sam_num]').text() //获取最开始的样品编号
  238. if (前后缀=='前缀'){
  239. new_product_number=toolbar.find('#text_qianzhui').eq(0).val()+product_number //获取最新的样品编号
  240. }
  241. if (前后缀=='后缀'){
  242. new_product_number=product_number+toolbar.find('#text_houzhui').eq(0).val() //获取最新的样品编号
  243. }
  244. //post请求 更改样品编号
  245. $.post("/seq/ashx/SeqSampleHandler.ashx",
  246. {action:"piliang_edit",ids:ids.slice(2),newValue:"seqs_sam_num="+new_product_number,rules_txt:"样品编号"},
  247. function (data,status) {console.log(data);}
  248. );
  249. html.find('.ui-pg-input').eq(0).focus()
  250. alert('修改了 '+table.find('tbody').find("[aria-selected='true']").size()+' 条反应的样品名称,光标自动定位在页数,直接按回车或更改页数可以查看更改结果')
  251. return false
  252. })
  253. }
  254. //更改部分样品名称
  255. function 更改部分(){
  256. //如果没有选择的行,那么退出
  257. if(table.find('tbody').find("[aria-selected='true']").size()==0){return false}
  258. if(html.find('#text_gaiqian').eq(0).val()===""){return false}
  259. selecteds=table.find('tbody').find("[aria-selected='true']")
  260. //做个标记,只有所有的样品都只匹配到一次才可以
  261. var is_goon=true
  262. selecteds.each(function(){
  263. ids=$(this).find('[aria-describedby=list_undefined]').text() //获取生产编号
  264. product_number=$(this).find('[aria-describedby=list_seqs_sam_num]').text() //获取最开始的样品编号
  265. old_part=toolbar.find('#text_gaiqian').eq(0).val() //获取需要更改的部分名称 前
  266. new_part=toolbar.find('#text_gaihou').eq(0).val() //获取需要更改的部分名称 后
  267. num=product_number.split(old_part).length-1 //存在多少遍要更改的部分,只有1遍才可以
  268. if (num!=1){is_goon=false; alert('只有每个样品都能匹配一次,才能修改');return false}
  269. })
  270. if (is_goon==true){
  271. selecteds.each(function(){
  272. ids=$(this).find('[aria-describedby=list_undefined]').text() //获取生产编号
  273. product_number=$(this).find('[aria-describedby=list_seqs_sam_num]').text() //获取最开始的样品编号
  274. old_part=toolbar.find('#text_gaiqian').eq(0).val() //获取需要更改的部分名称
  275. new_part=toolbar.find('#text_gaihou').eq(0).val() //获取需要更改的部分名称
  276. var reg = new RegExp(old_part,"g");
  277. new_product_number=product_number.replace(reg,new_part); //改成最新的样品编号
  278. //post请求 更改样品编号
  279. $.post("/seq/ashx/SeqSampleHandler.ashx",
  280. {action:"piliang_edit",ids:ids.slice(2),newValue:"seqs_sam_num="+new_product_number,rules_txt:"样品编号"},
  281. function (data,status) {console.log("成功" + data);});
  282. })
  283. html.find('.ui-pg-input').eq(0).focus()
  284. alert('修改了 '+table.find('tbody').find("[aria-selected='true']").size()+' 条反应的样品名称,光标自动定位在页数,直接按回车或更改页数可以查看更改结果')
  285. return false
  286. }
  287. }
  288. //添加多条带
  289. function 批量_添加多条带(){
  290. var geshu=toolbar.find('#text_piliang_duotiaodai').eq(0).val()
  291. res=文本是否是120(geshu)
  292. if(!res){ //说明输入的不符合要求
  293. alert('输入的不符合要求,需要输入1到20')
  294. return false
  295. }
  296. geshu=parseInt(geshu)
  297. //判断是否选择了反应,且选择的是否是同一个订单号
  298. selecteds=is_one_order(html)
  299. if(selecteds===false){//如果返回的是false 那么要不没有选择反应,要不选择的不是同一个订单号
  300. return false
  301. }
  302. yp_all_array=[] //生产编号
  303. ypmc_all_array=[] //样品名称
  304. new_ypmc_all_array=[] //新的样品名称
  305. yinwu_all_array=[] //引物名称
  306. new_yinwu_all_array=[] //新的引物名称
  307. yinwu_weizhi_array=[] //引物位置
  308. new_yinwu_weizhi_array=[] //新的引物位置
  309. yinwu_nong_all_array=[] //引物浓度
  310. new_yinwu_nong_all_array=[] //新的引物浓度
  311. yplx_all_array=[] //样品类型
  312. new_yplx_all_array=[] //新的样品类型
  313. zaiti_array=[] //载体
  314. new_zaiti_array=[] //新的载体
  315. pianduan_array=[] //片段
  316. new_pianduan_array=[] //新的片段
  317. kangshengsu_array=[] //抗生素
  318. new_kangshengsu_array=[] //新的抗生素
  319. beizhu_array=[] //备注
  320. new_beizhu_array=[] //新的备注
  321. is_cetong_array=[] //是否测通
  322. new_is_cetong_array=[] //新的是否测通
  323. //公共函数 生产编号需要降序排序
  324. 是否排好序=生产编号需要降序排序(selecteds)
  325. if(是否排好序===false){//如果返回的是false 那么没有排好序
  326. return false
  327. }
  328. //倒序把样品对应号放进数组
  329. tags=0
  330. $(selecteds.toArray().reverse()).each(function(){
  331. ypdyh_name=$(this).find('[aria-describedby=list_seqs_plus_prod_id]').html()
  332. if(ypdyh_name!=="" && ypdyh_name!=="&nbsp;"){
  333. tags=1
  334. }
  335. })
  336. if(tags===1){
  337. alert('有的反应带有"样品对应号",不能添加多条带')
  338. return false
  339. }
  340. $(selecteds.toArray().reverse()).each(function(){
  341. //倒序把样品名称放进数组
  342. ypmc_all_array.push($(this).find('[aria-describedby=list_seqs_sam_num]').text())
  343. //倒序把引物名称放进数组
  344. yinwu_name=$(this).find('[aria-describedby=list_seqs_primer]').html()
  345. if(yinwu_name=="" || yinwu_name=="&nbsp;"){
  346. yinwu_all_array.push("")
  347. }else{yinwu_all_array.push(yinwu_name)}
  348. //倒序把引物位置放进数组
  349. yinwu_weizhi_array.push($(this).find('[aria-describedby=list_seqs_primer_id_2_kind]').text())
  350. //倒序把引物浓度放进数组
  351. nongdu_name=$(this).find('[aria-describedby=list_seqs_observe]').html()
  352. if(nongdu_name=="" || nongdu_name=="&nbsp;"){ //如果载体为空 或者 空格
  353. yinwu_nong_all_array.push("")
  354. }else{yinwu_nong_all_array.push(nongdu_name)}
  355. //倒序把样品类型放进数组
  356. yplx_name=$(this).find('[aria-describedby=list_seqs_sam_type]').text()
  357. yplx_all_array.push(yplx_name)
  358. //倒序把载体放进数组
  359. zaiti_name=$(this).find('[aria-describedby=list_seqs_carry]').html()
  360. if(zaiti_name=="" || zaiti_name=="&nbsp;"){ //如果载体为空 或者 空格
  361. zaiti_array.push("")
  362. }else{zaiti_array.push(zaiti_name)}
  363. //倒序把片段放进数组
  364. pianduan_name=$(this).find('[aria-describedby=list_seqs_fragment_size]').html()
  365. if(pianduan_name=="" || pianduan_name=="&nbsp;"){ //如果片段为空 或者 空
  366. pianduan_array.push("")
  367. }else{pianduan_array.push(pianduan_name)}
  368. //倒序把抗生素放进数组
  369. kangshengsu_name=$(this).find('[aria-describedby=list_seqs_ant_type]').html()
  370. if(kangshengsu_name=="" || kangshengsu_name=="&nbsp;"){ //如果为空 或者 空格
  371. kangshengsu_array.push("")
  372. }else{kangshengsu_array.push(kangshengsu_name)}
  373. //倒序把备注放进数组
  374. beizhu_name=$(this).find('[aria-describedby=list_remark]').html()
  375. if(beizhu_name=="" || beizhu_name=="&nbsp;"){
  376. beizhu_array.push("")
  377. }else{beizhu_array.push(beizhu_name)}
  378. //倒序把是否测通放进数组
  379. cetong_is=$(this).find('[aria-describedby=list_seqs_istest_pass]').text()
  380. if(cetong_is=="是" || cetong_is=="true"){
  381. is_cetong_array.push(true)
  382. }else{is_cetong_array.push(false)}
  383. })
  384. //对多条带进行重新赋值
  385. quchong_ypm=quchong_arr(ypmc_all_array)
  386. for(var i=0;i<quchong_ypm.length;i++){ //去重后的数组
  387. for(var j=1;j<=geshu;j++){ // 多条带 这是为了方便样品的多条带加上后缀
  388. for(var z=0;z<ypmc_all_array.length;z++){ //原数组
  389. if(quchong_ypm[i]===ypmc_all_array[z]){
  390. new_ypmc_all_array.push(ypmc_all_array[z]+'-'+(j+1).toString()) //把样品名加上多条带的后缀push到新的样品数组里面
  391. new_yinwu_all_array.push(yinwu_all_array[z]) //push到新的引物数组里面
  392. new_yinwu_weizhi_array.push(yinwu_weizhi_array[z]) //push到新的引物位置数组里面
  393. new_yinwu_nong_all_array.push(yinwu_nong_all_array[z]) //push到新的引物浓度数组里面
  394. new_yplx_all_array.push(yplx_all_array[z]) //push到新的样品类型数组里面
  395. new_zaiti_array.push(zaiti_array[z])//push到新的载体数组里面
  396. new_pianduan_array.push(pianduan_array[z])//push到新的片段数组里面
  397. new_kangshengsu_array.push(kangshengsu_array[z]) //push到新的抗生素数组里面
  398. new_beizhu_array.push(beizhu_array[z]) //push到新的备注数组里面
  399. new_is_cetong_array.push(is_cetong_array[z]) //push到新的是否测通数组里面
  400. }
  401. }
  402. }
  403. }
  404. order_ID=selecteds.eq(0).find('[aria-describedby=list_seqo_order_id]').eq(0).text() //查找订单号
  405. kehu_ID=selecteds.eq(0).find('[aria-describedby=list_seqo_cust_id]').eq(0).text() //查找客户ID
  406. kehu_name=selecteds.eq(0).find('[aria-describedby=list_seqo_cust_name]').eq(0).text() //查找客户姓名
  407. ketizu_ID=selecteds.eq(0).find('[aria-describedby=list_seqo_ketizu_id]').eq(0).text() //查找课题组ID
  408. ketizu_name=selecteds.eq(0).find('[aria-describedby=list_seqo_ketizu]').eq(0).text() //查找课题组姓名
  409. company_ID=selecteds.eq(0).find('[aria-describedby=list_seqs_product_company_id]').eq(0).text() // 公司ID 比如昌平的是38
  410. company_name=selecteds.eq(0).find('[aria-describedby=list_seqs_product_company_name]').eq(0).text() // 生产分公司名字 比如北京分公司
  411. var r = confirm("确定要给"+kehu_name+"添加"+(geshu+1).toString()+"条带吗?总共 "+(selecteds.size()*geshu).toString()+" 条反应");
  412. if (r == false) {
  413. return false;
  414. } else{
  415. html.find('#button_duotiaodai').eq(0).attr('disabled',true)
  416. }
  417. josn_str=''
  418. $.each(new_ypmc_all_array,function(index){ //对数组 多条反应,需要结合成josn_str index是从0开始的
  419. weizhi_split_array=new_yinwu_weizhi_array[index].split("-") //位置用split分隔,如果不能分隔,那么长度为1,如果能分隔,那么长度为2
  420. if(weizhi_split_array.length==1){
  421. yinwu_weizhi_kind="";
  422. yinwu_weizhi_primerid=""
  423. }else{
  424. yinwu_weizhi_kind=weizhi_split_array[1]
  425. yinwu_weizhi_primerid=weizhi_split_array[0]
  426. }
  427. josn_str=josn_str+'{"seqs_vip_platestyle":"纵向提交","seqs_vip_platename":"1","seqs_vip_plate":1,"seqs_vip_hole":'+(index+1)+',"seqs_vip_number":'+(index+1)+',"seqs_vip_sam_num":"'+new_ypmc_all_array[index]+'","seqs_vip_sam_kind":"'+new_yplx_all_array[index]+'","seqs_vip_fragment_size":"","seqs_vip_seqs_carry":"'+new_zaiti_array[index]+'","seqs_vip_ant_type":"'+new_kangshengsu_array[index]+'","seqs_vip_seqs_primer":"'+new_yinwu_all_array[index]+'","seqs_vip_seqsprime_kind":"'+yinwu_weizhi_kind+'","seqs_vip_seqs_primer_id":"'+yinwu_weizhi_primerid+'","seqs_vip_istest_pass":'+new_is_cetong_array[index]+',"seqs_vip_return_sample":false,"seqs_vip_sample_remark":"'+new_beizhu_array[index]+'"},'
  428. if(new_ypmc_all_array.length==index+1){ //如果是最后一项,那么把最后的逗号去掉
  429. josn_str=josn_str.slice(0,-1);
  430. }
  431. })
  432. josn_str='['+josn_str+'],'+'"orderid":"'+order_ID+'","companyid":"'+company_ID+'"}'
  433. josn_str='{"action":"AddSeqOrder","seqHighPhoto":"","seqscreenshot":[],"cust_id":'+kehu_ID+',"cust_name":"'+kehu_name+'","ketizu_id":"'+ketizu_ID+'","ketizu_name":"'+ketizu_name+'","ordersort":"","linkToGeneNo":"","seqo_product_company_id":"'+company_ID+'","seqo_product_company_name":"'+company_name+'","seqo_settlement_company_id":"","seqo_settlement_company_name":"","order":{"vip_order_name":"","vip_order_kind":"PCR切胶","vip_order_platestyle":"2","vip_order_remark":"","vip_order_state":0,"vip_order_ketizuid":"'+ketizu_ID+'","vip_order_ketizuname":"'+ketizu_name+'","vip_order_isurgent":"false"},"seqo_id":"'+order_ID+'","seqs":'+josn_str
  434. $.ajax({
  435. type:"POST",
  436. url:"/ajax/PostErpUseVipPageHandler.ashx",
  437. contentType: "application/json", //必须这样写
  438. dataType:"json",
  439. data: JSON.stringify(jQuery.parseJSON(josn_str)), //josn_str是你要提交是json字符串
  440. success:function (data) {
  441. html.find('.ui-pg-input').eq(0).focus()
  442. alert('修改成功 ,光标自动定位在页数,直接按回车或更改页数可以查看更改结果')
  443. html.find('#button_duotiaodai').eq(0).attr('disabled',false)
  444. }
  445. })
  446. }
  447. //批量添加同名反应
  448. function 批量_添加同名反应(){
  449. var geshu=toolbar.find('#text_piliang_tongming').eq(0).val()
  450. res=文本是否是120(geshu)
  451. if(!res){ //说明输入的不符合要求
  452. alert('输入的不符合要求,需要输入1到20')
  453. return false
  454. }
  455. geshu=parseInt(geshu)
  456. //公共函数 判断是否选择了反应,且选择的是否是同一个订单号
  457. selecteds=is_one_order(html)
  458. if(selecteds===false){//如果返回的是false 那么要不没有选择反应,要不选择的不是同一个订单号
  459. return false
  460. }
  461. yp_all_array=[] //生产编号
  462. ypdyh_all_array=[] //样品对应号
  463. new_ypdyh_all_array=[] //新的样品对应号
  464. ypmc_all_array=[] //样品名称
  465. new_ypmc_all_array=[] //新的样品名称
  466. yplx_all_array=[] //样品类型
  467. new_yplx_all_array=[] //新的样品类型
  468. zaiti_array=[] //载体
  469. new_zaiti_array=[] //新的载体
  470. pianduan_array=[] //片段
  471. new_pianduan_array=[] //新的片段
  472. kangshengsu_array=[] //抗生素
  473. new_kangshengsu_array=[] //新的抗生素
  474. beizhu_array=[] //备注
  475. new_beizhu_array=[] //新的备注
  476. is_cetong_array=[] //是否测通
  477. new_is_cetong_array=[] //新的是否测通
  478. //公共函数 生产编号需要降序排序
  479. 是否排好序=生产编号需要降序排序(selecteds)
  480. if(是否排好序===false){//如果返回的是false 那么没有排好序
  481. return false
  482. }
  483. $(selecteds.toArray().reverse()).each(function(){
  484. //倒序把样品名称放进数组
  485. ypmc_all_array.push($(this).find('[aria-describedby=list_seqs_sam_num]').text())
  486. //倒序把样品对应号放进数组
  487. ypdyh_name=$(this).find('[aria-describedby=list_seqs_plus_prod_id]').html()
  488. if(ypdyh_name=="" || ypdyh_name=="&nbsp;"){
  489. ypdyh_all_array.push("")
  490. }else{ypdyh_all_array.push(ypdyh_name)}
  491. //倒序把样品类型放进数组
  492. yplx_name=$(this).find('[aria-describedby=list_seqs_sam_type]').text()
  493. yplx_all_array.push(yplx_name)
  494. //倒序把载体放进数组
  495. zaiti_name=$(this).find('[aria-describedby=list_seqs_carry]').html()
  496. if(zaiti_name=="" || zaiti_name=="&nbsp;"){ //如果载体为空 或者 空格
  497. zaiti_array.push("")
  498. }else{zaiti_array.push(zaiti_name)}
  499. //倒序把片段放进数组
  500. pianduan_name=$(this).find('[aria-describedby=list_seqs_fragment_size]').html()
  501. if(pianduan_name=="" || pianduan_name=="&nbsp;"){ //如果片段为空 或者 空
  502. pianduan_array.push("")
  503. }else{pianduan_array.push(pianduan_name)}
  504. //倒序把抗生素放进数组
  505. kangshengsu_name=$(this).find('[aria-describedby=list_seqs_ant_type]').html()
  506. if(kangshengsu_name=="" || kangshengsu_name=="&nbsp;"){ //如果为空 或者 空格
  507. kangshengsu_array.push("")
  508. }else{kangshengsu_array.push(kangshengsu_name)}
  509. //倒序把备注放进数组
  510. beizhu_name=$(this).find('[aria-describedby=list_remark]').html()
  511. if(beizhu_name=="" || beizhu_name=="&nbsp;"){
  512. beizhu_array.push("")
  513. }else{beizhu_array.push(beizhu_name)}
  514. //倒序把是否测通放进数组
  515. cetong_is=$(this).find('[aria-describedby=list_seqs_istest_pass]').text()
  516. if(cetong_is=="是" || cetong_is=="true"){
  517. is_cetong_array.push(true)
  518. }else{is_cetong_array.push(false)}
  519. })
  520. //对同名数组进行重新赋值
  521. quchong_ypm=quchong_arr(ypmc_all_array)
  522. //如果去重后的长度和原先的长度不一致,代表有重复的
  523. if(ypmc_all_array.length!==quchong_ypm.length){
  524. alert('不要选择重复的样品名,一个样品名只允许选择一次')
  525. return false
  526. }
  527. for(var i=0;i<ypmc_all_array.length;i++){ //去重后的数组
  528. for(var j=1;j<=geshu;j++){ // 多条带 这是为了方便样品的多条带加上后缀
  529. new_ypmc_all_array.push(ypmc_all_array[i]) //把样品名push到新的样品数组里面
  530. new_ypdyh_all_array.push(ypdyh_all_array[i])//把样品对应号push到新的样品数组里面
  531. new_yplx_all_array.push(yplx_all_array[i]) //push到新的样品类型数组里面
  532. new_zaiti_array.push(zaiti_array[i])//push到新的载体数组里面
  533. new_pianduan_array.push(pianduan_array[i])//push到新的片段数组里面
  534. new_kangshengsu_array.push(kangshengsu_array[i]) //push到新的抗生素数组里面
  535. new_beizhu_array.push(beizhu_array[i]) //push到新的备注数组里面
  536. new_is_cetong_array.push(is_cetong_array[i]) //push到新的是否测通数组里面
  537. }
  538. }
  539. order_ID=selecteds.eq(0).find('[aria-describedby=list_seqo_order_id]').eq(0).text() //查找订单号
  540. kehu_ID=selecteds.eq(0).find('[aria-describedby=list_seqo_cust_id]').eq(0).text() //查找客户ID
  541. kehu_name=selecteds.eq(0).find('[aria-describedby=list_seqo_cust_name]').eq(0).text() //查找客户姓名
  542. ketizu_ID=selecteds.eq(0).find('[aria-describedby=list_seqo_ketizu_id]').eq(0).text() //查找课题组ID
  543. ketizu_name=selecteds.eq(0).find('[aria-describedby=list_seqo_ketizu]').eq(0).text() //查找课题组姓名
  544. company_ID=selecteds.eq(0).find('[aria-describedby=list_seqs_product_company_id]').eq(0).text() // 公司ID 比如昌平的是38
  545. company_name=selecteds.eq(0).find('[aria-describedby=list_seqs_product_company_name]').eq(0).text() // 生产分公司名字 比如北京分公司
  546. var r = confirm("确定要给"+kehu_name+"添加"+(selecteds.size()*geshu).toString()+"条同名反应吗?");
  547. if (r == false) {
  548. return false;
  549. } else{
  550. html.find('#button_tongming').eq(0).attr('disabled',true)
  551. }
  552. josn_str=''
  553. $.each(new_ypmc_all_array,function(index){ //对数组 多条反应,需要结合成josn_str index是从0开始的
  554. josn_str=josn_str+'{"seqs_vip_platestyle":"纵向提交","seqs_vip_platename":"1","seqs_vip_plate":1,"seqs_vip_hole":'+(index+1)+',"seqs_vip_number":'+(index+1)+',"seqs_vip_sam_num":"'+new_ypmc_all_array[index]+'","seqs_vip_sam_kind":"'+new_yplx_all_array[index]+'","seqs_vip_fragment_size":"'+new_pianduan_array[index]+'","seqs_vip_seqs_carry":"'+new_zaiti_array[index]+'","seqs_vip_ant_type":"'+new_kangshengsu_array[index]+'","seqs_vip_seqs_primer":"","seqs_vip_seqsprime_kind":"","seqs_vip_seqs_primer_id":"","seqs_vip_istest_pass":'+new_is_cetong_array[index]+',"seqs_vip_return_sample":false,"seqs_vip_sample_remark":"'+new_beizhu_array[index]+'","seqs_plus_prod_id":"'+new_ypdyh_all_array[index]+'"},'
  555. if(new_ypmc_all_array.length==index+1){ //如果是最后一项,那么把最后的逗号去掉
  556. josn_str=josn_str.slice(0,-1);
  557. }
  558. })
  559. josn_str='['+josn_str+'],'+'"orderid":"'+order_ID+'","companyid":"'+company_ID+'"}'
  560. josn_str='{"action":"AddSeqOrder","seqHighPhoto":"","seqscreenshot":[],"cust_id":'+kehu_ID+',"cust_name":"'+kehu_name+'","ketizu_id":"'+ketizu_ID+'","ketizu_name":"'+ketizu_name+'","ordersort":"","linkToGeneNo":"","seqo_product_company_id":"'+company_ID+'","seqo_product_company_name":"'+company_name+'","seqo_settlement_company_id":"","seqo_settlement_company_name":"","order":{"vip_order_name":"","vip_order_kind":"PCR切胶","vip_order_platestyle":"2","vip_order_remark":"","vip_order_state":0,"vip_order_ketizuid":"'+ketizu_ID+'","vip_order_ketizuname":"'+ketizu_name+'","vip_order_isurgent":"false"},"seqo_id":"'+order_ID+'","seqs":'+josn_str
  561. $.ajax({
  562. type:"POST",
  563. url:"/ajax/PostErpUseVipPageHandler.ashx",
  564. contentType: "application/json", //必须这样写
  565. dataType:"json",
  566. data: JSON.stringify(jQuery.parseJSON(josn_str)), //josn_str是你要提交是json字符串
  567. success:function (data) {
  568. html.find('.ui-pg-input').eq(0).focus()
  569. alert('修改成功 ,光标自动定位在页数,直接按回车或更改页数可以查看更改结果')
  570. html.find('#button_tongming').eq(0).attr('disabled',false)
  571. }
  572. })
  573. }
  574. //加测
  575. function 加测(){
  576. //公共函数 判断是否选择了反应,且选择的是否是同一个订单号
  577. selecteds=is_one_order(html)
  578. if(selecteds===false){//如果返回的是false 那么要不没有选择反应,要不选择的不是同一个订单号
  579. return false
  580. }
  581. //公共函数 生产编号需要降序排序
  582. 是否排好序=生产编号需要降序排序(selecteds)
  583. if(是否排好序===false){//如果返回的是false 那么没有排好序
  584. return false
  585. }
  586. //获取选择的行的所有数据
  587. 数据_arr=获取选择的行的所有数据(selecteds)
  588. scbh_arr=数据_arr[0] //生产编号
  589. ypdyh_arr=数据_arr[1] //样品对应号
  590. ypmc_arr=数据_arr[2] //样品名称
  591. yplx_arr=数据_arr[6] //样品类型
  592. zaiti_arr=数据_arr[7] //载体
  593. pianduan_arr=数据_arr[8] //片段
  594. kangshengsu_arr=数据_arr[9] //抗生素
  595. beizhu_arr=数据_arr[10] //备注
  596. is_cetong_arr=数据_arr[11] //是否测通
  597. for (var i=0;i<scbh_arr.length;i++){
  598. //对样品对应号进行循环 如果样品对应号为空 那么把样品对应号改成生产编号
  599. 当前样品对应号=ypdyh_arr[i]
  600. 当前样品对应号=当前样品对应号.trim()
  601. if (当前样品对应号==''){
  602. ypdyh_arr[i]=scbh_arr[i]
  603. }else if (当前样品对应号.indexOf('YP')==-1){
  604. alert('选择的行中,样品对应号有的不对')
  605. return false
  606. }
  607. //对样品类型进行循环 转换成质粒或者PCR已纯化
  608. 当前样品类型=yplx_arr[i]
  609. if(当前样品类型=="质粒" || 当前样品类型.search("菌")!= -1){
  610. yplx_arr[i]="质粒"
  611. }else if( 当前样品类型.search("胶")!= -1 || 当前样品类型.toUpperCase()=="PCR已纯化" || 当前样品类型.toUpperCase()=="PCR单一"){
  612. yplx_arr[i]="PCR已纯化"
  613. }else{yplx_arr[i]="质粒"}
  614. //对是否测通进行循环 放入true或false
  615. 当前是否测通=is_cetong_arr[i]
  616. if(当前是否测通=="是"){
  617. is_cetong_arr[i]=true
  618. }else{is_cetong_arr[i]=false}
  619. }
  620. order_ID=selecteds.eq(0).find('[aria-describedby=list_seqo_order_id]').eq(0).text() //查找订单号
  621. kehu_ID=selecteds.eq(0).find('[aria-describedby=list_seqo_cust_id]').eq(0).text() //查找客户ID
  622. kehu_name=selecteds.eq(0).find('[aria-describedby=list_seqo_cust_name]').eq(0).text() //查找客户姓名
  623. ketizu_ID=selecteds.eq(0).find('[aria-describedby=list_seqo_ketizu_id]').eq(0).text() //查找课题组ID
  624. ketizu_name=selecteds.eq(0).find('[aria-describedby=list_seqo_ketizu]').eq(0).text() //查找课题组姓名
  625. company_ID=selecteds.eq(0).find('[aria-describedby=list_seqs_product_company_id]').eq(0).text() // 公司ID 比如昌平的是38
  626. company_name=selecteds.eq(0).find('[aria-describedby=list_seqs_product_company_name]').eq(0).text() // 生产分公司名字 比如北京分公司
  627. riqi=getday_y_n('---')
  628. jihang=toolbar.find("#text_jiace").eq(0).val() //确定加测几行,
  629. if(jihang.trim()==""){jihang="1"}
  630. jihang=parseInt(jihang)
  631. if(!jihang){jihang="1"}
  632. josn_str=''
  633. var r = confirm("确定要给"+kehu_name+"加测吗?总共 "+jihang*selecteds.size()+" 条加测反应");
  634. if (r == false) {
  635. return false;
  636. } else{
  637. html.find('#button_jiace').eq(0).attr('disabled',true)
  638. }
  639. $(selecteds.toArray().reverse()).each(function(index){ //多条反应,需要结合成josn_str index是从0开始的
  640. qian='{"seqs_vip_platestyle":"纵向提交","seqs_vip_platename":"1","seqs_vip_plate":1,"seqs_vip_hole":'
  641. zhong=index*jihang+1
  642. hou=',"seqs_vip_number":'+(index+1)+',"seqs_vip_sam_num":"'+ypmc_arr[index]+'","seqs_vip_sam_kind":"'+yplx_arr[index]+'","seqs_vip_fragment_size":"'+pianduan_arr[index]+'","seqs_vip_seqs_carry":"'+zaiti_arr[index]+'","seqs_vip_ant_type":"'+kangshengsu_arr[index]+'","seqs_vip_seqs_primer":"","seqs_vip_seqsprime_kind":"","seqs_vip_seqs_primer_id":"","seqs_vip_spec_require":"","seqs_vip_istest_pass":'+is_cetong_arr[index]+',"seqs_vip_return_sample":false,"seqs_vip_sample_remark":"'+beizhu_arr[index]+'","seqs_plus_prod_id":"'+ypdyh_arr[index]+'"},'
  643. josn_str=josn_str+qian+zhong+hou
  644. for(var i=2;i<=jihang;i++){
  645. zhong=index*jihang+i
  646. josn_str=josn_str+qian+zhong+hou
  647. }
  648. if(selecteds.size()==index+1){ //如果是最后一项,那么把最后的逗号去掉
  649. josn_str=josn_str.slice(0,-1);
  650. }
  651. })
  652. josn_str='['+josn_str+'],'+'"orderid":null,"companyid":null}'
  653. josn_str='{"action":"AddSeqOrder","seqHighPhoto":"","seqscreenshot":[],"cust_id":'+kehu_ID+',"cust_name":"'+kehu_name+'","ketizu_id":"'+ketizu_ID+'","ketizu_name":"'+ketizu_name+'","ordersort":"","linkToGeneNo":"","seqo_product_company_id":"'+company_ID+'","seqo_product_company_name":"'+company_name+'","seqo_settlement_company_id":"","seqo_settlement_company_name":"","order":{"vip_order_name":"'+riqi+'","vip_order_kind":"PCR切胶","vip_order_platestyle":"2","vip_order_remark":"","vip_order_state":0,"vip_order_ketizuid":"'+ketizu_ID+'","vip_order_ketizuname":"'+ketizu_name+'","vip_order_isurgent":"false"},"seqo_id":null,"seqs":'+josn_str
  654. $.ajax({
  655. type:"POST",
  656. url:"/ajax/PostErpUseVipPageHandler.ashx",
  657. contentType: "application/json", //必须这样写
  658. dataType:"json",
  659. data: JSON.stringify(jQuery.parseJSON(josn_str)), //josn_str是你要提交是json字符串
  660. success:function (data) {
  661. html.find('.ui-pg-input').eq(0).focus()
  662. alert('修改成功 ,光标自动定位在页数,直接按回车或更改页数可以查看更改结果')
  663. html.find('#button_jiace').eq(0).attr('disabled',false)
  664. }
  665. })
  666. }
  667. //显示选择行所属的订单号
  668. function 显示选择行所属的订单号(){
  669. if(table.find('tbody').find("[aria-selected='true']").size()==0){return false}
  670. var dingdanhao=table.find('tbody').find("[aria-selected='true']").eq(0).find('[aria-describedby=list_seqo_order_id]').text() //查询订单号
  671. toolbar.find('#a_search').eq(0).find('.l-btn-left').eq(0).click(); //点击 查询按钮
  672. $('#searchForm').eq(0).find("option[value='seqo_order_id']").attr('selected','selected') //把找到的第一个查询条件改成 订单号
  673. $('#searchForm').eq(0).find("[class='txt02 searchString']").eq(0).val(dingdanhao)
  674. $("#AB").click()
  675. }
  676. //显示选择行的样品名称 查询这个样品在这个客户名下所有的记录
  677. function 显示选择行的样品名称(){
  678. if(table.find('tbody').find("[aria-selected='true']").size()==0){return false}
  679. kehu_id=table.find('tbody').find("[aria-selected='true']").eq(0).find('[aria-describedby=list_seqo_cust_id]').text() //查询客户id
  680. yp_name=table.find('tbody').find("[aria-selected='true']").eq(0).find('[aria-describedby=list_seqs_sam_num]').text() //查询样品名称
  681. toolbar.find('#a_search').eq(0).find('.l-btn-left').eq(0).click(); //点击 查询按钮
  682. $('#searchForm').eq(0).find("option[value='seqo_cust_id']").eq(0).attr('selected','selected') //把找到的第一个查询条件改成 客户ID
  683. $('#searchForm').eq(0).find("[class='txt02 searchString']").eq(0).val(kehu_id)
  684. $('#searchForm').eq(0).find("option[value='seqs_sam_num']").eq(1).attr('selected','selected') //把找到的第二个查询条件改成 样品编号
  685. $('#searchForm').eq(0).find("[class='txt02 searchString']").eq(1).val(yp_name)
  686. $("#AB").click()
  687. }
  688. //查询客户姓名+测序引物+课题组
  689. function 查询引物(kehu_val,yinwu_val,ketizu_val){
  690. for(var i=1;i<=5;i++){
  691. yinwu_val=yinwu_val.replace(/ /g," ");//两个空格替换成一个空格 多运行几遍
  692. }
  693. yinwu_arr=yinwu_val.split(" "); //把测序引物 按照 空管split成数组
  694. console.log(yinwu_arr)
  695. toolbar.find('#a_search').eq(0).find('.l-btn-left').eq(0).click();
  696. $('#searchForm').eq(0).find("option[value='seqo_cust_name']").eq(0).attr('selected','selected') //把找到的第一个查询条件改成 客户姓名
  697. $('#searchForm').eq(0).find("option[value='seqo_ketizu']").eq(1).attr('selected','selected') //把找到的第二个查询条件改成 课题组
  698. if (yinwu_arr.length>0){
  699. for(var i=2;i<=yinwu_arr.length+1;i++){
  700. $('#searchForm').eq(0).find("option[value='seqs_primer']").eq(i).attr('selected','selected') //测序引物
  701. }
  702. }
  703. //查询方式前14个变成包含
  704. $('.searchOper:lt(14)').find("option[value='cn']").attr('selected','selected') //测序引物
  705. //放入信息
  706. $('#searchForm').eq(0).find("[class='txt02 searchString']").eq(0).val(kehu_val)
  707. $('#searchForm').eq(0).find("[class='txt02 searchString']").eq(1).val(ketizu_val)
  708. for(var i=2;i<=yinwu_arr.length+1;i++){
  709. $('#searchForm').eq(0).find("[class='txt02 searchString']").eq(i).val(yinwu_arr[i-2])
  710. }
  711. $("#AB").click()
  712. }
  713. //修改模板板号
  714. function 修改模板板号(){
  715. if(table.find('tbody').find("[aria-selected='true']").size()==0){return false}
  716. selecteds=table.find('tbody').find("[aria-selected='true']")
  717. var r = confirm("确定要给这 "+selecteds.size()+" 条添加模板板号吗?");
  718. if (r == false) {
  719. return false;
  720. }
  721. wenben=toolbar.find('#text_add_mubanbanhao').val()
  722. selecteds.each(function(){
  723. $(this).click()
  724. if($(this).attr("aria-selected")=="false"){
  725. $(this).click()
  726. }
  727. if($(this).attr("aria-selected")=="true"){
  728. toolbar.find("[class='l-btn-text icon-edit']").eq(0).click();
  729. $('#txt_seqs_tempplate').eq(0).val(wenben)
  730. $("#AB").click()
  731. }
  732. })
  733. }
  734. //更改备注
  735. function 更改备注(){
  736. if(table.find('tbody').find("[aria-selected='true']").size()==0){return false}
  737. beizhu_xiugaiqian=toolbar.find('#text_beizhu_gaiqian').eq(0).val()
  738. beizhu_xiugaihou=toolbar.find('#text_beizhu_gaihou').eq(0).val()
  739. if(beizhu_xiugaiqian===""){return false}
  740. selecteds=table.find('tbody').find("[aria-selected='true']")
  741. var r = confirm("确定要给这 "+selecteds.size()+" 条修改备注吗?");
  742. if (r == false) {
  743. return false;
  744. }
  745. var is_goon=true
  746. selecteds.each(function(){
  747. beizhu=$(this).find('[aria-describedby=list_remark]').text() //获取备注
  748. num=beizhu.split(beizhu_xiugaiqian).length-1 //存在多少遍要更改的部分,只有1遍才可以
  749. if (num!=1){is_goon=false; alert('只有每个样品备注都能匹配且只匹配一次,才能修改');return false}
  750. })
  751. if (is_goon==true){
  752. selecteds.each(function(){
  753. $(this).click()
  754. if($(this).attr("aria-selected")=="false"){
  755. $(this).click()
  756. }
  757. if($(this).attr("aria-selected")=="true"){
  758. beizhu=$(this).find('[aria-describedby=list_remark]').text() //获取备注
  759. beizhu=beizhu.replace(beizhu_xiugaiqian,beizhu_xiugaihou) //替换好的备注
  760. toolbar.find("[class='l-btn-text icon-edit']").eq(0).click();
  761. $('#txt_manage_seqsample_remark').eq(0).val(beizhu)
  762. $("#AB").click()
  763. }
  764. })
  765. setTimeout("alert('已改完,检查一下')", 1000 )
  766. }
  767. }
  768. //清空备注
  769. function 清空备注(){
  770. if(table.find('tbody').find("[aria-selected='true']").size()==0){return false}
  771. selecteds=table.find('tbody').find("[aria-selected='true']")
  772. var r = confirm("确定要清空这 "+selecteds.size()+" 条的备注吗?");
  773. if (r == false) {
  774. return false;
  775. }
  776. selecteds.each(function(){
  777. $(this).click()
  778. if($(this).attr("aria-selected")=="false"){
  779. $(this).click()
  780. }
  781. if($(this).attr("aria-selected")=="true"){
  782. toolbar.find("[class='l-btn-text icon-edit']").eq(0).click();
  783. $('#txt_manage_seqsample_remark').eq(0).val('')
  784. $("#AB").click()
  785. }
  786. })
  787. setTimeout("alert('已改完,检查一下')", 1000 )
  788. }
  789. //跳转到自备引物
  790. function 跳转到自备引物(){
  791. if(html.find('tbody').find("[aria-selected='true']").size()==0){return false} //如果没有选择的行,那么退出
  792. //如果 自备引物 页面没有打开 则自动打开
  793. if($('#tabs').find('li:contains(自备引物)').size()===0){
  794. //自动打开 自备引物页面
  795. $('#lnav').find('li:contains(自备引物)').click()
  796. var html_自备引物=$('iframe[src="/viporder/SeqCustPrimerList.aspx"]').get(0)//自备引物页面
  797. html_自备引物.onload=function(){
  798. 公共_查引物()
  799. }
  800. }else if($('#tabs').find('li:contains(自备引物)').size()===1){
  801. 公共_查引物()
  802. }
  803. function 公共_查引物(){
  804. selecteds=html.find('tbody').find("[aria-selected='true']")
  805. var ids_shuzu = new Array();
  806. for (var i=0;i<selecteds.size();i++){
  807. id=selecteds.eq(i).find('[aria-describedby=list_seqs_primer_id_2_kind]').text() //获取引物位置
  808. //如果没找到 -Z则进行下次循环
  809. if(id.indexOf('-Z')==-1){continue}
  810. id=id.slice(0,-2)//把最后两个字符去掉,最后的引物位置
  811. ids_shuzu[i]=id
  812. }
  813. //数组去重
  814. ids_shuzu=quchong_arr(ids_shuzu)
  815. //在 自备引物界面 查询
  816. //自备引物的html必须加个后缀或者前缀 不能和之前的重复
  817. var zibeiyinwu_html=$('iframe[src="/viporder/SeqCustPrimerList.aspx"]').contents().find('body').eq(0)//如果找到 则说明找到了自备引物的页面
  818. toolbar_zibeiyinwu=zibeiyinwu_html.find('.toolbar').eq(0) // 找到了自备引物的toolbar工具栏
  819. toolbar_zibeiyinwu.find('#a_search').eq(0).find('.l-btn-left').eq(0).click();
  820. //$('#searchForm').eq(0).find("option[value='seqs_primer_id_2_kind']").attr('selected','selected') //把找到的查询条件改成 引物位置
  821. $('#radd').next().attr('checked','true') //选择 OR 选项
  822. for (var i=0;i<ids_shuzu.length;i++){
  823. $('#searchForm').eq(0).find("[class='txt02 searchString']").eq(i).val(ids_shuzu[i])
  824. }
  825. if($("#AB").length==1){
  826. setTimeout("$('#AB').click()", 200)
  827. }
  828. $('#tabs').find('li:contains(自备引物)').click()
  829. }
  830. }
  831. //提取数据
  832. function 提取数据(){
  833. if(table.find('tbody').find("[aria-selected='true']").size()==0){return false}
  834. biaoti='生产编号&订单号&客户ID&客户姓名&客户地址&课题组&课题组ID&样品对应号&样品编号&引物位置&测序引物&引物浓度&样品类型&载体&抗生素&片段大小&是否测通&原浓度&模板板号&模板孔号&备注&添加时间&生产分公司'
  835. var shuju=""
  836. table.find('tbody').find("[aria-selected='true']").each(function(){
  837. shengchanbianhao=$(this).find('[aria-describedby=list_undefined]').text() //生产编号
  838. dingdanhao=$(this).find('[aria-describedby=list_seqo_order_id]').text() //订单号
  839. kehu_id=$(this).find('[aria-describedby=list_seqo_cust_id]').text() //客户ID
  840. kehu_xingming=$(this).find('[aria-describedby=list_seqo_cust_name]').text() //客户姓名
  841. kehu_dizhi=$(this).find('[aria-describedby=list_seqo_cust_address]').text() //客户地址
  842. ketizu=$(this).find('[aria-describedby=list_seqo_ketizu]').text() //课题组
  843. ketizu_id=$(this).find('[aria-describedby=list_seqo_ketizu_id]').text() //课题组ID
  844. yangpinduiyinghao=$(this).find('[aria-describedby=list_seqs_plus_prod_id]').text() //样品对应号
  845. yangpinbianhao=$(this).find('[aria-describedby=list_seqs_sam_num]').text() //样品编号
  846. yinwuweizhi=$(this).find('[aria-describedby=list_seqs_primer_id_2_kind]').text() //引物位置
  847. cexuyinwu=$(this).find('[aria-describedby=list_seqs_primer]').text() //测序引物
  848. yinwunongdu=$(this).find('[aria-describedby=list_seqs_observe]').text() // 引物浓度
  849. yangpinleixing=$(this).find('[aria-describedby=list_seqs_sam_type]').text() //样品类型
  850. zaiti=$(this).find('[aria-describedby=list_seqs_carry]').text() // 载体
  851. kangshengsu=$(this).find('[aria-describedby=list_seqs_ant_type]').text() //抗生素
  852. pianduandaxiao=$(this).find('[aria-describedby=list_seqs_fragment_size]').text() //片段大小
  853. shifoucetong=$(this).find('[aria-describedby=list_seqs_istest_pass]').text() //是否测通
  854. yuannongdu=$(this).find('[aria-describedby=list_seqs_original_con]').text() //原浓度
  855. mubanbanhao=$(this).find('[aria-describedby=list_seqs_tempplate]').text() // 模板板号
  856. mubankonghao=$(this).find('[aria-describedby=list_seqs_tempspace]').text() //模板孔号
  857. beizhu=$(this).find('[aria-describedby=list_remark]').text() //备注
  858. tianjiashijian=$(this).find('[aria-describedby=list_seqs_add_time]').text() //添加时间
  859. shengchangongsi=$(this).find('[aria-describedby=list_seqs_product_company_name]').text() //生产分公司
  860. shuju=shuju+shengchanbianhao+"&"+dingdanhao+"&"+kehu_id+"&"+kehu_xingming+"&"+kehu_dizhi+"&"+ketizu+"&"+ketizu_id+"&"+yangpinduiyinghao+"&"+yangpinbianhao+"&"+yinwuweizhi+"&"+cexuyinwu+"&"+yinwunongdu+"&"+yangpinleixing+"&"+zaiti+"&"+kangshengsu+"&"+pianduandaxiao+"&"+shifoucetong+"&"+yuannongdu+"&"+mubanbanhao+"&"+mubankonghao+"&"+beizhu+"&"+tianjiashijian+"&"+shengchangongsi+"\n"
  861. })
  862. if($('#textarea_shuju').length===0){
  863. //$("body").find("[class='layout-body panel-body panel-body-noheader panel-body-noborder']").append('<textarea id="textarea_biaoti" style="position:absolute;left:400px;" rows="1" cols="400"></textarea>')
  864. //$("body").find("[class='layout-body panel-body panel-body-noheader panel-body-noborder']").append('<textarea id="textarea_shuju" style="position:absolute;left:400px;top:20px" rows="2" cols="400"></textarea>');
  865. }
  866. $('#textarea_shuju').css('visibility','visible')
  867. $('#textarea_biaoti').css('visibility','visible')
  868. $("#textarea_biaoti").val(biaoti)
  869. $("#textarea_shuju").val($("#textarea_shuju").val()+shuju)
  870. }
  871. //清除数据
  872. function 清除数据(){
  873. $("#textarea_biaoti").val('')
  874. $('#textarea_shuju').val('')
  875. $('#textarea_biaoti').css('visibility','hidden')
  876. $('#textarea_shuju').css('visibility','hidden')
  877. }
  878. //模板板号和孔号改为负一
  879. function 模板板号和孔号改为负一(){
  880. if(table.find('tbody').find("[aria-selected='true']").size()==0){return false} //如果没有选择的行,那么退出
  881. selecteds=table.find('tbody').find("[aria-selected='true']")
  882. var r = confirm("确定要给把 "+selecteds.size()+" 条反应的模板板号和孔号都改成-1吗?");
  883. if (r == false) {
  884. return false;
  885. }
  886. selecteds.each(function(){
  887. $(this).click()
  888. if($(this).attr("aria-selected")=="false"){
  889. $(this).click()
  890. }
  891. if($(this).attr("aria-selected")=="true"){
  892. toolbar.find("[class='l-btn-text icon-edit']").eq(0).click();
  893. $('#txt_seqs_tempplate').eq(0).val('-1')
  894. $('#txt_seqs_tempspace').eq(0).val('-1')
  895. $("#AB").click()
  896. }
  897. })
  898. }
  899. //选中一些行后,把相同引物位置的其余引物标记颜色
  900. function 相同引物位置标记颜色(){
  901. console.log('666')
  902. //把选中的所有行的行数显示在右下角
  903. old_text=html.find('#pager_right').eq(0).find('div').eq(0).text()
  904. num_s=table.find('tbody').find("[aria-selected='true']").size()
  905. html.find('#pager_right').eq(0).find('div').eq(0).find('#reve').remove()
  906. html.find('#pager_right').eq(0).find('div').eq(0).prepend("<span id='reve'>总共选中了 "+num_s+" 行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>")
  907. //改颜色
  908. var yinwu_weizhi=[]
  909. //对被选中的行进行 查找引物位置并赋值到yinwu_weizhi数组里面
  910. table.find('tbody').find("[aria-selected='true']").each(function(){
  911. yinwu_weizhi.push($(this).find('[aria-describedby=list_seqs_primer_id_2_kind]').eq(0).text())
  912. })
  913. //获取的引物位置需要和当前页面所有的tr里面的引物位置进行比较
  914. table.find('[aria-describedby=list_seqs_primer_id_2_kind]').attr('Bgcolor','') //先把所有的行的颜色去掉
  915. if(yinwu_weizhi.length>0){
  916. table.find('tr').each(function(){
  917. every_weizhi=$(this).find('[aria-describedby=list_seqs_primer_id_2_kind]').eq(0).text()
  918. for(var i=0;i<yinwu_weizhi.length;i++){
  919. if(yinwu_weizhi[i]==every_weizhi){
  920. $(this).find('[aria-describedby=list_seqs_primer_id_2_kind]').eq(0).attr('Bgcolor','#ceEEe7')
  921. return;
  922. }
  923. }
  924. })
  925. }
  926. }
  927. //公共函数 判断选择的是否是同一个订单号
  928. function is_one_order(html){
  929. //如果没有选择行则退出
  930. if(table.find('tbody').find("[aria-selected='true']").size()==0){return false}
  931. panduan=0
  932. selecteds=table.find('tbody').find("[aria-selected='true']")
  933. selecteds.find('[aria-describedby=list_seqo_order_id]').each(function(){
  934. if(selecteds.find('[aria-describedby=list_seqo_order_id]').eq(0).text()!=$(this).text()){
  935. alert('需要选择同一个订单号!')
  936. panduan=1
  937. return false;
  938. }
  939. })
  940. if(panduan==1){ //如果 不是同一个订单号,就退出
  941. return false;
  942. }else{
  943. return selecteds;
  944. }
  945. }
  946. //公共函数 生产编号需要降序排序
  947. function 生产编号需要降序排序(selecteds){
  948. new_scbh_arr=[]
  949. old_scbh_arr=[]
  950. $(selecteds.toArray().reverse()).each(function(){ //倒序把生产编号放进数组
  951. new_scbh_arr.push($(this).find('[aria-describedby=list_undefined]').text())
  952. })
  953. old_scbh_arr=new_scbh_arr.slice()
  954. new_scbh_arr.sort() //对 生产编号排序,如果和 old_scbh_arr的顺序一样,那么继续,如果不一样,那么退出
  955. for (var i=0;i<old_scbh_arr.length;i++){
  956. if(old_scbh_arr[i]!=new_scbh_arr[i]){
  957. alert('生产编号需要降序排序')
  958. return false;
  959. }
  960. }
  961. return true
  962. }
  963. //公共函数 获取选择的行的所有数据
  964. function 获取选择的行的所有数据(selecteds){
  965. scbh_arr=[] //生产编号
  966. ypdyh_arr=[] //样品对应号
  967. new_ypdyh_arr=[] //新的样品对应号
  968. ypmc_arr=[] //样品名称
  969. new_ypmc_arr=[] //新的样品名称
  970. yinwu_arr=[] //引物名称
  971. new_yinwu_arr=[] //新的引物名称
  972. yinwu_weizhi_arr=[] //引物位置
  973. new_yinwu_weizhi_arr=[] //新的引物位置
  974. yinwu_nong_arr=[] //引物浓度
  975. new_yinwu_nong_arr=[] //新的引物浓度
  976. yplx_arr=[] //样品类型
  977. new_yplx_arr=[] //新的样品类型
  978. zaiti_arr=[] //载体
  979. new_zaiti_arr=[] //新的载体
  980. pianduan_arr=[] //片段
  981. new_pianduan_arr=[] //新的片段
  982. kangshengsu_arr=[] //抗生素
  983. new_kangshengsu_arr=[] //新的抗生素
  984. beizhu_arr=[] //备注
  985. new_beizhu_arr=[] //新的备注
  986. is_cetong_arr=[] //是否测通
  987. new_is_cetong_arr=[] //新的是否测通
  988. $(selecteds.toArray().reverse()).each(function(){
  989. //倒序把生产编号放进数组
  990. scbh_arr.push($(this).find('[aria-describedby=list_undefined]').text())
  991. //倒序把样品对应号放进数组
  992. ypdyh_name=$(this).find('[aria-describedby=list_seqs_plus_prod_id]').html()
  993. if(ypdyh_name=="&nbsp;"){
  994. ypdyh_arr.push('')
  995. }else{
  996. ypdyh_arr.push(ypdyh_name)
  997. }
  998. //倒序把样品名称放进数组
  999. ypmc_arr.push($(this).find('[aria-describedby=list_seqs_sam_num]').text().trim())
  1000. //倒序把引物名称放进数组
  1001. yinwu_name=$(this).find('[aria-describedby=list_seqs_primer]').html()
  1002. if(yinwu_name=="&nbsp;"){
  1003. yinwu_arr.push('')
  1004. }else{
  1005. yinwu_arr.push(yinwu_name)
  1006. }
  1007. //倒序把引物位置放进数组
  1008. yinwu_weizhi_arr.push($(this).find('[aria-describedby=list_seqs_primer_id_2_kind]').text().trim())
  1009. //倒序把引物浓度放进数组
  1010. nongdu_name=$(this).find('[aria-describedby=list_seqs_observe]').html()
  1011. if(nongdu_name=="&nbsp;"){
  1012. yinwu_nong_arr.push('')
  1013. }else{
  1014. yinwu_nong_arr.push(nongdu_name)
  1015. }
  1016. //倒序把样品类型放进数组
  1017. yplx_arr.push($(this).find('[aria-describedby=list_seqs_sam_type]').text().trim())
  1018. //倒序把载体放进数组
  1019. zaiti_name=$(this).find('[aria-describedby=list_seqs_carry]').html()
  1020. if(zaiti_name=="&nbsp;"){ //如果载体为空 或者 空格
  1021. zaiti_arr.push("")
  1022. }else{
  1023. zaiti_arr.push(zaiti_name)
  1024. }
  1025. //倒序把片段放进数组
  1026. pianduan_name=$(this).find('[aria-describedby=list_seqs_fragment_size]').html()
  1027. if(pianduan_name=="&nbsp;"){ //如果片段为空 或者 空
  1028. pianduan_arr.push("")
  1029. }else{
  1030. pianduan_arr.push(pianduan_name)
  1031. }
  1032. //倒序把抗生素放进数组
  1033. kangshengsu_name=$(this).find('[aria-describedby=list_seqs_ant_type]').html()
  1034. if(kangshengsu_name=="&nbsp;"){ //如果为空 或者 空格
  1035. kangshengsu_arr.push("")
  1036. }else{
  1037. kangshengsu_arr.push(kangshengsu_name)
  1038. }
  1039. //倒序把备注放进数组
  1040. beizhu_name=$(this).find('[aria-describedby=list_remark]').html()
  1041. if(beizhu_name=="&nbsp;"){
  1042. beizhu_arr.push("")
  1043. }else{
  1044. beizhu_arr.push(beizhu_name)
  1045. }
  1046. //倒序把是否测通放进数组
  1047. cetong_is=$(this).find('[aria-describedby=list_seqs_istest_pass]').html()
  1048. if(cetong_is=="是" || cetong_is=="true"){
  1049. is_cetong_arr.push(true)
  1050. }else{is_cetong_arr.push(false)}
  1051. })
  1052. // console.log(scbh_arr) //生产编号
  1053. // console.log(ypdyh_arr) //样品对应号
  1054. // console.log(ypmc_arr) //样品名称
  1055. // console.log(yinwu_arr) //引物名称
  1056. // console.log(yinwu_weizhi_arr) //引物位置
  1057. // console.log(yinwu_nong_arr) //引物浓度
  1058. // console.log(yplx_arr) //样品类型
  1059. // console.log(zaiti_arr) //载体
  1060. // console.log(pianduan_arr) //片段
  1061. // console.log(kangshengsu_arr) //抗生素
  1062. // console.log(beizhu_arr) //备注
  1063. // console.log(is_cetong_arr) //是否测通
  1064. return [scbh_arr,ypdyh_arr,ypmc_arr,yinwu_arr,yinwu_weizhi_arr,yinwu_nong_arr,yplx_arr,zaiti_arr,pianduan_arr,kangshengsu_arr,beizhu_arr,is_cetong_arr]
  1065. //以下代码是仅仅为了复制方便
  1066. arr[0]=scbh_arr//生产编号
  1067. arr[1]=ypdyh_arr //样品对应号
  1068. arr[2]=ypmc_arr //样品名称
  1069. arr[3]=yinwu_arr //引物名称
  1070. arr[4]=yinwu_weizhi_arr //引物位置
  1071. arr[5]=yinwu_nong_arr //引物浓度
  1072. arr[6]=yplx_arr //样品类型
  1073. arr[7]=zaiti_arr //载体
  1074. arr[8]=pianduan_arr //片段
  1075. arr[9]=kangshengsu_arr //抗生素
  1076. arr[10]=beizhu_arr //备注
  1077. arr[11]=is_cetong_arr //是否测通
  1078. }
  1079. }
  1080.  
  1081.  
  1082.  

QingJ © 2025

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