uncertainty.vue 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <!-- lax -->
  2. <template>
  3. <div class="uncertainty">
  4. <div v-if="!isReadonly" class="button">
  5. <el-button type="primary" size="mini" icon="ibps-icon-add" @click="handleAdd"> 添加</el-button>
  6. <el-button type="danger" size="mini" icon="ibps-icon-remove" @click="handleDelete"> 删除</el-button>
  7. </div>
  8. <div class="table">
  9. <el-table :data="showData" @selection-change="handleSelectionChange">
  10. <el-table-column type="selection" width="55" />
  11. <el-table-column type="index" width="55" label="序号" />
  12. <el-table-column label="检查项目" prop="canShuId" width="260">
  13. <template slot-scope="{row}">
  14. <ibps-custom-dialog
  15. v-model="row.canShuId"
  16. size="mini"
  17. template-key="xznlfwdd"
  18. type="dialog"
  19. class="custom-dialog"
  20. placeholder="请选择"
  21. icon="el-icon-search"
  22. style="width:100%"
  23. :disabled="isReadonly"
  24. @change-link-data="(key,data)=>canShuIdChange(key,data,row)"
  25. />
  26. </template>
  27. </el-table-column>
  28. <el-table-column label="质控数据评定的实验室内测量复现性引入的测量不确定度">
  29. <el-table-column label="n" prop="zhiKongCiShuN">
  30. <template slot-scope="{row}">
  31. <el-input v-if="!isReadonly" v-model="row.zhiKongCiShuN" size="mini" />
  32. <span v-else>{{ row.zhiKongCiShuN || '' }}</span>
  33. </template>
  34. </el-table-column>
  35. <el-table-column label="x̄" prop="junZhi">
  36. <template slot-scope="{row}">
  37. <el-input v-if="!isReadonly" v-model="row.junZhi" size="mini" />
  38. <span v-else>{{ row.junZhi || '' }}</span>
  39. </template>
  40. </el-table-column>
  41. <el-table-column label="CV%" prop="bianYi">
  42. <template slot-scope="{row}">
  43. <el-input v-if="!isReadonly" v-model="row.bianYi" size="mini" />
  44. <span v-else>{{ row.bianYi || '' }}</span>
  45. </template>
  46. </el-table-column>
  47. <el-table-column label="u(Rw)" prop="buQueDingDu">
  48. <template slot-scope="{row}">
  49. <el-input v-if="!isReadonly" v-model="row.buQueDingDu" size="mini" />
  50. <span v-else>{{ row.buQueDingDu || '' }}</span>
  51. </template>
  52. </el-table-column>
  53. <el-table-column label="uᵣₑₗ(Rᴡ)" prop="xiangDui">
  54. <template slot-scope="{row}">
  55. <el-input v-if="!isReadonly" v-model="row.xiangDui" size="mini" />
  56. <span v-else>{{ row.xiangDui || '' }}</span>
  57. </template>
  58. </el-table-column>
  59. </el-table-column>
  60. <el-table-column label="校准品不确定度uᵣₑₗ(CRM)" prop="chongFuCeLiang">
  61. <template slot-scope="{row}">
  62. <el-input v-if="!isReadonly" v-model="row.chongFuCeLiang" size="mini" />
  63. <span v-else>{{ row.chongFuCeLiang || '' }}</span>
  64. </template>
  65. </el-table-column>
  66. <el-table-column label="ucᵣₑₗ" prop="xiangDuiKuoZhan">
  67. <template slot-scope="{row}">
  68. <el-input v-if="!isReadonly" v-model="row.xiangDuiKuoZhan" size="mini" />
  69. <span v-else>{{ row.xiangDuiKuoZhan || '' }}</span>
  70. </template>
  71. </el-table-column>
  72. <el-table-column label="Uᵣₑₗ (k=2)" prop="muBiao">
  73. <template slot-scope="{row}">
  74. <el-input v-if="!isReadonly" v-model="row.muBiao" size="mini" />
  75. <span v-else>{{ row.muBiao || '' }}</span>
  76. </template>
  77. </el-table-column>
  78. <el-table-column label="目标不确定度(TEa)" prop="heCheng">
  79. <template slot-scope="{row}">
  80. <el-input v-if="!isReadonly" v-model="row.heCheng" size="mini" />
  81. <span v-else>{{ row.heCheng || '' }}</span>
  82. </template>
  83. </el-table-column>
  84. <el-table-column label="结果判定" prop="panDing">
  85. <template slot-scope="{row}">
  86. <el-select v-if="!isReadonly" v-model="row.panDing" placeholder="请选择" size="mini" style="width:100%">
  87. <el-option
  88. v-for="item in ['符合','不符合']"
  89. :key="item"
  90. :label="item"
  91. :value="item"
  92. />
  93. </el-select>
  94. <span v-else>{{ row.panDing || '' }}</span>
  95. </template>
  96. </el-table-column>
  97. </el-table>
  98. </div>
  99. <el-pagination
  100. style="margin-top: 5px; padding-bottom: 10px"
  101. :current-page="pagination.currentPage"
  102. :page-sizes="[10, 20,30, 50]"
  103. :page-size="pagination.pageSize"
  104. layout="prev,pager,next,jumper,sizes,->,total"
  105. :total="tableData.length"
  106. @size-change="handleSizeChange"
  107. @current-change="handleCurrentChange"
  108. />
  109. </div>
  110. </template>
  111. <script>
  112. export default {
  113. components: {
  114. IbpsCustomDialog: () => import('@/business/platform/data/templaterender/custom-dialog')
  115. },
  116. props: {
  117. formData: {
  118. type: Object,
  119. default: () => ({})
  120. },
  121. readonly: {
  122. type: Boolean,
  123. default: false
  124. }
  125. },
  126. data () {
  127. return {
  128. tableData: [],
  129. multipleSelection: [],
  130. pagination: {
  131. pageSize: 10,
  132. currentPage: 1
  133. }
  134. }
  135. },
  136. computed: {
  137. showData () {
  138. const start = (this.pagination.currentPage - 1) * this.pagination.pageSize
  139. const end = start + this.pagination.pageSize
  140. return this.tableData.slice(start, end)
  141. },
  142. isReadonly () {
  143. return this.readonly
  144. }
  145. },
  146. watch: {
  147. tableData: {
  148. handler (val) {
  149. this.$emit('change-data', 'clbqddpdbgzb', val)
  150. },
  151. deep: true
  152. },
  153. 'formData.clbqddpdbgzb': {
  154. handler (val) {
  155. this.tableData = val
  156. // console.log('val', val)
  157. }
  158. }
  159. },
  160. methods: {
  161. // 当前页码改变
  162. handleCurrentChange (val) {
  163. this.pagination.currentPage = val
  164. },
  165. // 页码选择器改变
  166. handleSizeChange (val) {
  167. this.pagination.pageSize = val
  168. this.pagination.currentPage = 1
  169. },
  170. // 分页连续序号
  171. showIndex (index) {
  172. return index + 1 + (this.pagination.currentPage - 1) * this.pagination.pageSize
  173. },
  174. canShuIdChange (key, data, row) {
  175. row.pingDingCanShu = data['jian_yan_xiang_mu'] || ''
  176. },
  177. handleAdd () {
  178. this.tableData.push({
  179. 'id': '',
  180. 'diDian': '',
  181. 'parentId': '',
  182. 'canShuId': '',
  183. 'pingDingCanShu': '',
  184. 'zhiKongCiShuN': '',
  185. 'junZhi': '',
  186. 'bianYi': '',
  187. 'buQueDingDu': '',
  188. 'xiangDui': '',
  189. 'chongFuCeLiang': '',
  190. 'fangFa': '',
  191. 'duoCi': '',
  192. 'pianYi': '',
  193. 'xiangDuiKuoZhan': '',
  194. 'muBiao': '',
  195. 'heCheng': '',
  196. 'panDing': '符合'
  197. })
  198. },
  199. handleDelete () {
  200. this.tableData = this.tableData.filter(item => !this.multipleSelection.includes(item))
  201. },
  202. handleSelectionChange (val) {
  203. this.multipleSelection = val
  204. }
  205. }
  206. }
  207. </script>
  208. <style lang="scss">
  209. .uncertainty{
  210. .button{
  211. display: flex;
  212. justify-content: flex-end;
  213. .el-button+.el-button{
  214. margin-left: 0;
  215. margin-right: 0;
  216. }
  217. }
  218. }
  219. </style>