row-data.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <template>
  2. <hc-new-dialog v-model="isShow" is-table widths="666px" title="修改项目支付项" :loading="saveLoading" @save="modalSave">
  3. <el-scrollbar class="hc-dialog-scrollbar">
  4. <el-form ref="formRef" class="p-2" label-position="left" label-width="auto" :model="formModel" :rules="formRules">
  5. <el-form-item label="支付项编号:">
  6. <el-input v-model="formModel.payNumber" />
  7. </el-form-item>
  8. <el-form-item label="支付项名称:">
  9. <el-input v-model="formModel.payName" />
  10. </el-form-item>
  11. <el-form-item label="支付项类型:">
  12. <el-select v-model="formModel.payType" block>
  13. <el-option v-for="item in payOptions" :key="item.id" :label="item.dictValue" :value="item.dictKey" />
  14. </el-select>
  15. </el-form-item>
  16. <el-form-item class="nowrap" label="合同计算公式:">
  17. <el-input v-model="formModel.contractFormulaIds" class="flex-1" disabled />
  18. <el-link type="primary" class="ml-2 line-height-normal" @click="formulaClick">添加公式</el-link>
  19. <el-link type="danger" class="ml-2 line-height-normal">删除公式</el-link>
  20. </el-form-item>
  21. <el-form-item class="nowrap" label="变更计算公式:">
  22. <el-input v-model="formModel.updateFormulaIds" disabled class="flex-1" />
  23. <el-link type="primary" class="ml-2 line-height-normal">添加公式</el-link>
  24. <el-link type="danger" class="ml-2 line-height-normal">删除公式</el-link>
  25. </el-form-item>
  26. <el-form-item class="nowrap" label="本期计算公式:">
  27. <el-input v-model="formModel.currentFormulaIds" disabled class="flex-1" />
  28. <el-link type="primary" class="ml-2 line-height-normal">添加公式</el-link>
  29. <el-link type="danger" class="ml-2 line-height-normal">删除公式</el-link>
  30. </el-form-item>
  31. <el-form-item label="是否为扣款项:">
  32. <el-select v-model="formModel.isDeduct" block>
  33. <el-option label="是" :value="1" />
  34. <el-option label="否" :value="0" />
  35. </el-select>
  36. </el-form-item>
  37. <el-form-item label="是否加粗:">
  38. <el-select v-model="formModel.isBoldText" block>
  39. <el-option label="是" :value="1" />
  40. <el-option label="否" :value="0" />
  41. </el-select>
  42. </el-form-item>
  43. <el-form-item label="是否手动输入:">
  44. <el-select v-model="formModel.isManualInput" block>
  45. <el-option label="是" :value="1" />
  46. <el-option label="否" :value="0" />
  47. </el-select>
  48. </el-form-item>
  49. <el-form-item label="是否显示百分比:">
  50. <el-select v-model="formModel.isShowPercent" block>
  51. <el-option label="是" :value="1" />
  52. <el-option label="否" :value="0" />
  53. </el-select>
  54. </el-form-item>
  55. <el-form-item label="支付项适用类型:">
  56. <el-select v-model="formModel.payApplicableType" block>
  57. < <el-option v-for="item in payAppOptions" :key="item.id" :label="item.dictValue" :value="item.dictKey" />
  58. </el-select>
  59. </el-form-item>
  60. <el-form-item label="排序号:">
  61. <el-input v-model="formModel.sort" />
  62. </el-form-item>
  63. <el-form-item label="备注:">
  64. <el-input v-model="formModel.remarks" :autosize="{ minRows: 4, maxRows: 8 }" type="textarea" />
  65. </el-form-item>
  66. </el-form>
  67. </el-scrollbar>
  68. </hc-new-dialog>
  69. <HcFormula v-model="isFormulaShow" />
  70. </template>
  71. <script setup>
  72. import { ref, watch } from 'vue'
  73. import HcFormula from './formula.vue'
  74. import payApi from '~api/project/debit/contract/pay.js'
  75. import { getArrValue, getObjValue } from 'js-fast-way'
  76. import { useAppStore } from '~src/store'
  77. import { getDictionary } from '~api/other'
  78. const props = defineProps({
  79. ids: {
  80. type: [String, Number],
  81. default: '',
  82. },
  83. })
  84. //事件
  85. const emit = defineEmits(['finish', 'close'])
  86. const useAppState = useAppStore()
  87. const projectId = ref(useAppState.getProjectId)
  88. //双向绑定
  89. // eslint-disable-next-line no-undef
  90. const isShow = defineModel('modelValue', {
  91. default: false,
  92. })
  93. //获取节点详情
  94. const getDetail = async (id)=>{
  95. const { error, code, data } = await payApi.getProDetail({
  96. id,
  97. })
  98. if (!error && code === 200) {
  99. formModel.value = getObjValue(data)
  100. } else {
  101. formModel.value = {}
  102. }
  103. }
  104. //监听
  105. watch(() => [
  106. props.ids,
  107. ], ([ids]) => {
  108. console.log('ids', ids)
  109. getDetail(ids)
  110. }, { immediate: true })
  111. //监听
  112. watch(isShow, (val) => {
  113. if (val) {
  114. console.log('处理数据')
  115. }
  116. })
  117. //弹窗表单
  118. const formRef = ref(null)
  119. const formModel = ref({ })
  120. const formRules = ref({})
  121. const saveLoading = ref(false)
  122. const modalSave = async () => {
  123. emit('finish')
  124. saveLoading.value = true
  125. const { error, code, msg } = await payApi.updateProList({
  126. ...formModel.value,
  127. })
  128. //判断状态
  129. saveLoading.value = false
  130. if (!error && code === 200) {
  131. window?.$message?.success(msg)
  132. }
  133. }
  134. //公式
  135. const isFormulaShow = ref(false)
  136. const formulaClick = () => {
  137. isFormulaShow.value = true
  138. }
  139. //获支付项类型
  140. const payOptions = ref([])
  141. const gePayType = async () => {
  142. const { data } = await getDictionary({
  143. code: 'meter_pay_type',
  144. })
  145. payOptions.value = getArrValue(data)
  146. payOptions.value.forEach((ele)=>{
  147. ele.dictKey = Number(ele.dictKey)
  148. })
  149. }
  150. //获支付项适用类型
  151. const payAppOptions = ref([])
  152. const gePayAppType = async () => {
  153. const { data } = await getDictionary({
  154. code: 'meter_pay_applicable_type',
  155. })
  156. payAppOptions.value = getArrValue(data)
  157. payAppOptions.value.forEach((ele)=>{
  158. ele.dictKey = Number(ele.dictKey)
  159. })
  160. }
  161. </script>