luojie 3 months ago
parent
commit
7e6d3f31d0
134 changed files with 5714 additions and 816 deletions
  1. +16
    -0
      src/api/business/public/public.js
  2. +10
    -0
      src/api/business/study/studyMethod.js
  3. +69
    -0
      src/assets/styles/index.scss
  4. +3
    -2
      src/components/Template/SelectTable.vue
  5. +1
    -1
      src/lang/en/business/resource/gyzj.js
  6. +1
    -1
      src/lang/en/business/study/studyEnter.js
  7. +58
    -0
      src/lang/en/template/sp.js
  8. +54
    -0
      src/lang/zh/template/sp.js
  9. +1
    -1
      src/utils/menu.js
  10. +2
    -2
      src/views/business/comps/select/SelectTemplateDialog.vue
  11. +17
    -1
      src/views/business/comps/template/TemplateTable.vue
  12. +12
    -2
      src/views/business/comps/template/comps/gy/MJYLQSQD.vue
  13. +1
    -1
      src/views/business/comps/template/comps/gy/SYWZPZJHB.vue
  14. +1
    -1
      src/views/business/comps/template/comps/sp/SWYPFXCBYPZB.vue
  15. +374
    -0
      src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/CBYDB.vue
  16. +374
    -0
      src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/CBYHGZYWDX.vue
  17. +362
    -0
      src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/JZXY.vue
  18. +4
    -4
      src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/QXWDX.vue
  19. +374
    -0
      src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/RXJZXY.vue
  20. +425
    -0
      src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/Recovery.vue
  21. +374
    -0
      src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/XSKKX.vue
  22. +374
    -0
      src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/XZXHTYX.vue
  23. +374
    -0
      src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/ZDYBS.vue
  24. +53
    -104
      src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/ZQDYJMD.vue
  25. +1
    -1
      src/views/business/comps/template/comps/sp/SWYPFXRYPZB.vue
  26. +27
    -22
      src/views/business/comps/template/dialog/SelectReagentDialog.vue
  27. +146
    -11
      src/views/business/comps/template/formConfig/SWYPFXFFXYPZBBTableConfig.js
  28. +28
    -1
      src/views/business/comps/template/mixins/templateMixin.js
  29. +32
    -21
      src/views/business/form/drug/comp/sqbdList.vue
  30. +31
    -20
      src/views/business/form/drug/comp/tbbdList.vue
  31. +22
    -16
      src/views/business/form/drug/comp/ytbdList.vue
  32. +17
    -6
      src/views/business/form/nonTrial/comp/syff.vue
  33. +224
    -0
      src/views/business/form/nonTrial/comp/syff/Xq.vue
  34. +205
    -0
      src/views/business/form/nonTrial/comp/syff/Xz.vue
  35. +109
    -0
      src/views/business/form/nonTrial/comp/syff/Yd.vue
  36. +211
    -0
      src/views/business/form/nonTrial/comp/syffList.vue
  37. +96
    -41
      src/views/business/form/nonTrial/comp/tbbdList.vue
  38. +62
    -32
      src/views/business/form/nonTrial/comp/ytbdList.vue
  39. +1
    -1
      src/views/business/resource/gsp/comps/gsp/XqExport.vue
  40. +1
    -1
      src/views/business/resource/gyzj/comps/ffjl/Gd.vue
  41. +1
    -1
      src/views/business/resource/gyzj/comps/ffjl/Jd.vue
  42. +1
    -1
      src/views/business/resource/gyzj/comps/ffjl/Jq.vue
  43. +1
    -1
      src/views/business/resource/gyzj/comps/ffjl/Js.vue
  44. +1
    -1
      src/views/business/resource/gyzj/comps/ffjl/Jy.vue
  45. +1
    -1
      src/views/business/resource/gyzj/comps/ffjl/Sd.vue
  46. +1
    -3
      src/views/business/resource/gyzj/comps/ffjl/Xq.vue
  47. +178
    -35
      src/views/business/resource/gyzj/comps/ffjlList.vue
  48. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Bj.vue
  49. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Cc.vue
  50. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Czrq.vue
  51. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Czyj.vue
  52. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Ff.vue
  53. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Gd.vue
  54. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Gh.vue
  55. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Jd.vue
  56. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Js.vue
  57. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Jy.vue
  58. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Qc.vue
  59. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Rk.vue
  60. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Sd.vue
  61. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Shbj.vue
  62. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Shxgkc.vue
  63. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Sqgh.vue
  64. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Sqrk.vue
  65. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Xgkc.vue
  66. +2
    -18
      src/views/business/resource/gyzj/comps/gyzj/Xq.vue
  67. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Ysff.vue
  68. +146
    -25
      src/views/business/resource/gyzj/comps/gyzjList.vue
  69. +3
    -3
      src/views/business/resource/gyzj/index.vue
  70. +1
    -1
      src/views/business/resource/mjy/comps/ffjl/Gd.vue
  71. +1
    -1
      src/views/business/resource/mjy/comps/ffjl/Jd.vue
  72. +1
    -1
      src/views/business/resource/mjy/comps/ffjl/Jq.vue
  73. +1
    -1
      src/views/business/resource/mjy/comps/ffjl/Js.vue
  74. +1
    -1
      src/views/business/resource/mjy/comps/ffjl/Jy.vue
  75. +1
    -1
      src/views/business/resource/mjy/comps/ffjl/Sd.vue
  76. +1
    -1
      src/views/business/resource/mjy/comps/ffjl/Xq.vue
  77. +179
    -36
      src/views/business/resource/mjy/comps/ffjlList.vue
  78. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Bj.vue
  79. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Cc.vue
  80. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Czrq.vue
  81. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Czyj.vue
  82. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Ff.vue
  83. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Gd.vue
  84. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Gh.vue
  85. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Jd.vue
  86. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Js.vue
  87. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Jy.vue
  88. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Qc.vue
  89. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Rk.vue
  90. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Sd.vue
  91. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Shbj.vue
  92. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Shxgkc.vue
  93. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Xgkc.vue
  94. +1
    -17
      src/views/business/resource/mjy/comps/mjy/Xq.vue
  95. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Ysff.vue
  96. +156
    -36
      src/views/business/resource/mjy/comps/mjyList.vue
  97. +3
    -3
      src/views/business/resource/mjy/index.vue
  98. +1
    -1
      src/views/business/resource/zcg/comps/Ysff.vue
  99. +1
    -1
      src/views/business/resource/zcg/comps/Ysgh.vue
  100. +21
    -11
      src/views/business/resource/zcg/list.vue

+ 16
- 0
src/api/business/public/public.js View File

@ -59,3 +59,19 @@ export function public_sjList(query) {
params: query
})
}
// 试验列表
export function public_studyList(query) {
return request({
url: '/system/business/public/studyList',
method: 'get',
params: query
})
}
// 部长列表
export function public_bzList(query) {
return request({
url: '/system/business/public/bzList',
method: 'get',
params: query
})
}

+ 10
- 0
src/api/business/study/studyMethod.js View File

@ -47,3 +47,13 @@ export function studyMethod_export(query) {
params: query
})
}
// 判断用户是否全部已读试验/学科下的试验方法
export function studyMethod_getReadAllMethodStatus(query) {
return request({
url: '/system/business/studyMethod/getReadAllMethodStatus',
method: 'get',
params: query
})
}

+ 69
- 0
src/assets/styles/index.scss View File

@ -206,4 +206,73 @@ aside {
&.ysd {
background: #F78B07;
}
/**/
&.tbz {
background: #409EFF;
}
&.ytj {
background: #F78B07;
}
&.ytg {
background: #2AC663;
}
&.ywc {
background: #2AC663;
}
&.ywcfh {
background: #2AC663;
}
&.dgb {
background: #f73f07;
}
&.ygb {
background: #A1A1A1;
}
&.dfz {
background: #f73f07;
}
&.yfz {
background: #A1A1A1;
}
&.ysd {
background: #F78B07;
}
&.yes {
background: #2AC663;
}
&.no {
background: #A1A1A1;
}
&.rk {
background: #2AC663;
}
&.wrk {
background: #409EFF;
}
&.yff {
background: #2AC663;
}
&.ysd {
background: #f73f07;
}
&.dgd {
background: #A1A1A1;
}
&.gd {
background: #2AC663;
}
&.djd {
background: #f73f07;
}
&.wjy {
background: #409EFF;
}
&.djy {
background: #A1A1A1;
}
&.jyz {
background: #2AC663;
}
}

+ 3
- 2
src/components/Template/SelectTable.vue View File

@ -97,8 +97,8 @@ export default {
methods: {
show(){
this.localSelectedId = ''
this.getList();
this.initSearchForm();
this.getList();
},
//
initSearchForm() {
@ -122,7 +122,8 @@ export default {
this.getList();
},
reset(){
this.$refs.SearchSjRef.resetFields()
this.initSearchForm();
this.getList();
this.onSearch()
},
//

+ 1
- 1
src/lang/en/business/resource/gyzj.js View File

@ -81,7 +81,7 @@ export default {
cksj: 'Out of Storage Date',
rksj: 'Into Storage Date',
jiaqian: 'Sign',
gyzjgl: 'Dose Formulation',
gyzjgl: 'DoseManage',
ffhsjl: 'In-and-Out Record',
bdxx: 'Record Information',
jbxx: 'Information',

+ 1
- 1
src/lang/en/business/study/studyEnter.js View File

@ -20,7 +20,7 @@ export default {
sjlb: '试剂列表',
gsplb: '供试品列表',
gyzjlb: 'DosageManage',
gyzjlb: 'DoseManage',
mjylb: 'DrugManage',
xblb: '细胞列表',
xjlb: '细菌列表'

+ 58
- 0
src/lang/en/template/sp.js View File

@ -17,9 +17,67 @@ export default {
sjjzxql: 'Actual Blank Substrate Extraction Volume',
hhwznd: 'Target Solution Concentration'
},
// 生物样品分析方法学样品制备表-Recovery
sp009: {
title: 'Bioanalytical Methods Sample Preparation Record (Recovery)',
clpbh: 'Analysis Batch Number',
rqcz: 'Container Material',
clsj: 'Work Time',
xzjz: 'Select substrate',
bh: 'Serial Number',
ysry: 'Preset solution',
sjry: 'Actual solution',
yjryxql: 'Expected Solution Extraction Volume',
sjryxql: 'Actual Solution Extraction Volume',
yjjzxql: 'Expected Blank Substrate Extraction Volume',
sjjzxql: 'Actual Blank Substrate Extraction Volume',
hhwznd: 'Target Solution Concentration',
xzgzy: 'Select Working Solution',
xzxsy: 'Select Diluent',
yjgzyxql: 'Expected Working Solution Extraction Volume',
sjgzyxql: 'Actual Working Solution Extraction Volume',
yjxsyxql: 'Expected Diluent Extraction Volume',
sjxsyxql: 'Actual Diluent Extraction Volume'
},
//生物样品分析方法学样品制备表(全血稳定)
sp010: {
title:
'Bioanalytical Methods Sample Preparation Record (Whole Blood Stability)'
},
//生物样品分析方法学样品制备表(Solution stability)-生物样品分析方法学样品制备表-储备液和工作液稳定性
sp011: {
title:
'Bioanalytical Methods Sample Preparation Record (Solution Stability)',
xzxsy: 'Select Diluent',
yjxsyxql: 'Expected Blank Diluent Extraction Volume',
sjxsyxql: 'Actual Blank Diluent Extraction Volume'
},
//生物样品分析方法学样品制备表(Haemolysed matrix effect)-生物样品分析方法学样品制备表(溶血基质效应)
sp012: {
title:
'Bioanalytical Methods Sample Preparation Record (Haemolytic Matrix Effect)'
},
//生物样品分析方法学样品制备表(Matrix effect)-生物样品分析方法学样品制备表(基质效应)
sp013: {
title: 'Bioanalytical Methods Sample Preparation Record (Matrix Effect)',
kbjzbh: 'Blank Substrate Serial Number'
},
//生物样品分析方法学样品制备表(Selectivity)-生物样品分析方法学样品制备表(选择性和特异性)
sp014: {
title: 'Bioanalytical Methods Sample Preparation Record (Selectivity)'
},
//生物样品分析方法学样品制备表(Sample Size)-生物样品分析方法学样品制备表(最大样本数)
sp015: {
title: 'Bioanalytical Methods Sample Preparation Record (Sample Amount)'
},
//生物样品分析方法学样品制备表(Dilution Integrity)- 生物样品分析方法学样品制备表(稀释可靠性)
sp016: {
title:
'Bioanalytical Methods Sample Preparation Record (Dilution Integrity)'
},
//生物样品分析方法学样品制备表(Stock solution comparison)- 生物样品分析方法学样品制备表(储备液对比)
sp017: {
title:
'Bioanalytical Methods Sample Preparation Record (Stock Solution Comparison)'
}
}

+ 54
- 0
src/lang/zh/template/sp.js View File

@ -16,8 +16,62 @@ export default {
sjjzxql: '实际基质吸取量',
hhwznd: '化合物终浓度'
},
// 生物样品分析方法学样品制备表-Recovery
sp009: {
title: '生物样品分析方法学样品制备表(Recovery)',
clpbh: '处理批编号',
rqcz: '容器材质',
clsj: '处理时间',
xzjz: '选择基质',
bh: '编号',
ysry: '预设溶液',
sjry: '实际溶液',
yjryxql: '预计溶液吸取量',
sjryxql: '实际溶液吸取量',
yjjzxql: '预计基质吸取量',
sjjzxql: '实际基质吸取量',
hhwznd: '化合物终浓度',
xzgzy: '选择工作液',
xzxsy: '选择稀释液',
yjgzyxql: '预计工作液吸取量',
sjgzyxql: '实际工作液吸取量',
yjxsyxql: '预计稀释液吸取量',
sjxsyxql: '实际稀释液吸取量'
},
//生物样品分析方法学样品制备表(全血稳定)
sp010: {
title: '生物样品分析方法学样品制备表(全血稳定)'
},
//生物样品分析方法学样品制备表(Solution stability)-生物样品分析方法学样品制备表-储备液和工作液稳定性
sp011: {
title: '生物样品分析方法学样品制备表(储备液和工作液稳定性)',
xzxsy: '选择稀释液',
yjxsyxql: '预计稀释液吸取量',
sjxsyxql: '实际稀释液吸取量'
},
//生物样品分析方法学样品制备表(Haemolysed matrix effect)-生物样品分析方法学样品制备表(溶血基质效应)
sp012: {
title: '生物样品分析方法学样品制备表(溶血基质效应)'
},
//生物样品分析方法学样品制备表(Matrix effect)-生物样品分析方法学样品制备表(基质效应)
sp013: {
title: '生物样品分析方法学样品制备表(基质效应)',
kbjzbh: '空白基质编号'
},
//生物样品分析方法学样品制备表(Selectivity)-生物样品分析方法学样品制备表(选择性和特异性)
sp014: {
title: '生物样品分析方法学样品制备表(选择性和特异性)'
},
//生物样品分析方法学样品制备表(Sample Size)-生物样品分析方法学样品制备表(最大样本数)
sp015: {
title: '生物样品分析方法学样品制备表(最大样本数)'
},
//生物样品分析方法学样品制备表(Dilution Integrity)- 生物样品分析方法学样品制备表(稀释可靠性)
sp016: {
title: '生物样品分析方法学样品制备表(稀释可靠性)'
},
//生物样品分析方法学样品制备表(Stock solution comparison)- 生物样品分析方法学样品制备表(储备液对比)
sp017: {
title: '生物样品分析方法学样品制备表(储备液对比)'
}
}

+ 1
- 1
src/utils/menu.js View File

@ -12,7 +12,7 @@ let menuObj = {
资源库管理: 'Resources',
试剂管理: 'ReagentManage',
供试品管理: 'SpecimenManage',
给药制剂管理: 'DosageManage',
给药制剂管理: 'DoseManage',
麻精药管理: 'DrugManage',
钥匙管理: 'KeyManage',
仪器管理: 'InstrumentManage',

+ 2
- 2
src/views/business/comps/select/SelectTemplateDialog.vue View File

@ -1,6 +1,6 @@
<template>
<div class="select-template">
<el-dialog :title="$t('page.system.template.selectTemplate')" :visible.sync="open" width="800px" append-to-body
<el-dialog :title="$t('page.system.template.selectTemplate')" :visible.sync="open" width="1200px" append-to-body
:close-on-click-modal="false" style="padding: 20px 20px;">
<div class="dialog-container">
<el-form :model="searchForm" ref="searchForm" :inline="true">
@ -23,7 +23,7 @@
<el-radio v-model="selectedId" :label="scope.row.id" class="hide-label" @click.native.stop="handleRadioClick(scope.row)"></el-radio>
</template>
</el-table-column>
<el-table-column :label="$t('page.system.template.sn')" align="center" prop="sn" width="150px"/>
<el-table-column :label="$t('page.system.template.sn')" align="center" prop="showSn" />
<el-table-column :label="$t('page.system.template.name')" align="center" prop="name" />
<el-table-column :label="$t('page.system.template.department')" align="center" prop="deptName" width="150px"/>
</el-table>

+ 17
- 1
src/views/business/comps/template/TemplateTable.vue View File

@ -18,6 +18,14 @@ import SWYPNBGZYZBB from "./comps/sp/SWYPNBGZYZBB.vue";
//-10
import ZQDYJMD from "./comps/sp/SWYPFXFFXYPZBB/ZQDYJMD.vue";
import QXWDX from "./comps/sp/SWYPFXFFXYPZBB/QXWDX.vue";
import CBYHGZYWDX from "./comps/sp/SWYPFXFFXYPZBB/CBYHGZYWDX.vue";
import Recovery from "./comps/sp/SWYPFXFFXYPZBB/Recovery.vue";
import RXJZXY from "./comps/sp/SWYPFXFFXYPZBB/RXJZXY.vue";
import JZXY from "./comps/sp/SWYPFXFFXYPZBB/JZXY.vue";
import XZXHTYX from "./comps/sp/SWYPFXFFXYPZBB/XZXHTYX.vue";
import ZDYBS from "./comps/sp/SWYPFXFFXYPZBB/ZDYBS.vue";
import XSKKX from "./comps/sp/SWYPFXFFXYPZBB/XSKKX.vue";
import CBYDB from "./comps/sp/SWYPFXFFXYPZBB/CBYDB.vue";
import Demo from "./comps/sp/Demo.vue";
//
import SYWZPZJHB from "./comps/gy/SYWZPZJHB.vue";
@ -27,7 +35,7 @@ export default {
name: "TemplateTable",
components: {
MJYLQSQD, SYWZPZJHB,
SP001, SWYPFXRYPZB, Demo, SWYPFXCBYPZB, SWYPBQGZYZBB, SWYPNBGZYZBB,ZQDYJMD,QXWDX
SP001, SWYPFXRYPZB, Demo, SWYPFXCBYPZB, SWYPBQGZYZBB, SWYPNBGZYZBB,ZQDYJMD,QXWDX,CBYHGZYWDX,Recovery,RXJZXY,JZXY,XZXHTYX,ZDYBS,XSKKX,CBYDB
},
props: {
sn: {
@ -57,7 +65,15 @@ export default {
'SP003': 'SWYPBQGZYZBB',
'SP004': 'SWYPNBGZYZBB',
'SP008': 'ZQDYJMD',
'SP009': 'Recovery',
'SP010': 'QXWDX',
'SP011': 'CBYHGZYWDX',
'SP012': 'RXJZXY',
'SP013': 'JZXY',
'SP014': 'XZXHTYX',
'SP015': 'ZDYBS',
'SP016': 'XSKKX',
'SP017': 'CBYDB',
'SYWZPZJHB': 'SYWZPZJHB',
'MJYLQSQD': 'MJYLQSQD',
}

+ 12
- 2
src/views/business/comps/template/comps/gy/MJYLQSQD.vue View File

@ -2,7 +2,7 @@
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{formData.templateMc || "麻醉/精神药品配制/领取申请单"}}<img
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{formData.bdmc || "麻醉/精神药品配制/领取申请单"}}<img
src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
@ -176,6 +176,9 @@ export default {
},
data() {
return {
syId:null,
depId:null,
sdId:null,
public_studyList:public_studyList,
searchForm: {
name: {
@ -220,6 +223,9 @@ export default {
syNo: currentRow.sn,
SD: currentRow.leaderName,
});
// this.syId='' todo
// this.depId=''
// this.sdId=''
console.log(currentRow,"currentRow")
this.$refs.selectReagentDialogRef.onCancel()
},
@ -233,7 +239,11 @@ export default {
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "stepRef", "remarkRef"])
},
async getFormData() {
return await this.validFormFields(["baseInfoRef","remarkRef"]);
let content = await this.validFormFields(["baseInfoRef","remarkRef"]);
content.syId=this.syId
content.depId=this.depId
content.sdId=this.sdId
return content;
},
async onSave() {
const formData = await this.getFormData();

+ 1
- 1
src/views/business/comps/template/comps/gy/SYWZPZJHB.vue View File

@ -2,7 +2,7 @@
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{formData.templateMc || "试验物质配制计划表"}}<img
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{formData.bdmc || "试验物质配制计划表"}}<img
src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">

+ 1
- 1
src/views/business/comps/template/comps/sp/SWYPFXCBYPZB.vue View File

@ -2,7 +2,7 @@
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.templateMc ||
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
$t('template.common.pageTitle') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">

+ 374
- 0
src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/CBYDB.vue View File

@ -0,0 +1,374 @@
<!-- 生物样品分析方法学样品制备表(Stock solution comparison)- 生物样品分析方法学样品制备表储备液对比-->
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
$t('template.sp.sp017.title') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPcakge fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo" ref="baseInfoRef"
:formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns"
:dataSource="resource" />
<TableList label="template.common.instrumentInfo" :columns="yqsColumns"
:dataSource="resource" />
<BaseInfoFormPcakge fieldItemLabel="template.common.storageCondition" label="template.common.storageCondition" ref="storageConditionRef"
:formConfig="storageFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" />
<div class="template-form-item">
<BaseInfoFormPcakge fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef" :formConfig="stepFormConfig"
:formData="formData" @clickable="handleJzClickable" />
<CustomTable
@blur="onHandleTableBlur"
:ref="`tableRef`"
:columns="tableStepColumns"
:formData="formData"
:prefixKey = "`table`"
@clickable="handleClickable"
fieldItemLabel = "template.common.operationSteps"
>
<template slot="operation" slot-scope="{ row, rowIndex}">
<TableOpertaion
:fillType="fillType"
:row="row"
:rowIndex="rowIndex"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"
></TableOpertaion>
</template>
</CustomTable>
</div>
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPcakge fieldItemLabel="template.common.remark" label="template.common.remark" ref="remarkRef" :formConfig="remarkConig"
:formData="formData" />
</div>
</div>
</div>
<!-- <button @click = "onSave">保存</button> -->
<SelectReagentDialog
@submit="onSelectReagentSubmit"
ref="selectReagentDialogRef" >
</SelectReagentDialog>
</div>
</template>
<script>
import BaseInfoFormPcakge from "@/components/Template/BaseInfoFormPcakge";
import LineLabel from "@/components/Template/LineLabel";
import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step";
import templateMixin from "../../../mixins/templateMixin";
import CustomTable from '@/components/Template/CustomTable.vue';
import { getLatestSn } from '@/api/template';
import {getSWYPFXFFXYPZBBTableConfig} from "../../../formConfig/SWYPFXFFXYPZBBTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
import SelectReagentDialog from '../../../dialog/SelectReagentDialog.vue';
export default {
name: "CBYDB",
components: { BaseInfoFormPcakge, LineLabel, TableList, Step, CustomTable,TableOpertaion,SelectReagentDialog },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
storageFormConfig() {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
otherCode: "storageConditionOther",
},
}
}
];
},
remarkConig() {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
baseInfoFormConfig() {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "input",
fillType: "actFill",
maxlength: 50
},
//
clpbg: {
label: 'template.sp.sp008.clpbh',
type: "input",
fillType: "actFill",
maxlength: 50
},
}
},
{
type: "conditionItem",
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: "select",
multiple: true,
fillType: "preFill",
options: this.getDictOptions('business_pztj'),
otherCode: "preOther",
},
act: {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
multiple: true,
options: this.getDictOptions('business_pztj')
}
}
},
{
type: "cellItem",
label: 'template.sp.sp008.rqcz',
config: {
rqcz: {
type: "select",
multiple: true,
fillType: "actFill",
options: this.getDictOptions('business_rqcz'),
otherCode: "rqczOther",
},
}
},
{
type: "cellItem",
label: 'template.sp.sp008.clsj',
config: {
startDate: {
label: 'template.common.startTime',
type: "input",
},
endDate: {
label: 'template.common.endTime',
type: "input",
},
}
}
]
},
stepFormConfig() {
return [
{
type: "step",
config: {
jz: {
label: 'template.sp.sp008.xzjz',
type: "input",
fillType: "preFill",
subType: "clickable",
subKey: "subJz",
subFillType: "actFill",
maxlength: 20,
labelWidth: 80,
},
}
}
]
},
tableStepColumns() {
return getSWYPFXFFXYPZBBTableConfig(this,'business_sp_cbydb');
},
},
data() {
return {
reagentType: "",//12
currentSubKey: "",//key
rowIndex:0,//
resource: [],
sysjColumns: [
{ label: 'template.common.reagentName', prop: "mc" },//
{ label: 'template.common.reagentCode', prop: "bh" },//
{ label: 'template.common.reagentNo', prop: "ph" },//
{ label: 'template.common.concentration', prop: "nd" },//
{ label: 'template.common.source', prop: "source" },//
{ label: 'template.common.reagentExpireDate', prop: "sxrq" },//
],
yqsColumns: [
{ label: 'template.common.instrumentName', prop: "instrumentName" },
{ label: 'template.common.instrumentModel', prop: "instrumentModel" },
{ label: 'template.common.instrumentCode', prop: "instrumentCode" },
{ label: 'template.common.nextTestDate', prop: "nextTestDate" },
],
formData: {}
};
},
mounted() {
},
watch: {
formData: {
immediate: true,
handler(v) {
if(this.fillType === "actFill"){
this.getCode(v);
}
}
}
},
methods: {
//
handleJzClickable(obj){
this.reagentType = 1//
this.currentSubKey = obj.subKey;
this.$refs.selectReagentDialogRef.show()
},
//
onSelectReagentSubmit(code,row){
if(this.reagentType===1){
this.$refs.stepFormPackageRef.updateFormData(this.currentSubKey, code);
}else{
this.$refs.tableRef.updateDataSourceByRowIndex(this.rowIndex,{
[this.currentSubKey]: code,
})
}
this.$refs.selectReagentDialogRef.onCancel()
},
//
handleClickable(col, rowIndex) {
//
this.reagentType = 2
this.rowIndex = rowIndex
this.currentSubKey = col.prop;
console.log("clickable",rowIndex, col)
if(col.prop === "sjry"){
//-
this.$refs.selectReagentDialogRef.show()
}
},
//
async getCode(v){
const {stepTableFormData = []} = v;
if(stepTableFormData && stepTableFormData.length>0 && !stepTableFormData[0].bhCode){
const result = await getLatestSn({
count: stepTableFormData.length,
})
if(result.code == 200){
if(stepTableFormData.length===1){
this.$refs.tableRef.updateDataSourceByRowIndex(0,{
bhCode: result.data,
})
}else{
for(let i=0;i<stepTableFormData.length;i++){
this.$refs.tableRef.updateDataSourceByRowIndex(i,{
bhCode: result.data[i],
})
}
}
}
}
},
//
getFilledFormData(){
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "tableRef","stepRef", "remarkRef"])
},
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "stepFormPackageRef","tableRef" ,"stepRef", "remarkRef"]);
//resource
let tmpResource = []
let tableList = content.stepTableFormData
for(let i=0;i<tableList.length;i++){
//
let item = tableList[i]
tmpResource.push({
mc: null,
bh: item.bh+item.bhCode,
ph: null,
nd: item.hhwznd + content.headerSelectFields.hhwzndUnit,
source: 'ELN配制',
sxrq: null,
ndz: item.hhwznd,
nddw: content.headerSelectFields.hhwzndUnit,
kc: item.sjjzxql+item.sjryxql,//todo -
kcdw: content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --
syl: null,
syldw:content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --,
yxzq:null,
yxzqdw:null,
})
}
//使
this.resource=tmpResource
return content;
},
async onSave() {
const formData = await this.getFilledFormData();
console.log(formData, "formData")
},
//
deleteRow(rowIndex) {
const tableRef = this.$refs['tableRef'];
if (tableRef) {
tableRef.deleteRow(rowIndex);
}
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
</style>

+ 374
- 0
src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/CBYHGZYWDX.vue View File

@ -0,0 +1,374 @@
<!-- 生物样品分析方法学样品制备表-储备液和工作液稳定性 Solution Stability -->
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
$t('template.sp.sp011.title') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPcakge fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo" ref="baseInfoRef"
:formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns"
:dataSource="resource" />
<TableList label="template.common.instrumentInfo" :columns="yqsColumns"
:dataSource="resource" />
<BaseInfoFormPcakge fieldItemLabel="template.common.storageCondition" label="template.common.storageCondition" ref="storageConditionRef"
:formConfig="storageFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" />
<div class="template-form-item">
<BaseInfoFormPcakge fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef" :formConfig="stepFormConfig"
:formData="formData" @clickable="handleJzClickable" />
<CustomTable
@blur="onHandleTableBlur"
:ref="`tableRef`"
:columns="tableStepColumns"
:formData="formData"
:prefixKey = "`table`"
@clickable="handleClickable"
fieldItemLabel = "template.common.operationSteps"
>
<template slot="operation" slot-scope="{ row, rowIndex}">
<TableOpertaion
:fillType="fillType"
:row="row"
:rowIndex="rowIndex"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"
></TableOpertaion>
</template>
</CustomTable>
</div>
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPcakge fieldItemLabel="template.common.remark" label="template.common.remark" ref="remarkRef" :formConfig="remarkConig"
:formData="formData" />
</div>
</div>
</div>
<!-- <button @click = "onSave">保存</button> -->
<SelectReagentDialog
@submit="onSelectReagentSubmit"
ref="selectReagentDialogRef" >
</SelectReagentDialog>
</div>
</template>
<script>
import BaseInfoFormPcakge from "@/components/Template/BaseInfoFormPcakge";
import LineLabel from "@/components/Template/LineLabel";
import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step";
import templateMixin from "../../../mixins/templateMixin";
import CustomTable from '@/components/Template/CustomTable.vue';
import { getLatestSn } from '@/api/template';
import {getSWYPFXFFXYPZBBTableConfig} from "../../../formConfig/SWYPFXFFXYPZBBTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
import SelectReagentDialog from '../../../dialog/SelectReagentDialog.vue';
export default {
name: "CBYHGZYWDX",
components: { BaseInfoFormPcakge, LineLabel, TableList, Step, CustomTable,TableOpertaion,SelectReagentDialog },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
storageFormConfig() {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
otherCode: "storageConditionOther",
},
}
}
];
},
remarkConig() {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
baseInfoFormConfig() {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "input",
fillType: "actFill",
maxlength: 50
},
//
clpbg: {
label: 'template.sp.sp008.clpbh',
type: "input",
fillType: "actFill",
maxlength: 50
},
}
},
{
type: "conditionItem",
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: "select",
multiple: true,
fillType: "preFill",
options: this.getDictOptions('business_pztj'),
otherCode: "preOther",
},
act: {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
multiple: true,
options: this.getDictOptions('business_pztj')
}
}
},
{
type: "cellItem",
label: 'template.sp.sp008.rqcz',
config: {
rqcz: {
type: "select",
multiple: true,
fillType: "actFill",
options: this.getDictOptions('business_rqcz'),
otherCode: "rqczOther",
},
}
},
{
type: "cellItem",
label: 'template.sp.sp008.clsj',
config: {
startDate: {
label: 'template.common.startTime',
type: "input",
},
endDate: {
label: 'template.common.endTime',
type: "input",
},
}
}
]
},
stepFormConfig() {
return [
{
type: "step",
config: {
jz: {
label: 'template.sp.sp011.xzxsy',
type: "input",
fillType: "preFill",
subType: "clickable",
subKey: "subJz",
subFillType: "actFill",
maxlength: 20,
labelWidth: 80,
},
}
}
]
},
tableStepColumns() {
return getSWYPFXFFXYPZBBTableConfig(this,'business_sp_cbyhgzywdx',true);
},
},
data() {
return {
reagentType: "",//12
currentSubKey: "",//key
rowIndex:0,//
resource: [],
sysjColumns: [
{ label: 'template.common.reagentName', prop: "mc" },//
{ label: 'template.common.reagentCode', prop: "bh" },//
{ label: 'template.common.reagentNo', prop: "ph" },//
{ label: 'template.common.concentration', prop: "nd" },//
{ label: 'template.common.source', prop: "source" },//
{ label: 'template.common.reagentExpireDate', prop: "sxrq" },//
],
yqsColumns: [
{ label: 'template.common.instrumentName', prop: "instrumentName" },
{ label: 'template.common.instrumentModel', prop: "instrumentModel" },
{ label: 'template.common.instrumentCode', prop: "instrumentCode" },
{ label: 'template.common.nextTestDate', prop: "nextTestDate" },
],
formData: {}
};
},
mounted() {
},
watch: {
formData: {
immediate: true,
handler(v) {
if(this.fillType === "actFill"){
this.getCode(v);
}
}
}
},
methods: {
//
handleJzClickable(obj){
this.reagentType = 1//
this.currentSubKey = obj.subKey;
this.$refs.selectReagentDialogRef.show()
},
//
onSelectReagentSubmit(code,row){
if(this.reagentType===1){
this.$refs.stepFormPackageRef.updateFormData(this.currentSubKey, code);
}else{
this.$refs.tableRef.updateDataSourceByRowIndex(this.rowIndex,{
[this.currentSubKey]: code,
})
}
this.$refs.selectReagentDialogRef.onCancel()
},
//
handleClickable(col, rowIndex) {
//
this.reagentType = 2
this.rowIndex = rowIndex
this.currentSubKey = col.prop;
console.log("clickable",rowIndex, col)
if(col.prop === "sjry"){
//-
this.$refs.selectReagentDialogRef.show()
}
},
//
async getCode(v){
const {stepTableFormData = []} = v;
if(stepTableFormData && stepTableFormData.length>0 && !stepTableFormData[0].bhCode){
const result = await getLatestSn({
count: stepTableFormData.length,
})
if(result.code == 200){
if(stepTableFormData.length===1){
this.$refs.tableRef.updateDataSourceByRowIndex(0,{
bhCode: result.data,
})
}else{
for(let i=0;i<stepTableFormData.length;i++){
this.$refs.tableRef.updateDataSourceByRowIndex(i,{
bhCode: result.data[i],
})
}
}
}
}
},
//
getFilledFormData(){
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "tableRef","stepRef", "remarkRef"])
},
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "stepFormPackageRef","tableRef" ,"stepRef", "remarkRef"]);
//resource
let tmpResource = []
let tableList = content.stepTableFormData
for(let i=0;i<tableList.length;i++){
//
let item = tableList[i]
tmpResource.push({
mc: null,
bh: item.bh+item.bhCode,
ph: null,
nd: item.hhwznd + content.headerSelectFields.hhwzndUnit,
source: 'ELN配制',
sxrq: null,
ndz: item.hhwznd,
nddw: content.headerSelectFields.hhwzndUnit,
kc: item.sjjzxql+item.sjryxql,//todo -
kcdw: content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --
syl: null,
syldw:content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --,
yxzq:null,
yxzqdw:null,
})
}
//使
this.resource=tmpResource
return content;
},
async onSave() {
const formData = await this.getFilledFormData();
console.log(formData, "formData")
},
//
deleteRow(rowIndex) {
const tableRef = this.$refs['tableRef'];
if (tableRef) {
tableRef.deleteRow(rowIndex);
}
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
</style>

+ 362
- 0
src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/JZXY.vue View File

@ -0,0 +1,362 @@
<!-- 生物样品分析方法学样品制备表Matrix effect-生物样品分析方法学样品制备表基质效应 -->
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
$t('template.sp.sp013.title') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPcakge fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo" ref="baseInfoRef"
:formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns"
:dataSource="resource" />
<TableList label="template.common.instrumentInfo" :columns="yqsColumns"
:dataSource="resource" />
<BaseInfoFormPcakge fieldItemLabel="template.common.storageCondition" label="template.common.storageCondition" ref="storageConditionRef"
:formConfig="storageFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" />
<div class="template-form-item">
<CustomTable
@blur="onHandleTableBlur"
:ref="`tableRef`"
:columns="tableStepColumns"
:formData="formData"
:prefixKey = "`table`"
@clickable="handleClickable"
fieldItemLabel = "template.common.operationSteps"
>
<template slot="operation" slot-scope="{ row, rowIndex}">
<TableOpertaion
:fillType="fillType"
:row="row"
:rowIndex="rowIndex"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"
></TableOpertaion>
</template>
</CustomTable>
</div>
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPcakge fieldItemLabel="template.common.remark" label="template.common.remark" ref="remarkRef" :formConfig="remarkConig"
:formData="formData" />
</div>
</div>
</div>
<!-- <button @click = "onSave">保存</button> -->
<SelectReagentDialog
@submit="onSelectReagentSubmit"
ref="selectReagentDialogRef" >
</SelectReagentDialog>
</div>
</template>
<script>
import BaseInfoFormPcakge from "@/components/Template/BaseInfoFormPcakge";
import LineLabel from "@/components/Template/LineLabel";
import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step";
import templateMixin from "../../../mixins/templateMixin";
import CustomTable from '@/components/Template/CustomTable.vue';
import { getLatestSn } from '@/api/template';
import {getSWYPFXFFXYPZBBTableConfig} from "../../../formConfig/SWYPFXFFXYPZBBTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
import SelectReagentDialog from '../../../dialog/SelectReagentDialog.vue';
export default {
name: "JZXY",
components: { BaseInfoFormPcakge, LineLabel, TableList, Step, CustomTable,TableOpertaion,SelectReagentDialog },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
storageFormConfig() {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
otherCode: "storageConditionOther",
},
}
}
];
},
remarkConig() {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
baseInfoFormConfig() {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "input",
fillType: "actFill",
maxlength: 50
},
//
clpbg: {
label: 'template.sp.sp008.clpbh',
type: "input",
fillType: "actFill",
maxlength: 50
},
}
},
{
type: "conditionItem",
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: "select",
multiple: true,
fillType: "preFill",
options: this.getDictOptions('business_pztj'),
otherCode: "preOther",
},
act: {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
multiple: true,
options: this.getDictOptions('business_pztj')
}
}
},
{
type: "cellItem",
label: 'template.sp.sp008.rqcz',
config: {
rqcz: {
type: "select",
multiple: true,
fillType: "actFill",
options: this.getDictOptions('business_rqcz'),
otherCode: "rqczOther",
},
}
},
{
type: "cellItem",
label: 'template.sp.sp008.clsj',
config: {
startDate: {
label: 'template.common.startTime',
type: "input",
},
endDate: {
label: 'template.common.endTime',
type: "input",
},
}
}
]
},
stepFormConfig() {
return [
{
type: "step",
config: {
jz: {
label: 'template.sp.sp011.xzxsy',
type: "input",
fillType: "preFill",
subType: "clickable",
subKey: "subJz",
subFillType: "actFill",
maxlength: 20,
labelWidth: 80,
},
}
}
]
},
tableStepColumns() {
return getSWYPFXFFXYPZBBTableConfig(this,'business_sp_jzxy',false,true);
},
},
data() {
return {
reagentType: "",//12
currentSubKey: "",//key
rowIndex:0,//
resource: [],
sysjColumns: [
{ label: 'template.common.reagentName', prop: "mc" },//
{ label: 'template.common.reagentCode', prop: "bh" },//
{ label: 'template.common.reagentNo', prop: "ph" },//
{ label: 'template.common.concentration', prop: "nd" },//
{ label: 'template.common.source', prop: "source" },//
{ label: 'template.common.reagentExpireDate', prop: "sxrq" },//
],
yqsColumns: [
{ label: 'template.common.instrumentName', prop: "instrumentName" },
{ label: 'template.common.instrumentModel', prop: "instrumentModel" },
{ label: 'template.common.instrumentCode', prop: "instrumentCode" },
{ label: 'template.common.nextTestDate', prop: "nextTestDate" },
],
formData: {}
};
},
mounted() {
},
watch: {
formData: {
immediate: true,
handler(v) {
if(this.fillType === "actFill"){
this.getCode(v);
}
}
}
},
methods: {
//
onSelectReagentSubmit(code,row){
this.$refs.tableRef.updateDataSourceByRowIndex(this.rowIndex,{
[this.currentSubKey]: code,
})
this.$refs.selectReagentDialogRef.onCancel()
},
//
handleClickable(col, rowIndex) {
//
this.reagentType = 2
this.rowIndex = rowIndex
this.currentSubKey = col.prop;
console.log("clickable",rowIndex, col)
if(col.prop === "sjry" || col.prop === "kbjzbh"){
//-
this.$refs.selectReagentDialogRef.show()
}
},
//
async getCode(v){
const {stepTableFormData = []} = v;
if(stepTableFormData && stepTableFormData.length>0 && !stepTableFormData[0].bhCode){
const result = await getLatestSn({
count: stepTableFormData.length,
})
if(result.code == 200){
if(stepTableFormData.length===1){
this.$refs.tableRef.updateDataSourceByRowIndex(0,{
bhCode: result.data,
})
}else{
for(let i=0;i<stepTableFormData.length;i++){
this.$refs.tableRef.updateDataSourceByRowIndex(i,{
bhCode: result.data[i],
})
}
}
}
}
},
//
getFilledFormData(){
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "tableRef","stepRef", "remarkRef"])
},
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef","tableRef" ,"stepRef", "remarkRef"]);
//resource
let tmpResource = []
let tableList = content.stepTableFormData
for(let i=0;i<tableList.length;i++){
//
let item = tableList[i]
tmpResource.push({
mc: null,
bh: item.bh+item.bhCode,
ph: null,
nd: item.hhwznd + content.headerSelectFields.hhwzndUnit,
source: 'ELN配制',
sxrq: null,
ndz: item.hhwznd,
nddw: content.headerSelectFields.hhwzndUnit,
kc: item.sjjzxql+item.sjryxql,//todo -
kcdw: content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --
syl: null,
syldw:content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --,
yxzq:null,
yxzqdw:null,
})
}
//使
this.resource=tmpResource
return content;
},
async onSave() {
const formData = await this.getFilledFormData();
console.log(formData, "formData")
},
//
deleteRow(rowIndex) {
const tableRef = this.$refs['tableRef'];
if (tableRef) {
tableRef.deleteRow(rowIndex);
}
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
</style>

+ 4
- 4
src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/QXWDX.vue View File

@ -2,7 +2,7 @@
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.templateMc ||
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
$t('template.sp.sp010.title') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
@ -221,7 +221,7 @@ export default {
]
},
tableStepColumns() {
return getSWYPFXFFXYPZBBTableConfig(this);
return getSWYPFXFFXYPZBBTableConfig(this,'business_sp_qxwdx');
},
},
data() {
@ -301,9 +301,9 @@ export default {
count: stepTableFormData.length,
})
if(result.code == 200){
if(stepTableFormData.length===0){
if(stepTableFormData.length===1){
this.$refs.tableRef.updateDataSourceByRowIndex(0,{
[bhCode]: result.data,
bhCode: result.data,
})
}else{
for(let i=0;i<stepTableFormData.length;i++){

+ 374
- 0
src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/RXJZXY.vue View File

@ -0,0 +1,374 @@
<!-- 生物样品分析方法学样品制备表Haemolysed matrix effect-生物样品分析方法学样品制备表溶血基质效应 -->
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
$t('template.sp.sp012.title') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPcakge fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo" ref="baseInfoRef"
:formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns"
:dataSource="resource" />
<TableList label="template.common.instrumentInfo" :columns="yqsColumns"
:dataSource="resource" />
<BaseInfoFormPcakge fieldItemLabel="template.common.storageCondition" label="template.common.storageCondition" ref="storageConditionRef"
:formConfig="storageFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" />
<div class="template-form-item">
<BaseInfoFormPcakge fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef" :formConfig="stepFormConfig"
:formData="formData" @clickable="handleJzClickable" />
<CustomTable
@blur="onHandleTableBlur"
:ref="`tableRef`"
:columns="tableStepColumns"
:formData="formData"
:prefixKey = "`table`"
@clickable="handleClickable"
fieldItemLabel = "template.common.operationSteps"
>
<template slot="operation" slot-scope="{ row, rowIndex}">
<TableOpertaion
:fillType="fillType"
:row="row"
:rowIndex="rowIndex"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"
></TableOpertaion>
</template>
</CustomTable>
</div>
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPcakge fieldItemLabel="template.common.remark" label="template.common.remark" ref="remarkRef" :formConfig="remarkConig"
:formData="formData" />
</div>
</div>
</div>
<!-- <button @click = "onSave">保存</button> -->
<SelectReagentDialog
@submit="onSelectReagentSubmit"
ref="selectReagentDialogRef" >
</SelectReagentDialog>
</div>
</template>
<script>
import BaseInfoFormPcakge from "@/components/Template/BaseInfoFormPcakge";
import LineLabel from "@/components/Template/LineLabel";
import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step";
import templateMixin from "../../../mixins/templateMixin";
import CustomTable from '@/components/Template/CustomTable.vue';
import { getLatestSn } from '@/api/template';
import {getSWYPFXFFXYPZBBTableConfig} from "../../../formConfig/SWYPFXFFXYPZBBTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
import SelectReagentDialog from '../../../dialog/SelectReagentDialog.vue';
export default {
name: "RXJZXY",
components: { BaseInfoFormPcakge, LineLabel, TableList, Step, CustomTable,TableOpertaion,SelectReagentDialog },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
storageFormConfig() {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
otherCode: "storageConditionOther",
},
}
}
];
},
remarkConig() {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
baseInfoFormConfig() {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "input",
fillType: "actFill",
maxlength: 50
},
//
clpbg: {
label: 'template.sp.sp008.clpbh',
type: "input",
fillType: "actFill",
maxlength: 50
},
}
},
{
type: "conditionItem",
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: "select",
multiple: true,
fillType: "preFill",
options: this.getDictOptions('business_pztj'),
otherCode: "preOther",
},
act: {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
multiple: true,
options: this.getDictOptions('business_pztj')
}
}
},
{
type: "cellItem",
label: 'template.sp.sp008.rqcz',
config: {
rqcz: {
type: "select",
multiple: true,
fillType: "actFill",
options: this.getDictOptions('business_rqcz'),
otherCode: "rqczOther",
},
}
},
{
type: "cellItem",
label: 'template.sp.sp008.clsj',
config: {
startDate: {
label: 'template.common.startTime',
type: "input",
},
endDate: {
label: 'template.common.endTime',
type: "input",
},
}
}
]
},
stepFormConfig() {
return [
{
type: "step",
config: {
jz: {
label: 'template.sp.sp011.xzxsy',
type: "input",
fillType: "preFill",
subType: "clickable",
subKey: "subJz",
subFillType: "actFill",
maxlength: 20,
labelWidth: 80,
},
}
}
]
},
tableStepColumns() {
return getSWYPFXFFXYPZBBTableConfig(this,'business_sp_rxjzxy',true);
},
},
data() {
return {
reagentType: "",//12
currentSubKey: "",//key
rowIndex:0,//
resource: [],
sysjColumns: [
{ label: 'template.common.reagentName', prop: "mc" },//
{ label: 'template.common.reagentCode', prop: "bh" },//
{ label: 'template.common.reagentNo', prop: "ph" },//
{ label: 'template.common.concentration', prop: "nd" },//
{ label: 'template.common.source', prop: "source" },//
{ label: 'template.common.reagentExpireDate', prop: "sxrq" },//
],
yqsColumns: [
{ label: 'template.common.instrumentName', prop: "instrumentName" },
{ label: 'template.common.instrumentModel', prop: "instrumentModel" },
{ label: 'template.common.instrumentCode', prop: "instrumentCode" },
{ label: 'template.common.nextTestDate', prop: "nextTestDate" },
],
formData: {}
};
},
mounted() {
},
watch: {
formData: {
immediate: true,
handler(v) {
if(this.fillType === "actFill"){
this.getCode(v);
}
}
}
},
methods: {
//
handleJzClickable(obj){
this.reagentType = 1//
this.currentSubKey = obj.subKey;
this.$refs.selectReagentDialogRef.show()
},
//
onSelectReagentSubmit(code,row){
if(this.reagentType===1){
this.$refs.stepFormPackageRef.updateFormData(this.currentSubKey, code);
}else{
this.$refs.tableRef.updateDataSourceByRowIndex(this.rowIndex,{
[this.currentSubKey]: code,
})
}
this.$refs.selectReagentDialogRef.onCancel()
},
//
handleClickable(col, rowIndex) {
//
this.reagentType = 2
this.rowIndex = rowIndex
this.currentSubKey = col.prop;
console.log("clickable",rowIndex, col)
if(col.prop === "sjry"){
//-
this.$refs.selectReagentDialogRef.show()
}
},
//
async getCode(v){
const {stepTableFormData = []} = v;
if(stepTableFormData && stepTableFormData.length>0 && !stepTableFormData[0].bhCode){
const result = await getLatestSn({
count: stepTableFormData.length,
})
if(result.code == 200){
if(stepTableFormData.length===1){
this.$refs.tableRef.updateDataSourceByRowIndex(0,{
bhCode: result.data,
})
}else{
for(let i=0;i<stepTableFormData.length;i++){
this.$refs.tableRef.updateDataSourceByRowIndex(i,{
bhCode: result.data[i],
})
}
}
}
}
},
//
getFilledFormData(){
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "tableRef","stepRef", "remarkRef"])
},
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "stepFormPackageRef","tableRef" ,"stepRef", "remarkRef"]);
//resource
let tmpResource = []
let tableList = content.stepTableFormData
for(let i=0;i<tableList.length;i++){
//
let item = tableList[i]
tmpResource.push({
mc: null,
bh: item.bh+item.bhCode,
ph: null,
nd: item.hhwznd + content.headerSelectFields.hhwzndUnit,
source: 'ELN配制',
sxrq: null,
ndz: item.hhwznd,
nddw: content.headerSelectFields.hhwzndUnit,
kc: item.sjjzxql+item.sjryxql,//todo -
kcdw: content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --
syl: null,
syldw:content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --,
yxzq:null,
yxzqdw:null,
})
}
//使
this.resource=tmpResource
return content;
},
async onSave() {
const formData = await this.getFilledFormData();
console.log(formData, "formData")
},
//
deleteRow(rowIndex) {
const tableRef = this.$refs['tableRef'];
if (tableRef) {
tableRef.deleteRow(rowIndex);
}
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
</style>

+ 425
- 0
src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/Recovery.vue View File

@ -0,0 +1,425 @@
<!-- 生物样品分析方法学样品制备表-Recovery -->
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.templateMc ||
$t('template.sp.sp009.title') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPcakge fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo"
ref="baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resource" />
<TableList label="template.common.instrumentInfo" :columns="yqsColumns" :dataSource="resource" />
<BaseInfoFormPcakge fieldItemLabel="template.common.storageCondition"
label="template.common.storageCondition" ref="storageConditionRef"
:formConfig="storageFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" />
<div class="template-form-item">
<span>基质</span>
<BaseInfoFormPcakge fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef"
:formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData"
@clickable="handleJzClickable" />
<CustomTable @blur="onHandleTableBlur" :ref="`tableRef`" :columns="tableStepColumns"
:formData="formData" :prefixKey="`table`" @clickable="handleClickable"
fieldItemLabel="template.common.operationSteps">
<template slot="operation" slot-scope="{ row, rowIndex}">
<TableOpertaion :fillType="fillType" :row="row" :rowIndex="rowIndex"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"></TableOpertaion>
</template>
</CustomTable>
</div>
<div class="template-form-item">
<span>溶液</span>
<BaseInfoFormPcakge fieldItemLabel="template.common.operationSteps"
ref="rongyeStepFormPackageRef" :formConfig="rongyeStepFormConfig" @blur="onHandleBlur"
:formData="formData" @clickable="handleRongyeClickable" />
<CustomTable @blur="onHandleTableBlur" :ref="`rongyeTableRef`" :columns="rongyeTableStepColumns"
:formData="formData" :prefixKey="`rongyeTable`" @clickable="handleRongyeTableClickable"
fieldItemLabel="template.common.operationSteps">
<template slot="operation" slot-scope="{ row, rowIndex}">
<TableOpertaion :fillType="fillType" :row="row" :rowIndex="rowIndex"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"></TableOpertaion>
</template>
</CustomTable>
</div>
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPcakge fieldItemLabel="template.common.remark" label="template.common.remark"
ref="remarkRef" :formConfig="remarkConig" :formData="formData" />
</div>
</div>
</div>
<!-- <button @click = "onSave">保存</button> -->
<SelectReagentDialog @submit="onSelectReagentSubmit" ref="selectReagentDialogRef">
</SelectReagentDialog>
</div>
</template>
<script>
import BaseInfoFormPcakge from "@/components/Template/BaseInfoFormPcakge";
import LineLabel from "@/components/Template/LineLabel";
import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step";
import templateMixin from "../../../mixins/templateMixin";
import CustomTable from '@/components/Template/CustomTable.vue';
import { getLatestSn } from '@/api/template';
import { getSWYPFXFFXYPZBBTableConfig, getSWYPFXFFXYPZBBTQHSLTableConfig } from "../../../formConfig/SWYPFXFFXYPZBBTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
import SelectReagentDialog from '../../../dialog/SelectReagentDialog.vue';
export default {
name: "SWYPFXRYPZB",
components: { BaseInfoFormPcakge, LineLabel, TableList, Step, CustomTable, TableOpertaion, SelectReagentDialog },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
storageFormConfig() {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
otherCode: "storageConditionOther",
},
}
}
];
},
remarkConig() {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
baseInfoFormConfig() {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "input",
fillType: "actFill",
maxlength: 50
},
//
clpbg: {
label: 'template.sp.sp009.clpbh',
type: "input",
fillType: "actFill",
maxlength: 50
},
}
},
{
type: "conditionItem",
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: "select",
multiple: true,
fillType: "preFill",
options: this.getDictOptions('business_pztj'),
otherCode: "preOther",
},
act: {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
multiple: true,
options: this.getDictOptions('business_pztj')
}
}
},
{
type: "cellItem",
label: 'template.sp.sp009.rqcz',
config: {
rqcz: {
type: "select",
multiple: true,
fillType: "actFill",
options: this.getDictOptions('business_rqcz'),
otherCode: "rqczOther",
},
}
},
{
type: "cellItem",
label: 'template.sp.sp009.clsj',
config: {
startDate: {
label: 'template.common.startTime',
type: "input",
},
endDate: {
label: 'template.common.endTime',
type: "input",
},
}
}
]
},
stepFormConfig() {
return [
{
type: "step",
config: {
jz: {
label: 'template.sp.sp008.xzjz',
type: "input",
fillType: "preFill",
subType: "clickable",
subKey: "subJz",
subFillType: "actFill",
maxlength: 20,
labelWidth: 80,
},
}
}
]
},
rongyeStepFormConfig() {
return [
{
type: "step",
config: {
gzy: {
label: 'template.sp.sp009.xzgzy',
type: "input",
fillType: "preFill",
subType: "clickable",
subKey: "subGzy",
subFillType: "actFill",
maxlength: 20,
},
}
},
{
type: "step",
config: {
xsy: {
label: 'template.sp.sp009.xzxsy',
type: "input",
fillType: "preFill",
subType: "clickable",
subKey: "subXsy",
subFillType: "actFill",
maxlength: 20,
},
}
},
]
},
tableStepColumns() {
return getSWYPFXFFXYPZBBTableConfig(this, 'business_sp_tqhsl', false);
},
rongyeTableStepColumns() {
return getSWYPFXFFXYPZBBTQHSLTableConfig(this, 'business_sp_tqhsl');
},
},
data() {
return {
reagentType: '',
resource: [],
resourceData1: [],
sysjColumns: [
{ label: 'template.common.reagentName', prop: "mc" },//
{ label: 'template.common.reagentCode', prop: "bh" },//
{ label: 'template.common.reagentNo', prop: "ph" },//
{ label: 'template.common.concentration', prop: "nd" },//
{ label: 'template.common.source', prop: "source" },//
{ label: 'template.common.reagentExpireDate', prop: "sxrq" },//
],
yqsColumns: [
{ label: 'template.common.instrumentName', prop: "instrumentName" },
{ label: 'template.common.instrumentModel', prop: "instrumentModel" },
{ label: 'template.common.instrumentCode', prop: "instrumentCode" },
{ label: 'template.common.nextTestDate', prop: "nextTestDate" },
],
formData: {}
};
},
mounted() {
},
watch: {
formData: {
immediate: true,
handler(v) {
if (!v.targetCodeSn && this.fillType === "actFill") {
this.getCode();
}
}
}
},
methods: {
//
handleJzClickable(obj) {
this.reagentType = 1//
this.currentSubKey = obj.subKey;
this.$refs.selectReagentDialogRef.show()
},
handleRongyeClickable(obj) {
this.reagentType = 2//
this.currentSubKey = obj.subKey;
this.$refs.selectReagentDialogRef.show()
},
//
onSelectReagentSubmit(code, row) {
if (this.reagentType == 1) {
this.$refs.stepFormPackageRef.updateFormData(this.currentSubKey, code);
} else if(this.reagentType == 2){
this.$refs.rongyeStepFormPackageRef.updateFormData(this.currentSubKey, code);
} else if(this.reagentType == 3) {
this.$refs.tableRef.updateDataSourceByRowIndex(this.rowIndex,{
[this.currentSubKey]: code,
})
} else if(this.reagentType == 4) {
this.$refs.rongyeTableRef.updateDataSourceByRowIndex(this.rowIndex,{
[this.currentSubKey]: code,
})
}
this.$refs.selectReagentDialogRef.onCancel()
},
//
handleClickable(col, rowIndex) {
this.reagentType = 3
this.rowIndex = rowIndex
this.currentSubKey = col.prop;
console.log("clickable",rowIndex, col)
if(col.prop === "sjry"){
//-
this.$refs.selectReagentDialogRef.show()
}
},
handleRongyeTableClickable(col, rowIndex) {
this.reagentType = 4
this.rowIndex = rowIndex
this.currentSubKey = col.prop;
console.log("clickable",rowIndex, col)
if(col.prop === "sjry"){
//-
this.$refs.selectReagentDialogRef.show()
}
},
//
async getCode() {
const { stepTableFormData = [] } = v;
if (stepTableFormData && stepTableFormData.length > 0 && !stepTableFormData[0].bhCode) {
const result = await getLatestSn({
count: stepTableFormData.length,
})
if (result.code == 200) {
if (stepTableFormData.length === 0) {
this.$refs.tableRef.updateDataSourceByRowIndex(0, {
[bhCode]: result.data,
})
} else {
for (let i = 0; i < stepTableFormData.length; i++) {
this.$refs.tableRef.updateDataSourceByRowIndex(i, {
bhCode: result.data[i],
})
}
}
}
}
},
//
getFilledFormData() {
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "tableRef", "stepRef", "rongyeTableRef", "rongyeStepFormPackageRef", "remarkRef"])
},
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "tableRef", "stepRef",
"rongyeTableRef", "rongyeStepFormPackageRef", "remarkRef"]);
console.log(content)
//resource
let tmpResource = []
debugger
//
tmpResource.push({
mc: content.targetName,
bh: content.targetCode + content.targetCodeSn,
ph: '',
nd: content.targetActConcentration + content.targetActConcentrationUnit,
source: 'ELN配制',
sxrq: content.expireDate,
ndz: content.targetActConcentration,
nddw: content.targetActConcentrationUnit,
kc: content.targetActVolume,
kcdw: content.targetActVolumeUnit,
syl: null,
syldw: content.targetActVolumeUnit,
yxzq: content.effectivePeriod,
yxzqdw: content.effectivePeriodUnit,
})
//使
this.resource = tmpResource
return content;
},
async onSave() {
const formData = await this.getFilledFormData();
console.log(formData, "formData")
},
//
deleteRow(rowIndex) {
const tableRef = this.$refs['tableRef'];
if (tableRef) {
tableRef.deleteRow(rowIndex);
}
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
</style>

+ 374
- 0
src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/XSKKX.vue View File

@ -0,0 +1,374 @@
<!-- 生物样品分析方法学样品制备表(Dilution Integrity)- 生物样品分析方法学样品制备表稀释可靠性-->
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
$t('template.sp.sp016.title') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPcakge fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo" ref="baseInfoRef"
:formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns"
:dataSource="resource" />
<TableList label="template.common.instrumentInfo" :columns="yqsColumns"
:dataSource="resource" />
<BaseInfoFormPcakge fieldItemLabel="template.common.storageCondition" label="template.common.storageCondition" ref="storageConditionRef"
:formConfig="storageFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" />
<div class="template-form-item">
<BaseInfoFormPcakge fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef" :formConfig="stepFormConfig"
:formData="formData" @clickable="handleJzClickable" />
<CustomTable
@blur="onHandleTableBlur"
:ref="`tableRef`"
:columns="tableStepColumns"
:formData="formData"
:prefixKey = "`table`"
@clickable="handleClickable"
fieldItemLabel = "template.common.operationSteps"
>
<template slot="operation" slot-scope="{ row, rowIndex}">
<TableOpertaion
:fillType="fillType"
:row="row"
:rowIndex="rowIndex"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"
></TableOpertaion>
</template>
</CustomTable>
</div>
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPcakge fieldItemLabel="template.common.remark" label="template.common.remark" ref="remarkRef" :formConfig="remarkConig"
:formData="formData" />
</div>
</div>
</div>
<!-- <button @click = "onSave">保存</button> -->
<SelectReagentDialog
@submit="onSelectReagentSubmit"
ref="selectReagentDialogRef" >
</SelectReagentDialog>
</div>
</template>
<script>
import BaseInfoFormPcakge from "@/components/Template/BaseInfoFormPcakge";
import LineLabel from "@/components/Template/LineLabel";
import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step";
import templateMixin from "../../../mixins/templateMixin";
import CustomTable from '@/components/Template/CustomTable.vue';
import { getLatestSn } from '@/api/template';
import {getSWYPFXFFXYPZBBTableConfig} from "../../../formConfig/SWYPFXFFXYPZBBTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
import SelectReagentDialog from '../../../dialog/SelectReagentDialog.vue';
export default {
name: "XSKKX",
components: { BaseInfoFormPcakge, LineLabel, TableList, Step, CustomTable,TableOpertaion,SelectReagentDialog },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
storageFormConfig() {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
otherCode: "storageConditionOther",
},
}
}
];
},
remarkConig() {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
baseInfoFormConfig() {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "input",
fillType: "actFill",
maxlength: 50
},
//
clpbg: {
label: 'template.sp.sp008.clpbh',
type: "input",
fillType: "actFill",
maxlength: 50
},
}
},
{
type: "conditionItem",
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: "select",
multiple: true,
fillType: "preFill",
options: this.getDictOptions('business_pztj'),
otherCode: "preOther",
},
act: {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
multiple: true,
options: this.getDictOptions('business_pztj')
}
}
},
{
type: "cellItem",
label: 'template.sp.sp008.rqcz',
config: {
rqcz: {
type: "select",
multiple: true,
fillType: "actFill",
options: this.getDictOptions('business_rqcz'),
otherCode: "rqczOther",
},
}
},
{
type: "cellItem",
label: 'template.sp.sp008.clsj',
config: {
startDate: {
label: 'template.common.startTime',
type: "input",
},
endDate: {
label: 'template.common.endTime',
type: "input",
},
}
}
]
},
stepFormConfig() {
return [
{
type: "step",
config: {
jz: {
label: 'template.sp.sp008.xzjz',
type: "input",
fillType: "preFill",
subType: "clickable",
subKey: "subJz",
subFillType: "actFill",
maxlength: 20,
labelWidth: 80,
},
}
}
]
},
tableStepColumns() {
return getSWYPFXFFXYPZBBTableConfig(this,'business_sp_xskkx');
},
},
data() {
return {
reagentType: "",//12
currentSubKey: "",//key
rowIndex:0,//
resource: [],
sysjColumns: [
{ label: 'template.common.reagentName', prop: "mc" },//
{ label: 'template.common.reagentCode', prop: "bh" },//
{ label: 'template.common.reagentNo', prop: "ph" },//
{ label: 'template.common.concentration', prop: "nd" },//
{ label: 'template.common.source', prop: "source" },//
{ label: 'template.common.reagentExpireDate', prop: "sxrq" },//
],
yqsColumns: [
{ label: 'template.common.instrumentName', prop: "instrumentName" },
{ label: 'template.common.instrumentModel', prop: "instrumentModel" },
{ label: 'template.common.instrumentCode', prop: "instrumentCode" },
{ label: 'template.common.nextTestDate', prop: "nextTestDate" },
],
formData: {}
};
},
mounted() {
},
watch: {
formData: {
immediate: true,
handler(v) {
if(this.fillType === "actFill"){
this.getCode(v);
}
}
}
},
methods: {
//
handleJzClickable(obj){
this.reagentType = 1//
this.currentSubKey = obj.subKey;
this.$refs.selectReagentDialogRef.show()
},
//
onSelectReagentSubmit(code,row){
if(this.reagentType===1){
this.$refs.stepFormPackageRef.updateFormData(this.currentSubKey, code);
}else{
this.$refs.tableRef.updateDataSourceByRowIndex(this.rowIndex,{
[this.currentSubKey]: code,
})
}
this.$refs.selectReagentDialogRef.onCancel()
},
//
handleClickable(col, rowIndex) {
//
this.reagentType = 2
this.rowIndex = rowIndex
this.currentSubKey = col.prop;
console.log("clickable",rowIndex, col)
if(col.prop === "sjry"){
//-
this.$refs.selectReagentDialogRef.show()
}
},
//
async getCode(v){
const {stepTableFormData = []} = v;
if(stepTableFormData && stepTableFormData.length>0 && !stepTableFormData[0].bhCode){
const result = await getLatestSn({
count: stepTableFormData.length,
})
if(result.code == 200){
if(stepTableFormData.length===1){
this.$refs.tableRef.updateDataSourceByRowIndex(0,{
bhCode: result.data,
})
}else{
for(let i=0;i<stepTableFormData.length;i++){
this.$refs.tableRef.updateDataSourceByRowIndex(i,{
bhCode: result.data[i],
})
}
}
}
}
},
//
getFilledFormData(){
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "tableRef","stepRef", "remarkRef"])
},
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "stepFormPackageRef","tableRef" ,"stepRef", "remarkRef"]);
//resource
let tmpResource = []
let tableList = content.stepTableFormData
for(let i=0;i<tableList.length;i++){
//
let item = tableList[i]
tmpResource.push({
mc: null,
bh: item.bh+item.bhCode,
ph: null,
nd: item.hhwznd + content.headerSelectFields.hhwzndUnit,
source: 'ELN配制',
sxrq: null,
ndz: item.hhwznd,
nddw: content.headerSelectFields.hhwzndUnit,
kc: item.sjjzxql+item.sjryxql,//todo -
kcdw: content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --
syl: null,
syldw:content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --,
yxzq:null,
yxzqdw:null,
})
}
//使
this.resource=tmpResource
return content;
},
async onSave() {
const formData = await this.getFilledFormData();
console.log(formData, "formData")
},
//
deleteRow(rowIndex) {
const tableRef = this.$refs['tableRef'];
if (tableRef) {
tableRef.deleteRow(rowIndex);
}
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
</style>

+ 374
- 0
src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/XZXHTYX.vue View File

@ -0,0 +1,374 @@
<!-- 生物样品分析方法学样品制备表-储备液和工作液稳定性 Solution Stability -->
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
$t('template.sp.sp014.title') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPcakge fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo" ref="baseInfoRef"
:formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns"
:dataSource="resource" />
<TableList label="template.common.instrumentInfo" :columns="yqsColumns"
:dataSource="resource" />
<BaseInfoFormPcakge fieldItemLabel="template.common.storageCondition" label="template.common.storageCondition" ref="storageConditionRef"
:formConfig="storageFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" />
<div class="template-form-item">
<BaseInfoFormPcakge fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef" :formConfig="stepFormConfig"
:formData="formData" @clickable="handleJzClickable" />
<CustomTable
@blur="onHandleTableBlur"
:ref="`tableRef`"
:columns="tableStepColumns"
:formData="formData"
:prefixKey = "`table`"
@clickable="handleClickable"
fieldItemLabel = "template.common.operationSteps"
>
<template slot="operation" slot-scope="{ row, rowIndex}">
<TableOpertaion
:fillType="fillType"
:row="row"
:rowIndex="rowIndex"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"
></TableOpertaion>
</template>
</CustomTable>
</div>
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPcakge fieldItemLabel="template.common.remark" label="template.common.remark" ref="remarkRef" :formConfig="remarkConig"
:formData="formData" />
</div>
</div>
</div>
<!-- <button @click = "onSave">保存</button> -->
<SelectReagentDialog
@submit="onSelectReagentSubmit"
ref="selectReagentDialogRef" >
</SelectReagentDialog>
</div>
</template>
<script>
import BaseInfoFormPcakge from "@/components/Template/BaseInfoFormPcakge";
import LineLabel from "@/components/Template/LineLabel";
import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step";
import templateMixin from "../../../mixins/templateMixin";
import CustomTable from '@/components/Template/CustomTable.vue';
import { getLatestSn } from '@/api/template';
import {getSWYPFXFFXYPZBBTableConfig} from "../../../formConfig/SWYPFXFFXYPZBBTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
import SelectReagentDialog from '../../../dialog/SelectReagentDialog.vue';
export default {
name: "XZXHTYX",
components: { BaseInfoFormPcakge, LineLabel, TableList, Step, CustomTable,TableOpertaion,SelectReagentDialog },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
storageFormConfig() {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
otherCode: "storageConditionOther",
},
}
}
];
},
remarkConig() {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
baseInfoFormConfig() {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "input",
fillType: "actFill",
maxlength: 50
},
//
clpbg: {
label: 'template.sp.sp008.clpbh',
type: "input",
fillType: "actFill",
maxlength: 50
},
}
},
{
type: "conditionItem",
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: "select",
multiple: true,
fillType: "preFill",
options: this.getDictOptions('business_pztj'),
otherCode: "preOther",
},
act: {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
multiple: true,
options: this.getDictOptions('business_pztj')
}
}
},
{
type: "cellItem",
label: 'template.sp.sp008.rqcz',
config: {
rqcz: {
type: "select",
multiple: true,
fillType: "actFill",
options: this.getDictOptions('business_rqcz'),
otherCode: "rqczOther",
},
}
},
{
type: "cellItem",
label: 'template.sp.sp008.clsj',
config: {
startDate: {
label: 'template.common.startTime',
type: "input",
},
endDate: {
label: 'template.common.endTime',
type: "input",
},
}
}
]
},
stepFormConfig() {
return [
{
type: "step",
config: {
jz: {
label: 'template.sp.sp011.xzxsy',
type: "input",
fillType: "preFill",
subType: "clickable",
subKey: "subJz",
subFillType: "actFill",
maxlength: 20,
labelWidth: 80,
},
}
}
]
},
tableStepColumns() {
return getSWYPFXFFXYPZBBTableConfig(this,'business_sp_xzxytyx',true);
},
},
data() {
return {
reagentType: "",//12
currentSubKey: "",//key
rowIndex:0,//
resource: [],
sysjColumns: [
{ label: 'template.common.reagentName', prop: "mc" },//
{ label: 'template.common.reagentCode', prop: "bh" },//
{ label: 'template.common.reagentNo', prop: "ph" },//
{ label: 'template.common.concentration', prop: "nd" },//
{ label: 'template.common.source', prop: "source" },//
{ label: 'template.common.reagentExpireDate', prop: "sxrq" },//
],
yqsColumns: [
{ label: 'template.common.instrumentName', prop: "instrumentName" },
{ label: 'template.common.instrumentModel', prop: "instrumentModel" },
{ label: 'template.common.instrumentCode', prop: "instrumentCode" },
{ label: 'template.common.nextTestDate', prop: "nextTestDate" },
],
formData: {}
};
},
mounted() {
},
watch: {
formData: {
immediate: true,
handler(v) {
if(this.fillType === "actFill"){
this.getCode(v);
}
}
}
},
methods: {
//
handleJzClickable(obj){
this.reagentType = 1//
this.currentSubKey = obj.subKey;
this.$refs.selectReagentDialogRef.show()
},
//
onSelectReagentSubmit(code,row){
if(this.reagentType===1){
this.$refs.stepFormPackageRef.updateFormData(this.currentSubKey, code);
}else{
this.$refs.tableRef.updateDataSourceByRowIndex(this.rowIndex,{
[this.currentSubKey]: code,
})
}
this.$refs.selectReagentDialogRef.onCancel()
},
//
handleClickable(col, rowIndex) {
//
this.reagentType = 2
this.rowIndex = rowIndex
this.currentSubKey = col.prop;
console.log("clickable",rowIndex, col)
if(col.prop === "sjry"){
//-
this.$refs.selectReagentDialogRef.show()
}
},
//
async getCode(v){
const {stepTableFormData = []} = v;
if(stepTableFormData && stepTableFormData.length>0 && !stepTableFormData[0].bhCode){
const result = await getLatestSn({
count: stepTableFormData.length,
})
if(result.code == 200){
if(stepTableFormData.length===1){
this.$refs.tableRef.updateDataSourceByRowIndex(0,{
bhCode: result.data,
})
}else{
for(let i=0;i<stepTableFormData.length;i++){
this.$refs.tableRef.updateDataSourceByRowIndex(i,{
bhCode: result.data[i],
})
}
}
}
}
},
//
getFilledFormData(){
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "tableRef","stepRef", "remarkRef"])
},
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "stepFormPackageRef","tableRef" ,"stepRef", "remarkRef"]);
//resource
let tmpResource = []
let tableList = content.stepTableFormData
for(let i=0;i<tableList.length;i++){
//
let item = tableList[i]
tmpResource.push({
mc: null,
bh: item.bh+item.bhCode,
ph: null,
nd: item.hhwznd + content.headerSelectFields.hhwzndUnit,
source: 'ELN配制',
sxrq: null,
ndz: item.hhwznd,
nddw: content.headerSelectFields.hhwzndUnit,
kc: item.sjjzxql+item.sjryxql,//todo -
kcdw: content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --
syl: null,
syldw:content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --,
yxzq:null,
yxzqdw:null,
})
}
//使
this.resource=tmpResource
return content;
},
async onSave() {
const formData = await this.getFilledFormData();
console.log(formData, "formData")
},
//
deleteRow(rowIndex) {
const tableRef = this.$refs['tableRef'];
if (tableRef) {
tableRef.deleteRow(rowIndex);
}
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
</style>

+ 374
- 0
src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/ZDYBS.vue View File

@ -0,0 +1,374 @@
<!-- 生物样品分析方法学样品制备表-最大样本数-生物样品分析方法学样品制备表(Sample Size) -->
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
$t('template.sp.sp015.title') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPcakge fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo" ref="baseInfoRef"
:formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns"
:dataSource="resource" />
<TableList label="template.common.instrumentInfo" :columns="yqsColumns"
:dataSource="resource" />
<BaseInfoFormPcakge fieldItemLabel="template.common.storageCondition" label="template.common.storageCondition" ref="storageConditionRef"
:formConfig="storageFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" />
<div class="template-form-item">
<BaseInfoFormPcakge fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef" :formConfig="stepFormConfig"
:formData="formData" @clickable="handleJzClickable" />
<CustomTable
@blur="onHandleTableBlur"
:ref="`tableRef`"
:columns="tableStepColumns"
:formData="formData"
:prefixKey = "`table`"
@clickable="handleClickable"
fieldItemLabel = "template.common.operationSteps"
>
<template slot="operation" slot-scope="{ row, rowIndex}">
<TableOpertaion
:fillType="fillType"
:row="row"
:rowIndex="rowIndex"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"
></TableOpertaion>
</template>
</CustomTable>
</div>
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPcakge fieldItemLabel="template.common.remark" label="template.common.remark" ref="remarkRef" :formConfig="remarkConig"
:formData="formData" />
</div>
</div>
</div>
<!-- <button @click = "onSave">保存</button> -->
<SelectReagentDialog
@submit="onSelectReagentSubmit"
ref="selectReagentDialogRef" >
</SelectReagentDialog>
</div>
</template>
<script>
import BaseInfoFormPcakge from "@/components/Template/BaseInfoFormPcakge";
import LineLabel from "@/components/Template/LineLabel";
import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step";
import templateMixin from "../../../mixins/templateMixin";
import CustomTable from '@/components/Template/CustomTable.vue';
import { getLatestSn } from '@/api/template';
import {getSWYPFXFFXYPZBBTableConfig} from "../../../formConfig/SWYPFXFFXYPZBBTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
import SelectReagentDialog from '../../../dialog/SelectReagentDialog.vue';
export default {
name: "ZDYBS",
components: { BaseInfoFormPcakge, LineLabel, TableList, Step, CustomTable,TableOpertaion,SelectReagentDialog },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
storageFormConfig() {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
otherCode: "storageConditionOther",
},
}
}
];
},
remarkConig() {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
baseInfoFormConfig() {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "input",
fillType: "actFill",
maxlength: 50
},
//
clpbg: {
label: 'template.sp.sp008.clpbh',
type: "input",
fillType: "actFill",
maxlength: 50
},
}
},
{
type: "conditionItem",
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: "select",
multiple: true,
fillType: "preFill",
options: this.getDictOptions('business_pztj'),
otherCode: "preOther",
},
act: {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
multiple: true,
options: this.getDictOptions('business_pztj')
}
}
},
{
type: "cellItem",
label: 'template.sp.sp008.rqcz',
config: {
rqcz: {
type: "select",
multiple: true,
fillType: "actFill",
options: this.getDictOptions('business_rqcz'),
otherCode: "rqczOther",
},
}
},
{
type: "cellItem",
label: 'template.sp.sp008.clsj',
config: {
startDate: {
label: 'template.common.startTime',
type: "input",
},
endDate: {
label: 'template.common.endTime',
type: "input",
},
}
}
]
},
stepFormConfig() {
return [
{
type: "step",
config: {
jz: {
label: 'template.sp.sp008.xzjz',
type: "input",
fillType: "preFill",
subType: "clickable",
subKey: "subJz",
subFillType: "actFill",
maxlength: 20,
labelWidth: 80,
},
}
}
]
},
tableStepColumns() {
return getSWYPFXFFXYPZBBTableConfig(this,'business_sp_zdybs');
},
},
data() {
return {
reagentType: "",//12
currentSubKey: "",//key
rowIndex:0,//
resource: [],
sysjColumns: [
{ label: 'template.common.reagentName', prop: "mc" },//
{ label: 'template.common.reagentCode', prop: "bh" },//
{ label: 'template.common.reagentNo', prop: "ph" },//
{ label: 'template.common.concentration', prop: "nd" },//
{ label: 'template.common.source', prop: "source" },//
{ label: 'template.common.reagentExpireDate', prop: "sxrq" },//
],
yqsColumns: [
{ label: 'template.common.instrumentName', prop: "instrumentName" },
{ label: 'template.common.instrumentModel', prop: "instrumentModel" },
{ label: 'template.common.instrumentCode', prop: "instrumentCode" },
{ label: 'template.common.nextTestDate', prop: "nextTestDate" },
],
formData: {}
};
},
mounted() {
},
watch: {
formData: {
immediate: true,
handler(v) {
if(this.fillType === "actFill"){
this.getCode(v);
}
}
}
},
methods: {
//
handleJzClickable(obj){
this.reagentType = 1//
this.currentSubKey = obj.subKey;
this.$refs.selectReagentDialogRef.show()
},
//
onSelectReagentSubmit(code,row){
if(this.reagentType===1){
this.$refs.stepFormPackageRef.updateFormData(this.currentSubKey, code);
}else{
this.$refs.tableRef.updateDataSourceByRowIndex(this.rowIndex,{
[this.currentSubKey]: code,
})
}
this.$refs.selectReagentDialogRef.onCancel()
},
//
handleClickable(col, rowIndex) {
//
this.reagentType = 2
this.rowIndex = rowIndex
this.currentSubKey = col.prop;
console.log("clickable",rowIndex, col)
if(col.prop === "sjry"){
//-
this.$refs.selectReagentDialogRef.show()
}
},
//
async getCode(v){
const {stepTableFormData = []} = v;
if(stepTableFormData && stepTableFormData.length>0 && !stepTableFormData[0].bhCode){
const result = await getLatestSn({
count: stepTableFormData.length,
})
if(result.code == 200){
if(stepTableFormData.length===1){
this.$refs.tableRef.updateDataSourceByRowIndex(0,{
bhCode: result.data,
})
}else{
for(let i=0;i<stepTableFormData.length;i++){
this.$refs.tableRef.updateDataSourceByRowIndex(i,{
bhCode: result.data[i],
})
}
}
}
}
},
//
getFilledFormData(){
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "tableRef","stepRef", "remarkRef"])
},
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "stepFormPackageRef","tableRef" ,"stepRef", "remarkRef"]);
//resource
let tmpResource = []
let tableList = content.stepTableFormData
for(let i=0;i<tableList.length;i++){
//
let item = tableList[i]
tmpResource.push({
mc: null,
bh: item.bh+item.bhCode,
ph: null,
nd: item.hhwznd + content.headerSelectFields.hhwzndUnit,
source: 'ELN配制',
sxrq: null,
ndz: item.hhwznd,
nddw: content.headerSelectFields.hhwzndUnit,
kc: item.sjjzxql+item.sjryxql,//todo -
kcdw: content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --
syl: null,
syldw:content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --,
yxzq:null,
yxzqdw:null,
})
}
//使
this.resource=tmpResource
return content;
},
async onSave() {
const formData = await this.getFilledFormData();
console.log(formData, "formData")
},
//
deleteRow(rowIndex) {
const tableRef = this.$refs['tableRef'];
if (tableRef) {
tableRef.deleteRow(rowIndex);
}
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
</style>

+ 53
- 104
src/views/business/comps/template/comps/sp/SWYPFXFFXYPZBB/ZQDYJMD.vue View File

@ -3,7 +3,7 @@
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.templateMc ||
$t('template.sp.sp008.title') }}<img src="@/assets/images/detail-title.png" /></div>
'生物样品分析方法学样品制备表-准确度与精密度' }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPcakge fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo" ref="baseInfoRef"
@ -16,22 +16,22 @@
:formConfig="storageFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" />
<div class="template-form-item">
<BaseInfoFormPcakge fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef" :formConfig="stepFormConfig"
:formData="formData" @clickable="handleJzClickable" />
<BaseInfoFormPcakge fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef" :formConfig="stepFormConfig" @blur="onHandleBlur"
:formData="formData" />
<CustomTable
@blur="onHandleTableBlur"
:ref="`tableRef`"
:columns="tableStepColumns"
<CustomTable
@blur="onHandleTableBlur"
:ref="`tableRef`"
:columns="tableStepColumns"
:formData="formData"
:prefixKey = "`table`"
@clickable="handleClickable"
fieldItemLabel = "template.common.operationSteps"
fieldItemLabel = "这个是什么"
>
<template slot="operation" slot-scope="{ row, rowIndex}">
<TableOpertaion
:fillType="fillType"
:row="row"
<TableOpertaion
:fillType="fillType"
:row="row"
:rowIndex="rowIndex"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"
></TableOpertaion>
@ -46,11 +46,6 @@
</div>
</div>
<!-- <button @click = "onSave">保存</button> -->
<SelectReagentDialog
@submit="onSelectReagentSubmit"
ref="selectReagentDialogRef" >
</SelectReagentDialog>
</div>
</template>
@ -64,11 +59,10 @@ import CustomTable from '@/components/Template/CustomTable.vue';
import { getLatestSn } from '@/api/template';
import {getSWYPFXFFXYPZBBTableConfig} from "../../../formConfig/SWYPFXFFXYPZBBTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
import SelectReagentDialog from '../../../dialog/SelectReagentDialog.vue';
export default {
name: "SWYPFXRYPZB",
components: { BaseInfoFormPcakge, LineLabel, TableList, Step, CustomTable,TableOpertaion,SelectReagentDialog },
components: { BaseInfoFormPcakge, LineLabel, TableList, Step, CustomTable,TableOpertaion },
mixins: [templateMixin],
props: {
fillType: {
@ -112,7 +106,7 @@ export default {
}
]
},
baseInfoFormConfig() {
return [
{
@ -142,7 +136,7 @@ export default {
},
//
clpbg: {
label: 'template.sp.sp008.clpbh',
label: 'template.common.clpbh',
type: "input",
fillType: "actFill",
maxlength: 50
@ -174,20 +168,18 @@ export default {
},
{
type: "cellItem",
label: 'template.sp.sp008.rqcz',
label: 'template.common.rqcz',
config: {
rqcz: {
type: "select",
multiple: true,
type: "input",
fillType: "actFill",
options: this.getDictOptions('business_rqcz'),
otherCode: "rqczOther",
maxlength: 50
},
}
},
{
type: "cellItem",
label: 'template.sp.sp008.clsj',
label: 'template.common.clsj',
config: {
startDate: {
label: 'template.common.startTime',
@ -207,14 +199,13 @@ export default {
type: "step",
config: {
jz: {
label: 'template.sp.sp008.xzjz',
label: 'template.common.xzjz',
type: "input",
fillType: "preFill",
subType: "clickable",
subKey: "subJz",
subKey: "subSolution",
subFillType: "actFill",
maxlength: 20,
labelWidth: 80,
},
}
}
@ -226,18 +217,14 @@ export default {
},
data() {
return {
reagentType: "",//12
currentSubKey: "",//key
rowIndex:0,//
resource: [],
resourceData1: [],
sysjColumns: [
{ label: 'template.common.reagentName', prop: "mc" },//
{ label: 'template.common.reagentCode', prop: "bh" },//
{ label: 'template.common.reagentNo', prop: "ph" },//
{ label: 'template.common.concentration', prop: "nd" },//
{ label: 'template.common.source', prop: "source" },//
{ label: 'template.common.source', prop: "source" },//
{ label: 'template.common.reagentExpireDate', prop: "sxrq" },//
],
yqsColumns: [
@ -256,63 +243,30 @@ export default {
formData: {
immediate: true,
handler(v) {
if(this.fillType === "actFill"){
this.getCode(v);
if(!v.targetCodeSn && this.fillType === "actFill"){
this.getCode();
}
}
}
},
methods: {
//
handleJzClickable(obj){
this.reagentType = 1//
this.currentSubKey = obj.subKey;
this.$refs.selectReagentDialogRef.show()
},
//
onSelectReagentSubmit(code,row){
if(this.reagentType===1){
this.$refs.stepFormPackageRef.updateFormData(this.currentSubKey, code);
}else{
this.$refs.tableRef.updateDataSourceByRowIndex(this.rowIndex,{
[this.currentSubKey]: code,
})
}
this.$refs.selectReagentDialogRef.onCancel()
},
//
handleClickable(col, rowIndex) {
//
this.reagentType = 2
this.rowIndex = rowIndex
this.currentSubKey = col.prop;
console.log("clickable",rowIndex, col)
if(col.prop === "sjry"){
//-
this.$refs.selectReagentDialogRef.show()
//
}
this.$refs.tableRef.updateDataSourceByRowIndex(rowIndex,{
sjry: "我是填充进来的数据",
})
},
//
async getCode(v){
const {stepTableFormData = []} = v;
if(stepTableFormData && stepTableFormData.length>0 && !stepTableFormData[0].bhCode){
const result = await getLatestSn({
count: stepTableFormData.length,
})
if(result.code == 200){
if(stepTableFormData.length===0){
this.$refs.tableRef.updateDataSourceByRowIndex(0,{
[bhCode]: result.data,
})
}else{
for(let i=0;i<stepTableFormData.length;i++){
this.$refs.tableRef.updateDataSourceByRowIndex(i,{
bhCode: result.data[i],
})
}
}
}
async getCode(){
const result = await getLatestSn({
count: 1,
})
if(result.code == 200){
this.$refs.stepFormPackageRef.updateFormData("targetCodeSn",result.data)
}
},
//
@ -323,31 +277,27 @@ export default {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "stepFormPackageRef","tableRef" ,"stepRef", "remarkRef"]);
//resource
let tmpResource = []
let tableList = content.stepTableFormData
for(let i=0;i<tableList.length;i++){
//
let item = tableList[i]
tmpResource.push({
mc: null,
bh: item.bh+item.bhCode,
ph: null,
nd: item.hhwznd + content.headerSelectFields.hhwzndUnit,
source: 'ELN配制',
sxrq: null,
ndz: item.hhwznd,
nddw: content.headerSelectFields.hhwzndUnit,
kc: item.sjjzxql+item.sjryxql,//todo -
kcdw: content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --
syl: null,
syldw:content.headerSelectFields.sjryxqlUnit || content.headerSelectFields.sjjzxqlUnit,//todo --,
yxzq:null,
yxzqdw:null,
})
}
debugger
//
tmpResource.push({
mc: content.targetName,
bh: content.targetCode+content.targetCodeSn,
ph: '',
nd: content.targetActConcentration + content.targetActConcentrationUnit,
source: 'ELN配制',
sxrq: content.expireDate,
ndz: content.targetActConcentration,
nddw: content.targetActConcentrationUnit,
kc: content.targetActVolume,
kcdw: content.targetActVolumeUnit,
syl: null,
syldw:content.targetActVolumeUnit,
yxzq:content.effectivePeriod,
yxzqdw:content.effectivePeriodUnit,
})
//使
this.resource=tmpResource
return content;
},
async onSave() {
@ -362,7 +312,6 @@ export default {
tableRef.deleteRow(rowIndex);
}
},
}
};

+ 1
- 1
src/views/business/comps/template/comps/sp/SWYPFXRYPZB.vue View File

@ -2,7 +2,7 @@
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.templateMc ||
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
$t('template.common.pageTitle') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">

+ 27
- 22
src/views/business/comps/template/dialog/SelectReagentDialog.vue View File

@ -2,20 +2,13 @@
<el-dialog :title="$t(title)" @close="onCancel" :visible.sync="visible" append-to-body width="80%">
<!-- 麻醉/精神药品配制/领取申请单 -->
<div v-if="type === 'MJYLQSQD'" class="header-row">
<el-radio-group v-model="radio">
<el-radio-group v-model="radio" @input="changeRadio">
<el-radio :label="1">试验</el-radio>
<el-radio :label="2">
部门
</el-radio>
</el-radio-group>
<el-select v-model="depart" filterable :placeholder="$t('form.placeholderSelect')">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<select-dept v-if="radio==2" v-model="depart" style="width:200px;margin-left:10px" />
</div>
<SelectTable v-if = "isShowTable" ref="selectSjRef" :columns="columns"
@ -33,11 +26,13 @@
<script>
import SelectTable from '@/components/Template/SelectTable.vue';
import { public_sjList } from '@/api/business/public/public';
import SelectDept from "@/views/business/comps/select/SelectDept";
import { public_sjList,public_bzList } from '@/api/business/public/public';
export default {
components: {
SelectTable,
SelectDept
},
props: {
type: {
@ -108,17 +103,9 @@ export default {
selectedId: "",
currentRow: {},
radio:1,
bzList:[],
depart:"",
options:[
{
value:1,
label:"部门1",
},
{
value:2,
label:"部门",
},
]
}
},
computed: {
@ -143,6 +130,14 @@ export default {
show(){
this.visible = true
this.showTableData()
if(this.type === 'MJYLQSQD'){
this.getBzList()
}
},
getBzList(){
public_bzList(this.searchForm).then(response => {
this.bzList = response.data
});
},
showTableData(){
if(this.$refs.selectSjRef){
@ -163,8 +158,13 @@ export default {
if(this.radio === 1) {
row = row;
}else{
const o = this.options.find(item => item.value === this.depart);
row = {syNo:o.label,SD:o.value};
const o = this.bzList.find(item => item.deptId == this.depart);
if(o){
row = o;
}else{
this.$message.error(`该部门没有设置部长!`)
return
}
}
}
this.$emit('submit', this.selectedId,row);
@ -173,6 +173,11 @@ export default {
this.selectedId = code;
this.currentRow = row;
},
changeRadio(val){
if(val==1){
this.showTableData()
}
}
}
}
</script>

+ 146
- 11
src/views/business/comps/template/formConfig/SWYPFXFFXYPZBBTableConfig.js View File

@ -1,11 +1,20 @@
// 生物样品分析方法学样品制备表-表格配置
export const getSWYPFXFFXYPZBBTableConfig = ($this) => {
return [
// selectKey:编号选择的数据源key
// isXsy是否时稀释液:稀释液的名称不一样
// showKbjz 是否显示空白机制的列:生物样品分析方法学样品制备表(Matrix effect)-生物样品分析方法学样品制备表(基质效应)
export const getSWYPFXFFXYPZBBTableConfig = (
$this,
selectKey,
isXsy,
showKbjz
) => {
let arr = [
{
label: 'template.sp.sp008.bh',
prop: 'bh',
bodyType: 'select',
bodyOptions: $this.getDictOptions('business_sp_jmdyzqdyp'),
bodyOptions: $this.getDictOptions(selectKey),
otherCode: 'bhOther',
bodySubType: 'span',
bodySubKey: 'bhCode',
bodyFillType: 'preFill',
@ -28,7 +37,7 @@ export const getSWYPFXFFXYPZBBTableConfig = ($this) => {
{
label: 'template.sp.sp008.yjryxql',
prop: 'yjryxql',
width: 280,
width: 320,
headerSelectKey: 'yjryxqlUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
@ -39,19 +48,20 @@ export const getSWYPFXFFXYPZBBTableConfig = ($this) => {
{
label: 'template.sp.sp008.sjryxql',
prop: 'sjryxql',
width: 280,
width: 300,
headerSelectKey: 'sjryxqlUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
compareTo: 'yjryxql'
bodyCompareTo: 'yjryxql',
copyFrom: 'yjryxql'
},
{
label: 'template.sp.sp008.yjjzxql',
label: isXsy ? 'template.sp.sp011.yjxsyxql' : 'template.sp.sp008.yjjzxql',
prop: 'yjjzxql',
width: 280,
width: isXsy ? 350 : 280,
headerSelectKey: 'yjjzxqlUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
@ -60,16 +70,140 @@ export const getSWYPFXFFXYPZBBTableConfig = ($this) => {
bodyMaxlength: 10
},
{
label: 'template.sp.sp008.sjjzxql',
label: isXsy ? 'template.sp.sp011.sjxsyxql' : 'template.sp.sp008.sjjzxql',
prop: 'sjjzxql',
width: 280,
width: isXsy ? 350 : 280,
headerSelectKey: 'sjjzxqlUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
compareTo: 'yjjzxql'
bodyCompareTo: 'yjjzxql',
copyFrom: 'yjjzxql'
},
{
label: 'template.sp.sp008.hhwznd',
prop: 'hhwznd',
width: 280,
headerSelectKey: 'hhwzndUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_nddw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10
}
]
if (showKbjz) {
arr.splice(5, 0, {
label: 'template.sp.sp013.kbjzbh',
prop: 'kbjzbh',
bodyType: 'clickable',
bodyFillType: 'actFill',
width: 280
})
}
return arr
}
// 提取回收率-溶液稀释
export const getSWYPFXFFXYPZBBTQHSLTableConfig = ($this, selectKey) => {
let arr = [
{
label: 'template.sp.sp008.bh',
prop: 'bh',
bodyType: 'select',
bodyOptions: $this.getDictOptions(selectKey),
bodySubType: 'span',
bodySubKey: 'bhCode',
bodyFillType: 'preFill',
width: 280
},
{
label: 'template.sp.sp008.ysry',
prop: 'ysry',
bodyType: 'input',
bodyFillType: 'preFill',
width: 280
},
{
label: 'template.sp.sp008.sjry',
prop: 'sjry',
bodyType: 'clickable',
bodyFillType: 'actFill',
width: 280
},
{
label: 'template.sp.sp008.yjryxql',
prop: 'yjryxql',
width: 320,
headerSelectKey: 'yjryxqlUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10
},
{
label: 'template.sp.sp008.sjryxql',
prop: 'sjryxql',
width: 300,
headerSelectKey: 'sjryxqlUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
bodyCompareTo: 'yjryxql',
copyFrom: 'yjryxql'
},
{
label: 'template.sp.sp009.yjgzyxql',
prop: 'yjgzyxql',
width: 350,
headerSelectKey: 'yjgzyxqlUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10
},
{
label: 'template.sp.sp009.sjgzyxql',
prop: 'sjgzyxql',
width: 350,
headerSelectKey: 'sjgzyxqlUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
bodyCompareTo: 'yjjzxql',
copyFrom: 'yjjzxql'
},
{
label: 'template.sp.sp009.yjxsyxql',
prop: 'yjxsyxql',
width: 350,
headerSelectKey: 'yjxsyxqlUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10
},
{
label: 'template.sp.sp009.sjxsyxql',
prop: 'sjxsyxql',
width: 350,
headerSelectKey: 'sjxsyxqlUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
bodyCompareTo: 'yjjzxql',
copyFrom: 'yjjzxql'
},
{
label: 'template.sp.sp008.hhwznd',
@ -83,4 +217,5 @@ export const getSWYPFXFFXYPZBBTableConfig = ($this) => {
bodyMaxlength: 10
}
]
return arr
}

+ 28
- 1
src/views/business/comps/template/mixins/templateMixin.js View File

@ -7,7 +7,21 @@ export default {
'business_tjdw',
'business_yxqdw',
'business_rqcz',
'business_sp_jmdyzqdyp'
'business_sp_jmdyzqdyp', //色谱-编号-准确度与精密度
'business_sp_nbgzy', //色谱-编号-内标工作液
'business_sp_zkgzy', //色谱-编号-质控工作液
'business_sp_bqgzy', //色谱-编号-标曲工作液
'business_sp_bzqxzkypzbb', //色谱-编号-标准曲线/质控样品制备表
'business_sp_tqhsl', //色谱-编号-提取回收率
'business_sp_qxwdx', //色谱-编号-全血稳定性
'business_sp_cbyhgzywdx', //色谱-编号-储备液和工作液稳定性
'business_sp_rxjzxy', //色谱-编号-溶血基质效应
'business_sp_jzxy', //色谱-编号-基质效应
'business_sp_xzxytyx', //色谱-编号-选择性与特异性
'business_sp_zdybs', //色谱-编号-最大样本数
'business_sp_xskkx', //色谱-编号-稀释可靠性
'business_sp_cbydb' //色谱-编号-储备液对比
],
props: {
templateData: {
@ -28,6 +42,7 @@ export default {
templateMcEn,
templateSn,
startDate,
bdmc,
endDate
} = v
if (v.resource) {
@ -43,6 +58,18 @@ export default {
templateMcEn,
templateSn,
startDate,
bdmc,
endDate
}
} else {
this.formData = {
studyMc,
studySn,
templateMc,
templateMcEn,
templateSn,
startDate,
bdmc,
endDate
}
}

+ 32
- 21
src/views/business/form/drug/comp/sqbdList.vue View File

@ -2,18 +2,18 @@
<div>
<div class="sqbd-list" v-show="!showDetail && !showEdit && !showAudit && !showFh&& !showSh">
<div class="sqbd-search">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="100px">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="110px">
<el-row>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.bdmc')" prop="name">
<el-input v-model="searchForm.bdmc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.bdbh')" prop="sn">
<el-input v-model="searchForm.bdbh" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
@ -35,14 +35,14 @@
<el-col :span="6">
<el-form-item :label="$t('page.business.form.xtmbmc')" prop="templateName">
<el-input v-model="searchForm.templateMc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.cjsj')">
<el-date-picker v-model="daterange" clearable type="daterange" range-separator="-"
:start-placeholder="$t('page.business.form.startDate')"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd" @change="search"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd"
style="width: 200px" />
</el-form-item>
</el-col>
@ -50,7 +50,7 @@
<el-form-item :label="$t('page.business.form.tjsj')">
<el-date-picker v-model="daterangetj" clearable type="daterange" range-separator="-"
:start-placeholder="$t('page.business.form.startDate')"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd" @change="search"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd"
style="width: 200px" />
</el-form-item>
</el-col>
@ -75,27 +75,27 @@
</el-row>
<el-table v-loading="loading" :data="list">
<el-table-column :label="$t('page.business.form.bh')" prop="bdbh" />
<el-table-column :label="$t('page.business.form.bdmc')" prop="bdmc" />
<el-table-column :label="$t('page.business.form.xtmbmc')" prop="templateMc" />
<el-table-column :label="$t('page.business.form.bh')" prop="bdbh" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('page.business.form.bdmc')" prop="bdmc" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('page.business.form.xtmbmc')" prop="templateMc" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('page.business.form.cjsj')" align="center" prop="createTime" width="140" />
<el-table-column :label="$t('page.business.form.gsr')" align="center" prop="userMc" width="100" />
<el-table-column :label="$t('page.business.study.studyFormApply.sfbl')" align="center" prop="status"
width="100">
<template slot-scope="scope">
<span v-if="scope.row.sfbl === '是'">{{ $t('page.business.study.studyFormApply.yes') }}</span>
<span v-if="scope.row.sfbl === '否'">{{ $t('page.business.study.studyFormApply.no') }}</span>
<span v-if="scope.row.sfbl === '是'"><span class="status-circle yes"></span>{{ $t('page.business.study.studyFormApply.yes') }}</span>
<span v-if="scope.row.sfbl === '否'"><span class="status-circle no"></span>{{ $t('page.business.study.studyFormApply.no') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.form.status')" prop="status" align="center" width="100">
<template slot-scope="scope">
<span v-if="scope.row.bdzt === 1">{{ $t('page.business.study.studyFormApply.tbz') }}</span>
<span v-if="scope.row.bdzt === 3">{{ $t('page.business.study.studyFormApply.ytj') }}</span>
<span v-if="scope.row.bdzt === 5">{{ $t('page.business.study.studyFormApply.yfh') }}</span>
<span v-if="scope.row.bdzt === 6">{{ $t('page.business.study.studyFormApply.wtg') }}</span>
<span v-if="scope.row.bdzt === 7">{{ $t('page.business.study.studyFormApply.ywc') }}</span>
<span v-if="scope.row.bdzt === 9">{{ $t('page.business.study.studyFormApply.dfz') }}</span>
<span v-if="scope.row.bdzt === 11">{{ $t('page.business.study.studyFormApply.yfz') }}</span>
<span v-if="scope.row.bdzt === 1"><span class="status-circle tbz"></span>{{ $t('page.business.study.studyFormApply.tbz') }}</span>
<span v-if="scope.row.bdzt === 3"><span class="status-circle ytj"></span>{{ $t('page.business.study.studyFormApply.ytj') }}</span>
<span v-if="scope.row.bdzt === 5"><span class="status-circle yfh"></span>{{ $t('page.business.study.studyFormApply.yfh') }}</span>
<span v-if="scope.row.bdzt === 6"><span class="status-circle wtg"></span>{{ $t('page.business.study.studyFormApply.wtg') }}</span>
<span v-if="scope.row.bdzt === 7"><span class="status-circle ywc"></span>{{ $t('page.business.study.studyFormApply.ywc') }}</span>
<span v-if="scope.row.bdzt === 9"><span class="status-circle dfz"></span>{{ $t('page.business.study.studyFormApply.dfz') }}</span>
<span v-if="scope.row.bdzt === 11"><span class="status-circle yfz"></span>{{ $t('page.business.study.studyFormApply.yfz') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.form.tjsj')" align="center" prop="tjsj" width="140" />
@ -239,6 +239,7 @@ export default {
templateMc: '',
cjsjjs: '',
cjsjks: '',
sfbl:null,
tjsjjs: '',
tjsjks: '',
},
@ -276,15 +277,25 @@ export default {
userChange(val) {
this.searchForm.userId = val.id
this.searchForm.userMc = val.name
this.search()
},
search() {
this.searchForm.pageNum = 1
this.getList()
},
reset() {
this.resetForm("searchForm")
this.handleQuery()
this.searchForm.bdbh = ''
this.searchForm.bdmc = ''
this.searchForm.userId = ''
this.searchForm.userMc = ' '
this.searchForm.templateMc = ''
this.searchForm.cjsjks = ''
this.searchForm.cjsjjs = ''
this.searchForm.tjsjks = ''
this.searchForm.tjsjjs = ''
this.searchForm.sfbl =null
this.daterange = []
this.daterangetj = []
this.search()
},
getList() {
if (this.daterange != null && this.daterange.length > 0) {

+ 31
- 20
src/views/business/form/drug/comp/tbbdList.vue View File

@ -2,18 +2,18 @@
<div>
<div class="tbbd-list" v-show="!showDetail && !showEdit && !showAudit && !showFh">
<div class="tbbd-search">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="100px">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="110px">
<el-row>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.bdmc')" prop="name">
<el-input v-model="searchForm.bdmc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.bdbh')" prop="sn">
<el-input v-model="searchForm.bdbh" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
@ -35,14 +35,14 @@
<el-col :span="6">
<el-form-item :label="$t('page.business.form.xtmbmc')" prop="templateName">
<el-input v-model="searchForm.templateMc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.cjsj')">
<el-date-picker v-model="daterange" clearable type="daterange" range-separator="-"
:start-placeholder="$t('page.business.form.startDate')"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd" @change="search"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd"
style="width: 200px" />
</el-form-item>
</el-col>
@ -50,7 +50,7 @@
<el-form-item :label="$t('page.business.form.tjsj')">
<el-date-picker v-model="daterangetj" clearable type="daterange" range-separator="-"
:start-placeholder="$t('page.business.form.startDate')"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd" @change="search"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd"
style="width: 200px" />
</el-form-item>
</el-col>
@ -75,26 +75,26 @@
</el-row>
<el-table v-loading="loading" :data="list">
<el-table-column :label="$t('page.business.form.bh')" prop="bdbh" />
<el-table-column :label="$t('page.business.form.bdmc')" prop="bdmc" />
<el-table-column :label="$t('page.business.form.xtmbmc')" prop="templateMc" />
<el-table-column :label="$t('page.business.form.bh')" prop="bdbh" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('page.business.form.bdmc')" prop="bdmc" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('page.business.form.xtmbmc')" prop="templateMc" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('page.business.form.cjsj')" align="center" prop="createTime" width="140" />
<el-table-column :label="$t('page.business.form.gsr')" align="center" prop="userMc" width="100" />
<el-table-column :label="$t('page.business.form.status')" prop="status" align="center" width="100">
<template slot-scope="scope">
<span v-if="scope.row.bdzt === 1">{{ $t('page.business.study.studyFormFill.tbz') }}</span>
<span v-if="scope.row.bdzt === 3">{{ $t('page.business.study.studyFormFill.ytj') }}</span>
<span v-if="scope.row.bdzt === 5">{{ $t('page.business.study.studyFormFill.ywc') }}</span>
<span v-if="scope.row.bdzt === 7">{{ $t('page.business.study.studyFormFill.ywcfh') }}</span>
<span v-if="scope.row.bdzt === 9">{{ $t('page.business.study.studyFormFill.dfz') }}</span>
<span v-if="scope.row.bdzt === 11">{{ $t('page.business.study.studyFormFill.yfz') }}</span>
<span v-if="scope.row.bdzt === 1"><span class="status-circle tbz"></span>{{ $t('page.business.study.studyFormFill.tbz') }}</span>
<span v-if="scope.row.bdzt === 3"><span class="status-circle ytj"></span>{{ $t('page.business.study.studyFormFill.ytj') }}</span>
<span v-if="scope.row.bdzt === 5"><span class="status-circle ywc"></span>{{ $t('page.business.study.studyFormFill.ywc') }}</span>
<span v-if="scope.row.bdzt === 7"><span class="status-circle ywcfh"></span>{{ $t('page.business.study.studyFormFill.ywcfh') }}</span>
<span v-if="scope.row.bdzt === 9"><span class="status-circle dfz"></span>{{ $t('page.business.study.studyFormFill.dfz') }}</span>
<span v-if="scope.row.bdzt === 11"><span class="status-circle yfz"></span>{{ $t('page.business.study.studyFormFill.yfz') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.study.studyFormFill.sfbl')" align="center" prop="status"
width="100">
<template slot-scope="scope">
<span v-if="scope.row.sfbl === '是'">{{ $t('page.business.study.studyFormFill.yes') }}</span>
<span v-if="scope.row.sfbl === '否'">{{ $t('page.business.study.studyFormFill.no') }}</span>
<span v-if="scope.row.sfbl === '是'"><span class="status-circle yes"></span>{{ $t('page.business.study.studyFormFill.yes') }}</span>
<span v-if="scope.row.sfbl === '否'"><span class="status-circle no"></span>{{ $t('page.business.study.studyFormFill.no') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.form.tjsj')" align="center" prop="tjsj" width="140" />
@ -240,6 +240,7 @@ export default {
templateMc: '',
cjsjjs: '',
cjsjks: '',
sfbl:null,
tjsjjs: '',
tjsjks: '',
},
@ -280,15 +281,25 @@ export default {
userChange(val) {
this.searchForm.userId = val.id
this.searchForm.userMc = val.name
this.search()
},
search() {
this.searchForm.pageNum = 1
this.getList()
},
reset() {
this.resetForm("searchForm")
this.handleQuery()
this.searchForm.bdbh = ''
this.searchForm.bdmc = ''
this.searchForm.userId = ''
this.searchForm.userMc = ' '
this.searchForm.templateMc = ''
this.searchForm.cjsjjs = ''
this.searchForm.cjsjks = ''
this.searchForm.tjsjjs = ''
this.searchForm.tjsjks = ''
this.searchForm.sfbl = null
this.daterange=[]
this.daterangetj=[]
this.search()
},
getList() {
if (this.daterange != null && this.daterange.length > 0) {

+ 22
- 16
src/views/business/form/drug/comp/ytbdList.vue View File

@ -2,18 +2,18 @@
<div>
<div class="ytbd-list" v-show="!showDetail && !showEdit && !showAudit">
<div class="ytbd-search">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="100px">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="110px">
<el-row>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.bdmc')" prop="name">
<el-input v-model="searchForm.bdmc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.bdbh')" prop="sn">
<el-input v-model="searchForm.bdbh" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
@ -33,14 +33,14 @@
<el-col :span="6">
<el-form-item :label="$t('page.business.form.xtmbmc')" prop="templateName">
<el-input v-model="searchForm.templateMc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.cjsj')">
<el-date-picker v-model="daterange" clearable type="daterange" range-separator="-"
:start-placeholder="$t('page.business.form.startDate')"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd" @change="search"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd"
style="width: 200px" />
</el-form-item>
</el-col>
@ -60,19 +60,19 @@
</el-row>
<el-table v-loading="loading" :data="list">
<el-table-column :label="$t('page.business.form.bh')" prop="bdbh" />
<el-table-column :label="$t('page.business.form.bdmc')" prop="bdmc" />
<el-table-column :label="$t('page.business.form.xtmbmc')" prop="templateMc" />
<el-table-column :label="$t('page.business.form.bh')" prop="bdbh" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('page.business.form.bdmc')" prop="bdmc" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('page.business.form.xtmbmc')" prop="templateMc" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('page.business.form.cjsj')" align="center" prop="createTime" width="140" />
<el-table-column :label="$t('page.business.form.cjr')" align="center" prop="userMc" width="100" />
<el-table-column :label="$t('page.business.form.status')" prop="status" width="100">
<template slot-scope="scope">
<span v-if="scope.row.bdzt === 1">{{ $t('page.business.form.statusTbz') }}</span>
<span v-if="scope.row.bdzt === 3">{{ $t('page.business.form.statusYtj') }}</span>
<span v-if="scope.row.bdzt === 5">{{ $t('page.business.form.statusYtg') }}</span>
<span v-if="scope.row.bdzt === 9">{{ $t('page.business.form.statusDgb') }}</span>
<span v-if="scope.row.bdzt === 11">{{ $t('page.business.form.statusYgb') }}</span>
<span v-if="scope.row.bdzt === 1"><span class="status-circle tbz"></span>{{ $t('page.business.form.statusTbz') }}</span>
<span v-if="scope.row.bdzt === 3"><span class="status-circle ytj"></span>{{ $t('page.business.form.statusYtj') }}</span>
<span v-if="scope.row.bdzt === 5"><span class="status-circle ytg"></span>{{ $t('page.business.form.statusYtg') }}</span>
<span v-if="scope.row.bdzt === 9"><span class="status-circle dgb"></span>{{ $t('page.business.form.statusDgb') }}</span>
<span v-if="scope.row.bdzt === 11"><span class="status-circle ygb"></span>{{ $t('page.business.form.statusYgb') }}</span>
</template>
</el-table-column>
@ -363,15 +363,21 @@ export default {
userChange(val) {
this.searchForm.userId = val.id
this.searchForm.userMc = val.name
this.search()
},
search() {
this.searchForm.pageNum = 1
this.getList()
},
reset() {
this.resetForm("searchForm")
this.handleQuery()
this.searchForm.bdbh = ''
this.searchForm.bdmc = ''
this.searchForm.userId = ''
this.searchForm.userMc = ' '
this.searchForm.templateMc = ''
this.searchForm.startDate = ''
this.searchForm.endDate = ''
this.daterange=[]
this.search()
},
getList() {
if (this.daterange != null && this.daterange.length > 0) {

+ 17
- 6
src/views/business/form/nonTrial/comp/syff.vue View File

@ -1,12 +1,13 @@
<template>
<div class="study-tbbd">
<div class="tbbd-right">
配置方法列表
<div class="tbbd-right" >
<syffList :study="studyInfo" @showDetail="showDetailCallback"/>
</div>
</div>
</template>
<script>
import syffList from './syffList.vue'
export default {
name: 'StudySyff',
props: {
@ -20,22 +21,32 @@ export default {
watch:{
study: {
immediate: true,
deep: true,
deep:true,
handler(v) {
this.studyInfo = v
this.studyInfo = _.merge({studySubjectId:''},v)
},
},
},
components: {},
components: {syffList},
computed: {},
filters: {},
data() {
return {
studyInfo:{}
showDetail:false,
studyInfo:{
studySubjectId:''
}
}
},
created() {},
methods: {
changeSubject(val){
this.studyInfo.studySubjectId = val
},
showDetailCallback(val){
this.showDetail=val
this.$emit('showDetail',val)
}
}
}
</script>

+ 224
- 0
src/views/business/form/nonTrial/comp/syff/Xq.vue View File

@ -0,0 +1,224 @@
<template>
<div>
<div class="edit-container">
<div class="edit-top">
<div class="left-top">
<img src="@/assets/images/back.png" @click="cancel()" />
<div class="left-title"></div>
</div>
<div class="center-top">
</div>
<div class="right-top">
<el-button @click="cancel()">{{ $t('form.cancel') }}</el-button>
<el-button type="primary" @click="handleExport" v-if="showExportBtn">{{
$t('page.business.study.studyMethod.daochu') }}</el-button>
<el-button type="primary" @click="yuedu" v-if="form.zt == 0 && !showExportBtn">{{
$t('page.business.study.studyMethod.yuedu') }}</el-button>
</div>
</div>
<div class="edit-content ">
<div class="pdf-layout">
<div class="pdf-content">
<pdf id="pdfBox" :page="pageNum" :src="pdfSrc" @progress="loadedRatio = $event"
@num-pages="totalPages = $event"></pdf>
</div>
<div class="btn-layout" v-if="totalPages">
<div class="pageNum">{{ pageNum }} / {{ totalPages }}</div>
<el-button-group>
<el-button round plain type="primary" icon="el-icon-arrow-left" size="mini"
@click="prePage">上一页</el-button>
<el-button round plain type="primary" size="mini" @click="nextPage">下一页<i
class="el-icon-arrow-right el-icon--right"></i></el-button>
</el-button-group>
</div>
<div ref="contentToPdf">
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyMethod.qmhz') }}</div>
</div>
<el-table v-loading="loading" :data="list">
<el-table-column :label="$t('page.business.study.studyMethod.qmr')" prop="qmrMc" />
<el-table-column :label="$t('page.business.study.studyMethod.qmsj')" prop="createTime" />
<el-table-column :label="$t('page.business.study.studyMethod.qmyy')" prop="qmyy" />
<el-table-column :label="$t('page.business.study.studyMethod.remark')" prop="remark" />
</el-table>
</div>
</div>
</div>
</div>
<Yd ref="Yd" @callback="closeYd" />
</div>
</template>
<script>
import { studyMethod_readList, studyMethod_export } from '@/api/business/study/studyMethod'
import html2canvas from 'html2canvas';
import { PDFDocument } from 'pdf-lib'
import { mapGetters } from 'vuex'
import pdf from 'vue-pdf'
import Yd from './Yd.vue'
export default {
name: "Xq",
components: { pdf, Yd },
data() {
return {
showExportBtn: false,
pdfSrc: '',
open: false,
pageNum: 1,
loadedRatio: 0, // 0-1 1
totalPages: 0, //pdf
form: {},
list: [],
loading: false,
}
},
computed: {
...mapGetters([
'nickName','name'
]),
},
created() {
},
methods: {
yuedu() {
this.$refs.Yd.show(this.form)
},
cancel() {
this.$emit('close')
},
show(row) {
this.showExportBtn = false
this.open = true
this.form = row
this.pdfSrc = process.env.VUE_APP_FILE_DOMAIN + row.fileUrl
this.getPageNum()
},
showExport(row) {
this.loading = true
this.open = true
this.showExportBtn = true
this.form = row
this.pdfSrc = process.env.VUE_APP_FILE_DOMAIN + row.fileUrl
studyMethod_readList({ studyMethodId: row.id }).then(response => {
this.list = response.data
this.loading = false
this.getPageNum()
})
},
// PDF
getPageNum() {
let loadingTask = pdf.createLoadingTask(this.pdfSrc);
loadingTask.promise
.then((pdf) => {
this.totalPages = pdf.numPages;
this.loadPdfFromUrl()
// this.$nextTick(() => {
// this.setWatermarkContent();
// });
})
.catch((err) => {
this.$message.msgError("pdf加载失败");
});
},
//
prePage() {
let page = this.pageNum;
page = page > 1 ? page - 1 : this.totalPages;
this.pageNum = page;
window.scrollTo(0, 0);
},
//
nextPage() {
let page = this.pageNum;
page = page < this.totalPages ? page + 1 : 1;
this.pageNum = page;
window.scrollTo(0, 0);
},
closeYd(val) {
this.form.zt = val
},
handleExport() {
studyMethod_export({studyMethodId: this.form.id}).then(response => {
let fileUrl = response.data.fileUrl
this.$download.saveAs(process.env.VUE_APP_FILE_DOMAIN + fileUrl, this.form.ffmc + ".pdf");
})
}
}
}
</script>
<style lang="scss">
.pdf-layout {
display: flex;
flex-direction: column;
align-items: center;
}
.pdf-content {
min-width: 1000px;
min-height: 550px;
position: relative;
margin: 0 auto
}
.btn-layout {
display: flex;
flex-direction: column;
align-items: center;
}
.content-edit {
background: #f5f5f5;
padding: 0;
.edit-top {
background: #fff;
padding: 10px 20px;
margin-bottom: 10px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
.left-top {
flex-shrink: 0;
display: flex;
flex-direction: row;
align-items: center;
img {
height: 16px;
margin-right: 20px;
cursor: pointer;
}
.right-top {}
}
}
.edit-content {
background: #fff;
padding: 20px;
min-height: 500px;
.edit-form {
width: 800px;
margin: 0 auto;
}
}
}
</style>

+ 205
- 0
src/views/business/form/nonTrial/comp/syff/Xz.vue View File

@ -0,0 +1,205 @@
G<template>
<div>
<!-- 新增试验间弹窗 -->
<el-dialog :title="$t('page.business.study.studyMethod.scff')" :visible.sync="open" width="400px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="24">
<el-form-item :label="$t('page.business.study.studyMethod.mc')" prop="ffmc">
<el-input type="text" v-model="form.ffmc" maxlength="20"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<!-- 方法 -->
<el-col :span="24">
<el-form-item :label="$t('page.business.study.studyMethod.ff')" prop="fileUlr">
<el-upload class="upload-demo" :before-upload="handleBeforeUpload" :on-error="handleUploadError"
:on-exceed="handleExceed" :on-success="handleUploadSuccess" :show-file-list="true" :headers="headers"
:on-remove="handleRemove" :action="uploadFileUrl" accept=".pdf" :limit="1" :file-list="fileList">
<el-button size="small" type="primary">{{ $t('page.business.study.studyMethod.scwj') }}</el-button>
<div slot="tip" class="el-upload__tip">{{ $t('page.business.study.studyMethod.wjm') }}</div>
</el-upload>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-input type="text" :value="form.qmyy" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.remark')" prop="qmbz">
<el-input type="textarea" v-model="form.qmbz" :rows="2" maxlength="500"
:placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.signer')">
<el-input type="text" v-model="nickName" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.password')" prop="qmrmm">
<el-input type="password" v-model="form.qmrmm" maxlength="20"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="save">{{ $t('form.confirm') }}</el-button>
<el-button @click="cancel">{{ $t('form.cancel') }}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { studyMethod_save } from "@/api/business/study/studyMethod"
import { mapGetters } from 'vuex'
import { getToken } from "@/utils/auth"
export default {
name: "XzSyj",
components: {},
data() {
return {
open: false,
form: {
mc: '',
fileUrl: '',
fileName: ''
},
uploadFileUrl: process.env.VUE_APP_BASE_API + "/file/upload",
headers: {
Authorization: "Bearer " + getToken(),
},
fileList: [],
rules: {
ffmc: [{
required: true,
message: ' ',
trigger: 'blur'
}],
fileUrl: [{
required: true,
message: ' ',
trigger: 'blur'
}],
qmrmm: [{
required: true,
message: ' ',
trigger: 'blur'
}],
}
}
},
computed: {
...mapGetters([
'nickName','name'
]),
},
created() {
},
methods: {
cancel() {
this.open = false
},
reset() {
this.form = {
ffmc: null,
fileUrl: '',
fileName: '',
qmrmm: null,
kssyyl: '',
qmyy: '上传文件',
bjbz: ''
}
this.fileList = []
this.resetForm("form")
},
show(study) {
this.reset()
this.form.studyId = study.id
this.form.studySubjectId = study.studySubjectId
this.open = true
},
save() {
this.$refs["form"].validate(valid => {
if (valid) {
studyMethod_save(this.form).then(response => {
this.open = false
this.$emit('callback')
})
}
})
},
//
handleBeforeUpload(file) {
let fileType = ['pdf']
//
if (fileType) {
const fileName = file.name.split('.')
const fileExt = fileName[fileName.length - 1]
const isTypeOk = fileType.indexOf(fileExt) >= 0
if (!isTypeOk) {
this.$modal.msgError('文件格式不正确,请上传pdf格式文件!')
return false
}
}
//
if (file.name.includes(',')) {
this.$modal.msgError('文件名不正确,不能包含英文逗号!')
return false
}
this.$modal.loading("正在上传文件,请稍候...")
this.number++
return true
},
//
handleExceed() {
this.$modal.msgError('上传文件数量不能超过1个!')
},
//
handleUploadError(err) {
this.$modal.msgError("上传文件失败,请重试")
this.$modal.closeLoading()
},
//
handleUploadSuccess(res, file) {
console.log(res)
if (res.code === 200) {
this.form.fileUrl = res.data.url
this.form.fileName = res.data.name
this.fileList.push({ name: res.data.name, url: res.data.url })
this.$modal.closeLoading()
} else {
this.number--
this.$modal.closeLoading()
this.$modal.msgError(res.msg)
this.$refs.fileUpload.handleRemove(file)
}
},
handleRemove() {
this.form.fileUrl = ''
this.form.fileName = ''
this.fileList = []
}
}
}
</script>

+ 109
- 0
src/views/business/form/nonTrial/comp/syff/Yd.vue View File

@ -0,0 +1,109 @@
<template>
<div>
<!-- 阅读弹窗 -->
<el-dialog :title="$t('page.business.study.studyMethod.yuedu')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-input type="text" :value="form.qmyy" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.remark')" prop="remark">
<el-input type="textarea" v-model="form.remark" :rows="5" maxlength="500"
:placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.signer')">
<el-input type="text" v-model="nickName" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.password')" prop="qmrmm">
<el-input type="password" v-model="form.qmrmm" maxlength="20"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="save">{{ $t('form.confirm') }}</el-button>
<el-button @click="cancel">{{ $t('form.cancel') }}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { studyMethod_read } from "@/api/business/study/studyMethod"
import { mapGetters } from 'vuex'
export default {
name: "Yd",
data() {
return {
open: false,
form: {},
rules: {
qmrmm: [{
required: true,
message: ' ',
trigger: 'blur'
}]
}
}
},
computed: {
...mapGetters([
'nickName','name'
]),
},
created() {
},
methods: {
cancel() {
this.open = false
},
reset() {
this.form = {
studyMethodId: null,
qmyy: '阅读',
remark: '',
qmrmm: null
}
this.resetForm("form")
},
show(row) {
this.reset()
this.form.studyMethodId = row.id
this.open = true
},
save() {
this.$refs["form"].validate(valid => {
if (valid) {
this.$modal.loading()
studyMethod_read(this.form).then(response => {
this.open = false
this.$emit('callback', 1)
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
}
})
}
}
}
</script>

+ 211
- 0
src/views/business/form/nonTrial/comp/syffList.vue View File

@ -0,0 +1,211 @@
<!-- 试验方法列表 -->
<template>
<div>
<div class="tbbd-list" v-show="!showDetail">
<div class="tbbd-search">
<el-form :model="searchForm" ref="searchForm" class="search-area" :inline="true" label-width="88px">
<el-row>
<el-col :span="24">
<!-- 方法名称 -->
<el-form-item :label="$t('page.business.study.studyMethod.ffmc')" prop="ffmc">
<el-input v-model="searchForm.ffmc" :placeholder="$t('form.placeholderInput')" clearable
@keyup.enter.native="search" />
</el-form-item>
<!-- 创建人 -->
<el-form-item :label="$t('page.business.study.studyMethod.cjr')" prop="cjr">
<el-input v-model="searchForm.cjr" :placeholder="$t('form.placeholderInput')" clearable
@keyup.enter.native="search" />
</el-form-item>
<!-- 创建时间 -->
<el-form-item :label="$t('page.business.study.studyMethod.cjsj') + ':'">
<el-date-picker v-model="daterange" class="chat-histogram-daterange" type="daterange"
range-separator="-" :start-placeholder="$t('form.startDate')" :end-placeholder="$t('form.endDate')"
value-format="yyyy-MM-dd" @change="search" style="width: 250px;" />
</el-form-item>
<!-- 状态 -->
<el-form-item :label="$t('page.business.study.studyMethod.zt') + ':'" prop="zt">
<el-select v-model="searchForm.zt" :placeholder="$t('form.placeholderSelect')" clearable
@change="search">
<el-option :label="$t('page.business.study.studyMethod.yidu')" :value="1" />
<el-option :label="$t('page.business.study.studyMethod.weidu')" :value="0" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search">{{ $t('form.search') }}</el-button>
<el-button icon="el-icon-refresh" @click="reset">{{ $t('form.reset') }}</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="tbbd-content">
<el-row class="add-box">
<el-col>
<el-button type="primary" icon="el-icon-plus" @click="add()" v-hasPermi="['business:studyMethod:upload']">{{
$t('page.business.study.studyMethod.scff') }}</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="list">
<el-table-column :label="$t('page.business.study.studyMethod.ffmc')" prop="ffmc" />
<el-table-column :label="$t('page.business.study.studyMethod.cjsj')" prop="createTime" />
<el-table-column :label="$t('page.business.study.studyMethod.cjr')" prop="userMc" />
<el-table-column :label="$t('page.business.study.studyMethod.zt')" prop="status" align="center" width="100">
<template slot-scope="scope">
<span v-if="scope.row.zt != 0">{{ $t('page.business.study.studyMethod.yidu') }}</span>
<span v-if="scope.row.zt === 0">{{ $t('page.business.study.studyMethod.weidu') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('form.operate')" align="left" fixed="right" width="200">
<template slot-scope="scope">
<!-- 阅读 -->
<el-button type="text" @click="detail(scope.row)" v-hasPermi="['business:studyMethod:read']">{{
$t('page.business.study.studyMethod.yuedu') }}</el-button>
<!-- 导出 -->
<el-button type="text" @click="showExport(scope.row)" v-hasPermi="['business:studyMethod:download']">{{
$t('page.business.study.studyMethod.daochu') }}</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="searchForm.pageNum" :limit.sync="searchForm.pageSize"
@pagination="getList" />
</div>
</div>
<!-- 新增 -->
<Xz key="Xz" ref="Xz" @callback="search" />
<!-- 详情 -->
<Xq key="Xq" ref="Xq" v-show="showDetail" @close="xqClose" />
</div>
</template>
<script>
import { studyMethod_list } from '@/api/business/study/studyMethod'
import Xz from "./syff/Xz";
import Xq from "./syff/Xq";
import { mapGetters } from 'vuex'
import moment from "moment";
export default {
name: 'SyffList',
props: {
study: {
type: Object,
default: () => {
return {}
}
}
},
computed: {
...mapGetters([
'id'
]),
},
watch: {
study: {
handler(newVal) {
this.searchForm.studySn = newVal.sn
this.searchForm.studyMc = newVal.name
this.searchForm.studyId = newVal.id
this.searchForm.studySubjectId = newVal.studySubjectId
this.leader = newVal.leader
this.search()
},
immediate: true,
deep: true
}
},
components: { Xz, Xq },
data() {
return {
showDetail: false,
daterange: [],
showFh: false,
daterange: [],
searchForm: {
pageNum: 1,
pageSize: 10,
studyId: '',
syjh: '',
syqy: '',
qyr: '',
jsr: '',
startDate: '',
endDate: ''
},
loading: false,
total: 0,
list: [],
currentRow: null
}
},
created() { },
methods: {
search() {
this.searchForm.pageNum = 1
this.getList()
},
reset() {
this.resetForm("searchForm")
this.search()
},
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.searchForm.startDate = this.daterange[0] + " 00:00:00"
this.searchForm.endDate = this.daterange[1] + " 23:59:59"
} else {
this.searchForm.startDate = ''
this.searchForm.endDate = ''
}
this.loading = true
studyMethod_list(this.searchForm).then(response => {
this.list = response.rows
this.total = response.total
this.loading = false
})
},
add() {
this.$refs.Xz.show(this.study);
},
detail(row) {
this.showDetail = true
this.$emit('showDetail', this.showDetail)
this.$refs.Xq.show(row)
},
showExport(row) {
this.showDetail = true
this.$emit('showDetail', this.showDetail)
this.$refs.Xq.showExport(row)
},
xqClose() {
this.showDetail = false
this.$emit('showDetail', this.showDetail)
this.search()
},
}
}
</script>
<style lang="scss" scoped>
.tbbd-list {
.tbbd-search {
background: #fff;
padding: 20px;
margin-bottom: 10px;
.right-btn {
text-align: right
}
}
.tbbd-content {
padding: 20px;
background: #fff;
.add-box {
margin-bottom: 10px;
}
}
}
</style>

+ 96
- 41
src/views/business/form/nonTrial/comp/tbbdList.vue View File

@ -2,18 +2,18 @@
<div>
<div class="tbbd-list" v-show="!showDetail && !showEdit && !showAudit && !showFh">
<div class="tbbd-search">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="100px">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="110px">
<el-row>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.bdmc')" prop="name">
<el-input v-model="searchForm.bdmc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.bdbh')" prop="sn">
<el-input v-model="searchForm.bdbh" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
@ -35,14 +35,14 @@
<el-col :span="6">
<el-form-item :label="$t('page.business.form.xtmbmc')" prop="templateName">
<el-input v-model="searchForm.templateMc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.cjsj')">
<el-date-picker v-model="daterange" clearable type="daterange" range-separator="-"
:start-placeholder="$t('page.business.form.startDate')"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd" @change="search"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd"
style="width: 200px" />
</el-form-item>
</el-col>
@ -50,14 +50,14 @@
<el-form-item :label="$t('page.business.form.tjsj')">
<el-date-picker v-model="daterangetj" clearable type="daterange" range-separator="-"
:start-placeholder="$t('page.business.form.startDate')"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd" @change="search"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd"
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.study.studyFormFill.sfbl')">
<el-select v-model="searchForm.sfbl" :placeholder="$t('form.placeholderSelect')" clearable
@change="search">
>
<el-option :label="$t('page.business.study.studyFormFill.yes')" value="是" />
<el-option :label="$t('page.business.study.studyFormFill.no')" value="否" />
</el-select>
@ -76,26 +76,26 @@
</el-row>
<el-table v-loading="loading" :data="list">
<el-table-column :label="$t('page.business.form.bh')" prop="bdbh" />
<el-table-column :label="$t('page.business.form.bdmc')" prop="bdmc" />
<el-table-column :label="$t('page.business.form.xtmbmc')" prop="templateMc" />
<el-table-column :label="$t('page.business.form.bh')" prop="bdbh" :show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.form.bdmc')" prop="bdmc" :show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.form.xtmbmc')" prop="templateMc" :show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.form.cjsj')" align="center" prop="createTime" width="140" />
<el-table-column :label="$t('page.business.form.gsr')" align="center" prop="userMc" width="100" />
<el-table-column :label="$t('page.business.form.status')" prop="status" align="center" width="100">
<template slot-scope="scope">
<span v-if="scope.row.bdzt === 1">{{ $t('page.business.study.studyFormFill.tbz') }}</span>
<span v-if="scope.row.bdzt === 3">{{ $t('page.business.study.studyFormFill.ytj') }}</span>
<span v-if="scope.row.bdzt === 5">{{ $t('page.business.study.studyFormFill.ywc') }}</span>
<span v-if="scope.row.bdzt === 7">{{ $t('page.business.study.studyFormFill.ywcfh') }}</span>
<span v-if="scope.row.bdzt === 9">{{ $t('page.business.study.studyFormFill.dfz') }}</span>
<span v-if="scope.row.bdzt === 11">{{ $t('page.business.study.studyFormFill.yfz') }}</span>
<span v-if="scope.row.bdzt === 1"><span class="status-circle tbz"></span>{{ $t('page.business.study.studyFormFill.tbz') }}</span>
<span v-if="scope.row.bdzt === 3"><span class="status-circle ytj"></span>{{ $t('page.business.study.studyFormFill.ytj') }}</span>
<span v-if="scope.row.bdzt === 5"><span class="status-circle ywc"></span>{{ $t('page.business.study.studyFormFill.ywc') }}</span>
<span v-if="scope.row.bdzt === 7"><span class="status-circle ywcfh"></span>{{ $t('page.business.study.studyFormFill.ywcfh') }}</span>
<span v-if="scope.row.bdzt === 9"><span class="status-circle dfz"></span>{{ $t('page.business.study.studyFormFill.dfz') }}</span>
<span v-if="scope.row.bdzt === 11"><span class="status-circle yfz"></span>{{ $t('page.business.study.studyFormFill.yfz') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.study.studyFormFill.sfbl')" align="center" prop="status"
width="100">
<template slot-scope="scope">
<span v-if="scope.row.sfbl === '是'">{{ $t('page.business.study.studyFormFill.yes') }}</span>
<span v-if="scope.row.sfbl === '否'">{{ $t('page.business.study.studyFormFill.no') }}</span>
<span v-if="scope.row.sfbl === '是'"><span class="status-circle yes"></span>{{ $t('page.business.study.studyFormFill.yes') }}</span>
<span v-if="scope.row.sfbl === '否'"><span class="status-circle no"></span>{{ $t('page.business.study.studyFormFill.no') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.form.tjsj')" align="center" prop="tjsj" width="140" />
@ -173,6 +173,7 @@
<script>
import { studySubject_isQa } from "@/api/business/study/studySubject"
import { studyMethod_getReadAllMethodStatus } from '@/api/business/study/studyMethod'
import { checkPermi, checkRole } from "@/utils/permission";
import { studyFormFill_list } from '@/api/business/study/studyFormFill'
import Bj from "@/views/business/study/comp/tbbd/Bj";
@ -240,9 +241,11 @@ export default {
userMc: '',
templateMc: '',
cjsjjs: '',
sfbl:null,
cjsjks: '',
tjsjjs: '',
tjsjks: '',
sfbl:null
},
loading: false,
total: 0,
@ -260,23 +263,49 @@ export default {
})
},
ghgsr(row) {
this.currentRow = row
this.$refs.selectDeptUserDialog.show(null, null)
this.$modal.loading()
studyMethod_getReadAllMethodStatus({ userId: this.id, studyId: this.searchForm.studyId }).then(response => {
this.currentRow = row
this.$refs.selectDeptUserDialog.show(null, null)
}).finally(() => {
this.$modal.closeLoading()
})
},
ghgsrChange(val) {
this.$refs.Ghgsr.show({ id: this.currentRow.id, userId: val.id, userMc: val.name })
},
jq(row) {
this.$refs.Jq.show(row)
this.$modal.loading()
studyMethod_getReadAllMethodStatus({ userId: this.id, studyId: this.searchForm.studyId }).then(response => {
this.$refs.Jq.show(row)
}).finally(() => {
this.$modal.closeLoading()
})
},
qrfz(row) {
this.$refs.Qrfz.show(row)
this.$modal.loading()
studyMethod_getReadAllMethodStatus({ userId: this.id, studyId: this.searchForm.studyId }).then(response => {
this.$refs.Qrfz.show(row)
}).finally(() => {
this.$modal.closeLoading()
})
},
gc(row) {
this.$refs.Gc.show(row)
this.$modal.loading()
studyMethod_getReadAllMethodStatus({ userId: this.id, studyId: this.searchForm.studyId }).then(response => {
this.$refs.Gc.show(row)
}).finally(() => {
this.$modal.closeLoading()
})
},
fz(row) {
this.$refs.Fz.show(row)
this.$modal.loading()
studyMethod_getReadAllMethodStatus({ userId: this.id, studyId: this.searchForm.studyId }).then(response => {
this.$refs.Fz.show(row)
}).finally(() => {
this.$modal.closeLoading()
})
},
userChange(val) {
this.searchForm.userId = val.id
@ -288,8 +317,19 @@ export default {
this.getList()
},
reset() {
this.resetForm("searchForm")
this.handleQuery()
this.searchForm.bdbh = ''
this.searchForm.bdmc = ''
this.searchForm.userId = ''
this.searchForm.userMc = ' '
this.searchForm.templateMc = ''
this.searchForm.cjsjjs = ''
this.searchForm.cjsjks = ''
this.searchForm.tjsjjs = ''
this.searchForm.tjsjks = ''
this.searchForm.sfbl = null
this.daterange=[]
this.daterangetj=[]
this.search()
},
getList() {
if (this.daterange != null && this.daterange.length > 0) {
@ -317,23 +357,33 @@ export default {
// this.showEdit = true
// this.$emit('showDetail', this.showEdit)
// this.$refs.Bj.edit({ studySn:this.searchForm.studySn, studyMc:this.searchForm.studyMc,studyId: this.searchForm.studyId })
let params = caesarCipher(JSON.stringify({
url: this.$route.fullPath,
studyId: this.searchForm.studyId,
formId: null
}))
this.$tab.openPage(this.$t('page.business.study.studyFormFill.xzbd'), '/nonTrial/formFillBj/' + params)
this.$modal.loading()
studyMethod_getReadAllMethodStatus({ userId: this.id, studyId: this.searchForm.studyId }).then(response => {
let params = caesarCipher(JSON.stringify({
url: this.$route.fullPath,
studyId: this.searchForm.studyId,
formId: null
}))
this.$tab.openPage(this.$t('page.business.study.studyFormFill.xzbd'), '/nonTrial/formFillBj/' + params)
}).finally(() => {
this.$modal.closeLoading()
})
},
edit(row) {
// this.showEdit = true
// this.$emit('showDetail', this.showEdit)
// this.$refs.Bj.edit(row)
let params = caesarCipher(JSON.stringify({
url: this.$route.fullPath,
studyId: this.searchForm.studyId,
formId: row.id
}))
this.$tab.openPage(row.bdmc, '/nonTrial/formFillBj/' + params)
this.$modal.loading()
studyMethod_getReadAllMethodStatus({ userId: this.id, studyId: this.searchForm.studyId }).then(response => {
let params = caesarCipher(JSON.stringify({
url: this.$route.fullPath,
studyId: this.searchForm.studyId,
formId: row.id
}))
this.$tab.openPage(row.bdmc, '/nonTrial/formFillBj/' + params)
}).finally(() => {
this.$modal.closeLoading()
})
},
bjClose() {
this.showEdit = false
@ -366,9 +416,14 @@ export default {
this.$refs.Sy.show(row)
},
fh(row) {
this.showFh = true
this.$emit('showDetail', this.showFh)
this.$refs.Fh.show(row)
this.$modal.loading()
studyMethod_getReadAllMethodStatus({ userId: this.id, studyId: this.searchForm.studyId }).then(response => {
this.showFh = true
this.$emit('showDetail', this.showFh)
this.$refs.Fh.show(row)
}).finally(() => {
this.$modal.closeLoading()
})
},
}
}

+ 62
- 32
src/views/business/form/nonTrial/comp/ytbdList.vue View File

@ -2,18 +2,18 @@
<div>
<div class="ytbd-list" v-show="!showDetail && !showEdit && !showAudit">
<div class="ytbd-search">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="100px">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="110px">
<el-row>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.bdmc')" prop="name">
<el-input v-model="searchForm.bdmc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.bdbh')" prop="sn">
<el-input v-model="searchForm.bdbh" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
@ -33,14 +33,14 @@
<el-col :span="6">
<el-form-item :label="$t('page.business.form.xtmbmc')" prop="templateName">
<el-input v-model="searchForm.templateMc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" @keyup.enter.native="search" />
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.cjsj')">
<el-date-picker v-model="daterange" clearable type="daterange" range-separator="-"
:start-placeholder="$t('page.business.form.startDate')"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd" @change="search"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd"
style="width: 200px" />
</el-form-item>
</el-col>
@ -61,19 +61,19 @@
</el-row>
<el-table v-loading="loading" :data="list">
<el-table-column :label="$t('page.business.form.bh')" prop="bdbh" />
<el-table-column :label="$t('page.business.form.bdmc')" prop="bdmc" />
<el-table-column :label="$t('page.business.form.xtmbmc')" prop="templateMc" />
<el-table-column :label="$t('page.business.form.bh')" prop="bdbh" :show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.form.bdmc')" prop="bdmc" :show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.form.xtmbmc')" prop="templateMc" :show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.form.cjsj')" align="center" prop="createTime" width="140" />
<el-table-column :label="$t('page.business.form.cjr')" align="center" prop="userMc" width="100" />
<el-table-column :label="$t('page.business.form.status')" prop="status" width="100">
<template slot-scope="scope">
<span v-if="scope.row.bdzt === 1">{{ $t('page.business.form.statusTbz') }}</span>
<span v-if="scope.row.bdzt === 3">{{ $t('page.business.form.statusYtj') }}</span>
<span v-if="scope.row.bdzt === 5">{{ $t('page.business.form.statusYtg') }}</span>
<span v-if="scope.row.bdzt === 9">{{ $t('page.business.form.statusDgb') }}</span>
<span v-if="scope.row.bdzt === 11">{{ $t('page.business.form.statusYgb') }}</span>
<span v-if="scope.row.bdzt === 1"><span class="status-circle tbz"></span>{{ $t('page.business.form.statusTbz') }}</span>
<span v-if="scope.row.bdzt === 3"><span class="status-circle ytj"></span>{{ $t('page.business.form.statusYtj') }}</span>
<span v-if="scope.row.bdzt === 5"><span class="status-circle ytg"></span>{{ $t('page.business.form.statusYtg') }}</span>
<span v-if="scope.row.bdzt === 9"><span class="status-circle dgb"></span>{{ $t('page.business.form.statusDgb') }}</span>
<span v-if="scope.row.bdzt === 11"><span class="status-circle ygb"></span>{{ $t('page.business.form.statusYgb') }}</span>
</template>
</el-table-column>
@ -105,11 +105,13 @@
<el-button type="text" @click="audit(scope.row)" v-hasPermi="['business:nonTrialFormPre:sh']"
v-if="scope.row.bdzt === 3">{{ $t('page.business.form.audit') }}</el-button>
</template>
<template v-if="scope.row.bdzt === 5&&id==scope.row.userId">
<el-button type="text" @click="gb(scope.row)">{{ $t('page.business.study.studyFormPre.guanbi') }}</el-button>
<template v-if="scope.row.bdzt === 5 && id == scope.row.userId">
<el-button type="text" @click="gb(scope.row)">{{ $t('page.business.study.studyFormPre.guanbi')
}}</el-button>
</template>
<template v-if="scope.row.bdzt === 9&&id==scope.row.sjshryId">
<el-button type="text" @click="qrgb(scope.row)">{{ $t('page.business.study.studyFormPre.qrgb') }}</el-button>
<template v-if="scope.row.bdzt === 9 && id == scope.row.sjshryId">
<el-button type="text" @click="qrgb(scope.row)">{{ $t('page.business.study.studyFormPre.qrgb')
}}</el-button>
</template>
</template>
</el-table-column>
@ -126,9 +128,9 @@
<!-- 审核 -->
<Sh v-show="showAudit" key="Sh" ref="Sh" @close="shClose" />
<!-- 关闭 -->
<Gb key="Gb" ref="Gb" @callback="search" />
<Gb key="Gb" ref="Gb" @callback="search" />
<!-- 确认关闭 -->
<Qrgb key="Qrgb" ref="Qrgb" @callback="search" />
<Qrgb key="Qrgb" ref="Qrgb" @callback="search" />
<el-dialog :title="$t('page.business.study.studyFormPre.xjbd')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" label-width="120px">
@ -179,7 +181,8 @@
<el-dialog :title="$t('page.business.study.studyFormPre.yulan')" :visible.sync="openPreview" width="80%"
append-to-body :close-on-click-modal="false">
<TemplateTable ref="templateTable" :sn="formDatePreview.templateSn" v-if="openPreview" :templateData="formDatePreview" fillType="detail" />
<TemplateTable ref="templateTable" :sn="formDatePreview.templateSn" v-if="openPreview"
:templateData="formDatePreview" fillType="detail" />
</el-dialog>
<Sign ref="fsySignRef" @callback="doSign" />
@ -190,7 +193,8 @@
<script>
import { checkPermi, checkRole } from "@/utils/permission";
import { nonTrial_checkSd, nonTrial_sd } from "@/api/business/form/nonTrial"
import { studyFormPre_list, studyFormPre_info,studyFormPre_studyList, studyFormPre_studyFormPreList } from '@/api/business/study/studyFormPre'
import { studyFormPre_list, studyFormPre_info, studyFormPre_studyList, studyFormPre_studyFormPreList } from '@/api/business/study/studyFormPre'
import { studyMethod_getReadAllMethodStatus } from '@/api/business/study/studyMethod'
import TemplateTable from '@/views/business/comps/template/TemplateTable';
import Bj from "@/views/business/study/comp/ytbd/Bj";
import Xq from "@/views/business/study/comp/ytbd/Xq";
@ -232,7 +236,7 @@ export default {
deep: true
}
},
components: { Qrgb,Gb,Bj, Xq, Sh, SelectDeptUser, TemplateTable, Sign },
components: { Qrgb, Gb, Bj, Xq, Sh, SelectDeptUser, TemplateTable, Sign },
data() {
return {
formCount: 0,
@ -304,7 +308,7 @@ export default {
})
},
previewFzbd() {
this.$modal.loading()
this.$modal.loading()
studyFormPre_info({ id: this.formXz.formPreId }).then(response => {
this.formDatePreview = _.merge({}, response.data, {
studySn: this.searchForm.studySn,
@ -359,20 +363,31 @@ export default {
})
},
showAdd() {
this.open = true
this.$modal.loading()
studyMethod_getReadAllMethodStatus({ userId: this.id, studyId: this.searchForm.studyId }).then(response => {
this.open = true
}).finally(() => {
this.$modal.closeLoading()
})
},
userChange(val) {
this.searchForm.userId = val.id
this.searchForm.userMc = val.name
this.search()
},
search() {
this.searchForm.pageNum = 1
this.getList()
},
reset() {
this.resetForm("searchForm")
this.handleQuery()
this.searchForm.bdbh = ''
this.searchForm.bdmc = ''
this.searchForm.userId = ''
this.searchForm.userMc = ' '
this.searchForm.templateMc = ''
this.searchForm.startDate = ''
this.searchForm.endDate = ''
this.daterange=[]
this.search()
},
getList() {
if (this.daterange != null && this.daterange.length > 0) {
@ -401,9 +416,14 @@ export default {
})
},
edit(row) {
this.showEdit = true
this.$emit('showDetail', this.showEdit)
this.$refs.Bj.edit(row)
this.$modal.loading()
studyMethod_getReadAllMethodStatus({ userId: this.id, studyId: this.searchForm.studyId }).then(response => {
this.showEdit = true
this.$emit('showDetail', this.showEdit)
this.$refs.Bj.edit(row)
}).finally(() => {
this.$modal.closeLoading()
})
},
bjClose() {
this.showEdit = false
@ -431,10 +451,20 @@ export default {
this.$refs.Sh.show(row)
},
gb(row) {
this.$refs.Gb.show(row)
this.$modal.loading()
studyMethod_getReadAllMethodStatus({ userId: this.id, studyId: this.searchForm.studyId }).then(response => {
this.$refs.Gb.show(row)
}).finally(() => {
this.$modal.closeLoading()
})
},
qrgb(row) {
this.$refs.Qrgb.show(row)
this.$modal.loading()
studyMethod_getReadAllMethodStatus({ userId: this.id, studyId: this.searchForm.studyId }).then(response => {
this.$refs.Qrgb.show(row)
}).finally(() => {
this.$modal.closeLoading()
})
},
sdsy() {
this.$modal.loading()

+ 1
- 1
src/views/business/resource/gsp/comps/gsp/XqExport.vue View File

@ -10,7 +10,7 @@
<!-- 基本信息 -->
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> 基本信息</div>
<div class="subtitle"> {{ $t('page.business.resource.gsp.mc') }}</div>
</div>
<div class="pal">
<div class="left">

+ 1
- 1
src/views/business/resource/gyzj/comps/ffjl/Gd.vue View File

@ -3,7 +3,7 @@
<!-- 锁定弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.guidang')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-row style="margin:10px 0px;">

+ 1
- 1
src/views/business/resource/gyzj/comps/ffjl/Jd.vue View File

@ -3,7 +3,7 @@
<!-- 解档弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.jiedang')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="24">

+ 1
- 1
src/views/business/resource/gyzj/comps/ffjl/Jq.vue View File

@ -3,7 +3,7 @@
<!-- 加签弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.jiaqian')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="24">

+ 1
- 1
src/views/business/resource/gyzj/comps/ffjl/Js.vue View File

@ -3,7 +3,7 @@
<!-- 解锁弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.unlock')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="24">

+ 1
- 1
src/views/business/resource/gyzj/comps/ffjl/Jy.vue View File

@ -3,7 +3,7 @@
<!-- 借阅弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.jieyue')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="24">

+ 1
- 1
src/views/business/resource/gyzj/comps/ffjl/Sd.vue View File

@ -3,7 +3,7 @@
<!-- 锁定弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.lock')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-row style="margin:10px 0px;">

+ 1
- 3
src/views/business/resource/gyzj/comps/ffjl/Xq.vue View File

@ -1,6 +1,6 @@
<template>
<!-- 详情 -->
<div class="detail-container">
<div class="detail-container" v-if="open">
<div class="detail-top">
<div class="left-top">
<img src="@/assets/images/back.png" @click="cancel()" />
@ -219,10 +219,8 @@ export default {
this.queryJcgjParams.ffjlId = row.id
info({ id: row.id }).then(response => {
this.form = response.data
debugger
this.open = true
this.getJjcgjList()
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})

+ 178
- 35
src/views/business/resource/gyzj/comps/ffjlList.vue View File

@ -8,23 +8,23 @@
<el-col :span="24">
<!-- 名称 -->
<el-form-item :label="$t('page.business.resource.gyzj.mc') + ':'">
<el-input v-model="queryParams.mc" clearable @change="handleQuery"
<el-input v-model="queryParams.mc" clearable
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 编号 -->
<el-form-item :label="$t('page.business.resource.gyzj.bh') + ':'">
<el-input v-model="queryParams.bh" clearable @change="handleQuery"
<el-input v-model="queryParams.bh" clearable
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 目的 -->
<el-form-item :label="$t('page.business.resource.gyzj.md') + ':'">
<el-input v-model="queryParams.mdId" clearable @change="handleQuery"
<el-input v-model="queryParams.mdId" clearable
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 记录状态 -->
<el-form-item :label="$t('page.business.resource.gyzj.jlzt') + ':'">
<el-select v-model="queryParams.jlzt" :placeholder="$t('form.placeholderSelect')" clearable
@change="handleQuery">
>
<el-option :label="$t('page.business.resource.resource.jlzt.wsd')" :value="1" />
<el-option :label="$t('page.business.resource.resource.jlzt.ysd')" :value="3" />
<el-option :label="$t('page.business.resource.resource.jlzt.dgd')" :value="5" />
@ -33,9 +33,8 @@
</el-select>
</el-form-item>
<!-- 借阅状态 -->
<el-form-item :label="$t('page.business.resource.gyzj.jyzt') + ':'">
<el-select v-model="queryParams.jyzt" :placeholder="$t('form.placeholderSelect')" clearable
@change="handleQuery">
<el-form-item :label="$t('page.business.resource.gyzj.jyzt') + ':'" :label-width="$i18n.locale === 'zh_CN'?'88px':'150px'">
<el-select v-model="queryParams.jyzt" :placeholder="$t('form.placeholderSelect')" clearable>
<el-option :label="$t('page.business.resource.resource.jyzt.wjy')" :value="1" />
<el-option :label="$t('page.business.resource.resource.jyzt.djy')" :value="3" />
<el-option :label="$t('page.business.resource.resource.jyzt.jyz')" :value="5" />
@ -50,13 +49,13 @@
<el-row>
<el-col :span="24">
<!-- 出库日期 -->
<el-form-item :label="$t('page.business.resource.gyzj.cksj') + ':'">
<el-form-item :label="$t('page.business.resource.gyzj.cksj') + ':'" :label-width="$i18n.locale === 'zh_CN'?'88px':'180px'">
<el-date-picker v-model="daterangeCk" class="chat-histogram-daterange" type="daterange"
range-separator="-" :start-placeholder="$t('form.startDate')" :end-placeholder="$t('form.endDate')"
value-format="yyyy-MM-dd" @change="handleQuery" style="width: 250px;" />
</el-form-item>
<!-- 入库日期 -->
<el-form-item :label="$t('page.business.resource.gyzj.rksj') + ':'">
<el-form-item :label="$t('page.business.resource.gyzj.rksj') + ':'" :label-width="$i18n.locale === 'zh_CN'?'88px':'180px'">
<el-date-picker v-model="daterangeRk" class="chat-histogram-daterange" type="daterange"
range-separator="-" :start-placeholder="$t('form.startDate')" :end-placeholder="$t('form.endDate')"
value-format="yyyy-MM-dd" @change="handleQuery" style="width: 250px;" />
@ -79,7 +78,7 @@
</el-col>
<el-col :span="1.5">
<!-- 导出 -->
<el-button type="primary" :disabled="multiple" @click="handleDc"
<el-button type="primary" @click="exportExcel"
v-hasPermi="['business:resource:gyzj:ffjldc']">{{
$t('form.export') }}</el-button>
</el-col>
@ -92,56 +91,55 @@
<el-table-column :label="$t('page.business.resource.gyzj.mc')" align="left" prop="mc"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.gyzj.md')" align="center" width="150px">
<el-table-column :label="$t('page.business.resource.gyzj.md')" align="center" width="100px" :show-overflow-tooltip="true" >
<template slot-scope="scope">
<span v-if="scope.row.mdOther && scope.row.mdOther != ''&&scope.row.mdMcs && scope.row.mdMcs != ''">{{ scope.row.mdMcs }}{{ scope.row.mdOther }}</span>
<span v-else>{{ scope.row.mdMcs }},{{ scope.row.mdOther }}</span>
<span v-if="scope.row.mdOther && scope.row.mdOther != ''&&scope.row.mdMcs && scope.row.mdMcs != ''">{{ scope.row.mdMcs }},{{ scope.row.mdOther }}</span>
<span v-else>{{ scope.row.mdMcs }}{{ scope.row.mdOther }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gyzj.zytj')" align="center" prop="ffzytj"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.gyzj.zytj')" align="center" prop="ffzytj" :width="$i18n.locale === 'zh_CN'?'100px':'180px'"/>
<el-table-column :label="$t('page.business.resource.gyzj.cksj')" align="center" prop="ffrq" width="150px" />
<el-table-column :label="$t('page.business.resource.gyzj.rksj')" align="center" prop="ghrq" width="150px" />
<el-table-column :label="$t('page.business.resource.gyzj.ckl')" align="center" width="150px">
<el-table-column :label="$t('page.business.resource.gyzj.ckl')" align="center" :width="$i18n.locale === 'zh_CN'?'100px':'180px'">
<template slot-scope="scope">
{{ scope.row.ckl }} {{ scope.row.ckldw }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gyzj.rkl')" align="center" width="150px">
<el-table-column :label="$t('page.business.resource.gyzj.rkl')" align="center" :width="$i18n.locale === 'zh_CN'?'100px':'180px'">
<template slot-scope="scope">
{{ scope.row.rkl }} {{ scope.row.rkldw }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gyzj.syl')" align="center" width="150px">
<el-table-column :label="$t('page.business.resource.gyzj.syl')" align="center" :width="$i18n.locale === 'zh_CN'?'80px':'120px'">
<template slot-scope="scope">
{{ scope.row.syl }} {{ scope.row.syldw }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gyzj.kgy1')" align="center" prop="jsr1Mc"
<el-table-column :label="$t('page.business.resource.gyzj.kgy1')" align="center" prop="jsr1Mc" :width="$i18n.locale === 'zh_CN'?'80px':'180px'"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.gyzj.kgy2')" align="center" prop="jsr2Mc"
<el-table-column :label="$t('page.business.resource.gyzj.kgy2')" align="center" prop="jsr2Mc" :width="$i18n.locale === 'zh_CN'?'80px':'180px'"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.gyzj.lqr1')" align="center" prop="lqr1Mc"
<el-table-column :label="$t('page.business.resource.gyzj.lqr1')" align="center" prop="lqr1Mc" :width="$i18n.locale === 'zh_CN'?'80px':'100px'"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.gyzj.lqr2')" align="center" prop="lqr2Mc"
<el-table-column :label="$t('page.business.resource.gyzj.lqr2')" align="center" prop="lqr2Mc" :width="$i18n.locale === 'zh_CN'?'80px':'100px'"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.gyzj.zcg')" align="center" prop="zcgMc"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.gyzj.jlzt')" align="center" width="100px" fixed="right">
<template slot-scope="scope">
<span v-if="scope.row.jlzt == 1">{{ $t('page.business.resource.resource.jlzt.wsd') }}</span>
<span v-if="scope.row.jlzt == 3">{{ $t('page.business.resource.resource.jlzt.ysd') }}</span>
<span v-if="scope.row.jlzt == 5">{{ $t('page.business.resource.resource.jlzt.dgd') }}</span>
<span v-if="scope.row.jlzt == 7">{{ $t('page.business.resource.resource.jlzt.gd') }}</span>
<span v-if="scope.row.jlzt == 9">{{ $t('page.business.resource.resource.jlzt.djd') }}</span>
<span v-if="scope.row.jlzt == 1"><span class="status-circle wsd"></span>{{ $t('page.business.resource.resource.jlzt.wsd') }}</span>
<span v-if="scope.row.jlzt == 3"><span class="status-circle ysd"></span>{{ $t('page.business.resource.resource.jlzt.ysd') }}</span>
<span v-if="scope.row.jlzt == 5"><span class="status-circle dgd"></span>{{ $t('page.business.resource.resource.jlzt.dgd') }}</span>
<span v-if="scope.row.jlzt == 7"><span class="status-circle gd"></span>{{ $t('page.business.resource.resource.jlzt.gd') }}</span>
<span v-if="scope.row.jlzt == 9"><span class="status-circle djd"></span>{{ $t('page.business.resource.resource.jlzt.djd') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gyzj.jyzt')" align="center" width="100px" fixed="right">
<el-table-column :label="$t('page.business.resource.gyzj.jyzt')" align="center" fixed="right" :width="$i18n.locale === 'zh_CN'?'100px':'180px'">
<template slot-scope="scope">
<span v-if="scope.row.jyzt == 1">{{ $t('page.business.resource.resource.jyzt.wjy') }}</span>
<span v-if="scope.row.jyzt == 3">{{ $t('page.business.resource.resource.jyzt.djy') }}</span>
<span v-if="scope.row.jyzt == 5">{{ $t('page.business.resource.resource.jyzt.jyz') }}</span>
<span v-if="scope.row.jyzt == 1"><span class="status-circle wjy"></span>{{ $t('page.business.resource.resource.jyzt.wjy') }}</span>
<span v-if="scope.row.jyzt == 3"><span class="status-circle djy"></span>{{ $t('page.business.resource.resource.jyzt.djy') }}</span>
<span v-if="scope.row.jyzt == 5"><span class="status-circle jyz"></span>{{ $t('page.business.resource.resource.jyzt.jyz') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('form.operate')" fixed="right" align="center"
@ -209,6 +207,7 @@ import Jd from "./ffjl/Jd";
import Xq from "./ffjl/Xq";
import Jq from "./ffjl/Jq";
import moment from "moment";
import { deepClone } from "@/utils/index";
export default {
name: "FfjlList",
@ -245,9 +244,143 @@ export default {
this.getList()
},
methods: {
//
handleDc() {
exportExcel() {
let that = this
that.$modal.loading()
let params = deepClone(this.queryParams)
params.pageSize = 999999
list(params).then(response => {
var tabelStr =
'<table border="1" class="html-tabel">' +
'<tr style="background:#eee;">' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.mc') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.bh') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.md') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.zytj') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.cksj') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.rksj') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.ckmz') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.rkmz') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.syl') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.lqr1') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.lqr2') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.kgy1') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.kgy2') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.zcg') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.jlzt') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.jyzt') + '</th>' +
' </tr>'
let _datastr = ''
_.forEach(response.rows, function (value) {
let jlzt = ''
switch (value.jlzt) {
case 1:
jlzt = that.$t('page.business.resource.resource.jlzt.wsd')
break
case 3:
jlzt = that.$t('page.business.resource.resource.jlzt.ysd')
break
case 5:
jlzt = that.$t('page.business.resource.resource.jlzt.dgd')
break
case 7:
jlzt = that.$t('page.business.resource.resource.jlzt.gd')
break
case 9:
jlzt = that.$t('page.business.resource.resource.jlzt.djd')
break
default: zjzt = ''
}
let jyzt = ''
switch (value.jyzt) {
case 1:
jyzt = that.$t('page.business.resource.resource.jyzt.wjy')
break
case 3:
jyzt = that.$t('page.business.resource.resource.jyzt.djy')
break
case 5:
jyzt = that.$t('page.business.resource.resource.jyzt.jyz')
break
default: jyzt = ''
}
_datastr =
_datastr +
'<tr style="text-align: center;">' +
' <td>' +
value.mc +
'</td>' +
' <td>' +
'&nbsp;'+value.bh +
'</td>' +
' <td>' +
(value.mdMcs&&value.mdMcs!=''&&value.mdOther&&value.mdOther!=''? (value.mdMcs +","+value.mdOther) :(value.mdMcs +value.mdOther))+
'</td>' +
' <td>' +
value.ffzytj +
'</td>' +
' <td>' +
value.ffrq +
'</td>' +
' <td>' +
value.ghrq +
'</td>' +
' <td>' +
value.ckl +value.ckldw+
'</td>' +
' <td>' +
value.rkl+value.rkldw +
'</td>' +
' <td>' +
value.syl+value.syldw +
'</td>' +
' <td>' +
value.lqr1Mc +
'</td>' +
' <td>' +
value.lqr2Mc +
'</td>' +
' <td>' +
value.jsr1Mc +
'</td>' +
' <td>' +
value.jsr2Mc +
'</td>' +
' <td>' +
value.zcgMc +
'</td>' +
' <td>' +
jlzt +
'</td>' +
' <td>' +
jyzt +
'</td>' +
'</tr>'
})
tabelStr = tabelStr + _datastr + ' <table>'
// Worksheet
var worksheet = that.$t('page.business.resource.gyzj.ffhsjl')
var uri = 'data:application/vnd.ms-excel;base64,'
// HTML
var exportTemplate = `<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
<x:Name>${worksheet}</x:Name>
<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
</head>
<body>
${tabelStr}
</body>
</html>`
var a = document.createElement('a')
a.download = worksheet + '.xls'
a.href = uri + window.btoa(unescape(encodeURIComponent(exportTemplate)))
a.click()
that.$modal.closeLoading()
}).finally(() => {
that.$modal.closeLoading()
})
},
//
handleJq(row) {
@ -326,7 +459,17 @@ export default {
},
//
resetQuery() {
this.resetForm("queryForm")
this.queryParams.mc = null
this.queryParams.mdId = null
this.queryParams.jlzt = null
this.queryParams.jyzt = null
this.queryParams.bh = null
this.queryParams.startDateCk = null
this.queryParams.endDateCk = null
this.queryParams.startDateRk = null
this.queryParams.endDateRk = null
this.daterangeCk = []
this.daterangeRk = []
this.handleQuery()
},
//

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Bj.vue View File

@ -2,7 +2,7 @@
<div>
<!-- 编辑弹窗 -->
<el-dialog :title="$t('form.edit')" :visible.sync="open" width="800px" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Cc.vue View File

@ -3,7 +3,7 @@
<!-- 存储弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.cunchu')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Czrq.vue View File

@ -3,7 +3,7 @@
<!-- 处置容器弹窗 -->
<el-dialog :title="isBatch?$t('page.business.resource.gyzj.plczrqt'):$t('page.business.resource.gyzj.czrqt')" :visible.sync="open" width="1200px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-row style="margin:10px 0px;">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Czyj.vue View File

@ -3,7 +3,7 @@
<!-- 处置药剂弹窗 -->
<el-dialog :title="isBatch?$t('page.business.resource.gyzj.plczyjt'):$t('page.business.resource.gyzj.czyjt')" :visible.sync="open" width="1200px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-row style="margin:10px 0px;">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Ff.vue View File

@ -3,7 +3,7 @@
<!-- 发放弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.fafang')" :visible.sync="open" width="1200px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-row style="margin:10px 0px;">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Gd.vue View File

@ -3,7 +3,7 @@
<!-- 归档弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.guidang')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-row style="margin:10px 0px;">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Gh.vue View File

@ -3,7 +3,7 @@
<!-- 确认归还弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.guihuan')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Jd.vue View File

@ -3,7 +3,7 @@
<!-- 解档弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.jiedang')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-alert :title="$t('page.business.resource.gyzj.jdts')" type="error" :closable="false">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Js.vue View File

@ -3,7 +3,7 @@
<!-- 解锁弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.unlock')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="24">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Jy.vue View File

@ -3,7 +3,7 @@
<!-- 借阅弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.jieyue')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-alert :title="$t('page.business.resource.gyzj.jdts')" type="error" :closable="false">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Qc.vue View File

@ -3,7 +3,7 @@
<!-- 取出弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.quchu')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Rk.vue View File

@ -3,7 +3,7 @@
<!-- 确认入库弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.qrrk')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Sd.vue View File

@ -3,7 +3,7 @@
<!-- 锁定弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.lock')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-row>

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Shbj.vue View File

@ -3,7 +3,7 @@
<!-- 审核编辑弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.shbj')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Shxgkc.vue View File

@ -3,7 +3,7 @@
<!-- 审核修改库存弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.shxgkc')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Sqgh.vue View File

@ -3,7 +3,7 @@
<!-- 申请归还弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.sqguihuan')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Sqrk.vue View File

@ -3,7 +3,7 @@
<!-- 申请入库弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.ruku')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Xgkc.vue View File

@ -3,7 +3,7 @@
<!-- 修改库存弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.xgkc')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 2
- 18
src/views/business/resource/gyzj/comps/gyzj/Xq.vue View File

@ -1,6 +1,6 @@
<template>
<!-- 详情 -->
<div v-show="open">
<div v-if="open">
<div class="detail-container">
<div class="detail-top">
<div class="left-top">
@ -99,35 +99,20 @@
<el-table-column :label="$t('page.business.resource.gyzj.syr')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<div v-if="$i18n.locale === 'zh_CN'">
{{ scope.row.qmrMc }}
</div>
<div v-else>
{{ scope.row.qmrMcEn }}
</div>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gyzj.lqghr')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<div v-if="$i18n.locale === 'zh_CN'">
{{ scope.row.lqrMc }}{{ scope.row.ghrMc }}
</div>
<div v-else>
{{ scope.row.lqrMcEn }}{{ scope.row.ghrMcEn }}
</div>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gyzj.ffjsr')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<div v-if="$i18n.locale === 'zh_CN'">
{{ scope.row.ffrMc }}{{ scope.row.jsrMc }}
</div>
<div v-else>
{{ scope.row.ffrMcEn }}{{ scope.row.jsrMcEn }}
</div>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gyzj.czlx')" align="center"
@ -238,9 +223,8 @@ export default {
this.$modal.loading()
info({ id: row.id }).then(response => {
this.form = response.data
this.getTzList()
this.open = true
this.$modal.closeLoading()
this.getTzList()
}).finally(() => {
this.$modal.closeLoading()
})

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Ysff.vue View File

@ -3,7 +3,7 @@
<!-- 钥匙发放弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.ysff')" :visible.sync="open" width="1200px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="140px">
<el-form ref="form" :model="form" :rules="rules" label-width="140px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div>
<el-row style="margin:10px 0px;">

+ 146
- 25
src/views/business/resource/gyzj/comps/gyzjList.vue View File

@ -6,18 +6,17 @@
<el-form :model="queryParams" ref="queryForm" class="search-area" :inline="true" label-width="88px">
<!-- 名称 -->
<el-form-item :label="$t('page.business.resource.gyzj.mc') + ':'">
<el-input v-model="queryParams.mc" clearable @change="handleQuery"
<el-input v-model="queryParams.mc" clearable
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 编号 -->
<el-form-item :label="$t('page.business.resource.gyzj.bh') + ':'">
<el-input v-model="queryParams.bh" clearable @change="handleQuery"
<el-input v-model="queryParams.bh" clearable
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 借阅状态 -->
<el-form-item :label="$t('page.business.resource.gyzj.jyzt') + ':'">
<el-select v-model="queryParams.jyzt" :placeholder="$t('form.placeholderSelect')" clearable
@change="handleQuery">
<el-form-item :label="$t('page.business.resource.gyzj.jyzt') + ':'" :label-width="$i18n.locale === 'zh_CN'?'88px':'150px'">
<el-select v-model="queryParams.jyzt" :placeholder="$t('form.placeholderSelect')" clearable>
<el-option :label="$t('page.business.resource.resource.jyzt.wjy')" :value="1" />
<el-option :label="$t('page.business.resource.resource.jyzt.djy')" :value="3" />
<el-option :label="$t('page.business.resource.resource.jyzt.jyz')" :value="5" />
@ -25,8 +24,7 @@
</el-form-item>
<!-- 制剂状态 -->
<el-form-item :label="$t('page.business.resource.gyzj.zjzt') + ':'">
<el-select v-model="queryParams.zjzt" :placeholder="$t('form.placeholderSelect')" clearable
@change="handleQuery">
<el-select v-model="queryParams.zjzt" :placeholder="$t('form.placeholderSelect')" clearable>
<el-option :label="$t('page.business.resource.resource.zjzt.rk')" :value="1" />
<el-option :label="$t('page.business.resource.resource.zjzt.wrk')" :value="2" />
<el-option :label="$t('page.business.resource.resource.zjzt.yff')" :value="3" />
@ -40,7 +38,7 @@
<el-form-item :label="$t('page.business.resource.gyzj.sxrq') + ':'">
<el-date-picker v-model="daterange" class="chat-histogram-daterange" type="daterange" range-separator="-"
:start-placeholder="$t('form.startDate')" :end-placeholder="$t('form.endDate')" value-format="yyyy-MM-dd"
@change="handleQuery" style="width: 250px;" />
style="width: 250px;" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{ $t('form.search') }}</el-button>
@ -86,7 +84,7 @@
</el-col>
<el-col :span="1.5">
<!-- 导出 -->
<el-button type="primary" :disabled="multiple" @click="handleDc"
<el-button type="primary" @click="exportExcel"
v-hasPermi="['business:resource:gyzj:dc']">{{
$t('form.export') }}</el-button>
</el-col>
@ -110,25 +108,25 @@
</el-table-column>
<el-table-column :label="$t('page.business.resource.gyzj.sxrq')" align="center" prop="sxrq" width="150px" />
<el-table-column :label="$t('page.business.resource.gyzj.zcg')" align="center" prop="zcgMc" width="130px" />
<el-table-column :label="$t('page.business.resource.gyzj.cctj')" align="center" prop="cctj" width="130px" />
<el-table-column :label="$t('page.business.resource.gyzj.cctj')" align="center" prop="cctj" width="140px" />
<el-table-column :label="$t('page.business.resource.gyzj.ccwz')" align="center" prop="ccwz" width="130px" />
<el-table-column :label="$t('page.business.resource.gyzj.zjzt')" align="center" width="100px" fixed="right">
<template slot-scope="scope">
<span v-if="scope.row.zjzt == 1">{{ $t('page.business.resource.resource.zjzt.rk') }}</span>
<span v-if="scope.row.zjzt == 2">{{ $t('page.business.resource.resource.zjzt.wrk') }}</span>
<span v-if="scope.row.zjzt == 3">{{ $t('page.business.resource.resource.zjzt.yff') }}</span>
<span v-if="scope.row.zjzt == 5">{{ $t('page.business.resource.resource.zjzt.ysd') }}</span>
<span v-if="scope.row.zjzt == 7">{{ $t('page.business.resource.resource.zjzt.dgd') }}</span>
<span v-if="scope.row.zjzt == 9">{{ $t('page.business.resource.resource.zjzt.gd') }}</span>
<span v-if="scope.row.zjzt == 11">{{ $t('page.business.resource.resource.zjzt.djd') }}</span>
<span v-if="scope.row.zjzt == 1"><span class="status-circle rk"></span>{{ $t('page.business.resource.resource.zjzt.rk') }}</span>
<span v-if="scope.row.zjzt == 2"><span class="status-circle wrk"></span>{{ $t('page.business.resource.resource.zjzt.wrk') }}</span>
<span v-if="scope.row.zjzt == 3"><span class="status-circle yff"></span>{{ $t('page.business.resource.resource.zjzt.yff') }}</span>
<span v-if="scope.row.zjzt == 5"><span class="status-circle ysd"></span>{{ $t('page.business.resource.resource.zjzt.ysd') }}</span>
<span v-if="scope.row.zjzt == 7"><span class="status-circle dgd"></span>{{ $t('page.business.resource.resource.zjzt.dgd') }}</span>
<span v-if="scope.row.zjzt == 9"><span class="status-circle gd"></span>{{ $t('page.business.resource.resource.zjzt.gd') }}</span>
<span v-if="scope.row.zjzt == 11"><span class="status-circle djd"></span>{{ $t('page.business.resource.resource.zjzt.djd') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gyzj.jyzt')" align="center" width="100px" fixed="right">
<el-table-column :label="$t('page.business.resource.gyzj.jyzt')" align="center" fixed="right" :width="$i18n.locale === 'zh_CN'?'100px':'150px'">
<template slot-scope="scope">
<span v-if="scope.row.jyzt == 1">{{ $t('page.business.resource.resource.jyzt.wjy') }}</span>
<span v-if="scope.row.jyzt == 3">{{ $t('page.business.resource.resource.jyzt.djy') }}</span>
<span v-if="scope.row.jyzt == 5">{{ $t('page.business.resource.resource.jyzt.jyz') }}</span>
<span v-if="scope.row.jyzt == 1"><span class="status-circle wjy"></span>{{ $t('page.business.resource.resource.jyzt.wjy') }}</span>
<span v-if="scope.row.jyzt == 3"><span class="status-circle djy"></span>{{ $t('page.business.resource.resource.jyzt.djy') }}</span>
<span v-if="scope.row.jyzt == 5"><span class="status-circle jyz"></span>{{ $t('page.business.resource.resource.jyzt.jyz') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('form.operate')" fixed="right" align="center"
@ -261,6 +259,7 @@ import Czrq from "./gyzj/Czrq";
import Czyj from "./gyzj/Czyj";
import Ysff from "./gyzj/Ysff";
import moment from "moment";
import { deepClone } from "@/utils/index";
export default {
name: "GyzjList",
@ -293,9 +292,125 @@ export default {
this.getList()
},
methods: {
//
handleDc() {
exportExcel() {
let that = this
that.$modal.loading()
let params = deepClone(this.queryParams)
params.pageSize = 999999
list(params).then(response => {
var tabelStr =
'<table border="1" class="html-tabel">' +
'<tr style="background:#eee;">' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.mc') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.bh') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.nd') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.kcl') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.sxrq') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.zcg') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.cctj') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.ccwz') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.zjzt') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gyzj.jyzt') + '</th>' +
' </tr>'
let _datastr = ''
_.forEach(response.rows, function (value) {
let zjzt = ''
switch (value.zjzt) {
case 1:
zjzt = that.$t('page.business.resource.resource.zjzt.rk')
break
case 2:
zjzt = that.$t('page.business.resource.resource.zjzt.wrk')
break
case 3:
zjzt = that.$t('page.business.resource.resource.zjzt.yff')
break
case 5:
zjzt = that.$t('page.business.resource.resource.zjzt.ysd')
break
case 7:
zjzt = that.$t('page.business.resource.resource.zjzt.dgd')
break
case 9:
zjzt = that.$t('page.business.resource.resource.zjzt.gd')
break
case 11:
zjzt = that.$t('page.business.resource.resource.zjzt.djd')
break
default: zjzt = ''
}
let jyzt = ''
switch (value.jyzt) {
case 1:
jyzt = that.$t('page.business.resource.resource.jyzt.wjy')
break
case 3:
jyzt = that.$t('page.business.resource.resource.jyzt.djy')
break
case 5:
jyzt = that.$t('page.business.resource.resource.jyzt.jyz')
break
default: jyzt = ''
}
_datastr =
_datastr +
'<tr style="text-align: center;">' +
' <td>' +
value.mc +
'</td>' +
' <td>' +
'&nbsp;'+ value.bh +
'</td>' +
' <td>' +
value.nd + value.nddw +
'</td>' +
' <td>' +
value.kc + value.kcdw +
'</td>' +
' <td>' +
value.sxrq +
'</td>' +
' <td>' +
value.zcgMc +
'</td>' +
' <td>' +
value.cctj +
'</td>' +
' <td>' +
value.ccwz +
'</td>' +
' <td>' +
zjzt +
'</td>' +
' <td>' +
jyzt +
'</td>' +
'</tr>'
})
tabelStr = tabelStr + _datastr + ' <table>'
// Worksheet
var worksheet = that.$t('page.business.resource.gyzj.gyzjgl')
var uri = 'data:application/vnd.ms-excel;base64,'
// HTML
var exportTemplate = `<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
<x:Name>${worksheet}</x:Name>
<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
</head>
<body>
${tabelStr}
</body>
</html>`
var a = document.createElement('a')
a.download = worksheet + '.xls'
a.href = uri + window.btoa(unescape(encodeURIComponent(exportTemplate)))
a.click()
that.$modal.closeLoading()
}).finally(() => {
that.$modal.closeLoading()
})
},
//
handleYsff() {
@ -419,7 +534,13 @@ export default {
},
//
resetQuery() {
this.resetForm("queryForm")
this.queryParams.mc = null
this.queryParams.jyzt = null
this.queryParams.zjzt = null
this.queryParams.bh = null
this.queryParams.startDate = null
this.queryParams.endDate = null
this.daterange = []
this.handleQuery()
},
//

+ 3
- 3
src/views/business/resource/gyzj/index.vue View File

@ -4,7 +4,7 @@
<div class="search-box" v-show="!showDetail">
<div class="search-item" :class="active === item.key ? 'active' : ''" v-for="(item, index) in tabList"
:key="index" @click="changeTab(item)">
{{ item.name }}
{{ $t(item.name) }}
</div>
</div>
@ -26,8 +26,8 @@ export default {
return {
showDetail: false,
tabList: [
{ key: 'gyzjList', name: this.$t('page.business.resource.gyzj.gyzjgl') },
{ key: 'ffjlList', name: this.$t('page.business.resource.gyzj.ffhsjl') },
{ key: 'gyzjList', name: 'page.business.resource.gyzj.gyzjgl' },
{ key: 'ffjlList', name: 'page.business.resource.gyzj.ffhsjl' },
],
active: 'gyzjList',
}

+ 1
- 1
src/views/business/resource/mjy/comps/ffjl/Gd.vue View File

@ -3,7 +3,7 @@
<!-- 归档弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.guidang')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-row style="margin:10px 0px;">

+ 1
- 1
src/views/business/resource/mjy/comps/ffjl/Jd.vue View File

@ -3,7 +3,7 @@
<!-- 解档弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.jiedang')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="24">

+ 1
- 1
src/views/business/resource/mjy/comps/ffjl/Jq.vue View File

@ -3,7 +3,7 @@
<!-- 加签弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.jiaqian')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="24">

+ 1
- 1
src/views/business/resource/mjy/comps/ffjl/Js.vue View File

@ -3,7 +3,7 @@
<!-- 解锁弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.unlock')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="24">

+ 1
- 1
src/views/business/resource/mjy/comps/ffjl/Jy.vue View File

@ -3,7 +3,7 @@
<!-- 借阅弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.jieyue')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="24">

+ 1
- 1
src/views/business/resource/mjy/comps/ffjl/Sd.vue View File

@ -3,7 +3,7 @@
<!-- 锁定弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.lock')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-row style="margin:10px 0px;">

+ 1
- 1
src/views/business/resource/mjy/comps/ffjl/Xq.vue View File

@ -1,6 +1,6 @@
<template>
<!-- 详情 -->
<div class="detail-container">
<div class="detail-container" v-if="open">
<div class="detail-top">
<div class="left-top">
<img src="@/assets/images/back.png" @click="cancel()" />

+ 179
- 36
src/views/business/resource/mjy/comps/ffjlList.vue View File

@ -8,23 +8,22 @@
<el-col :span="24">
<!-- 名称 -->
<el-form-item :label="$t('page.business.resource.mjy.mc') + ':'">
<el-input v-model="queryParams.mc" clearable @change="handleQuery"
<el-input v-model="queryParams.mc" clearable
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 编号 -->
<el-form-item :label="$t('page.business.resource.mjy.bh') + ':'">
<el-input v-model="queryParams.bh" clearable @change="handleQuery"
<el-input v-model="queryParams.bh" clearable
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 目的 -->
<el-form-item :label="$t('page.business.resource.mjy.md') + ':'">
<el-input v-model="queryParams.mdId" clearable @change="handleQuery"
<el-input v-model="queryParams.mdId" clearable
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 记录状态 -->
<el-form-item :label="$t('page.business.resource.mjy.jlzt') + ':'">
<el-select v-model="queryParams.jlzt" :placeholder="$t('form.placeholderSelect')" clearable
@change="handleQuery">
<el-select v-model="queryParams.jlzt" :placeholder="$t('form.placeholderSelect')" clearable>
<el-option :label="$t('page.business.resource.resource.jlzt.wsd')" :value="1" />
<el-option :label="$t('page.business.resource.resource.jlzt.ysd')" :value="3" />
<el-option :label="$t('page.business.resource.resource.jlzt.dgd')" :value="5" />
@ -33,9 +32,8 @@
</el-select>
</el-form-item>
<!-- 借阅状态 -->
<el-form-item :label="$t('page.business.resource.mjy.jyzt') + ':'">
<el-select v-model="queryParams.jyzt" :placeholder="$t('form.placeholderSelect')" clearable
@change="handleQuery">
<el-form-item :label="$t('page.business.resource.mjy.jyzt') + ':'" :label-width="$i18n.locale === 'zh_CN'?'88px':'150px'">
<el-select v-model="queryParams.jyzt" :placeholder="$t('form.placeholderSelect')" clearable>
<el-option :label="$t('page.business.resource.resource.jyzt.wjy')" :value="1" />
<el-option :label="$t('page.business.resource.resource.jyzt.djy')" :value="3" />
<el-option :label="$t('page.business.resource.resource.jyzt.jyz')" :value="5" />
@ -50,13 +48,13 @@
<el-row>
<el-col :span="24">
<!-- 出库日期 -->
<el-form-item :label="$t('page.business.resource.mjy.cksj') + ':'">
<el-form-item :label="$t('page.business.resource.mjy.cksj') + ':'" :label-width="$i18n.locale === 'zh_CN'?'88px':'180px'">
<el-date-picker v-model="daterangeCk" class="chat-histogram-daterange" type="daterange"
range-separator="-" :start-placeholder="$t('form.startDate')" :end-placeholder="$t('form.endDate')"
value-format="yyyy-MM-dd" @change="handleQuery" style="width: 250px;" />
</el-form-item>
<!-- 入库日期 -->
<el-form-item :label="$t('page.business.resource.mjy.rksj') + ':'">
<el-form-item :label="$t('page.business.resource.mjy.rksj') + ':'" :label-width="$i18n.locale === 'zh_CN'?'88px':'180px'">
<el-date-picker v-model="daterangeRk" class="chat-histogram-daterange" type="daterange"
range-separator="-" :start-placeholder="$t('form.startDate')" :end-placeholder="$t('form.endDate')"
value-format="yyyy-MM-dd" @change="handleQuery" style="width: 250px;" />
@ -79,7 +77,7 @@
</el-col>
<el-col :span="1.5">
<!-- 导出 -->
<el-button type="primary" :disabled="multiple" @click="handleDc"
<el-button type="primary" @click="exportExcel"
v-hasPermi="['business:resource:mjy:ffjldc']">{{
$t('form.export') }}</el-button>
</el-col>
@ -91,55 +89,55 @@
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.bh')" align="center" prop="bh"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.gyzj.md')" align="center" width="150px">
<el-table-column :label="$t('page.business.resource.gyzj.md')" align="center" width="100px" :show-overflow-tooltip="true" >
<template slot-scope="scope">
<span v-if="scope.row.mdOther && scope.row.mdOther != ''&&scope.row.mdMcs && scope.row.mdMcs != ''">{{ scope.row.mdMcs }}{{ scope.row.mdOther }}</span>
<span v-else>{{ scope.row.mdMcs }},{{ scope.row.mdOther }}</span>
<span v-if="scope.row.mdOther && scope.row.mdOther != ''&&scope.row.mdMcs && scope.row.mdMcs != ''">{{ scope.row.mdMcs }},{{ scope.row.mdOther }}</span>
<span v-else>{{ scope.row.mdMcs }}{{ scope.row.mdOther }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.zytj')" align="center" prop="ffzytj"
:show-overflow-tooltip="true" />
:width="$i18n.locale === 'zh_CN'?'100px':'180px'"/>
<el-table-column :label="$t('page.business.resource.mjy.cksj')" align="center" prop="ffrq" width="150px" />
<el-table-column :label="$t('page.business.resource.mjy.rksj')" align="center" prop="ghrq" width="150px" />
<el-table-column :label="$t('page.business.resource.mjy.ckmz')" align="center" width="150px">
<el-table-column :label="$t('page.business.resource.mjy.ckmz')" align="center" :width="$i18n.locale === 'zh_CN'?'100px':'180px'">
<template slot-scope="scope">
{{ scope.row.ckmz }} {{ scope.row.ckmzdw }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.rkmz')" align="center" width="150px">
<el-table-column :label="$t('page.business.resource.mjy.rkmz')" align="center" :width="$i18n.locale === 'zh_CN'?'100px':'180px'">
<template slot-scope="scope">
{{ scope.row.rkmz }} {{ scope.row.rkmzdw }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.syl')" align="center" width="150px">
<el-table-column :label="$t('page.business.resource.mjy.syl')" align="center" :width="$i18n.locale === 'zh_CN'?'80px':'120px'">
<template slot-scope="scope">
{{ scope.row.syl }} {{ scope.row.syldw }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.lqr1')" align="center" prop="lqr1Mc"
<el-table-column :label="$t('page.business.resource.mjy.lqr1')" align="center" prop="lqr1Mc" :width="$i18n.locale === 'zh_CN'?'80px':'100px'"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.lqr2')" align="center" prop="lqr2Mc"
<el-table-column :label="$t('page.business.resource.mjy.lqr2')" align="center" prop="lqr2Mc" :width="$i18n.locale === 'zh_CN'?'80px':'100px'"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.kgy1')" align="center" prop="jsr1Mc"
<el-table-column :label="$t('page.business.resource.mjy.kgy1')" align="center" prop="jsr1Mc" :width="$i18n.locale === 'zh_CN'?'100px':'180px'"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.kgy2')" align="center" prop="jsr2Mc"
<el-table-column :label="$t('page.business.resource.mjy.kgy2')" align="center" prop="jsr2Mc" :width="$i18n.locale === 'zh_CN'?'100px':'180px'"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.zcg')" align="center" prop="zcgMc"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.jlzt')" align="center" width="100px" fixed="right">
<template slot-scope="scope">
<span v-if="scope.row.jlzt == 1">{{ $t('page.business.resource.resource.jlzt.wsd') }}</span>
<span v-if="scope.row.jlzt == 3">{{ $t('page.business.resource.resource.jlzt.ysd') }}</span>
<span v-if="scope.row.jlzt == 5">{{ $t('page.business.resource.resource.jlzt.dgd') }}</span>
<span v-if="scope.row.jlzt == 7">{{ $t('page.business.resource.resource.jlzt.gd') }}</span>
<span v-if="scope.row.jlzt == 9">{{ $t('page.business.resource.resource.jlzt.djd') }}</span>
<span v-if="scope.row.jlzt == 1"><span class="status-circle wsd"></span>{{ $t('page.business.resource.resource.jlzt.wsd') }}</span>
<span v-if="scope.row.jlzt == 3"><span class="status-circle ysd"></span>{{ $t('page.business.resource.resource.jlzt.ysd') }}</span>
<span v-if="scope.row.jlzt == 5"><span class="status-circle dgd"></span>{{ $t('page.business.resource.resource.jlzt.dgd') }}</span>
<span v-if="scope.row.jlzt == 7"><span class="status-circle gd"></span>{{ $t('page.business.resource.resource.jlzt.gd') }}</span>
<span v-if="scope.row.jlzt == 9"><span class="status-circle djd"></span>{{ $t('page.business.resource.resource.jlzt.djd') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.jyzt')" align="center" width="100px" fixed="right">
<el-table-column :label="$t('page.business.resource.mjy.jyzt')" align="center" fixed="right" :width="$i18n.locale === 'zh_CN'?'100px':'180px'">
<template slot-scope="scope">
<span v-if="scope.row.jyzt == 1">{{ $t('page.business.resource.resource.jyzt.wjy') }}</span>
<span v-if="scope.row.jyzt == 3">{{ $t('page.business.resource.resource.jyzt.djy') }}</span>
<span v-if="scope.row.jyzt == 5">{{ $t('page.business.resource.resource.jyzt.jyz') }}</span>
<span v-if="scope.row.jyzt == 1"><span class="status-circle cg"></span>{{ $t('page.business.resource.resource.jyzt.wjy') }}</span>
<span v-if="scope.row.jyzt == 3"><span class="status-circle ysd"></span>{{ $t('page.business.resource.resource.jyzt.djy') }}</span>
<span v-if="scope.row.jyzt == 5"><span class="status-circle syz"></span>{{ $t('page.business.resource.resource.jyzt.jyz') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('form.operate')" fixed="right" align="center"
@ -189,7 +187,7 @@
<Jd key="Jd" ref="Jd" @callback="handleQuery" />
<!-- 借阅 -->
<Jy key="Jy" ref="Jy" @callback="handleQuery" />
<!-- 借阅 -->
<!-- 详情 -->
<Xq key="Xq" v-show="showDetail" ref="Xq" @callback="closeXq"/>
<!-- 加签 -->
<Jq key="Jq" ref="Jq" @callback="handleQuery" />
@ -207,6 +205,7 @@ import Jd from "./ffjl/Jd";
import Xq from "./ffjl/Xq";
import Jq from "./ffjl/Jq";
import moment from "moment";
import { deepClone } from "@/utils/index";
export default {
name: "FfjlList",
@ -243,9 +242,143 @@ export default {
this.getList()
},
methods: {
//
handleDc() {
exportExcel() {
let that = this
that.$modal.loading()
let params = deepClone(this.queryParams)
params.pageSize = 999999
list(params).then(response => {
var tabelStr =
'<table border="1" class="html-tabel">' +
'<tr style="background:#eee;">' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.mc') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.bh') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.md') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.zytj') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.cksj') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.rksj') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.ckmz') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.rkmz') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.syl') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.lqr1') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.lqr2') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.kgy1') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.kgy2') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.zcg') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.jlzt') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.jyzt') + '</th>' +
' </tr>'
let _datastr = ''
_.forEach(response.rows, function (value) {
let jlzt = ''
switch (value.jlzt) {
case 1:
jlzt = that.$t('page.business.resource.resource.jlzt.wsd')
break
case 3:
jlzt = that.$t('page.business.resource.resource.jlzt.ysd')
break
case 5:
jlzt = that.$t('page.business.resource.resource.jlzt.dgd')
break
case 7:
jlzt = that.$t('page.business.resource.resource.jlzt.gd')
break
case 9:
jlzt = that.$t('page.business.resource.resource.jlzt.djd')
break
default: zjzt = ''
}
let jyzt = ''
switch (value.jyzt) {
case 1:
jyzt = that.$t('page.business.resource.resource.jyzt.wjy')
break
case 3:
jyzt = that.$t('page.business.resource.resource.jyzt.djy')
break
case 5:
jyzt = that.$t('page.business.resource.resource.jyzt.jyz')
break
default: jyzt = ''
}
_datastr =
_datastr +
'<tr style="text-align: center;">' +
' <td>' +
value.mc +
'</td>' +
' <td>' +
'&nbsp;'+value.bh +
'</td>' +
' <td>' +
(value.mdMcs&&value.mdMcs!=''&&value.mdOther&&value.mdOther!=''? (value.mdMcs +","+value.mdOther) :(value.mdMcs +value.mdOther))+
'</td>' +
' <td>' +
value.ffzytj +
'</td>' +
' <td>' +
value.ffrq +
'</td>' +
' <td>' +
value.ghrq +
'</td>' +
' <td>' +
value.ckmz +value.ckmzdw+
'</td>' +
' <td>' +
value.rkmz+value.rkmzdw +
'</td>' +
' <td>' +
value.syl+value.syldw +
'</td>' +
' <td>' +
value.lqr1Mc +
'</td>' +
' <td>' +
value.lqr2Mc +
'</td>' +
' <td>' +
value.jsr1Mc +
'</td>' +
' <td>' +
value.jsr2Mc +
'</td>' +
' <td>' +
value.zcgMc +
'</td>' +
' <td>' +
jlzt +
'</td>' +
' <td>' +
jyzt +
'</td>' +
'</tr>'
})
tabelStr = tabelStr + _datastr + ' <table>'
// Worksheet
var worksheet = that.$t('page.business.resource.mjy.ffhsjl')
var uri = 'data:application/vnd.ms-excel;base64,'
// HTML
var exportTemplate = `<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
<x:Name>${worksheet}</x:Name>
<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
</head>
<body>
${tabelStr}
</body>
</html>`
var a = document.createElement('a')
a.download = worksheet + '.xls'
a.href = uri + window.btoa(unescape(encodeURIComponent(exportTemplate)))
a.click()
that.$modal.closeLoading()
}).finally(() => {
that.$modal.closeLoading()
})
},
//
handleJq(row) {
@ -324,7 +457,17 @@ export default {
},
//
resetQuery() {
this.resetForm("queryForm")
this.queryParams.mc = null
this.queryParams.mdId = null
this.queryParams.jlzt = null
this.queryParams.jyzt = null
this.queryParams.bh = null
this.queryParams.startDateCk = null
this.queryParams.endDateCk = null
this.queryParams.startDateRk = null
this.queryParams.endDateRk = null
this.daterangeCk = []
this.daterangeRk = []
this.handleQuery()
},
//

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Bj.vue View File

@ -2,7 +2,7 @@
<div>
<!-- 编辑弹窗 -->
<el-dialog :title="$t('form.edit')" :visible.sync="open" width="800px" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Cc.vue View File

@ -3,7 +3,7 @@
<!-- 存储弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.cunchu')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Czrq.vue View File

@ -3,7 +3,7 @@
<!-- 处置容器弹窗 -->
<el-dialog :title="isBatch?$t('page.business.resource.mjy.plczrqt'):$t('page.business.resource.mjy.czrqt')" :visible.sync="open" width="1200px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-row style="margin:10px 0px;">

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Czyj.vue View File

@ -3,7 +3,7 @@
<!-- 处置药剂弹窗 -->
<el-dialog :title="isBatch?$t('page.business.resource.mjy.plczyjt'):$t('page.business.resource.mjy.czyjt')" :visible.sync="open" width="1200px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-row style="margin:10px 0px;">

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Ff.vue View File

@ -3,7 +3,7 @@
<!-- 发放弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.fafang')" :visible.sync="open" width="1200px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-row style="margin:10px 0px;">

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Gd.vue View File

@ -3,7 +3,7 @@
<!-- 归档弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.guidang')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-row style="margin:10px 0px;">

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Gh.vue View File

@ -3,7 +3,7 @@
<!-- 归还弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.guihuan')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Jd.vue View File

@ -3,7 +3,7 @@
<!-- 解档弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.jiedang')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-alert :title="$t('page.business.resource.mjy.jdts')" type="error" :closable="false">

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Js.vue View File

@ -3,7 +3,7 @@
<!-- 解锁弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.unlock')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="24">

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Jy.vue View File

@ -3,7 +3,7 @@
<!-- 借阅弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.jieyue')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-alert :title="$t('page.business.resource.mjy.jdts')" type="error" :closable="false">

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Qc.vue View File

@ -3,7 +3,7 @@
<!-- 取出弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.quchu')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Rk.vue View File

@ -3,7 +3,7 @@
<!-- 入库弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.ruku')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Sd.vue View File

@ -3,7 +3,7 @@
<!-- 锁定弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.lock')" :visible.sync="open" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div :style="isBatch ? 'display:block' : 'display:none'">
<el-row>

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Shbj.vue View File

@ -3,7 +3,7 @@
<!-- 审核编辑弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.shbj')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Shxgkc.vue View File

@ -3,7 +3,7 @@
<!-- 审核修改库存弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.shxgkc')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Xgkc.vue View File

@ -2,7 +2,7 @@
<div>
<!-- 修改库存弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.xgkc')" :visible.sync="open" width="800px" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 17
src/views/business/resource/mjy/comps/mjy/Xq.vue View File

@ -1,6 +1,6 @@
<template>
<!-- 详情 -->
<div v-show="open">
<div v-if="open">
<div class="detail-container">
<div class="detail-top">
<div class="left-top">
@ -99,34 +99,19 @@
<el-table-column :label="$t('page.business.resource.mjy.syr')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<div v-if="$i18n.locale === 'zh_CN'">
{{ scope.row.qmrMc }}
</div>
<div v-else>
{{ scope.row.qmrMcEn }}
</div>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.lqghr')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<div v-if="$i18n.locale === 'zh_CN'">
{{ scope.row.lqrMc }}{{ scope.row.ghrMc }}
</div>
<div v-else>
{{ scope.row.lqrMcEn }}{{ scope.row.ghrMcEn }}
</div>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.ffjsr')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<div v-if="$i18n.locale === 'zh_CN'">
{{ scope.row.ffrMc }}{{ scope.row.jsrMc }}
</div>
<div v-else>
{{ scope.row.ffrMcEn }}{{ scope.row.jsrMcEn }}
</div>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.czlx')" align="center"
@ -237,7 +222,6 @@ export default {
this.form = response.data
this.getTzList()
this.open = true
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Ysff.vue View File

@ -3,7 +3,7 @@
<!-- 钥匙发放弹窗 -->
<el-dialog :title="$t('page.business.resource.mjy.ysff')" :visible.sync="open" width="1200px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="140px">
<el-form ref="form" :model="form" :rules="rules" label-width="140px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<div>
<el-row style="margin:10px 0px;">

+ 156
- 36
src/views/business/resource/mjy/comps/mjyList.vue View File

@ -6,18 +6,17 @@
<el-form :model="queryParams" ref="queryForm" class="search-area" :inline="true" label-width="88px">
<!-- 名称 -->
<el-form-item :label="$t('page.business.resource.mjy.mc') + ':'">
<el-input v-model="queryParams.mc" clearable @change="handleQuery"
<el-input v-model="queryParams.mc" clearable
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 编号 -->
<el-form-item :label="$t('page.business.resource.mjy.bh') + ':'">
<el-input v-model="queryParams.bh" clearable @change="handleQuery"
<el-input v-model="queryParams.bh" clearable
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 借阅状态 -->
<el-form-item :label="$t('page.business.resource.mjy.jyzt') + ':'">
<el-select v-model="queryParams.jyzt" :placeholder="$t('form.placeholderSelect')" clearable
@change="handleQuery">
<el-form-item :label="$t('page.business.resource.mjy.jyzt') + ':'" :label-width="$i18n.locale === 'zh_CN'?'88px':'150px'">
<el-select v-model="queryParams.jyzt" :placeholder="$t('form.placeholderSelect')" clearable>
<el-option :label="$t('page.business.resource.resource.jyzt.wjy')" :value="1" />
<el-option :label="$t('page.business.resource.resource.jyzt.djy')" :value="3" />
<el-option :label="$t('page.business.resource.resource.jyzt.jyz')" :value="5" />
@ -25,8 +24,7 @@
</el-form-item>
<!-- 制剂状态 -->
<el-form-item :label="$t('page.business.resource.mjy.zjzt') + ':'">
<el-select v-model="queryParams.zjzt" :placeholder="$t('form.placeholderSelect')" clearable
@change="handleQuery">
<el-select v-model="queryParams.zjzt" :placeholder="$t('form.placeholderSelect')" clearable>
<el-option :label="$t('page.business.resource.resource.zjzt.rk')" :value="1" />
<el-option :label="$t('page.business.resource.resource.zjzt.wrk')" :value="2" />
<el-option :label="$t('page.business.resource.resource.zjzt.yff')" :value="3" />
@ -40,7 +38,7 @@
<el-form-item :label="$t('page.business.resource.mjy.sxrq') + ':'">
<el-date-picker v-model="daterange" class="chat-histogram-daterange" type="daterange" range-separator="-"
:start-placeholder="$t('form.startDate')" :end-placeholder="$t('form.endDate')" value-format="yyyy-MM-dd"
@change="handleQuery" style="width: 250px;" />
style="width: 250px;" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{ $t('form.search') }}</el-button>
@ -87,9 +85,8 @@
</el-col>
<el-col :span="1.5">
<!-- 导出 -->
<el-button type="primary" :disabled="multiple" @click="handleDc"
v-hasPermi="['business:resource:mjy:dc']">{{
$t('form.export') }}</el-button>
<el-button type="primary" @click="exportExcel" v-hasPermi="['business:resource:mjy:dc']">{{
$t('form.export') }}</el-button>
</el-col>
</el-row>
@ -111,25 +108,25 @@
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.sxrq')" align="center" prop="sxrq" width="150px" />
<el-table-column :label="$t('page.business.resource.mjy.zcg')" align="center" prop="zcgMc" width="130px" />
<el-table-column :label="$t('page.business.resource.mjy.cctj')" align="center" prop="cctj" width="130px" />
<el-table-column :label="$t('page.business.resource.mjy.cctj')" align="center" prop="cctj" width="140px" />
<el-table-column :label="$t('page.business.resource.mjy.ccwz')" align="center" prop="ccwz" width="130px" />
<el-table-column :label="$t('page.business.resource.mjy.zjzt')" align="center" width="100px" fixed="right">
<template slot-scope="scope">
<span v-if="scope.row.zjzt == 1">{{ $t('page.business.resource.resource.zjzt.rk') }}</span>
<span v-if="scope.row.zjzt == 2">{{ $t('page.business.resource.resource.zjzt.wrk') }}</span>
<span v-if="scope.row.zjzt == 3">{{ $t('page.business.resource.resource.zjzt.yff') }}</span>
<span v-if="scope.row.zjzt == 5">{{ $t('page.business.resource.resource.zjzt.ysd') }}</span>
<span v-if="scope.row.zjzt == 7">{{ $t('page.business.resource.resource.zjzt.dgd') }}</span>
<span v-if="scope.row.zjzt == 9">{{ $t('page.business.resource.resource.zjzt.gd') }}</span>
<span v-if="scope.row.zjzt == 11">{{ $t('page.business.resource.resource.zjzt.djd') }}</span>
<span v-if="scope.row.zjzt == 1"><span class="status-circle rk"></span>{{ $t('page.business.resource.resource.zjzt.rk') }}</span>
<span v-if="scope.row.zjzt == 2"><span class="status-circle wrk"></span>{{ $t('page.business.resource.resource.zjzt.wrk') }}</span>
<span v-if="scope.row.zjzt == 3"><span class="status-circle yff"></span>{{ $t('page.business.resource.resource.zjzt.yff') }}</span>
<span v-if="scope.row.zjzt == 5"><span class="status-circle ysd"></span>{{ $t('page.business.resource.resource.zjzt.ysd') }}</span>
<span v-if="scope.row.zjzt == 7"><span class="status-circle dgd"></span>{{ $t('page.business.resource.resource.zjzt.dgd') }}</span>
<span v-if="scope.row.zjzt == 9"><span class="status-circle gd"></span>{{ $t('page.business.resource.resource.zjzt.gd') }}</span>
<span v-if="scope.row.zjzt == 11"><span class="status-circle djd"></span>{{ $t('page.business.resource.resource.zjzt.djd') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.jyzt')" align="center" width="100px" fixed="right">
<el-table-column :label="$t('page.business.resource.mjy.jyzt')" align="center" fixed="right" :width="$i18n.locale === 'zh_CN'?'100px':'150px'">
<template slot-scope="scope">
<span v-if="scope.row.jyzt == 1">{{ $t('page.business.resource.resource.jyzt.wjy') }}</span>
<span v-if="scope.row.jyzt == 3">{{ $t('page.business.resource.resource.jyzt.djy') }}</span>
<span v-if="scope.row.jyzt == 5">{{ $t('page.business.resource.resource.jyzt.jyz') }}</span>
<span v-if="scope.row.jyzt == 1"><span class="status-circle wjy"></span>{{ $t('page.business.resource.resource.jyzt.wjy') }}</span>
<span v-if="scope.row.jyzt == 3"><span class="status-circle djy"></span>{{ $t('page.business.resource.resource.jyzt.djy') }}</span>
<span v-if="scope.row.jyzt == 5"><span class="status-circle jyz"></span>{{ $t('page.business.resource.resource.jyzt.jyz') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('form.operate')" fixed="right" align="center"
@ -186,7 +183,7 @@
<el-button type="text" @click="handleGh(scope.row)" v-hasPermi="['business:resource:mjy:gh']">{{
$t('page.business.resource.mjy.guihuan') }}</el-button>
</template>
<template v-if="scope.row.zjzt == 2">
<template v-if="scope.row.zjzt == 2">
<!-- 入库 -->
<el-button type="text" @click="handleRk(scope.row)" v-hasPermi="['business:resource:mjy:rk']">{{
$t('page.business.resource.mjy.ruku') }}</el-button>
@ -261,17 +258,18 @@ import Czrq from "./mjy/Czrq";
import Czyj from "./mjy/Czyj";
import Ysff from "./mjy/Ysff";
import moment from "moment";
import { deepClone } from "@/utils/index";
export default {
name: "MjyList",
components: { Rk,Sd, Js, Gd, Xq, Jd, Bj, Shbj, Xgkc, Shxgkc, Jy, Gh, Czyj, Czrq, Ff, Ysff },
components: { Rk, Sd, Js, Gd, Xq, Jd, Bj, Shbj, Xgkc, Shxgkc, Jy, Gh, Czyj, Czrq, Ff, Ysff },
data() {
return {
daterange: [],
loading: true,
single: true,
multiple: true,
showDetail:false,
showDetail: false,
total: 0,
list: [],
//
@ -293,9 +291,125 @@ export default {
this.getList()
},
methods: {
//
handleDc() {
exportExcel() {
let that = this
that.$modal.loading()
let params = deepClone(this.queryParams)
params.pageSize = 999999
list(params).then(response => {
var tabelStr =
'<table border="1" class="html-tabel">' +
'<tr style="background:#eee;">' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.mc') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.bh') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.nd') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.kcl') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.sxrq') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.zcg') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.cctj') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.ccwz') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.zjzt') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.mjy.jyzt') + '</th>' +
' </tr>'
let _datastr = ''
_.forEach(response.rows, function (value) {
let zjzt = ''
switch (value.zjzt) {
case 1:
zjzt = that.$t('page.business.resource.resource.zjzt.rk')
break
case 2:
zjzt = that.$t('page.business.resource.resource.zjzt.wrk')
break
case 3:
zjzt = that.$t('page.business.resource.resource.zjzt.yff')
break
case 5:
zjzt = that.$t('page.business.resource.resource.zjzt.ysd')
break
case 7:
zjzt = that.$t('page.business.resource.resource.zjzt.dgd')
break
case 9:
zjzt = that.$t('page.business.resource.resource.zjzt.gd')
break
case 11:
zjzt = that.$t('page.business.resource.resource.zjzt.djd')
break
default: zjzt = ''
}
let jyzt = ''
switch (value.jyzt) {
case 1:
jyzt = that.$t('page.business.resource.resource.jyzt.wjy')
break
case 3:
jyzt = that.$t('page.business.resource.resource.jyzt.djy')
break
case 5:
jyzt = that.$t('page.business.resource.resource.jyzt.jyz')
break
default: jyzt = ''
}
_datastr =
_datastr +
'<tr style="text-align: center;">' +
' <td>' +
value.mc +
'</td>' +
' <td>' +
'&nbsp;'+value.bh +
'</td>' +
' <td>' +
value.nd + value.nddw +
'</td>' +
' <td>' +
value.kc + value.kcdw +
'</td>' +
' <td>' +
value.sxrq +
'</td>' +
' <td>' +
value.zcgMc +
'</td>' +
' <td>' +
value.cctj +
'</td>' +
' <td>' +
value.ccwz +
'</td>' +
' <td>' +
zjzt +
'</td>' +
' <td>' +
jyzt +
'</td>' +
'</tr>'
})
tabelStr = tabelStr + _datastr + ' <table>'
// Worksheet
var worksheet = that.$t('page.business.resource.mjy.mjygl')
var uri = 'data:application/vnd.ms-excel;base64,'
// HTML
var exportTemplate = `<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
<x:Name>${worksheet}</x:Name>
<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
</head>
<body>
${tabelStr}
</body>
</html>`
var a = document.createElement('a')
a.download = worksheet + '.xls'
a.href = uri + window.btoa(unescape(encodeURIComponent(exportTemplate)))
a.click()
that.$modal.closeLoading()
}).finally(() => {
that.$modal.closeLoading()
})
},
//
handleYsff() {
@ -349,7 +463,7 @@ export default {
handleGh(row) {
this.$refs.Gh.show(row)
},
//
//
handleRk(row) {
this.$refs.Rk.show(row)
},
@ -357,15 +471,15 @@ export default {
checkSelectable(row) {
return true;
},
closeXq(){
this.showDetail=false
this.$emit('showDetail',this.showDetail)
closeXq() {
this.showDetail = false
this.$emit('showDetail', this.showDetail)
this.handleQuery()
},
//
handleXq(row) {
this.showDetail=true
this.$emit('showDetail',this.showDetail)
this.showDetail = true
this.$emit('showDetail', this.showDetail)
this.$refs.Xq.show(row)
},
//
@ -419,7 +533,13 @@ export default {
},
//
resetQuery() {
this.resetForm("queryForm")
this.queryParams.mc = null
this.queryParams.jyzt = null
this.queryParams.zjzt = null
this.queryParams.bh = null
this.queryParams.startDate = null
this.queryParams.endDate = null
this.daterange = []
this.handleQuery()
},
//

+ 3
- 3
src/views/business/resource/mjy/index.vue View File

@ -4,7 +4,7 @@
<div class="search-box" v-show="!showDetail">
<div class="search-item" :class="active === item.key ? 'active' : ''" v-for="(item, index) in tabList"
:key="index" @click="changeTab(item)">
{{ item.name }}
{{ $t(item.name) }}
</div>
</div>
@ -26,8 +26,8 @@ export default {
return {
showDetail: false,
tabList: [
{ key: 'mjyList', name: this.$t('page.business.resource.mjy.mjygl') },
{ key: 'ffjlList', name: this.$t('page.business.resource.mjy.ffhsjl') },
{ key: 'mjyList', name:'page.business.resource.mjy.mjygl' },
{ key: 'ffjlList', name: 'page.business.resource.mjy.ffhsjl' },
],
active: 'mjyList',
}

+ 1
- 1
src/views/business/resource/zcg/comps/Ysff.vue View File

@ -3,7 +3,7 @@
<!-- 钥匙发放弹窗 -->
<el-dialog :title="$t('page.business.resource.zcg.ysff')" :visible.sync="open" width="1000px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="170px">
<el-form ref="form" :model="form" :rules="rules" label-width="170px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<el-row>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/zcg/comps/Ysgh.vue View File

@ -3,7 +3,7 @@
<!-- 钥匙归还弹窗 -->
<el-dialog :title="$t('page.business.resource.zcg.ysgh')" :visible.sync="open" width="1000px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="160px">
<el-form ref="form" :model="form" :rules="rules" label-width="160px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password"> </div>
<template v-if="isBatch">
<el-alert :title="$t('page.business.resource.zcg.ysghts')" type="error" :closable="false">

+ 21
- 11
src/views/business/resource/zcg/list.vue View File

@ -3,16 +3,16 @@
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
<!-- 暂存柜 -->
<el-form-item :label="$t('page.business.resource.zcg.zcg') + ':'">
<el-input v-model="queryParams.mc" clearable @change="handleQuery" :placeholder="$t('form.placeholderInput')" />
<el-input v-model="queryParams.mc" clearable :placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 借用人 -->
<el-form-item :label="$t('page.business.resource.zcg.jyr') + ':'">
<el-input v-model="queryParams.jyrId" clearable @change="handleQuery"
:placeholder="$t('form.placeholderInput')" />
<el-form-item :label="$t('page.business.resource.zcg.jyr') + ':'" :label-width="$i18n.locale === 'zh_CN'?'68px':'88px'">
<SelectDeptUser v-model="queryParams.jyrId" style="width: 160px" :name="queryParams.jyrMc" key="jyrId"
@change="userChange" />
</el-form-item>
<!-- 状态 -->
<el-form-item :label="$t('page.business.resource.zcg.zt') + ':'">
<el-select v-model="queryParams.zt" :placeholder="$t('form.placeholderSelect')" clearable @change="handleQuery">
<el-select v-model="queryParams.zt" :placeholder="$t('form.placeholderSelect')" clearable >
<el-option key="5" :label="$t('page.business.resource.zcg.jyz')" value="5" />
<el-option key="1" :label="$t('page.business.resource.zcg.wjy')" value="1" />
</el-select>
@ -36,13 +36,13 @@
<el-table-column type="selection" width="55" align="center" :selectable="checkSelectable" />
<el-table-column :label="$t('page.business.resource.zcg.zcg')" align="left" prop="mc"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.zcg.ys1jyr')" align="center" prop="lqr1Mc" width="150px" />
<el-table-column :label="$t('page.business.resource.zcg.ys2jyr')" align="center" prop="lqr2Mc" width="150px" />
<el-table-column :label="$t('page.business.resource.zcg.ys1jyr')" align="center" prop="lqr1Mc" width="150px" />
<el-table-column :label="$t('page.business.resource.zcg.ys2jyr')" align="center" prop="lqr2Mc" width="150px" />
<el-table-column :label="$t('page.business.resource.zcg.zt')" align="center" width="150px">
<template slot-scope="scope">
<span v-if="scope.row.zt === 1"><span class="status-circle cg"></span>{{ $t('page.business.resource.zcg.wjy')
<span v-if="scope.row.zt === 1"><span class="status-circle wjy"></span>{{ $t('page.business.resource.zcg.wjy')
}}</span>
<span v-if="scope.row.zt === 5"><span class="status-circle syz"></span>{{ $t('page.business.resource.zcg.jyz')
<span v-if="scope.row.zt === 5"><span class="status-circle jyz"></span>{{ $t('page.business.resource.zcg.jyz')
}}</span>
</template>
</el-table-column>
@ -76,10 +76,11 @@
import { zcg_list } from "@/api/business/zcg/zcg"
import Ysff from "./comps/Ysff";
import Ysgh from "./comps/Ysgh";
import SelectDeptUser from '@/views/business/comps/select/SelectDeptUser';
export default {
name: "Zcg",
components: { Ysff, Ysgh },
components: { Ysff, Ysgh, SelectDeptUser },
data() {
return {
loading: true,
@ -95,6 +96,7 @@ export default {
pageSize: 10,
mc: null,
jyrId: null,
jyrMc: null,
zt: null,
},
}
@ -120,6 +122,10 @@ export default {
this.loading = false
})
},
userChange(val) {
this.queryParams.jyrId = val.id
this.queryParams.jyrMc = val.name
},
//
handleQuery() {
this.queryParams.pageNum = 1
@ -127,7 +133,11 @@ export default {
},
//
resetQuery() {
this.resetForm("queryForm")
this.queryParams.mc = null
this.queryParams.jyrId = null
this.queryParams.jyrMc = ' '
this.queryParams.zt = null
this.daterange = []
this.handleQuery()
},
//

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save