37 Commits

Author SHA1 Message Date
  lslaiwy 7ea8aaa6b8 fix[表单模版]优化 1 month ago
  luojie 355fe4d39b Merge branch 'master' of http://182.151.8.209:9010/eln_TD/eln_web 1 month ago
  luojie 62ca9e54c9 feat:[模板管理][sp021] 1 month ago
  15881625488@163.com bb95b8009c fix:[模板管理]优化 1 month ago
  15881625488@163.com 56a227e90f fix:[填报表单]病历学家审核 1 month ago
  15881625488@163.com 4752ce3915 fix:[填报表单]优化 1 month ago
  15881625488@163.com e96e9317b6 fix:[模板管理]DL014 1 month ago
  memorylkf 220920373e feat: [模板管理] 试验 1 month ago
  memorylkf 731b79a977 feat: [模板管理] 毒理模板 1 month ago
  luojie 815b420c3c Merge branch 'master' of http://182.151.8.209:9010/eln_TD/eln_web 1 month ago
  luojie ef60829162 feat:[模板管理][update] 1 month ago
  memorylkf 0ce6c9de87 feat: [模板管理] 选择项 1 month ago
  luojie ea0fd42f4d Merge branch 'master' of http://182.151.8.209:9010/eln_TD/eln_web 1 month ago
  luojie 22e0ad3a5d feat:[模板管理][update] 1 month ago
  memorylkf 09ab9271bc feat: [模板管理] 毒理样式 1 month ago
  15881625488@163.com cc249d3d11 fix:[模板管理]DL012 1 month ago
  15881625488@163.com 88e9dd9b9c fix:[模板管理]DL012物资生成 1 month ago
  15881625488@163.com 218d935a25 fix:[模板管理]优化 1 month ago
  15881625488@163.com 24df8e4e30 fix:[模板管理]DL011 1 month ago
  memorylkf 83d62ae84c feat: [模板管理] 毒理模板修改 1 month ago
  15881625488@163.com 7ac8c415e6 fix:[模板管理]优化 1 month ago
  HanLong 1b6101d3d4 fix:[资源库管理][供试品] 1 month ago
  15881625488@163.com 2c0d66c878 fix:[表单管理]优化 1 month ago
  memorylkf 600db24da5 feat: [模板管理] 毒理下没有生成物的resource修改 1 month ago
  15881625488@163.com 5a866645d8 fix:[麻精药表单]优化 1 month ago
  15881625488@163.com f6941c90cd fix:[麻精药表单]优化 1 month ago
  15881625488@163.com 9a73a53fa3 fix:[麻精药表单]bug 1 month ago
  HanLong d72db201fc fix:[资源库管理][试剂] 1 month ago
  memorylkf 41fa6f8ecd feat: [模板管理] 样品+LBA+ADA 物资检查,NA计算判断 1 month ago
  luojie b9e24ae460 Merge branch 'master' of http://182.151.8.209:9010/eln_TD/eln_web 1 month ago
  luojie 687cffb1f3 feat:[模板管理][update] 1 month ago
  ZHANGTENG\张腾 3638465f4a Merge branch 'master' into zhangteng 1 month ago
  ZHANGTENG\张腾 5d6b9e627d feat:[模板管理]BL001、BL002、DJ001、DJ002、DJ003、DL006优化 1 month ago
  luojie 8befa8a505 feat:[模板管理][sp021] 1 month ago
  luojie 8dcddacd5c feat:[模板管理][update] 1 month ago
  luojie 6f8cc5a5d5 Merge branch 'master' of http://182.151.8.209:9010/eln_TD/eln_web 1 month ago
  luojie 54489501c1 feat:[模板管理][sp021] 1 month ago
91 changed files with 3122 additions and 3769 deletions
Split View
  1. +8
    -0
      src/api/business/gsp/gspFfjl.js
  2. +8
    -0
      src/api/business/gsp/gspRkjl.js
  3. +27
    -0
      src/api/business/study/studyFormFill.js
  4. +167
    -141
      src/components/Template/BaseInfoFormPackage.vue
  5. +2
    -2
      src/components/Template/CustomTable.vue
  6. +94
    -100
      src/components/Template/DecimalInput.vue
  7. +27
    -8
      src/components/Template/HandleFormItem.vue
  8. +13
    -0
      src/components/Template/mixins/formPackageMixins.js
  9. +27
    -4
      src/components/Template/operation/TableOpertaion.vue
  10. +6
    -1
      src/lang/en/business/study/studyFormApply.js
  11. +4
    -0
      src/lang/en/business/study/studyFormFill.js
  12. +119
    -108
      src/lang/en/template/dl.js
  13. +3
    -0
      src/lang/en/template/gsp.js
  14. +5
    -1
      src/lang/zh/business/study/studyFormApply.js
  15. +5
    -1
      src/lang/zh/business/study/studyFormFill.js
  16. +102
    -100
      src/lang/zh/template/dl.js
  17. +3
    -0
      src/lang/zh/template/gsp.js
  18. +7
    -9
      src/utils/calUnitTools.js
  19. +12
    -5
      src/utils/conConverter.js
  20. +25
    -0
      src/utils/conTools.js
  21. +3
    -0
      src/utils/index.js
  22. +20
    -8
      src/views/business/comps/template/TemplateTable.vue
  23. +24
    -26
      src/views/business/comps/template/comps/bl/BL001.vue
  24. +21
    -14
      src/views/business/comps/template/comps/bl/BL002.vue
  25. +3
    -3
      src/views/business/comps/template/comps/dj/DJ001.vue
  26. +27
    -9
      src/views/business/comps/template/comps/dj/DJ002.vue
  27. +3
    -3
      src/views/business/comps/template/comps/dj/DJ003.vue
  28. +3
    -3
      src/views/business/comps/template/comps/dl/DL004.vue
  29. +12
    -5
      src/views/business/comps/template/comps/dl/DL005.vue
  30. +8
    -7
      src/views/business/comps/template/comps/dl/DL006.vue
  31. +2
    -12
      src/views/business/comps/template/comps/dl/DL007.vue
  32. +1
    -11
      src/views/business/comps/template/comps/dl/DL008.vue
  33. +1
    -11
      src/views/business/comps/template/comps/dl/DL009.vue
  34. +4
    -60
      src/views/business/comps/template/comps/dl/DL010.vue
  35. +84
    -81
      src/views/business/comps/template/comps/dl/DL011.vue
  36. +85
    -80
      src/views/business/comps/template/comps/dl/DL012.vue
  37. +1
    -16
      src/views/business/comps/template/comps/dl/DL013.vue
  38. +144
    -183
      src/views/business/comps/template/comps/dl/DL014.vue
  39. +0
    -35
      src/views/business/comps/template/comps/dl/DL015.vue
  40. +20
    -27
      src/views/business/comps/template/comps/dl/DL016.vue
  41. +0
    -12
      src/views/business/comps/template/comps/dl/DL017.vue
  42. +0
    -13
      src/views/business/comps/template/comps/dl/DL018.vue
  43. +0
    -13
      src/views/business/comps/template/comps/dl/DL019.vue
  44. +29
    -3
      src/views/business/comps/template/comps/dl/DL021.vue
  45. +100
    -18
      src/views/business/comps/template/comps/dl/DL022.vue
  46. +46
    -28
      src/views/business/comps/template/comps/dl/DL023.vue
  47. +6
    -27
      src/views/business/comps/template/comps/dl/DL024.vue
  48. +461
    -0
      src/views/business/comps/template/comps/gsp/GSP015.vue
  49. +1
    -1
      src/views/business/comps/template/comps/lba/LBA003.vue
  50. +1
    -1
      src/views/business/comps/template/comps/lba/LBA004.vue
  51. +0
    -1042
      src/views/business/comps/template/comps/lba/LBA005.vue
  52. +0
    -1042
      src/views/business/comps/template/comps/lba/LBA007.vue
  53. +1
    -1
      src/views/business/comps/template/comps/lba/LBA008.vue
  54. +1
    -0
      src/views/business/comps/template/comps/sp/SP0021.vue
  55. +28
    -10
      src/views/business/comps/template/comps/sp/SP00456.vue
  56. +45
    -13
      src/views/business/comps/template/comps/sp/comps/LadderConfig.vue
  57. +3
    -1
      src/views/business/comps/template/comps/yp/YP002.vue
  58. +1
    -1
      src/views/business/comps/template/comps/yp/YP003.vue
  59. +2
    -0
      src/views/business/comps/template/comps/yp/YP005.vue
  60. +327
    -0
      src/views/business/comps/template/formConfig/gsp/gsp015.js
  61. +30
    -12
      src/views/business/comps/template/formConfig/paralleAndLadderConfig.js
  62. +27
    -7
      src/views/business/comps/template/mixins/templateMixin.js
  63. +97
    -31
      src/views/business/form/drug/comp/sqbdList.vue
  64. +54
    -61
      src/views/business/form/drug/comp/tbbdList.vue
  65. +29
    -46
      src/views/business/form/drug/comp/ytbdList.vue
  66. +57
    -73
      src/views/business/form/nonTrial/comp/tbbdList.vue
  67. +30
    -47
      src/views/business/form/nonTrial/comp/ytbdList.vue
  68. +45
    -14
      src/views/business/resource/gsp/comps/ffjlList.vue
  69. +3
    -2
      src/views/business/resource/gsp/comps/gsp/Ff.vue
  70. +1
    -1
      src/views/business/resource/gsp/comps/gsp/Xz.vue
  71. +30
    -31
      src/views/business/resource/gsp/comps/gsp/Ysff.vue
  72. +1
    -0
      src/views/business/resource/gsp/comps/gspList.vue
  73. +1
    -1
      src/views/business/resource/gsp/comps/rkjl/Xz.vue
  74. +40
    -29
      src/views/business/resource/gsp/comps/rkjlList.vue
  75. +1
    -1
      src/views/business/resource/gyzj/comps/gyzjList.vue
  76. +1
    -1
      src/views/business/resource/mjy/comps/mjyList.vue
  77. +1
    -0
      src/views/business/resource/sj/comps/Bj.vue
  78. +1
    -1
      src/views/business/resource/sj/comps/Xgkc.vue
  79. +11
    -10
      src/views/business/resource/sj/list.vue
  80. +4
    -4
      src/views/business/resource/yq/list.vue
  81. +3
    -2
      src/views/business/study/comp/jhbd/Bj.vue
  82. +5
    -17
      src/views/business/study/comp/jhbdList.vue
  83. +3
    -2
      src/views/business/study/comp/sqbd/Bj.vue
  84. +102
    -10
      src/views/business/study/comp/tbbd/Bj.vue
  85. +290
    -0
      src/views/business/study/comp/tbbd/Blxjsh.vue
  86. +48
    -38
      src/views/business/study/comp/tbbdList.vue
  87. +1
    -1
      src/views/business/study/comp/wzlb/gyzjList.vue
  88. +1
    -1
      src/views/business/study/comp/wzlb/mjyList.vue
  89. +2
    -1
      src/views/business/study/comp/ytbd/Bj.vue
  90. +9
    -25
      src/views/business/study/comp/ytbdList.vue
  91. +12
    -0
      src/views/business/template/list.vue

+ 8
- 0
src/api/business/gsp/gspFfjl.js View File

@ -88,4 +88,12 @@ export function jq(data) {
method: 'post',
data: data
})
}
export function statistics(query) {
return request({
url: '/system/business/gspFfjl/statistics',
method: 'get',
params: query
})
}

+ 8
- 0
src/api/business/gsp/gspRkjl.js View File

@ -104,4 +104,12 @@ export function jq(data) {
method: 'post',
data: data
})
}
//入库量统计
export function sumRkl(query) {
return request({
url: '/system/business/gspRkjl/sumRkl',
method: 'get',
params: query
})
}

+ 27
- 0
src/api/business/study/studyFormFill.js View File

@ -136,6 +136,33 @@ export function studyFormFill_gc(data) {
})
}
//提交病理学家审核
export function studyFormFill_tjblxjsh(data) {
return request({
url: '/system/business/studyFormFill/tjblxjsh',
method: 'post',
data: data
})
}
//病理学家审核通过
export function studyFormFill_blxjshtg(data) {
return request({
url: '/system/business/studyFormFill/blxjshtg',
method: 'post',
data: data
})
}
//病理学家审核拒绝
export function studyFormFill_blxjshjj(data) {
return request({
url: '/system/business/studyFormFill/blxjshjj',
method: 'post',
data: data
})
}
//复核通过
export function studyFormFill_fhtg(data) {
return request({

+ 167
- 141
src/components/Template/BaseInfoFormPackage.vue View File

@ -10,8 +10,7 @@
<div class="form-title">{{ $t(sItem.label) }}</div>
<HandleFormItem :field-item-label="fieldItemLabel" @blur="onBlur(key, $event)" :item="sItem"
v-model="formFields[key]" :field-key="prefixKey + '_' + key" @copy="onCopy(sItem, key)"
:error="errors[key]" @update:error="errors[key] = false"
:type="sItem.type"
:error="errors[key]" @update:error="errors[key] = false" :type="sItem.type"
:orange-bg="orangeBgFields[key]" />
</template>
</div>
@ -33,7 +32,7 @@
</div>
<div class="p-l-20">
<div v-show="isShowOther(formFields[key])">
<div class="form-title" >{{ sItem.otherLabel ? $t(sItem.otherLabel) :
<div class="form-title">{{ sItem.otherLabel ? $t(sItem.otherLabel) :
$t("template.common.other") }}</div>
<div class="flex flex1">
<HandleFormItem :field-item-label="fieldItemLabel"
@ -73,17 +72,18 @@
<div class="form-title" v-if="sItem.label">{{ $t(sItem.label) }}</div>
<div v-if="sItem.type === 'dateTime' || sItem.type === 'datePicker'" class="flex1">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
:type="sItem.type" :item="sItem" v-model="formFields[key]" @copy="onCopy(sItem, key)"
:error="errors[key]" @update:error="errors[key] = false"
:type="sItem.type" :item="sItem" v-model="formFields[key]"
@copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
:orange-bg="orangeBgFields[key]" />
</div>
<div v-else-if="sItem.type === 'select'" class = "flex flex1">
<div v-else-if="sItem.type === 'select'" class="flex flex1">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
type="select" :item="sItem" v-model="formFields[key]" @copy="onCopy(sItem, key)"
@change="(e, type) => onSelectChange(key, e, type)" :error="errors[key]"
@update:error="errors[key] = false" :orange-bg="orangeBgFields[key]" />
<div v-show="isShowOther(formFields[key])" class="flex flex1 ml-10">
<div class="other-title" v-if="isShowOtherLabel(sItem)">{{ sItem.otherLabel ? $t(sItem.otherLabel) :
<div class="other-title" v-if="isShowOtherLabel(sItem)">{{ sItem.otherLabel ?
$t(sItem.otherLabel) :
$t("template.common.other") }}</div>
<div class="flex flex1">
<HandleFormItem :field-item-label="fieldItemLabel"
@ -95,16 +95,19 @@
</div>
</div>
</div>
<div v-else-if="sItem.type === 'input'||sItem.type === 'textarea' || sItem.type === 'inputNumber'" class="item-center">
<div v-else-if="sItem.type === 'input' || sItem.type === 'textarea' || sItem.type === 'inputNumber'"
class="item-center">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
@blur="onBlur(key, $event)" :item="sItem" v-model="formFields[key]"
:type="sItem.type"
@copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
:ref="key" :orange-bg="orangeBgFields[key]" />
:type="sItem.type" @copy="onCopy(sItem, key)" :error="errors[key]"
@update:error="errors[key] = false" :ref="key" :orange-bg="orangeBgFields[key]" />
<span v-if="sItem.subType === 'text'" class="sub-text">{{ $t(sItem.subText) }}</span>
<HandleFormItem class="ml-10" v-else-if="sItem.subType === 'button'" type="button"
:item="getButtonItem(sItem)" :value="formFields[sItem.subKey]"
@clickButton="(e, val, data) => handleClickButton(e, sItem, val, data)" />
@clickButton="(e, val, data) => handleClickButton(e, sItem, val, data, sItem.subKey)" />
<HandleFormItem class="ml-10" v-else-if="sItem.thirdType === 'button'" type="button"
:item="getThirdButtonItem(sItem)" :value="formFields[sItem.thirdKey]"
@clickButton="(e, val, data) => handleClickButton(e, sItem, val, data, sItem.thirdKey)" />
</div>
<div v-else-if="sItem.type === 'clickable'" class="flex1">
@ -124,8 +127,7 @@
</div>
<!-- 勾选某些选项时出现其他输入框 -->
<div v-else-if="sItem.type === 'radioAndOther'" class="item-center"
:class="{'form-error-border': errors[key]}"
>
:class="{ 'form-error-border': errors[key] }">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
type="radio" :error="errors[key]" @update:error="errors[key] = false"
@change="(e, type) => onSelectChange(key, e, type)" :item="sItem"
@ -155,12 +157,14 @@
</template>
<div class="flex flex-wrap" v-else-if="item.type === 'explainItem'">
<div v-for="(sItem, key) in item.config" :key="key" class="explain-item">
<div v-if="sItem.type === 'input' || sItem.type === 'textarea' || sItem.type === 'inputNumber'" class="m-r-10">
<div v-if="sItem.type === 'input' || sItem.type === 'textarea' || sItem.type === 'inputNumber'"
class="m-r-10">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
:type="sItem.type" :item="sItem" style="width: auto;flex:1" :style = "{'width': sItem.formWidth ? sItem.formWidth + 'px' : 'auto'}" v-model="formFields[key]"
@copy="onCopy(sItem, key)" @change="(e, type) => onSelectChange(key, e, type)"
:error="errors[key]" @update:error="errors[key] = false"
:orange-bg="orangeBgFields[key]" />
:type="sItem.type" :item="sItem" style="width: auto;flex:1"
:style="{ 'width': sItem.formWidth ? sItem.formWidth + 'px' : 'auto' }"
v-model="formFields[key]" @copy="onCopy(sItem, key)"
@change="(e, type) => onSelectChange(key, e, type)" :error="errors[key]"
@update:error="errors[key] = false" :orange-bg="orangeBgFields[key]" />
</div>
<span v-else-if="sItem.type === 'span'" class="explain-title">{{ $t(sItem.label) }}</span>
</div>
@ -183,69 +187,97 @@
:error="errors[key]" @update:error="errors[key] = false"
:orange-bg="orangeBgFields[key]" />
</div>
<div v-else-if="sItem.type === 'select' ||sItem.type === 'radio'" class="flex flex1">
<div v-else-if="sItem.type === 'select' || sItem.type === 'radio'" class="flex flex1">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
:type="sItem.type" :item="sItem" style="width: auto;flex:1" v-model="formFields[key]"
@copy="onCopy(sItem, key)" @change="(e, type) => onSelectChange(key, e, type)"
@remoteMethod="(query)=>remoteMethod(query, sItem,key)"
:error="errors[key]" @update:error="errors[key] = false"
:orange-bg="orangeBgFields[key]" />
<div v-show="isShowOther(formFields[key]) || isShowRadioSelect(formFields[key])" class="flex flex1 ml-10">
<div class="other-title" v-if="isShowOtherLabel(sItem) && isShowOther(formFields[key])">{{ sItem.otherLabel ? $t(sItem.otherLabel) :
$t("template.common.other") }}</div>
@remoteMethod="(query) => remoteMethod(query, sItem, key)" :error="errors[key]"
@update:error="errors[key] = false" :orange-bg="orangeBgFields[key]" />
<div v-show="isShowOther(formFields[key]) || isShowRadioSelect(formFields[key])"
class="flex flex1 ml-10">
<div class="other-title" v-if="isShowOtherLabel(sItem) && isShowOther(formFields[key])">
{{ sItem.otherLabel ? $t(sItem.otherLabel) :
$t("template.common.other") }}</div>
<div class="flex flex1">
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.otherCode" @blur="onBlur(key, $event)"
:item="getOtherItem(sItem)" v-model="formFields[sItem.otherCode]"
:type = "isShowOther(formFields[key]) ? 'input' : 'select'"
:type="isShowOther(formFields[key]) ? 'input' : 'select'"
@copy="onCopy(sItem, key)" :error="errors[sItem.otherCode]"
@update:error="errors[sItem.otherCode] = false"
:orange-bg="orangeBgFields[sItem.otherCode]" />
</div>
</div>
<div v-show="sItem.thirdOtherCode && isShowOther(formFields[sItem.otherCode])"
class="flex flex1 ml-10">
<div class="other-title">
{{$t("template.common.other") }}</div>
<div class="flex flex1">
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.thirdOtherCode" @blur="onBlur(key, $event)"
:item="getOtherItem(sItem)" v-model="formFields[sItem.thirdOtherCode]"
type="input"
@copy="onCopy(sItem, key)" :error="errors[sItem.thirdOtherCode]"
@update:error="errors[sItem.thirdOtherCode] = false"
:orange-bg="orangeBgFields[sItem.thirdOtherCode]" />
</div>
</div>
</div>
<div v-else-if="sItem.type === 'input' || sItem.type === 'inputNumber'" class="flex flex1">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
:type="sItem.type"
@blur="onBlur(key, $event)" class="flex1" :item="sItem" v-model="formFields[key]"
@copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
:orange-bg="orangeBgFields[key]" />
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.subKey" class="ml-10"
v-if="sItem.subType === 'select'" type="select" :item="getSubItem(sItem)"
v-model="formFields[sItem.subKey]" @copy="onCopy(sItem, key)"
@change="(e, type) => onSelectChange(sItem.subKey, e, type)"
:error="errors[sItem.subKey]" @update:error="errors[sItem.subKey] = false"
:orange-bg="orangeBgFields[sItem.subKey]" />
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.subKey" class="ml-10"
v-if="sItem.subType === 'input'" type="input" :item="getSubItem(sItem)"
v-model="formFields[sItem.subKey]" @copy="onCopy(sItem, key)"
:error="errors[sItem.subKey]" @blur="onBlur(sItem.subKey, $event)"
@update:error="errors[sItem.subKey] = false"
:orange-bg="orangeBgFields[sItem.subKey]" />
<div class="ml-10 item-span" v-else-if="sItem.subType === 'span'">{{
formFields[sItem.subKey] }}</div>
<span v-else-if="sItem.subType === 'text'" class="sub-text">{{ $t(sItem.subText) }}</span>
<HandleFormItem class="ml-10" v-else-if="sItem.subType === 'button'" type="button"
:item="getButtonItem(sItem)" :value="formFields[sItem.subKey]"
@clickButton="(e, val, data) => handleClickButton(e, sItem, val, data)" />
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.subKey" class="ml-10"
v-else-if="sItem.subType === 'clickable'" type="clickable"
@clickable="handleClickable(sItem, sItem.subKey)" :item="getClickableItem(sItem)"
:error="errors[sItem.subKey]" @update:error="errors[sItem.subKey] = false"
@resetRecord="resetRecord(sItem.subKey)" :value="formFields[sItem.subKey]" />
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.subKey" class="ml-10"
v-else-if="isRegent(sItem, 'subType')" :type="sItem.subType"
:item="getRegentItem(sItem, 'subType')" sourceFrom="baseInfoFormPackage"
@beforeReagentSubmit="(data, callback) => onBeforeReagentSubmit(data, callback, sItem.subKey)"
@onRegentSubmit="(data, inputValue) => onRegentSubmit(data, inputValue, sItem.subKey, sItem)"
:error="errors[sItem.subKey]" @update:error="errors[sItem.subKey] = false"
:value="formFields[sItem.subKey]" />
:type="sItem.type" @blur="onBlur(key, $event)" class="flex1" :item="sItem"
v-model="formFields[key]" @copy="onCopy(sItem, key)" :error="errors[key]" :ref="key"
@update:error="errors[key] = false" :orange-bg="orangeBgFields[key]" />
<template v-if="isShowSub(sItem)">
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.subKey" class="ml-10"
v-if="sItem.subType === 'select'" type="select" :item="getSubItem(sItem)"
v-model="formFields[sItem.subKey]" @copy="onCopy(sItem, key)"
@change="(e, type) => onSelectChange(sItem.subKey, e, type)"
:error="errors[sItem.subKey]" @update:error="errors[sItem.subKey] = false"
:orange-bg="orangeBgFields[sItem.subKey]" />
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.subKey" class="ml-10"
v-if="sItem.subType === 'input'" type="input" :item="getSubItem(sItem)"
v-model="formFields[sItem.subKey]" @copy="onCopy(sItem, key)"
:error="errors[sItem.subKey]" @blur="onBlur(sItem.subKey, $event)"
:ref="sItem.subKey" @update:error="errors[sItem.subKey] = false"
:orange-bg="orangeBgFields[sItem.subKey]" />
<div class="ml-10 item-span" v-else-if="sItem.subType === 'span'">{{
formFields[sItem.subKey] }}</div>
<span v-else-if="sItem.subType === 'text'" class="sub-text">{{ $t(sItem.subText)
}}</span>
<div v-else-if="sItem.subType === 'button'">
<HandleFormItem class="ml-10" type="button" :item="getButtonItem(sItem)"
:value="formFields[sItem.subKey]"
@clickButton="(e, val, data) => handleClickButton(e, sItem, val, data, sItem.subKey)" />
</div>
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.subKey" class="ml-10"
v-else-if="sItem.subType === 'clickable'" type="clickable"
@clickable="handleClickable(sItem, sItem.subKey)" :item="getClickableItem(sItem)"
:error="errors[sItem.subKey]" @update:error="errors[sItem.subKey] = false"
@resetRecord="resetRecord(sItem.subKey)" :value="formFields[sItem.subKey]" />
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.subKey" class="ml-10"
v-else-if="isRegent(sItem, 'subType')" :type="sItem.subType"
:item="getRegentItem(sItem, 'subType')" sourceFrom="baseInfoFormPackage"
@beforeReagentSubmit="(data, callback) => onBeforeReagentSubmit(data, callback, sItem.subKey)"
@onRegentSubmit="(data, inputValue) => onRegentSubmit(data, inputValue, sItem.subKey, sItem)"
:error="errors[sItem.subKey]" @update:error="errors[sItem.subKey] = false"
:value="formFields[sItem.subKey]" />
</template>
<div v-if="isShowSub(sItem,'thirdType')">
<HandleFormItem class="ml-10" v-if="sItem.thirdType === 'button'" type="button"
:item="getThirdButtonItem(sItem)" :value="formFields[sItem.thirdKey]"
@clickButton="(e, val, data) => handleClickButton(e, sItem, val, data, sItem.thirdKey)" />
</div>
<div v-show="isShowOther(formFields[sItem.subKey])" class="flex flex1 ml-10">
<div class="other-title" v-if="isShowOtherLabel(sItem)">{{ sItem.otherLabel ? $t(sItem.otherLabel) :
<div class="other-title" v-if="isShowOtherLabel(sItem)">{{ sItem.otherLabel ?
$t(sItem.otherLabel) :
$t("template.common.other") }}</div>
<div class="flex flex1">
<HandleFormItem :field-item-label="fieldItemLabel"
@ -256,44 +288,9 @@
:orange-bg="orangeBgFields[sItem.otherCode]" />
</div>
</div>
<!-- <div class="clickable" :class="getFillType(sItem.subFillType)" v-else-if = "sItem.subType ==='clickable'" @click="handleClickable(sItem,$event)">
<span v-if="formFields[sItem.subKey]">{{ formFields[sItem.subKey] }}</span>
<span v-else class="default-placeholder-text">请选择</span>
</div> -->
</div>
<!-- <div v-else-if="sItem.type === 'inputNumber'" class="flex flex1">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
type="inputNumber" @blur="onBlur(key, $event)" class="flex1" :item="sItem"
@input="onInputNumberChange(key, $event)" :value="formFields[key]"
@copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
:orange-bg="orangeBgFields[key]" />
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.subKey" class="ml-10"
v-if="sItem.subType === 'select'" type="select" :item="getSubItem(sItem)"
v-model="formFields[sItem.subKey]" @copy="onCopy(sItem, key)"
@change="(e, type) => onSelectChange(sItem.subKey, e, type)"
:error="errors[sItem.subKey]" @update:error="errors[sItem.subKey] = false"
:orange-bg="orangeBgFields[sItem.subKey]" />
<div class="ml-10 item-span" v-else-if="sItem.subType === 'span'">{{
formFields[sItem.subKey] }}</div>
<HandleFormItem class="ml-10" v-else-if="sItem.subType === 'button'" type="button"
:item="getButtonItem(sItem)" :value="formFields[sItem.subKey]"
@clickButton="(e, val, data) => handleClickButton(e, sItem, val, data)" />
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.subKey" class="ml-10"
v-else-if="sItem.subType === 'clickable'"
@clickable="handleClickable(sItem, sItem.subKey)" :error="errors[sItem.subKey]"
type="clickable" @update:error="errors[sItem.subKey] = false"
@resetRecord="resetRecord(sItem.subKey)" :item="getClickableItem(sItem)"
:value="formFields[sItem.subKey]" />
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.subKey" class="ml-10"
v-else-if="isRegent(sItem, 'subType')" sourceFrom="baseInfoFormPackage"
:error="errors[sItem.subKey]" :type="sItem.subType"
@beforeReagentSubmit="(data, callback) => onBeforeReagentSubmit(data, callback, sItem.subKey)"
@onRegentSubmit="(data, inputValue) => onRegentSubmit(data, inputValue, sItem.subKey, sItem)"
:item="getRegentItem(sItem, 'subType')" :value="formFields[sItem.subKey]" />
</div> -->
<div v-else-if="sItem.type === 'clickable'" class="flex flex1">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
type="clickable" @clickable="handleClickable(sItem, key)" :error="errors[key]"
@ -310,47 +307,47 @@
<span v-if="sItem.subType === 'text'" class="sub-text">{{ $t(sItem.subText) }}</span>
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.subKey" class="ml-10"
v-else-if="sItem.subType === 'input' || sItem.subType === 'inputNumber' || sItem.subType === 'select'" :type="sItem.subType" :item="getSubItem(sItem)"
v-model="formFields[sItem.subKey]" @copy="onCopy(sItem, key)"
:error="errors[sItem.subKey]" @blur="onBlur(sItem.subKey, $event)"
@update:error="errors[sItem.subKey] = false"
v-else-if="sItem.subType === 'input' || sItem.subType === 'inputNumber' || sItem.subType === 'select'"
:type="sItem.subType" :item="getSubItem(sItem)" v-model="formFields[sItem.subKey]"
@copy="onCopy(sItem, key)" :error="errors[sItem.subKey]"
@blur="onBlur(sItem.subKey, $event)" @update:error="errors[sItem.subKey] = false"
:orange-bg="orangeBgFields[sItem.subKey]" />
<HandleFormItem :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + sItem.thirdKey" class="ml-10"
v-if="sItem.thirdType === 'select' || sItem.thirdType === 'input'" :type="sItem.thirdType" :item="getThirdItem(sItem)"
v-model="formFields[sItem.thirdKey]" @copy="onCopy(sItem, key)"
:error="errors[sItem.thirdKey]" @blur="onBlur(sItem.thirdKey, $event)"
@update:error="errors[sItem.thirdKey] = false"
v-if="sItem.thirdType === 'select' || sItem.thirdType === 'input'"
:type="sItem.thirdType" :item="getThirdItem(sItem)" v-model="formFields[sItem.thirdKey]"
@copy="onCopy(sItem, key)" :error="errors[sItem.thirdKey]"
@blur="onBlur(sItem.thirdKey, $event)" @update:error="errors[sItem.thirdKey] = false"
:orange-bg="orangeBgFields[sItem.thirdKey]" />
<HandleFormItem class="ml-10" v-if="sItem.fourthType === 'button'" type="button"
:item="getFourthButtonItem(sItem)" :value="formFields[sItem.fourthKey]"
@clickButton="(e, val, data) => handleClickButton(e, sItem, val, data)" />
:item="getFourthButtonItem(sItem)" :value="formFields[sItem.fourthKey]"
@clickButton="(e, val, data) => handleClickButton(e, sItem, val, data, sItem.fourthKey)" />
</div>
</div>
</div>
</template>
<template v-else-if="item.type === 'checkboxList'">
<div class="form-item " >
<div class="form-item ">
<div class="form-title fs-16" v-if="item.label">{{ $t(item.label) }}</div>
<div v-for="(sItem, key) in item.config" class="c-Item grid-container">
<div class="p-r-20 item-center" :class="sItem.span == 1 ? 'full-row' : ''">
<div class="form-title mr-20 checkboxList-title">{{ $t(sItem.label) }}</div>
<div class="flex flex1">
<HandleFormItem
v-if="sItem.type === 'checkboxTree'"
:field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
:type="sItem.type" :item="sItem" :value="formFields[key]"
@change="(e) => onAttachmentChange(key, e)"
<HandleFormItem v-if="sItem.type === 'checkboxTree'" :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + key" :type="sItem.type" :item="sItem"
:value="formFields[key]" @change="(e) => onAttachmentChange(key, e)"
:error="errors[key]" @update:error="errors[key] = false"
:orange-bg="orangeBgFields[key]" />
<HandleFormItem v-else-if="sItem.type === 'textarea'" :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
@blur="onBlur(key, $event)" type="textarea" :item="sItem" v-model="formFields[key]"
@copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
<HandleFormItem v-else-if="sItem.type === 'textarea'" :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + key" @blur="onBlur(key, $event)" type="textarea"
:item="sItem" v-model="formFields[key]" @copy="onCopy(sItem, key)"
:error="errors[key]" @update:error="errors[key] = false"
:orange-bg="orangeBgFields[key]" />
<HandleFormItem v-else-if="sItem.type === 'input'" :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
@blur="onBlur(key, $event)" type="input" :item="sItem" v-model="formFields[key]"
@copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
<HandleFormItem v-else-if="sItem.type === 'input'" :field-item-label="fieldItemLabel"
:field-key="prefixKey + '_' + key" @blur="onBlur(key, $event)" type="input"
:item="sItem" v-model="formFields[key]" @copy="onCopy(sItem, key)"
:error="errors[key]" @update:error="errors[key] = false"
:orange-bg="orangeBgFields[key]" />
</div>
</div>
@ -414,23 +411,37 @@ export default {
};
},
methods: {
remoteMethod(query, sItem, key){
isShowSub(item,type){
if(type === 'thirdType'){
if (item.hasOwnProperty("showThird")) {
return item.showThird
}
return item.thirdType && item.thirdKey;
}
if (item.hasOwnProperty("showSub")) {
return item.showSub
} else if (item.subType === 'text') {//span
return true;
}
return item.subType && item.subKey;
},
remoteMethod(query, sItem, key) {
this.$emit('remoteMethod', { query, sItem, key, formFields: this.formFields })
},
//radioselect
isShowRadioSelect(value){
const arr = ["动物种属","细胞系"];
isShowRadioSelect(value) {
const arr = ["动物种属", "细胞系"];
return arr.includes(value)
},
onBeforeReagentSubmit(data, callback, key) {
this.$emit('beforeReagentSubmit', { selectData: data, callback, key, formFields: this.formFields })
},
//
handleClickButton(e, item, val, data) {
if(!item.isClearForm){
this.formFields[item.subKey] = val;
}
this.$emit("clickButton", item, data)
handleClickButton(e, item, val, data, key) {
if (!item.isClearForm) {
this.formFields[key] = val;
}
this.$emit("clickButton", item, data, key, this.formFields)
},
//
getButtonItem(sItem) {
@ -441,11 +452,21 @@ export default {
fillType: sItem.subFillType || sItem.fillType
}
},
//
getThirdButtonItem(sItem) {
return {
...sItem,
key: sItem.thirdKey,
disabled: sItem.thirdDisabled,
buttonName: sItem.thirdButtonName,
fillType: sItem.thirdFillType || sItem.fillType
}
},
getFourthButtonItem(sItem) {
return {
...sItem,
key: sItem.fourthKey,
buttonName:sItem.fourthButtonName,
buttonName: sItem.fourthButtonName,
disabled: sItem.fourthDisabled,
fillType: sItem.fourthFillType || sItem.fillType
}
@ -456,7 +477,7 @@ export default {
this.formFields[key] = e;
},
//
isShowOtherLabel(sItem){
isShowOtherLabel(sItem) {
if (sItem.hasOwnProperty("showOtherLabel")) {
return sItem.showOtherLabel
}
@ -548,22 +569,26 @@ export default {
.p-r-20 {
padding-right: 20px;
}
.explain-title{
.explain-title {
font-size: 14px;
font-weight: normal;
color: #606266;
padding-right: 10px;
}
.explain-item{
.explain-item {
display: flex;
align-items: center;
padding: 10px 0;
}
.flex-wrap{
.flex-wrap {
flex-wrap: wrap;
}
.m-r-10{
.m-r-10 {
margin-right: 10px;
}
@ -649,7 +674,8 @@ export default {
border-radius: 4px;
border: 1px solid #ff5d5d;
}
.checkboxList-title{
.checkboxList-title {
width: 120px;
text-align: center;
}

+ 2
- 2
src/components/Template/CustomTable.vue View File

@ -686,7 +686,7 @@ export default {
} else if (col.bodyType === "checkbox") {
// checkbox
// checkboxactFill
if (!col.bodyDisabled && this.templateFillType === 'actFill') {
if (!col.bodyDisabled && this.templateFillType === 'actFill' && !col.isNeedCheck) {
// checkboxtrue
// checkbox
const hasChecked = Array.isArray(mainValue) ? mainValue.length > 0 : mainValue === true;
@ -1060,7 +1060,7 @@ export default {
},
onAddRow() {
if (this.$listeners && this.$listeners['onAddRow']) {
this.$emit('onAddRow');
this.$emit('onAddRow',{dataSource:this.localDataSource});
return;
}
this.addRow({

+ 94
- 100
src/components/Template/DecimalInput.vue View File

@ -38,6 +38,7 @@ export default {
internalValue: this.value !== null && this.value !== undefined ? String(this.value) : '',
oldValue: null,
oldPattern: null,
isNA: this.value !== null && this.value !== undefined ? /^NA$/i.test(String(this.value).toUpperCase()) : false,
patternRules: [
{ name: 'NA', pattern: /^NA$/i, inputPattern: /^N?A?$/i },
{ name: 'FRACTION', pattern: /^\d+(\/\d+)*$/, inputPattern: /^(\d+\/?)*$/ }
@ -51,9 +52,11 @@ export default {
this.internalValue = '';
this.oldValue = null;
this.oldPattern = null;
this.isNA = false;
} else {
const strVal = String(newVal);
this.internalValue = strVal;
this.isNA = /^NA$/i.test(strVal.toUpperCase());
this.updateOldValue(strVal);
}
},
@ -84,123 +87,118 @@ export default {
handleInput(val) {
if (val === '') {
this.internalValue = '';
this.isNA = false;
this.$emit('input', '');
return;
}
// NA
if (this.isNA) {
// NANA
this.internalValue = 'NA';
this.$emit('input', 'NA');
return;
}
const upperVal = val.toUpperCase();
let cleaned = val;
let matchedRule = null;
if (this.oldPattern) {
// oldValue
if (val.startsWith(this.oldValue)) {
// inputPattern
if (this.oldPattern.inputPattern.test(val)) {
matchedRule = this.oldPattern;
cleaned = val;
} else {
// FRACTION
if (this.oldPattern.name === 'FRACTION') {
cleaned = val.replace(/[^\d/]/g, '');
const parts = cleaned.split('/');
const validParts = [];
for (let i = 0; i < parts.length; i++) {
if (parts[i] !== '') {
validParts.push(parts[i]);
}
}
cleaned = validParts.join('/');
matchedRule = this.oldPattern;
} else {
cleaned = this.oldValue || '';
this.internalValue = cleaned;
return;
}
}
} else if (this.oldPattern.inputPattern.test(val)) {
// inputPattern
matchedRule = this.oldPattern;
cleaned = val;
} else {
//
matchedRule = this.getMatchingRule(val);
if (!matchedRule) {
cleaned = this.oldValue || '';
this.internalValue = cleaned;
return;
}
}
// NAFRACTION
// NA
if (/^NA$/i.test(upperVal)) {
matchedRule = { name: 'NA', pattern: /^NA$/i, inputPattern: /^N?A?$/i };
cleaned = upperVal;
this.isNA = true;
} else if (upperVal === 'N' || upperVal === 'A') {
// NA
matchedRule = { name: 'NA', pattern: /^NA$/i, inputPattern: /^N?A?$/i };
cleaned = upperVal;
} else {
// FRACTION
matchedRule = this.getMatchingRule(val);
if (matchedRule) {
if (matchedRule.name === 'FRACTION') {
cleaned = val.replace(/[^\d/]/g, '');
const parts = cleaned.split('/');
const validParts = [];
for (let i = 0; i < parts.length; i++) {
if (parts[i] !== '') {
validParts.push(parts[i]);
}
}
if (matchedRule) {
if (matchedRule.name === 'FRACTION') {
cleaned = val.replace(/[^\d/]/g, '');
const parts = cleaned.split('/');
const validParts = [];
for (let i = 0; i < parts.length; i++) {
if (parts[i] !== '' || i === parts.length - 1) {
validParts.push(parts[i]);
}
cleaned = validParts.join('/');
} else {
cleaned = upperVal;
}
cleaned = validParts.join('/');
} else {
cleaned = val
.replace(/[^\d.-]/g, '')
.replace(/^(-)\1+/, '$1');
cleaned = upperVal;
}
} else {
//
cleaned = val
.replace(/[^\d.-]/g, '')
.replace(/^(-)\1+/, '$1');
const firstDotIndex = cleaned.indexOf('.');
if (firstDotIndex !== -1) {
const before = cleaned.slice(0, firstDotIndex);
const after = cleaned.slice(firstDotIndex + 1).replace(/\./g, '');
cleaned = before + '.' + after;
}
//
const firstDotIndex = cleaned.indexOf('.');
if (firstDotIndex !== -1) {
const before = cleaned.slice(0, firstDotIndex);
const after = cleaned.slice(firstDotIndex + 1).replace(/\./g, '');
cleaned = before + '.' + after;
}
if (this.decimalDigits > 0 && cleaned.includes('.')) {
const [intPart, decPart = ''] = cleaned.split('.');
cleaned = intPart + '.' + decPart.slice(0, this.decimalDigits);
} else if (this.decimalDigits === 0) {
cleaned = cleaned.split('.')[0];
}
//
if (this.decimalDigits > 0 && cleaned.includes('.')) {
const [intPart, decPart = ''] = cleaned.split('.');
cleaned = intPart + '.' + decPart.slice(0, this.decimalDigits);
} else if (this.decimalDigits === 0) {
cleaned = cleaned.split('.')[0];
}
if (cleaned === '.') cleaned = '0.';
else if (cleaned === '-.') cleaned = '-0.';
else if (cleaned.startsWith('.')) cleaned = '0' + cleaned;
else if (cleaned.startsWith('-.')) cleaned = '-0.' + cleaned.slice(2);
//
if (cleaned === '.') cleaned = '0.';
else if (cleaned === '-.') cleaned = '-0.';
else if (cleaned.startsWith('.')) cleaned = '0' + cleaned;
else if (cleaned.startsWith('-.')) cleaned = '-0.' + cleaned.slice(2);
if (cleaned.includes('.')) {
const [int, dec] = cleaned.split('.');
let newInt = int;
if (/^-?0+\d/.test(int)) {
newInt = int.replace(/^-?0+(\d)/, '$1');
} else if (int === '' || int === '-') {
newInt = int + '0';
} else if (int === '00' || /^-00+$/.test(int)) {
newInt = int.startsWith('-') ? '-0' : '0';
}
cleaned = newInt + '.' + dec;
} else {
if (/^-?0+\d/.test(cleaned)) {
cleaned = cleaned.replace(/^-?0+(\d)/, '$1');
} else if (cleaned === '00' || /^-00+$/.test(cleaned)) {
cleaned = cleaned.startsWith('-') ? '-0' : '0';
}
//
if (cleaned.includes('.')) {
const [int, dec] = cleaned.split('.');
let newInt = int;
if (/^-?0+\d/.test(int)) {
newInt = int.replace(/^-?0+(\d)/, '$1');
} else if (int === '' || int === '-') {
newInt = int + '0';
} else if (int === '00' || /^-00+$/.test(int)) {
newInt = int.startsWith('-') ? '-0' : '0';
}
cleaned = newInt + '.' + dec;
} else {
if (/^-?0+\d/.test(cleaned)) {
cleaned = cleaned.replace(/^-?0+(\d)/, '$1');
} else if (cleaned === '00' || /^-00+$/.test(cleaned)) {
cleaned = cleaned.startsWith('-') ? '-0' : '0';
}
}
}
this.internalValue = cleaned;
// emit
if (cleaned === '' || cleaned === '-') {
this.$emit('input', cleaned === '-' ? '-' : '');
} else if (matchedRule && matchedRule.name !== 'FRACTION') {
this.$emit('input', cleaned);
} else if (cleaned.includes('/')) {
this.$emit('input', cleaned);
} else if (cleaned.includes('.')) {
// emit
this.$emit('input', cleaned);
} else if (matchedRule && matchedRule.name === 'FRACTION') {
// FRACTION
this.$emit('input', cleaned);
} else {
//
const num = parseFloat(cleaned);
this.$emit('input', isNaN(num) ? '' : num);
}
@ -238,6 +236,7 @@ export default {
if (val === '') {
this.oldValue = null;
this.oldPattern = null;
this.isNA = false;
this.$emit('input', '');
this.$emit('blur', '');
return;
@ -245,17 +244,20 @@ export default {
const upperVal = val.toUpperCase();
//
for (const rule of this.patternRules) {
if (rule.pattern.test(upperVal)) {
this.oldValue = upperVal;
this.oldPattern = rule;
this.internalValue = upperVal;
this.isNA = /^NA$/i.test(upperVal);
this.$emit('input', upperVal);
this.$emit('blur', upperVal);
return;
}
}
//
if (val.includes('/')) {
const parts = val.split('/');
const validParts = parts.filter(part => part !== '');
@ -292,20 +294,12 @@ export default {
return;
}
if (this.oldValue && this.oldPattern) {
const partialMatch = this.oldPattern.inputPattern && this.oldPattern.inputPattern.test(val);
if (!partialMatch) {
this.internalValue = this.oldValue;
this.$emit('input', this.oldValue);
this.$emit('blur', this.oldValue);
return;
}
}
//
let formatted = this.handleDecimalDigits(val);
this.internalValue = formatted;
this.$emit('input', parseFloat(formatted));
this.$emit('blur', parseFloat(formatted));
const num = parseFloat(formatted);
this.$emit('input', isNaN(num) ? '' : num);
this.$emit('blur', isNaN(num) ? '' : num);
}
}
};

+ 27
- 8
src/components/Template/HandleFormItem.vue View File

@ -235,7 +235,7 @@ import { getToken } from "@/utils/auth";
import { isShowOtherByCheckboxTree } from "@/utils/formPackageCommon";
export default {
inject: ['templateData', 'templateFillType', "getZdxgjl", "getFhyjjl", "updateZdxgjl", "replaceFhyjjl", "updateFhyjjl", "getFieldCheckObj", "updateFieldCheckObj"],
inject: ['templateData', 'templateFillType',"getSubmittedCodes","updateSubmittedCodes", "getZdxgjl", "getFhyjjl", "updateZdxgjl", "replaceFhyjjl", "updateFhyjjl", "getFieldCheckObj", "updateFieldCheckObj"],
components: {
Question,
DecimalInput,
@ -1096,9 +1096,10 @@ export default {
const { mainRadio: oldMainRadio, inputValue: oldInputValue, subRadio: oldSubRadio } = this.oldFqyqValue;
const o = {
"mainRadio": { oldValue: oldMainRadio, newValue: mainRadio, des: "" },
"inputValue": { oldValue: oldInputValue, newValue: inputValue, des: "" },
"inputValue": { oldValue: oldInputValue, newValue: inputValue, des: "",key: this.fieldKey+"_inputValue" },
"subRadio": { oldValue: oldSubRadio, newValue: subRadio, des: "是否在规定时间完成:" }
}
console.log(o, this.currentHandleType, this.fqyqValue,"fqyqValue")
return o[this.currentHandleType];
},
getCheckboxTreeInfo() {
@ -1109,7 +1110,7 @@ export default {
const oldItem = oldCheckedValues.find(item => item.label === currentCheckboxTreeValue);
const o = {
"checkboxTreeCheckbox": { oldValue: oldItem, newValue: newItem, des: "" },
"checkboxTreeOther": { oldValue: oldOtherValues[currentCheckboxTreeValue], newValue: otherValues[currentCheckboxTreeValue], des: `${currentCheckboxTreeValue}` },
"checkboxTreeOther": { oldValue: oldOtherValues[currentCheckboxTreeValue], newValue: otherValues[currentCheckboxTreeValue], des: `${currentCheckboxTreeValue}`,key: this.fieldKey+"_"+currentCheckboxTreeValue },
}
return o[currentHandleType];
},
@ -1168,7 +1169,11 @@ export default {
} else if (this.type === "fqyq") {
const current = this.getFqyqInfo();
isSame = isEqual(current.oldValue, current.newValue);
isOldValueEmpty = isValueEmpty(current.oldValue);
if(this.currentHandleType === "inputValue"){
isOldValueEmpty =this.isUnSubmitted(current.key);
}else{
isOldValueEmpty = isValueEmpty(current.oldValue);
}
} else if (this.type === "checkboxTree") {
const current = this.getCheckboxTreeInfo() || {};
const { oldValue = {}, newValue = {} } = current;
@ -1177,16 +1182,16 @@ export default {
isOldValueEmpty = oldValue.checked === undefined;
} else {
isSame = isEqual(current.oldValue, current.newValue);
isOldValueEmpty = isValueEmpty(current.oldValue);
isOldValueEmpty = this.isUnSubmitted(current.key);
}
} else if(this.type === "checkbox"){
isSame = isEqual(this.oldValue, this.inputValue)
isOldValueEmpty = this.oldValue === '';
isOldValueEmpty =this.isUnSubmitted();
}else {
isSame = isEqual(this.oldValue, this.inputValue)
isOldValueEmpty = isValueEmpty(this.oldValue);
isOldValueEmpty = this.isUnSubmitted();
}
console.log(isSame, isOldValueEmpty, this.currentCheckboxTreeValue, this.oldValue, this.inputValue, "isSame")
if (isSame) {
@ -1200,6 +1205,13 @@ export default {
}
},
//
isUnSubmitted(key){
const finallyKey = key || this.fieldKey;
const has = this.getSubmittedCodes().includes(finallyKey)
return !has;
},
//退
resetRecord() {
//
@ -1232,6 +1244,7 @@ export default {
if (!this.oldValue && !this.inputValue) {
return
}
let finallyKey = this.fieldKey;
if (recordData) {
this.oldValue = recordData.oldValue;
this.inputValue = recordData.inputValue;
@ -1248,6 +1261,9 @@ export default {
const current = this.getFqyqInfo();
recordOldVlaue = `${current.des + current.oldValue}`;
recordValue = `${current.des + current.newValue}`;
if(this.currentHandleType === "inputValue"){
finallyKey = current.key;
}
isModify = !!this.oldFqyqValue.mainRadio
} else if (this.type === "checkboxTree") {
// checkboxTree
@ -1257,6 +1273,7 @@ export default {
recordOldVlaue = `${oldValue?.label || ''}:${oldValue?.checked ? '勾选' : '未勾选'}`;
recordValue = `${newValue.label || ''}:${newValue.checked ? '勾选' : '未勾选'}`;
isModify = newValue.checked !== undefined;
finallyKey = current.key;
} else {
recordOldVlaue = `${current.des + (current.oldValue || '')}`;
recordValue = `${current.des + (current.newValue || '')}`;
@ -1271,7 +1288,7 @@ export default {
...baseInfo,
oldValue: recordOldVlaue,
value: recordValue,
title: isModify ? "修改" : "提交",
title: !this.isUnSubmitted(finallyKey) ? "修改" : "提交",
time: moment().format("YYYY-MM-DD HH:mm:ss"),
}
if (data) {
@ -1281,6 +1298,7 @@ export default {
const params = {
type: "fieldChanged",
newRecord: [record],
submittedCodes: this.getSubmittedCodes(),
resourceList: this.getZdxgjl(),
}
@ -1320,6 +1338,7 @@ export default {
if (this.templateFillType === "actFill") {//
this.updateZdxgjl(record);
this.updateSubmittedCodes(finallyKey);
}
this.$nextTick(() => {
EventBus.$emit('onModifyRecord', params,)

+ 13
- 0
src/components/Template/mixins/formPackageMixins.js View File

@ -241,6 +241,16 @@ export default {
}
config[otherCode] = { label: "template.common.other", parentType: type, parentKey: key, type: "input", fillType: currentConfig.fillType }
}
if (currentConfig.thirdOtherCode) {
const { thirdOtherCode, type } = currentConfig;
//如果是更新的话,优先使用formFields中的值
if (update) {
result[thirdOtherCode] = formFields[thirdOtherCode] || formData[thirdOtherCode] || '';
} else {
result[thirdOtherCode] = formData[thirdOtherCode] || formFields[thirdOtherCode] || '';
}
config[thirdOtherCode] = { label: "template.common.other", parentType: type, parentKey: key, type: "input", fillType: currentConfig.fillType }
}
if (currentConfig.subKey) {
const { subKey } = currentConfig;
if (update) {
@ -289,6 +299,9 @@ export default {
if (item.config?.otherCode) {
config[item.config?.otherCode] = item.config?.otherCode;
}
if (item.config?.thirdOtherCode) {
config[item.config?.thirdOtherCode] = item.config?.thirdOtherCode;
}
}
});
// 处理selectInfo_开头的字段,步骤表单需要保留selectInfo_开头的字段

+ 27
- 4
src/components/Template/operation/TableOpertaion.vue View File

@ -8,10 +8,10 @@
</el-popconfirm>
<template v-if="fillType === 'actFill'">
<el-button type="text" size="small" @click="onSubPackage">分装</el-button>
<el-button type="text" size="small" @click="onStartConfig">开始配制</el-button>
<el-button type="text" size="small" @click="onConfigComplete">配制完成</el-button>
<el-button type="text" size="small" @click="()=>onPrintTag()">打印标签</el-button>
<el-button v-if="showFz" type="text" size="small" @click="onSubPackage">分装</el-button>
<el-button v-if="showKspz" type="text" size="small" @click="onStartConfig">开始配制</el-button>
<el-button v-if="showPzwc" type="text" size="small" @click="onConfigComplete">配制完成</el-button>
<el-button v-if="showDybq" type="text" size="small" @click="()=>onPrintTag()">打印标签</el-button>
</template>
</div>
</template>
@ -40,6 +40,26 @@ export default {
type: String,
default: "preFill",
},
//
showFz: {
type: Boolean,
default: true,
},
//
showKspz: {
type: Boolean,
default: true,
},
//
showPzwc: {
type: Boolean,
default: true,
},
//
showDybq: {
type: Boolean,
default: true,
},
},
mounted() {
@ -92,6 +112,9 @@ export default {
onConfigComplete() {
const actConfig = this.getColumnConfig();
const cloneRow = JSON.parse(JSON.stringify(this.innerRow));
if(cloneRow.hasOwnProperty("_checked")){
delete cloneRow._checked;
}
const isComplete = Object.values({...actConfig,...cloneRow}).every((val)=>{
// 0
if (val === 0) return true;

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

@ -60,5 +60,10 @@ export default {
smxz: 'Declaration of Collaboration',
bcsm: 'Additional Remark',
fztgjj: 'Approve/Reject Record Abolition',
ysy: 'Reviewed'
ysy: 'Reviewed',
sybhbm: 'Study Number/Department',
sywzmc: 'Study Material Name',
xynd: 'Required Concentration',
xysj: 'Required Time',
bdzt:'Status'
}

+ 4
- 0
src/lang/en/business/study/studyFormFill.js View File

@ -22,6 +22,8 @@ export default {
next: 'Next',
pre: 'Pre',
save: 'Save',
blxjshtg:'病历学家审核通过',
blxjshjj:'病历学家审核拒绝',
submit: 'Submit',
bdnr: 'Record Information',
qmxx: 'Signature information',
@ -31,6 +33,8 @@ export default {
bzyy: 'Comment/Reason',
jcgj: 'Track Record',
cjjl: 'Create Record',
tjsh:'Submit Audit',
blxjsh:'病理学家审核',
sfbl: 'Back Entry',
yes: 'Yes',
no: 'No',

+ 119
- 108
src/lang/en/template/dl.js View File

@ -49,7 +49,7 @@ export default {
dl004: {
...common,
zjjgqr: '增菌结果确认',
ccwz: 'Storage Location',
ccwz: 'Storage Location'
},
dl006: {
...common,
@ -78,7 +78,8 @@ export default {
pykssj: 'Cultivation Start Time',
pyjssj: 'Cultivation End Time',
jsButton: 'End',
yqsyxxEmpty: 'Instrument usage information has not been filled in, please fill in before submitting'
yqsyxxEmpty:
'Instrument usage information has not been filled in, please fill in before submitting'
},
dl008: {
...common,
@ -89,8 +90,10 @@ export default {
jzbh2: 'Strain Number',
jzbh3: 'Strain Number',
jzbh4: 'Strain Number',
yqsyxxEmpty: 'Instrument usage information has not been filled in, please fill in before submitting',
cxqkEmpty: 'Imaging status has not been filled in, please fill in before submitting'
yqsyxxEmpty:
'Instrument usage information has not been filled in, please fill in before submitting',
cxqkEmpty:
'Imaging status has not been filled in, please fill in before submitting'
},
dl009: {
...common,
@ -104,11 +107,16 @@ export default {
czqk: 'Precipitation Status',
bjjt: 'Background Lawn',
jls: 'Colony Count',
czqkDesc: 'Precipitation codes: "P-" = "None"; "P+" = "Slight"; "P++" = "Moderate"; "P+++" = "Severe".',
bjjtDesc: 'Background lawn codes: "N" = "Normal"; "R1" = "Weak, lawn covers 70%-90% of plate area"; "R2" = "Medium, lawn covers 40%-70% of plate area"; "R3" = "Strong, lawn covers 10%-40% of plate area"; "A" = "Absent, no lawn on plate"; "O" = "Precipitation present, affecting lawn assessment";',
jlsDesc: 'Colony count special case: "*" indicates pinpoint colonies visible on plate;',
yqsyxxEmpty: 'Instrument usage information has not been filled in, please fill in before submitting',
jgxxEmpty: 'Result information has not been filled in, please fill in before submitting'
czqkDesc:
'Precipitation codes: "P-" = "None"; "P+" = "Slight"; "P++" = "Moderate"; "P+++" = "Severe".',
bjjtDesc:
'Background lawn codes: "N" = "Normal"; "R1" = "Weak, lawn covers 70%-90% of plate area"; "R2" = "Medium, lawn covers 40%-70% of plate area"; "R3" = "Strong, lawn covers 10%-40% of plate area"; "A" = "Absent, no lawn on plate"; "O" = "Precipitation present, affecting lawn assessment";',
jlsDesc:
'Colony count special case: "*" indicates pinpoint colonies visible on plate;',
yqsyxxEmpty:
'Instrument usage information has not been filled in, please fill in before submitting',
jgxxEmpty:
'Result information has not been filled in, please fill in before submitting'
},
dl010: {
...common,
@ -195,8 +203,10 @@ export default {
yxg: 'Lower Right Grid (cells)',
cdxxTime: 'Time {index}',
addCdxx: 'Add',
yqsyxxEmpty: 'Instrument usage information has not been filled in, please fill in before submitting',
cdxxEmpty: 'Measurement information has not been filled in, please fill in before submitting'
yqsyxxEmpty:
'Instrument usage information has not been filled in, please fill in before submitting',
cdxxEmpty:
'Measurement information has not been filled in, please fill in before submitting'
},
dl014: {
...common,
@ -224,7 +234,8 @@ export default {
gyhzqk: 'Post-dose Status',
qrButton: 'Confirm',
wcButton: 'Complete',
yqsyxxEmpty: 'Instrument usage information has not been filled in, please fill in before submitting'
yqsyxxEmpty:
'Instrument usage information has not been filled in, please fill in before submitting'
},
dl015: {
...common,
@ -239,148 +250,148 @@ export default {
pyybrl: 'Culture Medium Volume Added (ul)'
},
dl016: {
xbxx:'细胞信息',
sydd:'实验地点',
czsj:'操作时间',
xbxx: '细胞信息',
sydd: '试验地点',
czsj: '操作时间',
qxbd: '前序表单',
dlbz: '备注',
czbz: '操作步骤',
qcxjjyqk:'秋水仙碱加液情况',
bltj:'暴露条件',
jlzb:'剂量组别',
xybh:'悬液编号',
qsxjjrl:'秋水仙碱加入量',
qcxjjyqk: '秋水仙碱加液情况',
bltj: '暴露条件',
jlzb: '剂量组别',
xybh: '悬液编号',
qsxjjrl: '秋水仙碱加入量'
},
dl017: {
xbxx:'细胞信息',
sydd:'实验地点',
czsj:'操作时间',
xbxx: '细胞信息',
sydd: '试验地点',
czsj: '操作时间',
qxbd: '前序表单',
dlbz: '备注',
czbz: '操作步骤',
xbczqk:'细胞操作情况',
bltj:'暴露条件',
xbczqk: '细胞操作情况',
bltj: '暴露条件',
jlzb:'剂量组别',
xybh:'悬液编号',
sjqszqk:'收集前生长情况',
sjqcdqk:'收集前沉淀情况',
saqqtqk:'收集前其他情况',
ddpyy:'倒掉培养液',
xd:'洗涤',
sj:'收集',
ds:'低渗',
dy1gd:'第一次固定',
dy2gd:'第二次固定',
dy3gd:'第三次固定',
dy4gd:'第四次固定',
jlzb: '剂量组别',
xybh: '悬液编号',
sjqszqk: '收集前生长情况',
sjqcdqk: '收集前沉淀情况',
saqqtqk: '收集前其他情况',
ddpyy: '倒掉培养液',
xd: '洗涤',
sj: '收集',
ds: '低渗',
dy1gd: '第一次固定',
dy2gd: '第二次固定',
dy3gd: '第三次固定',
dy4gd: '第四次固定'
},
dl018: {
xbxx:'细胞信息',
sydd:'实验地点',
czsj:'操作时间',
xbxx: '细胞信息',
sydd: '试验地点',
czsj: '操作时间',
qxbd: '前序表单',
dlbz: '备注',
czbz: '操作步骤',
xbczqk:'细胞操作情况',
bltj:'暴露条件',
xbczqk: '细胞操作情况',
bltj: '暴露条件',
jlzb:'剂量组别',
xybh:'悬液编号',
rsks:'染色开始',
rsjs:'染色结束',
ksButton:'开始',
jsButton:'结束',
zs:'左上(个)',
ys:'右上(个)',
zy:'左下(个)',
yx:'右下(个)',
tj:'体积(mL)',
jlzb: '剂量组别',
xybh: '悬液编号',
rsks: '染色开始',
rsjs: '染色结束',
ksButton: '开始',
jsButton: '结束',
zs: '左上(个)',
ys: '右上(个)',
zy: '左下(个)',
yx: '右下(个)',
tj: '体积(mL)'
},
dl019: {
xbxx:'细胞信息',
sydd:'实验地点',
czsj:'操作时间',
xbxx: '细胞信息',
sydd: '试验地点',
czsj: '操作时间',
qxbd: '前序表单',
dlbz: '备注',
czbz: '操作步骤',
xbczqk:'细胞操作情况',
bltj:'暴露条件',
xbczqk: '细胞操作情况',
bltj: '暴露条件',
jlzb:'剂量组别',
xybh:'悬液编号',
bplsh1:'玻片流水号',
bplsh2:'玻片流水号',
jlzb: '剂量组别',
xybh: '悬液编号',
bplsh1: '玻片流水号',
bplsh2: '玻片流水号'
},
dl020: {
swdljlbxx: 'Toxicology Record Information',
xbxx:'Cell Information',
sydd:'Test Location',
czsj:'Operation Time',
xbxx: 'Cell Information',
sydd: 'Test Location',
czsj: 'Operation Time',
qxbd: 'Previous Form',
dlbz: 'Remarks',
czbz: 'Operation Steps',
czbz: 'Operation Steps'
},
dl021: {
czsj:'操作时间',
czsj: '操作时间',
dlbz: '备注',
gcqk: '观察情况',
xbmc:'细胞名称',
xwj:'显微镜',
bpbh:'玻片编号',
gcxps:'观察细胞数目',
zqxxbs:'中期相细胞数',
xbmc: '细胞名称',
xwj: '显微镜',
bpbh: '玻片编号',
gcxps: '观察细胞数目',
zqxxbs: '中期相细胞数'
},
dl022: {
czsj:'操作时间',
czsj: '操作时间',
dlbz: '备注',
gcqk: '观察情况',
jbqk: '畸变情况',
xbmc:'细胞名称',
xwj:'显微镜',
bpbh:'玻片编号',
gcxps:'观察细胞数目',
xbmc: '细胞名称',
xwj: '显微镜',
bpbh: '玻片编号',
gcxps: '观察细胞数目',
jgjxjbs:'结构畸形畸变数',
lxjbs:'裂隙畸变数',
dbtjbs:'多倍体畸变数',
nfzjbs:'内复制畸变数',
jblx:'畸变类型'
jgjxjbs: '结构畸形畸变数',
lxjbs: '裂隙畸变数',
dbtjbs: '多倍体畸变数',
nfzjbs: '内复制畸变数',
jblx: '畸变类型'
},
dl023: {
czsj:'操作时间',
czsj: '操作时间',
dlbz: '备注',
yqsyxx: '仪器使用信息',
czjl: '操作记录',
yqbh:'仪器编号',
yqmc:'仪器名称',
yqxh:'仪器型号',
xcrq:'下次测试/校准/检定日期',
yqbh: '仪器编号',
yqmc: '仪器名称',
yqxh: '仪器型号',
xcrq: '下次测试/校准/检定日期',
dwzshxbx:'动物种属或细胞系',
dwzs:'动物种属',
xbx:'细胞系',
sydd:'试验地点',
zwbh:'动物编号/细胞培养板名称',
uvazsjl:'UVA照射剂量',
zszsj:'照射总时间(分:秒)',
zskssj:'照射开始时间',
zsjssj:'照射结束时间',
ksButton:'开始',
jsButton:'结束',
dwzshxbx: '动物种属或细胞系',
dwzs: '动物种属',
xbx: '细胞系',
sydd: '试验地点',
zwbh: '动物编号/细胞培养板名称',
uvazsjl: 'UVA照射剂量',
zszsj: '照射总时间(分:秒)',
zskssj: '照射开始时间',
zsjssj: '照射结束时间',
ksButton: '开始',
jsButton: '结束'
},
dl024: {
sydd:'实验地点',
czsj:'操作时间',
sydd: '试验地点',
czsj: '操作时间',
dlbz: '备注',
xbpyxx: '细胞培养信息',
qxbd:'前序表单',
pykssj:'培养开始时间',
pyjssj:'培养结束时间',
jsButton:'培养结束时间',
xbbh:'细胞编号',
},
qxbd: '前序表单',
pykssj: '培养开始时间',
pyjssj: '培养结束时间',
jsButton: '培养结束时间',
xbbh: '细胞编号'
}
}

+ 3
- 0
src/lang/en/template/gsp.js View File

@ -68,6 +68,9 @@ export default {
rjyjtj:'溶剂预计体积',
rjsjtj:'溶剂实际体积',
},
gsp007:{
bzqx:'标准曲线',
},
gsp009: {
xtsyx: '系统适应性',
ypbh: '样品编号',

+ 5
- 1
src/lang/zh/business/study/studyFormApply.js View File

@ -60,5 +60,9 @@ export default {
smxz: '申明协作',
bcsm: '补充说明',
fztgjj: '废止通过/拒绝',
ysy: '已审阅'
ysy: '已审阅',
sybhbm: '试验编号/部门',
sywzmc: '试验物质名称',
xynd: '需要浓度',
xysj: '需要时间',
}

+ 5
- 1
src/lang/zh/business/study/studyFormFill.js View File

@ -21,6 +21,8 @@ export default {
zc: '暂存',
next: '下一步',
pre: '上一步',
blxjshtg:'病历学家审核通过',
blxjshjj:'病历学家审核拒绝',
save: '保存',
submit: '提交',
bdnr: '表单内容',
@ -31,8 +33,10 @@ export default {
bzyy: '备注原因',
jcgj: '稽查轨迹',
cjjl: '创建记录',
sfbl: '是否补录',
sfbl: '是否补录',
yes: '是',
blxjsh:'病理学家审核',
tjsh:'提交审核',
no: '否',
tjjl: '提交记录',
sqfz: '申请废止',

+ 102
- 100
src/lang/zh/template/dl.js View File

@ -50,7 +50,7 @@ export default {
dl004: {
...common,
zjjgqr: '增菌结果确认',
ccwz: '存储位置',
ccwz: '存储位置'
},
dl006: {
...common,
@ -73,7 +73,7 @@ export default {
jzbh: '菌种编号',
gspcdqk: '供试品沉淀情况',
czxx: '操作信息',
pyxbh:"培养箱编号"
pyxbh: '培养箱编号'
},
dl007: {
...common,
@ -107,8 +107,10 @@ export default {
czqk: '沉淀情况',
bjjt: '背景菌苔',
jls: '菌落数(个)',
czqkDesc: '沉淀量以代码填入:"P-" 代表 "无沉淀";"P+" 代表 "少量";"P++" 代表 "中等";"P+++" 代表 "严重"。',
bjjtDesc: '背景菌苔以代码填入:"N" 代表 "正常";"R1" 代表 "弱,菌苔约占平皿面积 70%-90%";"R2" 代表 "中,菌苔约占平皿面积 40%-70%";"R3" 代表 "强,菌苔约占平皿面积 10%-40%";"A" 代表 "消失,平皿上无菌苔";"O" 代表 "产生沉淀,影响背景菌苔判断";',
czqkDesc:
'沉淀量以代码填入:"P-" 代表 "无沉淀";"P+" 代表 "少量";"P++" 代表 "中等";"P+++" 代表 "严重"。',
bjjtDesc:
'背景菌苔以代码填入:"N" 代表 "正常";"R1" 代表 "弱,菌苔约占平皿面积 70%-90%";"R2" 代表 "中,菌苔约占平皿面积 40%-70%";"R3" 代表 "强,菌苔约占平皿面积 10%-40%";"A" 代表 "消失,平皿上无菌苔";"O" 代表 "产生沉淀,影响背景菌苔判断";',
jlsDesc: '菌落数特殊情况:"*" 该平皿可见针尖样菌落;',
yqsyxxEmpty: '仪器使用信息还未填写,请填写后再提交',
jgxxEmpty: '结果信息还未填写,请填写后再提交'
@ -242,147 +244,147 @@ export default {
pyybrl: '培养液补入量(ul)'
},
dl016: {
xbxx:'细胞信息',
sydd:'实验地点',
czsj:'操作时间',
xbxx: '细胞信息',
sydd: '试验地点',
czsj: '操作时间',
qxbd: '前序表单',
dlbz: '备注',
czbz: '操作步骤',
qcxjjyqk:'秋水仙碱加液情况',
bltj:'暴露条件',
jlzb:'剂量组别',
xybh:'悬液编号',
qsxjjrl:'秋水仙碱加入量',
qcxjjyqk: '秋水仙碱加液情况',
bltj: '暴露条件',
jlzb: '剂量组别',
xybh: '悬液编号',
qsxjjrl: '秋水仙碱加入量'
},
dl017: {
xbxx:'细胞信息',
sydd:'实验地点',
czsj:'操作时间',
xbxx: '细胞信息',
sydd: '试验地点',
czsj: '操作时间',
qxbd: '前序表单',
dlbz: '备注',
czbz: '操作步骤',
xbczqk:'细胞操作情况',
bltj:'暴露条件',
xbczqk: '细胞操作情况',
bltj: '暴露条件',
jlzb:'剂量组别',
xybh:'悬液编号',
sjqszqk:'收集前生长情况',
sjqcdqk:'收集前沉淀情况',
saqqtqk:'收集前其他情况',
ddpyy:'倒掉培养液',
xd:'洗涤',
sj:'收集',
ds:'低渗',
dy1gd:'第一次固定',
dy2gd:'第二次固定',
dy3gd:'第三次固定',
dy4gd:'第四次固定',
jlzb: '剂量组别',
xybh: '悬液编号',
sjqszqk: '收集前生长情况',
sjqcdqk: '收集前沉淀情况',
saqqtqk: '收集前其他情况',
ddpyy: '倒掉培养液',
xd: '洗涤',
sj: '收集',
ds: '低渗',
dy1gd: '第一次固定',
dy2gd: '第二次固定',
dy3gd: '第三次固定',
dy4gd: '第四次固定'
},
dl018: {
xbxx:'细胞信息',
sydd:'实验地点',
czsj:'操作时间',
xbxx: '细胞信息',
sydd: '试验地点',
czsj: '操作时间',
qxbd: '前序表单',
dlbz: '备注',
czbz: '操作步骤',
xbczqk:'细胞操作情况',
bltj:'暴露条件',
xbczqk: '细胞操作情况',
bltj: '暴露条件',
jlzb:'剂量组别',
xybh:'悬液编号',
rsks:'染色开始',
rsjs:'染色结束',
ksButton:'开始',
jsButton:'结束',
zs:'左上(个)',
ys:'右上(个)',
zy:'左下(个)',
yx:'右下(个)',
tj:'体积(mL)',
jlzb: '剂量组别',
xybh: '悬液编号',
rsks: '染色开始',
rsjs: '染色结束',
ksButton: '开始',
jsButton: '结束',
zs: '左上(个)',
ys: '右上(个)',
zy: '左下(个)',
yx: '右下(个)',
tj: '体积(mL)'
},
dl019: {
xbxx:'细胞信息',
sydd:'实验地点',
czsj:'操作时间',
xbxx: '细胞信息',
sydd: '试验地点',
czsj: '操作时间',
qxbd: '前序表单',
dlbz: '备注',
czbz: '操作步骤',
xbczqk:'细胞操作情况',
bltj:'暴露条件',
xbczqk: '细胞操作情况',
bltj: '暴露条件',
jlzb:'剂量组别',
xybh:'悬液编号',
bplsh1:'玻片流水号',
bplsh2:'玻片流水号',
jlzb: '剂量组别',
xybh: '悬液编号',
bplsh1: '玻片流水号',
bplsh2: '玻片流水号'
},
dl020: {
xbxx:'细胞信息',
sydd:'实验地点',
czsj:'操作时间',
xbxx: '细胞信息',
sydd: '试验地点',
czsj: '操作时间',
qxbd: '前序表单',
dlbz: '备注',
czbz: '操作步骤',
czbz: '操作步骤'
},
dl021: {
czsj:'操作时间',
czsj: '操作时间',
dlbz: '备注',
gcqk: '观察情况',
xbmc:'细胞名称',
xwj:'显微镜',
bpbh:'玻片编号',
gcxps:'观察细胞数目',
zqxxbs:'中期相细胞数',
xbmc: '细胞名称',
xwj: '显微镜',
bpbh: '玻片编号',
gcxps: '观察细胞数目',
zqxxbs: '中期相细胞数'
},
dl022: {
czsj:'操作时间',
czsj: '操作时间',
dlbz: '备注',
gcqk: '观察情况',
jbqk: '畸变情况',
xbmc:'细胞名称',
xwj:'显微镜',
bpbh:'玻片编号',
gcxps:'观察细胞数目',
xbmc: '细胞名称',
xwj: '显微镜',
bpbh: '玻片编号',
gcxps: '观察细胞数目',
jgjxjbs:'结构畸形畸变数',
lxjbs:'裂隙畸变数',
dbtjbs:'多倍体畸变数',
nfzjbs:'内复制畸变数',
jblx:'畸变类型'
jgjxjbs: '结构畸形畸变数',
lxjbs: '裂隙畸变数',
dbtjbs: '多倍体畸变数',
nfzjbs: '内复制畸变数',
jblx: '畸变类型'
},
dl023: {
czsj:'操作时间',
czsj: '操作时间',
dlbz: '备注',
yqsyxx: '仪器使用信息',
czjl: '操作记录',
yqbh:'仪器编号',
yqmc:'仪器名称',
yqxh:'仪器型号',
xcrq:'下次测试/校准/检定日期',
yqbh: '仪器编号',
yqmc: '仪器名称',
yqxh: '仪器型号',
xcrq: '下次测试/校准/检定日期',
dwzshxbx:'动物种属或细胞系',
dwzs:'动物种属',
xbx:'细胞系',
sydd:'试验地点',
zwbh:'动物编号/细胞培养板名称',
uvazsjl:'UVA照射剂量',
zszsj:'照射总时间(分:秒)',
zskssj:'照射开始时间',
zsjssj:'照射结束时间',
ksButton:'开始',
jsButton:'结束',
dwzshxbx: '动物种属或细胞系',
dwzs: '动物种属',
xbx: '细胞系',
sydd: '试验地点',
zwbh: '动物编号/细胞培养板名称',
uvazsjl: 'UVA照射剂量',
zszsj: '照射总时间(分:秒)',
zskssj: '照射开始时间',
zsjssj: '照射结束时间',
ksButton: '开始',
jsButton: '结束'
},
dl024: {
sydd:'实验地点',
czsj:'操作时间',
sydd: '试验地点',
czsj: '操作时间',
dlbz: '备注',
xbpyxx: '细胞培养信息',
qxbd:'前序表单',
pykssj:'培养开始时间',
pyjssj:'培养结束时间',
jsButton:'培养结束时间',
xbbh:'细胞编号',
},
qxbd: '前序表单',
pykssj: '培养开始时间',
pyjssj: '培养结束时间',
jsButton: '培养结束时间',
xbbh: '细胞编号'
}
}

+ 3
- 0
src/lang/zh/template/gsp.js View File

@ -68,6 +68,9 @@ export default {
rjyjtj:'溶剂预计体积',
rjsjtj:'溶剂实际体积',
},
gsp007:{
bzqx:'标准曲线',
},
gsp009: {
xtsyx: '系统适应性',
ypbh: '样品编号',

+ 7
- 9
src/utils/calUnitTools.js View File

@ -54,10 +54,10 @@ export function subTj(valueArr, unitArr) {
}
export function addDecimals(a, b) {
if (Number.isNaN(a)) {
if (Number.isNaN(a) || a == 'NA') {
a = 0
}
if (Number.isNaN(b)) {
if (Number.isNaN(b) || b == 'NA') {
b = 0
}
const strA = a.toString()
@ -75,10 +75,10 @@ export function addDecimals(a, b) {
}
export function subDecimals(a, b) {
if (Number.isNaN(a)) {
if (Number.isNaN(a) || a == 'NA') {
a = 0
}
if (Number.isNaN(b)) {
if (Number.isNaN(b) || a == 'NA') {
b = 0
}
const strA = a.toString()
@ -96,7 +96,7 @@ export function subDecimals(a, b) {
}
export function multiplyDecimals(a, b) {
if (Number.isNaN(a) || Number.isNaN(b)) {
if (Number.isNaN(a) || Number.isNaN(b) || a == 'NA' || b == 'NA') {
return 0
}
const strA = a.toString()
@ -187,11 +187,9 @@ export function uniqeYqOne(newList) {
let resultList = []
for (var i = 0; i < newList.length; i++) {
let _index = _.findIndex(resultList, function (item) {
return (
item.bh == newList[i].bh
)
return item.bh == newList[i].bh
})
if (_index <0) {
if (_index < 0) {
resultList.push(newList[i])
}
}

+ 12
- 5
src/utils/conConverter.js View File

@ -43,7 +43,8 @@ class ConcentrationConverter {
unitCategories = {
'mass': ['mg/mL', 'μg/mL', 'ug/mL', 'ng/mL', 'pg/mL', 'fg/mL', 'g/L', 'mg/L', 'μg/L'],
'mole': ['mol/mL', 'mol/L', 'mmol/L', 'μmol/L', 'umol/L', 'nmol/L', 'pmol/L', 'mmol/mL', 'μmol/mL'],
'activity': ['U/mL', 'IU/mL', 'U/L', 'IU/L']
'activity': ['U/mL', 'IU/mL', 'U/L', 'IU/L'],
'percent': ['%']
};
/**
@ -100,12 +101,12 @@ class ConcentrationConverter {
let inputValue, inputUnit;
if (typeof value === 'string') {
const match = value.toString().trim().match(/^([\d.]+(?:[eE][+-]?\d+)?)\s*([a-zA-Zμ/]+)$/);
const match = value.toString().trim().match(/^([\d.]+(?:[eE][+-]?\d+)?)(?:\s*([a-zA-Zμ/%]+))?$/);
if (!match) {
throw new Error(`输入格式错误: ${value}`);
}
inputValue = parseFloat(match[1]);
inputUnit = this.normalizeUnit(match[2]);
inputUnit = match[2] ? this.normalizeUnit(match[2]) : '';
} else if (typeof value === 'number') {
inputValue = value;
inputUnit = ''; // 无量纲
@ -124,12 +125,18 @@ class ConcentrationConverter {
return inputValue; // 相同单位,直接返回
}
// 3. 验证单位类别
// 3. 检查是否为%单位
if (inputUnit === '%' || normalizedTargetUnit === '%') {
// %单位是单独的系列,不进行转换
throw new Error(`单位类别不匹配: ${inputUnit} 不能转换为 ${targetUnit}`);
}
// 4. 验证单位类别
if (!this.isSameCategory(inputUnit, normalizedTargetUnit)) {
throw new Error(`单位类别不匹配: ${inputUnit} 不能转换为 ${targetUnit}`);
}
// 4. 执行转换
// 5. 执行转换
return this._convertValue(inputValue, inputUnit, normalizedTargetUnit);
}

+ 25
- 0
src/utils/conTools.js View File

@ -10,6 +10,11 @@ export const isCommonUnit = (startUnit, units) => {
return false;
}
// 检查是否为%单位
const isPercentUnit = (unit) => {
return unit.trim() === '%';
};
// 提取单位分子部分(斜杠前的部分)
const extractNumerator = (unit) => {
const normalizedUnit = unit
@ -48,6 +53,26 @@ export const isCommonUnit = (startUnit, units) => {
return 'other';
};
// 检查基准单位是否为%单位
if (isPercentUnit(startUnit)) {
// 所有单位都必须是%
for (const unit of units) {
if (!isPercentUnit(unit)) {
console.log(`单位 ${unit} 不是%单位,与基准单位不同`);
return false;
}
}
return true;
}
// 检查所有单位是否有%单位
for (const unit of units) {
if (isPercentUnit(unit)) {
console.log(`单位 ${unit} 是%单位,与基准单位 ${startUnit} 不同`);
return false;
}
}
// 获取基准单位的分子类别
const startNumerator = extractNumerator(startUnit);
if (!startNumerator) {

+ 3
- 0
src/utils/index.js View File

@ -419,6 +419,9 @@ export const getExpireDate = (
effectivePeriod,
effectivePeriodUnit
) => {
if(startDate === "NA"){
return "NA";
}
const start = moment(startDate)
const unit = effectivePeriodUnit === '天' ? 'days' : 'hours'
const end = start

+ 20
- 8
src/views/business/comps/template/TemplateTable.vue View File

@ -43,6 +43,7 @@ import GSP004 from "./comps/gsp/GSP004.vue";
import GSP005 from "./comps/gsp/GSP005.vue";
import GSP009 from "./comps/gsp/GSP009.vue";
import GSP010 from "./comps/gsp/GSP010.vue";
import GSP015 from "./comps/gsp/GSP015.vue";
////
import SYWZPZJHB from "./comps/gsp/SYWZPZJHB.vue";
@ -67,9 +68,9 @@ import PCR012 from "./comps/pcr/PCR012.vue";
import LBA002 from "./comps/lba/LBA002.vue";
import LBA003 from "./comps/lba/LBA003.vue";
import LBA004 from "./comps/lba/LBA004.vue";
import LBA005 from "./comps/lba/LBA005.vue";
// LBA005-使SP456
import LBA006 from "./comps/lba/LBA006.vue";
import LBA007 from "./comps/lba/LBA007.vue";
// LBA007-使SP456
import LBA008 from "./comps/lba/LBA008.vue";
//ADA
@ -77,9 +78,9 @@ import LBA008 from "./comps/lba/LBA008.vue";
// ADA002-使LBA002
// ADA003-使LBA003
// ADA004-使LBA004
// ADA005-使LBA005
// ADA005-使SP456
// ADA006-使LBA006
// ADA007-使LBA007
// ADA007-使SP456
//
// YP001-使SP001
@ -135,7 +136,7 @@ export default {
////
MJYLQSQD, SYWZPZJHB, DMYPPZJLB,
//
GSP001,GSP002, GSP003,GSP004,GSP005,GSP009, GSP010,
GSP001,GSP002, GSP003,GSP004,GSP005,GSP009, GSP010,GSP015,
//
SP001, SP003, SP00456,SP007, SP008, SP009,SP0019,SP0020,SP0021,
// PCR
@ -144,9 +145,7 @@ export default {
LBA002,
LBA003,
LBA004,
LBA005,
LBA006,
LBA007,
LBA008,
//
YP002,
@ -259,6 +258,7 @@ export default {
'GSP008': 'GSP002',
'GSP009': 'GSP009',
'GSP010': 'GSP010',
'GSP015': 'GSP015',
'GSP011': 'GSP009',
'GSP012': 'GSP002',
'GSP013': 'GSP002',
@ -358,10 +358,13 @@ export default {
if (v.zdxgjl) {
this.zdxgjl = JSON.parse(v.zdxgjl) || [];
}
if (v.submittedCodes) {
this.submittedCodes = JSON.parse(v.submittedCodes) || [];
}
if (v.fhyjjl) {
this.fhyjjl = JSON.parse(v.fhyjjl) || [];
}
if (v.zdgxjl) {
if (v.zdgxjl) {//qc
this.fieldCheckObj = JSON.parse(v.zdgxjl) || {};
}
}
@ -374,12 +377,20 @@ export default {
templateData: this.templateData,
templateFillType: this.fillType,
getZdxgjl: () => this.zdxgjl,
getSubmittedCodes: () => this.submittedCodes,
getFhyjjl: () => this.fhyjjl,
getFieldCheckObj: () => this.fieldCheckObj,
//
updateZdxgjl: (data) => {
this.zdxgjl.unshift(data);
},
//codes
updateSubmittedCodes: (code) => {
if(!this.submittedCodes.includes(code)){
this.submittedCodes.unshift(code);
return
}
},
//
updateFhyjjl: (data) => {
this.fhyjjl.unshift(data);
@ -404,6 +415,7 @@ export default {
currentEditSignUuid: null, // EditSignHandleFormItemuuid
latestParams: {},//params
hasCustomTable: false,//
submittedCodes: [],//codes
};
},
created() {

+ 24
- 26
src/views/business/comps/template/comps/bl/BL001.vue View File

@ -251,9 +251,6 @@ export default {
bodyType: 'checkboxTree',
bodyFillType: 'actFill',
width: 280,
bodyLayout: 'horizontal',//
optionCode:"ypmcTaOptions",
noBorder: true,
bodyOptions: this.ypmcTaOptions,
},
{
@ -318,10 +315,7 @@ export default {
}
},
mounted() {
if(this.fillType === "actFill"){
console.log(this.formData, "this.formData")
this.ypmcTaOptions = this.formData.ypmcTaOptions || []
}
this.getTabletoCheck()
},
methods: {
//
@ -331,25 +325,11 @@ export default {
//
getFilledFormData() {
const filledData = this.getFilledFormDataByRefs(refNames);
if(this.formData.ypmcTaOptions){
filledData.ypmcTaOptions = this.formData.ypmcTaOptions
}
return filledData
return this.getFilledFormDataByRefs(refNames)
},
//
async getFormData() {
const formData = await this.validFields();
if(this.fillType === "preFill" && !!formData){
const filledData = this.getFilledFormData();
const {stepTableFormData_1 = []} = filledData;
const options = stepTableFormData_1.map(item => ({
value: item.ypmc,
label: item.ypmc,
}))
formData.ypmcTaOptions = options
}
return formData
return await this.validFormFields(refNames)
},
//
async validFields() {
@ -358,9 +338,9 @@ export default {
getResource() {
// const stepResource = this.$refs.yqsyTableRef.getStepResource()
// 使
// this.resourceTmp = stepResource.sjResource || []
// this.yqResourceTmp = stepResource.yqResource || []
// return this.resourceTmp
this.resourceTmp = []
this.yqResourceTmp = []
return this.resourceTmp
},
//
@ -377,6 +357,24 @@ export default {
)
},
//
getTabletoCheck() {
let { stepTableFormData_1 = [] } = this.getFilledFormData()
const firstList = stepTableFormData_1
.filter(item => item && item.ypmc && item.ypmc.trim()) //
.map(item => ({
label: item.ypmc,
value: item.ypmc,
}))
//
.filter((item, index, arr) => {
return arr.findIndex(i => i.value === item.value) === index;
});
//
this.$nextTick(()=>{
this.ypmcTaOptions = firstList;
})
},
}
}
</script>

+ 21
- 14
src/views/business/comps/template/comps/bl/BL002.vue View File

@ -210,24 +210,18 @@ export default {
{
label: 'template.bl.bl002.smryqrxx',
prop: "smryqrxx",
bodyType: "radio",
isNeedCheck: true,
bodyType: "checkbox",
bodyFillType: "actFill",
bodyOptions: [
{value:'图像命名准确',label:'图像命名准确'},
{value:'图像命名不准确',label:'图像命名不准确'},
],
checkboxLabel: 'template.bl.bl002.txmmzq'
},
{
label: 'template.bl.bl002.ztblxjqrxx',
prop: "ztblxjqrxx",
bodyType: 'radio',
isNeedCheck: true,
bodyType: 'checkbox',
bodyFillType: 'actFill',
bodyOptions: [
{value:'图像完整清晰',label:'图像完整清晰'},
{value:'图像不完整清晰',label:'图像不完整清晰'},
],
// checkboxLabel: 'template.bl.bl002.txwzqx'
checkboxLabel: 'template.bl.bl002.txwzqx'
},
]
},
@ -238,6 +232,19 @@ export default {
refConf
}
},
mounted() {
let { stepTableFormData = [] } = this.getFilledFormData()
if( stepTableFormData && stepTableFormData.length >0 ){
stepTableFormData.map((item,index)=>{
if(!item.smryqrxx && item.smryqrxx !== false){
this.$refs.yqsyTableRef.updateDataSourceByRowIndex(index, {...item,smryqrxx:false})
}
if(!item.ztblxjqrxx && item.ztblxjqrxx !== false){
this.$refs.yqsyTableRef.updateDataSourceByRowIndex(index, {...item,ztblxjqrxx:false})
}
})
}
},
methods: {
//
async deleteTableRow(rowIndex, refName) {
@ -258,9 +265,9 @@ export default {
getResource() {
// const stepResource = this.$refs.yqsyTableRef.getStepResource()
// 使
// this.resourceTmp = stepResource.sjResource || []
// this.yqResourceTmp = stepResource.yqResource || []
// return this.resourceTmp
this.resourceTmp = []
this.yqResourceTmp = []
return this.resourceTmp
},
//
async onSave() {

+ 3
- 3
src/views/business/comps/template/comps/dj/DJ001.vue View File

@ -231,9 +231,9 @@ export default {
getResource() {
//使
// const stepResource = this.$refs.stepRef.getStepResource()
// this.resourceTmp = stepResource.sjResource || []
// this.yqResourceTmp = stepResource.yqResource || []
// return this.resourceTmp;
this.resourceTmp = []
this.yqResourceTmp = []
return this.resourceTmp;
},
//
async onSave() {

+ 27
- 9
src/views/business/comps/template/comps/dj/DJ002.vue View File

@ -237,10 +237,7 @@ export default {
prop: "ypmcTa",
bodyType: 'checkboxTree',
bodyFillType: 'actFill',
bodyOptions: [
{value:1,label:'正常'},
{value:0,label:'偏离'},
],
bodyOptions: this.ypmcCheckOptions
},
{
label: 'template.dj.dj003.cysj',
@ -297,9 +294,13 @@ export default {
data() {
return {
formData: {},
refConf
refConf,
ypmcCheckOptions:[]
}
},
mounted() {
this.getTabletoCheck()
},
methods: {
//
async deleteTableRow(rowIndex, refName) {
@ -321,9 +322,9 @@ export default {
getResource() {
// const stepResource = this.$refs.yqsyTableRef.getStepResource()
// 使
// this.resourceTmp = stepResource.sjResource || []
// this.yqResourceTmp = stepResource.yqResource || []
// return this.resourceTmp
this.resourceTmp = []
this.yqResourceTmp = []
return this.resourceTmp
},
//
@ -338,7 +339,24 @@ export default {
moment().format('YYYY/MM/DD HH:mm'),
{ isUpdateRecord: true, signData }
)
},
//
getTabletoCheck() {
let { stepTableFormData_1 = [] } = this.getFilledFormData()
const firstList = stepTableFormData_1
.filter(item => item && item.ypmc && item.ypmc.trim()) //
.map(item => ({
label: item.ypmc,
value: item.ypmc,
}))
//
.filter((item, index, arr) => {
return arr.findIndex(i => i.value === item.value) === index;
});
//
this.$nextTick(()=>{
this.ypmcCheckOptions = firstList;
})
},
}
}

+ 3
- 3
src/views/business/comps/template/comps/dj/DJ003.vue View File

@ -274,9 +274,9 @@ export default {
getResource() {
// const stepResource = this.$refs.yqsyTableRef.getStepResource()
// 使
// this.resourceTmp = stepResource.sjResource || []
// this.yqResourceTmp = stepResource.yqResource || []
// return this.resourceTmp
this.resourceTmp = []
this.yqResourceTmp = []
return this.resourceTmp
},
//

+ 3
- 3
src/views/business/comps/template/comps/dl/DL004.vue View File

@ -280,9 +280,9 @@ export default {
getResource() {
// const stepResource = this.$refs.yqsyTableRef.getStepResource()
// 使
// this.resourceTmp = stepResource.sjResource || []
// this.yqResourceTmp = stepResource.yqResource || []
// return this.resourceTmp
this.resourceTmp = []
this.yqResourceTmp = []
return this.resourceTmp
},
onRegentSubmit(e) {
const { selectInfo, key, rowIndex } = e

+ 12
- 5
src/views/business/comps/template/comps/dl/DL005.vue View File

@ -25,7 +25,7 @@
:formConfig="czInfoFormConfig"
:formData="formData"
/>
<StepFormPackage class="mt20" ref="stepFormPackageRef" prefixKey="dl_step1" :form-config="stepConfig" :formData = "formData" />
<StepFormPackage @onRegentSubmit="onRegentSubmit" class="mt20" ref="stepFormPackageRef" prefixKey="dl_step1" :form-config="stepConfig" :formData = "formData" />
</div>
<BaseInfoFormPackage
@ -235,11 +235,11 @@ export default {
return await this.validFormFields(refNames)
},
getResource() {
// const stepResource = this.$refs.yqsyTableRef.getStepResource()
const stepResource = this.$refs.stepFormPackageRef.getSjResource()
// 使
// this.resourceTmp = stepResource.sjResource || []
// this.yqResourceTmp = stepResource.yqResource || []
// return this.resourceTmp
this.resourceTmp = []
this.yqResourceTmp = stepResource.yqResource || []
return this.resourceTmp
},
//
@ -247,6 +247,13 @@ export default {
const formData = this.getStepResource()
console.log(formData, 'formData')
},
onRegentSubmit(e) {
const { selectInfo, key, rowIndex } = e
const { row } = selectInfo
console.log(key,111)
},
}
}
</script>

+ 8
- 7
src/views/business/comps/template/comps/dl/DL006.vue View File

@ -1,4 +1,4 @@
<!-- Ames掺入法平皿培养记录表 -->
<!-- Ames掺入法平皿培养记录表 -->
<template>
<div>
<div class="detail-container">
@ -472,11 +472,11 @@ export default {
return await this.validFormFields(refNames)
},
getResource() {
// const stepResource = this.$refs.yqsyTableRef.getStepResource()
const stepResource = this.$refs.stepRef.getStepResource()
// 使
// this.resourceTmp = stepResource.sjResource || []
// this.yqResourceTmp = stepResource.yqResource || []
// return this.resourceTmp
this.resourceTmp = stepResource.sjResource || []
this.yqResourceTmp = stepResource.yqResource || []
return this.resourceTmp
},
onRegentSubmit(e) {
console.log(e,909090)
@ -502,7 +502,7 @@ export default {
1: {
s9hhybh: {
label: 'template.dl.dl006.s9hhybh',
type: 'input',
type: 'sj',
fillType: 'actFill',
maxlength: 4,
},
@ -519,7 +519,7 @@ export default {
other: {
pbsbh: {
label: 'template.dl.dl006.pbsbh',
type: 'input',
type: 'sj',
fillType: 'actFill',
maxlength: 4,
},
@ -595,6 +595,7 @@ export default {
prop: `czrxm_${i}`,
label: 'template.dl.dl006.jzbh',
bodyType: 'checkbox',
isNeedCheck: true,
bodyFillType: 'actFill', // actFillpreFill
width: 300,
checkboxLabel:'',

+ 2
- 12
src/views/business/comps/template/comps/dl/DL007.vue View File

@ -1,4 +1,4 @@
<!-- Ames掺入法平皿培养记录表 -->
<!-- Ames掺入法平皿培养记录表 -->
<template>
<div>
<div class="detail-container">
@ -280,17 +280,7 @@ export default {
return await this.validFormFields(refNames)
},
getResource() {
const yqsyData = this.$refs.yqsyTableRef?.getFilledFormData()
const yqsyList = yqsyData?.stepTableFormData || []
// 使
this.yqResourceTmp = yqsyList
.filter((item) => item.yqbh)
.map((item) => ({
bh: item.yqbh,
type: 'yq'
}))
this.yqResourceTmp = []
this.resourceTmp = []
return this.resourceTmp
},

+ 1
- 11
src/views/business/comps/template/comps/dl/DL008.vue View File

@ -439,17 +439,7 @@ export default {
return await this.validFormFields(refNames)
},
getResource() {
const yqsyData = this.$refs.yqsyTableRef?.getFilledFormData()
const yqsyList = yqsyData?.stepTableFormData || []
// 使
this.yqResourceTmp = yqsyList
.filter((item) => item.yqbh)
.map((item) => ({
bh: item.yqbh,
type: 'yq'
}))
this.yqResourceTmp = []
this.resourceTmp = []
return this.resourceTmp
},

+ 1
- 11
src/views/business/comps/template/comps/dl/DL009.vue View File

@ -550,17 +550,7 @@ export default {
return await this.validFormFields(refNames)
},
getResource() {
const yqsyData = this.$refs.yqsyTableRef?.getFilledFormData()
const yqsyList = yqsyData?.stepTableFormData || []
// 使
this.yqResourceTmp = yqsyList
.filter((item) => item.yqbh)
.map((item) => ({
bh: item.yqbh,
type: 'yq'
}))
this.yqResourceTmp = []
this.resourceTmp = []
return this.resourceTmp
},

+ 4
- 60
src/views/business/comps/template/comps/dl/DL010.vue View File

@ -485,66 +485,10 @@ export default {
return await this.validFormFields(refsToValidate)
},
getResource() {
const sjxxStepResource = this.$refs.sjxxStepRef.getStepResource()
// 使
this.resourceTmp = sjxxStepResource.sjResource || []
this.yqResourceTmp = sjxxStepResource.yqResource || []
//
const sjxxTableData = this.$refs.sjxxTableRef?.getFilledFormData()
const sjxxList = sjxxTableData?.stepTableFormData || []
const headerSelectFields = sjxxTableData?.headerSelectFields || {}
// 0.9%
//
const sjxxResource = []
sjxxList.forEach((item) => {
// 0.9%
if (item.sjlhnzsjyjrl) {
sjxxResource.push({
mc: '0.9%氯化钠注射液', //
bh: null, //
ph: null, //
nd: null, //
nddw: null, //
ndz: null, //
ly: null, //
sxrq: null, //
kc: null, //
kcdw: null, //
type: 1, // 1使
syl: item.sjlhnzsjyjrl, // 使
syldw: headerSelectFields.sjlhnUnit || '', // 使
yxzq: null, //
yxzqdw: null //
})
}
//
if (item.sjjrxq) {
sjxxResource.push({
mc: '血清', //
bh: null, //
ph: null, //
nd: null, //
nddw: null, //
ndz: null, //
ly: null, //
sxrq: null, //
kc: null, //
kcdw: null, //
type: 1, // 1使
syl: item.sjjrxq, // 使
syldw: headerSelectFields.sjjrxqUnit || '', // 使
yxzq: null, //
yxzqdw: null //
})
}
})
//
return [...this.resourceTmp, ...sjxxResource]
const stepResource = this.$refs.sjxxStepRef.getStepResource()
this.resourceTmp = stepResource.sjResource || []
this.yqResourceTmp = stepResource.yqResource || []
return this.resourceTmp;
},
onRegentSubmit(e) {
//

+ 84
- 81
src/views/business/comps/template/comps/dl/DL011.vue View File

@ -8,24 +8,11 @@
</div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPackage
fieldItemLabel="template.common.baseInfo"
label="template.common.baseInfo"
:ref="refConf.base"
:formConfig="baseInfoFormConfig"
:formData="formData"
/>
<BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo"
:ref="refConf.base" :formConfig="baseInfoFormConfig" :formData="formData" />
<TableList
label="template.common.reagentInfo"
:columns="sysjColumns"
:dataSource="resourceSj"
/>
<TableList
label="template.common.instrumentInfo"
:columns="yqColumns"
:dataSource="yqResource"
/>
<TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resourceSj" />
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<!-- 细胞信息 -->
<LineLabel label="template.dl.dl011.xbxx" />
@ -35,13 +22,8 @@
$t('template.dl.dl011.bqdy')
}}</el-button>
</div>
<BaseInfoFormPackage
fieldItemLabel=""
label=""
:ref="refConf.xbxx"
:formConfig="xbxxConfig"
:formData="formData"
/>
<BaseInfoFormPackage fieldItemLabel="" label="" :ref="refConf.xbxx" :formConfig="xbxxConfig"
@onRegentSubmit="(data) => onTableRegentSubmit(data)" :formData="formData" />
</div>
<LineLabel label="template.dl.dl011.fxbz" />
@ -50,23 +32,13 @@
<!-- 预留区域 - 培养信息 -->
<LineLabel label="template.dl.dl011.pyxx" />
<div class="template-form-item">
<BaseInfoFormPackage
fieldItemLabel=""
label=""
:ref="refConf.pyxx"
:formConfig="pyxxConfig"
:formData="formData"
@clickButton="handlePyxxClickButton"
/>
<BaseInfoFormPackage fieldItemLabel="" label="" :ref="refConf.pyxx" :formConfig="pyxxConfig"
:formData="formData" @onRegentSubmit="(data) => onTableRegentSubmit(data)"
@clickButton="handlePyxxClickButton" />
</div>
<BaseInfoFormPackage
fieldItemLabel="template.dl.dl007.bz"
label="template.dl.dl007.bz"
:ref="refConf.remark"
:formConfig="remarkConfig"
:formData="formData"
/>
<BaseInfoFormPackage fieldItemLabel="template.dl.dl007.bz" label="template.dl.dl007.bz" :ref="refConf.remark"
:formConfig="remarkConfig" :formData="formData" />
</div>
</div>
</div>
@ -82,6 +54,8 @@ import TableList from '@/components/Template/Table'
import Step from '@/components/Template/Step'
import templateMixin from '../../mixins/templateMixin'
import moment from 'moment'
import { uniqeYqOne, uniqeResource } from "@/utils/calUnitTools";
import { EventBus } from "@/utils/eventBus";
const refConf = {
base: 'baseInfoRef',
@ -297,6 +271,24 @@ export default {
}
},
methods: {
onTableRegentSubmit(data) {
if (data.key === 'xbdcbh') {
this.$refs.xbxxRef.updateFormData('xbdcbh_tj', data.selectInfo.row.tj)
this.$refs.xbxxRef.updateFormData('xbdcbh_dw', data.selectInfo.row.tjdw)
}
if (data.key === 'pyxbh') {
this.$refs.pyxxRef.updateFormData('pyxbh_mc', data.selectInfo.row.mc)
this.$refs.pyxxRef.updateFormData('pyxbh_xh', data.selectInfo.row.xh)
this.$refs.pyxxRef.updateFormData('pyxbh_jzrq', data.selectInfo.row.jzrq)
}
//
const params = {
type: "fieldChanged",
newRecord: null,
resourceList: null,
}
EventBus.$emit('onModifyRecord', params);
},
//
handlePyxxClickButton(_item, signData) {
this.$refs.pyxxRef.updateFormData(
@ -322,49 +314,59 @@ export default {
return await this.validFormFields(refNames)
},
getResource() {
const content = this.getFilledFormData()
let tmpResource = []
let tmpYq = []
//
tmpResource.push({
mc: content.xbmc,
bh: content.fshxbbh + content.fshxbbhCodeSn,
ph: '',
ndz: '',
nd: '',
nddw: '',
ly: 'ELN配制',
sxrq: null,
kc: content.fshxbsjtj,
kcdw: content.fshxbsjtjUnit,
syl: null,
type: null, //null
elnType: this.product, // his.product
syldw: content.fshxbsjtjUnit,
yxzq: null,
yxzqdw: null,
})
//使
tmpResource.push({
mc: null,
bh: content.xbdcbh,
ph: '',
ndz: '',
nd: '',
nddw: '',
ly: '',
sxrq: null,
kc: null,
kcdw: null,
syl: null,
type: 9, //使
elnType: null, //null
syldw: content.xbdcbh_dw,
yxzq: null,
yxzqdw: null,
})
//使
tmpYq.push({
mc: content.pyxbh_mc,
xh: content.pyxbh_xh,
bh: content.pyxbh,
jzrq: content.pyxbh_jzrq,
})
//使
const stepResource = this.$refs.stepRef.getStepResource()
// 使
this.resourceTmp = stepResource.sjResource || []
this.yqResourceTmp = [...(stepResource.yqResource || [])]
//
const xbxxData = this.$refs.xbxxRef?.getFilledFormData() || {}
//
if (xbxxData.xbdcbh) {
const xbInfo = xbxxData.selectInfo_xbdcbh || {}
// type StepFormPackage xb
this.xbxjTmp = [
{
value: xbxxData.xbdcbh,
bh: xbInfo.bh || xbxxData.xbdcbh,
mc: xbInfo.mc || '',
xh: xbInfo.xh || '',
jzrq: xbInfo.jzrq || ''
}
]
} else {
this.xbxjTmp = []
}
//
const pyxxData = this.$refs.pyxxRef?.getFilledFormData() || {}
//
if (pyxxData.pyxbh) {
const pyxInfo = pyxxData.selectInfo_pyxbh || {}
// type StepFormPackage yq
this.yqResourceTmp.push({
type: 'yq',
value: pyxxData.pyxbh,
bh: pyxInfo.bh || pyxxData.pyxbh,
mc: pyxInfo.mc || '',
xh: pyxInfo.xh || '',
jzrq: pyxInfo.jzrq || ''
})
}
return this.resourceTmp
this.resourceTmp = uniqeResource(tmpResource, stepResource.sjResource || [])
this.yqResourceTmp = uniqeYqOne(tmpYq, stepResource.yqResource || [])
return this.resourceTmp;
},
onRegentSubmit(e) {
//
@ -391,6 +393,7 @@ export default {
.print-btn {
margin-bottom: 20px;
}
.config-header-end {
display: flex;
justify-content: flex-end;

+ 85
- 80
src/views/business/comps/template/comps/dl/DL012.vue View File

@ -8,35 +8,17 @@
</div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPackage
fieldItemLabel="template.common.baseInfo"
label="template.common.baseInfo"
:ref="refConf.base"
:formConfig="baseInfoFormConfig"
:formData="formData"
/>
<BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo"
:ref="refConf.base" :formConfig="baseInfoFormConfig" :formData="formData" />
<TableList
label="template.common.reagentInfo"
:columns="sysjColumns"
:dataSource="resourceSj"
/>
<TableList
label="template.common.instrumentInfo"
:columns="yqColumns"
:dataSource="yqResource"
/>
<TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resourceSj" />
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<!-- 细胞信息 -->
<LineLabel label="template.dl.dl012.xbxx" />
<div class="template-form-item">
<BaseInfoFormPackage
fieldItemLabel=""
label=""
:ref="refConf.xbxx"
:formConfig="xbxxConfig"
:formData="formData"
/>
<BaseInfoFormPackage fieldItemLabel="" label="" :ref="refConf.xbxx" :formConfig="xbxxConfig"
@onRegentSubmit="(data) => onTableRegentSubmit(data)" :formData="formData" />
</div>
<LineLabel label="template.dl.dl012.zbbz" />
@ -45,23 +27,13 @@
<!-- 培养信息 -->
<LineLabel label="template.dl.dl012.pyxx" />
<div class="template-form-item">
<BaseInfoFormPackage
fieldItemLabel=""
label=""
:ref="refConf.pyxx"
:formConfig="pyxxConfig"
@clickButton="handleClickButton"
:formData="formData"
/>
<BaseInfoFormPackage fieldItemLabel="" label="" :ref="refConf.pyxx" :formConfig="pyxxConfig"
@clickButton="handleClickButton" @onRegentSubmit="(data) => onTableRegentSubmit(data)"
:formData="formData" />
</div>
<BaseInfoFormPackage
fieldItemLabel="template.dl.dl007.bz"
label="template.dl.dl007.bz"
:ref="refConf.remark"
:formConfig="remarkConfig"
:formData="formData"
/>
<BaseInfoFormPackage fieldItemLabel="template.dl.dl007.bz" label="template.dl.dl007.bz" :ref="refConf.remark"
:formConfig="remarkConfig" :formData="formData" />
</div>
</div>
</div>
@ -77,6 +49,8 @@ import TableList from '@/components/Template/Table'
import Step from '@/components/Template/Step'
import templateMixin from '../../mixins/templateMixin'
import moment from 'moment'
import { uniqeYqOne, uniqeResource } from "@/utils/calUnitTools";
import { EventBus } from "@/utils/eventBus";
const refConf = {
base: 'baseInfoRef',
@ -339,6 +313,24 @@ export default {
}
},
methods: {
onTableRegentSubmit(data) {
if (data.key === 'xbzbqbh') {
this.$refs.xbxxRef.updateFormData('xbzbqbh_tj', data.selectInfo.row.tj)
this.$refs.xbxxRef.updateFormData('xbzbqbh_dw', data.selectInfo.row.tjdw)
}
if (data.key === 'pyxbh') {
this.$refs.pyxxRef.updateFormData('pyxbh_mc', data.selectInfo.row.mc)
this.$refs.pyxxRef.updateFormData('pyxbh_xh', data.selectInfo.row.xh)
this.$refs.pyxxRef.updateFormData('pyxbh_jzrq', data.selectInfo.row.jzrq)
}
//
const params = {
type: "fieldChanged",
newRecord: null,
resourceList: null,
}
EventBus.$emit('onModifyRecord', params);
},
handleClickButton(e, signData) {
console.log(e)
const { subKey } = e || {}
@ -367,49 +359,61 @@ export default {
return await this.validFormFields(refNames)
},
getResource() {
const stepResource = this.$refs.stepRef.getStepResource()
// 使
this.resourceTmp = stepResource.sjResource || []
this.yqResourceTmp = [...(stepResource.yqResource || [])]
//
const xbxxData = this.$refs.xbxxRef?.getFilledFormData() || {}
//
if (xbxxData.xbzbqbh) {
const xbInfo = xbxxData.selectInfo_xbzbqbh || {}
// type
this.xbxjTmp = [
{
value: xbxxData.xbzbqbh,
bh: xbInfo.bh || xbxxData.xbzbqbh,
mc: xbInfo.mc || '',
xh: xbInfo.xh || '',
jzrq: xbInfo.jzrq || ''
}
]
} else {
this.xbxjTmp = []
}
//
const pyxxData = this.$refs.pyxxRef?.getFilledFormData() || {}
//
if (pyxxData.pyxbh) {
const pyxInfo = pyxxData.selectInfo_pyxbh || {}
// type
this.yqResourceTmp.push({
type: 'yq',
value: pyxxData.pyxbh,
bh: pyxInfo.bh || pyxxData.pyxbh,
mc: pyxInfo.mc || '',
xh: pyxInfo.xh || '',
jzrq: pyxInfo.jzrq || ''
const content = this.getFilledFormData()
let tmpResource = []
let tmpYq = []
//
for (var i = 0; i < parseInt(content.zbxbs); i++) {
tmpResource.push({
mc: content.xbmc,
bh: content['zbhxbbh_' + (i + 1)] + content['zbhxbbhCodeSn_' + (i + 1)],
ph: '',
ndz: '',
nd: '',
nddw: '',
ly: 'ELN配制',
sxrq: null,
kc: content.zbhxbsjtj,
kcdw: content.zbhxbsjtjUnit,
syl: null,
type: null, //null
elnType: this.product, // his.product
syldw: content.zbhxbsjtjUnit,
yxzq: null,
yxzqdw: null,
})
}
return this.resourceTmp
//使
tmpResource.push({
mc: null,
bh: content.xbzbqbh,
ph: '',
ndz: '',
nd: '',
nddw: '',
ly: '',
sxrq: null,
kc: null,
kcdw: null,
syl: null,
type: 9, //使
elnType: null, //null
syldw: content.xbzbqbh_dw,
yxzq: null,
yxzqdw: null,
})
//使
tmpYq.push({
mc: content.pyxbh_mc,
xh: content.pyxbh_xh,
bh: content.pyxbh,
jzrq: content.pyxbh_jzrq,
})
//使
const stepResource = this.$refs.stepRef.getStepResource()
this.resourceTmp = uniqeResource(tmpResource, stepResource.sjResource || [])
this.yqResourceTmp = uniqeYqOne(tmpYq, stepResource.yqResource || [])
return this.resourceTmp;
},
onRegentSubmit(e) {
//
@ -430,6 +434,7 @@ export default {
.print-btn {
margin-bottom: 20px;
}
.config-header-end {
display: flex;
justify-content: flex-end;

+ 1
- 16
src/views/business/comps/template/comps/dl/DL013.vue View File

@ -614,22 +614,7 @@ export default {
return await this.validFormFields(refsToValidate)
},
getResource() {
// 使
const yqsyData = this.$refs.yqsyTableRef?.getFilledFormData()
const yqsyList = yqsyData?.stepTableFormData || []
// 使
this.yqResourceTmp = yqsyList
.filter((item) => item.yqbh)
.map((item) => ({
type: 'yq',
value: item.yqbh,
bh: item.yqbh,
mc: item.yqmc,
xh: item.yqxh,
jzrq: item.xccsjzjdrq
}))
this.yqResourceTmp = []
this.resourceTmp = []
return this.resourceTmp
},

+ 144
- 183
src/views/business/comps/template/comps/dl/DL014.vue View File

@ -8,76 +8,36 @@
</div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPackage
fieldItemLabel="template.common.baseInfo"
label="template.common.baseInfo"
:ref="refConf.base"
:formConfig="baseInfoFormConfig"
:formData="formData"
/>
<TableList
label="template.common.gyzjInfo"
:columns="gyzjColumns"
:dataSource="resourceGyzj"
/>
<TableList
label="template.common.reagentInfo"
:columns="sysjColumns"
:dataSource="resource"
/>
<BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo"
:ref="refConf.base" :formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.gyzjInfo" :columns="gyzjColumns" :dataSource="resourceGyzj" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resource" />
<LineLabel label="template.dl.dl007.yqsyxx" />
<CustomTable
:columns="yqsyColumns"
:ref="refConf.yqsy"
@onRegentSubmit="(e) => onRegentSubmit(e)"
:showOperation="fillType === 'actFill'"
:showAddRow="fillType === 'actFill'"
:formData="formData"
:prefixKey="`yqsyTable`"
>
<CustomTable :columns="yqsyColumns" :ref="refConf.yqsy" @onRegentSubmit="(e) => onRegentSubmit(e)"
:showOperation="fillType === 'actFill'" :showAddRow="fillType === 'actFill'" :formData="formData"
:prefixKey="`yqsyTable`">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaionDelete
:row="row"
:rowIndex="rowIndex"
:columns="columns"
@deleteRow="() => deleteTableRow(rowIndex, 'yqsyTableRef')"
></TableOpertaionDelete>
<TableOpertaionDelete :row="row" :rowIndex="rowIndex" :columns="columns"
@deleteRow="() => deleteTableRow(rowIndex, 'yqsyTableRef')"></TableOpertaionDelete>
</template>
</CustomTable>
<LineLabel label="template.dl.dl014.xbxx" />
<BaseInfoFormPackage
:ref="refConf.xbInfo"
:formConfig="xbInfoFormConfig"
:formData="formData"
/>
<BaseInfoFormPackage :ref="refConf.xbInfo" :formConfig="xbInfoFormConfig" :formData="formData" />
<!-- 剂量组配制信息 -->
<LineLabel label="template.dl.dl014.jlzpzxx" />
<div class="template-form-item">
<BaseInfoFormPackage
fieldItemLabel=""
label=""
:ref="refConf.jlzInfo"
:formConfig="jlzInfoFormConfig"
:formData="formData"
@select="onSftjs9Change"
@clickButton="handleJlzzsButton"
@blur="onJlzInfoBlur"
/>
<BaseInfoFormPackage fieldItemLabel="" label="" :ref="refConf.jlzInfo" :formConfig="jlzInfoFormConfig"
:formData="formData" @select="onSftjs9Change" @clickButton="handleJlzzsButton"
@onRegentSubmit="(data) => onTableRegentSubmit(data)" @blur="onJlzInfoBlur" />
<!-- 剂量组名称列表 -->
<CustomTable
:columns="jlzmcTableColumns"
:ref="refConf.jlzmcTable"
:showOperation="false"
:showAddRow="false"
:formData="jlzmcTableFormData"
:prefixKey="`jlzmcTable`"
@blur="onJlzmcTableBlur"
></CustomTable>
<CustomTable :columns="jlzmcTableColumns" :ref="refConf.jlzmcTable" :showOperation="false"
:showAddRow="false" :formData="jlzmcTableFormData" :prefixKey="`jlzmcTable`" @blur="onJlzmcTableBlur">
</CustomTable>
<!-- 完成按钮 -->
<div class="jlzmc-complete-btn" v-if="fillType === 'preFill'">
@ -87,44 +47,22 @@
</div>
<!-- 培养液 -->
<BaseInfoFormPackage
fieldItemLabel=""
label=""
:ref="refConf.pyy"
:formConfig="pyyFormConfig"
:formData="formData"
/>
<BaseInfoFormPackage fieldItemLabel="" label="" :ref="refConf.pyy" :formConfig="pyyFormConfig"
@onRegentSubmit="(data) => onTableRegentSubmit(data)" :formData="formData" />
<!-- 剂量组列表 -->
<CustomTable
:columns="jlzTableColumns"
:ref="refConf.jlzTable"
:showOperation="false"
:showAddRow="false"
:formData="jlzTableFormData"
:prefixKey="`jlzTable`"
>
<template
slot="operation"
slot-scope="{ row, rowIndex, columns }"
>
<TableOpertaionDelete
:row="row"
:rowIndex="rowIndex"
:columns="columns"
@deleteRow="() => deleteTableRow(rowIndex, 'jlzTableRef')"
></TableOpertaionDelete>
<CustomTable :columns="jlzTableColumns" :ref="refConf.jlzTable" :showOperation="false" :showAddRow="false"
:formData="jlzTableFormData" @onRegentSubmit="(data) => onTableRegentSubmit(data)"
:prefixKey="`jlzTable`">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaionDelete :row="row" :rowIndex="rowIndex" :columns="columns"
@deleteRow="() => deleteTableRow(rowIndex, 'jlzTableRef')"></TableOpertaionDelete>
</template>
</CustomTable>
</div>
<BaseInfoFormPackage
fieldItemLabel="template.dl.dl007.bz"
label="template.dl.dl007.bz"
:ref="refConf.remark"
:formConfig="remarkConfig"
:formData="formData"
/>
<BaseInfoFormPackage fieldItemLabel="template.dl.dl007.bz" label="template.dl.dl007.bz" :ref="refConf.remark"
:formConfig="remarkConfig" :formData="formData" />
</div>
</div>
</div>
@ -139,6 +77,8 @@ import LineLabel from '@/components/Template/LineLabel'
import TableList from '@/components/Template/Table'
import Step from '@/components/Template/Step'
import templateMixin from '../../mixins/templateMixin'
import { uniqeResourceOne } from "@/utils/calUnitTools";
import { EventBus } from "@/utils/eventBus";
const refConf = {
base: 'baseInfoRef',
@ -464,7 +404,7 @@ export default {
bodyMaxlength: 10,
headerSelectKey: 'yss9hhyjrlUnit',
headerOptions: this.getDictOptions('business_tjdw'),
width: 180,
width: 220,
fillType: 'preFill'
},
{
@ -473,11 +413,11 @@ export default {
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
headerSelectKey: 'yss9hhyjrlUnit',
headerSelectKey: 'sjs9hhyjrlUnit',
headerOptions: this.getDictOptions('business_tjdw'),
copyFrom: 'yss9hhyjrl',
compareTo: 'yss9hhyjrl',
width: 180,
width: 220,
fillType: 'preFill'
}
)
@ -513,7 +453,7 @@ export default {
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
headerSelectKey: 'ysgspjrlUnit',
headerSelectKey: 'sjgspjrlUnit',
headerOptions: this.getDictOptions('business_tjdw'),
copyFrom: 'ysgspjrl',
width: 180,
@ -565,6 +505,27 @@ export default {
}
},
methods: {
onTableRegentSubmit(data) {
if (data.key === 's9hhybh') {
this.$refs.jlzInfoRef.updateFormData('s9hhybh_dw', data.selectInfo.row.kcdw)
}
if (data.key === 'pyysj') {
this.$refs.pyyRef.updateFormData('pyysj_dw', data.selectInfo.row.kcdw)
}
// if (data.key === 'gspbh') {
// this.$refs.pyyRef.updateFormData(data.rowIndex+'_gspbh_dw', data.selectInfo.row.kcdw)
// }
if (data.key === 'xybh') {
this.$refs.pyyRef.updateFormData(data.rowIndex+'_xybh_dw', data.selectInfo.row.kcdw)
}
//
const params = {
type: "fieldChanged",
newRecord: null,
resourceList: null,
}
EventBus.$emit('onModifyRecord', params);
},
//
deleteTableRow(rowIndex, refName) {
this.$refs[refName].deleteRow(rowIndex)
@ -682,104 +643,104 @@ export default {
return true
},
getResource() {
// 使
const yqsyData = this.$refs.yqsyTableRef?.getFilledFormData()
const yqsyList = yqsyData?.stepTableFormData || []
//
this.yqResourceTmp = yqsyList
.filter((item) => item.yqbh)
.map((item) => ({
type: 'yq',
bh: item.yqbh,
mc: item.yqmc,
xh: item.yqxh,
jzrq: item.jzrq
}))
// S9
const jlzInfoData = this.$refs.jlzInfoRef?.getFilledFormData()
const resourceList = []
// S9S9
if (this.isSftjs9Yes && jlzInfoData?.s9hhybh) {
resourceList.push({
mc: 'S9混合液',
bh: jlzInfoData.s9hhybh,
ph: null,
nd: null,
nddw: null,
ndz: null,
ly: null,
const content = this.getFilledFormData()
let tmpResource = []
let tmpYq = []
let sjs9hhyjrltotal=0
for (var i = 0; i < content.jlzTableData.length; i++) {
let item = content.jlzTableData[i]
sjs9hhyjrltotal=sjs9hhyjrltotal+parseFloat(item.sjs9hhyjrl)
//
tmpResource.push({
mc: null,
bh: item.xybh,
ph: '',
ndz: '',
nd: '',
nddw: '',
ly: '',
sxrq: null,
kc: null,
kcdw: null,
type: 1,
syl: null,
syldw: null,
type: 1, //null
elnType: null, // his.product
syldw: content[i+'_xybh_dw'],
yxzq: null,
yxzqdw: null
yxzqdw: null,
})
//
tmpResource.push({
mc: null,
bh: item.gyzjbh,
ph: '',
ndz: '',
nd: '',
nddw: '',
ly: '',
sxrq: null,
kc: null,
kcdw: null,
syl: item.sjgspjrl,
type: 3, //null
elnType: null, // his.product
syldw: content.jlzHeaderSelectFields.sjgspjrlUnit,
yxzq: null,
yxzqdw: null,
})
}
//
const jlzData = this.$refs.jlzTableRef?.getFilledFormData()
const jlzList = jlzData?.stepTableFormData || []
const jlzHeaderSelectFields = jlzData?.headerSelectFields || {}
// Set
const xybhSet = new Set()
const gspbhSet = new Set()
jlzList.forEach((item) => {
//
if (item.xybh && !xybhSet.has(item.xybh)) {
xybhSet.add(item.xybh)
resourceList.push({
mc: '细胞悬液',
bh: item.xybh,
ph: null,
nd: null,
nddw: null,
ndz: null,
ly: null,
sxrq: null,
kc: null,
kcdw: null,
type: 1,
syl: item.sjplyjrl || null,
syldw: jlzHeaderSelectFields.ysplyjrlUnit || null,
yxzq: null,
yxzqdw: null
})
}
//
if (item.gspbh && !gspbhSet.has(item.gspbh)) {
gspbhSet.add(item.gspbh)
resourceList.push({
mc: '供试品',
bh: item.gspbh,
ph: null,
nd: null,
nddw: null,
ndz: null,
ly: null,
sxrq: null,
kc: null,
kcdw: null,
type: 1,
syl: item.sjgspjrl || null,
syldw: jlzHeaderSelectFields.ysgspjrlUnit || null,
yxzq: null,
yxzqdw: null
})
}
//S9
tmpResource.push({
mc: null,
bh: content.s9hhybh,
ph: '',
ndz: '',
nd: '',
nddw: '',
ly: '',
sxrq: null,
kc: null,
kcdw: null,
syl: sjs9hhyjrltotal,
type: 1, //使
elnType: null, //null
syldw: content.jlzHeaderSelectFields.sjs9hhyjrlUnit,
yxzq: null,
yxzqdw: null,
})
this.resourceTmp = resourceList
return this.resourceTmp
//
tmpResource.push({
mc: null,
bh: content.pyysj,
ph: '',
ndz: '',
nd: '',
nddw: '',
ly: '',
sxrq: null,
kc: null,
kcdw: null,
syl: null,
type: 1, //使
elnType: null, //null
syldw: content.pyysj_dw,
yxzq: null,
yxzqdw: null,
})
//使
for (var i = 0; i < content.stepTableFormData.length; i++) {
let item = content.stepTableFormData[i]
tmpYq.push({
mc: item.yqmc,
xh: item.yqxh,
bh: item.yqbh,
jzrq: item.jzrq,
})
}
this.yqResourceTmp = tmpYq
this.resourceTmp = uniqeResourceOne(tmpResource)
debugger
return this.resourceTmp;
},
onRegentSubmit(e) {
const { selectInfo, key, rowIndex } = e

+ 0
- 35
src/views/business/comps/template/comps/dl/DL015.vue View File

@ -327,43 +327,8 @@ export default {
},
getResource() {
const stepResource = this.$refs.stepRef.getStepResource()
const hyqkData = this.$refs.hyqkTableRef?.getFilledFormData()
const hyqkList = hyqkData?.stepTableFormData || []
//
this.resourceTmp = stepResource.sjResource || []
this.yqResourceTmp = stepResource.yqResource || []
//
// Set
const xybhSet = new Set()
const sjResourceFromHyqk = []
hyqkList.forEach((item) => {
if (item.xybh && !xybhSet.has(item.xybh)) {
xybhSet.add(item.xybh)
sjResourceFromHyqk.push({
mc: '细胞悬液',
bh: item.xybh,
ph: null,
nd: null,
nddw: null,
ndz: null,
ly: null,
sxrq: null,
kc: null,
kcdw: null,
type: 1,
syl: item.pyybrl || null,
syldw: item.pyybrl ? 'mL' : null,
yxzq: null,
yxzqdw: null
})
}
})
this.resourceTmp = [...this.resourceTmp, ...sjResourceFromHyqk]
return this.resourceTmp
},
onRegentSubmit(e) {

+ 20
- 27
src/views/business/comps/template/comps/dl/DL016.vue View File

@ -45,13 +45,12 @@ import templateMixin from "../../mixins/templateMixin";
import CustomTable from '@/components/Template/CustomTable.vue';
import { EventBus } from "@/utils/eventBus";
import { uniqeResource } from "@/utils/calUnitTools";
import { debounce } from 'lodash-es'
import TableOpertaionDelete from "@/components/Template/operation/TableOpertaionDelete.vue"
export default {
name: "DL016",
dicts: [
'business_dl_qsxjbltj','business_tjdw'
'business_dl_qsxjbltj','business_tjdw','business_nddw'
],
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable,TableOpertaionDelete },
mixins: [templateMixin],
@ -179,13 +178,25 @@ export default {
bodyDisabled: true,
},
{
label: "template.dl.dl016.qsxjjrl",
prop: "qsxjjrl",
width: 180,
bodyType: "input",
bodyFillType: "actFill",
bodyMaxlength: 10,
// bodyDisabled: true,
// label: "template.dl.dl016.qsxjjrl",
// prop: "qsxjjrl",
// width: 180,
// bodyFillType: "actFill",
// bodyMaxlength: 10,
// headerSelectKey: 'qsxjjrldw',
// fillType: "actFill",
// headerOptions: this.getDictOptions('business_nddw'),
// bodyType: 'inputNumber',
label: "template.dl.dl016.qsxjjrl",
prop: 'qsxjjrl',
width: 280,
headerSelectKey: 'qsxjjrldw',
fillType: "preFill",
headerOptions: this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
copyFrom: 'ysqyl',
compareTo: 'ysqyl',
}
]
},
@ -195,9 +206,6 @@ export default {
formData: {},
};
},
mounted() {
console.log('mounted=============',this.formData);
},
methods: {
onRegentSubmit(e) {
const { selectInfo, key, rowIndex } = e
@ -261,33 +269,18 @@ export default {
//
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "swypyjInfoRef", "qcxjjyqkTableRef", "stepRef","remarkRef"]);
console.log('获取填写完成的表单数据==============',content);
return content;
},
getResource() {
//使
const stepResource = this.$refs.stepRef.getStepResource()
const tableList = this.$refs.qcxjjyqkTableRef?.getFilledFormData()?.stepTableFormData || []
// const tableList = hyqkData?.stepTableFormData || []
//
this.resourceTmp = stepResource.sjResource || []
this.yqResourceTmp = stepResource.yqResource || []
const tableFromHyqk = tableList
.filter(item => item.xybh)
.map(item => ({
bh: item.xybh,
type: 'cell'
}))
this.resourceTmp = [...this.resourceTmp, ...tableFromHyqk]
console.log('回显填写完成的表单数据==============',this.resourceTmp);
return this.resourceTmp;
},
//
async onSave() {
let content = await this.$refs.stepRef.getFormData();
console.log(content);
},
//
// deleteRow(rowIndex) {

+ 0
- 12
src/views/business/comps/template/comps/dl/DL017.vue View File

@ -369,20 +369,8 @@ export default {
getResource() {
//使
const stepResource = this.$refs.stepRef.getStepResource()
const hyqkData = this.$refs.stepTableRef?.getFilledFormData()
const tableList = hyqkData?.stepTableFormData || []
//
this.resourceTmp = stepResource.sjResource || []
this.yqResourceTmp = stepResource.yqResource || []
const sjResourceFromHyqk = tableList
.filter(item => item.xybh)
.map(item => ({
bh: item.xybh,
type: 'cell'
}))
this.resourceTmp = [...this.resourceTmp, ...sjResourceFromHyqk]
return this.resourceTmp;
},
//

+ 0
- 13
src/views/business/comps/template/comps/dl/DL018.vue View File

@ -331,22 +331,9 @@ export default {
return content;
},
getResource() {
//使
const stepResource = this.$refs.stepRef.getStepResource()
const tableList = this.$refs.qcxjjyqkTableRef?.getFilledFormData()?.stepTableFormData || []
//
this.resourceTmp = stepResource.sjResource || []
this.yqResourceTmp = stepResource.yqResource || []
const tableFromHyqk = tableList
.filter(item => item.xybh)
.map(item => ({
bh: item.xybh,
type: 'cell'
}))
this.resourceTmp = [...this.resourceTmp, ...tableFromHyqk]
return this.resourceTmp;
},
//

+ 0
- 13
src/views/business/comps/template/comps/dl/DL019.vue View File

@ -297,21 +297,8 @@ export default {
getResource() {
//使
const stepResource = this.$refs.stepRef.getStepResource()
const tableList = this.$refs.qcxjjyqkTableRef?.getFilledFormData()?.stepTableFormData || []
// const tableList = hyqkData?.stepTableFormData || []
//
this.resourceTmp = stepResource.sjResource || []
this.yqResourceTmp = stepResource.yqResource || []
const tableFromHyqk = tableList
.filter(item => item.xybh)
.map(item => ({
bh: item.xybh,
type: 'cell'
}))
this.resourceTmp = [...this.resourceTmp, ...tableFromHyqk]
console.log('回显填写完成的表单数据==============',this.resourceTmp);
return this.resourceTmp;
},
//

+ 29
- 3
src/views/business/comps/template/comps/dl/DL021.vue View File

@ -187,6 +187,25 @@ export default {
const { selectInfo, key, rowIndex } = e
const { row } = selectInfo
console.log('选择显微镜预留===',row)
if (key == 'xwj') {
this.$refs.swypyjInfoRef.updateFormData('wxjmc', row.mc)
this.$refs.swypyjInfoRef.updateFormData('wxjxh', row.xh)
this.$refs.swypyjInfoRef.updateFormData('wxjjzrq', row.jzrq)
}
//
const params = {
type: "fieldChanged",
newRecord: null,
resourceList: null,
}
EventBus.$emit('onModifyRecord', params);
// if (key === 'yqbh' && this.$refs.yqsyTableRef) {
// const params = {
// yqmc: row.mc,
@ -273,10 +292,17 @@ export default {
return content;
},
getResource() {
//使
// stepRef
let content = this.getFilledFormData();
let tmpYq = []
tmpYq.push({
mc: content.wxjmc,
xh: content.wxjxh,
bh: content.xwj,
jzrq: content.wxjjzrq,
})
this.resourceTmp = []
this.yqResourceTmp = []
this.yqResourceTmp = tmpYq
return this.resourceTmp;
},
//

+ 100
- 18
src/views/business/comps/template/comps/dl/DL022.vue View File

@ -1,4 +1,4 @@
<!-- 生物分析生物样品采集管制备 -->
<!-- 畸变情况 -->
<template>
<div>
<div class="detail-container">
@ -10,18 +10,18 @@
ref="baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<LineLabel label="template.dl.dl022.gcqk" />
<LineLabel label="template.dl.dl022.jbqk" />
<!-- 观察情况 -->
<div class="template-form-item">
<BaseInfoFormPackage ref="swypyjInfoRef" fieldItemLabel="template.common.operationSteps"
:formConfig="stepFormConfig" @blur="onHandleBlur"
:formData="formData" />
:formData="formData" @onRegentSubmit="onRegentSubmit" />
<div style="color:#999;font-size:14px;">
畸变类型以代号填写断片(b)裂隙(g)互换及射体(t)环状染色体(r)多倍体(p)双着丝点染色体(d)内复制(e)染色体碎化(z)缺失(l)粘着(s)微小体(m)
</div>
<CustomTable :ref="`tableRef`" :columns="tableColumns" :formData="formData"
operationWidth="120px" :prefixKey="`table`" fieldItemLabel="template.dl.dl022.gcqk"
@onAddRow = "onAddRow"
<CustomTable :ref="`tableRef`" :columns="tableColumns" :formData="tableFormData"
operationWidth="120px" :prefixKey="`table`" fieldItemLabel="template.dl.dl022.jbqk"
@onAddRow = "onAddRow" @blur="handleClickButton"
:showAddRow="fillType === 'actFill'" :showOperation="fillType === 'actFill'">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaionDelete :row="row" :rowIndex="rowIndex" :columns="columns"
@ -50,8 +50,6 @@ import Step from "@/components/Template/Step";
import templateMixin from "../../mixins/templateMixin";
import CustomTable from '@/components/Template/CustomTable.vue';
import { EventBus } from "@/utils/eventBus";
import { uniqeResource } from "@/utils/calUnitTools";
import { debounce } from 'lodash-es'
import TableOpertaionDelete from "@/components/Template/operation/TableOpertaionDelete.vue"
import { getuuid } from "@/utils/index.js";
export default {
@ -68,6 +66,13 @@ export default {
},
},
computed: {
//
tableFormData() {
return {
stepTableFormData: this.formData.stepTableFormData || [],
headerSelectFields: {}
}
},
//
remarkConig() {
return [
@ -169,28 +174,32 @@ export default {
bodyType: 'inputNumber',
bodyFillType: 'actFill',
width: 200,
disabled: true
disabled: true,
bodyDisabled: true,
}, {
label: 'template.dl.dl022.lxjbs',
prop: 'lxjbs',
bodyType: 'inputNumber',
bodyFillType: 'actFill',
width: 200,
disabled: true
disabled: true,
bodyDisabled: true,
}, {
label: 'template.dl.dl022.dbtjbs',
prop: 'dbtjbs',
bodyType: 'inputNumber',
bodyFillType: 'actFill',
width: 200,
disabled: true
disabled: true,
bodyDisabled: true,
}, {
label: 'template.dl.dl022.nfzjbs',
prop: 'nfzjbs',
bodyType: 'inputNumber',
bodyFillType: 'actFill',
width: 200,
disabled: true
disabled: true,
bodyDisabled: true,
}, {
label: 'template.dl.dl022.jblx',
prop: 'jblx',
@ -209,6 +218,14 @@ export default {
currentRowIndex: -1,
};
},
watch: {
formData: {
immediate: true,
handler(v) {
console.log('formData==============',v);
}
},
},
mounted() {
EventBus.$on('onEditSignCallback', this.handleEditSignCallback);
},
@ -216,6 +233,44 @@ export default {
EventBus.$off('onEditSignCallback', this.handleEditSignCallback);
},
methods: {
//
handleClickButton(e, rowIndex) {
console.log('formData==============',e,rowIndex,this.formData);
if(this.formData.stepTableFormData&&this.formData.stepTableFormData.length>0){
const list = this.formData.stepTableFormData;
list.map((item, index) => {
let jblxList = item.jblx;
if(jblxList&&jblxList.length>0){
item.jgjxjbs = this.calculateJgjxjbs(jblxList);
}
})
// 使 $set formData CustomTable
this.$set(this.formData, this.formData)
}
},
//
calculateJgjxjbs(jblxList,countCodes) {
if (!jblxList || jblxList.length === 0) return 0
//
// const countCodes = ['b', 't', 'r', 'd', 'z', 'l', 's', 'm']
let count = 0
for (const it of jblxList) {
if (it.value) {
const val = String(it.value).toLowerCase()
// 1
for (const code of countCodes) {
if (val.includes(code)) {
count++
}
}
}
}
return count
},
handleEditSignCallback(data){
if (data.uuid === this.uuid) {
this.handleEdit();
@ -235,10 +290,14 @@ export default {
this.$message.error('畸变类型还未填写完,请填写完成后再操作')
return
}
item.jgjxjbs = this.calculateJgjxjbs(jblx,['b', 't', 'r', 'd', 'z', 'l', 's', 'm'])
item.lxjbs = this.calculateJgjxjbs(jblx,['g'])
item.dbtjbs = this.calculateJgjxjbs(jblx,['p'])
item.nfzjbs = this.calculateJgjxjbs(jblx,['e'])
EventBus.$emit('showEditSignDialog', { uuid: this.uuid });
this.currentItem = item;
this.currentRowIndex = rowIndex;
this.$refs.tableRef.updateDataSourceByRowIndex(rowIndex, item)
},
//
onAddRow() {
@ -282,16 +341,22 @@ export default {
return content;
},
getResource() {
//使
// stepRef
let content = this.getFilledFormData();
let tmpYq = []
tmpYq.push({
mc: content.wxjmc,
xh: content.wxjxh,
bh: content.xwj,
jzrq: content.wxjjzrq,
})
this.resourceTmp = []
this.yqResourceTmp = []
this.yqResourceTmp = tmpYq
return this.resourceTmp;
},
//
async onSave() {
// stepRef
console.log({});
},
//
deleteRow(rowIndex) {
@ -300,8 +365,25 @@ export default {
tableRef.deleteRow(rowIndex);
}
},
//
onRegentSubmit(e) {
const { selectInfo, key, rowIndex } = e
const { row } = selectInfo
if (key == 'xwj') {
this.$refs.swypyjInfoRef.updateFormData('wxjmc', row.mc)
this.$refs.swypyjInfoRef.updateFormData('wxjxh', row.xh)
this.$refs.swypyjInfoRef.updateFormData('wxjjzrq', row.jzrq)
}
//
const params = {
type: "fieldChanged",
newRecord: null,
resourceList: null,
}
EventBus.$emit('onModifyRecord', params);
},
}
};
}
</script>
<style rel="stylesheet/scss" lang="scss">
.edit-button{

+ 46
- 28
src/views/business/comps/template/comps/dl/DL023.vue View File

@ -22,7 +22,8 @@
<LineLabel label="template.dl.dl023.czjl" />
<!-- 操作记录 -->
<BaseInfoFormPackage ref="swypyjInfoRef" fieldItemLabel="template.common.operationSteps"
@select="onSelect" @clickButton="handleClickButton" :formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData" />
@select="onSelect" @clickButton="handleClickButton" :formConfig="stepFormConfig"
@blur="onHandleBlur" :formData="formData" />
<BaseInfoFormPackage fieldItemLabel="template.common.remark" label="template.common.remark"
ref="remarkRef" :formConfig="remarkConig" :formData="formData" />
</div>
@ -47,9 +48,6 @@ import moment from 'moment'
export default {
name: "dl023",
dicts: [
'business_dl_xbmc',"business_sydd"
],
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaionDelete },
mixins: [templateMixin],
props: {
@ -101,11 +99,11 @@ export default {
//yqsyxxColumns使
yqsyxxColumns() {
return [{
label: 'template.dl.dl023.yqbh',
prop: 'yqbh',
bodyType: 'yq',
bodyFillType: 'actFill'
}, {
label: 'template.dl.dl023.yqbh',
prop: 'yqbh',
bodyType: 'yq',
bodyFillType: 'actFill'
}, {
label: 'template.dl.dl023.yqmc',
prop: 'yqmc',
bodyType: 'input',
@ -145,6 +143,7 @@ export default {
{ label: "细胞系", value: "细胞系" }
],
otherCode: 'dwzshxbxOther',
thirdOtherCode: 'dwzshxbxThirdOther',
showOtherLabel: false,
otherOptions: this.otherOptions
},
@ -166,9 +165,10 @@ export default {
label: "template.dl.dl023.uvazsjl",
type: "input",
fillType: "actFill",
subType: "sj",
subType: "select",
subKey: "subUvazsjl",
subFillType: "actFill",
subOptions: this.getDictOptions('business_dl_uav'),
maxlength: 20,
},
zszsj: {
@ -187,6 +187,8 @@ export default {
subType: 'button',
subKey: 'zskssj',
buttonName: 'template.dl.dl023.ksButton',
disabled: true,
subDisabled: false
},
zsjssj: {
label: 'template.dl.dl023.zsjssj',
@ -196,6 +198,8 @@ export default {
subType: 'button',
subKey: 'zsjssj',
buttonName: 'template.dl.dl023.jsButton',
disabled: true,
subDisabled: false
},
}
}
@ -209,22 +213,24 @@ export default {
};
},
mounted() {
const {dwzshxbx} = this.formData;
this.setOtherOptions(dwzshxbx);
},
methods: {
//
handleClickButton(item,signData) {
methods: {
setOtherOptions(value){
this.otherOptions = value === '动物种属' ? this.getDictOptions('business_dl_dwzs') : this.getDictOptions('business_dl_xbx')
},
//
handleClickButton(item, signData) {
const arrStr = item.subKey;
const value = moment().format('YYYY/MM/DD HH:mm');
this.$refs.swypyjInfoRef.updateFormData(arrStr, value,{isUpdateRecord:true,signData});
const value = moment().format('YYYY/MM/DD HH:mm');
this.$refs.swypyjInfoRef.updateFormData(arrStr, value, { isUpdateRecord: true, signData });
// console.log(this.getFilledFormData())
},
onSelect(e) {
const { key, value } = e
if (key === "dwzshxbx") {//
this.otherOptions = value === '动物种属' ? this.getDictOptions('business_dl_xbmc') : [
{ label: "细胞系1", value: "细胞系1" },
{ label: "细胞系2", value: "细胞系2" },
]
this.setOtherOptions(value);
}
},
@ -233,12 +239,12 @@ export default {
const { selectInfo, key, rowIndex } = e
const { row } = selectInfo
if (key === 'yqbh' && this.$refs.tableRef) {
const params = {
yqmc: row.mc,
yqxh: row.xh,
xcrq: row.jzrq,
}
this.$refs.tableRef.updateDataSourceByRowIndex(rowIndex, params)
const params = {
yqmc: row.mc,
yqxh: row.xh,
xcrq: row.jzrq,
}
this.$refs.tableRef.updateDataSourceByRowIndex(rowIndex, params)
}
},
onFormSelect(fields) {
@ -318,10 +324,22 @@ export default {
return content;
},
getResource() {
//使
// stepRef
let content = this.getFilledFormData();
let tmpYq = []
let table = content.stepTableFormData
if (table && table.length > 0) {
for (let i = 0; i < table.length; i++) {
let item = table[i]
tmpYq.push({
mc: item.yqmc,
xh: item.yqxh,
bh: item.yqbh,
jzrq: item.xcrq,
})
}
}
this.yqResourceTmp = tmpYq
this.resourceTmp = []
this.yqResourceTmp = []
return this.resourceTmp;
},
//

+ 6
- 27
src/views/business/comps/template/comps/dl/DL024.vue View File

@ -1,4 +1,4 @@
<!-- 生物分析生物样品采集管制备 -->
<!-- 细胞培养信息 -->
<template>
<div>
<div class="detail-container">
@ -9,7 +9,7 @@
<BaseInfoFormPackage 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="yqColumns" :dataSource="yqResource" />
<LineLabel label="template.dl.dl024.xbpyxx" />
<!-- 操作记录 -->
@ -51,14 +51,11 @@ 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 { EventBus } from "@/utils/eventBus";
import { uniqeResource } from "@/utils/calUnitTools";
import { debounce } from 'lodash-es'
import TableOpertaionDelete from "@/components/Template/operation/TableOpertaionDelete.vue"
import moment from 'moment'
export default {
name: "dl024",
name: "DL024",
dicts: [
'business_dl_xbmc','business_sydd'
],
@ -211,7 +208,6 @@ export default {
onRegentSubmit(e) {
const { selectInfo, key, rowIndex } = e
const { row } = selectInfo
console.log('选择仪器编号预留===',row)
try {
//
const bdnr = JSON.parse(row.bdnr)
@ -224,13 +220,11 @@ export default {
this.$message.warning('前序表单中没有细胞编号数据')
return
}
console.log('选择仪器编号预留=2==',stepTableFormData)
//
const itemData = stepTableFormData.map(item => ({
xbbh: item.jzlybh || '', //
xbbh: item.targetSolutionCode+'-'+item.subTargetSolutionCode, //
}))
// 使 $set formData CustomTable
console.log('选择仪器编号预留=3==',itemData)
this.$set(this.formData, 'stepTableFormData', itemData)
this.$message.success(`已从前序表单加载 ${itemData.length} 条细胞编号数据`)
@ -239,14 +233,6 @@ export default {
console.error('解析前序表单数据失败:', error)
this.$message.error('解析前序表单数据失败')
}
// if (key === 'qxbd' && this.$refs.tableRef) {
// const params = {
// yqmc: row.xbbh,
// yqxh: row.xh,
// xccsjzjdrq: row.jzrq
// }
// this.$refs.tableRef.updateDataSourceByRowIndex(rowIndex, params)
// }
},
onFormSelect(fields){
this.onHandleBlur(fields)
@ -261,20 +247,13 @@ export default {
return content;
},
getResource() {
const tableList = this.$refs.qcxjjyqkTableRef?.getFilledFormData()?.stepTableFormData || []
//
this.resourceTmp = tableList
.filter(item => item.xybh)
.map(item => ({
bh: item.xybh,
type: 'cell'
}))
this.resourceTmp = []
this.yqResourceTmp = []
return this.resourceTmp;
},
//
async onSave() {
// stepRef
console.log({});
},
//
deleteRow(rowIndex) {

+ 461
- 0
src/views/business/comps/template/comps/gsp/GSP015.vue View File

@ -0,0 +1,461 @@
<!-- 供试品部给药制剂取样/前处理记录表 -->
<template>
<div>
<div class="detail-container">
<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">
<BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo"
:ref="refConfig.baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.gyzjInfo" :columns="gyzjColumns" :dataSource="resourceGyzj" />
<TableList label="template.common.sjInfo" :columns="sjColumns" :dataSource="resourceSj" />
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<LineLabel label="取样进样信息" />
<el-button class="mt-20" v-if="fillType === 'preFill'" type="primary"
@click="onAdd('ybsmDataList')">新增</el-button>
<el-button class="mt-20" v-if="fillType === 'actFill'" type="primary"
@click="onExport">导出</el-button>
<div v-for="(item, index) in formData.ybsmDataList" :key="item.id" class="template-form-item">
<div class="config-header">
<div></div>
<el-popconfirm title="确认删除当前数据?" @confirm="deleteConfig(item, 'ybsmDataList')">
<el-button slot="reference" v-if="fillType === 'preFill'" type="text"
icon="el-icon-delete">{{
$t('template.common.deleteBtn')
}}</el-button>
</el-popconfirm>
</div>
<BaseInfoFormPackage fieldItemLabel="取样进样信息" :ref="`ybsmFormPackageRef${index}`"
@clickButton="(e,d,key,formFields) => handleClickButton(e,d,key,formFields,index)"
:formConfig="ybsmFormConfig" :formData="item" />
<CustomTable :ref="`ybsmTableRef${index}`" :columns="ybsmColumns" prefix="qy"
:showOperation="fillType === 'actFill' || fillType === 'preFill'"
:showAddRow="fillType === 'preFill'" @onAddRow="() => addTableRow(index)"
fieldItemLabel="取样进样信息" :formData="item">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion :row="row" :rowIndex="rowIndex" :columns="columns"
@configComplete="(e)=>onConfigComplete(e,'qy')"
@printTag="(e)=>onPrintTag(e,index)"
:fillType="fillType"
:showFz="false"
:showKspz="false"
@deleteRow="() => deleteTableRow(rowIndex, index)">
</TableOpertaion>
</template>
</CustomTable>
<CustomTable :ref="`jyTableRef${index}`" :columns="yjColumns" prefix="jy"
fieldItemLabel="取样进样信息" @blur="(e) => onHandleTableBlur(e, index, 'jyTableRef')"
:showOperation="fillType === 'actFill'" :showAddRow="false"
:formData="{ stepTableFormData: item.jyStepTableFormData || [], headerSelectFields: item.jyHeaderSelectFields || {} }">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion :row="row" :rowIndex="rowIndex" :columns="columns"
@configComplete="(e)=>onConfigComplete(e,'jy')"
@printTag="(e)=>onPrintTag(e,index)"
:fillType="fillType"
:showFz="false"
:showKspz="false"
@deleteRow="() => deleteTableRow(rowIndex, index)">
</TableOpertaion>
</template>
</CustomTable>
</div>
<LineLabel label="二次稀释信息" />
<el-button class="mt-20" v-if="fillType === 'preFill'" type="primary"
@click="onAdd('ecDataList')">新增</el-button>
<el-button class="mt-20" v-if="fillType === 'actFill'" type="primary"
@click="onExport('ec')">导出</el-button>
<div v-for="(item, index) in formData.ecDataList" :key="item.id" class="template-form-item">
<div class="config-header">
<div></div>
<el-popconfirm title="确认删除当前数据?" @confirm="deleteConfig(item, 'ecDataList')">
<el-button slot="reference" v-if="fillType === 'preFill'" type="text"
icon="el-icon-delete">{{
$t('template.common.deleteBtn')
}}</el-button>
</el-popconfirm>
</div>
<BaseInfoFormPackage fieldItemLabel="二次稀释信息" :ref="`ecFormPackageRef${index}`"
:formConfig="ecFormConfig" :formData="item" />
<CustomTable :ref="`ecTableRef${index}`" :columns="yjColumns" prefix="ec"
fieldItemLabel="二次稀释信息" @blur="(e) => onHandleTableBlur(e, index, 'ecTableRef')"
:showOperation="fillType === 'preFill' || fillType === 'actFill'"
@onAddRow="() => addEcTableRow(index, 'ecTableRef')" :formData="item">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion :row="row" :rowIndex="rowIndex" :columns="columns"
@configComplete="(e)=>onConfigComplete(e,'jy')"
@printTag="(e)=>onPrintTag(e,index)"
:fillType="fillType"
:showFz="false"
:showKspz="false"
@deleteRow="() => deleteTableRow(rowIndex, index)">
</TableOpertaion>
</template>
</CustomTable>
</div>
<Step :ref="`stepRef`" :formData="formData.stepData || []"></Step>
<BaseInfoFormPackage fieldItemLabel="template.common.remark" label="template.common.remark"
:ref="refConfig.remarkRef" :formConfig="remarkConig" :formData="formData" />
</div>
</div>
</div>
<!-- <button @click="onSave">保存</button> -->
</div>
</template>
<script>
import BaseInfoFormPackage from "@/components/Template/BaseInfoFormPackage";
import TableOpertaion from "@/components/Template/operation/TableOpertaion";
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 { uniqeResource } from "@/utils/calUnitTools";
import { getuuid, justUpdateFilledFormData } from "@/utils/index";
import { isCommonUnit } from "@/utils/conTools";
import { convertConcentration } from "@/utils/conConverter";//
import { volumeConverter } from "@/utils/volConverter";//
import moment from "moment";//
import { getBaseInfoFormConfig, getRemarkFormConfig, getYbsmFormConfig, getQyTableColumns, getJyTableColumns, getEcFormConfig } from "../../formConfig/gsp/gsp015";
const refConfig = {
baseInfoRef: "baseInfoRef",
remarkRef: "remarkRef",
stepRef: "stepRef",
}
const compRefs = Object.values(refConfig);
export default {
name: "SP0021",
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaion },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
sn: {
type: String,
default: '',
},
},
computed: {
//
remarkConig() {
return getRemarkFormConfig(this)
},
//
baseInfoFormConfig() {
return getBaseInfoFormConfig(this)
},
//
ybsmFormConfig() {
return getYbsmFormConfig(this)
},
//
ybsmColumns() {
return getQyTableColumns(this)
},
//
yjColumns() {
return getJyTableColumns(this)
},
//
ecFormConfig() {
return getEcFormConfig(this)
},
},
data() {
return {
refConfig,
currentIndex: -1,
};
},
mounted() {
},
methods: {
onConfigComplete(e,type){
const {rowData,headerSelectFields} = e;
let params = {
studySubjectId: this.formData.studySubjectId,
studyId: this.formData.studyId,
studyFormId: this.formData.id,
};
if(type === 'qy'){
params = {
...params,
bh:rowData.qybh,//
nd:rowData.sjzjnd,//
nddw:headerSelectFields.sjzjnddw,//
kc:rowData.sjqyl,//
kcdw:headerSelectFields.sjqydw,//
}
}else if(type === 'jy'){
params = {
...params,
bh:rowData.jybh,//
nd:rowData.sjjynd,//
nddw:headerSelectFields.sjjynddw,//
kc:rowData.ztj,//
kcdw:headerSelectFields.ztjdw,//
}
}
this.configCompleteRequest(params)
},
onPrintTag(e,index){
console.log(e,index,"onPrintTag")
},
handleClickButton(item,signData,key,formFields,index){
const ref = this.$refs[`ybsmFormPackageRef${index}`][0];
if(key === "startButton"){
ref.updateFormData("qysj",moment().format("YYYY/MM/DD HH:mm:ss"),{ isUpdateRecord: true, signData })
}else if(key === "endButton"){
const qysj = formFields.qysj;
if(!qysj){
this.$message.error("请先记录开始时间");
return;
}
const subQysj = qysj.substr(0,19)
const endTime = moment().format("YYYY/MM/DD HH:mm:ss");
ref.updateFormData("qysj",`${subQysj} ~ ${endTime}`,{ isUpdateRecord: true, signData })
}
},
onHandleTableBlur(e, index, refName) {
if (this.fillType === 'preFill') {
return
}
const { colKey, headerSelectFields, item } = e;
//[]
const keys = ["bdtj", "qytj", "jytj", "qynd"];
if (keys.includes(colKey)) {
const { bdtj, qytj, jytj, qynd, xsbsxsd, sjjyndsd, ztjxsd, xsbs } = item;
const { bdtjdw, qytjdw, jytjdw, qynddw, ztjdw, sjjynddw } = headerSelectFields || {};
//
if (!!bdtj && !!qytj) {
const transBdtj = volumeConverter.convert(bdtj + bdtjdw, ztjdw);//
const transQytj = volumeConverter.convert(qytj + qytjdw, ztjdw);//
//
const bs = parseFloat((transBdtj / transQytj).toFixed(xsbsxsd));
item.xsbs = bs;
}
if (!!bdtj && !!jytj) {
const transBdtj = volumeConverter.convert(bdtj + bdtjdw, ztjdw);//
const transJytj = volumeConverter.convert(jytj + jytjdw, ztjdw);//
// -
const ztj = parseFloat((transBdtj - transJytj).toFixed(ztjxsd));
item.ztj = ztj;
}
if (!!qynd && !!xsbs) {
const transQynd = convertConcentration.convert(qynd + qynddw, sjjynddw);//
//
const sjjynd = parseFloat((transQynd / xsbs).toFixed(sjjyndsd));
item.sjjynd = sjjynd;
}
}
},
addEcTableRow(index, refName = "ecTableRef") {
this.$refs[`${refName + index}`][0].addRow({
xsbsxsd: 3,
ztjxsd: 3,
sjjyndsd: 3,
id: getuuid(),
})
this.justUpdateFilledFormData();
},
//
addTableRow(index) {
this.$refs[`ybsmTableRef${index}`][0].addRow({
id: getuuid(),
})
this.addEcTableRow(index, "jyTableRef");
},
onExport() {
},
//
deleteConfig(item, type = "ybsmDataList") {
if (this.formData[type].length > 1) {
const configIndex = this.formData[type].findIndex(config => config.id === item.id);
if (configIndex > -1) {
const newList = [...this.formData[type]]
newList.splice(configIndex, 1);
this.$set(this.formData, type, newList);
this.$nextTick(() => {
//
justUpdateFilledFormData();
})
}
} else {
this.$message.warning('至少保留一条数据');
}
},
//
onAdd(type = "ybsmDataList") {
if (!this.formData[type]) {
this.$set(this.formData, type, []);
}
let defaultInfo = {
id: getuuid(),
}
this.formData = { ...this.formData, ...this.getFilledFormData() };
//
this.formData[type].push(defaultInfo);
this.justUpdateFilledFormData();
},
//
deleteTableRow(rowIndex, index) {
this.$refs[`ybsmTableRef${index}`][0].deleteRow(rowIndex)
this.$refs[`jyTableRef${index}`][0].deleteRow(rowIndex)
},
//
getFilledFormData() {
//
const baseData = this.getFilledFormDataByRefs(compRefs);
const { ybsmDataList = [], ecDataList = [] } = this.formData
const yData = ybsmDataList.map((item, index) => {
const ybsmFormData = this.$refs[`ybsmFormPackageRef${index}`][0]?.getFilledFormData() || {};
const ybsmTableData = this.$refs[`ybsmTableRef${index}`][0]?.getFilledFormData() || [];
const jyTableData = this.$refs[`jyTableRef${index}`][0]?.getFilledFormData() || [];
return {
...ybsmFormData,
...ybsmTableData,
jyStepTableFormData: jyTableData.stepTableFormData,
jyHeaderSelectFields: jyTableData.headerSelectFields,
};
});
const eData = ecDataList.map((item, index) => {
const ecFormData = this.$refs[`ecFormPackageRef${index}`][0]?.getFilledFormData() || {};
const ecTableData = this.$refs[`ecTableRef${index}`][0]?.getFilledFormData() || [];
return {
...ecFormData,
...ecTableData,
};
});
return {
...baseData,
ybsmDataList: yData,
ecDataList: eData
};
},
//
async getFormData() {
const refs = [];
const { ecDataList = [], ybsmDataList = [] } = this.getFilledFormData();
//
for (let index = 0; index < ybsmDataList.length; index++) {
//
refs.push(`ybsmFormPackageRef${index}`)
refs.push(`ybsmTableRef${index}`)
refs.push(`jyTableRef${index}`)
}
for (let index = 0; index < ecDataList.length; index++) {
//
refs.push(`ecFormPackageRef${index}`)
refs.push(`ecTableRef${index}`)
}
//
let content = await this.validFormFields([...compRefs, ...refs]);
if (!content) return false;
if (!ybsmDataList.length) {
this.$message.error('请添加取样进样信息');
return false;
} else if (!ecDataList.length) {
this.$message.error('请添加二次稀释信息');
return false;
}
const diff1 = ybsmDataList.every(item => isCommonUnit(item.jyHeaderSelectFields.qynddw, [item.jyHeaderSelectFields.sjjynddw]));
const diff2 = ecDataList.every(item => isCommonUnit(item.headerSelectFields.qynddw, [item.headerSelectFields.sjjynddw]));
console.log(diff1, diff2, "dff")
if (!diff1 || !diff2) {
this.$message.error("取样浓度单位与实际进样浓度单位不符,请重新选择!");
return false;
}
//
return this.getFilledFormData();
},
getResource() {
let content = this.getFilledFormData();
//resource
let tmpResource = []
if (this.fillType === "actFill") {
//
tmpResource.push({
mc: content.targetName,
bh: content.targetCode + content.targetCodeSn,
ph: '',
ndz: content.targetActConcentration + content.targetActConcentrationUnit,
nd: content.targetActConcentration,
nddw: content.targetActConcentrationUnit,
ly: 'ELN配制',
sxrq: content.expireDate,
kc: content.targetActVolume,
kcdw: content.targetActVolumeUnit,
syl: null,
type: null,
elnType: this.product,
syldw: content.targetActVolumeUnit,
yxzq: content.effectivePeriod,
yxzqdw: content.effectivePeriodUnit,
})
}
//使
let allSjResource = [];
let allYqResource = [];
//
const stepResource = this.$refs[`stepRef`]?.getStepResource() || { sjResource: [], yqResource: [] };
allSjResource = [...allSjResource, ...(stepResource.sjResource || [])];
allYqResource = [...allYqResource, ...(stepResource.yqResource || [])];
this.resourceTmp = uniqeResource(tmpResource, allSjResource)
this.yqResourceTmp = allYqResource
return this.resourceTmp;
},
//
async onSave() {
let content = await this.getFormData();
console.log(content);
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
.print-btn {
margin-bottom: 20px;
}
.config-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
font-weight: bold;
font-size: 16px;
color: #303133;
}
.config-header .el-button {
color: #f56c6c;
font-size: 14px;
}
.config-header .el-button:hover {
color: #f78989;
}
</style>

+ 1
- 1
src/views/business/comps/template/comps/lba/LBA003.vue View File

@ -8,7 +8,7 @@
<BaseInfoFormPackage 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.wzInfo" :columns="sywzColumns" :dataSource="resourceWz" v-if="resourceWz.length>0"/>
<!-- <TableList label="template.common.wzInfo" :columns="sywzColumns" :dataSource="resourceWz" v-if="resourceWz.length>0"/> -->
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />

+ 1
- 1
src/views/business/comps/template/comps/lba/LBA004.vue View File

@ -8,7 +8,7 @@
<BaseInfoFormPackage 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.wzInfo" :columns="sywzColumns" :dataSource="resourceWz" v-if="resourceWz.length>0"/>
<!-- <TableList label="template.common.wzInfo" :columns="sywzColumns" :dataSource="resourceWz" v-if="resourceWz.length>0"/> -->
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<LineLabel label="template.lba.lba004.xbxx" />

+ 0
- 1042
src/views/business/comps/template/comps/lba/LBA005.vue
File diff suppressed because it is too large
View File


+ 0
- 1042
src/views/business/comps/template/comps/lba/LBA007.vue
File diff suppressed because it is too large
View File


+ 1
- 1
src/views/business/comps/template/comps/lba/LBA008.vue View File

@ -9,7 +9,7 @@
<BaseInfoFormPackage 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.wzInfo" :columns="sywzColumns" :dataSource="resourceWz" />
<!-- <TableList label="template.common.wzInfo" :columns="sywzColumns" :dataSource="resourceWz" /> -->
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<LineLabel label="template.common.operationSteps" />

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

@ -154,6 +154,7 @@ export default {
const { ybsmDataList } = this.formData
defaultInfo.stepData = ybsmDataList[0]?.stepData || []
}
this.formData = { ...this.formData, ...this.getFilledFormData() };
//
this.formData.ybsmDataList.push(defaultInfo);
},

+ 28
- 10
src/views/business/comps/template/comps/sp/SP00456.vue View File

@ -8,6 +8,8 @@
<div class="content">
<BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo"
ref="baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.gspsywzInfo" :columns="gspColumns" :dataSource="resourceGsp"
v-if="isGsp" />
<TableList label="template.common.sjInfo" :columns="sjColumns" :dataSource="resourceSj" />
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<BaseInfoFormPackage v-if="isSp" fieldItemLabel="template.common.storageCondition"
@ -25,7 +27,7 @@
</CustomTable>
</div>
<LineLabel :label="getOperationStepsLabel()" />
<div v-if="fillType === 'preFill' && !isPcr234" class="mt-20">
<div v-if="fillType === 'preFill' && !isPcr234 && !isGsp" class="mt-20">
<el-button type="primary" @click="handleAddConfig('paralleConfigs')">{{
$t('template.common.xzpxpz')
}}</el-button>
@ -33,6 +35,11 @@
$t('template.common.xzjtpz')
}}</el-button>
</div>
<div v-else-if="fillType === 'preFill' && isGsp" class="mt-20">
<el-button type="primary" @click="handleAddConfig('ladderConfigs')">{{
$t('template.common.addBtn')
}}</el-button>
</div>
<!-- 阶梯配制区域 -->
<div v-for="(ladderConfig, ladderIndex) in formData.ladderConfigs"
:key="'ladder_' + ladderConfig.id">
@ -40,7 +47,9 @@
:showOperation="fillType === 'actFill' || fillType === 'preFill'"
:tableColumns="ladderStepColumns" :prefixKey="'ladder_' + ladderIndex"
:configType="'ladder'" :ref="`ladderRef_${ladderIndex}`"
:fieldItemLabel="'template.common.jtpz'"
:sn = "sn"
ladderType = "bq"
:fieldItemLabel="getOperationStepsLabel()"
:showHeader="!isPcr234"
@deleteConfig="deleteConfig('ladderConfigs', ladderConfig)" :fillType="fillType" />
</div>
@ -52,11 +61,12 @@
:showOperation="fillType === 'actFill' || fillType === 'preFill'"
:tableColumns="paralleStepColumns" :prefixKey="'paralle_' + paralleIndex"
:configType="'paralle'" :ref="`paralleRef_${paralleIndex}`"
:fieldItemLabel="'template.common.pxpz'"
:fieldItemLabel="getOperationStepsLabel()"
:showHeader="!isPcr234"
:showHeaderLabel="!isGsp"
@deleteConfig="deleteConfig('paralleConfigs', paralleConfig)" :fillType="fillType" />
</div>
<template v-if="sn === 'LBA005' || sn === 'ADA005'">
<template v-if="sn === 'LBA005'">
<LineLabel :label="$t('template.lba.lba005.zkpz')" />
<div v-if="fillType === 'preFill'" class="mt-20">
<el-button type="primary" @click="handleAddConfig('paralleConfigs_1')">{{
@ -73,7 +83,7 @@
:showOperation="fillType === 'actFill' || fillType === 'preFill'"
:tableColumns="ladderStepColumns" :prefixKey="'ladder_1_' + ladderIndex"
:configType="'ladder'" :ref="`ladderRef_1_${ladderIndex}`"
:fieldItemLabel="'template.common.jtpz'"
:fieldItemLabel="'template.lba.lba005.zkpz'"
@deleteConfig="deleteConfig('ladderConfigs_1', ladderConfig)" :fillType="fillType" />
</div>
@ -82,9 +92,9 @@
:key="'paralle_1_' + paralleConfig.id">
<LadderConfig :currentFormConfig="paralleStepFormConfig" :currentFormData="paralleConfig"
:showOperation="fillType === 'actFill' || fillType === 'preFill'"
:tableColumns="paralleStepColumns" :prefixKey="'paralle_1_' + paralleIndex"
:tableColumns="paralleStepColumns1" :prefixKey="'paralle_1_' + paralleIndex"
:configType="'paralle'" :ref="`paralleRef_1_${paralleIndex}`"
:fieldItemLabel="'template.common.pxpz'"
:fieldItemLabel="'template.lba.lba005.zkpz'"
@deleteConfig="deleteConfig('paralleConfigs_1', paralleConfig)" :fillType="fillType" />
</div>
</template>
@ -181,11 +191,17 @@ export default {
paralleStepFormConfig() {
return getParalleStepFormConfig(this);
},
paralleStepFormConfig1() {
return getParalleStepFormConfig(this);
},
//
ladderStepFormConfig() {
return getLadderFormConfig(this);
},
paralleStepColumns() {
return getParallelColumnsConfig(this,this.sn);
},
paralleStepColumns1() {
return getParallelColumnsConfig(this);
},
//
@ -208,7 +224,8 @@ export default {
targetAcSolutionFromTable: true,//
currentRowData: {},//
isLba: labArr.includes(this.sn),
isSp: sn.includes('SP'),//
isSp: sn.startsWith('SP'),//
isGsp: sn.startsWith('GSP'),//
isPcr234: pcr234Arr.includes(this.sn),//PCR234
};
},
@ -229,7 +246,8 @@ export default {
getOperationStepsLabel() {
const obj = {
"LBA005": "template.lba.lba005.bzqxpz",//线
"ADA005": "template.lba.lba005.bzqxpz",//线
"ADA005": "template.lba.lba005.zkpz",//
"GSP007": "template.gsp.gsp007.bzqx",//线
// "LBA007": "template.lba.lba005.bzqxpz",//
}
return obj[this.sn] || 'template.common.operationSteps';//
@ -300,10 +318,10 @@ export default {
//
if (!this.formData[configType]) {
// formdatabug
this.formData = { ...this.formData, ...this.getFilledFormData() };
this.$set(this.formData, configType, []);
// this.formData[configType] = [];
}
this.formData = { ...this.formData, ...this.getFilledFormData() };
//
this.formData[configType].push({
id: getuuid(),

+ 45
- 13
src/views/business/comps/template/comps/sp/comps/LadderConfig.vue View File

@ -1,7 +1,9 @@
<template>
<div class="template-form-item">
<div class="config-header" v-if="showHeader">
<div>{{ $t(fieldItemLabel) }}</div>
<div>
<span v-if = "showHeaderLabel">{{ $t(fieldItemLabel) }}</span>
</div>
<el-popconfirm title="确认删除当前配置?" @confirm="deleteConfig">
<el-button slot="reference" v-if="fillType === 'preFill'" type="text" icon="el-icon-delete" >{{
$t('template.common.deleteBtn')
@ -17,6 +19,7 @@
:columns="tableColumns" :formData="currentFormData" @bodySelectChange="bodySelectChange"
@beforeSaveRecord="(data) => onBeforeSaveRecord(data)"
@headerSelectChange="(data) => onHeaderSelectChange(data)"
@onAddRow="(e) => onAddRow(e)"
@beforeReagentSubmit="(data) => onTableBeforeReagentSubmit(data)"
@onRegentSubmit="(data) => onTableRegentSubmit(data)" :prefixKey="prefixKey"
:fieldItemLabel="fieldItemLabel">
@ -42,6 +45,7 @@ import BaseInfoFormPackage from '@/components/Template/BaseInfoFormPackage.vue';
import templateMixin from "../../../mixins/templateMixin.js";
import { addTj } from "@/utils/calUnitTools";
import { isCommonUnit } from "@/utils/conTools";
import {getuuid,justUpdateFilledFormData} from "@/utils/index.js"
export default {
components: {
@ -57,6 +61,10 @@ export default {
type: Boolean,
default: true,
},
showHeaderLabel: {//
type: Boolean,
default: true,
},
fillType: {
type: String,
default: '',
@ -88,9 +96,33 @@ export default {
configType: {
type: String,
default: 'ladder',
}
},
sn: {
type: String,
default: '',
},
ladderType: {
type: String,
default: '',
},
},
methods: {
//
onAddRow(e) {
const {dataSource} = e;
const rowInfo = {
actSolutionVolumePrecision: 3,//3
actSolutionConcentrationPrecision: 3,//3
targetDiluentVolumePrecision: 3,//3
targetStartSolutionVolumePrecision: 3,//3
id:getuuid(),
};
if(this.ladderType === 'bq' && this.sn =="LBA005"){
rowInfo.targetSolutionCode = `LBA-STD${dataSource.length + 1}`;
}
this.$refs.tableRef?.addRow(rowInfo);
justUpdateFilledFormData()
},
deleteConfig() {
this.$emit('deleteConfig', this.configType);
},
@ -305,9 +337,9 @@ export default {
const { rowData } = val;
let postData = {
bh: rowData.targetSolutionCode + rowData.subTargetSolutionCode,
studySubjectId: this.formData.studySubjectId,
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.currentFormData.studySubjectId,
studyId: this.currentFormData.studyId,
studyFormId: this.currentFormData.id,
}
this.startConfigRequest(postData);
},
@ -321,9 +353,9 @@ export default {
bh: rowData.targetSolutionCode + rowData.subTargetSolutionCode,
nd: rowData.actSolutionConcentration,//
nddw: headerSelectFields.actSolutionConcentrationUnit,
studySubjectId: this.formData.studySubjectId,
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.currentFormData.studySubjectId,
studyId: this.currentFormData.studyId,
studyFormId: this.currentFormData.id,
kc: total,
kcdw: unit,
}
@ -342,14 +374,14 @@ export default {
}
})
let postData = {
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studyId: this.currentFormData.studyId,
studyFormId: this.currentFormData.id,
bh: mybh,
nd: rowData.actSolutionConcentration || 0,
nddw: headerSelectFields.actSolutionConcentrationUnit,
studySubjectId: this.formData.studySubjectId,
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.currentFormData.studySubjectId,
studyId: this.currentFormData.studyId,
studyFormId: this.currentFormData.id,
list: list
}
this.subPackageRequest(postData);

+ 3
- 1
src/views/business/comps/template/comps/yp/YP002.vue View File

@ -141,7 +141,9 @@ export default {
maxlength: 200,
subType:"button",
subKey:"jssjButton",
buttonName:"template.yp.yp002.hqsj"
buttonName:"template.yp.yp002.hqsj",
disabled:true,
subDisabled:false
},
}
},

+ 1
- 1
src/views/business/comps/template/comps/yp/YP003.vue View File

@ -8,7 +8,7 @@
<div class="content">
<BaseInfoFormPackage 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.reagentInfo" :columns="sysjColumns" :dataSource="resource" /> -->
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<LineLabel label="template.yp.yp003.ybxx" />

+ 2
- 0
src/views/business/comps/template/comps/yp/YP005.vue View File

@ -173,6 +173,8 @@ export default {
bodySubKey:"startBtn",
showBodySub:this.fillType === "actFill",
width: 280,
bodyDisabled:true,
bodySubDisabled:false,
}]
},
},

+ 327
- 0
src/views/business/comps/template/formConfig/gsp/gsp015.js View File

@ -0,0 +1,327 @@
export const getBaseInfoFormConfig = ($this) => {
return [
{
type: 'cardItem',
config: {
studyMc: {
label: 'template.common.testName',
type: 'input',
disabled: true
},
studySn: {
label: 'template.common.testNumber',
type: 'input',
disabled: true
}
}
},
{
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,
compareTo: 'pre',
options: $this.getDictOptions('business_pztj')
}
}
},
{
type: 'cellItem',
label: 'template.common.configurationTime',
config: {
startDate: {
label: 'template.common.startTime',
type: 'input'
},
endDate: {
label: 'template.common.endTime',
type: 'input'
}
}
}
]
}
//备注
export const getRemarkFormConfig = ($this) => {
return [
{
type: 'cellItem',
config: {
remark: {
label: '',
type: 'textarea',
fillType: 'actFill',
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
}
export const getYbsmFormConfig = ($this) => {
return [
{
type: 'step',
config: {
qysj: {
label: '取样时间',
type: 'input',
fillType: 'actFill',
maxlength: 50,
disabled: true,
subType:"button",
subKey: "startButton",
buttonName:"开始",
thirdType: 'button',
showSub:$this.fillType === 'actFill',
showThird:$this.fillType === 'actFill',
thirdKey: 'endButton',
thirdButtonName:"结束",
},
xsy: {
label: "template.sp.sp003.xsy",
type: "input",
fillType: "preFill",
subType: "sj",
subKey: "subSolution",
subFillType: "actFill",
maxlength: 20,
}
}
}
]
}
//取样table
export const getQyTableColumns = ($this) => {
return [
{
label: '取样编号',
prop: 'qybh',
width: 280,
bodyType: 'input',
bodyFillType: 'preFill',
},
{
label: '制剂编号',
prop: 'zjbh',
width: 280,
bodyType: 'gsp',
bodyFillType: 'actFill',
},
{
label: '预设制剂浓度',
prop: 'yszjnd',
width: 280,
headerSelectKey: 'yszjnddw',
fillType: "preFill",
headerOptions: $this.getDictOptions('business_nddw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
headerSelectTo: 'sjzjnddw',
},
{
label: '实际制剂浓度',
prop: 'sjzjnd',
width: 280,
headerSelectKey: 'sjzjnddw',
fillType: "preFill",
headerOptions: $this.getDictOptions('business_nddw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
copyFrom: 'yszjnd',
compareTo: 'yszjnd',
},
{
label: '制剂状态',
prop: 'zjzt',
width: 180,
bodyType: 'input',
bodyFillType: 'actFill',
},
{
label: '预设取样位置',
prop: 'ysqywz',
width: 180,
bodyType: 'select',
bodyOptions: $this.getDictOptions('business_qywz'),
bodyFillType: 'actFill',
},
{
label: '预设取样位置',
prop: 'sjqywz',
width: 180,
bodyType: 'select',
bodyOptions: $this.getDictOptions('business_qywz'),
bodyFillType: 'actFill',
compareTo: 'ysqywz',
},
{
label: '预设取样量',
prop: 'ysqyl',
width: 280,
headerSelectKey: 'ysqyldw',
fillType: "preFill",
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyMaxlength:10,
bodyFillType: 'preFill',
headerSelectTo: 'sjqydw',
},
{
label: '实际取样量',
prop: 'sjqyl',
width: 280,
headerSelectKey: 'sjqydw',
fillType: "preFill",
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
copyFrom: 'ysqyl',
compareTo: 'ysqyl',
},
]
}
//进样table
export const getJyTableColumns = ($this) => {
return [
{
label: '进样编号',
prop: 'jybh',
width: 280,
bodyType: 'input',
bodyFillType: 'preFill',
},
{
label: '取样编号',
prop: 'qybh',
width: 280,
bodyType: 'gsp',
bodyFillType: 'actFill',
},
{
label: '取样浓度',
prop: 'qynd',
width: 280,
headerSelectKey: 'qynddw',
fillType: "preFill",
headerOptions: $this.getDictOptions('business_nddw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
},
{
label: '取样体积',
prop: 'qytj',
width: 280,
headerSelectKey: 'qytjdw',
fillType: "preFill",
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
},
{
label: '标定体积',
prop: 'bdtj',
width: 280,
headerSelectKey: 'bdtjdw',
fillType: "preFill",
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
},
{
label: '进样体积',
prop: 'jytj',
width: 280,
headerSelectKey: 'jytjdw',
fillType: "preFill",
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
},
{
label: '稀释倍数',
prop: 'xsbs',
width: 280,
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodySubType: "inputNumber",
bodySubKey: "xsbsxsd",
bodySubFillType: "preFill",
showBodySub: $this.fillType === "preFill",
bodyDisabled: true,
bodyPrecisionKey: "xsbsxsd",
},
{
label: '终体积',
prop: 'ztj',
width: 280,
headerSelectKey: 'ztjdw',
fillType: "preFill",
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodySubType: "inputNumber",
bodySubKey: "ztjxsd",
bodySubFillType: "preFill",
showBodySub: $this.fillType === "preFill",
bodyDisabled: true,
bodyPrecisionKey: "ztjxsd",
},
{
label: '实际进样浓度',
prop: 'sjjynd',
width: 280,
headerSelectKey: 'sjjynddw',
fillType: "preFill",
headerOptions: $this.getDictOptions('business_nddw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodySubType: "inputNumber",
bodySubKey: "sjjyndsd",
bodySubFillType: "preFill",
showBodySub: $this.fillType === "preFill",
bodyDisabled: true,
bodyPrecisionKey: "sjjyndsd",
},
]
}
export const getEcFormConfig = ($this) => {
return [
{
type: "step",
config: {
xsy: {
label: 'template.sp.sp00456.xsy',
labelWidth: 80,
type: 'input',
fillType: 'preFill',
subType: 'sj',
subKey: 'subXsy',
subFillType: 'actFill',
maxlength: 20
},
}
}
]
}

+ 30
- 12
src/views/business/comps/template/formConfig/paralleAndLadderConfig.js View File

@ -43,22 +43,23 @@ const optionsCode = {
PCR002: 'business_pcr_gzy',
PCR003: 'business_pcr_fxbzqxzbb',
PCR004: 'business_pcr_fxzkypzbb',
GSP007:"",
PCR013:"",
LBA005:"",
LBA007:"",
ADA005:"",
ADA007:"",
GSP007:"",//GSP007是输入框
PCR013:"business_pcr_fxffypzbb",
LBA005:"business_lba_ptjhbzqx_zkpx",
LBA007:"business_lba_ptjhfxyp",
ADA005:"business_ada_kyktzkyp",
ADA007:"business_ada_kyktffxyp",
}
// 阶梯配置表格列配置
export const getLadderColumnsConfig = ($this) => {
const dic = optionsCode[$this.sn] || 'business_sp_nbgzy'
const dic = optionsCode[$this.sn] || 'business_sp_nbgzy';
const mbryType = $this.sn === "GSP007"?"input":"select"
return [
{
label: 'template.sp.sp00456.mbrybh',
prop: 'targetSolutionCode',
bodyType: 'select',
bodyType: mbryType,
bodyOptions: $this.getDictOptions(dic),
bodySubType: 'span',
bodySubKey: 'subTargetSolutionCode',
@ -223,8 +224,11 @@ export const getLadderColumnsConfig = ($this) => {
]
}
// 平行配置表格列配置
export const getParallelColumnsConfig = ($this) => {
const dic = optionsCode[$this.sn] || 'business_sp_nbgzy'
export const getParallelColumnsConfig = ($this,sn) => {
let dic = optionsCode[$this.sn] || 'business_sp_nbgzy';
if(sn === "LBA005"){
dic = "business_lba_bqpx";
}
return [
{
label: 'template.sp.sp00456.mbrybh',
@ -534,11 +538,12 @@ export const getBaseInfoFormConfig = ($this) => {
const sn = $this.sn
const labArr = ['LBA005', 'LBA007','ADA005','ADA007']
const isLba = labArr.includes(sn)
const isSp = sn.includes('SP')//是否是色谱
const isSp = sn.startsWith('SP')//是否是色谱
return [
{
type: 'cardItem',
config: {
config: isSp?
{
studyMc: {
label: 'template.common.testName',
type: 'input',
@ -563,6 +568,19 @@ export const getBaseInfoFormConfig = ($this) => {
maxlength: 50
}
}
:
{
studyMc: {
label: 'template.common.testName',
type: 'input',
disabled: true
},
studySn: {
label: 'template.common.testNumber',
type: 'input',
disabled: true
},
}
},
{
type: 'conditionItem',

+ 27
- 7
src/views/business/comps/template/mixins/templateMixin.js View File

@ -59,6 +59,17 @@ export default {
'business_cjdd', // 采集地点
'business_zpdd', // 制片地点
'business_cjbw', // 制片部位
'business_qywz', // 取样位置
'business_lba_ptjhbzqx_zkpx', // LBA-编号-配体结合分析标准曲线LBA005-质控平行
'business_lba_bqpx', //LBA-编号-配体结合分析标准曲线LBA005-标曲平行
'business_lba_ptjhfxyp', // LBA-编号-配体结合分析方法学样品制备表LBA007
'business_ada_kyktzkyp', // ADA-编号-抗药抗体质控样品配制记录表ADA005
'business_ada_kyktffxyp', // ADA-编号-抗药抗体方法学样品制备表ADA007
'business_dl_uav', // 毒理-紫外照射操作记录表-UVA-DL023
'business_pcr_fxffypzbb', //PCR-编号-分析方法学样品制备表
'business_dl_xbx', //毒理-紫外照射操作记录表-细胞系
'business_dl_dwzs', //毒理-紫外照射操作记录表-动物种属
],
props: {
templateData: {
@ -82,12 +93,13 @@ export default {
templateId,
templateSn,
startDate,
submittedCodes,
bdmc,
endDate,
id
} = v
if (v.resource) {
//type 类型:1:试剂;3:给药制剂;5:麻精药;7:供试品
//type 类型:1:试剂;3:给药制剂;5:麻精药;7:供试品 9:细胞;11:细菌
//试验试剂信息 试剂
// this.resource = _.filter(JSON.parse(v.resource), function (o) {
// return o.type == 1 || o.elnType == 1
@ -130,6 +142,7 @@ export default {
templateId,
templateSn,
startDate,
submittedCodes,
bdmc,
endDate,
id
@ -144,6 +157,7 @@ export default {
templateMcEn,
templateId,
templateSn,
submittedCodes,
startDate,
bdmc,
endDate,
@ -160,11 +174,17 @@ export default {
effectivePeriodUnit &&
!expireDate
) {
const start = moment(startDate)
const unit = effectivePeriodUnit === '天' ? 'days' : 'hours'
const end = start
.add(Number(effectivePeriod), unit)
.format('YYYY-MM-DD HH:mm:ss')
let end;
if (startDate === "NA") {
end = "NA";
} else {
const start = moment(startDate)
const unit = effectivePeriodUnit === '天' ? 'days' : 'hours'
end = start
.add(Number(effectivePeriod), unit)
.format('YYYY-MM-DD HH:mm:ss')
}
this.formData = { ...this.formData, expireDate: end }
}
console.log(this.formData, 'formData from templateData')
@ -478,7 +498,7 @@ export default {
actSolutionConcentrationPrecision: 3, //小数点精度默认为3
targetDiluentVolumePrecision: 3, //小数点精度默认为3
targetStartSolutionVolumePrecision: 3, //小数点精度默认为3
targetSolutionCode: `STD${Number(codeSTD) - index}`
targetSolutionCode: `CA-WS-STD${Number(codeSTD) - index}`
}))
this.$refs.stepTableRef.updateDataSource(arr)
} else if (key === 'targetStartSolution' || key === 'subTargetStartSolution') {

+ 97
- 31
src/views/business/form/drug/comp/sqbdList.vue View File

@ -11,8 +11,8 @@
</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
<el-form-item :label="$t('page.business.study.studyFormApply.sywzmc')" prop="sn">
<el-input v-model="searchForm.sywzmc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" />
</el-form-item>
</el-col>
@ -23,41 +23,55 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item>
<div style="margin-left: 100px;">
<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>
</div>
<el-form-item :label="$t('page.business.study.studyFormApply.xysj')">
<el-date-picker v-model="daterange" clearable type="daterange" @change="search" range-separator="-"
:start-placeholder="$t('page.business.form.startDate')"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd" style="width: 200px" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<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
<el-form-item :label="$t('page.business.study.studyFormApply.xynd')" prop="templateName">
<el-input v-model="searchForm.xynd" :placeholder="$t('form.placeholderInput')" clearable
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" style="width: 200px" />
<el-form-item :label="$t('page.business.study.studyFormApply.sybhbm')" prop="templateName">
<el-input v-model="searchForm.sybhbm" :placeholder="$t('form.placeholderInput')" clearable
style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.study.studyFormApply.sfbl')">
<el-select v-model="searchForm.sfbl" :placeholder="$t('form.placeholderSelect')" clearable
@change="search">
<el-option :label="$t('page.business.study.studyFormApply.yes')" value="是" />
<el-option :label="$t('page.business.study.studyFormApply.no')" value="否" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.tjsj')">
<el-date-picker v-model="daterangetj" clearable type="daterange" range-separator="-"
<el-date-picker v-model="daterangetj" clearable type="daterange" @change="search" range-separator="-"
:start-placeholder="$t('page.business.form.startDate')"
:end-placeholder="$t('page.business.form.endDate')" value-format="yyyy-MM-dd" style="width: 200px" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item :label="$t('page.business.study.studyFormApply.sfbl')">
<el-select v-model="searchForm.sfbl" :placeholder="$t('form.placeholderSelect')" clearable
<el-form-item :label="$t('page.business.form.status')">
<el-select v-model="searchForm.bdzt" :placeholder="$t('form.placeholderSelect')" clearable
@change="search">
<el-option :label="$t('page.business.study.studyFormApply.yes')" value="是" />
<el-option :label="$t('page.business.study.studyFormApply.no')" value="否" />
<el-option :label="$t('page.business.study.studyFormApply.tbz')" :value="1" />
<el-option :label="$t('page.business.study.studyFormApply.ytj')" :value="3" />
<el-option :label="$t('page.business.study.studyFormApply.yfh')" :value="5" />
<el-option :label="$t('page.business.study.studyFormApply.wtg')" :value="6" />
<el-option :label="$t('page.business.study.studyFormApply.ywc')" :value="7" />
<el-option :label="$t('page.business.study.studyFormApply.dfz')" :value="9" />
<el-option :label="$t('page.business.study.studyFormApply.yfz')" :value="11" />
</el-select>
</el-form-item>
</el-col>
@ -66,18 +80,35 @@
</div>
<div class="sqbd-content">
<el-row class="add-box">
<el-col>
<el-col :span="12">
<el-button type="primary" icon="el-icon-plus" @click="add()" v-if="searchForm.studyStatus < 5"
v-hasPermi="['business:drugFormApply:xz']">{{
$t('page.business.study.studyFormApply.xzbd') }}</el-button>
</el-col>
<el-col :span="12" style="text-align: right;">
<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-col>
</el-row>
<el-table v-loading="loading" :data="list">
<el-table v-loading="loading" :data="list" :default-sort="{ prop: 'tjsj', order: 'descending' }"
@sort-change="sortChange">
<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.study.studyFormApply.sybhbm')" align="center" width="140">
<template slot-scope="scope">
{{ scope.row.sySn || '' }}
{{ scope.row.bmName || '' }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.study.studyFormApply.sywzmc')" prop="sywzmc"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.study.studyFormApply.xynd')" prop="xynd"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.study.studyFormApply.xysj')" prop="xysj"
:show-overflow-tooltip="true" sortable />
<!-- <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">
@ -106,7 +137,7 @@
$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" />
<el-table-column :label="$t('page.business.form.tjsj')" align="center" prop="tjsj" width="140" sortable />
<el-table-column :label="$t('form.operate')" align="left" fixed="right" width="200">
<template slot-scope="scope">
<!-- 表单状态1填报中3已提交5已复核6未通过7已完成9待废止11已废止 -->
@ -246,16 +277,22 @@ export default {
studyStatus: 5,
studySn: '',
studyMc: '',
sywzmc: '',
bdbh: '',
bdmc: '',
xyssort: null,
tjsjsort: 10,
userId: '',
userMc: '',
templateMc: '',
cjsjjs: '',
cjsjks: '',
xysjks: '',
xysjjs: '',
sfbl: null,
tjsjjs: '',
tjsjks: '',
xynd: '',
sybhbm: '',
bdzt: '',
},
loading: false,
total: 0,
@ -265,6 +302,31 @@ export default {
},
created() { this.getIsQa() },
methods: {
sortChange(e, event) {
// column: {}
// order: "ascending"
// prop: "tjsj"
if (e.prop == 'tjsj') {
if (e.order == 'ascending') {
this.searchForm.tjsjsort = 1
} else {
this.searchForm.tjsjsort = 10
}
this.searchForm.xyssort = null
}
if (e.prop == 'xysj') {
if (e.order == 'ascending') {
this.searchForm.xyssort = 1
} else {
this.searchForm.xyssort = 10
}
this.searchForm.tjsjsort = null
}
this.search()
event.preventDefault()
event.stopPropagation()
return
},
checkPermi,
checkRole,
getIsQa() {
@ -302,10 +364,14 @@ export default {
this.searchForm.userId = ''
this.searchForm.userMc = ' '
this.searchForm.templateMc = ''
this.searchForm.cjsjks = ''
this.searchForm.cjsjjs = ''
this.searchForm.sywzmc = ''
this.searchForm.xysjks = ''
this.searchForm.xysjjs = ''
this.searchForm.tjsjks = ''
this.searchForm.tjsjjs = ''
this.searchForm.xynd = ''
this.searchForm.sybhbm = ''
this.searchForm.bdzt = null
this.searchForm.sfbl = null
this.daterange = []
this.daterangetj = []
@ -313,15 +379,15 @@ export default {
},
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.searchForm.cjsjks = this.daterange[0]
this.searchForm.cjsjjs = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
this.searchForm.xysjks = this.daterange[0]
this.searchForm.xysjjs = moment(this.daterange[1]).add(1, 'days').format('YYYY-MM-DD');
} else {
this.searchForm.cjsjks = ''
this.searchForm.cjsjjs = ''
this.searchForm.xysjks = ''
this.searchForm.xysjjs = ''
}
if (this.daterangetj != null && this.daterangetj.length > 0) {
this.searchForm.tjsjks = this.daterangetj[0]
this.searchForm.tjsjjs = moment().add(this.daterangetj[1], 'days').format('YYYY-MM-DD');
this.searchForm.tjsjjs = moment(this.daterangetj[1]).add(1, 'days').format('YYYY-MM-DD');
} else {
this.searchForm.tjsjks = ''
this.searchForm.tjsjjs = ''

+ 54
- 61
src/views/business/form/drug/comp/tbbdList.vue View File

@ -3,65 +3,44 @@
<div class="tbbd-list" v-show="!showDetail && !showEdit && !showAudit && !showFh">
<div class="tbbd-search">
<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" />
</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" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.gsr')" prop="userId">
<SelectDeptUser v-model="searchForm.userId" style="width: 200px" :name="searchForm.userMc" key="userId"
@change="userChange" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item>
<div style="margin-left: 100px;">
<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>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<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" />
</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" style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<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" 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>
</el-form-item>
</el-col>
</el-row>
<el-form-item :label="$t('page.business.form.bdmc')" prop="name">
<el-input v-model="searchForm.bdmc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 150px" />
</el-form-item>
<el-form-item :label="$t('page.business.form.bdbh')" prop="sn">
<el-input v-model="searchForm.bdbh" :placeholder="$t('form.placeholderInput')" clearable
style="width: 150px" />
</el-form-item>
<el-form-item :label="$t('page.business.form.gsr')" prop="userId">
<SelectDeptUser v-model="searchForm.userId" style="width: 150px" :name="searchForm.userMc" key="userId"
@change="userChange" />
</el-form-item>
<el-form-item :label="$t('page.business.form.xtmbmc')" prop="templateName">
<el-input v-model="searchForm.templateMc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 150px" />
</el-form-item>
<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" style="width: 200px" />
</el-form-item>
<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" style="width: 200px" />
</el-form-item>
<el-form-item :label="$t('page.business.study.studyFormFill.sfbl')">
<el-select v-model="searchForm.sfbl" :placeholder="$t('form.placeholderSelect')" style="width: 150px"
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>
</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-form>
</div>
<div class="tbbd-content">
@ -165,6 +144,8 @@
<Sy v-show="showAudit" key="Sy" ref="Sy" @close="syClose" />
<!-- 复核 -->
<Fh v-show="showFh" key="Fh" ref="Fh" @close="fhClose" />
<!-- 病理学家审核 -->
<Blxjsh v-show="showBlxjsh" key="Blxjsh" ref="Blxjsh" @close="blxjshClose" />
<!-- 废止 -->
<Fz key="Fz" ref="Fz" @callback="search" />
<!-- 确认废止 -->
@ -189,6 +170,7 @@ import Xq from "@/views/business/study/comp/tbbd/Xq";
import Sy from "@/views/business/study/comp/tbbd/Sy";
import Fz from "@/views/business/study/comp/tbbd/Fz";
import Fh from "@/views/business/study/comp/tbbd/Fh";
import Blxjsh from "@/views/business/study/comp/tbbd/Blxjsh";
import Qrfz from "@/views/business/study/comp/tbbd/Qrfz";
import Jq from "@/views/business/study/comp/tbbd/Jq";
import Ghgsr from "@/views/business/study/comp/tbbd/Ghgsr";
@ -228,13 +210,14 @@ export default {
deep: true
}
},
components: { Ghgsr, Fh, Fz, Bj, Xq, Qrfz, Sy, Jq, Gc, SelectDeptUser, SelectDeptUserDialog },
components: { Ghgsr, Fh, Fz, Bj, Blxjsh, Xq, Qrfz, Sy, Jq, Gc, SelectDeptUser, SelectDeptUserDialog },
data() {
return {
isQa: false,
leader: null,
showFh: false,
showAudit: false,
showBlxjsh: false,
showEdit: false,
showDetail: false,
daterangetj: [],
@ -326,7 +309,7 @@ export default {
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.searchForm.cjsjks = this.daterange[0]
this.searchForm.cjsjjs = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
this.searchForm.cjsjjs = moment(this.daterange[1]).add(1, 'days').format('YYYY-MM-DD');
} else {
this.searchForm.cjsjks = ''
this.searchForm.cjsjjs = ''
@ -391,6 +374,11 @@ export default {
this.$emit('showDetail', this.showFh)
this.search()
},
blxjshClose() {
this.showBlxjsh = false
this.$emit('showDetail', this.showBlxjsh)
this.search()
},
detail(row) {
this.showDetail = true
this.$emit('showDetail', this.showDetail)
@ -406,6 +394,11 @@ export default {
this.$emit('showDetail', this.showFh)
this.$refs.Fh.show(row)
},
blxjsh(row) {
this.showBlxjsh = true
this.$emit('showDetail', this.showBlxjsh)
this.$refs.Blxjsh.show(row)
},
}
}
</script>

+ 29
- 46
src/views/business/form/drug/comp/ytbdList.vue View File

@ -2,48 +2,31 @@
<div>
<div class="ytbd-list" v-show="!showDetail && !showEdit && !showAudit">
<div class="ytbd-search">
<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" />
</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" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.gsr')" prop="userId">
<SelectDeptUser v-model="searchForm.userId" :name="searchForm.userMc" key="userId"
@change="userChange" />
</el-form-item>
</el-col>
<el-col :span="6">
<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-row>
<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" />
</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" style="width: 200px" />
</el-form-item>
</el-col>
</el-row>
<el-form :model="searchForm" ref="searchForm" :inline="true">
<el-form-item :label="$t('page.business.form.bdmc')" prop="name">
<el-input v-model="searchForm.bdmc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 150px" />
</el-form-item>
<el-form-item :label="$t('page.business.form.bdbh')" prop="sn">
<el-input v-model="searchForm.bdbh" :placeholder="$t('form.placeholderInput')" clearable
style="width: 150px" />
</el-form-item>
<el-form-item :label="$t('page.business.form.gsr')" prop="userId">
<SelectDeptUser v-model="searchForm.userId" :name="searchForm.userMc" key="userId" @change="userChange" />
</el-form-item>
<el-form-item :label="$t('page.business.form.xtmbmc')" prop="templateName">
<el-input v-model="searchForm.templateMc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 150px" />
</el-form-item>
<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" style="width: 200px" />
</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-form>
</div>
<div class="ytbd-content">
@ -114,11 +97,11 @@
</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>
}}</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>
}}</el-button>
</template>
</template>
</template>
@ -396,7 +379,7 @@ export default {
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.searchForm.startDate = this.daterange[0]
this.searchForm.endDate = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
this.searchForm.endDate = moment(this.daterange[1]).add(1, 'days').format('YYYY-MM-DD');
} else {
this.searchForm.startDate = ''
this.searchForm.endDate = ''
@ -444,7 +427,7 @@ export default {
detail(row) {
this.showDetail = true
this.$emit('showDetail', this.showDetail)
this.$refs.Xq.show(row, true,this.searchForm)
this.$refs.Xq.show(row, true, this.searchForm)
},
audit(row) {
this.showAudit = true

+ 57
- 73
src/views/business/form/nonTrial/comp/tbbdList.vue View File

@ -2,65 +2,44 @@
<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="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" />
</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" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.gsr')" prop="userId">
<SelectDeptUser v-model="searchForm.userId" style="width: 200px" :name="searchForm.userMc" key="userId"
@change="userChange" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item>
<div style="margin-left: 100px;">
<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>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<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" />
</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" style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<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" 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>
<el-option :label="$t('page.business.study.studyFormFill.yes')" value="是" />
<el-option :label="$t('page.business.study.studyFormFill.no')" value="否" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form :model="searchForm" ref="searchForm" :inline="true">
<el-form-item :label="$t('page.business.form.bdmc')" prop="name">
<el-input v-model="searchForm.bdmc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 150px" />
</el-form-item>
<el-form-item :label="$t('page.business.form.bdbh')" prop="sn">
<el-input v-model="searchForm.bdbh" :placeholder="$t('form.placeholderInput')" clearable
style="width: 150px" />
</el-form-item>
<el-form-item :label="$t('page.business.form.gsr')" prop="userId">
<SelectDeptUser v-model="searchForm.userId" style="width: 150px" :name="searchForm.userMc" key="userId"
@change="userChange" />
</el-form-item>
<el-form-item :label="$t('page.business.form.xtmbmc')" prop="templateName">
<el-input v-model="searchForm.templateMc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 150px" />
</el-form-item>
<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" style="width: 200px" />
</el-form-item>
<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" style="width: 200px" />
</el-form-item>
<el-form-item :label="$t('page.business.study.studyFormFill.sfbl')">
<el-select v-model="searchForm.sfbl" :placeholder="$t('form.placeholderSelect')" style="width: 150px"
clearable>
<el-option :label="$t('page.business.study.studyFormFill.yes')" value="是" />
<el-option :label="$t('page.business.study.studyFormFill.no')" value="否" />
</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-form>
</div>
<div class="tbbd-content">
@ -163,6 +142,8 @@
<Sy v-show="showAudit" key="Sy" ref="Sy" @close="syClose" />
<!-- 复核 -->
<Fh v-show="showFh" key="Fh" ref="Fh" @close="fhClose" />
<!-- 病理学家审核 -->
<Blxjsh v-show="showBlxjsh" key="Blxjsh" ref="Blxjsh" @close="blxjshClose" />
<!-- 废止 -->
<Fz key="Fz" ref="Fz" @callback="search" />
<!-- 确认废止 -->
@ -188,6 +169,7 @@ import Xq from "@/views/business/study/comp/tbbd/Xq";
import Sy from "@/views/business/study/comp/tbbd/Sy";
import Fz from "@/views/business/study/comp/tbbd/Fz";
import Fh from "@/views/business/study/comp/tbbd/Fh";
import Blxjsh from "@/views/business/study/comp/tbbd/Blxjsh";
import Qrfz from "@/views/business/study/comp/tbbd/Qrfz";
import Jq from "@/views/business/study/comp/tbbd/Jq";
import Ghgsr from "@/views/business/study/comp/tbbd/Ghgsr";
@ -227,13 +209,14 @@ export default {
deep: true
}
},
components: { Ghgsr, Fh, Fz, Bj, Xq, Qrfz, Sy, Jq, Gc, SelectDeptUser, SelectDeptUserDialog },
components: { Ghgsr, Fh, Fz, Blxjsh, Bj, Xq, Qrfz, Sy, Jq, Gc, SelectDeptUser, SelectDeptUserDialog },
data() {
return {
isQa: false,
leader: null,
showFh: false,
showAudit: false,
showBlxjsh: false,
showEdit: false,
showDetail: false,
daterangetj: [],
@ -391,7 +374,7 @@ export default {
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.searchForm.cjsjks = this.daterange[0]
this.searchForm.cjsjjs = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
this.searchForm.cjsjjs = moment(this.daterange[1]).add(1, 'days').format('YYYY-MM-DD');
} else {
this.searchForm.cjsjks = ''
this.searchForm.cjsjjs = ''
@ -476,6 +459,11 @@ export default {
this.$emit('showDetail', this.showFh)
this.search()
},
blxjshClose() {
this.showBlxjsh = false
this.$emit('showDetail', this.showBlxjsh)
this.search()
},
detail(row) {
this.showDetail = true
this.$emit('showDetail', this.showDetail)
@ -487,18 +475,14 @@ export default {
this.$refs.Sy.show(row)
},
fh(row) {
this.$modal.loading()
studyMethod_getReadAllMethodStatus({ userId: this.id, studyId: this.searchForm.studyId }).then(response => {
if (response.data.toUrl) {
this.toRead(response.data)
} else {
this.showFh = true
this.$emit('showDetail', this.showFh)
this.$refs.Fh.show(row)
}
}).finally(() => {
this.$modal.closeLoading()
})
this.showFh = true
this.$emit('showDetail', this.showFh)
this.$refs.Fh.show(row)
},
blxjsh(row) {
this.showBlxjsh = true
this.$emit('showDetail', this.showBlxjsh)
this.$refs.Blxjsh.show(row)
},
}
}

+ 30
- 47
src/views/business/form/nonTrial/comp/ytbdList.vue View File

@ -2,48 +2,31 @@
<div>
<div class="ytbd-list" v-show="!showDetail && !showEdit && !showAudit">
<div class="ytbd-search">
<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" />
</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" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.gsr')" prop="userId">
<SelectDeptUser v-model="searchForm.userId" :name="searchForm.userMc" key="userId"
@change="userChange" />
</el-form-item>
</el-col>
<el-col :span="6">
<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-row>
<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" />
</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" style="width: 200px" />
</el-form-item>
</el-col>
</el-row>
<el-form :model="searchForm" ref="searchForm" :inline="true">
<el-form-item :label="$t('page.business.form.bdmc')" prop="name">
<el-input v-model="searchForm.bdmc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 150px" />
</el-form-item>
<el-form-item :label="$t('page.business.form.bdbh')" prop="sn">
<el-input v-model="searchForm.bdbh" :placeholder="$t('form.placeholderInput')" clearable
style="width: 150px" />
</el-form-item>
<el-form-item :label="$t('page.business.form.gsr')" prop="userId">
<SelectDeptUser v-model="searchForm.userId" :name="searchForm.userMc" key="userId" style="width: 150px" @change="userChange" />
</el-form-item>
<el-form-item :label="$t('page.business.form.xtmbmc')" prop="templateName">
<el-input v-model="searchForm.templateMc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 150px" />
</el-form-item>
<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" style="width: 200px" />
</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-form>
</div>
<div class="ytbd-content">
@ -113,11 +96,11 @@
</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>
}}</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>
}}</el-button>
</template>
</template>
</template>
@ -265,7 +248,7 @@ export default {
pageNum: 1,
pageSize: 10,
studyId: -1,
studyStatus:5,
studyStatus: 5,
studySn: '',
studyMc: '',
bdbh: '',
@ -424,7 +407,7 @@ export default {
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.searchForm.startDate = this.daterange[0]
this.searchForm.endDate = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
this.searchForm.endDate = moment(this.daterange[1]).add(1, 'days').format('YYYY-MM-DD');
} else {
this.searchForm.startDate = ''
this.searchForm.endDate = ''
@ -481,7 +464,7 @@ export default {
detail(row) {
this.showDetail = true
this.$emit('showDetail', this.showDetail)
this.$refs.Xq.show(row, true,this.searchForm)
this.$refs.Xq.show(row, true, this.searchForm)
},
audit(row) {
this.showAudit = true

+ 45
- 14
src/views/business/resource/gsp/comps/ffjlList.vue View File

@ -7,22 +7,22 @@
<el-row>
<el-col :span="24">
<!-- 名称 -->
<el-form-item :label="$t('page.business.resource.gsp.mc') + ':'">
<el-form-item :label="$t('page.business.resource.gsp.mc') + ':'" prop="mc">
<el-input v-model="queryParams.mc" clearable @change="handleQuery"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 编号 -->
<el-form-item :label="$t('page.business.resource.gsp.bh') + ':'">
<el-form-item :label="$t('page.business.resource.gsp.bh') + ':'" prop="bh">
<el-input v-model="queryParams.bh" clearable @change="handleQuery"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 目的 -->
<el-form-item :label="$t('page.business.resource.gsp.md') + ':'">
<el-input v-model="queryParams.mdId" clearable @change="handleQuery"
<el-form-item :label="$t('page.business.resource.gsp.md') + ':'" prop="md">
<el-input v-model="queryParams.md" clearable @change="handleQuery"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 记录状态 -->
<el-form-item :label="$t('page.business.resource.gsp.jlzt') + ':'">
<el-form-item :label="$t('page.business.resource.gsp.jlzt') + ':'" prop="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" />
@ -33,7 +33,7 @@
</el-select>
</el-form-item>
<!-- 借阅状态 -->
<el-form-item :label="$t('page.business.resource.gsp.jyzt') + ':'">
<el-form-item :label="$t('page.business.resource.gsp.jyzt') + ':'" prop="jyzt">
<el-select v-model="queryParams.jyzt" :placeholder="$t('form.placeholderSelect')" clearable
@change="handleQuery">
<el-option :label="$t('page.business.resource.resource.jyzt.wjy')" :value="1" />
@ -42,13 +42,13 @@
</el-select>
</el-form-item>
<!-- 出库日期 -->
<el-form-item :label="$t('page.business.resource.mjy.cksj') + ':'">
<el-form-item :label="$t('page.business.resource.mjy.cksj') + ':'" prop="daterangeCk">
<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') + ':'" prop="daterangeRk">
<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;" />
@ -78,6 +78,14 @@
<el-button type="primary" @click="exportExcel" v-hasPermi="['business:resource:gsp:ffjldc']">{{
$t('form.export') }}</el-button>
</el-col>
<el-col :span="14" v-if="rkl">
<div class="tv_rkl">
<span style="margin-right: 20px;">{{ $t('page.business.resource.gsp.rkl') }}{{ rkl }}</span>
<span style="margin-right: 20px;">{{ $t('page.business.resource.gsp.ckl') }}{{ ckl }}</span>
<span style="margin-right: 20px;">{{ $t('page.business.resource.gsp.syl') }}{{ syl }}</span>
</div>
</el-col>
</el-row>
<el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange">
@ -195,7 +203,7 @@
</template>
<script>
import { list } from "@/api/business/gsp/gspFfjl"
import { list, statistics } from "@/api/business/gsp/gspFfjl"
import Sd from "./ffjl/Sd";
import Jy from "./ffjl/Jy";
import Js from "./ffjl/Js";
@ -217,6 +225,9 @@ export default {
single: true,
multiple: true,
total: 0,
rkl: null,
ckl: null,
syl: null,
list: [],
//
selectList: [],
@ -225,7 +236,7 @@ export default {
pageNum: 1,
pageSize: 10,
mc: null,
mdId: null,
md: null,
jlzt: null,
jyzt: null,
bh: null,
@ -436,15 +447,15 @@ export default {
//
getList() {
if (this.daterangeCk != null && this.daterangeCk.length > 0) {
this.queryParams.startDateCk = this.daterangeCk[0]
this.queryParams.endDateCk = moment().add(this.daterangeCk[1], 'days').format('YYYY-MM-DD');
this.queryParams.startDateCk = this.daterangeCk[0] + ' 00:00:00'
this.queryParams.endDateCk = this.daterangeCk[1] + ' 23:59:59'
} else {
this.queryParams.startDateCk = ''
this.queryParams.endDateCk = ''
}
if (this.daterangeRk != null && this.daterangeRk.length > 0) {
this.queryParams.startDateRk = this.daterangeRk[0]
this.queryParams.endDateRk = moment().add(this.daterangeRk[1], 'days').format('YYYY-MM-DD');
this.queryParams.startDateRk = this.daterangeRk[0] + ' 00:00:00'
this.queryParams.endDateRk = this.daterangeRk[1] + ' 23:59:59'
} else {
this.queryParams.startDateRk = ''
this.queryParams.endDateRk = ''
@ -455,6 +466,18 @@ export default {
this.total = response.total
this.loading = false
})
if (this.queryParams.startDateCk || this.queryParams.startDateRk || this.queryParams.mc || this.queryParams.ph
|| this.queryParams.gg || this.queryParams.jlzt || this.queryParams.jyzt || this.queryParams.md) {
statistics(this.queryParams).then(response => {
this.rkl = response.data.rkl
this.ckl = response.data.rkl
this.syl = response.data.rkl
})
} else {
this.rkl = null
this.ckl = null
this.syl = null
}
},
//
handleQuery() {
@ -464,6 +487,8 @@ export default {
//
resetQuery() {
this.resetForm("queryForm")
this.daterangeCk = []
this.daterangeRk = []
this.handleQuery()
},
//
@ -480,4 +505,10 @@ export default {
background: #fff;
padding: 10px 10px;
}
.tv_rkl {
color: #515a6e;
font-size: 13px;
margin-top: 5px;
}
</style>

+ 3
- 2
src/views/business/resource/gsp/comps/gsp/Ff.vue View File

@ -123,7 +123,7 @@
<el-row>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.zytj')" prop="zytj">
<el-input type="text" v-model="form.zytj" maxlength="50" :placeholder="$t('form.placeholderInput')" />
<BusinessSelect v-model="form.zytj" dictType="business_zytj"></BusinessSelect>
</el-form-item>
</el-col>
<el-col :span="12">
@ -222,9 +222,10 @@ import { mapGetters } from 'vuex'
import SelectList from "./SelectList";
import SelectDeptUser from '@/views/business/comps/select/SelectDeptUser';
import SelectStudy from '@/views/business/comps/select/SelectStudy';
import BusinessSelect from '@/views/business/comps/select/BusinessSelect';
export default {
name: "Ff",
components: { SelectList, SelectDeptUser, SelectStudy },
components: { SelectList, SelectDeptUser, SelectStudy, BusinessSelect },
data() {
return {
isBatch: false,

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

@ -47,7 +47,7 @@
<!-- 库存量单位 -->
<el-col :span="4">
<BusinessSelect v-model="form.kcdw"
dictType="business_nddw,business_zldw,business_tjdw"></BusinessSelect>
dictType="business_zldw,business_tjdw"></BusinessSelect>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.yxq')" prop="yxq">

+ 30
- 31
src/views/business/resource/gsp/comps/gsp/Ysff.vue View File

@ -4,26 +4,30 @@
<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="120px">
<div class="sbzdtcma"> <input type="text"> <input type="password" show-password> </div>
<div class="sbzdtcma"> <input type="text"> <input type="password" show-password> </div>
<div>
<el-row style="margin:10px 0px;">
<el-col :span="24">
<el-table :data="selectList" border>
<el-table-column :label="$t('page.business.resource.mjy.mc')" align="left" prop="mc"
<el-table-column :label="$t('page.business.resource.gsp.mc')" align="left" prop="mc"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.bh')" align="left" prop="bh"
<el-table-column :label="$t('page.business.resource.gsp.bh')" align="left" prop="bh"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.mjy.ckl')" align="center">
<el-table-column :label="$t('page.business.resource.gsp.ph')" align="center" prop="ph" />
<el-table-column :label="$t('page.business.resource.gsp.gg')" align="center">
<template slot-scope="scope">
{{ scope.row.ckl }}{{ scope.row.ckldw }}
{{ scope.row.gg }}{{ scope.row.ggdw }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.ffzytj')" align="center" prop="ffzytj"
<el-table-column :label="$t('page.business.resource.gsp.yxq')" align="center" prop="yxq"
width="150px" />
<el-table-column :label="$t('page.business.resource.mjy.ckmz')" align="center" prop="ckmz" width="150px" />
<el-table-column :label="$t('page.business.resource.mjy.ckmzdw')" align="center" prop="ckmzdw"
<el-table-column :label="$t('page.business.resource.gsp.cksj')" align="center" prop="ffrq"
width="150px" />
<el-table-column :label="$t('page.business.resource.gsp.ckjz')" align="center" prop="kc" width="150px">
<template slot-scope="scope">
{{ scope.row.kc }}{{ scope.row.kcdw }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.lqr1')" align="center" prop="lqr1Mc"
width="150px" />
<el-table-column :label="$t('page.business.resource.mjy.lqr2')" align="center" prop="lqr2Mc"
@ -33,16 +37,14 @@
<el-table-column :label="$t('page.business.resource.mjy.ffr2')" align="center" prop="ffr2Mc"
width="150px" />
<el-table-column :label="$t('form.remark')" align="center" prop="ffbz" width="150px" />
<el-table-column :label="$t('page.business.resource.mjy.md')" align="center" prop="ffxmMc"
width="150px" />
</el-table>
</el-col>
</el-row>
</div>
<el-row>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.mjy.zcg')" prop="zcgId">
<el-input type="text" v-model="form.zcgId" maxlength="50" :placeholder="$t('form.placeholderInput')" />
<el-form-item :label="$t('page.business.resource.gyzj.zcg')" prop="zcgId">
<SelectZcg v-model="form.zcgId" />
</el-form-item>
</el-col>
<el-col :span="12">
@ -55,8 +57,7 @@
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.remark')" prop="remark">
<el-input type="text" v-model="form.remark" maxlength="20"
:placeholder="$t('form.placeholderInput')">
<el-input type="text" v-model="form.remark" maxlength="20" :placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
@ -64,13 +65,12 @@
<el-row>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.mjy.lqr1')" prop="lqr1Id">
<SelectDeptUser v-model="form.lqr1Id" key="lqr1Id"/>
<SelectDeptUser v-model="form.lqr1Id" key="lqr1Id" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('form.password')" prop="lqr1mm">
<el-input type="text" v-model="form.lqr1mm" maxlength="20"
:placeholder="$t('form.placeholderInput')">
<el-input type="text" v-model="form.lqr1mm" maxlength="20" :placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
@ -78,13 +78,12 @@
<el-row>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.mjy.lqr2')" prop="lqr2Id">
<SelectDeptUser v-model="form.lqr2Id" key="lqr2Id"/>
<SelectDeptUser v-model="form.lqr2Id" key="lqr2Id" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('form.password')" prop="lqr2mm">
<el-input type="text" v-model="form.lqr2mm" maxlength="20"
:placeholder="$t('form.placeholderInput')">
<el-input type="text" v-model="form.lqr2mm" maxlength="20" :placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
@ -92,14 +91,14 @@
<el-row>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.mjy.ffr')">
<el-input type="text" v-model="nickName" maxlength="50"
:placeholder="$t('form.placeholderInput')" disabled/>
<el-input type="text" v-model="nickName" maxlength="50" :placeholder="$t('form.placeholderInput')"
disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('form.password')" prop="ffrmm">
<div class="sbzdtcma"> <input type="text"></div>
<el-input type="password" v-model="form.ffrmm" show-password maxlength="20"
<el-input type="password" v-model="form.ffrmm" show-password maxlength="20"
:placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
@ -118,10 +117,10 @@
import { ysff } from "@/api/business/mjy/mjy"
import { mapGetters } from 'vuex'
import SelectDeptUser from '@/views/business/comps/select/SelectDeptUser';
import SelectZcg from '@/views/business/comps/select/SelectZcg';
export default {
name: "Ysff",
components: {SelectDeptUser},
components: { SelectDeptUser, SelectZcg },
data() {
return {
ids: [],
@ -139,27 +138,27 @@ export default {
message: ' ',
trigger: 'blur'
}],
lqr2mm:[{
lqr2mm: [{
required: true,
message: ' ',
trigger: 'blur'
}],
lqr1mm:[{
lqr1mm: [{
required: true,
message: ' ',
trigger: 'blur'
}],
lqr1Id:[{
lqr1Id: [{
required: true,
message: ' ',
trigger: 'blur'
}],
lqr2Id:[{
lqr2Id: [{
required: true,
message: ' ',
trigger: 'blur'
}],
ffrmm:[{
ffrmm: [{
required: true,
message: ' ',
trigger: 'blur'

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

@ -113,6 +113,7 @@
</el-table-column>
<el-table-column :label="$t('page.business.resource.gsp.ph')" align="center" prop="ph" width="150px" />
<el-table-column :label="$t('page.business.resource.gsp.jsrq')" align="center" prop="jsrq" width="150px" />
<el-table-column :label="$t('page.business.resource.gsp.yxq')" align="center" prop="yxq" width="150px" />
<el-table-column :label="$t('page.business.resource.gsp.cctj')" align="center" prop="cctj" width="130px" />
<el-table-column :label="$t('page.business.resource.gsp.zjzt')" align="center" width="100px" fixed="right">

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

@ -49,7 +49,7 @@
<!-- 库存量单位 -->
<el-col :span="4">
<BusinessSelect v-model="form.rkdw"
dictType="business_nddw,business_zldw,business_tjdw"></BusinessSelect>
dictType="business_zldw,business_tjdw"></BusinessSelect>
</el-col>
<!-- 有效期 -->
<el-col :span="12">

+ 40
- 29
src/views/business/resource/gsp/comps/rkjlList.vue View File

@ -7,22 +7,22 @@
<el-row>
<el-col :span="24">
<!-- 名称 -->
<el-form-item :label="$t('page.business.resource.gsp.mc') + ':'">
<el-form-item :label="$t('page.business.resource.gsp.mc') + ':'" prop="mc">
<el-input v-model="queryParams.mc" clearable @change="handleQuery"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- -->
<el-form-item :label="$t('page.business.resource.gsp.bh') + ':'">
<el-input v-model="queryParams.bh" clearable @change="handleQuery"
<!-- -->
<el-form-item :label="$t('page.business.resource.gsp.ph') + ':'" prop="ph">
<el-input v-model="queryParams.ph" clearable @change="handleQuery"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 规格 -->
<el-form-item :label="$t('page.business.resource.gsp.gg') + ':'">
<el-form-item :label="$t('page.business.resource.gsp.gg') + ':'" prop="gg">
<el-input v-model="queryParams.gg" clearable @change="handleQuery"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 记录状态 -->
<el-form-item :label="$t('page.business.resource.gsp.jlzt') + ':'">
<el-form-item :label="$t('page.business.resource.gsp.jlzt') + ':'" prop="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" />
@ -33,7 +33,7 @@
</el-select>
</el-form-item>
<!-- 借阅状态 -->
<el-form-item :label="$t('page.business.resource.gsp.jyzt') + ':'">
<el-form-item :label="$t('page.business.resource.gsp.jyzt') + ':'" prop="jyzt">
<el-select v-model="queryParams.jyzt" :placeholder="$t('form.placeholderSelect')" clearable
@change="handleQuery">
<el-option :label="$t('page.business.resource.resource.jyzt.wjy')" :value="1" />
@ -42,8 +42,8 @@
</el-select>
</el-form-item>
<!-- 入库日期 -->
<el-form-item :label="$t('page.business.resource.mjy.rksj') + ':'">
<el-date-picker v-model="daterangeRk" class="chat-histogram-daterange" type="daterange"
<el-form-item :label="$t('page.business.resource.mjy.rksj') + ':'" prop="daterange">
<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;" />
</el-form-item>
@ -82,6 +82,9 @@
<el-button type="primary" @click="exportExcel" v-hasPermi="['business:resource:gsp:rkdc']">{{
$t('form.export') }}</el-button>
</el-col>
<el-col :span="14" v-if="rkl">
<div class="tv_rkl">{{ $t('page.business.resource.gsp.rkl') }}{{ rkl }}</div>
</el-col>
</el-row>
<el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange">
@ -185,7 +188,7 @@
</template>
<script>
import { list } from "@/api/business/gsp/gspRkjl"
import { list, sumRkl } from "@/api/business/gsp/gspRkjl"
import Sd from "./rkjl/Sd";
import Jy from "./rkjl/Jy";
import Js from "./rkjl/Js";
@ -202,8 +205,7 @@ export default {
components: { Sd, Js, Gd, Jd, Jy, Xq, Xz, Bj, RkjlImport },
data() {
return {
daterangeCk: [],
daterangeRk: [],
daterange: [],
loading: true,
showDetail: false,
single: true,
@ -212,6 +214,7 @@ export default {
list: [],
//
selectList: [],
rkl: '',
//
queryParams: {
pageNum: 1,
@ -220,11 +223,9 @@ export default {
mdId: null,
jlzt: null,
jyzt: null,
bh: null,
startDateCk: null,
endDateCk: null,
startDateRk: null,
endDateRk: null,
ph: null,
startDate: null,
endDate: null
},
}
},
@ -408,19 +409,12 @@ export default {
},
//
getList() {
if (this.daterangeCk != null && this.daterangeCk.length > 0) {
this.queryParams.startDateCk = this.daterangeCk[0]
this.queryParams.endDateCk = moment().add(this.daterangeCk[1], 'days').format('YYYY-MM-DD');
} else {
this.queryParams.startDateCk = ''
this.queryParams.endDateCk = ''
}
if (this.daterangeRk != null && this.daterangeRk.length > 0) {
this.queryParams.startDateRk = this.daterangeRk[0]
this.queryParams.endDateRk = moment().add(this.daterangeRk[1], 'days').format('YYYY-MM-DD');
if (this.daterange != null && this.daterange.length > 0) {
this.queryParams.startDate = this.daterange[0] + ' 00:00:00'
this.queryParams.endDate = this.daterange[1] + ' 23:59:59'
} else {
this.queryParams.startDateRk = ''
this.queryParams.endDateRk = ''
this.queryParams.startDate = ''
this.queryParams.endDate = ''
}
this.loading = true
list(this.queryParams).then(response => {
@ -428,6 +422,16 @@ export default {
this.total = response.total
this.loading = false
})
if (this.queryParams.startDate || this.queryParams.endDate || this.queryParams.mc || this.queryParams.ph
|| this.queryParams.gg || this.queryParams.jlzt || this.queryParams.jyzt) {
sumRkl(this.queryParams).then(response => {
this.rkl = response.data.rkl
})
} else {
this.rkl = null
}
},
//
handleQuery() {
@ -453,4 +457,11 @@ export default {
background: #fff;
padding: 10px 10px;
}
.tv_rkl {
color: #515a6e;
display: flex;
font-size: 13px;
margin-top: 5px;
}
</style>

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

@ -522,7 +522,7 @@ export default {
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.queryParams.startDate = this.daterange[0]
this.queryParams.endDate = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
this.queryParams.endDate = moment(this.daterange[1]).add(1, 'days').format('YYYY-MM-DD');
} else {
this.queryParams.startDate = ''
this.queryParams.endDate = ''

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

@ -521,7 +521,7 @@ export default {
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.queryParams.startDate = this.daterange[0]
this.queryParams.endDate = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
this.queryParams.endDate = moment(this.daterange[1]).add(1, 'days').format('YYYY-MM-DD');
} else {
this.queryParams.startDate = ''
this.queryParams.endDate = ''

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

@ -149,6 +149,7 @@ export default {
this.reset()
sj_info({id: row.id}).then(response => {
this.form = response.data
this.form.qmyy = this.$t('form.edit'),
this.open = true
})

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

@ -11,7 +11,7 @@
</el-form-item>
</el-col>
<el-col :span="6">
<BusinessSelectVue dictType="business_zldw" v-model="form.kcdw" />
<BusinessSelectVue dictType="business_zldw,business_tjdw" v-model="form.kcdw" />
</el-col>
</el-row>
<el-row>

+ 11
- 10
src/views/business/resource/sj/list.vue View File

@ -4,24 +4,24 @@
<!-- 列表 -->
<div>
<div class="app-container sj" v-show="!showDetail">
<el-form :model="queryParams" ref="queryForm" class="search-area" :inline="true">
<el-form :model="queryParams" ref="queryParams" class="search-area" :inline="true">
<!-- 名称 -->
<el-form-item :label="$t('page.business.resource.sj.mc') + ':'">
<el-form-item :label="$t('page.business.resource.sj.mc') + ':'" prop="mc">
<el-input v-model="queryParams.mc" clearable @change="handleQuery"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 编号 -->
<el-form-item :label="$t('page.business.resource.sj.bh') + ':'">
<el-form-item :label="$t('page.business.resource.sj.bh') + ':'" prop="bh">
<el-input v-model="queryParams.bh" clearable @change="handleQuery"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 所属部门 -->
<el-form-item :label="$t('page.business.resource.sj.ssbm') + ':'">
<el-form-item :label="$t('page.business.resource.sj.ssbm') + ':'" prop="deptName">
<el-input v-model="queryParams.deptName" clearable @change="handleQuery"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
<!-- 借阅状态 -->
<el-form-item :label="$t('page.business.resource.sj.jyzt') + ':'">
<el-form-item :label="$t('page.business.resource.sj.jyzt') + ':'" prop="jyzt">
<el-select v-model="queryParams.jyzt" :placeholder="$t('form.placeholderSelect')" clearable
@change="handleQuery">
<el-option key="1" :label="$t('page.business.resource.resource.jyzt.wjy')" value="1" />
@ -30,7 +30,7 @@
</el-select>
</el-form-item>
<!-- 制剂状态 -->
<el-form-item :label="$t('page.business.resource.sj.zjzt') + ':'">
<el-form-item :label="$t('page.business.resource.sj.zjzt') + ':'" prop="zjzt">
<el-select v-model="queryParams.zjzt" :placeholder="$t('form.placeholderSelect')" clearable
@change="handleQuery">
<el-option key="1" :label="$t('page.business.resource.resource.zjzt.rk')" value="1" />
@ -42,7 +42,7 @@
</el-select>
</el-form-item>
<!-- 失效日期 -->
<el-form-item :label="$t('page.business.resource.sj.sxrq') + ':'">
<el-form-item :label="$t('page.business.resource.sj.sxrq') + ':'" prop="daterange">
<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;" />
@ -327,8 +327,8 @@ export default {
//
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.queryParams.startDate = this.daterange[0]
this.queryParams.endDate = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
this.queryParams.startDate = this.daterange[0] + ' 00:00:00'
this.queryParams.endDate = this.daterange[1] + ' 23:59:59'
} else {
this.queryParams.startDate = ''
this.queryParams.endDate = ''
@ -347,7 +347,8 @@ export default {
},
//
resetQuery() {
this.resetForm("queryForm")
this.resetForm("queryParams")
this.daterange = []
this.handleQuery()
},
//

+ 4
- 4
src/views/business/resource/yq/list.vue View File

@ -3,19 +3,19 @@
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch">
<el-form-item :label="$t('page.business.resource.yq.yqbh') + ':'" prop="bh">
<el-input v-model="queryParams.bh" placeholder="" clearable @keyup.enter.native="handleQuery" />
<el-input v-model="queryParams.bh" placeholder="" clearable @keyup.enter.native="handleQuery" @change="handleQuery"/>
</el-form-item>
<el-form-item :label="$t('page.business.resource.yq.yqmc') + ':'" prop="mc">
<el-input v-model="queryParams.mc" placeholder="" clearable @keyup.enter.native="handleQuery" />
<el-input v-model="queryParams.mc" placeholder="" clearable @keyup.enter.native="handleQuery" @change="handleQuery" />
</el-form-item>
<el-form-item :label="$t('page.business.resource.yq.xcjzrq') + ':'" prop="jzrq">
<el-date-picker clearable v-model="dateRange" type="daterange" value-format="yyyy-MM-dd" range-separator="-"
:start-placeholder="$t('form.startDate')" :end-placeholder="$t('form.endDate')">
:start-placeholder="$t('form.startDate')" :end-placeholder="$t('form.endDate')" @change="handleQuery">
</el-date-picker>
</el-form-item>
<el-form-item :label="$t('page.business.resource.yq.ssbm') + ':'" prop="bmMc">
<el-input v-model="queryParams.bmMc" placeholder="" clearable @keyup.enter.native="handleQuery" />
<el-input v-model="queryParams.bmMc" placeholder="" clearable @keyup.enter.native="handleQuery" @change="handleQuery"/>
</el-form-item>
<!-- <el-form-item :label="$t('page.business.resource.yq.sfccwz') + ':'" prop="ccwz">
<el-select v-model="queryParams.ccwz" :placeholder="$t('form.placeholderSelect')" clearable @change="handleQuery">

+ 3
- 2
src/views/business/study/comp/jhbd/Bj.vue View File

@ -64,7 +64,7 @@
</el-row>
</el-form>
</div>
<div class="content" v-if="showIndex == 2">
<div class="content" v-if="showIndex == 2&&templateData.templateId">
<TemplateTable ref="templateTable" emitName="onPlanCallback" @onPlanCallback="onPlanCallback"
:sn="form.templateSn" :templateData="templateData" fillType="actFill" />
</div>
@ -201,7 +201,8 @@ export default {
id: this.form.id,
bdnr: JSON.stringify(this.$refs.templateTable.getFilledFormData()),
zdxgjl: JSON.stringify(data.resourceList),
filedValue: JSON.stringify(data.newRecord)
filedValue: JSON.stringify(data.newRecord),
submittedCodes: data.submittedCodes ? JSON.stringify(data.submittedCodes) : ''
}
).then(response => {
})

+ 5
- 17
src/views/business/study/comp/jhbdList.vue View File

@ -2,41 +2,29 @@
<div class="tbbd-list">
<div v-show="!showDetail && !showEdit && !showAudit && !showFh">
<div class="tbbd-search">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="100px">
<el-row>
<el-col :span="5">
<el-form :model="searchForm" ref="searchForm" :inline="true" >
<el-form-item :label="$t('page.business.form.bdmc')" prop="name"
:label-width="$i18n.locale === 'zh_CN' ? '100px' : '120px'">
<el-input v-model="searchForm.bdmc" :placeholder="$t('form.placeholderInput')" clearable
style="width: 160px" />
style="width: 150px" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item :label="$t('page.business.form.bdbh')" prop="sn">
<el-input v-model="searchForm.bdbh" :placeholder="$t('form.placeholderInput')" clearable
style="width: 160px" />
style="width: 150px" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item :label="$t('page.business.form.gsr')" prop="userId">
<SelectDeptUser v-model="searchForm.userId" style="width: 160px" :name="searchForm.userMc" key="userId"
<SelectDeptUser v-model="searchForm.userId" style="width: 150px" :name="searchForm.userMc" key="userId"
@change="userChange" />
</el-form-item>
</el-col>
<el-col :span="5">
<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" style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="4">
<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">
@ -239,7 +227,7 @@ export default {
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.searchForm.cjsjks = this.daterange[0]
this.searchForm.cjsjjs = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
this.searchForm.cjsjjs = moment(this.daterange[1]).add(1, 'days').format('YYYY-MM-DD');
} else {
this.searchForm.cjsjks = ''
this.searchForm.cjsjjs = ''

+ 3
- 2
src/views/business/study/comp/sqbd/Bj.vue View File

@ -74,7 +74,7 @@
</el-row>
</el-form>
</div>
<div class="content" v-if="showIndex == 2">
<div class="content" v-if="showIndex == 2&&templateData.templateId">
<TemplateTable ref="templateTable" emitName="onApplyCallback" @onApplyCallback="onApplyCallback"
:sn="form.templateSn" :templateData="templateData" fillType="actFill" />
</div>
@ -201,7 +201,8 @@ export default {
id: this.form.id,
bdnr: JSON.stringify(this.$refs.templateTable.getFilledFormData()),
zdxgjl: JSON.stringify(data.resourceList),
filedValue: JSON.stringify(data.newRecord)
filedValue: JSON.stringify(data.newRecord),
submittedCodes: data.submittedCodes ? JSON.stringify(data.submittedCodes) : ''
}
).then(response => {
})

+ 102
- 10
src/views/business/study/comp/tbbd/Bj.vue View File

@ -32,7 +32,10 @@
$t('page.business.study.studyFormFill.yjcc')
}}</el-button>
<el-button @click="showSave">{{ $t('page.business.study.studyFormFill.save') }}</el-button>
<el-button type="primary" @click="showApprove">{{ $t('page.business.study.studyFormFill.submit')
<el-button type="primary" v-if="form.blxjshzt != 10 && form.showBlxjsh == 10" @click="showTjsh">{{
$t('page.business.study.studyFormFill.tjsh')
}}</el-button>
<el-button type="primary" v-else @click="showApprove">{{ $t('page.business.study.studyFormFill.submit')
}}</el-button>
<el-button type="primary" @click="pre">{{ $t('page.business.study.studyFormFill.pre') }}</el-button>
</template>
@ -78,7 +81,7 @@
</el-row>
</el-form>
</div>
<div class="content" v-if="showIndex == 2">
<div class="content" v-if="showIndex == 2 && templateData.templateId">
<TemplateTable emitName="onFillCallback" @onFillCallback="onFillCallback" ref="templateTable"
:sn="templateData.templateSn" :templateData="templateData" fillType="actFill" />
</div>
@ -124,7 +127,7 @@
</template>
</el-form-item>
</el-col>
<el-col :psna="24" >
<el-col :psna="24">
<el-form-item>
<div><el-checkbox v-model="formApprove.sfcc" @change="sfccChange">{{
$t('page.business.study.studyFormFill.cc') }}</el-checkbox>
@ -150,7 +153,8 @@
<div style="display: flex; margin-left: 10px;">
<div> 存储条件</div>
<div>
<BusinessSelect v-model="citem.cctj" dictType="business_cctj" :multiple="true" style="width: 200px;">
<BusinessSelect v-model="citem.cctj" dictType="business_cctj" :multiple="true"
style="width: 200px;">
</BusinessSelect>
</div>
</div>
@ -263,7 +267,8 @@
<div style="display: flex; margin-left: 10px;">
<div> 存储条件</div>
<div>
<BusinessSelect v-model="citem.cctj" dictType="business_cctj" :multiple="true" style="width: 200px;">
<BusinessSelect v-model="citem.cctj" dictType="business_cctj" :multiple="true"
style="width: 200px;">
</BusinessSelect>
</div>
</div>
@ -369,12 +374,57 @@
<el-button @click="openSave = false">{{ $t('form.cancel') }}</el-button>
</div>
</el-dialog>
<el-dialog :title="$t('page.business.study.studyFormFill.tjsh')" :visible.sync="openTjsh" width="600px"
append-to-body :close-on-click-modal="false">
<el-form ref="formTjsh" :model="formTjsh" :rules="rulesTjsh" label-width="120px" v-if="openTjsh">
<div class="sbzdtcma"> <input type="text"> <input type="password" show-password> </div>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-input type="text" :value="formTjsh.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="formTjsh.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">
<div class="sbzdtcma"> <input type="text"></div>
<el-input type="password" show-password v-model="formTjsh.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="saveTjsh">{{ $t('form.confirm') }}</el-button>
<el-button @click="openTjsh = false">{{ $t('form.cancel') }}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listData } from "@/api/system/dict/data"
import { studyFormFill_bc, studyFormFill_yjccFilter, studyFormFill_yjcc, studyFormFill_bcOnly, studyFormFill_updateBdnr, studyFormFill_tj, studyFormFill_info, studyFormFill_updateFhyjjl } from "@/api/business/study/studyFormFill"
import { studyFormFill_bc, studyFormFill_yjccFilter, studyFormFill_yjcc, studyFormFill_tjblxjsh, studyFormFill_bcOnly, studyFormFill_updateBdnr, studyFormFill_tj, studyFormFill_info, studyFormFill_updateFhyjjl } from "@/api/business/study/studyFormFill"
import { study_info } from "@/api/business/study/study"
import { mapGetters } from 'vuex'
import SelectTemplate from "@/views/business/comps/select/SelectTemplate";
@ -413,6 +463,7 @@ export default {
cclist: [],
cclistYj: [],
openSave: false,
openTjsh: false,
openApprove: false,
openYjcc: false,
formSave: {
@ -428,7 +479,7 @@ export default {
resource: '',
yqResource: '',
jcbList: '',
xbxj:'',
xbxj: '',
qmrmm: '',
sfcz: false,
czfs: '',
@ -454,6 +505,13 @@ export default {
ccwz: '',
ccids: '',
},
formTjsh: {
id: null,
qmyy: this.$t('page.business.study.studyFormFill.txbtjjl'),
remark: '',
bdnr: '',
qmrmm: '',
},
resourceYj: [],
resource: [],
yqResource: [],
@ -474,6 +532,13 @@ export default {
trigger: 'blur'
}]
},
rulesTjsh: {
qmrmm: [{
required: true,
message: ' ',
trigger: 'blur'
}]
},
rulesSave: {
qmrmm: [{
required: true,
@ -531,7 +596,8 @@ export default {
id: this.form.id,
bdnr: JSON.stringify(this.$refs.templateTable.getFilledFormData()),
zdxgjl: data.resourceList ? JSON.stringify(data.resourceList) : '',
filedValue: data.newRecord ? JSON.stringify(data.newRecord) : ''
filedValue: data.newRecord ? JSON.stringify(data.newRecord) : '',
submittedCodes: data.submittedCodes ? JSON.stringify(data.submittedCodes) : ''
}
).then(response => {
})
@ -611,7 +677,7 @@ export default {
this.showIndex = 1
this.$modal.loading()
study_info({ id: params.studyId }).then(response => {
this.form = _.merge({}, this.form, { studySubjectId: params.studySubjectId, studyId: params.studyId, resourceStudy: response.data.resource, sftb: 1,studyMc:response.data.name,studySn:response.data.sn })
this.form = _.merge({}, this.form, { studySubjectId: params.studySubjectId, studyId: params.studyId, resourceStudy: response.data.resource, sftb: 1, studyMc: response.data.name, studySn: response.data.sn })
this.templateData = deepClone(this.form)
const obj = Object.assign({}, this.$route, { title: this.$t('page.business.study.studyFormFill.xzbd') })
this.$tab.updatePage(obj);
@ -717,6 +783,32 @@ export default {
that.$modal.msgError("没有可存储的药剂")
}
},
async showTjsh(qmyy) {
let that = this
let content = await this.$refs.templateTable.getFormData()
if (content) {
that.formTjsh.id = that.form.id
that.formTjsh.remark = ''
that.formTjsh.qmrmm = ''
that.formTjsh.bdnr = ''
that.openTjsh = true
}
},
async saveTjsh() {
let that = this
this.$refs["formTjsh"].validate(valid => {
if (valid) {
this.formTjsh.bdnr = JSON.stringify(this.$refs.templateTable.getFilledFormData())
that.$modal.loading()
studyFormFill_tjblxjsh(that.formTjsh).then(response => {
that.openTjsh = false
that.cancelSave()
}).finally(() => {
that.$modal.closeLoading()
})
}
})
},
resetYjcc() {
this.formYjcc = {
id: null,
@ -757,7 +849,7 @@ export default {
this.$modal.loading()
studyFormFill_bcOnly(this.form).then(response => {
this.form = response.data
this.templateData.bdmc = this.form.bdmc
this.templateData = deepClone(this.form)
this.showIndex = 2
const obj = Object.assign({}, this.$route, { title: this.form.bdmc })
this.$tab.updatePage(obj);

+ 290
- 0
src/views/business/study/comp/tbbd/Blxjsh.vue View File

@ -0,0 +1,290 @@
<template>
<div>
<div class="edit-container" v-if="open">
<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="danger" @click="showApprove('病理学家审核拒绝')">{{ $t('page.business.study.studyFormFill.reject')
}}</el-button>
<el-button type="primary" @click="showApprove('病理学家审核通过')">{{ $t('page.business.study.studyFormFill.approve')
}}</el-button>
</div>
</div>
<div class="edit-content">
<div class="content-left">
<TemplateTable emitName="onFillFhCallback" @onFillFhCallback="onFillFhCallback" ref="templateTable"
:sn="form.templateSn" :templateData="form" fillType="blxj" />
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyFormFill.qmxx') }}</div>
</div>
<div class="pal">
<el-table :data="qmxxList" v-loading="loadingQmxx">
<el-table-column :label="$t('page.business.study.studyFormFill.qmr')" align="center" prop="qmrMc"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormFill.qmyy')" align="center" prop="qmyy"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormFill.qmsj')" align="center" prop="createTime"
width="150px" />
<el-table-column :label="$t('page.business.study.studyFormFill.bzyy')" align="center" prop="remark"
:show-overflow-tooltip="true" />
</el-table>
</div>
<div class="pal">
<pagination v-show="totalQmxx > 0" :total="totalQmxx" :page.sync="queryParamsQmxx.pageNum"
:limit.sync="queryParamsQmxx.pageSize" @pagination="getQmxxList" />
</div>
</div>
<div class="content-right">
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.study.studyFormFill.jcgj') }}</div>
</div>
<JcgjList ref="jcgjList" @handleQuery="getJjcgjList" :showXg="true"/>
<pagination v-show="jcgjTotal > 0" small layout="prev, pager, next" :total="jcgjTotal"
@pagination="getJjcgjList" :page.sync="queryParamsJcgj.pageNum"
:limit.sync="queryParamsJcgj.pageSize"/>
</div>
</div>
</div>
<el-dialog :title="$t(openTitle)" :visible.sync="openApprove" width="500px" append-to-body
:close-on-click-modal="false">
<el-form ref="formApprove" :model="formApprove" :rules="rulesApprove" label-width="120px" v-if="openApprove">
<div class="sbzdtcma"> <input type="text"> <input type="password" show-password > </div>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-input type="text" :value="formApprove.qmyyMc" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row v-if="formApprove.qmyy == '病理学家审核拒绝'">
<el-col :span="24">
<el-form-item :label="$t('page.business.study.studyFormFill.reason')" prop="reason">
<el-input type="textarea" v-model="formApprove.reason" :rows="5" maxlength="500"
:placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row v-else>
<el-col :span="24">
<el-form-item :label="$t('form.remark')">
<el-input type="textarea" v-model="formApprove.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" show-password v-model="formApprove.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="approve">{{ $t('form.confirm') }}</el-button>
<el-button @click="openApprove = false">{{ $t('form.cancel') }}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { studyFormFill_blxjshtg, studyFormFill_blxjshjj, studyFormFill_updateZdgxjl, studyFormFill_updateFhyjjl, studyFormFill_info, studyFormFill_jcgj, studyFormFill_qmxx } from "@/api/business/study/studyFormFill"
import { mapGetters } from 'vuex'
import JcgjList from "@/views/business/comps/common/JcgjList";
import TemplateTable from '@/views/business/comps/template/TemplateTable';
export default {
name: "Blxjsh",
components: { TemplateTable, JcgjList },
data() {
return {
form: {},
open: false,
qmxxList: [],
totalQmxx: 0,
loadingQmxx: true,
queryParamsQmxx: {
formId: null,
pageNum: 1,
pageSize: 10
},
jcgjList: [],
jcgjTotal: 0,
queryParamsJcgj: {
pageNum: 1,
formId: null,
pageSize: 10,
},
openTitle: '',
openApprove: false,
formApprove: {},
rulesApprove: {
qmrmm: [{
required: true,
message: ' ',
trigger: 'blur'
}],
reason: [{
required: true,
message: ' ',
trigger: 'blur'
}],
}
}
},
computed: {
...mapGetters([
'nickName', 'name'
]),
},
created() {
},
methods: {
onFillFhCallback(data) {
console.log("data:" + JSON.stringify(data))
console.log("formdata:" + JSON.stringify(this.$refs.templateTable.getFilledFormData()))
if (data.type == 'checkbox') {
// {"type":"checkbox","fieldCheckObj":"{\"_methodCode\":{\"checked\":false}}"}
studyFormFill_updateZdgxjl(
{
id: this.form.id,
zdgxjl: data.fieldCheckObj
}
).then(response => {
})
}
else if (data.type == 'content') {
// {"type":"content","newRecord":{"userNameCn":"","userNameEn":"tf","key":"_versionNum","field":"-","title":"","time":"2026-01-14 20:23:30","content":"qweqe"},"resourceList":[{"userNameCn":"","userNameEn":"tf","key":"_versionNum","field":"-","title":"","time":"2026-01-14 20:23:30","content":"qweqe"},{"userNameCn":"","userNameEn":"tf","key":"_methodCode","field":"-","title":"","time":"2026-01-14 20:23:28","content":"qweqw"}]}
studyFormFill_updateFhyjjl(
{
id: this.form.id,
content: JSON.stringify(data.newRecord),
fhyjjl: JSON.stringify(data.resourceList)
}
).then(response => {
})
}
},
getJjcgjList(val) {
this.$modal.loading()
if(val){
this.queryParamsJcgj=_.merge({}, this.queryParamsJcgj, val)
}
studyFormFill_jcgj(this.queryParamsJcgj).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)
}).finally(() => {
this.$modal.closeLoading()
})
},
getQmxxList() {
this.loadingQmxx = true
studyFormFill_qmxx(this.queryParamsQmxx).then(response => {
this.qmxxList = response.rows
this.totalQmxx = response.total
this.loadingQmxx = false
})
},
cancel() {
this.$emit('close')
this.open = false
},
reset() {
this.form = {}
this.resetForm("form")
},
show(row) {
this.reset()
this.$modal.loading()
this.queryParamsJcgj.formId = row.id
this.queryParamsQmxx.formId = row.id
studyFormFill_info({ id: row.id }).then(response => {
this.form = response.data
this.getQmxxList()
this.getJjcgjList()
this.saveSimpleLog({ jcmc: '填报表单审核', jcmcEn: '病历学家审核', name: this.form.bdmc + '(' + this.form.bdbh + ')', nameEn: this.form.bdmc + '(' + this.form.bdbh + ')' })
this.open = true
}).finally(() => {
this.$modal.closeLoading()
})
},
async showApprove(qmyy) {
let content = await this.$refs.templateTable.getFormData()
if (content) {
this.openApprove = true
this.resetApprove()
this.formApprove.id = this.form.id
this.formApprove.bdnr = JSON.stringify(content)
this.formApprove.qmyy = qmyy
if (qmyy == '病理学家审核通过') {
this.openTitle = 'page.business.study.studyFormFill.blxjshtg'
this.formApprove.qmyyMc = this.$t('page.business.study.studyFormFill.blxjshtg')
} else if (qmyy == '病理学家审核拒绝') {
this.openTitle = 'page.business.study.studyFormFill.blxjshjj'
this.formApprove.qmyyMc = this.$t('page.business.study.studyFormFill.blxjshjj')
}
}
},
resetApprove() {
this.formApprove = {
id: null,
qmyy: '',
qmyyMc: '',
bdnr: '',
remark: '',
reason: '',
qmrmm: '',
}
this.resetForm("formApprove")
},
approve() {
this.$refs["formApprove"].validate(valid => {
if (valid) {
this.$modal.loading()
if (this.formApprove.qmyy == '病理学家审核通过') {
studyFormFill_blxjshtg(this.formApprove).then(response => {
this.openApprove = false
this.$emit('close')
this.open = false
}).finally(() => {
this.$modal.closeLoading()
})
} else if (this.formApprove.qmyy == '病理学家审核拒绝') {
this.formApprove.remark = this.formApprove.reason
studyFormFill_blxjshjj(this.formApprove).then(response => {
this.openApprove = false
this.$emit('close')
this.open = false
}).finally(() => {
this.$modal.closeLoading()
})
}
}
})
}
}
}
</script>

+ 48
- 38
src/views/business/study/comp/tbbdList.vue View File

@ -1,66 +1,49 @@
<template>
<div>
<div class="tbbd-list" v-show="!showDetail && !showEdit && !showAudit && !showFh">
<div class="tbbd-list" v-show="!showDetail && !showEdit && !showAudit && !showFh &&!showBlxjsh">
<div class="tbbd-search">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="110px">
<el-row>
<el-col :span="6">
<el-form :model="searchForm" ref="searchForm" :inline="true" >
<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" />
style="width: 150px" />
</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" />
style="width: 150px" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.gsr')" prop="userId">
<SelectDeptUser v-model="searchForm.userId" style="width: 200px" :name="searchForm.userMc" key="userId"
<SelectDeptUser v-model="searchForm.userId" style="width: 150px" :name="searchForm.userMc" key="userId"
@change="userChange" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item>
<div style="margin-left: 100px;">
<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>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<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" />
style="width: 150px" />
</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" style="width: 200px" />
</el-form-item>
</el-col>
<el-col :span="6">
<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" 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>
<el-select v-model="searchForm.sfbl" :placeholder="$t('form.placeholderSelect')" clearable style="width: 150px">
<el-option :label="$t('page.business.study.studyFormFill.yes')" value="是" />
<el-option :label="$t('page.business.study.studyFormFill.no')" value="否" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<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-form>
</div>
<div class="tbbd-content">
@ -114,7 +97,7 @@
<template v-if="searchForm.studyStatus < 5">
<!-- 编辑 -->
<el-button type="text"
v-if="(scope.row.bdzt === 1 || scope.row.bdzt === 5 || scope.row.bdzt === 7) && id == scope.row.userId"
v-if="(scope.row.bdzt === 1 || scope.row.bdzt === 5 || scope.row.bdzt === 7) && id == scope.row.userId&&((scope.row.blxjshzt != 3 && scope.row.showBlxjsh == 10)||scope.row.showBlxjsh==1)"
@click="edit(scope.row)" v-hasPermi="['business:studyFormFill:bj']">{{
$t('form.edit') }}</el-button>
<!-- 复核 -->
@ -136,17 +119,21 @@
@click="sy(scope.row)" v-hasPermi="['business:studyFormFill:sy']">{{
$t('page.business.study.studyFormFill.sy') }}</el-button>
<!-- 废止 -->
<el-button type="text" v-if="scope.row.bdzt === 1 && id == scope.row.userId" @click="fz(scope.row)"
<el-button type="text" v-if="scope.row.bdzt === 1 && id == scope.row.userId&&((scope.row.blxjshzt != 3 && scope.row.showBlxjsh == 10)||scope.row.showBlxjsh==1)" @click="fz(scope.row)"
v-hasPermi="['business:studyFormFill:fz']">{{
$t('page.business.study.studyFormFill.fz') }}</el-button>
<!-- 确认废止 -->
<el-button type="text" v-if="scope.row.bdzt === 9 && id == leader" @click="qrfz(scope.row)"
v-hasPermi="['business:studyFormFill:qrfz']">{{
$t('page.business.study.studyFormFill.qrfz') }}</el-button>
<!-- 观察 todo 观察按钮只在系统模板为细胞复苏记录表才展示) -->
<!-- 观察 -->
<el-button type="text" v-if="scope.row.bdzt === 1 && scope.row.showGc == 10" @click="gc(scope.row)"
v-hasPermi="['business:studyFormFill:gc']">{{
$t('page.business.study.studyFormFill.gc') }}</el-button>
<!-- 提交病理学家审核 -->
<el-button type="text" v-if="scope.row.blxjshzt === 3 && scope.row.showBlxjsh == 10" @click="blxjsh(scope.row)"
v-hasPermi="['business:studyFormFill:blxjsh']">{{
$t('page.business.study.studyFormFill.blxjsh') }}</el-button>
</template>
</template>
</el-table-column>
@ -164,6 +151,8 @@
<Sy v-show="showAudit" key="Sy" ref="Sy" @close="syClose" />
<!-- 复核 -->
<Fh v-show="showFh" key="Fh" ref="Fh" @close="fhClose" />
<!-- 病理学家审核 -->
<Blxjsh v-show="showBlxjsh" key="Blxjsh" ref="Blxjsh" @close="blxjshClose" />
<!-- 废止 -->
<Fz key="Fz" ref="Fz" @callback="search" />
<!-- 确认废止 -->
@ -192,6 +181,7 @@ import Qrfz from "./tbbd/Qrfz";
import Jq from "./tbbd/Jq";
import Ghgsr from "./tbbd/Ghgsr";
import Gc from "./tbbd/Gc";
import Blxjsh from "./tbbd/Blxjsh";
import SelectDeptUser from '@/views/business/comps/select/SelectDeptUser';
import SelectDeptUserDialog from '@/views/business/comps/select/SelectDeptUserDialog';
import { caesarCipher } from "@/utils/index";
@ -245,7 +235,7 @@ export default {
//
EventBus.$off('onRefreshStudyTbbdList');
},
components: { Ghgsr, Fh, Fz, Bj, Xq, Qrfz, Sy, Jq, Gc, SelectDeptUser, SelectDeptUserDialog },
components: { Ghgsr, Fh, Fz, Bj, Xq, Qrfz, Sy, Jq, Gc,Blxjsh, SelectDeptUser, SelectDeptUserDialog },
data() {
return {
isMatchSubject: false,
@ -253,6 +243,7 @@ export default {
leader: null,
showFh: false,
showAudit: false,
showBlxjsh: false,
showEdit: false,
showDetail: false,
daterangetj: [],
@ -386,7 +377,7 @@ export default {
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.searchForm.cjsjks = this.daterange[0]
this.searchForm.cjsjjs = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
this.searchForm.cjsjjs = moment(this.daterange[1]).add(1, 'days').format('YYYY-MM-DD');
} else {
this.searchForm.cjsjks = ''
this.searchForm.cjsjjs = ''
@ -492,6 +483,11 @@ export default {
this.$emit('showDetail', this.showFh)
this.search()
},
blxjshClose() {
this.showBlxjsh = false
this.$emit('showDetail', this.showBlxjsh)
this.search()
},
detail(row) {
this.showDetail = true
this.$emit('showDetail', this.showDetail)
@ -515,6 +511,20 @@ export default {
}).finally(() => {
this.$modal.closeLoading()
})
},
blxjsh(row) {
this.$modal.loading()
studyMethod_getReadAllMethodStatus({ userId: this.id, studyId: this.searchForm.studyId, studySubjectId: this.searchForm.studySubjectId }).then(response => {
if (response.data.toUrl) {
this.toRead(response.data)
} else {
this.showBlxjsh = true
this.$emit('showDetail', this.showBlxjsh)
this.$refs.Blxjsh.show(row)
}
}).finally(() => {
this.$modal.closeLoading()
})
},
}
}

+ 1
- 1
src/views/business/study/comp/wzlb/gyzjList.vue View File

@ -255,7 +255,7 @@ export default {
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.queryParams.startDate = this.daterange[0]
this.queryParams.endDate = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
this.queryParams.endDate = moment(this.daterange[1]).add(1, 'days').format('YYYY-MM-DD');
} else {
this.queryParams.startDate = ''
this.queryParams.endDate = ''

+ 1
- 1
src/views/business/study/comp/wzlb/mjyList.vue View File

@ -233,7 +233,7 @@ export default {
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.queryParams.startDate = this.daterange[0]
this.queryParams.endDate = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
this.queryParams.endDate = moment(this.daterange[1]).add(1, 'days').format('YYYY-MM-DD');
} else {
this.queryParams.startDate = ''
this.queryParams.endDate = ''

+ 2
- 1
src/views/business/study/comp/ytbd/Bj.vue View File

@ -65,7 +65,7 @@
</el-row>
</el-form>
</div>
<div class="content" v-if="showIndex == 2">
<div class="content" v-if="showIndex == 2&&templateData.templateId">
<TemplateTable ref="templateTable" emitName="onPreCallback" @onPreCallback="onPreCallback"
:sn="form.templateSn" :templateData="templateData" fillType="preFill" />
</div>
@ -212,6 +212,7 @@ export default {
{
id: this.form.id,
bdnr: JSON.stringify(this.$refs.templateTable.getFilledFormData()),
submittedCodes: data.submittedCodes ? JSON.stringify(data.submittedCodes) : ''
// zdxgjl: JSON.stringify(data.resourceList),
// filedValue: JSON.stringify(data.newRecord)
}

+ 9
- 25
src/views/business/study/comp/ytbdList.vue View File

@ -2,48 +2,32 @@
<div>
<div class="ytbd-list" v-show="!showDetail && !showEdit && !showAudit">
<div class="ytbd-search">
<el-form :model="searchForm" ref="searchForm" :inline="true" label-width="110px">
<el-row>
<el-col :span="6">
<el-form :model="searchForm" ref="searchForm" :inline="true" >
<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" />
style="width: 150px" />
</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" />
style="width: 150px" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('page.business.form.gsr')" prop="userId">
<SelectDeptUser v-model="searchForm.userId" :name="searchForm.userMc" key="userId"
@change="userChange" />
</el-form-item>
</el-col>
<el-col :span="6">
<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-row>
<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" />
style="width: 150px" />
</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" style="width: 200px" />
</el-form-item>
</el-col>
</el-row>
<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-form>
</div>
<div class="ytbd-content">
@ -430,7 +414,7 @@ export default {
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.searchForm.startDate = this.daterange[0]
this.searchForm.endDate = moment().add(this.daterange[1], 'days').format('YYYY-MM-DD');
this.searchForm.endDate = moment(this.daterange[1]).add(1, 'days').format('YYYY-MM-DD');
} else {
this.searchForm.startDate = ''
this.searchForm.endDate = ''

+ 12
- 0
src/views/business/template/list.vue View File

@ -138,6 +138,15 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="是否需要病理学家审核:" prop="showBlxjsh">
<el-select v-model="infoDialog.formData.showBlxjsh" :placeholder="$t('form.placeholderSelect')"
style="width:100%">
<el-option label="否" :value="1" />
<el-option label="是" :value="10" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="所属试验类型:" prop="studyType">
<el-select v-model="studyTypeArr" multiple @change="studyTypeChange"
@ -261,6 +270,9 @@ export default {
showGc: [
{ required: true, message: '请选择', trigger: "blur" }
],
showBlxjsh: [
{ required: true, message: '请选择', trigger: "blur" }
],
sn: [
{ required: true, message: '请输入', trigger: "blur" }
],

Loading…
Cancel
Save