Browse Source

Merge branch 'master' into zhangteng

luojie
ZHANGTENG\张腾 4 weeks ago
parent
commit
e445644a69
127 changed files with 3262 additions and 5516 deletions
  1. +19
    -0
      src/api/business/gsp/gsp.js
  2. +8
    -0
      src/api/business/gsp/gspFfjl.js
  3. +8
    -0
      src/api/business/gsp/gspRkjl.js
  4. +16
    -0
      src/api/business/storageLocation/storageLocation.js
  5. +27
    -0
      src/api/business/study/studyFormFill.js
  6. +31
    -3
      src/components/Template/BaseInfoFormPackage.vue
  7. +36
    -12
      src/components/Template/CustomTable.vue
  8. +51
    -22
      src/components/Template/HandleFormItem.vue
  9. +1
    -9
      src/components/Template/StepComponents/qxwdx/qxjz.vue
  10. +8
    -4
      src/components/Template/StepComponents/ry/jd.vue
  11. +56
    -24
      src/components/Template/mixins/formPackageMixins.js
  12. +88
    -0
      src/components/Template/mixins/operationMixins.js
  13. +40
    -16
      src/components/Template/operation/TableOpertaion.vue
  14. +12
    -16
      src/components/Template/operation/TableOpertaionDelete.vue
  15. +6
    -1
      src/lang/en/business/study/studyFormApply.js
  16. +4
    -0
      src/lang/en/business/study/studyFormFill.js
  17. +120
    -109
      src/lang/en/template/dl.js
  18. +3
    -0
      src/lang/en/template/gsp.js
  19. +5
    -1
      src/lang/zh/business/study/studyFormApply.js
  20. +5
    -1
      src/lang/zh/business/study/studyFormFill.js
  21. +103
    -101
      src/lang/zh/template/dl.js
  22. +3
    -0
      src/lang/zh/template/gsp.js
  23. +2
    -0
      src/layout/components/Sidebar/index.vue
  24. +7
    -9
      src/utils/calUnitTools.js
  25. +3
    -0
      src/utils/index.js
  26. +46
    -28
      src/utils/ruoyi.js
  27. +31
    -13
      src/views/business/comps/template/TemplateTable.vue
  28. +1
    -1
      src/views/business/comps/template/comps/dl/DL006.vue
  29. +3
    -12
      src/views/business/comps/template/comps/dl/DL007.vue
  30. +1
    -11
      src/views/business/comps/template/comps/dl/DL008.vue
  31. +3
    -13
      src/views/business/comps/template/comps/dl/DL009.vue
  32. +6
    -62
      src/views/business/comps/template/comps/dl/DL010.vue
  33. +99
    -53
      src/views/business/comps/template/comps/dl/DL011.vue
  34. +86
    -81
      src/views/business/comps/template/comps/dl/DL012.vue
  35. +1
    -16
      src/views/business/comps/template/comps/dl/DL013.vue
  36. +144
    -183
      src/views/business/comps/template/comps/dl/DL014.vue
  37. +5
    -40
      src/views/business/comps/template/comps/dl/DL015.vue
  38. +20
    -27
      src/views/business/comps/template/comps/dl/DL016.vue
  39. +0
    -12
      src/views/business/comps/template/comps/dl/DL017.vue
  40. +0
    -13
      src/views/business/comps/template/comps/dl/DL018.vue
  41. +0
    -13
      src/views/business/comps/template/comps/dl/DL019.vue
  42. +29
    -3
      src/views/business/comps/template/comps/dl/DL021.vue
  43. +126
    -43
      src/views/business/comps/template/comps/dl/DL022.vue
  44. +47
    -28
      src/views/business/comps/template/comps/dl/DL023.vue
  45. +6
    -27
      src/views/business/comps/template/comps/dl/DL024.vue
  46. +1
    -1
      src/views/business/comps/template/comps/gsp/DMYPPZJLB.vue
  47. +1
    -1
      src/views/business/comps/template/comps/gsp/GSP001.vue
  48. +1
    -1
      src/views/business/comps/template/comps/gsp/GSP003.vue
  49. +1
    -1
      src/views/business/comps/template/comps/gsp/GSP005.vue
  50. +1
    -1
      src/views/business/comps/template/comps/gsp/GSP009.vue
  51. +1
    -1
      src/views/business/comps/template/comps/gsp/GSP010.vue
  52. +54
    -9
      src/views/business/comps/template/comps/gsp/GSP015.vue
  53. +6
    -4
      src/views/business/comps/template/comps/gsp/MJYLQSQD.vue
  54. +1
    -1
      src/views/business/comps/template/comps/lba/LBA002.vue
  55. +2
    -2
      src/views/business/comps/template/comps/lba/LBA003.vue
  56. +2
    -2
      src/views/business/comps/template/comps/lba/LBA004.vue
  57. +0
    -1042
      src/views/business/comps/template/comps/lba/LBA005.vue
  58. +1
    -1
      src/views/business/comps/template/comps/lba/LBA006.vue
  59. +0
    -1042
      src/views/business/comps/template/comps/lba/LBA007.vue
  60. +2
    -2
      src/views/business/comps/template/comps/lba/LBA008.vue
  61. +0
    -586
      src/views/business/comps/template/comps/pcr/PCR002.vue
  62. +0
    -587
      src/views/business/comps/template/comps/pcr/PCR003.vue
  63. +0
    -587
      src/views/business/comps/template/comps/pcr/PCR004.vue
  64. +1
    -1
      src/views/business/comps/template/comps/pcr/PCR005.vue
  65. +1
    -1
      src/views/business/comps/template/comps/pcr/PCR008.vue
  66. +1
    -1
      src/views/business/comps/template/comps/pcr/PCR009.vue
  67. +1
    -1
      src/views/business/comps/template/comps/pcr/PCR010.vue
  68. +1
    -1
      src/views/business/comps/template/comps/pcr/PCR011.vue
  69. +1
    -1
      src/views/business/comps/template/comps/pcr/PCR012.vue
  70. +1
    -1
      src/views/business/comps/template/comps/sp/SP001.vue
  71. +4
    -2
      src/views/business/comps/template/comps/sp/SP003.vue
  72. +39
    -9
      src/views/business/comps/template/comps/sp/SP00456.vue
  73. +1
    -1
      src/views/business/comps/template/comps/sp/SP008.vue
  74. +1
    -1
      src/views/business/comps/template/comps/sp/SP009.vue
  75. +44
    -7
      src/views/business/comps/template/comps/sp/comps/LadderConfig.vue
  76. +3
    -1
      src/views/business/comps/template/comps/yp/YP002.vue
  77. +33
    -40
      src/views/business/comps/template/comps/yp/YP003.vue
  78. +1
    -1
      src/views/business/comps/template/comps/yp/YP004.vue
  79. +32
    -3
      src/views/business/comps/template/comps/yp/YP005.vue
  80. +30
    -12
      src/views/business/comps/template/formConfig/paralleAndLadderConfig.js
  81. +2
    -0
      src/views/business/comps/template/formConfig/sp/SP0019.js
  82. +73
    -23
      src/views/business/comps/template/mixins/templateMixin.js
  83. +97
    -31
      src/views/business/form/drug/comp/sqbdList.vue
  84. +54
    -61
      src/views/business/form/drug/comp/tbbdList.vue
  85. +29
    -46
      src/views/business/form/drug/comp/ytbdList.vue
  86. +11
    -1
      src/views/business/form/drug/list.vue
  87. +5
    -8
      src/views/business/form/nonTrial/comp/syffList.vue
  88. +57
    -73
      src/views/business/form/nonTrial/comp/tbbdList.vue
  89. +30
    -47
      src/views/business/form/nonTrial/comp/ytbdList.vue
  90. +11
    -1
      src/views/business/form/nonTrial/list.vue
  91. +45
    -14
      src/views/business/resource/gsp/comps/ffjlList.vue
  92. +188
    -0
      src/views/business/resource/gsp/comps/gsp/Cc.vue
  93. +3
    -2
      src/views/business/resource/gsp/comps/gsp/Ff.vue
  94. +237
    -0
      src/views/business/resource/gsp/comps/gsp/Xq copy.vue
  95. +2
    -2
      src/views/business/resource/gsp/comps/gsp/Xz.vue
  96. +30
    -31
      src/views/business/resource/gsp/comps/gsp/Ysff.vue
  97. +1
    -0
      src/views/business/resource/gsp/comps/gspList.vue
  98. +1
    -1
      src/views/business/resource/gsp/comps/rkjl/Xz.vue
  99. +40
    -29
      src/views/business/resource/gsp/comps/rkjlList.vue
  100. +1
    -1
      src/views/business/resource/gyzj/comps/gyzjList.vue

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

@ -218,4 +218,23 @@ export function exportDetail(query) {
method: 'get',
params: query
})
}
//存储
export function cc(data) {
return request({
url: '/system/business/gsp/cc',
method: 'post',
data: data
})
}
//取出
export function qc(data) {
return request({
url: '/system/business/gsp/qc',
method: 'post',
data: data
})
}

+ 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
})
}

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

@ -21,4 +21,20 @@ export function storageLocation_edit(data) {
method: 'post',
data: data
})
}
export function storageLocation_info(query) {
return request({
url: '/system/business/storageLocation/info',
method: 'get',
params: query
})
}
export function jcgj_list(query) {
return request({
url: '/system/business/storageLocation/jcgj/list',
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({

+ 31
- 3
src/components/Template/BaseInfoFormPackage.vue View File

@ -39,7 +39,10 @@
:field-key="prefixKey + '_' + sItem.otherCode" @blur="onBlur(key, $event)"
:item="getOtherItem(sItem)" v-model="formFields[sItem.otherCode]"
@copy="onCopy(sItem, key)" :error="errors[sItem.otherCode]"
@update:error="errors[sItem.otherCode] = false" />
@update:error="errors[sItem.otherCode] = false"
:orange-bg="orangeBgFields[sItem.otherCode]"
/>
</div>
</div>
@ -104,9 +107,11 @@
<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]"
:field-key="prefixKey + '_' + sItem.subKey"
@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]"
:field-key="prefixKey + '_' + sItem.thirdKey"
@clickButton="(e, val, data) => handleClickButton(e, sItem, val, data, sItem.thirdKey)" />
</div>
@ -198,6 +203,7 @@
<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)"
@ -208,6 +214,21 @@
: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"
@ -236,6 +257,7 @@
<div v-else-if="sItem.subType === 'button'">
<HandleFormItem class="ml-10" type="button" :item="getButtonItem(sItem)"
:value="formFields[sItem.subKey]"
:field-key="prefixKey + '_' + sItem.subKey"
@clickButton="(e, val, data) => handleClickButton(e, sItem, val, data, sItem.subKey)" />
</div>
@ -257,6 +279,7 @@
<div v-if="isShowSub(sItem,'thirdType')">
<HandleFormItem class="ml-10" v-if="sItem.thirdType === 'button'" type="button"
:item="getThirdButtonItem(sItem)" :value="formFields[sItem.thirdKey]"
:field-key="prefixKey + '_' + 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">
@ -305,6 +328,7 @@
:orange-bg="orangeBgFields[sItem.thirdKey]" />
<HandleFormItem class="ml-10" v-if="sItem.fourthType === 'button'" type="button"
:item="getFourthButtonItem(sItem)" :value="formFields[sItem.fourthKey]"
:field-key="prefixKey + '_' + sItem.fourthKey"
@clickButton="(e, val, data) => handleClickButton(e, sItem, val, data, sItem.fourthKey)" />
</div>
@ -429,12 +453,16 @@ export default {
},
//
getButtonItem(sItem) {
return {
const o = {
...sItem,
key: sItem.subKey,
disabled: sItem.subDisabled,
fillType: sItem.subFillType || sItem.fillType
};
if(sItem.hasOwnProperty("subDisabled")){
o.disabled = sItem.subDisabled;
}
return o;
},
//
getThirdButtonItem(sItem) {

+ 36
- 12
src/components/Template/CustomTable.vue View File

@ -98,6 +98,7 @@
@blur="onBlur(rowIndex, col.prop, $event)" @copy="onCopy(rowIndex, col)"
class="body-input" :item="getBodyItem(col, rowIndex)"
v-model="row[col.prop]"
:ref = "col.prop+rowIndex"
@change="onBodyValueChange(rowIndex, colIndex, $event, row, col.bodyType)"
:error="hasError(rowIndex, colIndex, col.prop)"
@update:error="onErrorUpdate(rowIndex, colIndex, col.prop, $event)"
@ -200,7 +201,7 @@
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.otherCode)" />
</div>
</div>
<div class="m-l-5" :class="{ 'flex1': col.bodySubType !== 'button' }"
<div class="m-l-5 flex" :class="{ 'flex1': col.bodySubType !== 'button' }"
v-if="isShowBodySub(col, row)">
<template
v-if="col.bodySubType === 'inputNumber' || col.bodySubType === 'input' || col.bodySubType === 'select'">
@ -208,6 +209,7 @@
:fieldItemLabel="fieldItemLabel" :type="col.bodySubType"
@blur="onSubBlur(rowIndex, col.bodySubKey, $event)"
@copy="onCopy(rowIndex, col)" :item="getBodySubItem(col)"
v-model="row[col.bodySubKey]"
@change="onBodySubValueChange(rowIndex, colIndex, $event, row, col.bodySubType)"
:error="hasError(rowIndex, colIndex, col.bodySubKey)"
@ -222,7 +224,7 @@
<template v-else-if="col.bodySubType === 'button'">
<HandleFormItem class="ml-10" type="button" :item="getBodyButtonItem(col, rowIndex)"
:value="row[col.bodySubKey]"
@clickButton="(e, data) => handleClickButton(e, data, col.bodySubKey, rowIndex, colIndex)" />
@clickButton="(e,val, data) => handleClickButton(e, data, col.bodySubKey, rowIndex, colIndex)" />
</template>
<div class="flex flex1" v-else-if="isRegent(col, 'bodySubType')">
<HandleFormItem :fieldKey="prefixKey + '_' + col.bodySubKey + '_' + row.id"
@ -235,6 +237,11 @@
@update:error="onErrorUpdate(rowIndex, colIndex, col.bodySubKey, $event)"
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.bodySubKey)" />
</div>
<template v-if="col.bodyThirdType === 'button'">
<HandleFormItem class="ml-10" type="button" :item="getBodyThirdButtonItem(col, rowIndex)"
:value="row[col.bodyThirdKey]"
@clickButton="(e,val, data) => handleClickButton(e, data, col.bodyThirdKey, rowIndex, colIndex)" />
</template>
</div>
</div>
</div>
@ -456,7 +463,7 @@ export default {
isValid = value && value.some(tag => tag.checked === true);
} else if (this.templateFillType === "preFill") {
// preFilltagValue
isValid = value && value.every(tag => tag.tagValue && tag.tagValue.trim() !== '');
isValid = value && value.every(tag => tag.tagValue && (tag.tagValue+'').trim() !== '');
}
this.onErrorUpdate(rowIndex, colIndex, col.prop, !isValid);
this.$emit("onCheckboxTagChange", rowIndex, col, value)
@ -496,7 +503,7 @@ export default {
},
//
getOperationColumns() {
return { columnsData: this.columns, headerSelectFields: this.headerSelectFields }
return { columnsData: this.columns, headerSelectFields: this.headerSelectFields,fieldItemLabel: this.fieldItemLabel }
},
//
getOtherItem(sItem) {
@ -518,7 +525,6 @@ export default {
},
//
handleClickable(col, rowIndex, colIndex, row) {
console.log("clickable", rowIndex, colIndex, col, row)
if (this.templateFillType !== 'actFill') {
return
}
@ -532,7 +538,6 @@ export default {
},
onHeaderRegentSubmit(data, inputValue, colIndex, headerIndex) {
this.headerFields[`${colIndex}_${headerIndex}`] = inputValue;
console.log("onHeaderRegentSubmit", data, inputValue, colIndex, headerIndex, this.headerFields)
this.$emit("onHeaderRegentSubmit", { selectInfo: data, headerIndex, colIndex, headerFields: this.headerFields })
},
@ -670,7 +675,7 @@ export default {
}
} else if (this.templateFillType === "preFill") {
// preFilltagValue
const allTagValuesFilled = mainValue && mainValue.every(tag => tag.tagValue && tag.tagValue.trim() !== '');
const allTagValuesFilled = mainValue && mainValue.every(tag => tag.tagValue && (tag.tagValue+'').trim() !== '');
if (!allTagValuesFilled && !col.bodyDisabled) {
const errorItem = {
rowIndex,
@ -800,7 +805,7 @@ export default {
const compareToValue = this.localDataSource[rowIndex][col.compareTo];
// compareTo
if (value !== compareToValue) {
if (!isEqual(value, compareToValue)) {
this.setOrangeBg(rowIndex, colIndex, colKey, true);
} else {
//
@ -933,7 +938,7 @@ export default {
item.checkboxLabel = this.$t(col.checkboxLabel);
}
if (col.bodyType === "operableInput" ) {
if(currentItem.isComplete){
if(currentItem.isComplete || this.templateFillType !== 'actFill'){
item.disabled = true;
}else{
item.disabled = false;
@ -955,6 +960,13 @@ export default {
type: "button",
}
},
getBodyThirdButtonItem(col, rowIndex) {
return {
buttonName: col.bodyThirdButtonName,
fillType: col.bodyThirdFillType,
type: "button",
}
},
getBodySubItem(col) {
const item = {
fillType: col.bodySubFillType,
@ -1005,12 +1017,23 @@ export default {
this.checkCompareToOnDataLoad();
},
// autoUpdateRecord
updateDataSourceByRowIndex(rowIndex, data) {
updateDataSourceByRowIndex(rowIndex, data,updateFieldsInfo={}) {
const {signData,updateFields = []} = updateFieldsInfo;
this.oldLocalDataSource = JSON.parse(JSON.stringify(this.localDataSource));
this.localDataSource[rowIndex] = { ...this.localDataSource[rowIndex], ...data };
this.localDataSource = [...this.localDataSource];
console.log(signData,"signData")
if(signData && signData.remark){
updateFields.map((key)=>{
const ref = this.$refs[key+rowIndex];
if(ref){
ref[0].handleUpdateRecord(signData, { oldValue: this.oldLocalDataSource[rowIndex][key], inputValue: data[key] });
}
})
}
this.checkCompareToOnDataLoad();
justUpdateFilledFormData();
// justUpdateFilledFormData();
},
pushDataSource(data=[]) {
this.localDataSource.push(...data);
@ -1060,7 +1083,7 @@ export default {
},
onAddRow() {
if (this.$listeners && this.$listeners['onAddRow']) {
this.$emit('onAddRow');
this.$emit('onAddRow',{dataSource:this.localDataSource});
return;
}
this.addRow({
@ -1069,6 +1092,7 @@ export default {
targetDiluentVolumePrecision: 3,//3
targetStartSolutionVolumePrecision: 3,//3
id:getuuid(),
rowIndex:this.localDataSource.length,
});
justUpdateFilledFormData()
},

+ 51
- 22
src/components/Template/HandleFormItem.vue View File

@ -6,6 +6,7 @@
<el-input
v-if="type === 'input'" :maxlength="item.maxlength || 50" :disabled="getDisabled()"
:class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '')" @blur="onBlur"
type = "textarea" :autosize="{ minRows: 1, maxRows: 6 }" resize = "none"
:placeholder="getPlaceholder()" v-model="inputValue" @input="onInputChange" @change="onInputChange" />
<el-input v-else-if="type === 'textarea'" :maxlength="item.maxlength || 1000" :disabled="getDisabled()"
:class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '')" type="textarea" show-word-limit
@ -19,7 +20,7 @@
<el-select v-else-if="type === 'select'" class="flex1" :multiple="item.multiple"
:class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '')" v-model="inputValue"
:disabled="getDisabled()" :placeholder="getPlaceholder()" @remove-tag="onRemoveTag"
:remote = "true"
:remote = "item.selectRemote || false"
:remote-method="remoteMethod"
@visible-change="onSelectBlur" @change="onInputChange" filterable>
<el-option v-for="op in item.options" :key="op.value" :label="op.label" :value="op.value">
@ -111,6 +112,7 @@
<template v-else-if="type === 'attachment'">
<el-upload ref="uploadRef" class="upload-demo" :action="uploadFileUrl" :on-preview="handlePreview"
:headers="headers" :before-remove="beforeRemove" :on-remove="handleRemove" multiple :limit="10"
:disabled="getDisabled()"
:on-success="handleSuccess" :on-change="handleChange" :on-exceed="handleExceed"
:file-list="fileList" :auto-upload="false">
<el-button :disabled="getDisabled()" :class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '')"
@ -205,7 +207,7 @@
</div>
<div>
<div v-if="record.content">复核意见{{ record.content }}</div>
<div v-if="record.reply">回复意见{{ record.reply }}</div>
<div v-if="record.reply">意见回复{{ record.reply }}</div>
</div>
</div>
<hr v-if="index < modificationRecords.length - 1">
@ -213,7 +215,7 @@
</div>
</div>
</div>
<el-dialog :close-on-click-modal="false" append-to-body :title="templateFillType == 'actFill' ? '回复意见' : '复核意见'"
<el-dialog :close-on-click-modal="false" append-to-body :title="(templateFillType == 'actFill' || templateFillType == 'blxjsh') ? '意见回复' : '复核意见'"
:visible.sync="visible" width="30%">
<el-input v-model="replyContent" type="textarea" show-word-limit resize="none" rows="8" placeholder="输入内容"
maxlength="500" />
@ -235,7 +237,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,
@ -404,7 +406,6 @@ export default {
},
methods: {
remoteMethod(query) {
console.log(query,"qqq")
this.$emit('remoteMethod', query);
},
handleFalse() {
@ -744,6 +745,7 @@ export default {
const filterType = ["attachment", "checkboxTag", "fqyq", "checkboxTree","radio"]
const typeObj = {
actFill: "orange-border",//
blxjsh: "orange-border",//
green: "green-border",
preFill: "blue-border",//
}
@ -765,10 +767,10 @@ export default {
const baseInfo = this.getCommonRecordInfo();
const record = {
...baseInfo,
title: this.templateFillType == 'actFill' ? "回复意见" : "复核意见",
title: (this.templateFillType == 'actFill' || this.templateFillType == 'blxjsh') ? "意见回复" : "复核意见",
time: moment().format("YYYY-MM-DD HH:mm:ss"),
}
if (this.templateFillType == 'actFill') {
if (this.templateFillType == 'actFill' || this.templateFillType == 'blxjsh') {
record.reply = this.replyContent;
const deepList = deepClone(this.getFhyjjl());//
const item = deepList.find(o => o.key == record.key);
@ -798,7 +800,7 @@ export default {
}
const params = {
//reply:content:
type: this.templateFillType == 'actFill' ? "reply" : "content",
type: (this.templateFillType == 'actFill' || this.templateFillType == 'blxjsh') ? "reply" : "content",
newRecord: [record],
resourceList: this.getFhyjjl(),
}
@ -815,7 +817,7 @@ export default {
const records = this.getReplyRecords();
if (records.length > 0) {
const o = records[0];
if (o.reply && o.content) {//
if (o.reply && o.content) {//
return "green"
} else if (o.content && !o.reply) {//
return "orange"
@ -1066,7 +1068,7 @@ export default {
// question
onClickQuestion() {
const { templateFillType } = this;
if (templateFillType == 'actFill' || templateFillType == 'qc') {
if (templateFillType == 'actFill' || templateFillType == 'qc' || templateFillType == 'blxjsh') {
if (templateFillType == 'qc') {
const field = this.getFieldCheckObj()[this.fieldKey];
if (field && field.checked) {
@ -1083,7 +1085,7 @@ export default {
const o = records[0];
if (!o.reply && templateFillType == 'qc') {//qc
content = o.content;
} else if (templateFillType == 'actFill') {//qc
} else if (templateFillType == 'actFill' || templateFillType == 'blxjsh') {//qc
content = o.reply;
}
}
@ -1096,9 +1098,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 +1112,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 +1171,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,22 +1184,22 @@ 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) {
return;
}
if (!isOldValueEmpty && !(isSame) && this.templateFillType === "actFill") {
if (!isOldValueEmpty && !(isSame) && (this.templateFillType === "actFill" || this.templateFillType === "blxjsh")&&this.type !== "attachment") {
// EventBus
EventBus.$emit('showEditSignDialog', { uuid: this.uuid });
} else {//
@ -1200,6 +1207,13 @@ export default {
}
},
//
isUnSubmitted(key){
const finallyKey = key || this.fieldKey;
const has = this.getSubmittedCodes().includes(finallyKey)
return !has;
},
//退
resetRecord() {
//
@ -1232,6 +1246,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 +1263,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 +1275,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 || '')}`;
@ -1266,12 +1285,18 @@ export default {
recordOldVlaue = `${this.item.checkboxLabel || ""}:${this.oldValue?'勾选':'未勾选'}`;
recordValue = `${this.item.checkboxLabel||""}:${this.inputValue?'勾选':'未勾选'}`;
isModify = this.oldValue !== '';
}else if(this.type === "attachment"){
const attList = JSON.parse(recordValue);
const oldAttList = JSON.parse(recordOldVlaue || "[]");
recordValue = attList.map(item => item.name).join(";");
recordOldVlaue = oldAttList.map(item => item.name).join(";");
}
const record = {
...baseInfo,
oldValue: recordOldVlaue,
value: recordValue,
title: isModify ? "修改" : "提交",
title: !this.isUnSubmitted(finallyKey) ? "修改" : "提交",
time: moment().format("YYYY-MM-DD HH:mm:ss"),
}
if (data) {
@ -1281,6 +1306,7 @@ export default {
const params = {
type: "fieldChanged",
newRecord: [record],
submittedCodes: this.getSubmittedCodes(),
resourceList: this.getZdxgjl(),
}
@ -1318,8 +1344,9 @@ export default {
return;
}
if (this.templateFillType === "actFill") {//
if (this.templateFillType === "actFill" || this.templateFillType === "blxjsh") {//
this.updateZdxgjl(record);
this.updateSubmittedCodes(finallyKey);
}
this.$nextTick(() => {
EventBus.$emit('onModifyRecord', params,)
@ -1379,7 +1406,7 @@ export default {
isShowHandle() {
const { fillType } = this.item;
//
return this.templateFillType !== "preFill" && fillType === "actFill" && this.type !== "button"
return this.templateFillType !== "preFill" && (fillType === "actFill" || fillType === "blxjsh") && this.type !== "button"
},
//
getDisabled() {
@ -1392,7 +1419,9 @@ export default {
return this.templateFillType !== "actFill"
} else if (fillType === "preFill") {//fillTypepreFill
return this.templateFillType !== "preFill"
} else {
} else if (fillType === "blxjsh") {//fillTypeblxjsh
return this.templateFillType !== "blxjsh"
}else {
return true
}
}

+ 1
- 9
src/components/Template/StepComponents/qxwdx/qxjz.vue View File

@ -66,7 +66,7 @@ export default {
compareTo: "yjhj",
},
text6: {
label: this.sn==='qxqy'?"条件下暂存":"条件下静置,即稳定性",
label: this.sn==='qxqy'?"条件下暂存,作为":"条件下静置,即稳定性",
type: "text",
},
}
@ -93,14 +93,6 @@ export default {
fillType: "actFill",
otherCode: "ccwzOther",
}
config[0].config.text8 = {
type: "text",
label: "作为",
}
config[0].config.yp = {
type: "input",
fillType: "actFill",
}
config[0].config.text9 = {
type: "text",
label: "样品。",

+ 8
- 4
src/components/Template/StepComponents/ry/jd.vue View File

@ -51,7 +51,8 @@ export default {
},
yjwd: {
type: "select",
options: this.getDictOptions("business_wddw"),
options: this.getDictOptions("business_cctj"),
multiple: true,
fillType: "preFill",
otherCode: "yjwdOther",
},
@ -67,7 +68,8 @@ export default {
},
sjwd: {
type: "select",
options: this.getDictOptions("business_wddw"),
options: this.getDictOptions("business_cctj"),
multiple: true,
fillType: "actFill",
otherCode: "sjwdOther",
compareTo: "yjwd",
@ -162,7 +164,8 @@ export default {
},
yjwd: {
type: "select",
options: this.getDictOptions("business_wddw"),
options: this.getDictOptions("business_cctj"),
multiple: true,
fillType: "preFill",
otherCode: "yjwdOther",
},
@ -178,7 +181,8 @@ export default {
},
sjwd: {
type: "select",
options: this.getDictOptions("business_wddw"),
options: this.getDictOptions("business_cctj"),
multiple: true,
fillType: "actFill",
otherCode: "sjwdOther",
compareTo: "yjwd",

+ 56
- 24
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) {
@ -250,7 +260,7 @@ export default {
}
config[subKey] = { label: currentConfig.label, subKey, type: currentConfig.subType, fillType: currentConfig.subFillType || currentConfig.fillType, selectTo: currentConfig.selectTo }
}
if(currentConfig.thirdKey){
if (currentConfig.thirdKey) {
const { thirdKey } = currentConfig;
if (update) {
result[thirdKey] = formFields[thirdKey] || formData[thirdKey] || '';
@ -259,7 +269,7 @@ export default {
}
config[thirdKey] = { label: currentConfig.label, thirdKey, type: currentConfig.thirdType, fillType: currentConfig.thirdFillType, selectTo: currentConfig.selectTo }
}
if(currentConfig.fourthKey){
if (currentConfig.fourthKey) {
const { fourthKey } = currentConfig;
if (update) {
result[fourthKey] = formFields[fourthKey] || formData[fourthKey] || '';
@ -283,12 +293,21 @@ export default {
this.compareFieldsIsEqual(currentValue, compareToValue, currentConfig.subKey)
}
if (currentConfig.otherCodeCompareTo && formData[currentConfig.otherCodeCompareTo] && result[currentConfig.otherCode]) {
const compareToValue = formData[currentConfig.otherCodeCompareTo];
const currentValue = result[currentConfig.otherCode];
this.compareFieldsIsEqual(currentValue, compareToValue, currentConfig.otherCode)
}
});
// 处理可能存在的直接otherCode字段
if (item.config?.otherCode) {
config[item.config?.otherCode] = item.config?.otherCode;
}
if (item.config?.thirdOtherCode) {
config[item.config?.thirdOtherCode] = item.config?.thirdOtherCode;
}
}
});
// 处理selectInfo_开头的字段,步骤表单需要保留selectInfo_开头的字段
@ -337,24 +356,24 @@ export default {
const o = allFieldsConfig[key];
if (o.otherCode) {//
if (o.type === "select") {
const isSelectedOther = this.isShowOther(formFields[key],o);
const isSelectedOther = this.isShowOther(formFields[key], o);
if (!isSelectedOther) {//如果其他选项没有被选择,清空其他字段
formFields[o.otherCode] = "";
}
} else if (o.subType === "select") {
const isSelectedOther = this.isShowOther(formFields[o.subKey],o);
const isSelectedOther = this.isShowOther(formFields[o.subKey], o);
if (!isSelectedOther) {//如果其他选项没有被选择,清空其他字段
formFields[o.otherCode] = "";
}
} else if (o.type === "radioAndOther") {
const isSelectedOther = this.isShowOtherByRadioAndOther(formFields[key],o);
const isSelectedOther = this.isShowOtherByRadioAndOther(formFields[key], o);
if (!isSelectedOther) {//如果其他选项没有被选择,清空其他字段
formFields[o.otherCode] = "";
}
}
}
if (o.type === "attachment"&&o.fillType === this.templateFillType) {
if (o.type === "attachment" && o.fillType === this.templateFillType) {
const attValue = formFields[key];
if (!attValue || attValue == "[]") {
errors.push({
@ -364,9 +383,9 @@ export default {
});
this.$set(this.errors, key, true);
}
} else if (o.type === "fqyq" &&o.fillType === this.templateFillType) {
} else if (o.type === "fqyq" && o.fillType === this.templateFillType) {
const fqyqValue = formFields[key] || {};
const {mainRadio, subRadio,inputValue} = fqyqValue;
const { mainRadio, subRadio, inputValue } = fqyqValue;
if (!mainRadio) {
errors.push({
field: key,
@ -375,7 +394,7 @@ export default {
});
this.$set(this.errors, key, true);
} else {
if (mainRadio==="是") {
if (mainRadio === "是") {
if (!subRadio) {
errors.push({
field: key,
@ -383,7 +402,7 @@ export default {
error: "请选择是否在规定时间完成"
});
this.$set(this.errors, key, true);
}else if(!inputValue){
} else if (!inputValue) {
errors.push({
field: key,
label: o.label,
@ -395,10 +414,10 @@ export default {
}
continue
}else if(o.type === "checkboxTree"&&o.fillType === this.templateFillType){
} else if (o.type === "checkboxTree" && o.fillType === this.templateFillType) {
const checkboxTreeValue = formFields[key] || {};
const {checkedValues=[],otherValues = {}} = checkboxTreeValue;;
const {options = []} = o;
const { checkedValues = [], otherValues = {} } = checkboxTreeValue;;
const { options = [] } = o;
//需要校验第一层是否有选中项
const parentOptions = options.map(item => item.label);
const isChecked = checkedValues.some(option => {
@ -407,9 +426,9 @@ export default {
//获取所有选中的选项
const allCheckedOptions = checkedValues.filter(item => item.checked).map(item => item.label);
//再筛选出需要显示其他输入框的选项
const otherOptions = allCheckedOptions.filter((label)=>isShowOtherByCheckboxTree(label))
const otherOptions = allCheckedOptions.filter((label) => isShowOtherByCheckboxTree(label))
const isHasOtherInfo = otherOptions.every(item => otherValues[item]);
console.log(isChecked,isHasOtherInfo,"isChecked")
console.log(isChecked, isHasOtherInfo, "isChecked")
if (!isChecked || !isHasOtherInfo) {
errors.push({
field: key,
@ -419,12 +438,12 @@ export default {
this.$set(this.errors, key, true);
}
continue
}else if(o.type === "radioAndOther"&&o.fillType === this.templateFillType){
} else if (o.type === "radioAndOther" && o.fillType === this.templateFillType) {
const radioValue = formFields[key] || {};
const {otherCode} = o;
const { otherCode } = o;
const otherValue = formFields[otherCode] || "";
const isShow = this.isShowOtherByRadioAndOther(radioValue,o)
if(isShow&&!otherValue){
const isShow = this.isShowOtherByRadioAndOther(radioValue, o)
if (isShow && !otherValue) {
errors.push({
field: key,
label: o.label,
@ -447,7 +466,7 @@ export default {
if (o.label === "template.common.other" && !this.isShowOther(formFields[o.parentKey])) {
continue
}
//span的字段不校验
if (o.type === "span" || o.type === "text" || o.type === "button") {
continue
@ -519,10 +538,23 @@ export default {
onValueChangeCompareTo(key, val, compKey) {
// compareTo 功能:当fillType==="actFill"时,判断当前值是否与compareTo字段的值一样,如果不一样则将当前input框的背景色标记成橙色
const currentFieldConfig = this.allFieldsConfig[key];
if (currentFieldConfig && currentFieldConfig.fillType === "actFill" && (currentFieldConfig.compareTo || compKey)) {
const compareToKey = compKey || currentFieldConfig.compareTo;
const compareToValue = this.formFields[compareToKey];
this.compareFieldsIsEqual(val, compareToValue, key);
if (currentFieldConfig && currentFieldConfig.fillType === "actFill") {
if ((currentFieldConfig.compareTo || compKey)) {
const compareToKey = compKey || currentFieldConfig.compareTo;
const compareToValue = this.formFields[compareToKey];
this.compareFieldsIsEqual(val, compareToValue, key);
}
if (currentFieldConfig.otherCodeCompareTo && this.formFields[currentFieldConfig.otherCodeCompareTo] && this.formFields[currentFieldConfig.otherCode]) {
const compareToValue = this.formFields[currentFieldConfig.otherCodeCompareTo];
const currentValue = this.formFields[currentFieldConfig.otherCode];
this.compareFieldsIsEqual(currentValue, compareToValue, currentFieldConfig.otherCode)
}
if(currentFieldConfig.subCompareTo && this.formFields[currentFieldConfig.subCompareTo] && this.formFields[currentFieldConfig.subKey]){
const compareToValue = this.formFields[currentFieldConfig.subCompareTo];
const currentValue = this.formFields[currentFieldConfig.subKey];
this.compareFieldsIsEqual(currentValue, compareToValue, currentFieldConfig.subKey)
}
}
},
onAttachmentChange(key, val) {

+ 88
- 0
src/components/Template/mixins/operationMixins.js View File

@ -0,0 +1,88 @@
import { EventBus } from "@/utils/eventBus";
import { getuuid } from "@/utils/index";
import moment from "moment";
export default {
inject: ["templateFillType"],
data() {
return {
uuid: getuuid(),
deleteIndex: 0,
}
},
mounted() {
EventBus.$on('onEditSignCallback', this.handleEditSignCallback);
},
unmounted() {
EventBus.$off('onEditSignCallback', this.handleEditSignCallback);
},
methods: {
handleEditSignCallback(data) {
if (data.uuid === this.uuid) {
console.log(this.columns, this.templateFillType, data, "this.columns")
const { qmrMc, qmrMcEn, remark } = data.data;
const { fieldItemLabel, columnsData } = this.columns;
const { row } = this;
const desArr = columnsData.map((item) => {
const label = this.$t(item.label), otherValue = "", subValue = "", mainValue = row[item.prop];
if (item.bodySubKey && (item.bodySubType !== "button")) {
subValue = row[item.bodySubKey];
}
if (item.otherCode) {
otherValue = row[item.otherCode];
}
const desStr = `${label}:${mainValue}${subValue ? `[${subValue}]` : ''}${otherValue ? `[${otherValue}]` : ''}`;
return desStr;
});
const record = [
{
"userNameCn": qmrMc,
"userNameEn": qmrMcEn,
"fieldCn": this.$t(fieldItemLabel, 'zh_CN'),
"fieldEn": this.$t(fieldItemLabel, 'en_US'),
"oldValue": desArr.join(";"),
"value": "",
"title": "修改",
"time": moment().format("YYYY-MM-DD HH:mm:ss"),
"reason": remark
}
]
this.sureDelete(record);
}
},
sureDelete(record) {
this.$emit("deleteRow", this.deleteIndex);
setTimeout(() => {
const params = {
type: "fieldChanged",
newRecord: record || null,
resourceList: null,
}
EventBus.$emit('onModifyRecord', params,)
}, 30);
},
// 删除行
deleteRow(index) {
const { columnsData } = this.columns;
const { row } = this;
const filledRowData = {};
columnsData.map((item) => {
filledRowData[item.prop] = row[item.prop];
if (item.bodySubKey && (item.bodySubType !== "button")) {
filledRowData[item.bodySubKey] = row[item.bodySubKey];
}
if (item.otherCode) {
filledRowData[item.otherCode] = row[item.otherCode];
}
})
const isFilled = Object.values(filledRowData).every((item) => !!item);
this.deleteIndex = index;
if (this.templateFillType === "actFill" && isFilled) {
EventBus.$emit('showEditSignDialog', { uuid: this.uuid });
} else {
this.sureDelete();
}
}
},
}

+ 40
- 16
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>
@ -20,9 +20,10 @@
import { EventBus } from "@/utils/eventBus";
import { addTj } from "@/utils/calUnitTools";
import {getuuid} from "@/utils/index"
import operationMixins from "../mixins/operationMixins";
export default {
name: "TableOpertaion",
mixins: [operationMixins],
props: {
row: {
type: Object,
@ -40,6 +41,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 +113,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;
@ -159,17 +183,17 @@ export default {
}
},
//
deleteRow(index) {
this.$emit("deleteRow", index);
setTimeout(() => {
const params = {
type: "fieldChanged",
newRecord: null,
resourceList: null,
}
EventBus.$emit('onModifyRecord', params,)
}, 30);
}
// deleteRow(index) {
// this.$emit("deleteRow", index);
// setTimeout(() => {
// const params = {
// type: "fieldChanged",
// newRecord: null,
// resourceList: null,
// }
// EventBus.$emit('onModifyRecord', params,)
// }, 30);
// }
}
}
</script>

+ 12
- 16
src/components/Template/operation/TableOpertaionDelete.vue View File

@ -2,7 +2,7 @@
<div>
<el-popconfirm confirm-button-text='确认' cancel-button-text='取消' icon="el-icon-info" icon-color="red"
title="确认删除当前数据?" @confirm="deleteRow(rowIndex)">
<el-button slot="reference" type="text" size="small" class="delete-button">
<el-button slot="reference" type="text" size="small" class="delete-button">
删除
</el-button>
</el-popconfirm>
@ -10,10 +10,12 @@
</template>
<script>
import { EventBus } from "@/utils/eventBus";
import operationMixins from "../mixins/operationMixins";
export default {
name: "TableOpertaionDelete",
mixins: [operationMixins],
props: {
row: {
type: Object,
@ -22,27 +24,21 @@ export default {
rowIndex: {
type: Number,
default: 0,
},
columns: {
type: Object,
default: () => { },
}
},
methods: {
//
deleteRow(index) {
this.$emit("deleteRow", index);
setTimeout(() => {
const params = {
type: "fieldChanged",
newRecord: null,
resourceList: null,
}
EventBus.$emit('onModifyRecord', params,)
}, 30);
}
}
}
</script>
<style lang="scss" scoped>
.delete-button{
color: red;
.delete-button {
color: red;
}
</style>

+ 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',

+ 120
- 109
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,
@ -236,151 +247,151 @@ export default {
hyqqtqk: 'Other Conditions Before Medium Change',
qqpyy: 'Discard Culture Medium',
pbsxd: 'PBS Wash',
pyybrl: 'Culture Medium Volume Added (ul)'
pyybrl: 'Culture Medium Volume Added'
},
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: '申请废止',

+ 103
- 101
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: '结果信息还未填写,请填写后再提交'
@ -239,150 +241,150 @@ export default {
hyqqtqk: '换液前其他情况',
qqpyy: '倾去培养液',
pbsxd: 'PBS洗涤',
pyybrl: '培养液补入量(ul)'
pyybrl: '培养液补入量'
},
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: '样品编号',

+ 2
- 0
src/layout/components/Sidebar/index.vue View File

@ -14,6 +14,8 @@
backgroundSize: 'cover',
backgroundRepeat: 'no-repeat',
backgroundPosition: 'center',
overflowY: 'auto',
overflowX: 'hidden',
height: 'calc(100vh - 100px)'
}"
mode="vertical"

+ 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])
}
}

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

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

+ 46
- 28
src/utils/ruoyi.js View File

@ -13,12 +13,15 @@ export function parseTime(time, pattern) {
if (typeof time === 'object') {
date = time
} else {
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
if (typeof time === 'string' && /^[0-9]+$/.test(time)) {
time = parseInt(time)
} else if (typeof time === 'string') {
time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '')
time = time
.replace(new RegExp(/-/gm), '/')
.replace('T', ' ')
.replace(new RegExp(/\.[\d]{3}/gm), '')
}
if ((typeof time === 'number') && (time.toString().length === 10)) {
if (typeof time === 'number' && time.toString().length === 10) {
time = time * 1000
}
date = new Date(time)
@ -35,7 +38,9 @@ export function parseTime(time, pattern) {
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key]
// Note: getDay() returns 0 on Sunday
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
if (key === 'a') {
return ['日', '一', '二', '三', '四', '五', '六'][value]
}
if (result.length > 0 && value < 10) {
value = '0' + value
}
@ -46,17 +51,24 @@ export function parseTime(time, pattern) {
// 表单重置
export function resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields()
}
setTimeout(() => {
if (this.$refs[refName]) {
this.$refs[refName].resetFields()
}
}, 100)
}
// 添加日期范围
export function addDateRange(params, dateRange, propName) {
let search = params
search.params = typeof (search.params) === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {}
search.params =
typeof search.params === 'object' &&
search.params !== null &&
!Array.isArray(search.params)
? search.params
: {}
dateRange = Array.isArray(dateRange) ? dateRange : []
if (typeof (propName) === 'undefined') {
if (typeof propName === 'undefined') {
search.params['beginTime'] = dateRange[0]
search.params['endTime'] = dateRange[1]
} else {
@ -69,11 +81,11 @@ export function addDateRange(params, dateRange, propName) {
// 回显数据字典
export function selectDictLabel(datas, value) {
if (value === undefined) {
return ""
return ''
}
var actions = []
Object.keys(datas).some((key) => {
if (datas[key].value == ('' + value)) {
if (datas[key].value == '' + value) {
actions.push(datas[key].label)
return true
}
@ -86,19 +98,19 @@ export function selectDictLabel(datas, value) {
// 回显数据字典(字符串、数组)
export function selectDictLabels(datas, value, separator) {
if (value === undefined || value.length ===0) {
return ""
if (value === undefined || value.length === 0) {
return ''
}
if (Array.isArray(value)) {
value = value.join(",")
value = value.join(',')
}
var actions = []
var currentSeparator = undefined === separator ? "," : separator
var currentSeparator = undefined === separator ? ',' : separator
var temp = value.split(currentSeparator)
Object.keys(value.split(currentSeparator)).some((val) => {
var match = false
Object.keys(datas).some((key) => {
if (datas[key].value == ('' + temp[val])) {
if (datas[key].value == '' + temp[val]) {
actions.push(datas[key].label + currentSeparator)
match = true
}
@ -112,7 +124,9 @@ export function selectDictLabels(datas, value, separator) {
// 字符串格式化(%s )
export function sprintf(str) {
var args = arguments, flag = true, i = 1
var args = arguments,
flag = true,
i = 1
str = str.replace(/%s/g, function () {
var arg = args[i++]
if (typeof arg === 'undefined') {
@ -126,8 +140,8 @@ export function sprintf(str) {
// 转换字符串,undefined,null等转化为""
export function parseStrEmpty(str) {
if (!str || str == "undefined" || str == "null") {
return ""
if (!str || str == 'undefined' || str == 'null') {
return ''
}
return str
}
@ -185,25 +199,29 @@ export function handleTree(data, id, parentId, children) {
}
/**
* 参数处理
* @param {*} params 参数
*/
* 参数处理
* @param {*} params 参数
*/
export function tansParams(params) {
let result = ''
for (const propName of Object.keys(params)) {
const value = params[propName]
var part = encodeURIComponent(propName) + "="
if (value !== null && value !== "" && typeof (value) !== "undefined") {
var part = encodeURIComponent(propName) + '='
if (value !== null && value !== '' && typeof value !== 'undefined') {
if (typeof value === 'object') {
for (const key of Object.keys(value)) {
if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') {
if (
value[key] !== null &&
value[key] !== '' &&
typeof value[key] !== 'undefined'
) {
let params = propName + '[' + key + ']'
var subPart = encodeURIComponent(params) + "="
result += subPart + encodeURIComponent(value[key]) + "&"
var subPart = encodeURIComponent(params) + '='
result += subPart + encodeURIComponent(value[key]) + '&'
}
}
} else {
result += part + encodeURIComponent(value) + "&"
result += part + encodeURIComponent(value) + '&'
}
}
}

+ 31
- 13
src/views/business/comps/template/TemplateTable.vue View File

@ -52,9 +52,6 @@ import DMYPPZJLB from "./comps/gsp/DMYPPZJLB.vue";
// PCR
//PCR001-使SP001
import PCR002 from "./comps/pcr/PCR002.vue";
import PCR003 from "./comps/pcr/PCR003.vue";
import PCR004 from "./comps/pcr/PCR004.vue";
import PCR005 from "./comps/pcr/PCR005.vue";
import PCR007 from "./comps/pcr/PCR007.vue";
import PCR008 from "./comps/pcr/PCR008.vue";
@ -68,9 +65,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
@ -78,9 +75,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
@ -140,14 +137,12 @@ export default {
//
SP001, SP003, SP00456,SP007, SP008, SP009,SP0019,SP0020,SP0021,
// PCR
PCR002, PCR003, PCR004, PCR005,PCR007, PCR008, PCR009,PCR010, PCR011, PCR012,
PCR005,PCR007, PCR008, PCR009,PCR010, PCR011, PCR012,
//LBA
LBA002,
LBA003,
LBA004,
LBA005,
LBA006,
LBA007,
LBA008,
//
YP002,
@ -340,6 +335,14 @@ export default {
'DL022': 'DL022',
'DL023': 'DL023',
'DL024': 'DL024',
//
'GG001': 'DL011',
'GG002': 'DL012',
'GG003': 'SP001',
'GG004': 'SP001',
'GG005': 'GSP001',
'GG006': 'GSP002',
}
}
return this.componentMap || "Demo"
@ -360,10 +363,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) || {};
}
}
@ -376,12 +382,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);
@ -406,6 +420,7 @@ export default {
currentEditSignUuid: null, // EditSignHandleFormItemuuid
latestParams: {},//params
hasCustomTable: false,//
submittedCodes: [],//codes
};
},
created() {
@ -490,11 +505,14 @@ export default {
this.currentEditSignUuid = null;
}
},
//
isReply(){
return this.fhyjjl.every((item) => !!item.content && !!item.reply)
},
async getFormData() {
if (this.fillType === "actFill") {
//
const flag = this.fhyjjl.every((item) => !!item.content && !!item.reply)
console.log(this.fhyjjl, flag, "flag")
const flag = this.isReply()
if (!flag) {
this.$message.error("疑问项还未回复,请回复后再提交");
return;

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

@ -1,4 +1,4 @@
<!-- Ames掺入法平皿培养记录表 -->
<!-- Ames掺入法平皿培养记录表 -->
<template>
<div>
<div class="detail-container">

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

@ -1,4 +1,4 @@
<!-- Ames掺入法平皿培养记录表 -->
<!-- Ames掺入法平皿培养记录表 -->
<template>
<div>
<div class="detail-container">
@ -22,6 +22,7 @@
:ref="refConf.yqsy"
@onRegentSubmit="(e) => onRegentSubmit(e)"
:showOperation="fillType === 'actFill'"
fieldItemLabel = "template.dl.dl007.yqsyxx"
:showAddRow="fillType === 'actFill'"
:formData="formData"
:prefixKey="`yqsyTable`"
@ -280,17 +281,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
},

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

@ -371,7 +371,7 @@ export default {
bodyFillType: 'actFill',
bodyDisabled: true,
disabled: true,
width: 100
width: 200
}
]
@ -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
},
@ -664,7 +654,7 @@ export default {
bodyFillType: 'actFill',
bodyDisabled: true,
disabled: true,
width: 100
width: 200
}
]

+ 6
- 62
src/views/business/comps/template/comps/dl/DL010.vue View File

@ -29,7 +29,7 @@
<LineLabel label="template.dl.dl010.sjxx" />
<div class="template-form-item">
<div class="sj-operation-btns">
<div class="sj-operation-btns" v-ifan class="s">="fillType === 'preFill'">
<el-button
size="small"
type="primary"
@ -287,7 +287,7 @@ export default {
},
{ type: 'span', label: 'template.dl.dl010.gusui' }
],
width: 260
width: 320
},
{
label: 'template.dl.dl010.lx',
@ -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) {
//

+ 99
- 53
src/views/business/comps/template/comps/dl/DL011.vue View File

@ -40,6 +40,7 @@
label=""
:ref="refConf.xbxx"
:formConfig="xbxxConfig"
@onRegentSubmit="(data) => onTableRegentSubmit(data)"
:formData="formData"
/>
</div>
@ -56,6 +57,7 @@
:ref="refConf.pyxx"
:formConfig="pyxxConfig"
:formData="formData"
@onRegentSubmit="(data) => onTableRegentSubmit(data)"
@clickButton="handlePyxxClickButton"
/>
</div>
@ -82,6 +84,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',
@ -192,16 +196,23 @@ export default {
type: 'span',
label: ''
},
pykssj: {
label: 'template.dl.dl011.pykssj',
type: 'input',
fillType: 'actFill',
subType: 'button',
subKey: 'pykssjButton',
subDisabled: this.fillType !== 'actFill',
disabled: true,
buttonName: 'template.dl.dl011.pykssjButton'
}
pykssj:
this.fillType === 'actFill'
? {
label: 'template.dl.dl011.pykssj',
type: 'input',
fillType: 'actFill',
subType: 'button',
subKey: 'pykssjButton',
disabled: true,
buttonName: 'template.dl.dl011.pykssjButton'
}
: {
label: 'template.dl.dl011.pykssj',
type: 'input',
fillType: 'actFill',
disabled: true
}
}
}
]
@ -238,9 +249,9 @@ export default {
subType: 'select',
subKey: 'fshxbyjtjUnit',
fillType: 'preFill',
subOptions: this.getDictOptions('business_nddw'),
subOptions: this.getDictOptions('business_tjdw'),
maxlength: 10,
selectTo: 'fshxbsjtjUnit' //
// selectTo: 'fshxbsjtjUnit'
},
fshxbsjtj: {
label: 'template.dl.dl011.fshxbsjtj',
@ -297,6 +308,27 @@ 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,48 +354,61 @@ 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 || ''
})
}
this.resourceTmp = uniqeResource(
tmpResource,
stepResource.sjResource || []
)
this.yqResourceTmp = uniqeYqOne(tmpYq, stepResource.yqResource || [])
return this.resourceTmp
},
onRegentSubmit(e) {
@ -391,6 +436,7 @@ export default {
.print-btn {
margin-bottom: 20px;
}
.config-header-end {
display: flex;
justify-content: flex-end;

+ 86
- 81
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',
@ -257,7 +231,7 @@ export default {
fillType: 'preFill',
subOptions: this.getDictOptions('business_nddw'),
maxlength: 10,
selectTo: 'zbhxbsjtjUnit'
// selectTo: 'zbhxbsjtjUnit'
},
zbhxbsjtj: {
label: 'template.dl.dl012.zbhxbsjtj',
@ -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

+ 5
- 40
src/views/business/comps/template/comps/dl/DL015.vue View File

@ -261,10 +261,7 @@ export default {
bodyType: 'select',
width: 180,
bodyFillType: 'actFill',
bodyOptions: [
{ label: '大量贴壁细胞变圆', value: '大量贴壁细胞变圆' },
{ label: '无', value: '无' }
]
bodyOptions: this.getDictOptions('business_dl_sjqqtqk')
},
{
label: 'template.dl.dl015.qqpyy',
@ -288,7 +285,10 @@ export default {
prop: 'pyybrl',
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10
bodyMaxlength: 10,
headerSelectKey: 'pyybrlUnit',
headerOptions: this.getDictOptions('business_tjdw'),
fillType: 'preFill'
}
]
}
@ -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;
},
//

+ 126
- 43
src/views/business/comps/template/comps/dl/DL022.vue View File

@ -1,4 +1,4 @@
<!-- 生物分析生物样品采集管制备 -->
<!-- 畸变情况 -->
<template>
<div>
<div class="detail-container">
@ -10,23 +10,24 @@
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" />
:formConfig="stepFormConfig" @blur="onHandleBlur" :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"
:showAddRow="fillType === 'actFill'" :showOperation="fillType === 'actFill'">
<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"
@deleteRow="deleteRow"></TableOpertaionDelete>
<button v-if="fillType === 'actFill'" class="edit-button" @click="onEditClick(row, rowIndex)">
<button v-if="fillType === 'actFill'" class="edit-button"
@click="onEditClick(row, rowIndex)">
{{ row.isComplete ? '编辑' : '完成' }}
</button>
</template>
@ -50,8 +51,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 +67,13 @@ export default {
},
},
computed: {
//
tableFormData() {
return {
stepTableFormData: this.formData.stepTableFormData || [],
headerSelectFields: {}
}
},
//
remarkConig() {
return [
@ -169,28 +175,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',
@ -204,46 +214,96 @@ export default {
data() {
return {
formData: {},
uuid:getuuid(),//id
currentItem: {},
currentRowIndex: -1,
uuid: getuuid(),//id
currentItem: {},
currentRowIndex: -1,
};
},
mounted() {
EventBus.$on('onEditSignCallback', this.handleEditSignCallback);
},
unmounted() {
watch: {
formData: {
immediate: true,
handler(v) {
console.log('formData==============', v);
}
},
},
mounted() {
EventBus.$on('onEditSignCallback', this.handleEditSignCallback);
},
unmounted() {
EventBus.$off('onEditSignCallback', this.handleEditSignCallback);
},
methods: {
handleEditSignCallback(data){
//
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();
}
},
handleEdit(){
const {currentItem, currentRowIndex} = this;
handleEdit() {
const { currentItem, currentRowIndex } = this;
currentItem.isComplete = !currentItem.isComplete;
this.$refs.tableRef.updateDataSourceByRowIndex(currentRowIndex, currentItem)
},
// /
onEditClick(item, rowIndex) {
const { jblx=[] } = item;
const { jblx = [] } = item;
const flag = jblx.every(it => !!it.value)
if(!item.isComplete && !flag){
if (!item.isComplete && !flag) {
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() {
this.$refs.tableRef.addRow({
jblx: [{value: undefined}],
jblx: [{ value: undefined }],
})
},
onFormSelect(fields) {
@ -282,16 +342,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,18 +366,35 @@ 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{
color: #409eff;
font-size: 13px;
border-radius: 3px;
padding: 5px 9px;
cursor: pointer;
border-color: transparent;
background: transparent;
margin: 0 0 5px 10px !important;
.edit-button {
color: #409eff;
font-size: 13px;
border-radius: 3px;
padding: 5px 9px;
cursor: pointer;
border-color: transparent;
background: transparent;
margin: 0 0 5px 10px !important;
}
</style>

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

@ -12,6 +12,7 @@
<LineLabel label="template.dl.dl023.yqsyxx" />
<CustomTable :ref="`tableRef`" :columns="yqsyxxColumns" @onRegentSubmit="(e) => onRegentSubmit(e)"
:formData="formData" operationWidth="80px" :showAddRow="fillType === 'actFill'"
fieldItemLabel = "template.dl.dl023.yqsyxx"
:showOperation="fillType === 'actFill'">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaionDelete :row="row" :rowIndex="rowIndex" :columns="columns"
@ -22,7 +23,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 +49,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 +100,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 +144,7 @@ export default {
{ label: "细胞系", value: "细胞系" }
],
otherCode: 'dwzshxbxOther',
thirdOtherCode: 'dwzshxbxThirdOther',
showOtherLabel: false,
otherOptions: this.otherOptions
},
@ -166,9 +166,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 +188,8 @@ export default {
subType: 'button',
subKey: 'zskssj',
buttonName: 'template.dl.dl023.ksButton',
disabled: true,
subDisabled: this.fillType !== 'actFill'
},
zsjssj: {
label: 'template.dl.dl023.zsjssj',
@ -196,6 +199,8 @@ export default {
subType: 'button',
subKey: 'zsjssj',
buttonName: 'template.dl.dl023.jsButton',
disabled: true,
subDisabled: this.fillType !== 'actFill'
},
}
}
@ -209,22 +214,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 +240,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 +325,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) {

+ 1
- 1
src/views/business/comps/template/comps/gsp/DMYPPZJLB.vue View File

@ -157,7 +157,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 1
- 1
src/views/business/comps/template/comps/gsp/GSP001.vue View File

@ -156,7 +156,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 1
- 1
src/views/business/comps/template/comps/gsp/GSP003.vue View File

@ -179,7 +179,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 1
- 1
src/views/business/comps/template/comps/gsp/GSP005.vue View File

@ -181,7 +181,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 1
- 1
src/views/business/comps/template/comps/gsp/GSP009.vue View File

@ -128,7 +128,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 1
- 1
src/views/business/comps/template/comps/gsp/GSP010.vue View File

@ -135,7 +135,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 54
- 9
src/views/business/comps/template/comps/gsp/GSP015.vue View File

@ -34,9 +34,14 @@
:showAddRow="fillType === 'preFill'" @onAddRow="() => addTableRow(index)"
fieldItemLabel="取样进样信息" :formData="item">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaionDelete :row="row" :rowIndex="rowIndex" :columns="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)">
</TableOpertaionDelete>
</TableOpertaion>
</template>
</CustomTable>
<CustomTable :ref="`jyTableRef${index}`" :columns="yjColumns" prefix="jy"
@ -44,9 +49,14 @@
:showOperation="fillType === 'actFill'" :showAddRow="false"
:formData="{ stepTableFormData: item.jyStepTableFormData || [], headerSelectFields: item.jyHeaderSelectFields || {} }">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaionDelete :row="row" :rowIndex="rowIndex" :columns="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)">
</TableOpertaionDelete>
</TableOpertaion>
</template>
</CustomTable>
</div>
@ -72,9 +82,14 @@
:showOperation="fillType === 'preFill' || fillType === 'actFill'"
@onAddRow="() => addEcTableRow(index, 'ecTableRef')" :formData="item">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaionDelete :row="row" :rowIndex="rowIndex" :columns="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)">
</TableOpertaionDelete>
</TableOpertaion>
</template>
</CustomTable>
</div>
@ -91,7 +106,7 @@
<script>
import BaseInfoFormPackage from "@/components/Template/BaseInfoFormPackage";
import TableOpertaionDelete from "@/components/Template/operation/TableOpertaionDelete";
import TableOpertaion from "@/components/Template/operation/TableOpertaion";
import LineLabel from "@/components/Template/LineLabel";
import TableList from "@/components/Template/Table";
@ -113,7 +128,7 @@ const refConfig = {
const compRefs = Object.values(refConfig);
export default {
name: "SP0021",
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaionDelete },
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaion },
mixins: [templateMixin],
props: {
fillType: {
@ -161,8 +176,38 @@ export default {
},
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 {} = item;
const ref = this.$refs[`ybsmFormPackageRef${index}`][0];
if(key === "startButton"){
ref.updateFormData("qysj",moment().format("YYYY/MM/DD HH:mm:ss"),{ isUpdateRecord: true, signData })

+ 6
- 4
src/views/business/comps/template/comps/gsp/MJYLQSQD.vue View File

@ -2,7 +2,8 @@
<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-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">
<LineLabel label="template.gsp.MJYLQSQD.jbxx" />
@ -120,7 +121,8 @@ export default {
},
xyl: {
label: "template.gsp.MJYLQSQD.xyl",
type: "inputNumber",
maxlength: 50,
type: "input",
fillType: "actFill",
},
xysj: {
@ -225,10 +227,10 @@ export default {
},
//sywzmcgyjl
onSelectBlur(val) {
if (val.key == 'sywzmc' && ((!this.formData.sywzmc||this.formData.sywzmc=='') || val.type == 'save')) {
if (val.key == 'sywzmc' && ((!this.formData.sywzmc || this.formData.sywzmc == '') || val.type == 'save')) {
this.filterGyjl(val, true)
}
if (val.key == 'gyjl' && ((!this.formData.gyjl||this.formData.gyjl=='') || val.type == 'save')) {
if (val.key == 'gyjl' && ((!this.formData.gyjl || this.formData.gyjl == '') || val.type == 'save')) {
this.filterGynd(val, true)
}
},

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

@ -128,7 +128,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 2
- 2
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" />
@ -112,7 +112,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 2
- 2
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" />
@ -188,7 +188,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

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


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

@ -125,7 +125,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
options: this.getDictOptions('business_pztj')
}

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


+ 2
- 2
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" />
@ -162,7 +162,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 0
- 586
src/views/business/comps/template/comps/pcr/PCR002.vue View File

@ -1,586 +0,0 @@
<!-- PCR分析溶液配制记录表 -->
<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="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.common.operationSteps" />
<div class="template-form-item">
<BaseInfoFormPackage fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef"
@clickable="handleFormClickable"
@onSureModifyRecord="onSureModifyRecord"
@resetRecord="resetRecord"
:formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData" />
<CustomTable
@blur="onHandleTableBlur"
:ref="`stepTableRef`"
:columns="tableStepColumns"
:formData="formData"
:prefixKey = "`table`"
@clickable="handleClickable"
fieldItemLabel = "template.common.operationSteps"
>
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion
:fillType="fillType"
:row="row"
:rowIndex="rowIndex"
:columns="columns"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"
@subPackageSubmit="subPackageSubmit"
@startConfig="startConfig"
@configComplete="configComplete"
></TableOpertaion>
</template>
</CustomTable>
</div>
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPackage fieldItemLabel="template.common.remark" label="template.common.remark"
ref="remarkRef" :formConfig="remarkConig" :formData="formData" />
</div>
</div>
</div>
<SelectReagentDialog @submit="onSelectReagentSubmit" ref="selectReagentDialogRef">
</SelectReagentDialog>
<!-- <button @click="onSave">保存</button> -->
</div>
</template>
<script>
import BaseInfoFormPackage from "@/components/Template/BaseInfoFormPackage";
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 { getLatestSnArr } from '@/api/template';
import { EventBus } from "@/utils/eventBus";
import SelectReagentDialog from '../../dialog/SelectReagentDialog.vue';
import { getLadderColumnsConfig } from "../../formConfig/PCRTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
import { addTj,uniqeResource,uniqeResourceOne,addDecimals } from "@/utils/calUnitTools";
export default {
name: "PCR002",
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaion, SelectReagentDialog },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
tableStepColumns() {
return getLadderColumnsConfig(this, 'business_pcr_gzy');
},
//
storageFormConfig() {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}
}
];
},
//
remarkConig() {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
//
baseInfoFormConfig() {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
}
},
{
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",
},
}
}
]
},
//
stepFormConfig() {
return [
{
type: 'step',
config: {
startSolution: {
label: 'template.pcr.pcr002.qsyry',
type: 'input',
fillType: 'preFill',
subType: 'clickable',
subKey: 'subStartSolution',
subFillType: 'actFill',
maxlength: 20
},
targetStartSolution: {
label: 'template.pcr.pcr002.ysqsyrynd',
type: 'inputNumber',
subType: 'select',
fillType: 'preFill',
subOptions: this.getDictOptions('business_nddw'),
subKey: 'subTargetStartSolution',
maxlength: 10
},
targetAcSolution: {
label: 'template.pcr.pcr002.sjqsyrynd',
type: 'input',
fillType: 'actFill',
disabled: true,
maxlength: 10,
compareTo: 'targetStartSolution', //
},
solution: {
label: 'template.pcr.pcr002.xsy',
type: 'input',
fillType: 'preFill',
subType: 'clickable',
subKey: 'subSolution',
subFillType: 'actFill',
maxlength: 20
},
stepStorageCondition: {
label: 'template.pcr.pcr002.cctj',
type: 'select',
fillType: 'preFill',
options: this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'stepStorageConditionOther'
},
effectivePeriod: {
label: 'template.pcr.pcr002.mbryyxzq',
type: 'input',
subType: 'select',
subKey: 'effectivePeriodUnit',
fillType: 'preFill',
subOptions: this.getDictOptions('business_yxqdw')
},
expireDate: {
label: 'template.pcr.pcr002.mbrysxr',
type: 'input'
}
}
}
]
},
},
data() {
return {
reagentType: null, // 1- 2-
formData: {},
currentSubKey: "",//key
currentType: "",//
currentRowIndex: "",//
};
},
mounted() {
const formData = this.getFormDataByTemplateData();
if (this.fillType === "actFill") {
this.getCode(formData);
}
},
methods: {
//
onSureModifyRecord(key) {
if (key === "subStartSolution") {//table
this.$refs.stepTableRef.updateRecords();
}
},
resetRecord() {
this.$refs.stepTableRef.resetRecord();
},
//
handleFormClickable(obj) {
if (this.fillType === "preFill") {
return;
}
console.log(obj)
const subKey = obj.subKey;
if (subKey === "subStartSolution" || subKey === "subSolution") {//
this.$refs.selectReagentDialogRef.show(this.formData.id)
this.currentSubKey = subKey;
this.reagentType = 1;
}
},
//
handleClickable(col, rowIndex) {
//
this.reagentType = 2
this.rowIndex = rowIndex
this.currentSubKey = col.prop;
console.log("clickable",rowIndex, col)
if(col.prop === "sjry"){
//-
this.$refs.selectReagentDialogRef.show(this.formData.id)
}
},
//
onSelectReagentSubmit(code,row){
if(this.reagentType===1){
this.$refs.stepFormPackageRef.updateFormData(this.currentSubKey, code);
//
if(this.currentSubKey == 'subStartSolution') {
this.$refs.stepFormPackageRef.updateFormData("targetAcSolution", row.nd + row.nddw);
this.updateStepTableData(row);
}
}else{
this.$refs.stepTableRef.updateDataSourceByRowIndex(this.rowIndex,{
[this.currentSubKey]: code,
})
}
this.$refs.selectReagentDialogRef.onCancel()
},
//table
updateStepTableData(row) {
const { stepTableFormData = [] } = this.$refs.stepTableRef.getFilledFormData();
//
const newStepTableData = JSON.parse(JSON.stringify(stepTableFormData));
//
for (let i = 0; i < newStepTableData.length; i++) {
const item = newStepTableData[i];
if (i === 0) {
// row.code
newStepTableData[i].startSolutionCode = row.bh;
} else {
// targetSolutionCode
// targetSolutionCode
newStepTableData[i].startSolutionCode = newStepTableData[i - 1].targetSolutionCode + newStepTableData[i - 1].subTargetSolutionCode;
}
console.log(item, row, 'updateStepTableData')
const volResult = this.updateSjmbrynd(item, row.nd);
console.log(volResult, 'volResult')
if (!volResult) {
continue
}
item.actSolutionVolume = volResult.actVol;
item.actSolutionConcentration = volResult.actNd;
item.actSolutionExpire = row.sxr;
}
this.$refs.stepTableRef.updateDataSource(newStepTableData);
// tableRef
},
//
async getCode(v) {
const { stepTableFormData = [] } = v;
if (stepTableFormData && stepTableFormData.length > 0 && !stepTableFormData[0].bhCode) {
let postSn = []
for (let i = 0; i < stepTableFormData.length; i++) {
postSn.push({
pre: stepTableFormData[i].targetSolutionCode,
type: 1
})
}
const result = await getLatestSnArr(postSn)
if (result.code == 200) {
for (let i = 0; i < stepTableFormData.length; i++) {
this.$refs.stepTableRef.updateDataSourceByRowIndex(i, {
subTargetSolutionCode: result.data[i],
})
}
const params = {
type: "fieldChanged",
newRecord: null,
resourceList: null,
}
setTimeout(() => {
EventBus.$emit('onModifyRecord', params,)
}, 10);
}
}
},
//
getFilledFormData() {
return this.getFilledFormDataByRefs(["baseInfoRef", "stepFormPackageRef","stepTableRef", "stepRef", "remarkRef"])
},
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "stepFormPackageRef", "stepTableRef","stepRef", "remarkRef"]);
return content;
},
getResource() {
let content = this.getFilledFormData();
console.log(content)
//resource
let tmpResource = []
if(this.fillType === "actFill"){
let tableList = content.stepTableFormData
if(tableList && tableList.length>0){
for(let i=0;i<tableList.length;i++){
//
let item = tableList[i]
console.log('表格item:'+JSON.stringify(item))
//使
//
tmpResource.push({
mc: null,
bh: item.startSolutionCode,
ph: null,
ndz: null,
nd: null,
nddw: null,
ly: 'ELN配制',
sxrq: null,
kc: null,
kcdw: null,
syl: item.actStartSolutionVolume,
type: 1,
elnType: this.product,
syldw:content.headerSelectFields.actStartSolutionVolumeUnit,
yxzq:null,
yxzqdw:null,
})
//
tmpResource.push({
mc: null,
bh: content.subSolution,
ph: null,
ndz: null,
nd: null,
nddw: null,
ly: 'ELN配制',
sxrq: null,
kc: null,
kcdw: null,
syl: item.actDiluentVolume,
type: 1,
elnType: this.product,
syldw:content.headerSelectFields.actDiluentVolumeUnit,
yxzq:null,
yxzqdw:null,
})
//
let fzTotal = 0//
if(item.fzsj && item.fzsj.fzList && item.fzsj.fzList.length>0){
for(let j=0;j<item.fzsj.fzList.length;j++){
let fzItem = item.fzsj.fzList[j]
tmpResource.push({
mc: null,
bh: item.fzsj.mybh+fzItem.preCode+ fzItem.subCode,
ph: null,
ndz: item.hhwznd + content.headerSelectFields.hhwzndUnit,
nd: item.hhwznd,
nddw: content.headerSelectFields.hhwzndUnit,
ly: 'ELN配制',
sxrq: null,
kc: fzItem.num,
kcdw: item.fzsj.dw,
syl: null,
type: null,
elnType: this.product,
syldw:item.fzsj.dw,
yxzq:null,
yxzqdw:null,
})
fzTotal=addDecimals(fzTotal,fzItem.num)
}
}
//
// const { total, unit } = addTj([item.sjjzxql, item.sjryxql], [content.headerSelectFields.sjjzxqlUnit, content.headerSelectFields.sjryxqlUnit])
const { total, unit } = addTj([item.actStartSolutionVolume, item.actDiluentVolume], [content.headerSelectFields.actStartSolutionVolumeUnit, content.headerSelectFields.actDiluentVolumeUnit])
tmpResource.push({
mc: null,
bh: item.targetSolutionCode+item.subTargetSolutionCode,
ph: null,
ndz: item.actSolutionConcentration + content.headerSelectFields.actSolutionConcentrationUnit,
nd: item.actSolutionConcentration,
nddw: content.headerSelectFields.actSolutionConcentrationUnit,
ly: 'ELN配制',
sxrq: null,
kc: total,
kcdw: unit,
type: null,
elnType: this.product,
syl: fzTotal>0?fzTotal:null,
syldw:fzTotal>0?item.fzsj.dw:unit,
yxzq:content.effectivePeriod,
yxzqdw:content.effectivePeriodUnit,
})
}
}
}
if(tmpResource.length>0){
tmpResource = uniqeResourceOne(tmpResource)
}
//使
const stepResource = this.$refs.stepRef.getStepResource()
this.resourceTmp =uniqeResource(tmpResource,stepResource.sjResource||[])
this.yqResourceTmp = stepResource.yqResource||[]
return this.resourceTmp;
},
//
async onSave() {
let content = this.$refs.stepRef.getStepResource();
console.log(content);
},
//
deleteRow(rowIndex) {
const stepTableRef = this.$refs['stepTableRef'];
if (stepTableRef) {
stepTableRef.deleteRow(rowIndex);
}
},
configComplete(val) {
if (val.rowData.sjjzxql === '' || val.rowData.sjjzxql === undefined || val.rowData.sjryxql === '' || val.rowData.sjryxql === undefined) {
this.$message.error("表格内容未填完")
return
}
console.log("完成配置数据:" + JSON.stringify(val))
const { total, unit } = addTj([val.rowData.sjjzxql, val.rowData.sjryxql], [val.headerSelectFields.sjjzxqlUnit, val.headerSelectFields.sjryxqlUnit])
let postData = {
mc: null,
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.formData.studySubjectId,
bh: val.rowData.bh + val.rowData.bhCode,
nd: val.rowData.hhwznd,
nddw: val.headerSelectFields.hhwzndUnit,
kc: total,
kcdw: unit,
}
console.log("完成配置提交数据:" + JSON.stringify(postData))
sj_configurationCompleted(postData).then(() => {
}).catch(() => {
})
.finally(() => {
})
},
startConfig(val) {
console.log("开始配置数据:" + JSON.stringify(val))
let postData = {
bh: val.rowData.bh + val.rowData.bhCode,
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.formData.studySubjectId,
}
console.log("开始配置提交数据:" + JSON.stringify(postData))
sj_startConfiguration(postData).then(() => {
}).catch(() => {
})
.finally(() => {
})
},
subPackageSubmit(val) {
console.log("分装数据:" + JSON.stringify(val))
if (val.fzsj.fzList && val.fzsj.fzList.length > 0) {
let list = []
for (let i = 0; i < val.fzsj.fzList.length; i++) {
let item = val.fzsj.fzList[i]
list.push({
bh: val.fzsj.mybh + item.preCode,
kc: item.num,
kcdw: val.fzsj.dw,
})
}
let postData = {
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.formData.studySubjectId,
bh: val.fzsj.mybh,
nd: val.rowData.hhwznd,
nddw: val.headerSelectFields.hhwzndUnit,
list: list
}
console.log("分装提交数据:" + JSON.stringify(postData))
sj_subpackage(postData).then(() => {
}).catch(() => {
})
.finally(() => {
})
}
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
.print-btn {
margin-bottom: 20px;
}
</style>

+ 0
- 587
src/views/business/comps/template/comps/pcr/PCR003.vue View File

@ -1,587 +0,0 @@
<!-- PCR生物分析标准曲线制备表 -->
<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="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.common.operationSteps" />
<div class="template-form-item">
<BaseInfoFormPackage fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef"
@clickable="handleFormClickable"
@onSureModifyRecord="onSureModifyRecord"
@resetRecord="resetRecord"
:formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData" />
<CustomTable
@blur="onHandleTableBlur"
:ref="`stepTableRef`"
:columns="tableStepColumns"
:formData="formData"
:prefixKey = "`table`"
@clickable="handleClickable"
fieldItemLabel = "template.common.operationSteps"
>
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion
:fillType="fillType"
:row="row"
:rowIndex="rowIndex"
:columns="columns"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"
@subPackageSubmit="subPackageSubmit"
@startConfig="startConfig"
@configComplete="configComplete"
></TableOpertaion>
</template>
</CustomTable>
</div>
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPackage fieldItemLabel="template.common.remark" label="template.common.remark"
ref="remarkRef" :formConfig="remarkConig" :formData="formData" />
</div>
</div>
</div>
<SelectReagentDialog @submit="onSelectReagentSubmit" ref="selectReagentDialogRef">
</SelectReagentDialog>
<!-- <button @click="onSave">保存</button> -->
</div>
</template>
<script>
import BaseInfoFormPackage from "@/components/Template/BaseInfoFormPackage";
import LineLabel from "@/components/Template/LineLabel";
import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step";
import templateMixin from "../../mixins/templateMixin.js";
import CustomTable from '@/components/Template/CustomTable.vue';
import { getLatestSnArr } from '@/api/template';
import { EventBus } from "@/utils/eventBus";
import SelectReagentDialog from '../../dialog/SelectReagentDialog.vue';
import { getLadderColumnsConfig } from "../../formConfig/PCRTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
import { addTj,uniqeResource,uniqeResourceOne,addDecimals } from "@/utils/calUnitTools";
export default {
name: "PCR003",
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaion, SelectReagentDialog },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
tableStepColumns() {
return getLadderColumnsConfig(this, 'business_pcr_fxbzqxzbb');
},
//
storageFormConfig() {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}
}
];
},
//
remarkConig() {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
//
baseInfoFormConfig() {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
}
},
{
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",
},
}
}
]
},
//
stepFormConfig() {
return [
{
type: 'step',
config: {
startSolution: {
label: 'template.pcr.pcr002.qsyry',
type: 'input',
fillType: 'preFill',
subType: 'clickable',
subKey: 'subStartSolution',
subFillType: 'actFill',
maxlength: 20
},
targetStartSolution: {
label: 'template.pcr.pcr002.ysqsyrynd',
type: 'inputNumber',
subType: 'select',
fillType: 'preFill',
subOptions: this.getDictOptions('business_nddw'),
subKey: 'subTargetStartSolution',
maxlength: 10
},
targetAcSolution: {
label: 'template.pcr.pcr002.sjqsyrynd',
type: 'input',
fillType: 'actFill',
disabled: true,
maxlength: 10,
compareTo: 'targetStartSolution', //
},
solution: {
label: 'template.pcr.pcr002.xsy',
type: 'input',
fillType: 'preFill',
subType: 'clickable',
subKey: 'subSolution',
subFillType: 'actFill',
maxlength: 20
},
stepStorageCondition: {
label: 'template.pcr.pcr002.cctj',
type: 'select',
fillType: 'preFill',
options: this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'stepStorageConditionOther'
},
effectivePeriod: {
label: 'template.pcr.pcr002.mbryyxzq',
type: 'input',
subType: 'select',
subKey: 'effectivePeriodUnit',
fillType: 'preFill',
subOptions: this.getDictOptions('business_yxqdw')
},
expireDate: {
label: 'template.pcr.pcr002.mbrysxr',
type: 'input'
}
}
}
]
},
},
data() {
return {
reagentType: null, // 1- 2-
formData: {},
currentSubKey: "",//key
currentType: "",//
currentRowIndex: "",//
};
},
mounted() {
const formData = this.getFormDataByTemplateData();
if (this.fillType === "actFill") {
this.getCode(formData);
}
},
methods: {
//
onSureModifyRecord(key) {
if (key === "subStartSolution") {//table
this.$refs.stepTableRef.updateRecords();
}
},
resetRecord() {
this.$refs.stepTableRef.resetRecord();
},
//
handleFormClickable(obj) {
if (this.fillType === "preFill") {
return;
}
console.log(obj)
const subKey = obj.subKey;
if (subKey === "subStartSolution" || subKey === "subSolution") {//
this.$refs.selectReagentDialogRef.show(this.formData.id)
this.currentSubKey = subKey;
this.reagentType = 1;
}
},
//
handleClickable(col, rowIndex) {
//
this.reagentType = 2
this.rowIndex = rowIndex
this.currentSubKey = col.prop;
console.log("clickable",rowIndex, col)
if(col.prop === "sjry"){
//-
this.$refs.selectReagentDialogRef.show(this.formData.id)
}
},
//
onSelectReagentSubmit(code,row){
if(this.reagentType===1){
this.$refs.stepFormPackageRef.updateFormData(this.currentSubKey, code);
//
if(this.currentSubKey == 'subStartSolution') {
this.$refs.stepFormPackageRef.updateFormData("targetAcSolution", row.nd + row.nddw);
this.updateStepTableData(row);
}
}else{
this.$refs.stepTableRef.updateDataSourceByRowIndex(this.rowIndex,{
[this.currentSubKey]: code,
})
}
this.$refs.selectReagentDialogRef.onCancel()
},
//table
updateStepTableData(row) {
const { stepTableFormData = [] } = this.$refs.stepTableRef.getFilledFormData();
//
const newStepTableData = JSON.parse(JSON.stringify(stepTableFormData));
//
for (let i = 0; i < newStepTableData.length; i++) {
const item = newStepTableData[i];
if (i === 0) {
// row.code
newStepTableData[i].startSolutionCode = row.bh;
} else {
// targetSolutionCode
// targetSolutionCode
newStepTableData[i].startSolutionCode = newStepTableData[i - 1].targetSolutionCode + newStepTableData[i - 1].subTargetSolutionCode;
}
console.log(item, row, 'updateStepTableData')
const volResult = this.updateSjmbrynd(item, row.nd);
console.log(volResult, 'volResult')
if (!volResult) {
continue
}
item.actSolutionVolume = volResult.actVol;
item.actSolutionConcentration = volResult.actNd;
item.actSolutionExpire = row.sxr;
}
this.$refs.stepTableRef.updateDataSource(newStepTableData);
// tableRef
},
//
async getCode(v) {
const { stepTableFormData = [] } = v;
if (stepTableFormData && stepTableFormData.length > 0 && !stepTableFormData[0].bhCode) {
let postSn = []
for (let i = 0; i < stepTableFormData.length; i++) {
postSn.push({
pre: stepTableFormData[i].targetSolutionCode,
type: 1
})
}
const result = await getLatestSnArr(postSn)
if (result.code == 200) {
for (let i = 0; i < stepTableFormData.length; i++) {
this.$refs.stepTableRef.updateDataSourceByRowIndex(i, {
subTargetSolutionCode: result.data[i],
})
}
const params = {
type: "fieldChanged",
newRecord: null,
resourceList: null,
}
setTimeout(() => {
EventBus.$emit('onModifyRecord', params,)
}, 10);
}
}
},
//
getFilledFormData() {
return this.getFilledFormDataByRefs(["baseInfoRef", "stepFormPackageRef","stepTableRef", "stepRef", "remarkRef"])
},
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "stepFormPackageRef", "stepTableRef","stepRef", "remarkRef"]);
return content;
},
getResource() {
let content = this.getFilledFormData();
console.log(content)
//resource
let tmpResource = []
if(this.fillType === "actFill"){
let tableList = content.stepTableFormData
if(tableList && tableList.length>0){
for(let i=0;i<tableList.length;i++){
//
let item = tableList[i]
console.log('表格item:'+JSON.stringify(item))
//使
//
tmpResource.push({
mc: null,
bh: item.startSolutionCode,
ph: null,
ndz: null,
nd: null,
nddw: null,
ly: 'ELN配制',
sxrq: null,
kc: null,
kcdw: null,
syl: item.actStartSolutionVolume,
type: 1,
elnType: this.product,
syldw:content.headerSelectFields.actStartSolutionVolumeUnit,
yxzq:null,
yxzqdw:null,
})
//
tmpResource.push({
mc: null,
bh: content.subSolution,
ph: null,
ndz: null,
nd: null,
nddw: null,
ly: 'ELN配制',
sxrq: null,
kc: null,
kcdw: null,
syl: item.actDiluentVolume,
type: 1,
elnType: this.product,
syldw:content.headerSelectFields.actDiluentVolumeUnit,
yxzq:null,
yxzqdw:null,
})
//
let fzTotal = 0//
if(item.fzsj && item.fzsj.fzList && item.fzsj.fzList.length>0){
for(let j=0;j<item.fzsj.fzList.length;j++){
let fzItem = item.fzsj.fzList[j]
tmpResource.push({
mc: null,
bh: item.fzsj.mybh+fzItem.preCode+ fzItem.subCode,
ph: null,
ndz: item.hhwznd + content.headerSelectFields.hhwzndUnit,
nd: item.hhwznd,
nddw: content.headerSelectFields.hhwzndUnit,
ly: 'ELN配制',
sxrq: null,
kc: fzItem.num,
kcdw: item.fzsj.dw,
syl: null,
type: null,
elnType: this.product,
syldw:item.fzsj.dw,
yxzq:null,
yxzqdw:null,
})
fzTotal=addDecimals(fzTotal,fzItem.num)
}
}
//
// const { total, unit } = addTj([item.sjjzxql, item.sjryxql], [content.headerSelectFields.sjjzxqlUnit, content.headerSelectFields.sjryxqlUnit])
const { total, unit } = addTj([item.actStartSolutionVolume, item.actDiluentVolume], [content.headerSelectFields.actStartSolutionVolumeUnit, content.headerSelectFields.actDiluentVolumeUnit])
tmpResource.push({
mc: null,
bh: item.targetSolutionCode+item.subTargetSolutionCode,
ph: null,
ndz: item.actSolutionConcentration + content.headerSelectFields.actSolutionConcentrationUnit,
nd: item.actSolutionConcentration,
nddw: content.headerSelectFields.actSolutionConcentrationUnit,
ly: 'ELN配制',
sxrq: null,
kc: total,
kcdw: unit,
type: null,
elnType: this.product,
syl: fzTotal>0?fzTotal:null,
syldw:fzTotal>0?item.fzsj.dw:unit,
yxzq:content.effectivePeriod,
yxzqdw:content.effectivePeriodUnit,
})
}
}
}
if(tmpResource.length>0){
tmpResource = uniqeResourceOne(tmpResource)
}
//使
const stepResource = this.$refs.stepRef.getStepResource()
this.resourceTmp =uniqeResource(tmpResource,stepResource.sjResource||[])
this.yqResourceTmp = stepResource.yqResource||[]
return this.resourceTmp;
},
//
async onSave() {
let content = this.$refs.stepRef.getStepResource();
console.log(content);
},
//
deleteRow(rowIndex) {
const stepTableRef = this.$refs['stepTableRef'];
if (stepTableRef) {
stepTableRef.deleteRow(rowIndex);
}
},
configComplete(val) {
if (val.rowData.sjjzxql === '' || val.rowData.sjjzxql === undefined || val.rowData.sjryxql === '' || val.rowData.sjryxql === undefined) {
this.$message.error("表格内容未填完")
return
}
console.log("完成配置数据:" + JSON.stringify(val))
const { total, unit } = addTj([val.rowData.sjjzxql, val.rowData.sjryxql], [val.headerSelectFields.sjjzxqlUnit, val.headerSelectFields.sjryxqlUnit])
let postData = {
mc: null,
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.formData.studySubjectId,
bh: val.rowData.bh + val.rowData.bhCode,
nd: val.rowData.hhwznd,
nddw: val.headerSelectFields.hhwzndUnit,
kc: total,
kcdw: unit,
}
console.log("完成配置提交数据:" + JSON.stringify(postData))
sj_configurationCompleted(postData).then(() => {
}).catch(() => {
})
.finally(() => {
})
},
startConfig(val) {
console.log("开始配置数据:" + JSON.stringify(val))
let postData = {
bh: val.rowData.bh + val.rowData.bhCode,
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.formData.studySubjectId,
}
console.log("开始配置提交数据:" + JSON.stringify(postData))
sj_startConfiguration(postData).then(() => {
}).catch(() => {
})
.finally(() => {
})
},
subPackageSubmit(val) {
console.log("分装数据:" + JSON.stringify(val))
if (val.fzsj.fzList && val.fzsj.fzList.length > 0) {
let list = []
for (let i = 0; i < val.fzsj.fzList.length; i++) {
let item = val.fzsj.fzList[i]
list.push({
bh: val.fzsj.mybh + item.preCode,
kc: item.num,
kcdw: val.fzsj.dw,
})
}
let postData = {
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.formData.studySubjectId,
bh: val.fzsj.mybh,
nd: val.rowData.hhwznd,
nddw: val.headerSelectFields.hhwzndUnit,
list: list
}
console.log("分装提交数据:" + JSON.stringify(postData))
sj_subpackage(postData).then(() => {
}).catch(() => {
})
.finally(() => {
})
}
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
.print-btn {
margin-bottom: 20px;
}
</style>

+ 0
- 587
src/views/business/comps/template/comps/pcr/PCR004.vue View File

@ -1,587 +0,0 @@
<!-- PCR生物分析质控样品制备表 -->
<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="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.common.operationSteps" />
<div class="template-form-item">
<BaseInfoFormPackage fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef"
@clickable="handleFormClickable"
@onSureModifyRecord="onSureModifyRecord"
@resetRecord="resetRecord"
:formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData" />
<CustomTable
@blur="onHandleTableBlur"
:ref="`stepTableRef`"
:columns="tableStepColumns"
:formData="formData"
:prefixKey = "`table`"
@clickable="handleClickable"
fieldItemLabel = "template.common.operationSteps"
>
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion
:fillType="fillType"
:row="row"
:rowIndex="rowIndex"
:columns="columns"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"
@subPackageSubmit="subPackageSubmit"
@startConfig="startConfig"
@configComplete="configComplete"
></TableOpertaion>
</template>
</CustomTable>
</div>
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPackage fieldItemLabel="template.common.remark" label="template.common.remark"
ref="remarkRef" :formConfig="remarkConig" :formData="formData" />
</div>
</div>
</div>
<SelectReagentDialog @submit="onSelectReagentSubmit" ref="selectReagentDialogRef">
</SelectReagentDialog>
<!-- <button @click="onSave">保存</button> -->
</div>
</template>
<script>
import BaseInfoFormPackage from "@/components/Template/BaseInfoFormPackage";
import LineLabel from "@/components/Template/LineLabel";
import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step";
import templateMixin from "../../mixins/templateMixin.js";
import CustomTable from '@/components/Template/CustomTable.vue';
import { getLatestSnArr } from '@/api/template';
import { EventBus } from "@/utils/eventBus";
import SelectReagentDialog from '../../dialog/SelectReagentDialog.vue';
import { getLadderColumnsConfig } from "../../formConfig/PCRTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
import { addTj,uniqeResource,uniqeResourceOne,addDecimals } from "@/utils/calUnitTools";
export default {
name: "PCR004",
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaion, SelectReagentDialog },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
tableStepColumns() {
return getLadderColumnsConfig(this, 'business_pcr_fxzkypzbb');
},
//
storageFormConfig() {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}
}
];
},
//
remarkConig() {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
//
baseInfoFormConfig() {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
}
},
{
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",
},
}
}
]
},
//
stepFormConfig() {
return [
{
type: 'step',
config: {
startSolution: {
label: 'template.pcr.pcr002.qsyry',
type: 'input',
fillType: 'preFill',
subType: 'clickable',
subKey: 'subStartSolution',
subFillType: 'actFill',
maxlength: 20
},
targetStartSolution: {
label: 'template.pcr.pcr002.ysqsyrynd',
type: 'inputNumber',
subType: 'select',
fillType: 'preFill',
subOptions: this.getDictOptions('business_nddw'),
subKey: 'subTargetStartSolution',
maxlength: 10
},
targetAcSolution: {
label: 'template.pcr.pcr002.sjqsyrynd',
type: 'input',
fillType: 'actFill',
disabled: true,
maxlength: 10,
compareTo: 'targetStartSolution', //
},
solution: {
label: 'template.pcr.pcr002.xsy',
type: 'input',
fillType: 'preFill',
subType: 'clickable',
subKey: 'subSolution',
subFillType: 'actFill',
maxlength: 20
},
stepStorageCondition: {
label: 'template.pcr.pcr002.cctj',
type: 'select',
fillType: 'preFill',
options: this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'stepStorageConditionOther'
},
effectivePeriod: {
label: 'template.pcr.pcr002.mbryyxzq',
type: 'input',
subType: 'select',
subKey: 'effectivePeriodUnit',
fillType: 'preFill',
subOptions: this.getDictOptions('business_yxqdw')
},
expireDate: {
label: 'template.pcr.pcr002.mbrysxr',
type: 'input'
}
}
}
]
},
},
data() {
return {
reagentType: null, // 1- 2-
formData: {},
currentSubKey: "",//key
currentType: "",//
currentRowIndex: "",//
};
},
mounted() {
const formData = this.getFormDataByTemplateData();
if (this.fillType === "actFill") {
this.getCode(formData);
}
},
methods: {
//
onSureModifyRecord(key) {
if (key === "subStartSolution") {//table
this.$refs.stepTableRef.updateRecords();
}
},
resetRecord() {
this.$refs.stepTableRef.resetRecord();
},
//
handleFormClickable(obj) {
if (this.fillType === "preFill") {
return;
}
console.log(obj)
const subKey = obj.subKey;
if (subKey === "subStartSolution" || subKey === "subSolution") {//
this.$refs.selectReagentDialogRef.show(this.formData.id)
this.currentSubKey = subKey;
this.reagentType = 1;
}
},
//
handleClickable(col, rowIndex) {
//
this.reagentType = 2
this.rowIndex = rowIndex
this.currentSubKey = col.prop;
console.log("clickable",rowIndex, col)
if(col.prop === "sjry"){
//-
this.$refs.selectReagentDialogRef.show(this.formData.id)
}
},
//
onSelectReagentSubmit(code,row){
if(this.reagentType===1){
this.$refs.stepFormPackageRef.updateFormData(this.currentSubKey, code);
//
if(this.currentSubKey == 'subStartSolution') {
this.$refs.stepFormPackageRef.updateFormData("targetAcSolution", row.nd + row.nddw);
this.updateStepTableData(row);
}
}else{
this.$refs.stepTableRef.updateDataSourceByRowIndex(this.rowIndex,{
[this.currentSubKey]: code,
})
}
this.$refs.selectReagentDialogRef.onCancel()
},
//table
updateStepTableData(row) {
const { stepTableFormData = [] } = this.$refs.stepTableRef.getFilledFormData();
//
const newStepTableData = JSON.parse(JSON.stringify(stepTableFormData));
//
for (let i = 0; i < newStepTableData.length; i++) {
const item = newStepTableData[i];
if (i === 0) {
// row.code
newStepTableData[i].startSolutionCode = row.bh;
} else {
// targetSolutionCode
// targetSolutionCode
newStepTableData[i].startSolutionCode = newStepTableData[i - 1].targetSolutionCode + newStepTableData[i - 1].subTargetSolutionCode;
}
console.log(item, row, 'updateStepTableData')
const volResult = this.updateSjmbrynd(item, row.nd);
console.log(volResult, 'volResult')
if (!volResult) {
continue
}
item.actSolutionVolume = volResult.actVol;
item.actSolutionConcentration = volResult.actNd;
item.actSolutionExpire = row.sxr;
}
this.$refs.stepTableRef.updateDataSource(newStepTableData);
// tableRef
},
//
async getCode(v) {
const { stepTableFormData = [] } = v;
if (stepTableFormData && stepTableFormData.length > 0 && !stepTableFormData[0].bhCode) {
let postSn = []
for (let i = 0; i < stepTableFormData.length; i++) {
postSn.push({
pre: stepTableFormData[i].targetSolutionCode,
type: 1
})
}
const result = await getLatestSnArr(postSn)
if (result.code == 200) {
for (let i = 0; i < stepTableFormData.length; i++) {
this.$refs.stepTableRef.updateDataSourceByRowIndex(i, {
subTargetSolutionCode: result.data[i],
})
}
const params = {
type: "fieldChanged",
newRecord: null,
resourceList: null,
}
setTimeout(() => {
EventBus.$emit('onModifyRecord', params,)
}, 10);
}
}
},
//
getFilledFormData() {
return this.getFilledFormDataByRefs(["baseInfoRef", "stepFormPackageRef","stepTableRef", "stepRef", "remarkRef"])
},
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "stepFormPackageRef", "stepTableRef","stepRef", "remarkRef"]);
return content;
},
getResource() {
let content = this.getFilledFormData();
console.log(content)
//resource
let tmpResource = []
if(this.fillType === "actFill"){
let tableList = content.stepTableFormData
if(tableList && tableList.length>0){
for(let i=0;i<tableList.length;i++){
//
let item = tableList[i]
console.log('表格item:'+JSON.stringify(item))
//使
//
tmpResource.push({
mc: null,
bh: item.startSolutionCode,
ph: null,
ndz: null,
nd: null,
nddw: null,
ly: 'ELN配制',
sxrq: null,
kc: null,
kcdw: null,
syl: item.actStartSolutionVolume,
type: 1,
elnType: this.product,
syldw:content.headerSelectFields.actStartSolutionVolumeUnit,
yxzq:null,
yxzqdw:null,
})
//
tmpResource.push({
mc: null,
bh: content.subSolution,
ph: null,
ndz: null,
nd: null,
nddw: null,
ly: 'ELN配制',
sxrq: null,
kc: null,
kcdw: null,
syl: item.actDiluentVolume,
type: 1,
elnType: this.product,
syldw:content.headerSelectFields.actDiluentVolumeUnit,
yxzq:null,
yxzqdw:null,
})
//
let fzTotal = 0//
if(item.fzsj && item.fzsj.fzList && item.fzsj.fzList.length>0){
for(let j=0;j<item.fzsj.fzList.length;j++){
let fzItem = item.fzsj.fzList[j]
tmpResource.push({
mc: null,
bh: item.fzsj.mybh+fzItem.preCode+ fzItem.subCode,
ph: null,
ndz: item.hhwznd + content.headerSelectFields.hhwzndUnit,
nd: item.hhwznd,
nddw: content.headerSelectFields.hhwzndUnit,
ly: 'ELN配制',
sxrq: null,
kc: fzItem.num,
kcdw: item.fzsj.dw,
syl: null,
type: null,
elnType: this.product,
syldw:item.fzsj.dw,
yxzq:null,
yxzqdw:null,
})
fzTotal=addDecimals(fzTotal,fzItem.num)
}
}
//
// const { total, unit } = addTj([item.sjjzxql, item.sjryxql], [content.headerSelectFields.sjjzxqlUnit, content.headerSelectFields.sjryxqlUnit])
const { total, unit } = addTj([item.actStartSolutionVolume, item.actDiluentVolume], [content.headerSelectFields.actStartSolutionVolumeUnit, content.headerSelectFields.actDiluentVolumeUnit])
tmpResource.push({
mc: null,
bh: item.targetSolutionCode+item.subTargetSolutionCode,
ph: null,
ndz: item.actSolutionConcentration + content.headerSelectFields.actSolutionConcentrationUnit,
nd: item.actSolutionConcentration,
nddw: content.headerSelectFields.actSolutionConcentrationUnit,
ly: 'ELN配制',
sxrq: null,
kc: total,
kcdw: unit,
type: null,
elnType: this.product,
syl: fzTotal>0?fzTotal:null,
syldw:fzTotal>0?item.fzsj.dw:unit,
yxzq:content.effectivePeriod,
yxzqdw:content.effectivePeriodUnit,
})
}
}
}
if(tmpResource.length>0){
tmpResource = uniqeResourceOne(tmpResource)
}
//使
const stepResource = this.$refs.stepRef.getStepResource()
this.resourceTmp =uniqeResource(tmpResource,stepResource.sjResource||[])
this.yqResourceTmp = stepResource.yqResource||[]
return this.resourceTmp;
},
//
async onSave() {
let content = this.$refs.stepRef.getStepResource();
console.log(content);
},
//
deleteRow(rowIndex) {
const stepTableRef = this.$refs['stepTableRef'];
if (stepTableRef) {
stepTableRef.deleteRow(rowIndex);
}
},
configComplete(val) {
if (val.rowData.sjjzxql === '' || val.rowData.sjjzxql === undefined || val.rowData.sjryxql === '' || val.rowData.sjryxql === undefined) {
this.$message.error("表格内容未填完")
return
}
console.log("完成配置数据:" + JSON.stringify(val))
const { total, unit } = addTj([val.rowData.sjjzxql, val.rowData.sjryxql], [val.headerSelectFields.sjjzxqlUnit, val.headerSelectFields.sjryxqlUnit])
let postData = {
mc: null,
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.formData.studySubjectId,
bh: val.rowData.bh + val.rowData.bhCode,
nd: val.rowData.hhwznd,
nddw: val.headerSelectFields.hhwzndUnit,
kc: total,
kcdw: unit,
}
console.log("完成配置提交数据:" + JSON.stringify(postData))
sj_configurationCompleted(postData).then(() => {
}).catch(() => {
})
.finally(() => {
})
},
startConfig(val) {
console.log("开始配置数据:" + JSON.stringify(val))
let postData = {
bh: val.rowData.bh + val.rowData.bhCode,
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.formData.studySubjectId,
}
console.log("开始配置提交数据:" + JSON.stringify(postData))
sj_startConfiguration(postData).then(() => {
}).catch(() => {
})
.finally(() => {
})
},
subPackageSubmit(val) {
console.log("分装数据:" + JSON.stringify(val))
if (val.fzsj.fzList && val.fzsj.fzList.length > 0) {
let list = []
for (let i = 0; i < val.fzsj.fzList.length; i++) {
let item = val.fzsj.fzList[i]
list.push({
bh: val.fzsj.mybh + item.preCode,
kc: item.num,
kcdw: val.fzsj.dw,
})
}
let postData = {
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.formData.studySubjectId,
bh: val.fzsj.mybh,
nd: val.rowData.hhwznd,
nddw: val.headerSelectFields.hhwzndUnit,
list: list
}
console.log("分装提交数据:" + JSON.stringify(postData))
sj_subpackage(postData).then(() => {
}).catch(() => {
})
.finally(() => {
})
}
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
.print-btn {
margin-bottom: 20px;
}
</style>

+ 1
- 1
src/views/business/comps/template/comps/pcr/PCR005.vue View File

@ -166,7 +166,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 1
- 1
src/views/business/comps/template/comps/pcr/PCR008.vue View File

@ -145,7 +145,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 1
- 1
src/views/business/comps/template/comps/pcr/PCR009.vue View File

@ -162,7 +162,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 1
- 1
src/views/business/comps/template/comps/pcr/PCR010.vue View File

@ -147,7 +147,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 1
- 1
src/views/business/comps/template/comps/pcr/PCR011.vue View File

@ -147,7 +147,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 1
- 1
src/views/business/comps/template/comps/pcr/PCR012.vue View File

@ -148,7 +148,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

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

@ -157,7 +157,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 4
- 2
src/views/business/comps/template/comps/sp/SP003.vue View File

@ -158,7 +158,8 @@ export default {
otherCode: "actOther",
multiple: true,
options: this.getDictOptions('business_pztj'),
compareTo: "pre"
compareTo: "pre",
otherCodeCompareTo: "preOther",
}
}
},
@ -276,7 +277,7 @@ export default {
bodySubType: "span",
bodySubKey: "subTargetSolutionCode",
bodyFillType: "preFill",
width: 140,
width: 280,
myCodeFields: ["targetSolutionCode", "subTargetSolutionCode"],//
maxVolumeField: "actSolutionVolume",//
maxVolumeFieldUnit: "actSolutionVolumeUnit",//
@ -476,6 +477,7 @@ export default {
//
onRegentSubmit(data) {
const { selectInfo, key } = data;
const { row } = selectInfo;
if (key === "subStartSolution") {//table
this.$refs.stepFormPackageRef.updateFormData("targetAcSolution", row.nd);

+ 39
- 9
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="getTableLabel('ladder')"
: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="getTableLabel('paralle')"
: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,11 +246,24 @@ 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';//
},
//
getTableLabel(type) {
const obj = {
"paralle": "template.common.pxpz",//线
"ladder": "template.common.jtpz",//
}
if(this.isGsp){
return "";
}
return obj[type] || '';//
},
//
deleteJcbRow(rowIndex) {
const jcbRef = this.$refs['jcbRef'];
if (jcbRef) {

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

@ -171,7 +171,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
compareTo: "pre",
multiple: true,
options: this.getDictOptions('business_pztj')

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

@ -175,7 +175,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
compareTo: "pre",
multiple: true,
options: this.getDictOptions('business_pztj')

+ 44
- 7
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,34 @@ 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(),
rowIndex:dataSource.length,
};
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);
},
@ -180,7 +213,8 @@ export default {
const { targetStartSolution, subTargetStartSolution } = this.$refs.formPackageRef?.getFilledFormData();
const params = {
subTargetStartSolution,
headerSelectFields
headerSelectFields,
dataSource,
}
if (targetStartSolution) {
this.updateTargetStartSolutionVolume(item, targetStartSolution, params);
@ -234,16 +268,19 @@ export default {
}
},
bodySelectChange(data) {
this.paralleUpdateTargetStartSolutionVolume(data.item, data.headerSelectFields);
if(this.configType === "paralle"){//
this.paralleUpdateTargetStartSolutionVolume(data.item, data.headerSelectFields, data.dataSource);
}
},
//
paralleUpdateTargetStartSolutionVolume(item, headerSelectFields) {
paralleUpdateTargetStartSolutionVolume(item, headerSelectFields, dataSource) {
const volumne = item.targetStartSolutionConcentration;
const subTargetStartSolution = item.targetStartSolutionConcentrationPrecision;
const params = {
headerSelectFields,
subTargetStartSolution
subTargetStartSolution,
}
if (volumne) {
this.updateTargetStartSolutionVolume(item, volumne, params);
}
@ -268,7 +305,7 @@ export default {
const { targetStartSolution, subTargetStartSolution } = this.$refs.formPackageRef?.getFilledFormData();
const params = {
subTargetStartSolution,
headerSelectFields
headerSelectFields,
}
this.batchUpdateTargetStartSolutionVolume(dataSource, targetStartSolution, params)
} else {

+ 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:this.fillType !== 'actFill'
},
}
},

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

@ -8,27 +8,20 @@
<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" />
<CustomTable
:ref="`tableRef`"
:columns="tableColumns"
:formData="formData"
operationWidth = "80px"
:prefixKey = "`table`"
fieldItemLabel = "template.yp.yp003.ybxx"
@clickButton="handleClickButton"
@onCheckboxTagChange="onCheckboxTagChange"
:showOperation="fillType === 'preFill'"
>
<CustomTable :ref="`tableRef`" :columns="tableColumns" :formData="formData" operationWidth="80px"
:prefixKey="`table`" fieldItemLabel="template.yp.yp003.ybxx" @clickButton="handleClickButton"
@onCheckboxTagChange="onCheckboxTagChange" :showOperation="fillType === 'preFill'">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaionDelete :row="row" :rowIndex="rowIndex" :columns="columns" @deleteRow="deleteRow" ></TableOpertaionDelete>
<TableOpertaionDelete :row="row" :rowIndex="rowIndex" :columns="columns"
@deleteRow="deleteRow"></TableOpertaionDelete>
</template>
</CustomTable>
<LineLabel label="template.yp.yp003.fqxx" />
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPackage fieldItemLabel="template.yp.yp003.fqyq" label="template.yp.yp003.fqyq"
@ -39,7 +32,8 @@
</div>
</div>
<!-- <button @click="onSave">保存</button> -->
<ImportExcelDialog ref="ImportExcelDialog" @onLoadData="onLoadExcelData" :downloadArr="['动物编号']" @downloadExcelTemplate="downloadExcelTemplate" />
<ImportExcelDialog ref="ImportExcelDialog" @onLoadData="onLoadExcelData" :downloadArr="['动物编号']"
@downloadExcelTemplate="downloadExcelTemplate" />
</div>
</template>
@ -58,7 +52,7 @@ import ImportExcelDialog from '../../dialog/ImportExcelDialog'
export default {
name: "YP003",
components: { ImportExcelDialog,BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable,TableOpertaionDelete },
components: { ImportExcelDialog, BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaionDelete },
mixins: [templateMixin],
props: {
fillType: {
@ -136,10 +130,10 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther", otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')
options: this.getDictOptions('business_pztj'),
}
}
},
@ -181,18 +175,18 @@ export default {
bodyFillType: 'actFill',
width: 100,
bodyMaxlength: 50,
},{
}, {
label: 'template.yp.yp003.dwbh',
prop: 'dwbh',
bodyType: 'checkboxTag',
bodyFillType: 'actFill',
bodySubType:"button",
bodySubFillType:"preFill",
bodySubButtonName:"template.common.importTemplate",
bodySubKey:"exportBtn",
showBodySub:this.fillType === "preFill",
bodySubType: "button",
bodySubFillType: "preFill",
bodySubButtonName: "template.common.importTemplate",
bodySubKey: "exportBtn",
showBodySub: this.fillType === "preFill",
width: 280,
},{
}, {
label: 'template.yp.yp003.ypsl',
prop: 'ypsl',
bodyType: 'input',
@ -212,19 +206,19 @@ export default {
},
methods: {
//
handleClickButton(key,rowIndex,colIndex,e,data){
if(key === "exportBtn"){
handleClickButton(key, rowIndex, colIndex, e, data) {
if (key === "exportBtn") {
this.currentRowIndex = rowIndex;
this.$refs.ImportExcelDialog.show()
}
},
//
getFilledFormData() {
return this.getFilledFormDataByRefs(["baseInfoRef", "tableRef", "stepRef", "fqyqRef","remarkRef"])
return this.getFilledFormDataByRefs(["baseInfoRef", "tableRef", "stepRef", "fqyqRef", "remarkRef"])
},
//
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "tableRef", "stepRef", "fqyqRef","remarkRef"]);
let content = await this.validFormFields(["baseInfoRef", "tableRef", "stepRef", "fqyqRef", "remarkRef"]);
return content;
},
getResource() {
@ -253,28 +247,27 @@ export default {
},
onLoadExcelData(excelData) {
const data = excelData.splice(1);
const tagData = data.map((item)=>{
const tagData = data.map((item) => {
return {
checked:undefined,
tagValue:item[0],
checked: undefined,
tagValue: item[0],
}
})
this.$refs.tableRef.updateDataSourceByRowIndex(this.currentRowIndex,{dwbh:tagData});
this.$refs.tableRef.updateDataSourceByRowIndex(this.currentRowIndex, { dwbh: tagData });
this.$refs.tableRef.onErrorUpdate(this.currentRowIndex, 1, 'dwbh', false)
this.$refs.ImportExcelDialog.cancel()
setTimeout(() => {
this.justUpdateFilledFormData();
}, 100);
},
downloadExcelTemplate(arr){
downloadExcelTemplate(arr) {
this.exportExcel(arr)
},
onCheckboxTagChange(rowIndex,colIndex,data){
const num = data.filter((item)=>item.checked).length;
this.$refs.tableRef.updateDataSourceByRowIndex(rowIndex, {'ypsl':num})
onCheckboxTagChange(rowIndex, colIndex, data) {
const num = data.filter((item) => item.checked).length;
this.$refs.tableRef.updateDataSourceByRowIndex(rowIndex, { 'ypsl': num })
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
</style>
<style rel="stylesheet/scss" lang="scss"></style>

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

@ -114,7 +114,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')

+ 32
- 3
src/views/business/comps/template/comps/yp/YP005.vue View File

@ -119,7 +119,7 @@ export default {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
otherCode: "actOther",otherCodeCompareTo: "preOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')
@ -172,7 +172,13 @@ export default {
bodySubButtonName:"template.yp.yp005.ks",
bodySubKey:"startBtn",
showBodySub:this.fillType === "actFill",
bodyThirdType:"button",
bodyThirdButtonName:"结束",
bodyThirdKey:"endBtn",
bodyThirdFillType:"actFill",
width: 280,
bodyDisabled:true,
bodySubDisabled:this.fillType !== 'actFill',
}]
},
},
@ -187,14 +193,37 @@ export default {
methods: {
//
handleClickButton(key,rowIndex,colIndex,e,data){
let content = this.getFilledFormData();
let tableList = content.stepTableFormData
let qxsj = tableList[rowIndex].qxsj
let timeArr = qxsj?qxsj.split('~'):['','']
if(key === "exportBtn"){
this.currentRowIndex = rowIndex;
this.$refs.ImportExcelDialog.show()
}
if(key === "startBtn"){
let startTime = moment().format("YYYY/MM/DD HH:mm")
timeArr[0] = startTime
this.$refs.tableRef.updateDataSourceByRowIndex(rowIndex,{
qxsj: moment().format("YYYY/MM/DD HH:mm"),
})
qxsj: timeArr.join('~'),
},{signData:data,updateFields:['qxsj']})
// this.$nextTick(() => {
// //
// const params = {
// type: "fieldChanged",
// newRecord: null,
// resourceList: null,
// }
// EventBus.$emit('onModifyRecord', params,)
// })
}
if(key === "endBtn"){
let endTime = moment().format("YYYY/MM/DD HH:mm")
timeArr[1] = endTime
this.$refs.tableRef.updateDataSourceByRowIndex(rowIndex,{
qxsj: timeArr.join('~'),
},{signData:data,updateFields:['qxsj']})
// this.$nextTick(() => {
// //

+ 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',

+ 2
- 0
src/views/business/comps/template/formConfig/sp/SP0019.js View File

@ -54,6 +54,8 @@ export const getStorageFormConfig = ($this)=>{
fillType: 'actFill',
options: $this.spzxhOptions,
filledCodes:['mc','bh'],
selectRemote: true,
},
}
},

+ 73
- 23
src/views/business/comps/template/mixins/templateMixin.js View File

@ -1,6 +1,6 @@
import moment from 'moment'
import { getLatestSn, getLatestSnArr } from '@/api/template';
import { isValueEmpty, getStringWidth } from '@/utils/index';
import { isValueEmpty, getStringWidth,getuuid } from '@/utils/index';
import { isCommonUnit } from "@/utils/conTools";
import { sj_subpackage, sj_startConfiguration, sj_configurationCompleted } from '@/api/business/sj/sj';
import { convertConcentration } from "@/utils/conConverter";//浓度单位转换
@ -60,6 +60,16 @@ export default {
'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: {
@ -83,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
@ -131,6 +142,7 @@ export default {
templateId,
templateSn,
startDate,
submittedCodes,
bdmc,
endDate,
id
@ -145,6 +157,7 @@ export default {
templateMcEn,
templateId,
templateSn,
submittedCodes,
startDate,
bdmc,
endDate,
@ -161,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 (effectivePeriod === "NA" || effectivePeriodUnit === "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')
@ -269,10 +288,14 @@ export default {
onBeforeReagentSubmit(data) {
const { selectData, callback, key, formFields } = data;
const { subTargetStartSolution } = formFields;
//判断选择的浓度单位和预制的浓度单位是否一致
if (key === "subStartSolution" && !isCommonUnit(selectData.row.nddw, [subTargetStartSolution])) {//选择起始源溶液需要同步更新table的变更记录。
callback.prevent('浓度单位与预制不符,请重新选择或申请废止并重新预制。');
}
if(selectData.row.nd === "NA"){
callback.prevent('当前实际浓度为NA,请重新选择');
}
},
getFormDataByTemplateData() {
let o = {};
@ -479,18 +502,20 @@ export default {
actSolutionConcentrationPrecision: 3, //小数点精度默认为3
targetDiluentVolumePrecision: 3, //小数点精度默认为3
targetStartSolutionVolumePrecision: 3, //小数点精度默认为3
targetSolutionCode: `STD${Number(codeSTD) - index}`
targetSolutionCode: `CA-WS-STD${Number(codeSTD) - index}`,
id:getuuid(),
rowIndex:index,
}))
this.$refs.stepTableRef.updateDataSource(arr)
} else if (key === 'targetStartSolution' || key === 'subTargetStartSolution') {
//起始溶液体积失焦时,更新目标溶液预计浓度
const arr = this.$refs.stepTableRef?.getDataSource();
const { headerSelectFields } = this.$refs.stepTableRef?.getFilledFormData();
const { headerSelectFields,stepTableFormData=[] } = this.$refs.stepTableRef?.getFilledFormData();
const params = {
subTargetStartSolution,
headerSelectFields
}
headerSelectFields,
dataSource:stepTableFormData,
}
arr.forEach((item, rowIndex) => {
this.updateTargetStartSolutionVolume(
item,
@ -502,6 +527,7 @@ export default {
},
//批量更新目标起始源溶液体积
batchUpdateTargetStartSolutionVolume(arr, startConcentration, params) {
params.dataSource = arr;
arr.forEach((item, rowIndex) => {
this.updateTargetStartSolutionVolume(
item,
@ -529,7 +555,8 @@ export default {
)
const params = {
subTargetStartSolution: subTargetStartSolution,
headerSelectFields
headerSelectFields,
dataSource
}
if (isValueEmpty(volume)) {
this.$message.error('请先选择预设起始源溶液浓度')
@ -554,7 +581,9 @@ export default {
} else {
initNd = dataSource[rowIndex - 1].actSolutionConcentration;
}
if (isValueEmpty(initNd)) {
console.log("initNd",initNd)
this.$message.error('请先选择起始源溶液')
return
} else {
@ -569,13 +598,17 @@ export default {
//计算目标溶液浓度
calcNd(item, targetAcSolution, params) {
console.log(params, "ppp")
console.log(item,params, "ppp")
// debugger
//targetStartSolutionUnit(实际起始源溶液浓度单位)
const { targetStartSolutionUnit, headerSelectFields } = params;
const { actStartSolutionVolumeUnit, actSolutionVolumeUnit, actDiluentVolumeUnit, actSolutionConcentrationUnit } = headerSelectFields;
let initUnit = targetStartSolutionUnit;
if (item.rowIndex > 0) {
initUnit = actSolutionConcentrationUnit;
}
//actStartSolutionVolumeUnit(实际起始源溶液体积单位)actSolutionVolumeUnit(实际目标溶液体积单位)
//actDiluentVolumeUnit(实际稀释液体积单位)actSolutionConcentrationUnit(实际目标溶液浓度单位)
const { actStartSolutionVolumeUnit, actSolutionVolumeUnit, actDiluentVolumeUnit, actSolutionConcentrationUnit } = headerSelectFields;
//实际源溶液浓度÷(实际终体积÷源溶液加入体积);
const precision = item.actSolutionConcentrationPrecision
const volPrecision = item.actSolutionVolumePrecision;
@ -583,10 +616,9 @@ export default {
const actDiluentVolume = item.actDiluentVolume
//实际起始源溶液体积
const actStartSolutionVolume = item.actStartSolutionVolume
if (isValueEmpty(actStartSolutionVolume) || isValueEmpty(actDiluentVolume) || isValueEmpty(targetStartSolutionUnit)) {
if (isValueEmpty(actStartSolutionVolume) || isValueEmpty(actDiluentVolume) || isValueEmpty(initUnit)) {
return false
}
const converActDiluentVolume = volumeConverter.convert(actDiluentVolume + actDiluentVolumeUnit, actSolutionVolumeUnit)
const converActStartSolutionVolume = volumeConverter.convert(actStartSolutionVolume + actStartSolutionVolumeUnit, actSolutionVolumeUnit)
//实际源溶液加入体积+实际稀释液加入体积
@ -596,7 +628,12 @@ export default {
const targetStartVolUnit = actSolutionConcentrationUnit.split("/")[1];//先按照预设目标溶液浓度的单位标准
const converActVol = volumeConverter.convert(actVol + actSolutionVolumeUnit, targetStartVolUnit)
const converActDiluentVolume1 = volumeConverter.convert(actStartSolutionVolume + actStartSolutionVolumeUnit, targetStartVolUnit)
const converTargetAcSolution = convertConcentration.convert(targetAcSolution + targetStartSolutionUnit, actSolutionConcentrationUnit)
const converArr = (targetAcSolution+'').split("/");
converArr.map((item)=>{
return convertConcentration.convert(item + initUnit, actSolutionConcentrationUnit)
})
console.log(converArr,"converArr")
const converTargetAcSolution = convertConcentration.convert(targetAcSolution + initUnit, actSolutionConcentrationUnit)
// 实际目标溶液浓度 = 实际源溶液浓度÷(实际终体积÷源溶液加入体积);
const actNd = (
parseFloat(converTargetAcSolution) / (
@ -615,15 +652,23 @@ export default {
},
//更新起始溶液体积时,计算预设起始溶液体积和预设稀释液体积
updateTargetStartSolutionVolume(item, volume, unitParams) {
const { rowIndex } = item
const { subTargetStartSolution, headerSelectFields, dataSource=[] } = unitParams
const { targetSolutionConcentrationUnit, targetSolutionVolumeUnit, targetStartSolutionVolumeUnit, targetDiluentVolumeUnit } = headerSelectFields
let initNd = volume,unit = subTargetStartSolution;
//平行配置不会传dataSource;
if (rowIndex > 0 && dataSource.length > 0) {
initNd = dataSource[rowIndex - 1].targetSolutionConcentration;
unit = targetSolutionConcentrationUnit;
}
const precision = item.targetStartSolutionVolumePrecision || 0
const concentration = item.targetSolutionConcentration
const targetVolume = item.targetSolutionVolume
const { subTargetStartSolution, headerSelectFields } = unitParams
const { targetSolutionConcentrationUnit, targetSolutionVolumeUnit, targetStartSolutionVolumeUnit, targetDiluentVolumeUnit } = headerSelectFields
if (
isValueEmpty(concentration) ||
isValueEmpty(targetVolume) ||
isValueEmpty(subTargetStartSolution) ||
isValueEmpty(unit) ||
isValueEmpty(targetSolutionConcentrationUnit) ||
isValueEmpty(targetSolutionVolumeUnit) ||
isValueEmpty(targetStartSolutionVolumeUnit) ||
@ -631,10 +676,15 @@ export default {
) {
return;
}
const targetStartVolUnit = targetSolutionConcentrationUnit.split("/")[1];//先按照预设目标溶液浓度的单位标准
const volumeArr = (initNd+'').split("/");
const converArr = volumeArr.map((item)=>{
return convertConcentration.convert(item + unit, targetSolutionConcentrationUnit)
})
console.log(converArr,"converArr")
//将起始溶液浓度转换为和预设目标溶液浓度一样的单位再计算;
const converStartCon = convertConcentration.convert(volume + subTargetStartSolution, targetSolutionConcentrationUnit)
const converStartCon = convertConcentration.convert(initNd + unit, targetSolutionConcentrationUnit)
//将预设目标溶液体积转换为和预设目标溶液浓度单位的分母一样的单位再计算;如:预设目标溶液浓度单位为mg/mL,预设目标溶液体积单位为uL,则将预设目标溶液体积转换为mL
const convertTargetVol = volumeConverter.convert(targetVolume + targetSolutionVolumeUnit, targetStartVolUnit)

+ 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

+ 11
- 1
src/views/business/form/drug/list.vue View File

@ -240,7 +240,17 @@ export default {
},
enter(row){
this.saveSimpleLog({name:row.name+'('+row.sn+')',nameEn:row.name+'('+row.sn+')',jcmc:'进入麻精药表单',jcmcEn:'Enter Controlled Drug'})
this.$tab.openPage(" ", '/drug/enter/' + row.id+'/ytbd')
// this.$tab.openPage(" ", '/drug/enter/' + row.id+'/ytbd')
let path = '/drug/enter/' + row.id+'/ytbd'
let index = _.findIndex(this.$store.state.tagsView.visitedViews, (tab) => {
return tab.path === path
})
if (index > -1) {
this.$tab.refreshPage(this.$store.state.tagsView.visitedViews[index]);
} else {
this.$tab.openPage(" ", path)
}
// this.showType = 'enter'
// this.$refs.enter.show(row)
},

+ 5
- 8
src/views/business/form/nonTrial/comp/syffList.vue View File

@ -9,12 +9,12 @@
<!-- 方法名称 -->
<el-form-item :label="$t('page.business.study.studyMethod.ffmc')" prop="ffmc">
<el-input v-model="searchForm.ffmc" :placeholder="$t('form.placeholderInput')" clearable
@keyup.enter.native="search" />
@keyup.enter.native="search" @change="search"/>
</el-form-item>
<!-- 创建人 -->
<el-form-item :label="$t('page.business.study.studyMethod.cjr')" prop="cjr">
<el-input v-model="searchForm.cjr" :placeholder="$t('form.placeholderInput')" clearable
@keyup.enter.native="search" />
<el-form-item :label="$t('page.business.study.studyMethod.cjr')" prop="createUser">
<el-input v-model="searchForm.createUser" :placeholder="$t('form.placeholderInput')" clearable
@keyup.enter.native="search" @change="search"/>
</el-form-item>
<!-- 创建时间 -->
<el-form-item :label="$t('page.business.study.studyMethod.cjsj') + ':'">
@ -141,10 +141,6 @@ export default {
pageNum: 1,
pageSize: 10,
studyId: '',
syjh: '',
syqy: '',
qyr: '',
jsr: '',
startDate: '',
endDate: ''
},
@ -179,6 +175,7 @@ export default {
},
reset() {
this.resetForm("searchForm")
this.daterange = []
this.search()
},
getList() {

+ 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

+ 11
- 1
src/views/business/form/nonTrial/list.vue View File

@ -240,7 +240,17 @@ export default {
},
enter(row){
this.saveSimpleLog({name:row.name+'('+row.sn+')',nameEn:row.name+'('+row.sn+')',jcmc:'进入非试验表单',jcmcEn:'Enter Non-study'})
this.$tab.openPage(" ", '/nonTrial/enter/' + row.id+'/ytbd')
// this.$tab.openPage(" ", '/nonTrial/enter/' + row.id+'/ytbd')
let path = '/nonTrial/enter/' + row.id+'/ytbd'
let index = _.findIndex(this.$store.state.tagsView.visitedViews, (tab) => {
return tab.path === path
})
if (index > -1) {
this.$tab.refreshPage(this.$store.state.tagsView.visitedViews[index]);
} else {
this.$tab.openPage(" ", path)
}
// this.showType = 'enter'
// this.$refs.enter.show(row)
},

+ 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>

+ 188
- 0
src/views/business/resource/gsp/comps/gsp/Cc.vue View File

@ -0,0 +1,188 @@
<template>
<div>
<!-- 存储弹窗 -->
<el-dialog :title="$t('page.business.resource.gyzj.cunchu')" :visible.sync="open" width="800px" append-to-body
:close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" v-if="open">
<div class="sbzdtcma"> <input type="text"> <input type="password" show-password> </div>
<el-row>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gyzj.mc')">
<el-input type="text" v-model="form.mc" maxlength="50" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gyzj.bh')">
<el-input type="text" v-model="form.bh" maxlength="50" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.mjy.ccwz')" prop="ccwz">
<BusinessSelect v-model="form.ccwz" dictType="business_ccwz" @change="ccwzChange"></BusinessSelect>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.mjy.cctj')" prop="cctj">
<BusinessSelect v-model="form.cctj" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.remark')" prop="remark">
<el-input type="textarea" v-model="form.remark" :rows="5" maxlength="500"
:placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gyzj.qmr1Id')">
<el-input type="text" v-model="nickName" maxlength="50" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gyzj.qmr1Id') + $t('form.password')" prop="qmr1mm">
<el-input type="password" show-password v-model="form.qmr1mm" maxlength="20"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gyzj.qmr2Id')" prop="qmr2Id">
<SelectDeptUser v-model="form.qmr2Id" key="qmr2Id" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gyzj.qmr2Id') + $t('form.password')" prop="qmr2mm">
<el-input type="password" show-password v-model="form.qmr2mm" maxlength="20"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-input type="text" :value="form.qmyyMc" maxlength="50" disabled />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="save">{{ $t('form.confirm') }}</el-button>
<el-button @click="cancel">{{ $t('form.cancel') }}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { cc } from "@/api/business/gsp/gsp"
import { mapGetters } from 'vuex'
import SelectDeptUser from '@/views/business/comps/select/SelectDeptUser';
import BusinessSelect from '@/views/business/comps/select/BusinessSelect';
export default {
name: "Cc",
components: { SelectDeptUser, BusinessSelect },
data() {
return {
isBatch: false,
ids: [],
selectList: [],
open: false,
form: {},
rules: {
ccwz: [{
required: true,
message: ' ',
trigger: 'blur'
}],
cctj: [{
required: true,
message: ' ',
trigger: 'blur'
}],
qmr1Id: [{
required: true,
message: ' ',
trigger: 'blur'
}],
qmr1mm: [{
required: true,
message: ' ',
trigger: 'blur'
}],
qmr2Id: [{
required: true,
message: ' ',
trigger: 'blur'
}],
qmr2mm: [{
required: true,
message: ' ',
trigger: 'blur'
}]
}
}
},
computed: {
...mapGetters([
'nickName', 'name'
]),
},
created() {
},
methods: {
ccwzChange(val){
this.form.cctj=val.wc
},
cancel() {
this.open = false
},
reset() {
this.form = {
id: null,
cctj: '',
mc:'',
bh:'',
remark: '',
qmr1Id: '',
qmr1mm: '',
qmr2Id: '',
qmr2mm: '',
remark: '',
ccwz: '',
qmyyMc: this.$t('page.business.resource.gyzj.cunchu'),
}
this.resetForm("form")
},
show(row) {
this.reset()
this.form.id = row.resourceId
this.form.bh = row.bh
this.form.mc = row.mc
this.open = true
},
save() {
this.$refs["form"].validate(valid => {
if (valid) {
this.$modal.loading()
cc(this.form).then(response => {
this.open = false
this.$emit('callback')
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
}
})
}
}
}
</script>

+ 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,

+ 237
- 0
src/views/business/resource/gsp/comps/gsp/Xq copy.vue View File

@ -0,0 +1,237 @@
<template>
<!-- 详情 -->
<div v-if="open">
<div class="detail-container">
<div class="detail-top">
<div class="left-top">
<img src="@/assets/images/back.png" @click="cancel()" />
<div class="left-title"></div>
</div>
<div class="right-top">
<el-button @click="cancel()">{{ $t('form.cancel') }}</el-button>
<el-button @click="exportExcel()">{{ $t('form.export') }}</el-button>
</div>
</div>
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ $t('page.business.resource.gyzj.gyzjxq')
}}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content-left">
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.resource.gyzj.jbxx') }}</div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gyzj.mc') }}</div>
<el-input type="text" :value="form.mc" maxlength="50" disabled />
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gyzj.bh') }}</div>
<el-input type="text" :value="form.bh" maxlength="50" disabled />
</div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gyzj.nd') }}</div>
<el-input type="text" :value="form.nd" maxlength="50" disabled> <template slot="append">{{
form.nddw }}</template>
</el-input>
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gyzj.kcl') }}</div>
<el-input type="text" :value="form.kc" maxlength="50" disabled> <template slot="append">{{
form.kcdw }}</template> </el-input>
</div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gyzj.sxrq') }}</div>
<el-input type="text" :value="form.sxrq" maxlength="50" disabled />
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gyzj.cctj') }}</div>
<el-input type="text" :value="form.cctj" maxlength="50" disabled />
</div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gyzj.ccwz') }}</div>
<el-input type="text" :value="form.ccwz" maxlength="50" disabled />
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gyzj.zjzt') }}</div>
<el-select v-model="form.zjzt" disabled style="width: 100%;">
<el-option key="1" :label="$t('page.business.resource.resource.zjzt.rk')" :value="1" />
<el-option key="2" :label="$t('page.business.resource.resource.zjzt.wrk')" :value="2" />
<el-option key="3" :label="$t('page.business.resource.resource.zjzt.yff')" :value="3" />
<el-option key="5" :label="$t('page.business.resource.resource.zjzt.ysd')" :value="5" />
<el-option key="7" :label="$t('page.business.resource.resource.zjzt.dgd')" :value="7" />
<el-option key="9" :label="$t('page.business.resource.resource.zjzt.gd')" :value="9" />
<el-option key="11" :label="$t('page.business.resource.resource.zjzt.djd')" :value="11" />
</el-select>
</div>
</div>
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.resource.gyzj.bdxx') }} </div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gyzj.sssy') }}</div>
<el-input type="text" :value="form.studyMc" maxlength="50" disabled />
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gyzj.ssbd') }}</div>
<el-input type="text" :value="form.bdMc" maxlength="50" disabled />
</div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gyzj.bdssr') }}</div>
<el-input type="text" :value="form.bdgsrMc" maxlength="50" disabled />
</div>
</div>
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.resource.gyzj.tz') }}</div>
</div>
<div class="pal">
<el-table :data="tzList" v-loading="loadingTz">
<el-table-column :label="$t('page.business.resource.gyzj.syr')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.qmrMc }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gyzj.lqghr')" align="center"
:show-overflow-tooltip="true" width="200px">
<template slot-scope="scope">
{{ scope.row.lqrMc }}{{ scope.row.ghrMc }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gyzj.ffjsr')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.ffrMc }}{{ scope.row.jsrMc }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gyzj.czlx')" align="center"
:prop="$i18n.locale === 'zh_CN' ? 'qmyy' : 'qmyyEn'" width="100" />
<el-table-column :label="$t('page.business.resource.gyzj.bdmc')" align="center"
prop="bdMc" width="100" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('page.business.resource.gyzj.czl')" align="center"
:show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.czl }}{{ scope.row.czldw }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gyzj.bzyy')" align="center" prop="remark"
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.gyzj.ccsj')" align="center" prop="createTime"
width="150px" />
</el-table>
</div>
<div class="pal">
<pagination v-show="totalTz > 0" :total="totalTz" :page.sync="queryParamstZ.pageNum"
:limit.sync="queryParamstZ.pageSize" @pagination="getTzList" />
</div>
</div>
<div class="content-right">
<div class="content-title">
<div class="line"></div>
<div class="subtitle"> {{ $t('page.business.resource.gyzj.jcgj') }}</div>
</div>
<jcgjList ref="jcgjList" @handleQuery="getJjcgjList" />
<pagination v-show="jcgjTotal > 0" small layout="prev, pager, next" :total="jcgjTotal"
@pagination="getJjcgjList" />
</div>
</div>
</div>
</div>
</template>
<script>
import { info, tzList, jcgjList,exportDetail } from "@/api/business/gyzj/gyzj"
import JcgjList from "@/views/business/comps/common/JcgjList";
export default {
name: "Xq",
components: { JcgjList },
data() {
return {
form: {},
appTitle: process.env.VUE_APP_TITLE,
tzList: [],
totalTz: 0,
loadingTz: true,
open: false,
queryParamstZ: {
gyzjId: null,
pageNum: 1,
pageSize: 10
},
jcgjTotal: 0,
jcgjList: [],
queryJcgjParams: {
pageNum: 1,
gyzjId: null,
pageSize: 10,
}
}
},
created() {
},
methods: {
exportExcel() {
this.$modal.loading()
exportDetail({ id: this.form.id,lang:this.$store.getters.language.split("_")[0],version:this.appTitle }).then(response => {
window.open(process.env.VUE_APP_FILE_DOMAIN +response.msg)
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
},
getJjcgjList(val) {
this.$modal.loading()
jcgjList(_.merge({}, this.queryJcgjParams, val)).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)
this.$modal.closeLoading()
}).finally(() => {
this.$modal.closeLoading()
})
},
cancel() {
this.open = false
this.$emit('callback')
},
getTzList() {
this.loadingTz = true
tzList(this.queryParamstZ).then(response => {
this.tzList = response.rows
this.totalTz = response.total
this.loadingTz = false
this.getJjcgjList()
})
},
show(row) {
this.$modal.loading()
this.queryParamstZ.gyzjId = row.id
this.queryJcgjParams.gyzjId = row.id
this.$modal.loading()
info({ id: row.id }).then(response => {
this.form = response.data
this.open = true
this.getTzList()
this.saveSimpleLog({name:row.bh,nameEn:row.bh,jcmc:'给药制剂详情',jcmcEn:'Formulation Detail'})
}).finally(() => {
this.$modal.closeLoading()
})
}
}
}
</script>

+ 2
- 2
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">
@ -107,7 +107,7 @@
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.qmbz')" prop="qmbz">
<el-form-item :label="$t('form.remark')" prop="qmbz">
<el-input type="textarea" v-model="form.qmbz" :rows="2" maxlength="500"
:placeholder="$t('form.placeholderInput')">
</el-input>

+ 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 = ''

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

Loading…
Cancel
Save