sampleConfirmationJS.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  1. import repostCurd from '@/business/platform/form/utils/custom/joinCURD.js'
  2. export default {
  3. methods: {
  4. /* 唤醒扫码 前端脚本直接调用*/
  5. openRedar(type) {
  6. this.redar = true // 扫码图标显示
  7. this.visible = false // 结果列表,一开始为false
  8. this.$refs.redarInput.focus(); // 聚焦input
  9. this.listData = [] // 清空列表
  10. },
  11. facilityData(id) {
  12. if (!id) return // 无参直接反
  13. this.loadData(id)
  14. //开始查询设备
  15. this.facilityId = ''
  16. },
  17. /* 获取数据 ,开始查阅记录 */
  18. loadData(id) {
  19. // let this_ = this
  20. let flag = true // 重复扫码标志位
  21. for (let index in this.listData) { // 判断是否重复,重复扫码 数量自增
  22. if (this.listData[index].yang_pin_bian_hao == id) {
  23. this.listData[index].jie_yang_shu_lian = this.listData[index].jie_yang_shu_lian + 1
  24. flag = false
  25. }
  26. }
  27. // 扫码扫到新数据,查询 回填展示
  28. if(flag){
  29. // repostCurd('select','{"tableName": "t_mjypdjb","paramWhere":{"yang_pin_bian_hao":"S220909-1053"}}').then(response => {
  30. let sql = `select ypb.*,sqb.fu_kuan_fang_shi_,sqb.fu_he_yuan_ from t_mjypb ypb JOIN t_mjwtsqb sqb on ypb.wai_jian_ = sqb.id_ and ypb.jie_yang_zhuang_t = '待确认' and ypb.yang_pin_bian_hao = '${id}'`
  31. repostCurd('sql',sql).then(response => {
  32. if (response.variables.data && response.variables.data.length > 0) {
  33. response.variables.data[0].jie_yang_shu_lian = 1
  34. this.listData.push(response.variables.data[0])
  35. this.OriginalPosition.push(response.variables.data[0].shi_fou_liu_yang_ == "是" ? response.variables.data[0].liu_yang_wei_zhi_ : response.variables.data[0].shou_yang_wei_zhi)
  36. }else{
  37. this.cancelScan();
  38. }
  39. })
  40. }
  41. },
  42. /* 列表失去焦点*/
  43. handleChange(){
  44. this.$refs.redarInput.focus(); //聚焦input
  45. },
  46. /* 扫出的样品不符合条件 */
  47. cancelScan(){
  48. this.redar = false // 扫码图标显示
  49. this.$confirm('该样品可能已经接收过了,无需重复接收!').then(_ => {
  50. this.closeDialog();
  51. })
  52. },
  53. /* 关闭弹出列表框*/
  54. closeDialog() {
  55. this.remRedar()
  56. //回传关闭事件。隐藏当前组件。
  57. },
  58. handleClose(){
  59. this.handleChange()
  60. this.$confirm('确认关闭扫码列表页面?').then(_ => {
  61. this.closeDialog();
  62. }).catch(_ => {
  63. });
  64. },
  65. submitData(type) {
  66. // this指针
  67. let this_ = this;
  68. let changeWeizhi;
  69. let changesyWeizhi;
  70. // 回传关闭事件。隐藏当前组件。
  71. let judge = true;
  72. this.$confirm('请再次确认 [样品接收信息]').then(_ => {
  73. // 获取样品列表
  74. let ypInfoList = this_.listData
  75. // console.log(ypInfoList)
  76. let dWhere = []
  77. let ypbh = []
  78. let cfwzIdList = [] // 放置 存放位置的ID
  79. let uuidList = [] // 列表的UUID
  80. let ypIdList = [] // 样品id列表,格式转好的
  81. let ypWeiZhi = [] // 样品收样位置
  82. let ypLiuYangWeiZhi = [] // 样品留样位置
  83. let saoMaNumList = [] // 扫码确认数量列表
  84. let jieYangQueRenZTList = [] // 接样状态列表
  85. let ypbhList = [] // 样品编号列表
  86. let mjypbList = [] // 明鉴样品表
  87. let mjypbWJ = [] // 明鉴样品表外键
  88. let ypmcList = []
  89. for(let yp in ypInfoList){
  90. let cfwz = ''
  91. if(ypInfoList[yp].jie_yang_shu_lian > ypInfoList[yp].shou_yang_shu_lia){
  92. this_.$message.error('操作失败,['+ypInfoList[yp].yang_pin_ming_che+'] 接收确认数量不得大于收样数量。')
  93. return;
  94. }
  95. if(ypInfoList[yp].jie_yang_zhuang_t == '待确认'){
  96. this_.$message.error('操作失败,['+ypInfoList[yp].yang_pin_ming_che+'] 接收确认状态必须为已确认。')
  97. return;
  98. }
  99. if(ypInfoList[yp].shi_fou_liu_yang_ == "是"){
  100. if(ypInfoList[yp].liu_yang_wei_zhi_ == null || ypInfoList[yp].liu_yang_wei_zhi_ == ''){
  101. this_.$message.error("你要留样的话,存放位置不能为空哦!")
  102. return;
  103. }
  104. if(ypInfoList[yp].shou_yang_wei_zhi != undefined && ypInfoList[yp].shou_yang_wei_zhi != ''){
  105. this_.$message.error("你要留样的话,就不要选收样存放位置!")
  106. return;
  107. }
  108. let isLy = ypInfoList[yp].liu_yang_wei_zhi_
  109. if(isLy.substr(-2,isLy.length -1) == "占用" || isLy.substr(-2,isLy.length -1) == "空余"){
  110. let sql = "select `id` from MJ_yp_position_status where positionAndStatus = '" + isLy + "' limit 1"
  111. repostCurd('sql',sql).then(response=>{
  112. cfwz = response.variables.data[0].id
  113. ypInfoList[yp].liu_yang_wei_zhi_ = cfwz
  114. console.log('?question time')
  115. })
  116. }else{
  117. cfwz = ypInfoList[yp].liu_yang_wei_zhi_
  118. }
  119. }else{
  120. if(ypInfoList[yp].shou_yang_wei_zhi == null || ypInfoList[yp].shou_yang_wei_zhi == ''){
  121. this_.$message.error("你正常收样的话,样品存放位置不能为空哦!")
  122. return;
  123. }
  124. if(ypInfoList[yp].liu_yang_wei_zhi_ != undefined && ypInfoList[yp].liu_yang_wei_zhi_ != ''){
  125. this_.$message.error("你正常收样的话,就不要选择留样存放位置!")
  126. return;
  127. }
  128. let isZC = ypInfoList[yp].shou_yang_wei_zhi
  129. if(isZC.substr(-2,isZC.length -1) == "占用" || isZC.substr(-2,isZC.length -1) == "空余"){
  130. let sql = "select `id` from MJ_yp_position_status where positionAndStatus = '" + isZC + "' limit 1"
  131. repostCurd('sql',sql).then(response=>{
  132. cfwz = response.variables.data[0].id
  133. ypInfoList[yp].shou_yang_wei_zhi = cfwz
  134. console.log('?question time')
  135. })
  136. }else{
  137. cfwz = ypInfoList[yp].shou_yang_wei_zhi
  138. }
  139. }
  140. dWhere.push('{"id_":"' + cfwz + '"}')
  141. ypbh.push(ypInfoList[yp].yang_pin_bian_hao)
  142. uuidList.push(ypInfoList[yp].biao_zhi_uuid_)
  143. cfwzIdList.push(cfwz)
  144. ypIdList.push('{"id_":"' + ypInfoList[yp].id_ + '"}')
  145. ypWeiZhi.push(ypInfoList[yp].shou_yang_wei_zhi) // 收样存放位置
  146. ypLiuYangWeiZhi.push(ypInfoList[yp].liu_yang_wei_zhi_) // 留样存放位置
  147. saoMaNumList.push(ypInfoList[yp].jie_yang_shu_lian) // 扫码数量
  148. jieYangQueRenZTList.push(ypInfoList[yp].jie_yang_zhuang_t) // 接收确认状态
  149. ypbhList.push('{"yang_pin_bian_hao":"' + ypInfoList[yp].yang_pin_bian_hao + '"}') // 样品编号列表
  150. ypmcList.push(ypInfoList[yp].yang_pin_ming_che)
  151. }
  152. for(let index in ypIdList){
  153. let WZtem = ypWeiZhi[index]==null?'':ypWeiZhi[index]
  154. let LYWZtem = ypLiuYangWeiZhi[index]==null?'':ypLiuYangWeiZhi[index]
  155. changeWeizhi = WZtem;
  156. changesyWeizhi = LYWZtem;
  157. repostCurd('update','{"tableName":"t_mjypdjb","paramWhere":'+ypIdList[index]+',"paramCond":'+'{"shou_yang_wei_zhi":"'+WZtem+'","jie_yang_shu_lian":"'+saoMaNumList[index]+'","jie_yang_zhuang_t":"'+jieYangQueRenZTList[index]+'","liu_yang_wei_zhi_":"'+ LYWZtem + '"}}')
  158. repostCurd('update','{"tableName":"t_mjypb","paramWhere":' + ypIdList[index] + ',"paramCond":' + '{"jie_yang_zhuang_t":"已确认","cun_fang_wei_zhi_":"'+WZtem+'","liu_yang_cun_fang":"'+LYWZtem+'"}}')
  159. }
  160. for(let num in dWhere){
  161. if(this.OriginalPosition[num] != cfwzIdList[num]){
  162. let sql = "select * from t_mjypcfwz where id_ = '" + cfwzIdList[num] + "'"
  163. repostCurd('sql',sql).then(response=>{
  164. let resArr = response.variables.data
  165. if(resArr.length == 1){
  166. if(resArr[0].wei_zhi_zhuang_ta == "空余"){
  167. repostCurd('update','{"tableName":"t_mjypcfwz","paramWhere":'+dWhere[num]+',"paramCond":'+'{"wei_zhi_zhuang_ta":"占用","yang_pin_bian_hao":"'+ ypbh[num] +'","yang_pin_ming_che":"' + ypmcList[num] + '","ru_ku_shi_jian_":"'+ this_.dateFormat() + '","shou_yang_ri_qi_":"'+ uuidList[num] + '"}}')
  168. }else if(resArr[0].wei_zhi_zhuang_ta == "占用"){
  169. // 新增一条新的位置记录,使用旧的位置记录 修改它的样品编号,入库时间,标识UUID
  170. let cfNewList = []
  171. let cfNew = {}
  172. cfNew["fang_jian_lei_xin"] = resArr[0].fang_jian_lei_xin
  173. cfNew["huo_jia_lei_xing_"] = resArr[0].huo_jia_lei_xing_
  174. cfNew["huo_jia_hao_"] = resArr[0].huo_jia_hao_
  175. cfNew["qu_yu_"] = resArr[0].qu_yu_
  176. cfNew["gua_jia_hao_"] = resArr[0].gua_jia_hao_
  177. cfNew["ceng_hao_"] = resArr[0].ceng_hao_
  178. cfNew["wei_zhi_bian_hao_"] = resArr[0].wei_zhi_bian_hao_
  179. cfNew["wei_zhi_zhuang_ta"] = resArr[0].wei_zhi_zhuang_ta
  180. cfNew["cun_fang_lei_xing"] = resArr[0].cun_fang_lei_xing
  181. cfNew["cun_chu_tiao_jian"] = resArr[0].cun_chu_tiao_jian
  182. cfNew["yang_pin_bian_hao"] = ypbh[num]
  183. cfNew["yang_pin_ming_che"] = ypmcList[num]
  184. cfNew["ru_ku_shi_jian_"] = this_.dateFormat()
  185. cfNew["shou_yang_ri_qi_"] = uuidList[num]
  186. cfNewList.push(cfNew)
  187. let uuid = cfNew["shou_yang_ri_qi_"];
  188. repostCurd('add', '{"tableName":"t_mjypcfwz","paramWhere":' + JSON.stringify(cfNewList) + '}').then(res => {
  189. let selectsql = "select id_ from t_mjypcfwz where shou_yang_ri_qi_='" + uuid + "'";
  190. repostCurd('sql', selectsql).then(res => {
  191. let dataid = res.variables.data[0].id_;
  192. // console.log(res.variables.data)
  193. let abc = '{"biao_zhi_uuid_":"' + uuid + '"}'
  194. // console.log('zzj abc ',abc)
  195. if (changeWeizhi && !changesyWeizhi) {
  196. repostCurd('update', '{"tableName":"t_mjypdjb","paramWhere":' + abc + ',"paramCond":' + '{"shou_yang_wei_zhi":"' + dataid + '"}}').then(res => {
  197. })
  198. } else {
  199. repostCurd('update', '{"tableName":"t_mjypdjb","paramWhere":' + abc + ',"paramCond":' + '{"liu_yang_wei_zhi_":"' + dataid + '"}}').then(res => {
  200. })
  201. }
  202. })
  203. })
  204. }
  205. }
  206. })
  207. }
  208. }
  209. repostCurd('selects','{"tableName":"t_mjypb","paramWhere":['+ypbhList+']}').then(response=>{
  210. mjypbList = response.variables.data
  211. let wjList = []
  212. let wjAll = []
  213. let wjAllList = []
  214. for(let i in mjypbList){
  215. wjList.push(mjypbList[i].wai_jian_)
  216. wjAll.push(mjypbList[i].wai_jian_)
  217. }
  218. wjList = this_.unique(wjList)
  219. for(let i in wjList){
  220. mjypbWJ.push('{"id_":"' + wjList[i]+ '"}')
  221. }
  222. for(let i in wjAll){
  223. wjAllList.push('{"id_":"' + wjAll[i]+ '"}')
  224. }
  225. repostCurd('updates','{"tableName":"t_mjwtsqb","paramWhere":['+mjypbWJ+'],"paramCond":{"zhuang_tai_":"已完成"}}')
  226. let mjwtsqbAllResult = []
  227. let mjwtsqbIdList = []
  228. let mjfbbList = []
  229. let mjfbbWJList = []
  230. for(let i in wjAllList){
  231. repostCurd('select','{"tableName":"t_mjwtsqb","paramWhere":'+wjAllList[i]+'}').then(response=>{
  232. mjfbbWJList.push('{"wei_tuo_wai_jian_":"' + response.variables.data[0].id_ + '"}')
  233. mjwtsqbAllResult.push(response.variables.data[0])
  234. mjwtsqbIdList.push('{"id_":"' + response.variables.data[0].id_ + '"}')
  235. })
  236. }
  237. setTimeout(()=>{
  238. let narr = []
  239. for(let a of mjfbbWJList){
  240. narr.push(a)
  241. }
  242. repostCurd('selects','{"tableName":"t_mjfbb","paramWhere":['+narr+']}').then(response=>{
  243. mjfbbList.push(response.variables.data)
  244. })
  245. }, 1000)
  246. setTimeout(()=>{
  247. /* 分包
  248. repostCurd('select','{"tableName":"t_mjfbb","paramWhere":'+mjwtsqbIdList[i]+'}').then(response=>{
  249. console.log(response.variables.data)
  250. mjfbbList.push(response.variables.data)
  251. })*/
  252. let rwb = []
  253. let index = 0
  254. if(mjypbList != null && mjypbList.length >= 1){
  255. index = mjypbList[0].jian_ce_xiang_me_.split(",").length + mjypbList[0].jian_ce_xiang_mu2
  256. .split(",").length + mjypbList[0].jian_ce_xiang_ms_
  257. .split(",").length+ mjypbList[0].jian_ce_xiang_si_
  258. .split(",").length -1
  259. }
  260. console.log('final',mjypbList)
  261. for(var i in mjypbList){
  262. // console.log('坐标',i,p)
  263. let rwzb = {}
  264. let wz_ = ypInfoList[i].shi_fou_liu_yang_ == "是" ? ypInfoList[i].liu_yang_wei_zhi_ : ypInfoList[i].shou_yang_wei_zhi // 对应的样品存放位置
  265. rwzb["yang_pin_bian_hao"] = mjypbList[i].yang_pin_bian_hao // 取对应的样品编号
  266. rwzb["yang_pin_ming_che"] = mjypbList[i].yang_pin_ming_che // 对应的样品名称
  267. rwzb["yang_pin_dai_ci_"] = mjypbList[i].dai_ci_ // 对应的样品代次
  268. rwzb["yang_pin_pi_hao_"] = mjypbList[i].pi_hao_ // 对应的样品批号
  269. rwzb["yang_pin_shu_lian"] = mjypbList[i].shu_liang_ // 对应的样品数量
  270. rwzb["bug_ri_qi_"] = mjypbList[i].song_yang_ri_qi_ // 对应的送样日期
  271. rwzb["cun_fang_wei_zhi_"] = wz_
  272. rwzb["wei_tuo_wai_jian_"] = mjypbList[i].wai_jian_ // 检测申请单id
  273. rwzb["he_tong_wai_jian_"] = mjwtsqbAllResult[i].he_tong_bian_hao_ //合同id
  274. rwzb["song_yang_ri_qi_"] = mjypbList[i].biao_zhi_uuid_ // 收样日期
  275. rwzb["wei_tuo_ren_"] = mjwtsqbAllResult[i].lian_xi_ren_ // 委托人
  276. rwzb["bao_gao_jian_ce_s"] = this_.dateFormat() // 检测时间
  277. rwzb["zhan_shi_biao_wai"] = mjwtsqbAllResult[i].ye_mian_zong_zhua
  278. rwzb["zhuang_tai_"] = "任务待分配" // 状态
  279. // rwzb["gong_xian_zhi_"] = mjypbList[i].yang_pin_lei_xin // 供限值
  280. rwzb["yang_pin_bei_zhu_"] = mjypbList[i].bei_zhu_ // 样品备注
  281. rwzb["shi_fou_jia_ji_"] = mjwtsqbAllResult[i].fu_kuan_fang_shi_ // 2023-2-24吴懿要加的
  282. rwzb["wu_jun_shi_fou_ch"] = mjwtsqbAllResult[i].fu_he_yuan_ // 2023-3-6 王嘎嘎加
  283. rwb.push(rwzb)
  284. // let str = mjypbList[i].jian_ce_xiang_mu2.split(",")
  285. // for (var p in str) {
  286. // // console.log('坐标',i,p)
  287. // let temp = index - p
  288. // let rwzb = {}
  289. // let wz_ = ypInfoList[i].shi_fou_liu_yang_ == "是" ? ypInfoList[i].liu_yang_wei_zhi_ : ypInfoList[i].shou_yang_wei_zhi // 对应的样品存放位置
  290. // rwzb["jian_ce_xiang_mu_"] = str[p] // 取当前检测项目
  291. // rwzb["yang_pin_bian_hao"] = mjypbList[i].yang_pin_bian_hao // 取对应的样品编号
  292. // rwzb["yang_pin_ming_che"] = mjypbList[i].yang_pin_ming_che // 对应的样品名称
  293. // rwzb["yang_pin_dai_ci_"] = mjypbList[i].dai_ci_ // 对应的样品代次
  294. // rwzb["yang_pin_pi_hao_"] = mjypbList[i].pi_hao_ // 对应的样品批号
  295. // rwzb["yang_pin_shu_lian"] = mjypbList[i].shu_liang_ // 对应的样品数量
  296. // rwzb["bug_ri_qi_"] = mjypbList[i].song_yang_ri_qi_ // 对应的送样日期
  297. // rwzb["cun_fang_wei_zhi_"] = wz_
  298. // rwzb["wei_tuo_wai_jian_"] = mjypbList[i].wai_jian_ // 检测申请单id
  299. // rwzb["he_tong_wai_jian_"] = mjwtsqbAllResult[i].he_tong_bian_hao_ //合同id
  300. // rwzb["song_yang_ri_qi_"] = mjypbList[i].biao_zhi_uuid_ // 收样日期
  301. // rwzb["wei_tuo_ren_"] = mjwtsqbAllResult[i].lian_xi_ren_ // 委托人
  302. // rwzb["bao_gao_jian_ce_s"] = this_.dateFormat() // 检测时间
  303. // rwzb["zhan_shi_biao_wai"] = mjwtsqbAllResult[i].ye_mian_zong_zhua
  304. // rwzb["zhuang_tai_"] = "任务待分配" // 状态
  305. // rwzb["shi_fou_fen_bao_"] = mjfbbList[0][temp].shi_fou_fen_bao_ // 是否分包
  306. // rwzb["qi_wang_wan_cheng"] = mjfbbList[0][temp].wan_cheng_shi_jia // 期望完成时间
  307. // rwzb["gong_xian_zhi_"] = mjypbList[i].yang_pin_lei_xin // 供限值
  308. // rwb.push(rwzb)
  309. // }
  310. // index += str.length
  311. }
  312. console.log('任务表:',rwb)
  313. repostCurd('updates', '{"tableName":"t_mjwtsqb","paramWhere":['+mjwtsqbIdList+'],"paramCond":{"jian_ce_kai_shi_s":"' + this_.dateFormat() + '"}}')
  314. let uidList = []
  315. for(let item of mjwtsqbAllResult){
  316. uidList.push(item.ye_mian_zong_zhua)
  317. }
  318. uidList = this_.unique(uidList)
  319. repostCurd('add', '{"tableName":"t_rwfpb","paramWhere":'+JSON.stringify(rwb)+',"defKey":"Process_04tgh24","formKey":"mjrwfp"}' )
  320. if(uidList.length > 0 ){
  321. let ups = []
  322. for(let t of uidList){
  323. ups.push('{"shen_qing_id_":"'+t+'"}')
  324. }
  325. repostCurd('updates', '{"tableName":"t_mjwtzsb","paramWhere":['+ups+'],"paramCond":{"zhuang_tai_":"任务分配进行中"}}')
  326. }
  327. },2000)
  328. })
  329. this.$emit('callback',true)
  330. this.visable = false
  331. this.$message({
  332. message:'样品接收确认操作成功!',
  333. type:'success'
  334. })
  335. this.closeDialog();
  336. }).catch(_ => {});
  337. },
  338. /* 去除指定行数据 使用过滤器filter过滤指定行号数据 */
  339. deleteData(val){
  340. this.listData = this.listData.filter((data) =>{
  341. return data.id_!=val
  342. })
  343. },
  344. unique(arr) {
  345. return arr.filter((item, index) => {
  346. return arr.indexOf(item, 0) === index;
  347. });
  348. },
  349. Update (name,where,cond) {
  350. let cont = {}
  351. cont['tableName'] = name
  352. cont['paramWhere'] = where
  353. cont['paramCond'] = cond
  354. return repostCurd('update',JSON.stringify(cont))
  355. },
  356. /* zzj add */
  357. dateFormat() { // 获取当前时间
  358. var date=new Date();
  359. var year=date.getFullYear();
  360. var month= date.getMonth()+1<10 ? "0"+(date.getMonth()+1) : date.getMonth()+1;
  361. var day=date.getDate()<10 ? "0"+date.getDate() : date.getDate();
  362. return year+"-"+month+"-"+day;
  363. },
  364. /* 关闭*/
  365. remRedar() {
  366. this.visible = false // 列表隐藏
  367. this.listData = [] // 清空列表数据
  368. this.redar = false // 扫码图标隐藏
  369. this.$emit('scanOff',false)
  370. },
  371. }
  372. }