formula.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <template>
  2. <div v-if="componentDetail.type === 'radio'">
  3. <el-form ref="formIDVFRef" :model="formulaModalinfo" label-width="auto" size="large">
  4. <el-form-item :label="componentDetail.info.label">
  5. <!-- onkeyup="value = value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g,'$1')" -->
  6. <el-radio-group v-model="formulaModalinfo.type" size="large">
  7. <el-radio :value="componentDetail.info.value[0].value">
  8. {{ componentDetail.info.value[0].label }}
  9. </el-radio>
  10. <el-radio :value="componentDetail.info.value[1].value" class="ml-4">
  11. {{ componentDetail.info.value[1].label }}
  12. </el-radio>
  13. </el-radio-group>
  14. </el-form-item>
  15. </el-form>
  16. </div>
  17. </template>
  18. <script setup>
  19. import { onMounted, ref, watch } from 'vue'
  20. import wbsApi from '~api/data-fill/wbs'
  21. import { arrToKey, getObjValue } from 'js-fast-way'
  22. const props = defineProps({
  23. projectId: [String, Number],
  24. contractId: [String, Number],
  25. pkeyId: [String, Number],
  26. keyName: [String, Number],
  27. formparentId: [String, Number],
  28. checkKeys:[Array],
  29. })
  30. const projectId = ref(props.projectId)
  31. const contractId = ref(props.contractId)
  32. const pkey_id = ref(props.pkeyId)
  33. const key_name = ref(props.keyName)
  34. const formparent_id = ref(props.formparentId)
  35. const checkKeys = ref(props.checkKeys)
  36. //监听
  37. watch(() => [
  38. props.projectId,
  39. props.contractId,
  40. props.pkeyId,
  41. props.keyName,
  42. props.formparentId,
  43. props.checkKeys,
  44. ], ([pid, cid, pkeyId, keyName, formparentId, ckeys]) => {
  45. projectId.value = pid
  46. contractId.value = cid
  47. pkey_id.value = pkeyId
  48. key_name.value = keyName
  49. formparent_id.value = formparentId
  50. checkKeys.value = ckeys
  51. getPanel()
  52. })
  53. const formIDVFRef = ref(null)
  54. const componentDetail = ref({
  55. })
  56. const formulaModalinfo = ref({
  57. type: '',
  58. })
  59. //获取公式面板数据
  60. const getPanel = async () => {
  61. const pkeyIds = pkey_id.value
  62. if (pkeyIds) {
  63. let keys = checkKeys.value.length > 0 ? checkKeys.value.join(',') : key_name.value
  64. const { data } = await wbsApi.queryPanel({
  65. // key: key_name.value,
  66. key:keys,
  67. contractId: contractId.value,
  68. parentId: formparent_id.value,
  69. pkeyId: pkeyIds,
  70. }, false)
  71. const res = getObjValue(data)
  72. componentDetail.value = res
  73. formulaModalinfo.value.type = res?.info?.data ?? ''
  74. } else {
  75. window?.$message?.warning('pkeyId为空')
  76. }
  77. }
  78. const panelSave = async () => {
  79. const { error, code, msg } = await wbsApi.savePanelList({
  80. parentId: formparent_id.value,
  81. // key: key_name.value,
  82. keys:checkKeys.value.length > 0 ? checkKeys.value : [key_name.value],
  83. contractId: contractId.value,
  84. value: formulaModalinfo.value?.type,
  85. pkeyId: pkey_id.value,
  86. scope: componentDetail.value?.scope,
  87. code: componentDetail.value?.info?.code,
  88. })
  89. if (!error && code === 200) {
  90. window?.$message?.success('操作成功')
  91. }
  92. }
  93. // 暴露出去
  94. defineExpose({
  95. panelSave,
  96. })
  97. </script>